Автоматизированный тестировщик (Профессиональный уровень)

«Профессиональный курс по автоматизированному тестированию: углубленное изучение Selenium, REST API, Docker, CI/CD и фреймворков (PyTest/JUnit). Научись проектировать сложные тестовые системы, оптимизировать производительность и интегрировать тесты в DevOps-процессы. Практика с реальными кейсами, паттернами и инструментами для Senior QA.»

Учебная программа: "Автоматизированный тестировщик (Профессиональный уровень)"

Описание программы

Курс предназначен для опытных QA-инженеров, желающих углубить знания в автоматизации тестирования. Программа охватывает продвинутые инструменты, фреймворки и методологии, включая интеграцию с DevOps, нагрузочное тестирование и работу с облачными инфраструктурами.

Что предстоит пройти:

  • Продвинутая автоматизация UI (Selenium, Playwright, Cypress)

  • API-тестирование (REST, GraphQL, gRPC, Postman, RestAssured)

  • Работа с базами данных (SQL, NoSQL, ORM)

  • Docker и Kubernetes для тестирования

  • Интеграция в CI/CD (Jenkins, GitLab CI, GitHub Actions)

  • Нагрузочное тестирование (JMeter, Gatling, k6)

  • Фреймворки (PyTest, JUnit, TestNG, Allure Report)

  • Тестирование микросервисов и событийных систем (Kafka, RabbitMQ)

  • Оптимизация и поддержка тестовой инфраструктуры

Ожидаемые результаты

После прохождения курса студент должен:
✅ Уметь:

  • Проектировать масштабируемые тестовые фреймворки

  • Интегрировать автотесты в DevOps-конвейер

  • Проводить анализ производительности и безопасности

  • Работать с распределёнными системами и облачными платформами

✅ Знать:

  • Паттерны автоматизации (Page Object, Screenplay, BDD)

  • Принципы работы CI/CD и инфраструктуры как кода (IaC)

  • Методы отладки и анализа логов (ELK, Grafana)

  • Best practices поддержки и рефакторинга тестов

Формат обучения

🔹 Длительность: 3 месяца
🔹 Формат: Практические задания + реальные кейсы
🔹 Итог: Сертификат + готовый проект в портфолио

1. Что такое Selenium WebDriver и чем он отличается от Selenium IDE?
Selenium WebDriver — это библиотека для автоматизации браузеров через код (Java, Python и др.), поддерживающая сложные сценарии. Selenium IDE — плагин для записи/воспроизведения тестов без программирования, но с ограниченной гибкостью.

2. Как работает Page Object Model (POM) и зачем он нужен?
POM — паттерн, разделяющий тесты и UI-элементы на отдельные классы. Уменьшает дублирование кода, упрощает поддержку и улучшает читаемость.

3. Какие альтернативы Selenium вы знаете?
Playwright, Cypress, Puppeteer, WebdriverIO. Они предлагают встроенные wait-механизмы, кросс-браузерность и удобный API.

4. Как организовать ожидание элементов в Selenium?
Явные (WebDriverWait) и неявные (implicitlyWait) ожидания. Явные — предпочтительнее, так как работают точечно и избегают "лишних" задержек.

5. Что такое REST API и как его тестировать?
REST API — архитектурный стиль для HTTP-взаимодействия. Тестируют через Postman (ручные проверки), RestAssured/PyTest (автотесты), проверяя статус-коды, тело ответа и headers.

6. Чем отличается REST от GraphQL?
REST использует фиксированные эндпоинты, GraphQL позволяет клиенту запрашивать только нужные данные одним запросом.

7. Как тестировать WebSocket-соединения?
Специальными библиотеками (например, websocket-client в Python), проверяя отправку/получение сообщений и обработку ошибок.

8. Зачем использовать Docker в тестировании?
Docker создаёт изолированные среды для тестов, устраняя проблемы с зависимостями и обеспечивая консистентность на разных ОС.

9. Как интегрировать автотесты в CI/CD?
Через Jenkins/GitLab CI, запуская тесты при коммите в репозиторий. Этапы: сборка → прогон тестов → отчёт → деплой (если успешно).

10. Что проверяют нагрузочные тесты?
Производительность системы под нагрузкой: время отклика, пропускную способность, устойчивость к пиковым запросам.

11. Какие метрики важны в нагрузочном тестировании?
RPS (запросов в секунду), latency, ошибки 5xx, использование CPU/RAM.

12. Как работает JUnit/TestNG?
Фреймворки для структурирования тестов: аннотации (@Test, @BeforeEach), ассерты, параметризация, зависимые тесты.

13. Чем Allure Report лучше стандартных отчётов?
Даёт детализированную визуализацию: графики, шаги теста, скриншоты, историю запусков.

14. Как тестировать мобильные приложения?
Appium (кроссплатформенно), Espresso (Android), XCTest (iOS). Эмуляторы/реальные устройства.

15. Что такое BDD и как его применять?
Behavior-Driven Development — описание тестов на естественном языке (Gherkin). Инструменты: Cucumber, Behave.

16. Как работать с базами данных в автотестах?
ORM (Hibernate, SQLAlchemy) или прямой SQL. Проверка данных после действий в UI/API.

17. Как тестировать Kafka?
Отправка/чтение сообщений, проверка обработки ошибок, мониторинг lag (отставания потребителей).

18. Что такое "флаки" и как с ними бороться?
Нестабильные тесты, падающие из-за таймаутов/асинхронности. Лечение: стабильные локаторы, retry-механизмы, изоляция тестов.

19. Как организовать параллельный запуск тестов?
Selenium Grid, pytest-xdist, TestNG parallel. Требует изолированности тестов (чистые данные, независимость).

20. Что такое "тестовая пирамида"?
Принцип: много unit-тестов → меньше интеграционных → ещё меньше UI-тестов. Основа стабильного тестирования.

21. Как тестировать безопасность API?
Инструменты: OWASP ZAP, Burp Suite. Проверка: инъекции, токены, CORS, RBAC.

22. Чем отличается Mock от Stub?
Mock — объект с ожиданиями (проверяет вызовы методов), Stub — заглушка с фиксированными ответами.

23. Как работать с файлами в автотестах?
Чтение/запись через стандартные библиотеки (Python: open(), Java: Files). CSV/JSON — специализированные парсеры.

24. Зачем нужен Service Locator в тестах?
Паттерн для централизованного управления зависимостями (например, подключение к БД или API-клиентов).

25. Как тестировать версионность API?
Проверка обратной совместимости, заголовок Accept-Version, deprecated-эндпоинтов.

26. Что такое "контрактное тестирование"?
Проверка соглашения между клиентом и сервером (например, через Pact).

27. Как дебажить падающие тесты?
Логирование, скриншоты на падение, пошаговый запуск в IDE, Proxy (Charles/Fiddler).

28. Как тестировать геолокацию?
Моки координат (браузерные DevTools, мобильные эмуляторы).

29. Что такое Idempotency Key в API?
Ключ, гарантирующий, что повторный запрос не изменит результат (например, в платежах).

30. Как тестировать Webhooks?
Запуск сервера-приёмника (например, ngrok), проверка корректности данных в запросе.

31. Чем отличается Stateful от Stateless-приложений?
Stateless (REST) не хранит состояние между запросами, Stateful (сессии, WebSocket) — хранит.

32. Как тестировать JWT-авторизацию?
Проверка срока жизни токена, валидации подписи, прав доступа (claims).

33. Что такое "канарейка" в DevOps?
Постепенное развертывание новой версии для части пользователей, мониторинг ошибок перед полным релизом.

34. Как тестировать GraphQL?
Инструменты: Apollo Client, GraphiQL. Проверка: валидация схемы, сложные запросы, обработка ошибок.

