Software testing lectures
Меня зовут Всеволод Брекелов. Twitter: https://twitter.com/brekelov
Занятие 1. Основы теории.
Домашнее чтиво:
Домашнее видео (не то, о котором вы подумали):
https://www.youtube.com/watch?v=L2c8awaHIAg (ссылка на его примеры https://github.com/qala-io/test-pyramid)
https://www.youtube.com/watch?v=-q_9oPRAxFo (инструменты для тестировщика)
Полезные ссылки:
Telegram-каналы:
@selenide_ru (Selenide библиотека)
@qa_load (Чат перфоманс тестировщиков)
@heisenbugconf (Чат конференции по тестированию Heisenbug)
@allure_ru (Чат Allure репортинг фреймворка)
@aerokube (Чат ребят из команды Aerokube, которые делают Selenoid и Moon)
Youtube:
https://www.youtube.com/c/Heisenbugconf/videos (Отличные видео с конференции Heisenbug)
Занятие 2. Тестирование Frontend. Часть 1.
[Лекция 2] TBD
Пример 1 Приложение с фронтендом, тестами и бекендом.
Youtube:
Notes: Looks like Angular is dying and that's why Protractor probably won't be used much in a long term. So use this video for understanding main principles and how you can handle jasmine, karma and mocking.
Домашнее задание
Main часть:
Создать репозиторий на GitHub, в котором создать папку
client
В папке
client
создать приложение на React / Angular / Vue фреймворке на ваш выбор. У кого будет выбран самый редкий фреймворк -- получат дополнительные баллы.Требования к приложению: должно содержать несколько страниц с роутингом, обязательно содержать сервис, который общается с node.js бекендом.
Присутствуют unit, component и e2e тесты в минимальном количестве 1шт каждый.
Advanced часть:
Приложение содержит авторизацию и не собрано из генераторов вида JHipster.
Написаны тесты для проверки авторизации
Существует нескольно наборов тестов (несколько suites)
Bonus часть:
Вы рассматриваете два любых фреймворка на выбор. Например: Mocha и Jest или Playwright и Cypress.
Пишете примеры с каждым из фреймовокров для своего приложения.
Короткая статья или заметки в чем именно для вас кажутся основные отличия.
Делаете в своем репозитории на GitHub активным GitHub pages и размещаете эту статью там.
Вопросы для проверки знаний:
Зачем e2e тесты, если можно писать компонентные тесты? Чем отличается e2e тест от компонентных?
Терминология
describe
it
xit
мне понятна и я могу объяснить что этоЧто такое test runner?
Тест зависит от запуска другого теста(ждет определенного состояния системы). Что может пойти не так?
beforeTest()
,afterTest()
зачем это?Какие бывают
assertion frameworks
?Почему рекомендуется писать немного e2e тестов?
Сколько проверок должно быть в одном юнит тесте?
Как называются тесты, которые то проходят, то не проходят? Почему так бывает и что с ними делать?
Занятие 3. Тестирование Backend. Введение.
Ссылки HowToDo(гайды)
Ссылки для ознакомления
Занятие 4. Тестирование Backend. Unit testing. Component testing.
[Лекция 4]
Ссылки
Домашнее задание Main часть: Сделать сервис на Java+Spring+любая DB (или NodeJS + DI tool), который имеет как мин 1 Controller. Написать Unit и Component тесты для этого сервиса. Использовать TestContainers для одного теста с DB. Использовать Mockito для мокирования тестов с внешним сервисом. Написать документацию(README) какие тесты еще необходимо написать, но вы не успели.
Advanced часть: Сделать взаимодействие сервиса и вашего Frontend приложения. Сделать тесты на авторизацию. Создать отдельные Spring Test Configruation, которые можно переключать с помощью флага при запуске тестов. Сделать генерацию тестовой документации через Asci Doctor(Spring Rest Docs).
Bonus часть:
Придумать функциональность, с которой можно использовать очереди/стримы вида RabbitMQ/Kafka streams. Написать компонентные тесты на эту функциональность(используя TestContainers).
{#java #spring #springboot #springboottest #testcontainers #testng #junit5}
Вопросы для проверки знаний:
Зачем нужен отдельный Config для тестов?
Как можно создать отдельный Suite для запуска разных тестов?
Можно ли в тесте создавать образ базы данных и работать с ней(не подымая саму базу данных для теста отдельно в окружении)?
Как сделать параметризованный тест с JUnit?
Есть ли hamcrest в JUnit 5?
Почему JUnit 5 лучше TestNG? (или нет? =)
Занятие 5. CI/CD. GitHub actions.
[Лекция 5]
[Пример]
Ссылки
Домашнее задание Main часть:
Добавить GitHub action для запуска тестов на UI и Backend по пушу из в master ветку.
Advanced часть:
Добавить GitHub action для деплоя приложения UI+BE на Azure/Vercel/Яндекс Облако.
Bonus часть:
Использовать Kubernetes в Azure/Яндекс Облаке для разворачивания среды.
{#githubActions #cicd #azure #cloud}
Вопросы для проверки знаний:
Что такое CI/CD?
Можно ли без Docker задеплоить приложение?
Какие основные шаги прописываются в CI пайплайне для UI/BE?
Можно ли настроить деплоймент на одно и тоже окружение из разных веток?
Зачем нужно деплоить по комиту/пушу в мастер?
Занятие 6. Reporting. BDD.
Ссылки
Домашнее задание
Bonus часть:
Использовать Allure reporting для написанных тестов.
{#reporting #bdd #allure}
Занятие 7. Contract tests. Pact. Spring cloud contract.
[Лекция 7]
[Пример]
Ссылки
Домашнее задание
Bonus часть:
Написать Pact-тесты к своему сервису.
{#contract-tests #pact #swagger}
Занятие 8. A11Y. Instruments.
[Пример]
Ссылки
Домашнее задание
Bonus часть:
Протестировать свой веб-сайт на а11y с помощью инструментов от Mozilla и Lighthouse. Пофиксить проблемы. Сделать автоматический тест с axe.
{#a11y}
Занятие 9. Selenium. Selenide. Selenoid.
Ссылки
Домашнее задание
Main часть:
Написать e2e тесты, используя Selenide.
Advanced часть:
Настроить запуск тестов с Selenoid.
Bonus часть:
Настроить генерацию отчетов с Allure report, сделав полный сетап в GitHub: e2e тесты с selenide запускаются с использованием Selenoid на разных окружениях(браузерах) параллельно и собирают отчет с помощью Allure Report.
Написать статью как собрать такой сетап.
{#selenium #selenide #selenoid #e2e-tests #parallel-run}
Занятие 10. Performance testing.
Ссылки
Домашнее задание
Main часть:
Пройти воркшоп и выложить результат в гитхаб репозиторий.
Advanced часть:
Настроить CI с Github actions.
Bonus часть:
Настроить генерацию отчетов с Allure report.
Notes: отдельное спасибо Сергею Чепкасову и Максиму Рогожникову за отличный воркшоп.
{#performance #load #gatling #jmeter}
Занятие 11. Data Quality.
Ссылки
{#dataquality #data #greatexpectations #sql}
Занятие 12. Best practices. Итоговая лекция.
Last updated
Was this helpful?