Современный контроль качества:
давай сделаем это по-быстрому…
Игорь Хрол
http://www.wargaming.net
http://www.khroliz.com
О себе
• Игорь Хрол
• БГУ ФПМИ
• QA Automation Team Lead в
Wargaming
• Восемь лет в отрасли
• Десятки проектов
• Инженер, тренер, консультант,
менеджер, докладчик
• Мой блог: http://ru.khroliz.com
О чём говорим?
О чём говорим?
• Что такое «контроль качества» сегодня?
• Почему это важно-сложно-интересно-…?
Основано на
личном
мироощущении
Начнём с проблем…
Начнём с проблем…
Скопировать идею очень легко
Копирование идей и их реализаций
Копирование идей и их реализаций
А при чём здесь тестирование?
Классическая модель разработки
Что в ней плохого?
Продукт
уже
реализован
Это еще полбеды…
Что происходит на длительных проектах?
Нельзя сделать всё «за раз»
Требования меняются
вместе с окружающим
миром
Будем делать по чуть-чуть!
• Итерация 1: функциональность #1
• Итерация 2: функциональность #2
• Итерация 3: функциональность #3
Требования на
следующую
итерацию
корректируются
А что в тестировании?
• Итерация 1: функциональность #1
• Итерация 2: функциональность #2
функциональность #1
• Итерация 3: функциональность #3
функциональность #2
функциональность #1
Тестирование тормозит новые версии
Каждый раз всё
больше и больше…
«Дорогое» тестирование не позволяет
делать короткие итерации
Регрессионная спираль смерти
Вариант 1
Нанять еще людей
Проблемы «Варианта 1»
• Требуется больше организационных усилий
• Не решает проблему в долгосрочной
перспективе
На этом можно
зарабатывать
Вариант 2
Автоматизация тестирования
Вместе с кодом продукта пишем код, который
тестирует продукт (автотесты)
Как ведут себя роботы?
Делают работу по тестированию, но
самостоятельно
Какие есть проблемы у роботов?
Немного о другом
0
1
2
3
4
5
6
7
8
9
1 2 3 4 5
Деньги
Время
Стоимость дефекта
Выводы
• Чем раньше нашли дефект, тем лучше
• Роботы-автотесты должны работать быстро
Как выглядят современные
системы?
Как выглядят современные
системы?
Модель задачи по тестированию
5 8 2 1 10
5 × 8 × 2 × 1 × 10 = 800
Модель задачи по тестированию
𝑉1 𝑉2 𝑉3 𝑉4 𝑉5
𝑉1 × 𝑉2 × 𝑉3 × 𝑉4 × 𝑉5
Сложность тестирования
𝑉1 𝑉2 𝑉3 … 𝑉𝑛
𝑖=1
𝑛
𝑉𝑖 ≈ 𝑉 𝑛
Сложность:
Экспоненциальная сложность
http://ru.wikipedia.org/wiki/Экспоненциальный_рост
Чёрный ящик = Экспонента
Автоматизация тестирования -
борьба с экспонентой
• Параллельные запуски не помогают
– 𝑚 – количество потоков
– Сложность:
𝑉 𝑛
𝑚
Разделяй и властвуй
Модель задачи по тестированию
5 8 2 1 10
5 × 8 × 2 × 1 × 10 = 800
5 + 8 + 2 + 1 + 10 = 26
26 + 4 + 1 = 31
Модель задачи по тестированию
5 8 2 1 10
800 vs 31
Модель задачи по тестированию
𝑉1 𝑉2 𝑉3 𝑉4 𝑉5
𝑉1 + 𝑉2 + 𝑉3 + 𝑉4 + 𝑉5 + 5
Сложность тестирования
𝑉1 𝑉2 𝑉3 … 𝑉𝑛
𝑖=1
𝑛
𝑉𝑖 + 𝑛 ≈ 𝑉 × 𝑛 + 𝑛
Сложность:
Сложность тестирования
𝑉1 𝑉2 𝑉3 … 𝑉𝑛
𝑽 𝒏
vs 𝒏𝑽
Пирамида автоматизации
UI
API
Unit Tests
Вариант 3
Автоматическое тестирование
1. Постепенный контроль качества на всех
этапах разработки
2. Декомпозиция сложных систем на
составляющие и проверка их по
отдельности
3. Разработка через тестирование (TDD)
Контроль качества на всех этапах
Декомпозиция
Разработка через тестирование
Разработка через тестирование
Разработка через тестирование
• Автотесты лежат на «критическом пути»
выпуска продукта
• Новая функциональность не выпускается
без автотестов
«У вас нет времени писать автотесты? А у
нас нет времени тестировать одно и то
же два раза»
Подводя итоги…
Современный контроль качества
• Максимально проводится автоматическими
средствами
• Требуется на всех уровнях архитектуры
системы
• Обеспечивается глубоким пониманием
технологий и бизнес-требований
Спасибо!
Вопросы?
Игорь Хрол
i_khrol@wargaming.net / khroliz@gmail.com
http://ru.khroliz.com

Cовременный контроль качества: давай сделаем это по-быстрому...

Editor's Notes

  • #30 Добавить эволюцию формул
  • #32 Кто знаком с понятием экспоненциальная сложность? То, на основе чего держится современная криптография, платежи…
  • #35 Мощности современных систем растут линейно
  • #44 Юнит тест – это самый маленький кусочек в декомпозиции. Вывод: чтобы писать эффективные тесты – нужно разобрать её на части. Уметь разбирать её на части, знать её изнутри. Для написания эффективных автоматических тестов нужны навыки разработчика.