Часть 2. Автотесты для сайта на Java с нуля. Тест-дизайн

Прежде чем приступать непосредственно к программированию, нужно определить какую функциональность мы будем тестировать и как именно будем проверять полученный результат т.е. спроектируем тестовый случай.

В общем случае базовая структура автотеста будет выглядеть следующим образом:
  1. Подготовка окружения
  2. Поиск нужных элементов на странице
  3. Совершение действия/ий с элементами
  4. Проверка результата
  5. Освобождение ресурсов

Давайте рассмотрим на примере, чем тест-кейс для автоматизированного тестирования отличается от тест-кейса для ручного тестирования.
Для примера, будем использовать простую формочку с нашего сайта -> https://softwarecats.dev

После нажатия кнопки “Обсудить проект” пользователю предлагается заполнить и отправить несложную форму заявки, после чего мы свяжемся с клиентом и начнем совместную работу.
Поскольку отправка заявки с сайта - важная для нас функциональность, которая должна работать всегда - ведь именно так мы знакомимся с некоторыми из наших клиентов - именно ее мы и будем покрывать автотестами.

Кейс для ручного тестирования этой формы будет выглядеть так:

Предусловия:
Открыта форма “Обсудить проект”.
Есть кнопка “Отправить заявку”.

Шаги:
  1. Заполнить форму.
  2. Нажать кнопку “отправить заявку”

Ожидаемый результат:
Показано сообщение об успешной отправке заявки.

Для полной уверенности нам следовало бы еще убедиться в том, что
  • от сервера получен ответ 200 ОК,
  • данные из формы занесены в соответствующие таблицы в БД,
  • на email администратора пришло письмо с данными формы.

Но поскольку мы тестируем UI, то считаем, что появление сообщения об успешной отправке заявки является гарантом того, что сообщение действительно отправлено (и доставлено). По этой же причине мы пренебрежем постусловиями т.е. освобождением ресурсов - в идеале нам следовало бы удалить тестовые данные, которые мы вводили в форму, удалить из базы данных.

Почему нельзя взять и написать автотест используя именно этот тест-кейс?
Если присмотреться к этому кейсу поподробнее, то мы увидим, что если мануальный тестировщик отдаст такой кейс на автоматизацию, то возникнет определенное количество вопросов: в каком порядке заполнять поля, в каком порядке взаимодействовать с элементами формы, какими конкретно значениями заполнять поля, как именно проверить ожидаемый результат и т.п. т.е. с точки зрения программы данных недостаточно.

Давайте перепишем этот тест так, как мы будем “говорить” программе, что нужно делать.

Предусловия:
  1. Открыть сайт https://softwarecats.dev в браузере Chrome (можно указать любой другой браузер, если проверка именно в нем важна)
  2. Найти на странице кнопку “Обсудить проект”
  3. Нажать на кнопку “Обсудить проект”

Шаги теста:
  1. Найти на странице поле “Как вас зовут?”
  2. Поставить курсор на поле “Как вас зовут?”
  3. В поле “Как вас зовут?” ввести значение. Ограничения на количество символов нет, только кириллица и латиница, строчные и заглавные буквы.
  4. Найти на странице поле “Любой удобный контакт”
  5. Поставить курсор на поле “Любой удобный контакт”
  6. В поле “Любой удобный контакт” ввести значение. Ограничения: на количество символов нет, кириллица и латиница, строчные и заглавные буквы, цифры, спецсимволы.
  7. Найти на странице поле “Что вы хотите обсудить?”
  8. Поставить курсор на поле “Что вы хотите обсудить?”
  9. В поле “Что вы хотите обсудить?” ввести значение. Ограничения на количество символов нет, на значение поля нет.
  10. Найти на странице кнопку “Отправить заявку”
  11. Нажать на кнопку “Отправить заявку”

Ожидаемый результат (проверить что):
Показано всплывающее окно с текстом “Спасибо! Данные успешно отправлены.”

Дальше дело техники - нужно правильно написать на Java шаги теста и проверку ожидаемого результата.
Руководитель отдела тестирования SoftwareCats