Skip to content

ktaranov/testing-lectures

 
 

Repository files navigation

Software testing lectures

Меня зовут Всеволод Брекелов.

Twitter: https://twitter.com/brekelov

Я проводил лекции в ИТМО по прикладному тестированию.

Все видео записи, домашние задания, дополнительные материалы можно найти здесь.

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


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

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


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

Telegram-каналы:

Youtube:

Занятие 2. Тестирование Frontend.

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. Тестирование Frontend: e2e тестирование.


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

Main часть:

  • В первой части домашнего задания у вас уже есть приложение с юнит и компонентными тестами. Самое время дополнить его e2e тестами. Необходимо написать не менее 5 тестов на каждом из фреймворков: Cypress и Playwright.

Advanced часть:

  • Разобраться как с помощью Cypress и Playwright делать авторизацию в вашем приложении, чтобы каждый тест не проходил форму логина(авторизации).

Bonus часть:

  • Написать e2e тесты, которые делают скриншот тестирование и запись видео. Найти дефекты, которые будут обнаружены с помощью видео или скриншот теста, но при этом найти их с помощью юнит или компонентных тестов не тривиально.
  • По результатам написать статью в ваш блог(блог на github pages, который вы делали в 1 дз)

Занятие 4. Тестирование Backend. Введение.

Ссылки HowToDo(гайды)

Ссылки для ознакомления

Занятие 5. Тестирование Backend. Unit testing. Component testing.

Ссылки


Домашнее задание Main часть: Сделать сервис на Java+Spring+любая DB, который имеет как мин 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? (или нет? =)

Занятие 6. CI/CD. GitHub actions. Azure.

Ссылки


Домашнее задание 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?
  • Можно ли настроить деплоймент на одно и тоже окружение из разных веток?
  • Зачем нужно деплоить по комиту/пушу в мастер?

Занятие 7. Reporting. BDD.

Ссылки


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

Bonus часть:

Использовать Allure reporting для написанных тестов.


{#reporting #bdd #allure}

Занятие 8. Contract tests. Pact. Spring cloud contract.

Ссылки


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

Bonus часть:

Написать Pact-тесты к своему сервису.


{#contract-tests #pact #swagger}

Занятие 9. A11Y. Instruments.

Ссылки


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

Bonus часть:

Протестировать свой веб-сайт на а11y с помощью инструментов от Mozilla и Lighthouse. Пофиксить проблемы. Сделать автоматический тест с axe.


{#a11y}

Занятие 10. Selenium. Selenide. Selenoid.

Ссылки


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

Main часть:

  • Написать e2e тесты, используя Selenide.

Advanced часть:

  • Настроить запуск тестов с Selenoid.

Bonus часть:

  • Настроить генерацию отчетов с Allure report, сделав полный сетап в GitHub: e2e тесты с selenide запускаются с использованием Selenoid на разных окружениях(браузерах) параллельно и собирают отчет с помощью Allure Report.
  • Написать статью как собрать такой сетап.

{#selenium #selenide #selenoid #e2e-tests #parallel-run}

Занятие 11. Performance testing.

Ссылки


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

Main часть:

  • Пройти воркшоп и выложить результат в гитхаб репозиторий.

Advanced часть:

  • Настроить CI с Github actions.

Bonus часть:

  • Настроить генерацию отчетов с Allure report.

Notes: отдельное спасибо Сергею Чепкасову и Максиму Рогожникову за отличный воркшоп.


{#performance #load #gatling #jmeter}

Занятие 12. Best practices. Итоговая лекция.

About

Software testing lectures for ITMO

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 50.5%
  • TypeScript 43.4%
  • CSS 5.0%
  • JavaScript 1.1%