Меня зовут Всеволод Брекелов.
Twitter: https://twitter.com/brekelov
Я проводил лекции в ИТМО по прикладному тестированию.
Все видео записи, домашние задания, дополнительные материалы можно найти здесь.
- Методологии разработки. Статья. Habrahabr
- Виды, типы тестирования, техники тест-дизайна. Статья. Habrahabr
- Лекция 1
- Видео
Домашнее чтиво:
- https://martinfowler.com/articles/practical-test-pyramid.html
- https://martinfowler.com/bliki/IntegrationTest.html
- https://martinfowler.com/bliki/TestDouble.html
Домашнее видео(не то, о котором вы подумали):
- https://www.youtube.com/watch?v=L2c8awaHIAg (ссылка на его примеры https://github.com/qala-io/test-pyramid)
- https://www.youtube.com/watch?v=-q_9oPRAxFo (инструменты для тестировщика)
Полезные ссылки:
- Блог Martin Fawler
- Блог Максима Шульги с отличными рекомендациями по книгам и статьям
- Блог от Google про тестирование
Telegram-каналы:
- @js_for_testing
- @selenide_ru (Selenide библиотека)
- @qa_load (Чат перфоманс тестировщиков)
- @qa_ru
- @qa_automation
- @qa_fin
- @heisenbugconf (Чат конференции по тестированию Heisenbug)
- @sqaunderhood
- @allure_ru (Чат Allure репортинг фреймворка)
- @qajuniors
- @serious_tester
- @aerokube (Чат ребят из команды Aerokube, которые делают Selenoid и Moon)
Youtube:
- https://www.youtube.com/c/Heisenbugconf/videos (Отличные видео с конференции Heisenbug)
-
[Лекция 2] TBD
-
[Пример] TBD
-
Как стартовать приложение на React и разобраться быстро с TypeScript
-
Пошаговая инструкция для тестирования компонент на React c Jest и Enzyme
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 тестов?
- Сколько проверок должно быть в одном юнит тесте?
- Как называются тесты, которые то проходят, то не проходят? Почему так бывает и что с ними делать?
Домашнее задание
Main часть:
- В первой части домашнего задания у вас уже есть приложение с юнит и компонентными тестами. Самое время дополнить его e2e тестами. Необходимо написать не менее 5 тестов на каждом из фреймворков: Cypress и Playwright.
Advanced часть:
- Разобраться как с помощью Cypress и Playwright делать авторизацию в вашем приложении, чтобы каждый тест не проходил форму логина(авторизации).
Bonus часть:
- Написать e2e тесты, которые делают скриншот тестирование и запись видео. Найти дефекты, которые будут обнаружены с помощью видео или скриншот теста, но при этом найти их с помощью юнит или компонентных тестов не тривиально.
- По результатам написать статью в ваш блог(блог на github pages, который вы делали в 1 дз)
Ссылки HowToDo(гайды)
- React + Redux + Spring
- Пошагово UI на ReactJS + Backend на Java w/Sptring
- Chrome DevTools panel
- SoapUI test
Ссылки для ознакомления
- Http протокол
- Серия постов про REST API простыми словами
- Postman and cUrl
- Chrome DevTools panel
- Uber:Prototool for testing proto and not only for that
Ссылки
- Видео Кирилла Толкачева про тестирование с Spring Boot
- JUnit 5 User Guide
- TestContainers
- Доклад Сергея Егорова про TestContainers
- Доклад Анатолия Коровина про тестирование микросервис и очередей с TestContainers
- Spring Testing Guide
- Доклад от Marc Philipp про JUnit 5
Домашнее задание 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
- Что такое CI/CD
- GitHub Actions
- Azure GitHub action
- Spring Boot app to Azure
- CI/CD с GitHub actions статья
- Spring example with CD to Azure
- Repo with GitHub actions step by step
- Jenkins + Docker set up pipeline
- React app GitHub actions example
- React app GitHub actions to AWS example
- LazyDocker to manage docker images and containers
Домашнее задание 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?
- Можно ли настроить деплоймент на одно и тоже окружение из разных веток?
- Зачем нужно деплоить по комиту/пушу в мастер?
Ссылки
- Allure reporting
- Allure doc
- Allure examples
- BDD.Gherkin syntax
- Akita BDD framework used in Alpha-lab
Домашнее задание
Bonus часть:
Использовать Allure reporting для написанных тестов.
{#reporting #bdd #allure}
- [Лекция 8]
- [Пример]
- Видео
Ссылки
- Pact workshop step by step
- Spring cloud contract examples
- Spring cloud doc
- Pact broker
- Protocol buffers
Домашнее задание
Bonus часть:
Написать Pact-тесты к своему сервису.
{#contract-tests #pact #swagger}
Ссылки
- Rus | Пошаговое руководство для тестировщиков по проверке доступности сайта
- WCAG doc
- Rus | Веблайнд. Рекомендации
- Examples of accessibility patterns
- Chrome Dev-tools how-to
- Accessibility dev guide
- Udacity course about accessibility
Домашнее задание
Bonus часть:
Протестировать свой веб-сайт на а11y с помощью инструментов от Mozilla и Lighthouse. Пофиксить проблемы. Сделать автоматический тест с axe.
{#a11y}
Ссылки
- Selenide + Selenoid configuration
- Selenium WebDriver step-by-step. PageObject
- Selenium Grid story
- Selenoid how-to install
Домашнее задание
Main часть:
- Написать e2e тесты, используя Selenide.
Advanced часть:
- Настроить запуск тестов с Selenoid.
Bonus часть:
- Настроить генерацию отчетов с Allure report, сделав полный сетап в GitHub: e2e тесты с selenide запускаются с использованием Selenoid на разных окружениях(браузерах) параллельно и собирают отчет с помощью Allure Report.
- Написать статью как собрать такой сетап.
{#selenium #selenide #selenoid #e2e-tests #parallel-run}
Ссылки
- Анализ ключевых показателей производительности
- ISTQB термины
- 9 этапов тестирования
- Доклад Андрея Акиньшина
- Доклад Владимира Ситникова про подвоные камни в нагрузочном тестировании
- Доклад Алексея Лавренюка про Pandora
Домашнее задание
Main часть:
- Пройти воркшоп и выложить результат в гитхаб репозиторий.
Advanced часть:
- Настроить CI с Github actions.
Bonus часть:
- Настроить генерацию отчетов с Allure report.
Notes: отдельное спасибо Сергею Чепкасову и Максиму Рогожникову за отличный воркшоп.
{#performance #load #gatling #jmeter}