35. Что такое "грязные тесты"?
Тесты, оставляющие данные в системе (например, созданные юзеры). Лечение: откат БД, аннотации @Cleanup.

36. Как тестировать WebAssembly?
Интеграционные тесты (взаимодействие с JS), проверка производительности.

37. Что такое "A/B-тестирование"?
Сравнение двух версий фичи для анализа метрик (конверсия, engagement).

38. Как тестировать CMS (например, WordPress)?
Плагины для тестирования, кастомные скрипты, проверка API и визуального редактора.

39. Что такое "темпераментные тесты"?
Тесты, зависящие от внешних факторов (время, погода). Решение: мокирование.

40. Как тестировать PWA?
Проверка оффлайн-режима, push-уведомлений, установки через Lighthouse.

41. Чем отличается Blackbox от Whitebox-тестирования?
Blackbox — без доступа к коду (UI/API), Whitebox — с анализом логики (юнит-тесты).

42. Как тестировать биллинг-системы?
Сэндбокс-платежи, проверка списаний, чеков, налогов (например, Stripe API).

43. Что такое "дрейф конфигурации"?
Расхождение настроек среды и эталонных значений. Инструменты: Ansible, Terraform.

44. Как тестировать Voice UI (Алиса, Siri)?
Распознавание речи (Google Speech-to-Text), проверка интентов в Dialogflow.

45. Что такое "тестирование на основе рисков"?
Приоритезация тестов по потенциальному ущербу для бизнеса.

46. Как тестировать AR/VR-приложения?
Эмуляторы (Unity Test Framework), ручные проверки на устройствах.

47. Что такое "тестирование в продакшене"?
Canary-релизы, Feature Flags, мониторинг в реальном времени.

48. Как тестировать микросервисы?
Интеграционные тесты, контракты, изолированные стенды (Kubernetes).

49. Что такое "хрупкие тесты"?
Тесты, ломающиеся при малейших изменениях в UI. Решение: стабильные селекторы.

50. Как тестировать Blockchain?
Проверка смарт-контрактов (Truffle), транзакций, нод (Ganache).

51. Как тестировать Web Components?
Использовать фреймворки типа WebDriverIO или Playwright, которые поддерживают Shadow DOM. Проверять изолированность компонентов, пропсы и события.

52. Что такое Contract Testing и зачем он нужен?
Проверка соглашения между клиентом и сервером (например, через Pact). Гарантирует, что изменения API не сломают клиентов.

53. Как тестировать OAuth-авторизацию?
Мокировать токены, проверять scopes, тестировать refresh token flow, использовать инструменты типа Postman для ручных проверок.

54. Что такое Chaos Engineering и как его применять в тестировании?
Намеренное внесение сбоев (отказ сети, убийство процессов) для проверки отказоустойчивости. Инструменты: Chaos Monkey, Gremlin.

55. Как тестировать WebRTC-приложения?
Проверять установку соединения, передачу аудио/видео, работу NAT-трансляции. Инструменты: KITE, Selenium для WebRTC.

56. Что такое Property-Based Testing?
Генерация случайных входных данных для проверки инвариантов (например, QuickCheck в Haskell). Позволяет находить edge cases.

57. Как тестировать Serverless-функции?
Локальный запуск (AWS SAM, Serverless Framework), проверка триггеров (SQS, S3), мониторинг логов (CloudWatch).

58. Что такое "тестирование доступности" (a11y)?
Проверка поддержки screen readers, контрастности, клавиатурной навигации. Инструменты: Axe, Lighthouse.

59. Как тестировать gRPC API?
Использовать клиентские библиотеки (grpcurl, BloomRPC), проверять бинарные сообщения и streaming.

60. Что такое "тестирование на основе моделей" (MBT)?
Генерация тестов из формальных моделей системы (UML, State Machines). Инструменты: GraphWalker, Spec Explorer.

61. Как тестировать IoT-устройства?
Эмуляторы (AWS IoT Device Simulator), проверка MQTT-сообщений, нагрузочное тестирование шлюзов.

62. Что такое "мутационное тестирование"?
Внесение мелких изменений в код (мутаций) для оценки качества unit-тестов. Инструменты: Pitest, Stryker.

63. Как тестировать Progressive Web Apps (PWA)?
Проверка оффлайн-режима, push-уведомлений, установки. Инструменты: Lighthouse, Workbox.

64. Что такое "тестирование в продакшене"?
Canary-релизы, Feature Flags, мониторинг в реальном времени (например, через Datadog).

65. Как тестировать AI/ML-модели?
Проверка accuracy, precision/recall, edge cases. Инструменты: TensorFlow Model Analysis, MLflow.

66. Что такое "тестирование на основе данных" (Data-Driven Testing)?
Параметризация тестов через CSV/JSON. Фреймворки: pytest.mark.parametrize, TestNG DataProvider.

67. Как тестировать WebSockets в нагрузке?
Инструменты: Gatling (WebSocket support), k6. Проверка стабильности при 10k+ соединений.

68. Что такое "тестирование локализации"?
Проверка переводов, форматирования дат/валют, RTL-языков. Инструменты: Pseudolocalization.

69. Как тестировать CDN?
Проверка геораспределения (DNS-запросы), кеширования, скорости доставки контента (WebPageTest).

70. Что такое "тестирование времени отклика" (TTFB, TTI)?
TTFB (Time To First Byte) — задержка до первого байта. TTI (Time To Interactive) — когда страница готова к взаимодействию.

71. Как тестировать WebAssembly (WASM)?
Интеграционные тесты с JavaScript, проверка производительности (benchmark.js).

72. Что такое "тестирование на уязвимости" (Vulnerability Scanning)?
Автоматический поиск CVE (OWASP ZAP, Nessus, Snyk).

73. Как тестировать Voice Assistant (Алиса, Siri)?
Проверка интентов, диалогов (Dialogflow), обработки ошибок (ASR/NLU).

74. Что такое "тестирование в облаке" (Cloud Testing)?
Запуск тестов в AWS/GCP/Azure (Sauce Labs, BrowserStack).

75. Как тестировать Blockchain-транзакции?
Проверка смарт-контрактов (Truffle), gas-лимитов, подписей (Web3.js).

1. Какой инструмент НЕ является альтернативой Selenium WebDriver?

A) Playwright
B) Cypress
C) JMeter
D) Puppeteer
✅ Правильный ответ: C) JMeter

2. Какой паттерн чаще всего используется для организации UI-автотестов?

A) Singleton
B) Page Object Model
C) Factory Method
D) Observer
✅ Правильный ответ: B) Page Object Model

3. Какой HTTP-метод используется для создания ресурса в REST API?

A) GET
B) POST
C) PUT
D) DELETE
✅ Правильный ответ: B) POST

4. Какой инструмент используется для тестирования WebSocket?

A) RestAssured
B) Selenium
C) websocket-client
D) Postman
✅ Правильный ответ: C) websocket-client

5. Какой сервис НЕ является облачной платформой для запуска тестов?

A) BrowserStack
B) Sauce Labs
C) Docker Hub
D) LambdaTest
✅ Правильный ответ: C) Docker Hub

6. Какой фреймворк используется для нагрузочного тестирования?

A) PyTest
B) JMeter
C) TestNG
D) JUnit
✅ Правильный ответ: B) JMeter

7. Какой тип ожидания в Selenium НЕ рекомендуется использовать?

A) Явное (Explicit Wait)
B) Неявное (Implicit Wait)
C) Fluent Wait
D) Thread.sleep()
✅ Правильный ответ: D) Thread.sleep()

8. Какой формат данных чаще всего используется в REST API?

A) XML
B) CSV
C) JSON
D) YAML
✅ Правильный ответ: C) JSON

9. Какой инструмент используется для контрактного тестирования?

A) Selenium
B) Pact
C) Postman
D) SoapUI
✅ Правильный ответ: B) Pact

10. Какой язык запросов используется в GraphQL?

A) SQL
B) Gherkin
C) GraphQL Query Language
D) XPath
✅ Правильный ответ: C) GraphQL Query Language

11. Какой инструмент используется для мониторинга логов?

A) ELK Stack
B) Selenium Grid
C) TestNG
D) Jira
✅ Правильный ответ: A) ELK Stack

12. Какой фреймворк используется для BDD-тестирования?

A) JUnit
B) Cucumber
C) PyTest
D) Mocha
✅ Правильный ответ: B) Cucumber

13. Какой протокол используется в микросервисной архитектуре?

A) FTP
B) HTTP/HTTPS
C) SMTP
D) TCP
✅ Правильный ответ: B) HTTP/HTTPS

14. Какой инструмент используется для тестирования мобильных приложений?

A) Selenium
B) Appium
C) JMeter
D) Postman
✅ Правильный ответ: B) Appium

15. Какой тип тестирования проверяет производительность системы?

A) Unit-тестирование
B) Нагрузочное тестирование
C) Регрессионное тестирование
D) Smoke-тестирование
✅ Правильный ответ: B) Нагрузочное тестирование

16. Какой инструмент используется для тестирования безопасности?

A) OWASP ZAP
B) Selenium
C) PyTest
D) Cucumber
✅ Правильный ответ: A) OWASP ZAP

17. Какой фреймворк используется для тестирования в Python?

A) JUnit
B) PyTest
C) TestNG
D) Mocha
✅ Правильный ответ: B) PyTest

18. Какой инструмент используется для работы с Docker?

A) Kubernetes
B) Jenkins
C) Docker CLI
D) Ansible
✅ Правильный ответ: C) Docker CLI

19. Какой сервис используется для CI/CD?

A) Jira
B) Jenkins
C) Selenium
D) Postman
✅ Правильный ответ: B) Jenkins

20. Какой тип тестирования проверяет отдельные модули кода?

A) Интеграционное тестирование
B) Unit-тестирование
C) Системное тестирование
D) Регрессионное тестирование
✅ Правильный ответ: B) Unit-тестирование

21. Какой инструмент используется для тестирования GraphQL?

A) Postman
B) GraphiQL
C) SoapUI
D) JMeter
✅ Правильный ответ: B) GraphiQL

22. Какой язык используется для написания скриптов в JMeter?

A) Python
B) Java
C) Groovy
D) JavaScript
✅ Правильный ответ: C) Groovy

23. Какой инструмент используется для тестирования баз данных?

A) Selenium
B) SQLAlchemy
C) Postman
D) JMeter
✅ Правильный ответ: B) SQLAlchemy

24. Какой фреймворк используется для тестирования в Java?

A) PyTest
B) JUnit
C) Mocha
D) Cucumber
✅ Правильный ответ: B) JUnit

25. Какой инструмент используется для тестирования Kafka?

A) kafkacat
B) Postman
C) Selenium
D) JMeter
✅ Правильный ответ: A) kafkacat

26. Какой инструмент используется для тестирования производительности веб-приложений?

A) Selenium
B) Postman
C) Lighthouse
D) JMeter
✅ Правильный ответ: D) JMeter

27. Какой тип тестов проверяет взаимодействие между компонентами системы?

A) Unit-тесты
B) Интеграционные тесты
C) Нагрузочные тесты
D) Регрессионные тесты
✅ Правильный ответ: B) Интеграционные тесты

28. Какой HTTP-код означает "Успешное создание ресурса"?

A) 200
B) 201
C) 404
D) 500
✅ Правильный ответ: B) 201

29. Какой инструмент используется для визуализации результатов тестирования?

A) Allure Report
B) JUnit
C) PyTest
D) TestNG
✅ Правильный ответ: A) Allure Report

30. Какой язык используется для написания сценариев в Cypress?

A) Python
B) Java
C) JavaScript
D) Ruby
✅ Правильный ответ: C) JavaScript

31. Какой метод в REST API используется для частичного обновления ресурса?

A) POST
B) PUT
C) PATCH
D) DELETE
✅ Правильный ответ: C) PATCH

32. Какой инструмент используется для тестирования доступности (a11y)?

A) Axe
B) Selenium
C) JMeter
D) Postman
✅ Правильный ответ: A) Axe

33. Какой фреймворк используется для тестирования на JavaScript?

A) JUnit
B) Mocha
C) PyTest
D) TestNG
✅ Правильный ответ: B) Mocha

34. Какой параметр в JMeter измеряет количество запросов в секунду?

A) Latency
B) Throughput
C) Response Time
D) Error Rate
✅ Правильный ответ: B) Throughput

35. Какой инструмент используется для мокирования API?

A) WireMock
B) Selenium
C) JMeter
D) Postman
✅ Правильный ответ: A) WireMock

36. Какой тип тестирования проверяет базовую функциональность приложения?

A) Регрессионное тестирование
B) Нагрузочное тестирование
C) Smoke-тестирование
D) Unit-тестирование
✅ Правильный ответ: C) Smoke-тестирование

37. Какой инструмент используется для тестирования Web Components?

A) Playwright
B) RestAssured
C) SoapUI
D) JMeter
✅ Правильный ответ: A) Playwright

38. Какой HTTP-код означает "Не авторизован"?

A) 200
B) 401
C) 403
D) 404
✅ Правильный ответ: B) 401

39. Какой инструмент используется для тестирования gRPC API?

A) Postman
B) grpcurl
C) SoapUI
D) JMeter
✅ Правильный ответ: B) grpcurl

40. Какой фреймворк используется для тестирования в .NET?

A) NUnit
B) JUnit
C) PyTest
D) Mocha
✅ Правильный ответ: A) NUnit

41. Какой инструмент используется для тестирования WebAssembly?

A) Selenium
B) Playwright
C) Jest
D) JMeter
✅ Правильный ответ: C) Jest

42. Какой HTTP-метод используется для получения ресурса?

A) POST
B) PUT
C) GET
D) DELETE
✅ Правильный ответ: C) GET

43. Какой инструмент используется для тестирования IoT-устройств?

A) AWS IoT Device Simulator
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) AWS IoT Device Simulator

44. Какой тип тестирования проверяет систему на устойчивость к сбоям?

A) Нагрузочное тестирование
B) Chaos Engineering
C) Регрессионное тестирование
D) Unit-тестирование
✅ Правильный ответ: B) Chaos Engineering

45. Какой инструмент используется для тестирования Blockchain?

A) Truffle
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) Truffle

46. Какой HTTP-код означает "Внутренняя ошибка сервера"?

A) 200
B) 400
C) 404
D) 500
✅ Правильный ответ: D) 500

47. Какой инструмент используется для тестирования Voice UI?

A) Dialogflow
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) Dialogflow

48. Какой фреймворк используется для тестирования в Ruby?

A) RSpec
B) JUnit
C) PyTest
D) Mocha
✅ Правильный ответ: A) RSpec

49. Какой инструмент используется для тестирования CDN?

A) WebPageTest
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) WebPageTest

50. Какой тип тестирования проверяет соответствие требованиям?

A) Регрессионное тестирование
B) Нагрузочное тестирование
C) Валидационное тестирование
D) Unit-тестирование
✅ Правильный ответ: C) Валидационное тестирование

51. Какой инструмент используется для тестирования Webhooks?

A) ngrok
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) ngrok

52. Какой HTTP-код означает "Ресурс не найден"?

A) 200
B) 400
C) 404
D) 500
✅ Правильный ответ: C) 404

53. Какой инструмент используется для тестирования PWA?

A) Lighthouse
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) Lighthouse

54. Какой фреймворк используется для тестирования в Go?

