Пост №5. Создание своего test fraamework-а с нуля. Часть 1
Всем привет! Извините за долгое ожидание, не было времени на создание поста. Итак, немного поразмышляв я решил, что теория теорией, а практика куда полезнее и интереснее. И вот я решил начать серию пратических постов по созданию своего test framework-а с нуля.
Для примера автоматизации был выбран один из простых и наглядных примеров - почтовая система rambler.ru Задачей автоматизации были выбраны одни из основных действий пользователя с почтовой системой, а именно: логин, написание и отправка письма, проверка отправки, перенос письма в трэш.
Перво наперво, необходимо создать чистый проект в IDE. Так как я привык использовать IntelliJ IDEA в качестве IDE, то я решил не изменять своему выбору и создал чистый Maven проект в ней. Далее пришло время определяться с языком. И тут я не стал изменять своему вкусу и опыту и выбрал Java. Но чтобы полностью не оставаться на достигнутых знаниях, решил реализовать свой test framework опираясь на BDD методологию. Мой выбор пал на Cucumber и Gherkin, так как данная связка хорошо совместима с Java. Сборка и запуск тестов будут реализованы с помощью maven.
Сразу хочу зказать, что на данный момент все тесты написаны и test famework готов. Но так как все в один пост не уместиться, то буду постепенно описывать его части.
Итак начнем. С начала хотелось бы представить структуру framework-а и пояснить, почему именно так.
Основными папками (packages) являются java и resources. Java - это package, служащий для хранения реализации тестовой логики и вспомогательных классов. Здесь и будет расположены описание страниц, шаги тестов и разнообразные утилит-классы. Resources - это выполняемый package, в котором расположены сами тесты и конфигурация к ним.
Та же, одним из основополагающих является pom.xml файл. Он служит для подключения всех библиотек и языковых фреймворков, для запуска тестов с определенной конфигурацией, для настройки отчетности. В общем - это корень всего проекта. Для наглядности продемонстрирую отрывок из файла:
С основными package-ами познакомились, а дальше буду описывать каждый по отдельности.
Итак, в самом начале напишем сами тесты, которые нам необходимо будет реализовывать. Тесты будут написаны на языке Gherkin.
Gherkin - человеко-читаемый язык для описания поведения системы, который использует отступы для задания структуры документа, (пробелы или символы табуляции). Каждая строчка начинается с одного из ключевых слов и описывает один из шагов. Основными ключевыми словами являются Given, When, Then. Сама структура теста выглядит вот так:
А теперь подробнее. Для реализации теста мы создаем файл с расширением .feature. Далее начинаем писать сам тест. Первоначально пишется ключевое слово Feature - оно позволяет понять системе, что это исполняемый файл; так же служит обозначением наименования теста.
Далее прописывается ключевое слово Scenario/Scenario Outline (первое это обычный сценарий, второе - сценарий, который будет использовать прописанные в Examples тестовые данные) - оно обозначает, что далее будет прописан сценарий теста.
Переходим к ключевым словам в сценарии. Given - как понятно из названия, в нем прописано то, что происходит в начале теста, т.е. первоначальные условия или первоначальные действия (например, логин пользователя в систему с определенными данными). When - здесь прописываются основные действия, которые пользователь совершает с системой, т.е. реализация цели теста (например, отправка письма). Then - прописываются постдействия либо ожидаемый результат исполнения When (например, проверка того, что письмо отправлено). Так же иногда используется ключевое слово And - используется для описания дополнительных действий к предыдущему ключевому слову (например, логаут пользователя из системы).
Если вам необходимо прогнать тест несколько раз, допустим, под разными пользователями, то необходимо использовать ключевое слово Examples - оно как раз служит для прописания значения необходимым параметрам теста (напрмер, логин и пароль пользователя). Для того, чтобы эти значения подцепились тестом, необходимо указать параметр теста в формате "<параметр>". По расцветке данного параметра можно будет понять, что он подцепил указанные значения из Examples.
И для наглядности, еще один пример теста:
Заключение.
Итак. В данном посте я начал описывать на практике реализацию создания test framework, рассказал об основных packages и о том, как создавать тесты используя язык Gherkin. В дальнейшем буду постепенно описывать структуру тестов.
З.Ы. Всем спасибо за внимание и интерес. Надеюсь было познавательно и не слишом мало. Буду очень рад вашим коментариям.




