Доклад Евгения Говако на конференции SQA Days-19, 20-21 мая 2016 г., Санкт-Петербург
1 of 21
More Related Content
Тестирование в изоляции: Играем в драконий покер
1. Deutsche Bank Technology Center, LLC
Deutsche Bank
Тестирование в изоляции:
играем в драконий покер
Евгений Говако
2. О себе
5/31/2016 11:42:15 AM 2010 DB Blue template
1
Евгений Говако
QA/FA/TA
Deutsche Bank RTC, St. Petersburg
• В QA с 2004 года
• QA Lead/Support Lead
• QMS Lead
• Test Automation
3. — Тестирование в изоляции
— Что это?
— Зачем это?
— Как это?
Overview
5/31/2016 11:42:15 AM 2010 DB Blue template
2
4. Что такое драконий покер?
5/31/2016 11:42:15 AM 2010 DB Blue template
3
Карточная игра с шестью
картами на руках
Выигрывает
лучшая
комбинация
Условные
модификаторы!
Без них драконий покер
был бы всего-навсего
еще одной простой
игрой.
5. Условные модификаторы
5/31/2016 2010 DB Blue template
4
— Количество сыгранных сдач
— День недели
— Число игроков
— Открытые Карты
— Положение стульев
- Но откуда у меня возьмется шанс
победить в этой игре? Я ж даже всех
правил-то не могу запомнить.
В.Скив
При определенных условиях могут изменить
выигрышный расклад на проигрышный
6. Условные модификаторы
5/31/2016 2010 DB Blue template
5
• Каждую пятую сдачу порядок старшинства карт меняется на обратный
• Драконы красной масти становятся “дикими” картами на четных сдачах
• Если среди открытых карт есть 10, все 7 считаются “мертвыми” и не
участвуют в раскладе
• Если появляется еще одна 10, предыдущее правило отменяется
• Если за игрой наблюдают зрители, 3ки считаются “мертвыми”
• Если название месяца не содержит “Р” и дата – двузначное число,
соответствующие карты меняются местами (26 августа – 2 становится
6 и наоборот)
Самая сложная и
запутанная игра
во всех мирах и
измерениях
В.Скив
7. Драконий покер – система в полной интеграции
5/31/2016 2010 DB Blue template
6
Card Dealer
UI
View
Action
Modifier #1
#4
#5
Modifier #2
Modifier #3
Poker
Table
Calculator
Шансов на победу
у тебя нет.
Тананда.
8. Изоляция модулей – Component testing
5/31/2016 2010 DB Blue template
7
Card Dealer
UI
View
Action
Modifier #1
#4
#5
Modifier #2
Modifier #3
Poker
Table
Calculator
Требуется усвоить не все
условные модификаторы - только
те, которые будут действовать
при твоей игре
Тананда.
9. Изоляция модулей – Component integration testing
5/31/2016 2010 DB Blue template
8
Card Dealer
UI
View
Action
Modifier #1
#4
#5
Modifier #2
Modifier #3
Poker
Table
Calculator
Это будет легче, чем если б
мы пытались обучить тебя
всей игре.
Тананда.
10. Изоляция модулей – UI testing
5/31/2016 2010 DB Blue template
9
Card Dealer
UI
View
Action
Modifier #1
#4
#5
Modifier #2
Modifier #3
Poker
Table
Calculator
Это будет легче, чем если б
мы пытались обучить тебя
всей игре.
Тананда.
11. Зачем тестировать в изоляции?
5/31/2016 11:42:15 AM 2010 DB Blue template
10
• Уменьшаем количество тестов
• Локализация проблемы
• Простая конфигурация окружения
• Сокращение времени тестов
12. — Заглушка (Stub)
— Моделирует типовые ответы на запросы
— Конфигурируемые заглушки
— Выбор поведения перед тестом
— Различные данные для разных тестов
— Симулятор модуля (Mock)
— Поведение, конфигурируемое программно (из автотестов)
— Проверка структуры запросов в API
— Управление данными в ответе на запрос
— Симулирование корнер-кейсов
Как заменить модуль?
5/31/2016 11:42:15 AM 2010 DB Blue template
11
13. — Заглушка (Stub)
— Невысокая стоимость
— Не должна повторять функциональность заменяемого модуля
— Smoke чеки, Performance
— Конфигурируемые заглушки
— Эволюция заглушки; невысокая стоимость
— Статические данные, общие для разных тестов
— Симулятор модуля (Mock)
— Может стоить дорого в зависимости от дизайна
— Необходимо глубокое погружение QA в архитектуру
— Функциональные автотесты на всех уровнях
— Усложняет рефакторинг
Преимущества и недостатки
5/31/2016 11:42:15 AM 2010 DB Blue template
12
14. — Знание и понимание архитектуры приложения
тестировщиками (white-box testing)
— Разработка архитектуры с учетом интересов
тестирования
— Тест-дизайн на всех уровнях тестирования
— Автоматизация на всех уровнях как часть стратегии
тестирования
С чего начать?
5/31/2016 11:42:15 AM 2010 DB Blue template
13
15. Тестируем Dragon Poker
5/31/2016 11:42:15 AM 2010 DB Blue template
14
• Каждую пятую сдачу порядок старшинства карт
меняется на обратный
• Сыграть 5+ партий, проанализировав результаты
исходя из того, какие карты будут на столе
• Сконфигурировать последовательность карт таким
способом, чтобы на 5й партии был ожидаемый
расклад, проверить победителя
• В симулированном модуле модификатора включить
«модификатор активен»
Stub vs Configurable stub vs Mock
16. Тестируем Dragon Poker
5/31/2016 11:42:15 AM 2010 DB Blue template
15
• Драконы красной масти становятся дикими
картами на четных сдачах
• Играть несколько партий, пока драконы красной
масти не выпадут на четной и нечетной сдаче
• Подготовить тестовые наборы карт для проверки
четной и нечетной сдачи
• В симулированном модуле модификатора включить
«модификатор активен»
Stub vs Configurable stub vs Mock
17. Тестируем Dragon Poker
5/31/2016 11:42:15 AM 2010 DB Blue template
16
• Если среди открытых карт есть 10, все 7
считаются «мертвыми» и не участвуют в раскладе
• Если появляется еще одна 10, предыдущее
правило отменяется
• Играть несколько партий, пока среди открытых не
попадется одна или несколько 10к
• Подготовить тестовые наборы карт для проверки
• Конфигурируя симулированный модуль выдачи
следующей карты, мы можем написать Data Driven
тест
Stub vs Configurable stub vs Mock
18. Тестируем Dragon Poker
5/31/2016 11:42:15 AM 2010 DB Blue template
17
• Если за игрой наблюдают зрители, 3ки считаются
«мертвыми»
• Сконфигурировать окружение без зрителей
• Сделать количество зрителей параметром настройки
• В симулированном модуле модификатора включить
«модификатор активен»
Stub vs Configurable stub vs Mock
19. Тестируем Dragon Poker
5/31/2016 11:42:15 AM 2010 DB Blue template
18
• Если название месяца не содержит «Р» и дата –
двузначное число, соответствующие карты
меняются местами (26 августа – 2 становится 6 и
наоборот)
• Запускать тесты по определенным дням или
использовать машину времени
• Установить текущую дату в подсистеме через
конфигурацию
• Установить текущую дату из автотеста
• В симулированном модуле модификатора включить
«модификатор активен»
Stub vs Configurable stub vs Mock
20. Q&A
5/31/2016 2010 DB Blue template
19
mailto: eugeny.govako@db.com
Skype: george.eager
21. Данный материал не является предложением или предоставлением какой-либо услуги. Данный материал
предназначен исключительно для информационных и иллюстративных целей и не предназначен для
распространения в рекламных целях. Любой анализ третьих сторон не предполагает какого-либо
одобрения или рекомендации. Мнения, выраженные в данном материале, являются актуальными на
текущий момент, появляются только в этом материале и могут быть изменены без предварительного
уведомления. Эта информация предоставляется с пониманием того, что в отношении материала,
предоставленного здесь, вы будете принимать самостоятельное решение в отношении любых действий в
связи с настоящим материалом, и это решение является основанным на вашем собственном суждении, и
что вы способны понять и оценить последствия этих действий. ООО "Дойче Банк Техцентр" не несет
никакой ответственности за любые убытки любого рода, относящихся к этому материалу.
20