Software testing lectures

Меня зовут Всеволод Брекелов. Twitter: https://twitter.com/brekelov

Занятие 1. Основы теории.


Домашнее чтиво:

Домашнее видео (не то, о котором вы подумали):


Полезные ссылки:

Telegram-каналы:

Youtube:

Занятие 2. Тестирование Frontend. Часть 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.

Ссылки


Домашнее задание 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.

Ссылки


Домашнее задание 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.

Ссылки


Домашнее задание

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?