Всем привет! Хочу поделится опытом создания acceptance тестов для Магенты с использованием Codeception + webception + virtual server
Предистория
Зовут меня Владимир Кузьменко. Работаю в ism ukraine (http://www.ism-ukraine.com/) тестировщиком magento вебсайтов, ну заодно тимлид и автоматизатор, как-то так.
Делаем много magento шопов. После лайва сайты уходят на support, support постепенно растет и вот уже догоняет разработку сайтов по количеству работы (issues). Короче, тестить - не перетестить. Документация по проектам есть в нашей вики + в ишутрекере. И тут проблемка, когда делаем support задания есть риск сломать старое, по этой причине кроме нового функционала делаем смоук тест проекта. Для себя определили шаги смоуктеста и следуя им тестим, бывает что что-то все-таки упускаем, зачастую специфические особенности конкретного проекта, так как смоуктеста для отдельного проекта не создаем, все на ответственности тестировщика.
Начал решать эту проблемку я созданием смоуктеста для каждого отдельно взятого проекта. Смоуктест растет и занимает немало времени, а задания часто приходят “на вчера”. Что-то типа: Появился новый айфон!!! срочно сделайте нам возможность пред заказа, и пожалуйста до 14:00!!! В таких случаях тестим новосозданый функционал и в продакшн
Так и пришел к автотестам, начал писать автотесты по сценарию смоук тестов. Тестят быстрее, помнят все, смотрят/проверяют много элементов, в это время пока проверяется старый функционал проекта можно и новый потестить.
Есть много разговоров что выбрать для автоматизации, думать много не стал просто спросил одного “знающего” человека, ответ был такой - “писать тесты хорошо на том же языке что и проект, рано или поздно придется обратиться тестами к сорцам проекта”. “Ок”, сказал я, дальше → google ->autests php, php webdriver → Codeception.
Codeception + webception + virtual server
Как основной инструмент выбрал Codeception
Структура:
Создал тесты для стандартной Magento, тесты пишу с использованием page object pattern
Поделил стандартную магенту на страницы (помечено крассным )
Написал пару тестов согласно сценарию со смоук теста: (под крассным)
Описал в страницах локаторы и действия которые возможны на этой страничке
выглядит так :
Тесты благодаря page object писать одно удовольствие. пример теста:
Порывшись в интернете нашел webception (визуальная оболочка тестов), ну как бы мне она вообще не нужна, подумал я, но потом родилась идея ! Что если создать виртуалочку на сервере и туда комитить тесты и запускать их с любой машины?!
Создали виртуалку с иксами на нашем сервере, запихнули туда тесты, установили туда webception, создали внутренний домен и теперь все наши тесты доступны с любой машины, просто пройдя по урлу. Девелоперам понравилась такая идея, что не нужно разбираться со всем этим (ставить себе кодесепшн локально и т д), просто вкомитил на Альфу запустил тесты посмотрел что ничего не сломал и на тестера.
Выглядит все это дело так:
При желании есть возможность подключится remote desktop connection и посмотреть как все красиво происходит, понаблюдать за ходом тестов, так сказать.
По поводу Вебсепшна, мы его немного допилили, а именно:
общим сейчас можно зайти и просто посмотреть лог по последним пройденым тестам
Сейчас мы работаем по следующему Workflow
- Начинается новый проект
- Тестировщик копирует себе стандартный набор тестов
- Фиксит локаторы в пейджах, делает чтобы тесты заработали
- Тестировщик тестирует вручную проект, и помечает задания, которые нужно автоматизировать меткой - “автотест нужен”
- Потом задания сортируются по данной метке и пишутся автотесты и помечаются - “автотест создан”
**это дает картину сколько заданий автоматизировано на проекте - комитит тесты в репозитарий от куда они попадают на виртуалку, где каждый желающий может запустить тесты
Ну в принципе все.