Unit тестирование моделей

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Unit тестирование моделей

Сообщение TM123 »

Пожалуйста, внимательнее читайте, что я пишу. Я говорил про проверку корректности ДЕЙСТВИЙ, а не ДАННЫХ. Валидация данных тут никак не поможет.
Ну мне кажется что последствие любых действий выливается в изменение данных, поэтому корректность ваших действий может быть оценена корректностью изменений данных.
Например действие - найти все документы на сумму, больше некой и просроченные больше чем на 2 недели и связать их с самым свободным менеджером.
Я так понимаю что вы собираетесь сунуть в процессе тестирования, например, 3 записи, одна, заранее известно какая, должна быть изменена и на выходе проверите что именно она изменилась остальные остались неизменными. Мне кажется что это слишком простой случай, а все сложные случаи из реальной жизни, которые встречались мне, написание теста занимало больше времени чем собственно самого функционала. Кстати в вашем очень простом примере для выполнения действия мне потребуется написать всего 1 команду на SQL, чтобы проверить сделанное тем способом который я предположил, надо несколько десятков строк кода, для проверки результатов работы моей SQL команды средствами SQL потребуется 2 команды или одна но достаточно сложная.
Jampire
Сообщения: 207
Зарегистрирован: 2011.01.28, 11:45
Откуда: Гомель
Контактная информация:

Re: Unit тестирование моделей

Сообщение Jampire »

Спорить с человеком, который не понимает, что такое тестирование, в чем разница между проверкой данных и проверкой действий, бессмысленно.
Изображение
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: Unit тестирование моделей

Сообщение andy_s »

Статейка с хабра, вроде бы в тему :)

http://habrahabr.ru/blogs/php/138223/
byteasdf
Сообщения: 99
Зарегистрирован: 2010.09.15, 09:01

Re: Unit тестирование моделей

Сообщение byteasdf »

TM123 писал(а):Ну мне кажется что последствие любых действий выливается в изменение данных, поэтому корректность ваших действий может быть оценена корректностью изменений данных.
Да. Но корректность изменения данных правилами валидации проверена не может быть. Отгрузка может быть запланирована как на завтра, так и на послезавтра, и обе эти записи являются валидными. Менеджером контрагента может быть как Михаил, так и Сергей, и опять же обе эти записи будут корректные.
То есть правила валидации не помогут проверить корректность алгорима выбора дня отгрузки или же алгоритма выбора менеджера для контрагента.
Если вы с этим не согласны, то приведите пример правил валидации, которые могут оценить корректность изменения данных.
TM123 писал(а):Я так понимаю что вы собираетесь сунуть в процессе тестирования, например, 3 записи, одна, заранее известно какая, должна быть изменена и на выходе проверите что именно она изменилась остальные остались неизменными. Мне кажется что это слишком простой случай, а все сложные случаи из реальной жизни, которые встречались мне, написание теста занимало больше времени чем собственно самого функционала. Кстати в вашем очень простом примере для выполнения действия мне потребуется написать всего 1 команду на SQL, чтобы проверить сделанное тем способом который я предположил, надо несколько десятков строк кода, для проверки результатов работы моей SQL команды средствами SQL потребуется 2 команды или одна но достаточно сложная.
Мой пример не столь и прост. Уровень занятости менеджера может определятся по куче данных. Условия для отбора просроченных документов тоже могут быть весьма нетривиальные.
И да, вы так и не ответили, как бы вы производили разработку данного метода и в частности проверку корректности его работы.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Unit тестирование моделей

Сообщение TM123 »

Дело в том что вы рассматриваете простейшие правила валидации, типа сунули дату или то что manager_id существует. Все что вы описываете делается в правилах валидации, валидировать ведь можно не только формат данных и целостность БД, точно так же валидировать можно и бизнес-правила, т.е. если мы пытаемся установить менеджера Петю ответственным за этот контракт, то сначала проверить его загрузку, если загрузка выше нормы, отказать в установке и как следствие изменении данных по контракту или Пете, это уже как больше нравится.
Jampire
Сообщения: 207
Зарегистрирован: 2011.01.28, 11:45
Откуда: Гомель
Контактная информация:

Re: Unit тестирование моделей

Сообщение Jampire »

Да что вы прицепились к этим правилам валидации. Они единственная часть модели? Есть еще куча других действий никак не связанных с валидацией. Их вообще не проверять?
TM123 писал(а):если мы пытаемся установить менеджера Петю ответственным за этот контракт, то сначала проверить его загрузку, если загрузка выше нормы, отказать в установке и как следствие изменении данных по контракту или Пете, это уже как больше нравится.
Как проверить, что ваш алгоритм нахождения свободного менеджера, верный?
К примеру, то, что вы описали сейчас не верно. Что произойдет, если загрузка всех менеджеров выше нормы, а заказ сверхсрочный? Вот это и будет видно на тестировании, что алгоритм неверен и нужно находить загрузку НЕ ВЫШЕ нормы, а НАИБОЛЕЕ СВОБОДНОГО менеджера из всех, даже если его загрузка выше нормы.
Изображение
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Unit тестирование моделей

Сообщение TM123 »

Приведенный пример более разумный чем все что приводили до этого и правилами валидации не решается, как и без изменения правил валидации тоже не может быть решен, если конечно правила правильно написаны, а не по остаточному принципу.

Я пока не готов ничего сказать по существу, надо подумать.
Ответить