Тестирование Perl-Программ Для Начинающих. Введение

Почему «для новичков»? Потому что это руководство было составлено мною и для меня, в процессе изучения особенностей тестирования вообще и тестирования Perl-программ в частности.

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

Это только первая часть руководства.

Введение :).

Если сообществу будет интересно, опубликую продолжение.



Что такое тестирование?

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

Тестируя продукцию, разработчик минимизирует вероятность возникновения ошибок при вводе продукта в эксплуатацию.

Тестирование может проводиться как вручную, так и автоматически.

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

В автоматическом режиме разработчик создает серию тестов для своего программного продукта, который эмулирует действия клиента, отправляя определенные данные в интерфейс программы, и анализирует ее ответ на соответствие ожидаемому.

Такие тесты, написанные один раз, можно использовать на протяжении всего жизненного цикла программного продукта, а если функциональность программы будет дополнена новыми разработками, то будет легко проверить, не была ли нарушена функциональность старых компонентов в ходе разработки.

процесс.

Преимущества автоматизированных тестов: Возможность повторного тестирования на любом этапе разработки ПО.

Отсутствие «человеческого фактора» (усталость, забывчивость, невнимательность испытателя.

).

Написанный один раз тест можно запускать много раз без потери качества тестирования.

Возможность использования тестов пользователями после ввода продукта в эксплуатацию – make test. Тест может быть создан до создания программного продукта и, таким образом, будет своего рода спецификацией разрабатываемого программного обеспечения, строго определяющей и контролирующей его поведение (Разработка через тестирование – TDD).

Тест позволяет протестировать отдельные программные модули и компоненты, взаимодействуя с ними напрямую, без использования специальных клиентских интерфейсов.

Возможность изменять внутреннюю архитектуру программного обеспечения, сохраняя при этом уверенность в том, что API приложения не сломан.

Набор качественных тестов очень полезен при создании документации на новое программное обеспечение.

Все вышесказанное не означает, что вам следует отказаться от «ручного» тестирования и полностью перейти на автоматическое тестирование.

Необходимо разумное сочетание обоих вариантов.

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

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



Тестирование в Perl

Модули — это наиболее часто используемые модули для создания тестовых программ на Perl. Тест::Простой , Тест::Еще И Тест::Жгут .

Эти модули работают в соответствии с протоколом TAP. Тест::Еще И Тест::Простой позволяют программисту создавать сценарии, проверяющие поведение заданных модулей, компонентов программы и т. д. Информация о результатах тестирования отображается в очень компактном виде, в формате TAP. Тест::Жгут в свою очередь дает возможность упростить управление созданными тестовыми скриптами (очень важно, если скриптов более 50, 100, 1000.).

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

А также отображать их пользователю в удобном формате.

Начиная с версии 5.8 модули Test::More и Test::Harness являются частью ядра Perl. Для более ранних версий Perl эти модули доступны в CPAN.

Ваш первый тест

Например, напишем функцию, которая возвращает незабываемое: «Hello, World!» и проверить его работу.

Функция, файл привет.пл:

#!/usr/bin/perl привет { вернуть «Привет, мир!»; } 1;
Протестируем функцию hello(), вызовем скрипт по имени тестируемой функции — Привет т
#!/usr/bin/perl используйте Test::More test => 2; require_ok('hello.pl'); ok(hello() eq "Привет, мир!", "Функция hello() возвращает 'Привет, мир!'");
Благодаря require_ok проверим возможность подключения нашего скрипта через require. Если этот тест пройден, require_ok автоматически сделает hello.pl доступным для использования, выполнив команду require в указанном скрипте.

Первый аргумент ok() - условное выражение.

ok() получает результат функции hello() и сравнивает его со стандартом.

Если полученные данные и эталонные данные совпадают, тест будет отмечен в отчете как пройденный.

Второй аргумент передается в ok() — это произвольный, текстовый комментарий к тесту (например, что мы тестируем, почему, что мы должны получить в результате).

Значительно облегчает чтение отчетов об испытаниях.

Запустим тест и посмотрим на результаты теста:

%perl привет.t 1.2 ок 1 — требуется «hello.pl»; ok 2 — Функция hello() возвращает «Привет, мир!»
Поздравляем, вы написали свой первый тест и успешно его прошли!

Полезные ссылки

РУСЬ Десять наиболее важных практик разработки Perl. Написание автоматических тестов и среды phpUnit. Тестирование с помощью Libtap. Стиг Браутасет, перевод Владимира Куксенока «Организация и именование автоматизированных тестов», Кирилл Максимов Perl: учимся более глубоко.

Рэндал Шварц.

— О'Рейли АНГЛ Создание библиотек тестирования Тестирование Perl: блокнот разработчика.

По хроматике, Ян Лэнгворт. — О'Рейли http://petdance.com/perl/automated-testing/ (презентация) Теги: #perl #testing #test::more #test::harness #test::simple #perl

Вместе с данным постом часто просматривают: