[Moscow.pm] Встреча Moscow.pm в феврале

Андрей П. Ковбович akovbovich на gmail.com
Ср Янв 22 04:15:52 PST 2014


Модуль в перле - pm-ник, своего рода единица компиляции. Если уж дотошно
тестировать, то экпортируемые во вне символы. Часто граница между
функциональными и модульными тестами не так очевидна. В динамических языках
вроде перла, основная проблема, которая вылезает в рантайме - это
несовместимость типов данных, так что я бы, если писал тесты, то обращал
внимание на обработку различных допустимых/недопустимых классов данных
объектами под тестрованием.


22 января 2014 г., 15:21 пользователь Илья Винокуров <ilvin на mail.ru>написал:

>
> У вас в объекте есть несколько методов, которые по идеологии юнит
> тестирования нужно/можно протестировать отдельно.
> Например:
> *new* - хорошо бы протестировать, что этот метод правильно производит
> начальную инициализацию переменных в зависимости от переданныех параметров
> *set_favicon* - проверить, что устанавливается переменная $self->{ico}
> *listen* - проверить, что сервер действительно начинает слушать нужный
> сокет. Проверить, что правильно парсятся разные синтаксисы хостов,
> сервисов. Проверить поведение сервера в ошибочных ситуациях. Проверить, что
> сокеты переводятся в неблокирующий режим. Проверить поведение метода для
> разных OS. Проверить, что метод действительно вызывает другой метод prepare.
> *accept* - Проверить, что метод вызывается при коннекте клиента.
> Проверить поведение метода, когда $fn == undef. Проверить, что сокет
> переводится в неблокирующий режим. А что происходит, если сокет не смог
> перейти в неблокирующий режим? Проверить, что метод вызывает incoming с
> правильными аргументами, в зависимости от флага $self->{want_peer}
>
> И так далее по каждому методу.
>
> Ведь задача юнит тестов - фиксирование интерфейсов взаимодействия разных
> частей программы. И нужно это для того, чтобы программист сразу видел
> места, поведение которых изменилось после последнего коммита.
>
>
> > Модуль здесь - AE::HTTP::Server.
> > тесты проверяют, что этот модуль функционирует корректно.
>
> Ваши тесты проверяют, что модуль в целом функционирует. Относительно всей
> программы, в которой используется модуль тесты можно назвать юнит-тестами,
> а вот относительно вашего модуля я назвал ваши тесты функциональными, т.к.
> вы поставляете только этот модуль...
>
> Или я о каком-то другом виде тестирования говорю?
>
> Кстати, интересно будет услышать в докладе темы:
> 1) Виды тестирования (в качестве введения в тему)
> 2) Зачем нужны тесты
> 3) Нужно ли тестировать поведение модуля в ситуациях возникновения ошибок
> 4) До какой степени нужно покрывать тестами код программы.
> 5) Как юнит-тесты помогают в командной разработке
> 6) Как юнит-тесты помогают при рефакторинге кода.
> 7) Как сильно TDD замедляет разработку
>
> С почтением,
>   Илья Винокуров
>
> Среда, 22 января 2014, 13:54 +04:00 от Mons Anderson <mons на cpan.org>:
>
>
> On 21.01.2014, at 23:18, Илья Винокуров <ilvin на mail.ru<http://sentmsg?compose&To=ilvin@mail.ru>>
> wrote:
>
> >
> > Да запросто!
> >
> > Вон у Монса в AnyEvent::HTTP::Server II присутствуют только
> функциональные тесты, а UNIT тестов нет. Вот давайте и заслушаем доклад,
> который покажет как писать UNIT тесты для AE. Надеюсь, что в докладе будет
> подробно расписана техника AE Mock'ов
>
> А что вы подразмеваете под unit-тестами?
>
>
> > Модульное тестирование, или юнит-тестирование (англ. unit testing) —
> процесс в программировании, позволяющий проверить на корректность отдельные
> модули исходного кода программы.
> > Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции
> или метода. Это позволяет достаточно быстро проверить, не привело ли
> очередное изменение кода к регрессии, то есть к появлению ошибок в уже
> оттестированных местах программы, а также облегчает обнаружение и
> устранение таких ошибок.
>
> Модуль здесь - AE::HTTP::Server.
> тесты проверяют, что этот модуль функционирует корректно.
>
> >
> > PS: Лично мне этот вопрос очень интересен, если у кого есть ссылки на
> хорошие методики, поделитесь пожалуйста...
> >
> > ЗЫ: У меня был опыт покрытия UNIT тестами POE клиента. Тесты для POE
> писались довольно легко, так как у POE все кишки наружу и в тестах можно
> было оттрасировать все вызовы колбеков и все аргументы функций. А вот к
> AnyEvent пока не понятно с какого бока подлезть - у него же все на
> замыканиях зиждется…
> >
>
> Есть много способов сделать что-нибудь, но опишите, пожалуйста, цель.
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org <http://sentmsg?compose&To=moscow%2dpm@pm.org> |
> http://moscow.pm.org
>
>
>
> --
> Илья Винокуров
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20140122/b2954f99/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm