Первый шаг в приемочное тестирование |
09.07.2013 23:10 |
Автор: Компания SnowHall Ltd На днях меня поставили на работу над новым проектом. Хотя новым он был только для нашей команды – заказчики отказались от сотрудничества с предыдущей командой, которая разрабатывала его больше года и передали его нам. Вместе с проектом нам достались все радости незавершенного проекта – частично завершенный рабочий код, отсутствие какой-либо сопроводительной документации и ограниченное количество времени на его завершение. Действовать нужно было быстро, но разумно. У нас уже был опыт тестирования проектов с помощью PHPUnit, поэтому к тестированию мы относились более чем положительно. Но в данном случае, помимо покрытия тестами кода, важно было определить степень завершенности проекта. Да, безусловно, заказчик предоставил нам техническое задание, в котором указал нереализованные модули, но он также сказал добавить недостающую функциональность в уже имеющиеся модули. Поэтому в данном случае сперва нам было необходимо определить, какие модули нуждаются в доработке. На помощь нам пришло Acceptance testing. Так как времени у нас было относительно немного, то нужна была система для тестирования, несложная в освоении, простая в использовании и по-возможности не требовательная к ресурсам. После беглого обзора существующих систем я выделил следующих кандидатов:
После сравнения этих фреймворков, я остановил свой выбор на Eliza – легковесном фреймворке, имеющем Web-интерфейс для запуска тестов. Большую роль в выборе этого фреймворка также сыграла поддержка как Acceptance тестов, так и Unit тестов. Теперь можно было приступать к написанию тестов. Вот пример демонстрационного теста, которые идут с Eliza и позволяют сразу проникнуться основной идеей этого фреймворка: <?php Данный тест заходит на сайт snowhall.com, проверяет наличие определенной информации, переходит по нужной ссылке, а затем опять проверяет отображающуюся информацию. Команды, которые составляют тест говорят сами за себя и являются своего рода перечнем инструкций. Примером Unit теста я также остался доволен – синтаксис схож с PHPUnit, с которым мы уже имели дело. <?php За достаточно короткое время мы написали Acceptance тесты, охватывающие весь проект, и это позволило нам определить недостающую функциональность и быстро привести проект в работоспособность и получить поощрение со стороны заказчика. Оставалось добавить несколько модулей в систему. Система оказалось сильносвязанной и поэтому Unit тесты нас очень сильно выручили и позволили провести достаточно серьезный рефакторинг всего проекта. Хотелось бы отметить еще одну полезную функцию, которая не раз нас выручала – запуск тестов по расписанию. Eliza позволяет гибко настроить время запуска тестов, и мы всегда оповещались о возникающих ошибках в системе раньше, чем заказчик, что позволяло оперативно их исправлять. Он, наверное, до сих пор думает, что мы написали систему без единой ошибки Что мы имеем в итоге? Проект завершен раньше срока, а мы еще раз убедились в необходимости и важности тестирования. |