Дипломный проект — автоматизация тестирования комплексного сервиса, взаимодействующего с СУБД и API Банка.
- Если у вас возник вопрос, попробуйте сначала самостоятельно найти ответ в интернете. Навык поиска информации пригодится вам в любой профессиональной деятельности. Если ответ не нашёлся, можно уточнить у руководителя по дипломной работе.
- Если у вас набирается несколько вопросов, присылайте их в виде нумерованного списка. Так дипломному руководителю будет проще отвечать на каждый из них.
- Для лучшего понимания контекста прикрепите к вопросу скриншоты и стрелкой укажите, что именно вызывает вопрос. Программу для создания скриншотов можно скачать по ссылке.
- По возможности задавайте вопросы в комментариях к коду.
- Формулируйте свои вопросы чётко, дополняя их деталями. На сообщения «Ничего не работает», «Всё сломалось» дипломный руководитель не сможет дать комментарии без дополнительных уточнений. Это затянет процесс получения ответа.
- Постарайтесь набраться терпения в ожидании ответа на свои вопросы. Дипломные руководители Нетологии — практикующие разработчики, поэтому они не всегда могут отвечать моментально. Зато их практика даёт возможность делиться с вами не только теорией, но и ценным прикладным опытом.
Как правильно оформлять вопросы:
- Опубликовать последнюю версию вашего кода на GitHub.
- Включить в репозитории Issues.
- Завести новое Issue, в котором описать, в чём заключается проблема, и приложить скриншот.
- Если в консоли любого сервиса есть ошибки, сообщить о них тоже, скопировав текст ошибки.
Рекомендации по работе над дипломом:
- Не откладывайте надолго начало работы над дипломом. В таком случае у вас останется больше времени на получение рекомендаций от руководителя и доработку диплома.
- Разбейте работу над дипломом на части и выполняйте их поочерёдно. Вы будете успевать учитывать комментарии от руководителя и не терять мотивацию на полпути.
Приложение — это веб-сервис, который предлагает купить тур по определённой цене двумя способами:
- Обычная оплата по дебетовой карте.
- Уникальная технология: выдача кредита по данным банковской карты.
Само приложение не обрабатывает данные по картам, а пересылает их банковским сервисам:
- сервису платежей, далее Payment Gate;
- кредитному сервису, далее Credit Gate.
Приложение в собственной СУБД должно сохранять информацию о том, успешно ли был совершён платёж и каким способом. Данные карт при этом сохранять не допускается.
Важно: в реальной жизни приложение не должно пропускать через себя данные карт, если у него нет PCI DSS, но мы сделали именно так ;)
Само приложение расположено в файле aqa-shop.jar
и запускается стандартным способом java -jar aqa-shop.jar
на порту 8080.
В файле application.properties
приведён ряд типовых настроек:
- учётные данные и URL для подключения к СУБД;
- URL-адреса банковских сервисов.
Заявлена поддержка двух СУБД. Вы должны это проверить:
- MySQL;
- PostgreSQL.
Учётные данные и URL для подключения задаются в файле application.properties
.
Доступ к реальным банковским сервисам не даётся, поэтому разработчики подготовили для вас эмулятор банковских сервисов, который может принимать запросы в нужном формате и генерировать ответы.
Эмулятор написан на Node.js, для его запуска рекомендуется использовать Docker. Эмулятор расположен в каталоге gate-simulator.
Эмулятор запускается командой npm start
на порту 9999. Он позволяет генерировать предопределённые ответы для заданного набора карт. Набор карт представлен в формате JSON в файле data.json
.
Обратите внимание: разработчики сделали один сервис, эмулирующий и Payment Gate, и Credit Gate.
Для формирования окружения рекомендуем запустить три контейнера: c MySQL, с PostgreSQL и эмулятором банковских сервисов. Все три контейнера будет удобным описать в одном файле docker-compose.yml и запускать одновременно.
Ваша ключевая задача — автоматизировать позитивные и негативные сценарии покупки тура.
Задача разбита на 4 этапа:
- Планирование автоматизации тестирования.
- Непосредственно сама автоматизация.
- Подготовка отчётных документов по итогам автоматизированного тестирования.
- Подготовка отчётных документов по итогам автоматизации.
Все материалы — документы, авто-тесты, открытые issue, отчёты и другие — должны быть размещены в одном публичном репозитории. Ссылку на него вы будете отправлять дипломному руководителю.
В течение трёх дней с начала работы над дипломом вы должны отправить дипломному руководителю личным сообщением в Discord план автоматизации, в котором описаны:
- перечень автоматизируемых сценариев;
- перечень используемых инструментов с обоснованием выбора;
- перечень и описание возможных рисков при автоматизации;
- интервальная оценка с учётом рисков в часах;
- план сдачи работ: когда будут готовы автотесты, результаты их прогона;
- отчёт по автоматизации: оформляется в виде файла с именем
Plan.md
и заливается в репозиторий вашего проекта.
На этом этапе вы пишете автотесты и прогоняете их. Требований по подключению CI нет, но есть требования к тестам. Обязательно должны быть:
- UI-тесты;
- репорты — Gradle, Allure, Report Portal;
- запросы в базу, проверяющие корректность внесения информации приложением.
Код автотестов загружается в репозиторий вашего проекта вместе с отчётными документами, файлами и конфигурациями, необходимыми для запуска.
В файле README.md
должна быть описана процедура запуска автотестов. Если для запуска нужно заранее установить, настроить, запустить какое-то ПО, то это тоже должно быть описано.
Важно: если после git clone
и выполнения шагов, описанных в README.md
, авто-тесты не запускаются, то диплом отправляется на доработку.
В качестве отчётных документов прикладываются issue со скриншотами и описанием багов, формируется документ Report.md
, в котором содержится отчёт о проведённом тестировании:
- краткое описание;
- количество тест-кейсов;
- процент успешных и не успешных тест-кейсов;
- общие рекомендации.
Не забудьте, что помимо документа в систему автоматизации должны быть интегрированы отчёты: Gradle, Allure или Report Portal.
В качестве отчётных документов формируется документ Summary.md
, в котором содержится отчёт о проведённой автоматизации:
- что было запланировано и что реализовано;
- причины, по которым что-то не было реализовано;
- сработавшие риски;
- общий итог по времени: сколько запланировали и сколько выполнили с обоснованием расхождения.
Когда мы просим вас подготовить документы разного формата, достаточно составить текст объёмом не больше страницы A4.
Во время работы над дипломом важно прислушиваться к дипломному руководителю и его рекомендациям. Он будет ставить задачи, которые нужно выполнять для достижения лучших результатов обучения. В его интересах также ваше успешное прохождеие курса и получение диплома о его завершении.
Важно: выполнение или не выполнение этого раздела не влияет на получение диплома.
Если вы чувствуете в себе силы, мы предлагаем вам попробовать интегрировать всю систему с Appveyor CI, GitHub Actions или любой другой CI.
- На большинстве CI есть Docker и, возможно, даже Docker Compose.
- На большинстве CI либо предустановлены Node.js, MySQL, PostgreSQL, либо их можно установить.
- Вы можете вставлять простейшие
sleep
прямо в сценариях командной строки, чтобы дать «подняться» СУБД, SUT или симулятору. Хотя есть и техники получше. Если вы это сделаете, не забудьте выставить бейджик сборки.
Не читайте этот раздел сразу. Попытайтесь сначала решить задачу самостоятельно :)
На что обратить внимание.
- Приложение усыпано багами: от безобидных до очень критичных. Если вы не нашли ни одного, значит, попробуйте ещё раз :)
- Если есть баги, то тесты не должны быть зелёными.
- Если есть баги, то должны быть баг-репорты в issue.
- Обращайте внимание на все баги. Особенно внимательно смотрите на обработку платежей и их фиксацию.