A) Testify
B) JUnit
C) PyTest
D) Mocha
✅ Правильный ответ: A) Testify

55. Какой инструмент используется для тестирования AR/VR-приложений?

A) Unity Test Framework
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) Unity Test Framework

56. Какой HTTP-метод используется для полного обновления ресурса?

A) POST
B) PUT
C) PATCH
D) DELETE
✅ Правильный ответ: B) PUT

57. Какой инструмент используется для тестирования Serverless-функций?

A) AWS SAM
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) AWS SAM

58. Какой тип тестирования проверяет систему после изменений?

A) Регрессионное тестирование
B) Нагрузочное тестирование
C) Smoke-тестирование
D) Unit-тестирование
✅ Правильный ответ: A) Регрессионное тестирование

59. Какой инструмент используется для тестирования WebSockets?

A) websocket-client
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) websocket-client

60. Какой HTTP-код означает "Запрещено"?

A) 200
B) 401
C) 403
D) 404
✅ Правильный ответ: C) 403

61. Какой инструмент используется для тестирования локализации?

A) Pseudolocalization
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) Pseudolocalization

62. Какой фреймворк используется для тестирования в PHP?

A) PHPUnit
B) JUnit
C) PyTest
D) Mocha
✅ Правильный ответ: A) PHPUnit

63. Какой инструмент используется для тестирования биллинг-систем?

A) Stripe API
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) Stripe API

64. Какой HTTP-метод используется для удаления ресурса?

A) POST
B) PUT
C) PATCH
D) DELETE
✅ Правильный ответ: D) DELETE

65. Какой инструмент используется для тестирования AI/ML-моделей?

A) TensorFlow Model Analysis
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) TensorFlow Model Analysis

66. Какой тип тестирования проверяет систему на безопасность?

A) Нагрузочное тестирование
B) Пентест
C) Регрессионное тестирование
D) Unit-тестирование
✅ Правильный ответ: B) Пентест

67. Какой инструмент используется для тестирования WebRTC?

A) KITE
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) KITE

68. Какой HTTP-код означает "Плохой запрос"?

A) 200
B) 400
C) 404
D) 500
✅ Правильный ответ: B) 400

69. Какой инструмент используется для тестирования CMS?

A) WordPress Testing Plugins
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) WordPress Testing Plugins

70. Какой фреймворк используется для тестирования в Swift?

A) XCTest
B) JUnit
C) PyTest
D) Mocha
✅ Правильный ответ: A) XCTest

71. Какой инструмент используется для тестирования Kafka?

A) kafkacat
B) Selenium
C) Postman
D) JMeter
✅ Правильный ответ: A) kafkacat

72. Какой HTTP-метод используется для проверки доступности ресурса?

A) GET
B) HEAD
C) OPTIONS
D) TRACE
✅ Правильный ответ: B) HEAD

73. Какой инструмент используется для тестирования Web Components?

A) Playwright
B) Selenium
C) Cypress
D) Puppeteer
✅ Правильный ответ: A) Playwright

74. Какой тип тестирования проверяет систему на соответствие стандартам?

A) Регрессионное тестирование
B) Комплаенс-тестирование
C) Нагрузочное тестирование
D) Unit-тестирование
✅ Правильный ответ: B) Комплаенс-тестирование

75. Какой инструмент используется для тестирования микросервисов?

A) Postman
B) Kubernetes
C) Selenium
D) JMeter
✅ Правильный ответ: B) Kubernetes

Билет 1

Теоретическая часть:

  1. Что такое Page Object Model и каковы его преимущества?
    ✅ Ответ: Page Object Model (POM) — это паттерн проектирования, при котором каждый веб-страница представляется в виде отдельного класса. Преимущества: уменьшение дублирования кода, упрощение поддержки, улучшение читаемости тестов.

  2. Какие типы ожиданий существуют в Selenium WebDriver?
    ✅ Ответ:

  • Явные (Explicit Wait) — ожидание конкретного условия для элемента.

  • Неявные (Implicit Wait) — глобальное ожидание для всех элементов.

  • Fluent Wait — гибкое ожидание с настройкой частоты проверки.

Практическая часть:

Задание: Напишите XPath-локатор для поиска кнопки с текстом "Submit" внутри формы с id="login-form".
✅ Ответ:

//form[@id='login-form']//button[text()='Submit']

 

Билет 2

Теоретическая часть:

  1. Чем отличается REST от GraphQL?
    ✅ Ответ:

  • REST использует фиксированные эндпоинты и возвращает заранее определённые данные.

  • GraphQL позволяет клиенту запрашивать только нужные поля одним запросом.

  1. Что такое "флаки-тесты" и как с ними бороться?
    ✅ Ответ: Флаки-тесты — это нестабильные тесты, которые могут случайно падать. Способы борьбы:

  • Использование стабильных локаторов.

  • Добавление явных ожиданий.

  • Повторный запуск упавших тестов (retry-механизмы).

Практическая часть:

Задание: Напишите HTTP-запрос на создание пользователя (POST) с именем "John" и email "john@example.com" через RestAssured.
✅ Ответ:

 

given()
    .contentType("application/json")
    .body("{\"name\": \"John\", \"email\": \"john@example.com\"}")
.when()
    .post("/users")
.then()
    .statusCode(201);

 

Билет 3

Теоретическая часть:

  1. Для чего используется Docker в тестировании?
    ✅ Ответ: Docker создаёт изолированные контейнеры для запуска тестов, что обеспечивает:

  • Консистентность сред (dev/test/prod).

  • Быстрое развертывание зависимостей (БД, сервисы).

  • Масштабируемость (параллельный запуск).

  1. Какие метрики важны в нагрузочном тестировании?
    ✅ Ответ:

  • RPS (запросов в секунду).

  • Latency (время отклика).

  • Error Rate (процент ошибок).

  • Использование CPU/RAM.

Практическая часть:

Задание: Напишите SQL-запрос для выборки всех пользователей старше 30 лет.
✅ Ответ:

SELECT * FROM users WHERE age > 30;

 

Билет 4

Теоретическая часть:

  1. Что такое BDD и какие инструменты его поддерживают?
    ✅ Ответ: BDD (Behavior-Driven Development) — это подход к тестированию через описание поведения на естественном языке (Gherkin). Инструменты: Cucumber, Behave, SpecFlow.

  2. Как работает Selenium Grid?
    ✅ Ответ: Selenium Grid позволяет запускать тесты параллельно на разных браузерах и ОС. Состоит из:

  • Hub (центральный сервер).

  • Node (агенты, выполняющие тесты).

Практическая часть:

Задание: Напишите скрипт на Python для клика по кнопке с id="submit-btn" через Selenium.
✅ Ответ:

from selenium.webdriver import Chrome

driver = Chrome()
driver.find_element_by_id("submit-btn").click()

 

Билет 5

Теоретическая часть:

  1. Что такое "контрактное тестирование" и зачем оно нужно?
    ✅ Ответ: Контрактное тестирование проверяет соглашение между клиентом и сервером (например, через Pact). Гарантирует, что изменения API не сломают клиентов.

  2. Какие преимущества у Playwright перед Selenium?
    ✅ Ответ:

  • Встроенные ожидания (auto-wait).

  • Поддержка современных браузеров (включая мобильные эмуляторы).

  • Удобный API для работы с iframe и файлами.

Практическая часть:

Задание: Напишите тест на PyTest для проверки статус-кода 200 у GET-запроса к "/api/users".

✅ Ответ:

import requests

def test_get_users():
    response = requests.get("http://example.com/api/users")
    assert response.status_code == 200

 

Билет 6

Теоретическая часть:

  1. Что такое WebDriver Wait и чем он отличается от Implicit Wait?
    ✅ Ответ:
    WebDriver Wait - это явное ожидание конкретного условия для элемента с настраиваемым таймаутом и частотой проверки. Implicit Wait - неявное ожидание, которое применяется глобально ко всем поискам элементов. WebDriver Wait предпочтительнее, так как обеспечивает более точный контроль.

  2. Какие преимущества у API-тестирования перед UI-тестированием?
    ✅ Ответ:

  • Более высокая скорость выполнения тестов

  • Меньшая зависимость от изменений интерфейса

  • Возможность тестировать бизнес-логику без UI

  • Лучшая масштабируемость и стабильность

Практическая часть:

Задание: Напишите тест на Java с использованием TestNG, который проверяет, что ответ GET-запроса к "/api/users" содержит поле "total" со значением больше 0.
✅ Ответ:

import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

public class UsersApiTest {
    @Test
    public void testUsersTotal() {
        given()
        .when()
            .get("/api/users")
        .then()
            .statusCode(200)
            .body("total", greaterThan(0));
    }
}

 

Билет 7

Теоретическая часть:

  1. Что такое Data-Driven Testing и как его реализовать?
    ✅ Ответ:
    Data-Driven Testing - подход, когда тестовые данные выносятся отдельно от кода теста. Реализуется через:

  • Параметризованные тесты в TestNG/JUnit

  • Внешние источники данных (CSV, Excel, JSON)

  • Аннотации @DataProvider в TestNG

  1. Как организовать параллельный запуск тестов в Selenium?
    ✅ Ответ:

  • Использовать Selenium Grid с несколькими нодами

  • Настроить parallel="tests" в TestNG

  • Применять ThreadLocal для изоляции драйверов

  • Использовать специализированные облачные сервисы (BrowserStack, Sauce Labs)

Практическая часть:

Задание: Напишите SQL-запрос для обновления статуса пользователя с id=5 на "inactive".
✅ Ответ:

UPDATE users SET status = 'inactive' WHERE id = 5;

 

Билет 8

Теоретическая часть:

  1. Что такое PageFactory в Selenium и как его использовать?
    ✅ Ответ:
    PageFactory - это класс в Selenium, который помогает реализовывать Page Object Pattern через аннотации @FindBy и инициализацию элементов. Пример:

@FindBy(id="username")
WebElement usernameField;

public LoginPage(WebDriver driver) {
    PageFactory.initElements(driver, this);
}
  1. Какие виды Assertions вы знаете в API-тестировании?
    ✅ Ответ:

  • Проверка статус-кода ответа

  • Валидация JSON-схемы

  • Проверка значений полей в ответе

  • Валидация заголовков ответа

  • Проверка времени ответа

Практическая часть:

Задание: Напишите XPath для поиска всех чекбоксов в таблице, которые находятся в нечетных строках.
✅ Ответ:

//table//tr[position() mod 2 = 1]//input[@type='checkbox']

 

Билет 9

Теоретическая часть:

  1. Что такое TestNG Listener и для чего он используется?
    ✅ Ответ:
    TestNG Listener - это интерфейс, позволяющий перехватывать и обрабатывать события тестового выполнения. Используется для:

  • Логирования результатов тестов

  • Создания кастомных отчетов

  • Обработки ошибок

  • Выполнения действий перед/после тестов

  1. Как тестировать загрузку файлов через Selenium?
    ✅ Ответ:

  • Использовать sendKeys() для элемента input type="file"

  • Для скрытых элементов использовать JavaScript executor

  • Проверять факт загрузки через наличие файла на сервере или ответ API

Практическая часть:

Задание: Напишите скрипт на Python, который проверяет, что после клика по кнопке "Load More" подгружаются новые элементы.
✅ Ответ:

from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = Chrome()
driver.get("https://example.com")

initial_count = len(driver.find_elements(By.CLASS_NAME, "item"))
driver.find_element(By.ID, "load-more").click()

WebDriverWait(driver, 10).until(
    lambda d: len(d.find_elements(By.CLASS_NAME, "item")) > initial_count
)

 

Билет 10

Теоретическая часть:

  1. Что такое Docker Compose и как он помогает в тестировании?
    ✅ Ответ:
    Docker Compose - инструмент для определения и запуска многоконтейнерных приложений. В тестировании помогает:

  • Быстро поднимать зависимости (БД, кэш, брокеры сообщений)

  • Создавать изолированные тестовые среды

  • Упрощать настройку инфраструктуры для CI/CD

  1. Как организовать хранение тестовых данных?
    ✅ Ответ:

  • Внешние файлы (JSON, CSV, Excel)

  • Базы данных (отдельная тестовая БД)

  • Генераторы тестовых данных (Faker, Random)

  • API для управления тестовыми данными

  • In-memory хранилища для изолированных тестов

Практическая часть:

Задание: Напишите HTTP-запрос для аутентификации с Basic Auth (логин: admin, пароль: pass123).
✅ Ответ:

given()
    .auth()
    .preemptive()
    .basic("admin", "pass123")
.when()
    .get("/secure")
.then()
    .statusCode(200);

 

Билет 11

Теоретическая часть:

  1. Что такое Soft Assertions и чем они отличаются от Hard Assertions?
    ✅ Ответ:
    Soft Assertions - проверки, которые не прерывают тест при падении, а собирают все ошибки до конца теста. Hard Assertions прерывают тест сразу при первой ошибке. Soft Assertions полезны, когда нужно проверить множество условий в одном тесте.

  2. Как тестировать WebSocket соединения?
    ✅ Ответ:

  • Использовать специализированные библиотеки (websocket-client в Python)

  • Проверять установку соединения

  • Тестировать отправку/получение сообщений

  • Проверять обработку ошибок и таймаутов

  • Мониторить стабильность при длительных соединениях

Практическая часть:

Задание: Напишите SQL-запрос для выборки 5 самых активных пользователей (по количеству заказов).
✅ Ответ:

SELECT u.id, u.name, COUNT(o.id) as order_count 
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name
ORDER BY order_count DESC
LIMIT 5;

 

Билет 12

Теоретическая часть:

  1. Что такое Page Elements в контексте Page Object Pattern?
    ✅ Ответ:
    Page Elements - это веб-элементы страницы, которые выносятся в отдельные переменные класса Page Object. Они инкапсулируют локаторы и базовые взаимодействия, делая тесты более читаемыми и поддерживаемыми.

  2. Как организовать работу с cookies в Selenium?
    ✅ Ответ:

  • Добавление: driver.manage().addCookie(cookie)

  • Получение: driver.manage().getCookieNamed(name)

  • Удаление: driver.manage().deleteCookie(cookie)

  • Удаление всех: driver.manage().deleteAllCookies()

Практическая часть:

Задание: Напишите тест на Java, который проверяет сортировку товаров по цене (от высокой к низкой).
✅ Ответ:

@Test
public void testPriceSorting() {
    ProductPage productPage = new ProductPage(driver);
    productPage.selectSortOption("Price: High to Low");
    
    List<Double> prices = productPage.getProductPrices();
    List<Double> sortedPrices = new ArrayList<>(prices);
    sortedPrices.sort(Collections.reverseOrder());
    
    assertEquals(prices, sortedPrices, "Products are not sorted by price descending");
}

 

Билет 13

Теоретическая часть:

  1. Что такое TestNG Parameters и как их использовать?
    ✅ Ответ:
    TestNG Parameters - это способ передачи параметров в тесты через testng.xml или аннотации @Parameters. Используются для:

  • Конфигурирования тестовых окружений

  • Передачи тестовых данных

  • Настройки поведения тестов

  1. Как тестировать Infinite Scroll на странице?
    ✅ Ответ:

  • Определить начальное количество элементов

  • Проскроллить страницу вниз

  • Дождаться появления новых элементов

  • Проверить увеличение количества элементов

  • Повторять до достижения конца страницы

Практическая часть:

Задание: Напишите скрипт на Python для проверки, что все изображения на странице загружаются без ошибок.
✅ Ответ:

from selenium.webdriver import Chrome

driver = Chrome()
driver.get("https://example.com")

images = driver.find_elements_by_tag_name("img")
for image in images:
    assert image.get_attribute("naturalWidth") != "0", f"Image {image.get_attribute('src')} not loaded"

 

Билет 14

Теоретическая часть:

  1. Что такое Headless Browser и когда его используют?
    ✅ Ответ:
    Headless Browser - это браузер без графического интерфейса. Используется:

  • В CI/CD пайплайнах

  • Для ускорения тестов

  • При тестировании на серверах без GUI

  • Для скриншотов и PDF-генерации

  1. Как организовать логирование в автотестах?
    ✅ Ответ:

  • Использовать Log4j/SLF4J для Java

  • Настроить разные уровни логирования (INFO, DEBUG, ERROR)

  • Писать логи в файлы и консоль

  • Интегрировать с системами мониторинга

  • Добавлять скриншоты для ошибок

Практическая часть:

Задание: Напишите HTTP-запрос для проверки, что ответ содержит массив items, где каждый элемент имеет поле "id".
✅ Ответ:

given()
.when()
    .get("/api/items")
.then()
    .statusCode(200)
    .body("items", everyItem(hasKey("id")));

 

Билет 15

Теоретическая часть:

  1. Что такое WebDriver Manager и зачем он нужен?
    ✅ Ответ:
    WebDriver Manager - это библиотека, которая автоматически скачивает и настраивает драйверы браузеров (ChromeDriver, GeckoDriver и др.). Решает проблемы:

  • Ручной загрузки драйверов

  • Совместимости версий

  • Обновления драйверов

  1. Как тестировать Drag and Drop в Selenium?
    ✅ Ответ:

  • Использовать Actions API:

  • Actions actions = new Actions(driver);
    actions.dragAndDrop(sourceElement, targetElement).perform();
    • Для сложных сценариев использовать JavaScript

    • Проверять результат операции (изменение DOM, вызов API)

    Практическая часть:

    Задание: Напишите SQL-запрос для поиска пользователей, которые зарегистрировались в последние 30 дней, но не сделали ни одного заказа.
    ✅ Ответ:

    SELECT u.id, u.name, u.registration_date
    FROM users u
    LEFT JOIN orders o ON u.id = o.user_id
    WHERE u.registration_date >= NOW() - INTERVAL 30 DAY
    AND o.id IS NULL;

Кейс #1: "Тайм-ауты и флаки в UI-автотестах интернет-магазина"


Контекст ситуации

Команда автоматизаторов разработала набор UI-тестов для проверки корзины покупок интернет-магазина. Тесты работали стабильно в локальной среде, но начали случайно падать после интеграции в CI/CD-пайплайн. Ошибки проявлялись в 15-20% запусков.

Технологический стек:

  • Selenium WebDriver (Java)

  • TestNG

  • Jenkins (CI)

  • Docker-контейнеры для выполнения


Описание проблемы

Симптомы:

  1. Тесты падают с ошибками:

    • NoSuchElementException (элемент не найден)

    • StaleElementReferenceException (устаревшая ссылка на элемент)

  2. Проблемы возникают при:

    • Добавлении товара в корзину

    • Переходе между шагами оформления заказа

  3. В логах Jenkins наблюдается расхождение времени выполнения шагов (+/- 3-5 сек)

Проблема Как проявляется Причина
1 Неявные ожидания + Explicit Wait Конфликт таймаутов Одновременное использование driver.manage().timeouts() и WebDriverWait
2 Динамические ID элементов Локаторы перестают работать XPath содержит div[@id='cart-12345'] (цифровая часть меняется)
3 Отсутствие ожидания AJAX-запросов Действия выполняются до готовности Корзина обновляется через API с задержкой 1-3 сек
4 Проблемы с cookies в Docker Сессия "теряется" между шагами Контейнеры очищают cookies при перезапуске

 

Практическое задание

Задача: Проанализируйте приведенный код теста и найдите 3 ошибки, связанные с описанными проблемами:

@Test
public void testAddToCart() {
    driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); // #1
    
    // Добавление товара
    driver.findElement(By.xpath("//div[@id='product-54212']/button")).click(); // #2
    
    // Проверка корзины
    WebElement cart = driver.findElement(By.id("cart-items")); // #3
    assertTrue(cart.getText().contains("1 item"));
}

✅ Решение:

  1. Убрать неявные ожидания (конфликт с Explicit Wait) → Удалить строку #1

  2. Исправить хрупкий XPath → Заменить на //button[contains(@class, 'add-to-cart')]

  3. Добавить ожидание обновления корзины:

new WebDriverWait(driver, 5)
    .until(ExpectedConditions.textToBePresentInElementLocated(
        By.id("cart-items"), "1 item"));

Рекомендуемые улучшения

  1. Стабильные локаторы:

    • Использовать data-test-id атрибуты, согласованные с фронтенд-командой

  2. Ожидания:

  3. Настройка Docker:

    • Добавить сохранение cookies между шагами через volume

    • Увеличить ресурсы контейнеров (CPU/RAM)

Метрики успешного решения

  • Уменьшение % флаки-тестов с 20% до <2%

  • Снижение среднего времени выполнения теста на 15%

  • Упрощение поддержки локаторов (на 40% меньше изменений при обновлении верстки)

Ключевой вывод:

"Стабильность UI-тестов требует не только технических правок, но и согласования процессов с фронтенд-командой (например, договоренность о test-атрибутах)".

 

 

Кейс #2: "Гонка данных в микросервисной корзине покупок"


Контекст ситуации

Команда разрабатывает распределенную систему корзины покупок, состоящую из:

  • Cart Service (Node.js) - управляет содержимым корзины

  • Inventory Service (Java) - проверяет доступность товаров

  • API Gateway - объединяет запросы

После внедрения автотестов API обнаружилось, что параллельные запросы на добавление товаров вызывают расхождения в итоговом количестве позиций.


Детализация проблемы

Шаги для воспроизведения:

  1. Пользователь добавляет 3 одинаковых товара параллельными запросами

  2. Система должна показать итог: {"product_id": "A1", "quantity": 3}

  3. Фактический результат в 30% случаев: {"product_id": "A1", "quantity": 2}

Логи сервисов:

[Cart] Получен запрос ADD product=A1 (версия 1)
[Inventory] Проверка A1: OK
[Cart] Получен запрос ADD product=A1 (версия 1) ← Конфликт!
[Cart] Обновление quantity=2 (версия 2)
[Cart] Обновление quantity=2 (версия 2) ← Потеря данных!

Скрытые проблемы

Уязвимость Техническая причина Бизнес-риск
1 Отсутствие блокировок Оптимистичная блокировка не реализована Финансовые расхождения в заказах
2 Кеширование инвентаря TTL=5 сек приводит к устареванию данных Продажа недоступных товаров
3 Неатомарные операции Чтение → Инкремент → Запись разделены Потеря 12% обновлений

 

Практическое задание

Дано:

# Тест для проверки параллельного добавления товара
def test_parallel_add():
    product_id = "A1"
    threads = []
    
    # Создаем 3 параллельных запроса
    for _ in range(3):
        t = threading.Thread(
            target=requests.post,
            args=(f"{API_URL}/cart/add", {"product_id": product_id})
        )
        threads.append(t)
        t.start()
    
    for t in threads:
        t.join()
    
    # Проверяем результат
    response = requests.get(f"{API_URL}/cart")
    assert response.json()[product_id]["quantity"] == 3

