Codeception + webception + virtual server for testing Magento websites

Всем привет! Хочу поделится опытом создания acceptance тестов для Магенты с использованием Codeception + webception + virtual server

Предистория

Зовут меня Владимир Кузьменко. Работаю в ism ukraine (http://www.ism-ukraine.com/) тестировщиком magento вебсайтов, ну заодно тимлид и автоматизатор, как-то так.

Делаем много magento шопов. После лайва сайты уходят на support, support постепенно растет и вот уже догоняет разработку сайтов по количеству работы (issues). Короче, тестить - не перетестить. Документация по проектам есть в нашей вики + в ишутрекере. И тут проблемка, когда делаем support задания есть риск сломать старое, по этой причине кроме нового функционала делаем смоук тест проекта. Для себя определили шаги смоуктеста и следуя им тестим, бывает что что-то все-таки упускаем, зачастую специфические особенности конкретного проекта, так как смоуктеста для отдельного проекта не создаем, все на ответственности тестировщика.

Начал решать эту проблемку я созданием смоуктеста для каждого отдельно взятого проекта. Смоуктест растет и занимает немало времени, а задания часто приходят “на вчера”. Что-то типа: Появился новый айфон!!! срочно сделайте нам возможность пред заказа, и пожалуйста до 14:00!!! В таких случаях тестим новосозданый функционал и в продакшн :slight_smile:
Так и пришел к автотестам, начал писать автотесты по сценарию смоук тестов. Тестят быстрее, помнят все, смотрят/проверяют много элементов, в это время пока проверяется старый функционал проекта можно и новый потестить.

Есть много разговоров что выбрать для автоматизации, думать много не стал просто спросил одного “знающего” человека, ответ был такой - “писать тесты хорошо на том же языке что и проект, рано или поздно придется обратиться тестами к сорцам проекта”. “Ок”, сказал я, дальше → google ->autests php, php webdriver → Codeception.

Codeception + webception + virtual server

Как основной инструмент выбрал Codeception

Структура:

Создал тесты для стандартной Magento, тесты пишу с использованием page object pattern
Поделил стандартную магенту на страницы (помечено крассным )

Написал пару тестов согласно сценарию со смоук теста: (под крассным)

Описал в страницах локаторы и действия которые возможны на этой страничке
выглядит так :

Тесты благодаря page object писать одно удовольствие. пример теста:

Порывшись в интернете нашел webception (визуальная оболочка тестов), ну как бы мне она вообще не нужна, подумал я, но потом родилась идея ! Что если создать виртуалочку на сервере и туда комитить тесты и запускать их с любой машины?!
Создали виртуалку с иксами на нашем сервере, запихнули туда тесты, установили туда webception, создали внутренний домен и теперь все наши тесты доступны с любой машины, просто пройдя по урлу. Девелоперам понравилась такая идея, что не нужно разбираться со всем этим (ставить себе кодесепшн локально и т д), просто вкомитил на Альфу запустил тесты посмотрел что ничего не сломал и на тестера.

Выглядит все это дело так:

При желании есть возможность подключится remote desktop connection и посмотреть как все красиво происходит, понаблюдать за ходом тестов, так сказать.

По поводу Вебсепшна, мы его немного допилили, а именно:

общим сейчас можно зайти и просто посмотреть лог по последним пройденым тестам

Сейчас мы работаем по следующему Workflow

  • Начинается новый проект
  • Тестировщик копирует себе стандартный набор тестов
  • Фиксит локаторы в пейджах, делает чтобы тесты заработали
  • Тестировщик тестирует вручную проект, и помечает задания, которые нужно автоматизировать меткой - “автотест нужен”
  • Потом задания сортируются по данной метке и пишутся автотесты и помечаются - “автотест создан”
    **это дает картину сколько заданий автоматизировано на проекте
  • комитит тесты в репозитарий от куда они попадают на виртуалку, где каждый желающий может запустить тесты

Ну в принципе все.

7 лайков

Ух ты, это реально круто!

1 лайк

Pull request в студию, это круто!