9. Тестирование - gilgenbergg/green_office GitHub Wiki
Модульное тестирование производилось с использованием библиотеки JUnit автоматически. Тесты покрывают логику бизнес процессов и различаются лишь на уровне работы с данными - с репозиторием, построенным на основе примитивных коллекций и мапперами для работы с БД. Отличие можно проследить на ветках master и “with-db”. Тесты расположены в директории /green_office/project/src/tests/ и включают в себя прохождение стадий бизнес процессов, а также в случае с репозиториями дополнительные “мелкие” модульные тесты пользовательских операций.
- Тест ClientFirstRequestTest() - проверяет корректность логики работы над первичной заявкой, начиная от ее создания клиентом, и заканчивая получением фидбека.
Включает в себя несколько “ассертов”, уточняющих последовательную действительную смену статусов заявки в ходе ее перехода от пользователя к пользователю. Оставляется положительный фидбек. - Тест ClientPlannedRequestTest() - проверяет корректность обработки плановой заявки. Оставляется отрицательный фидбек.
- Тест void PurchaseRequestTest() - данный тест включает в себя проверку этапов создания заявки на закупку и непосредственно ее осуществления, т.к. процессы и данные, обмениваемыми между ними связаны, разделять их на отдельные мелкие тесты было нецелесообразно.
На этапе работы с репозиториями в качестве слоя хранения данных бизнес-логика также была подвергнута более тщательному тестированию для отладки в соответствии с пользовательской ролью.
Прохождение тестов:
Прохождение тестов при работе с базой данных посредством реализованных мапперов:
Функциональное тестирование производилось через пользовательский интерфейс вручную. Были пройдены сценарии бизнес-процессов, обработаны ошибочные ситуации. Ниже приведены результаты обработок ошибок пользовательского ввода:
Попытка зарегистрироваться с уже занятым логином:
Попытка закончить регистрацию с незаполненными полями (аналогичное сообщение появляется для каждого из полей):
Попытка закончить регистрацию с невыбранной ролью:
Попытка авторизоваться с невалидными входными данными:
Попытка авторизоваться без заполненного поля логина:
Попытка авторизоваться без пароля:
Попытка создать заявку типа “planned” без идентификатора имеющегося в базе растения:
Попытка создать растение без владельца:
Попытка создать растение без названия:
Попытка войти в редактор клиентской заявки без указания идентификатора заявки:
Попытка внести в список покупок отсутствующий в каталоге магазина-партнера товар (на основе обращения по названию введенного ресурса к внешнему сервису):
Попытка создать заявку с незаполненными полями:
Попытка перейти в режим “садоводства” без указания идентификатора конкретной заявки:
Попытка перейти в режим проверки закупки без указания идентификатора конкретной заявки:
Попытка закончить редактирование заявки по итогу выезда без указания даты следующей инспекции:
Тестирование workflow системы:
Клиент создает первичную заявку, выбрав соответствующий тип и нажав кнопку “done”.
По итогу мы видим в списке заявок созданный элемент с присвоенным на уровне БД идентификатором:
Администратор, которому система определила в работу данную заявку автоматически увидит ее в списке списке своих клиентских заявок в статусе “NewOne”:
Администратора создает новую карточку растения (известно от клиента заранее), закрепляя ее за конкретным клиентом после нажатия на кнопку “Add Plant”:
Созданное растение необходимо привязать к ранее созданной заявке и выбрать садовника, который будет проводить работы. После чего переводит заявку в статус “inProgress”:
Для первичной заявки необходимо произвести закупку:
Ответственный за данное растение садовник видит в своем личном кабинете соответствующие заявки:
Перейдя в CheckMaster 520й заявки на закупку, садовник видит список необходимых для данного растения ресурсов и тех, которые закуплены в рамках данной закупки:
После чего он может или одобрить или отклонить закупку. В данном случае заявка будет возвращена в статус “InProgress”, т.к. закупка неполная. Когда администратор создает новую заявку на закупку, она будет автоматически закреплена системой за садовником заново, соответственно, проверяющий сотрудник может измениться. В случае корректной закупки статус заявки на закупку будет переведен в “approved”, а связанная с ней клиентская заявка будет переведена из статуса “inCheck” в статус “gardening” администратором, после чего садовник будет понимать, что возможно проведение инспекции:
По итогу всех закупок, ресурсы синхронизируются:
После одобрения заявки на закупку статус заявки изменяется на соответствующий:
Теперь ответственный за выполнение инспекции садовник совершает вызов и редактирует дату следующей инспекции с помощью GardenMaster, после чего статус заявки изменяется на “done”:
Клиент на каждом этапе может следить за ходом работы над заявкой, а также имеет доступ к информации о растении:
*Весь процесс для заявки типа “planned” аналогичен с той разницей, что происходит привязка к уже имеющемуся растению в базе, создание новой карточки не требуется.