/skb-test

Primary LanguageHTML

Описание:

Тест выполняет следующие операции:

  1. Проверка отсутствия записи в интерфейсе пользователя;
  2. Отправка нового сообщения;
  3. Проверка наличия записи в интерфейсе пользователя;
  4. Проверка содержимого Excel файла;
  5. Проверка повторной отправки;

Пункты 1,3,4 реализованы через эмуляцию работы пользователя в браузере посредством Selenium. Пункты 2,5 реализованы посредством отправки сообщений API через HTTP клиент (scalaj-http) и парсинга/проверок(json4s) ответных сообщений. Проверка содержимого файла(п.4) осуществляется с использованием библиотеки Apache POI.

Тест реализован в одном классе, так как он должен быть самодостаточен и не зависеть от других, но, при желании можно выделить некоторые проверки в другой класс(к примеру, проверку повторной отправки), убрать параллельное выполнение тестов и задать порядок. После прохождения теста в директории "report" формируется отчет, также формируется файл report.txt, в котором можно увидеть ошибки, возникающие до запуска тестов (к примеру, если не удалось загрузить браузер).

Шаги теста реализованы в классе src/test/scala/MainTest.scala, запуск браузера, обработка событий до и после выполнения шагов а также добавление файлов в отчет реализованы в трейте src/test/scala/FreeSpecWithBrowser.scala, который расширяет класс. Параметры теста содержатся в файле src/test/recources/application.conf Для получения событий ящика требуется идентификатор последнего события, он хранится в файле lastEventsId.properties и перезаписывается после прохождения теста. Если не отправлять этот идентификатор, то при большом количестве событий в ящике (> 1000), нужные нам не попадут в ответ.

Для реализации ожидания используется метод eventually. Он выполняет код с периодичностью interval до тех пор, пока он не будет выполнен без ошибок или не истечет timeout. Если параметры не указаны явно, то они берутся из параметров application.conf

Предусловия:

Наличие Oracle JVM >= 1.8.0 Наличие браузера Chrome/Firefox (Firefox до версии 48 (проверялось на 47.0.1, скачать можно тут Fifefox FTP - Firefox Setup 47.0.1.exe) К сожалению, в версии 48 была отключена поддержка SeleniumWebDriver, а драйвер от Firefox еще сырой.) Драйвер для Chrome включен в проект, драйвер для Firefox включен в пакет Selenium.

Запуск:

Для запуска используется система сборки SBT - Scala build tool. Возможно 2 варианта запуска:

a) SBT можно загрузить тут Страница загрузки и установить. Для запуска переходим в директорию проекта и выполняем команду "sbt test". б) В папку с проектом приложен лаунчер. Для запуска тестов выполняем команду "java -jar sbt-launch.jar test"

Для кодировки UTF-8 в отчетах, необходимо добавить опцию -Dfile.encoding=UTF-8 в файл sbtconfig.txt в папке sbt или в команду запуска для sbt-launch При этом SBT загрузит библиотеки для своей работы, потом загрузит библиотеки для работы приложения, собереь проект и выполнит тесты. Первый запуск может быть очень долгим, в зависимости от скорости загрузки файлов с репозитория. Дальнейшие запуски будут происходить быстрее.

Отчеты:

После выполнения теста в директории reports формируется отчет в текстовом формате и в html формате. Отчет содержит статусы шагов теста, скриншоты браузера и файлы с ответами API.

Для демонстрации приложено два ролика - первый работает в Chrome, демонстрирует отправку нового сообщения, второй запускается в Firefox, демонстрирует работу теста в случае, когда не меняем номер заявки. Ролики в формате .swf открываются в браузере.