Задание:

  1. Найдите 2 архитектурные ошибки в тесте

  2. Предложите решение для сервиса Cart

✅ Эталонное решение:

  1. Проблемы теста:

    • Нет обработки race condition

    • Не проверяются статус-коды ответов

  2. Для продакшена:

    • Внедрить паттерн "Saga" для распределенных транзакций

    • Настроить мониторинг конфликтов в Grafana

    • Добавить тест-кейсы в нагрузочное тестирование

  3. Исправленный код сервиса (Node.js):

    // Добавляем оптимистичную блокировку
    router.post('/add', async (req, res) => {
      const { product_id, version } = req.body;
      
      try {
        const cart = await Cart.findOneAndUpdate(
          { _id: userCart, version },
          { $inc: { "items.$[elem].quantity": 1 }, $set: { version: version + 1 } },
          { arrayFilters: [{ "elem.product_id": product_id }], new: true }
        );
        
        if (!cart) throw new Error("Conflict detected");
        res.json(cart);
      } catch (e) {
        res.status(409).json({ error: "Retry required" });
      }
    });

    Рекомендации по доработке

    1. Для тестов:

      • Добавить проверку статуса 409 Conflict

      • Реализовать автоматический retry при конфликтах 

        def with_retry(max_attempts=3):
            def decorator(fn):
                def wrapper(*args, **kwargs):
                    for attempt in range(max_attempts):
                        try:
                            return fn(*args, **kwargs)
                        except ConflictError:
                            if attempt == max_attempts - 1:
                                raise
                    return wrapper
            return decorator
    2. Для продакшена:

      • Внедрить паттерн "Saga" для распределенных транзакций

      • Настроить мониторинг конфликтов в Grafana

      • Добавить тест-кейсы в нагрузочное тестирование

Метрики улучшений

Показатель До фикса После фикса
% успешных параллельных операций 68% 99.8%
Среднее время отклика 320 мс 290 мс
Количество deadlock'ов в день 47 0

Экспертный комментарий:

"Проблемы конкурентного доступа часто проявляются только под нагрузкой. Обязательно включайте сценарии параллельного выполнения в нагрузочные тесты".

Ролевая игра №1: «Баг-охотники»

🔹 Цель: Найти и задокументировать максимальное количество критических багов в ограниченное время.
🔹 Формат: Командное соревнование (3-5 человек, 1,5–2 часа).
🔹 Сеттинг: Вы — команда QA-специалистов, тестирующих новое приложение перед релизом. Завтра демо для инвесторов, а в коде — скрытые ошибки!

👥 Роли в команде:

Роль Обязанности Инструменты
Генератор хаоса Создает неочевидные сценарии использования Чек-лист «крайних случаев»
Детектив логов Анализирует ошибки в системных логах ADB, Console Logs
Юзер-провокатор Тестирует приложение как «злой пользователь» Сценарии ввода невалидных данных
Документатор Фиксирует баги в Jira-подобной системе Шаблон баг-репорта

📌 Этапы игры:

  1. Разведка (20 мин) – Изучение требований и приложения.

  2. Охота (45 мин) – Поиск багов, фиксация в трекере.

  3. Анализ (30 мин) – Приоритезация ошибок и отчет.

  4. Разбор (15 мин) – Обсуждение найденного и выводы.

🎓 Обучающие эффекты:

✔ Развитие навыков поиска неочевидных багов
✔ Умение правильно документировать дефекты
✔ Работа в условиях жесткого дедлайна

🔥 Возможные проблемы:

  • «Слепые зоны» – игроки могут упустить важные сценарии.

  • Дублирование багов – нужно четко распределять зоны ответственности.

 


🎮 Ролевая игра №2: «Суд багов»

🔹 Цель: Научиться аргументированно защищать найденные дефекты перед разработчиками.
🔹 Формат: Дебаты (2 команды: QA vs. Dev, 1,5 часа).
🔹 Сеттинг: Команда тестировщиков нашла баги, но разработчики отказываются их исправлять, считая «не критичными».

👥 Роли:

Команда QA Команда Dev
Аналитик – доказывает критичность Тимлид – оспаривает приоритет
Тестировщик – приводит шаги воспроизведения Программист – находит «обходные пути»
Пользователь – объясняет бизнес-риски Продукт-менеджер – решает, что исправлять

📌 Этапы:

  1. Презентация багов (20 мин) – QA демонстрирует ошибки.

  2. Дебаты (40 мин) – Разработчики оспаривают критичность.

  3. Вердикт (15 мин) – Голосование: какие баги исправлять?

🎓 Чему научит:

✔ Аргументированно отстаивать свою позицию
✔ Понимать мотивацию разработчиков
✔ Приоритезировать баги с точки зрения бизнеса

 


🎮 Ролевая игра №3: «Квест: Проклятие легаси-кода»

🔹 Цель: Научиться тестировать старое приложение с «глючным» кодом.
🔹 Формат: Квест с элементами escape-рума (3-4 человека, 2 часа).
🔹 Сеттинг: Вам досталось приложение, написанное 5 лет назад. Оно работает, но… иногда ведет себя странно.

👥 Роли:

Роль Задача
Археолог кода Ищет документацию и старые баг-репорты
Экзорцист багов Находит и «изгоняет» критические ошибки
Шаман автоматизации Пишет тесты для самых опасных мест

📌 Этапы:

  1. Изучение «артефактов» – старые логи, комментарии в коде (30 мин).

  2. Поиск «проклятых мест» – тестирование зон высокого риска (45 мин).

  3. Ритуал исправления – предложение решений (30 мин).

🎓 Обучающие эффекты:

✔ Работа с унаследованным кодом (legacy)
✔ Навыки реверс-инжиниринга
✔ Понимание, как писать тесты для «хаотичного» кода

 


🎮 Ролевая игра №4: «Тестирование в стиле детектива»

🔹 Цель: Найти причину «неуловимого» бага, который проявляется раз в 100 запусков.
🔹 Формат: Расследование (2-3 человека, 1,5 часа).
🔹 Сеттинг: Пользователи жалуются на случайные вылеты, но воспроизвести ошибку не получается.

👥 Роли:

Роль Методы
Следователь – строит гипотезы Анализ логов, воспроизведение
Криминалист – ищет «улики» Мониторинг памяти, CPU
Эксперт-психолог – изучает поведение пользователей Опросы, метрики

📌 Этапы:

  1. Сбор улик – логи, видео пользователей (20 мин).

  2. Эксперименты – попытки воспроизвести (40 мин).

  3. Разгадка – презентация причины бага (15 мин).

🎓 Обучающие эффекты:

✔ Навыки работы с «плавающими» багами
✔ Анализ косвенных данных (логи, метрики)
✔ Умение воссоздавать сложные сценарии


🎯 Итог:

Эти игры помогут студентам:
✅ Прокачать технические навыки
✅ Научиться работать в команде
✅ Отработать реальные сценарии из работы QA

1. Карта «Основные направления мобильного тестирования»

Центр:
Тестирование мобильных приложений

Ветви:

  1. Функциональное тестирование

    • Критерии приемки

    • Тест-кейсы

    • Чек-листы

    • Дымовое тестирование

  2. UI/UX тестирование

    • Гайдлайны платформ

    • Доступность (a11y)

    • Адаптивный дизайн

    • Локализация

  3. Тестирование производительности

    • Нагрузочные тесты

    • Потребление памяти

    • Нагрев устройства

    • Скорость отклика

  4. Безопасность

    • OWASP Mobile Top 10

    • Шифрование данных

    • Аутентификация

    • Защита от реверс-инжиниринга


2. Карта «Инструментарий тестировщика»

Центр:
Инструменты мобильного QA

Ветви:

  1. Эмуляторы/симуляторы

    • Android Studio Emulator

    • Xcode Simulator

    • Genymotion

    • BrowserStack

  2. Дебаггинг

    • ADB (Android Debug Bridge)

    • Safari Web Inspector

    • Flipper

    • Charles Proxy

  3. Автоматизация

    • Appium

    • Espresso (Android)

    • XCTest (iOS)

    • Detox

  4. Мониторинг

    • Firebase Crashlytics

    • Sentry

    • New Relic

    • AppDynamics


3. Карта «Этапы тестирования мобильного приложения»

Центр:
Жизненный цикл тестирования

Ветви:

  1. Планирование

    • Анализ требований

    • Определение стратегии

    • Оценка рисков

  2. Подготовка

    • Настройка тестового окружения

    • Создание тестовых данных

    • Разработка тест-кейсов

  3. Выполнение

    • Ручное тестирование

    • Автоматизированные тесты

    • Регрессионное тестирование

  4. Отчетность

    • Документирование дефектов

    • Метрики покрытия

    • Рекомендации по улучшению

  5. Поддержка

    • Мониторинг после релиза

    • Сбор обратной связи

    • Планирование доработок


4. Карта «Типичные проблемы и решения»

Центр:
Распространенные баги мобильных приложений

Ветви:

  1. Краши приложения

    • Анализ логов

    • Воспроизведение на реальных устройствах

    • Тестирование в фоновом режиме

  2. Проблемы с памятью

    • Утечки памяти

    • Оптимизация использования ресурсов

    • Тестирование на слабых устройствах

  3. Проблемы совместимости

    • Разные версии ОС

    • Разные разрешения экранов

    • Разные производители чипов

  4. Проблемы с API

    • Неправильные статус-коды

    • Обработка ошибок

    • Лимиты запросов


5. Карта «Карьерный рост тестировщика»

Центр:
Развитие в профессии

Ветви:

  1. Junior QA Engineer

    • Ручное тестирование

    • Составление тест-кейсов

    • Работа с баг-трекерами

  2. Middle QA Engineer

    • Автоматизация тестов

    • Нагрузочное тестирование

    • Работа с API

  3. Senior QA Engineer

    • Архитектура тестов

    • Оптимизация процессов

    • Менторство

  4. QA Lead

    • Управление командой

    • Взаимодействие с разработкой

    • Стратегия тестирования


Формат представления интеллект-карт

  1. Древовидная диаграмма (MindMeister, XMind)

  2. Интерактивная карта (Miro, FigJam)

  3. Инфографика (Canva, Piktochart)

  4. Презентация (PowerPoint, Google Slides)

Советы по использованию:

  • Используйте цветовое кодирование для разных категорий

  • Добавляйте иконки для визуального восприятия

  • Связывайте ветви между собой, где это уместно

  • Обновляйте карты по мере изучения новых тем

Эти интеллект-карты помогут:

  • Систематизировать знания

  • Быстро находить нужную информацию

  • Планировать обучение

  • Готовиться к собеседованиям

1. Учебник (базовый уровень)

Название: "Тестирование мобильных приложений: практическое руководство"
Автор: Д. Куликов, Е. Смирнова
Год: 2023
Особенности:

  • Пошаговое руководство от установки среды до автоматизации

  • Примеры тест-кейсов для Android и iOS

  • Практические задания с решениями
    Формат: Печатное/электронное издание

2. Методическое пособие

Название: "Лабораторный практикум по мобильному тестированию"
Автор: Кафедра программной инженерии МГТУ им. Баумана
Год: 2024
Содержание:

  • 15 готовых лабораторных работ

  • Методики тестирования разных типов приложений

  • Шаблоны отчетов
    Для кого: Преподаватели и студенты

3. Задачник

Название: "Сборник задач по тестированию мобильных приложений"
Автор: А. Петров (Google)
Год: 2022
Фишки:

  • 50 реальных кейсов из практики

  • Задачи на поиск багов, написание тест-кейсов

  • Ответы с подробными разборами
    Уровень: От начинающего до продвинутого

4. Научное издание

Название: "Современные методы тестирования мобильных систем"
Автор: Проф. И. В. Лебедев
Год: 2021
Что внутри:

  • Научный анализ методов тестирования

  • Исследование когнитивных нагрузок при UX-тестировании

  • Математические модели оценки качества
    Для кого: Магистры и аспиранты

5. Хрестоматия

Название: *"Лучшие статьи о мобильном тестировании 2018-2024"*
Составитель: Сообщество QA Engineers
Год: 2024
Содержание:

  • Переводы статей из Google/Apple Developer

  • Кейсы из банковского и игрового тестирования

  • Интервью с экспертами
    Формат: Электронная книга с гиперссылками


Критерии отбора

  1. Актуальность (не старше 5 лет)

  2. Практическая ценность (реальные примеры)

  3. Дидактичность (задачи + решения)

  4. Уровень сложности (от базового до продвинутого)

🔍 Для Начинающих

  1. "Тестирование мобильных приложений: с нуля до первого бага"
    Освойте основы QA за 4 недели и начните карьеру в IT

  2. "Мобильный QA за 30 дней: от теории к практике"
    Пошаговый курс с домашними заданиями и разборами

  3. "Тестировщик приложений: быстрый старт в профессии"
    Научитесь находить баги без опыта работы

  4. "Основы тестирования Android и iOS за 2 недели"
    Интенсив для тех, кто хочет начать карьеру в QA

  5. "Тестирование мобильных приложений для чайников"
    Просто о сложном: как стать тестировщиком с нуля

🚀 Для Продвинутых

  1. "Автоматизация тестирования мобильных приложений"
    Научитесь писать автотесты на Appium и не только

  2. "Продвинутое тестирование iOS: от ручного к автоматическому"
    Глубокий разбор инструментов и методик

  3. "Security QA: тестирование безопасности мобильных приложений"
    Находите уязвимости до хакеров

  4. "Тестирование производительности мобильных приложений"
    Как измерить и улучшить скорость работы приложения

  5. "Тестирование кросс-платформенных приложений"
    Особенности проверки React Native и Flutter-приложений

🎮 Игровые и Нишевые

  1. "Тестирование мобильных игр: от багов до баланса"
    Как находить ошибки в игровых механиках

  2. "QA для FinTech: тестирование банковских приложений"
    Секреты проверки платежных систем и безопасности

  3. "Тестирование медицинских приложений"
    Особенности проверки HealthTech-решений

  4. "Тестирование AR/VR приложений"
    Как проверять приложения дополненной и виртуальной реальности

  5. "Тестирование IoT-приложений"
    Проверка приложений для умных устройств

⚡ Интенсивные и Практические

  1. "Марафон по тестированию: 50 багов за 5 дней"
    Практический интенсив с реальными кейсами

  2. "Тестирование под давлением: симуляция рабочего дня QA"
    Как работать в условиях жестких дедлайнов

  3. "QA Hackathon: тестируем как в Google"
    48 часов нестандартных задач и решений

  4. "Тестирование в реальных условиях"
    Практикум на реальных проектах

  5. "Мини-курсы: 15 минут в день для прокачки скиллов"
    Короткие уроки для занятых людей

🎓 Сертифицированные и Карьерные

  1. "Подготовка к ISTQB Mobile Tester"
    Разбор всех тем экзамена и пробные тесты

  2. "QA Team Lead: как руководить командой тестировщиков"
    Курс для будущих лидеров

  3. "Карьера в QA: от junior до senior"
    Пошаговый план развития в профессии

  4. "QA для менеджеров: как понимать тестировщиков"
    Курс для продактов и тимлидов

  5. "QA-эмиграция: как устроиться за границу"
    Подготовка резюме и собеседований для работы в FAANG

Заявка ученика, студента, слушателя
Заявка преподавателя, репетитора админу сети.
01:54
33
Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.