Принятие решений для
тестировщика
Шейко Роман
1
О себе
•
Шейко Роман
•
Работаю в Luxoft, QA Lead
•
Веду блог 33testers.blogspot.ru
•
Веду сессии Weekend Testing Russia
2
Решения, которые мы принимаем
3
Уровень
решения
Пример
Частота
принятия
решения
Важность
решения
Низкий
уровень
•
Баг или фича?
•
Как локализовать баг?
Каждый
день
Средняя
Средний
уровень
•
Какую технику тестирования выбрать?
•
Как тестировать конкретный релиз?
•
Как оценить покрытие?
Несколько
раз в месяц
Высокая
Высокий
уровень
•
Когда закончить тестирование?
•
Какую стратегию тестирования выбрать?
•
Какие люди нужны в команде?
Несколько
раз в год
Критичная
Сложность принятия решений
•
Количество пользователей
↑
•
Количество платформ
↑
•
Сложность архитектуры
↑
•
Сложность условий разработки
↑
Все это приводит к тому, что сложность
продуктов растет нелинейно
4
Крестики нолики vs Шахматы
5
Материалы:
Gerald M. Weinberg . Quality Software Management: Systems
Thinking
Что делать тестировщикам?
1.
Упрощать продукты
2.
Работать в компаниях, где
разрабатываются простые продукты
3.
Нанимать больше тестировщиков
4.
Развивать наши скилы, в том числе и в
принятии решений
6
Материалы:
Блог Алана Пейджа:
http://angryweasel.com/blog/will-we-
survive-the-future-of-software/
План доклада
1.
Подход к принятию решений
2.
Эвристики
3.
Составление тестовой стратегии
4.
Summary
7
Подход к принятию решений
8
Шаги
Детали
1. Изучение текущей
ситуации
•
Сбор информации о текущем состоянии
•
Выяснение причин (в случае решения проблемы)
•
Нахождение границ решения
2. Анализ желаемой
ситуации
•
Чего мы хотим достигнуть?
•
Что нам мешает?
3. Генерация
альтернатив
•
Какие варианты решений у нас есть?
4. Выбор альтернативы
•
Какие критерии для нас важны?
•
Как взвесить альтернативы? Как выбрать из них одну?
5. Оценка выбранной
альтернативы
•
Какие последствия могут быть у принятого решения?
•
Как можно минимизировать риски?
6. Презентация решения
•
Как обосновать решение?
•
Как презентовать его?
Материалы:
Charles Higgins Kepner, Benjamin B. Tregoe. The New Rational
Manager
Эвристики
•
Эвристики – это хинты (подсказки,
направляющие идеи), которые помогают нам
принимать решения.
•
Характерные черты:
(+)
Эвристики часто интуитивны
(+)
Легкие и недорогостоящие
(-)
Подвержены ошибкам и субъективны
•
Примеры эвристик в тестировании:
–
Оракулы
–
HTSM (Heuristic Test Strategy Model)
–
Многие многие другие..
9
Пример: составление тестовой
стратегии
•
Сайт: www.lumosity.com
•
Задача: Составить стратегию тестирования
•
Шаги выполнения задачи:
1.
Изучение контекста
2.
Анализ
3.
Принятие решений
4.
Презентация для стейкхолдеров
10
11
Стратегия составления тестовой стратегии
12
Соответствие HTSM и Flower HTSM
Heuristic Test Strategy
Model (HTSM) by James
Bach
Flower
Heuristic Test Strategy
Model (FHTSM)
Шаги составления стратегии
13
1. Изучение контекста
и продукта
2. Анализ собранной
информации
3. Принятие решений,
формирующих тестовую
стратегию
1. Изучение контекста и продукта
•
Провёл 3 сессии изучения:
–
Поверхностное знакомство
–
Погружение
–
Исследование открытых ресурсов
•
В качестве фреймворка по изучению
использовалась:
–
Heuristic Test Strategy Model – разделы Product
Elements и Project Environment
14
Поверхностное знакомство: заметки
15
•
Более 70 млн пользователей, 180
стран
•
Full access требуется в большей части
функционала (около 90%)
•
Есть разные методы оплаты
•
Оплата - по картам, есть возврат
•
Особенности gamification движка :
показатели, следующие шаги,
календарь на ближайшие дни, график
развития, метрики
•
Можно настроить конфигурацию
обучения
•
Можно настроить приоритеты
обучения
•
Есть страничка статистики
•
Как выглядит движок одной игры
•
В наборе игр - около 40
•
Следующая
игра – у нее другой
движок. Интересная игра, кстати
•
Еще одна крутая игра, опять новый
движок
•
Есть результаты сравнения с другими
людьми – по прохождению игр
•
На сайте есть список вакансий
•
В описании вакансии тестера:
тестирование Web, iOS, Android,
работа с командой разработки для
автоматизации тестирования
•
На сайте есть раздел Библиографии
со списком документов
Погружение: заметки
16
•
Есть возможность пригласить друзей по почте (маловато как-то
социализации)
•
Есть научный раздел с обоснованием продукта с научной точки
зрения
•
Есть Engineering blog (круто!)
•
Код доступен в github
•
Основа продукта – на Ruby on Rails
•
Есть свой стиль написания кода
•
Была проблема – билды собирались долго
•
Своя система общения с пользователями по e-mail
•
Сложный процесс деплоя
•
Используется Continuous Integration
•
QA тестируют продукт на разных бранчах кода
Исследование открытых ресурсов:
заметки
•
В официальном twitter: sorry for the trouble – встречается
довольно часто
•
Сайт доступен на нескольких языках: английский, немецкий,
испанский
•
В 2013 в компании было 90 сотрудников
•
Более 50 миллионов пользователей
•
Некоторые исследования показали эффективность
игр lumosity,
некоторые - нет
•
В контакте продают места в семейном аккаунте :)
•
Семейный - самый дешевый вариант подписки
•
Бесплатно можно играть в не более трех игр в день
•
Инвестиции в компанию – регулярные, большие (последняя -
$30 млн)
17
Результаты изучения контекста и
продукта
18
•
Более 70 млн юзеров в 180 странах
•
В команде около 100 человек
•
Продукт получает регулярные большие инвестиции
•
Довольно много жалоб на продукт на фейсбуке
•
Пользователи экономят, используя семейные аккаунты
•
Продукт построен на Ruby on Rails
•
Есть Continuos integration
•
Код открыт – в github
•
Поддержка 3 языков
•
Мобильные приложения
•
Множество игр со своими
движками
•
Статистика
•
Программа тренировок
•
Закрытый / открытый
контент
•
Своя почтовая система
•
Оплата
•
Библиотека статей /
материалов
Выводы по изучению контекста и
продукта
•
Очень важный этап, на основе него мы будем действовать дальше
•
Какие решения принимались:
–
Решений было не много, у меня было что-то вроде готового
алгоритма
–
Несколько эвристик я применял:
•
HTSM – для структурирования заметок
•
Туры – для сбора информации и фокусировки
•
Я прежде всего обращал внимание на вещи, способные
повлиять на скоуп и стратегию тестирования
•
Эвристика «Покажи на рисунке, чтобы было понятнее»
•
Советы:
–
При сборе информации полезно фокусироваться (HTSM может
помочь)
–
Используйте любые доступные источники
19
20
2. Анализ собранной информации
•
Увеличение числа
пользователей
•
Расширение контента
•
Поддержка новых платформ
(мобилки, браузеры)
•
Монетизация
•
Продвижение идеи развития
мозга и его тренировок
•
Поддержка огромного числа
пользователей
•
Огромное число платформ
•
Разные локализации
•
Расширение контента
•
Усложнение контента
•
Частые релизы
•
Поддержка 24*7
21
2. Анализ собранной информации
•
Функциональная
полнота
•
Харизма
•
Расширяемость
•
Нагрузоустойчивость
•
Быстродействие
•
Юзабилити
•
Безопасность
•
Суппортабилити
•
Много платформ
•
Несколько локализаций
•
Много различных конфигураций
•
Частые релизы
•
У каждой игры – свой движок
•
Как протестировать интересность
игр?
Выводы по анализу собранной
информации
•
Важный этап, который также упрощает принятие
решений по тестовой стратегии
•
Полезно сформулировать основные вещи, которые
влияют на тестовую стратегию:
–
Бизнес цели компании
–
Трудности и проблемы при достижении этих целей
–
Критерии качества с их приоритетами
–
Крупные проблемы и трудности - с точки зрения
тестирования
•
Советы:
–
Если вам не достает информации – вернитесь к
предыдущему шагу и получите её
22
Какие решения нам нужно принять?
•
Какие техники тестирования мы будем использовать
•
И многие другие высокоуровневые решения:
–
По Инструментам
–
По Автоматизации
–
По Команде
–
По отчетности
–
По взаимодействию с командой разработки
–
По необходимым скилам
–
По роли команды тестирования
–
…
23
3. Принятие решений,
формирующих тестовую стратегию
Техники тестирования
24
Каждый релиз (1 приоритет):
•
Функциональное тестирование
•
Регрессионное тестирование
Не каждый релиз (2 приоритет):
•
Локализации
•
Перфоманс
•
Нагрузочное тестирование
•
езопасность
Только для крупных релизов (3 приоритет):
•
Бета тестирование
•
Краудсорс тестирование
•
Адаптационное тестирование
•
Функциональное и
регрессионное
тестирование – внутри
•
Другие виды – можно на
outsource
•
Цель - автоматизировать
большую часть регрессии
•
Разделить тесты по
приоритетам запуска
•
Технология: Selenium
Другие решения
25
•
Bug tracker: JIRA
•
TCM: HP ALM
•
…
•
Прежде всего -
охотники за
багами
•
Потом - quality
control
•
Тестирование веба и
мобилок
•
Опыт тестирования игр
•
Скриптовые языки
•
Если возможно, то в
одной локации (на
первое время)
•
Ежедневные
обновления статуса
тестирования на
Confluence
•
Каждую неделю –
сводный отчет по e-mail
•
Dashboards в JIRA
•
6 ручных
тестировщиков
•
2 тестера-
автоматизатора
Взвешивание альтернатив
•
Для важных решений стоит применять
матрицу взвешивания альтернатив (подход
Кепнера и Трего)
•
Как им пользоваться:
1.
Приготовить список альтернатив
2.
Составить must и nice-to-have критерии
3.
Для nice-to-have – расставить важность каждого
критерия
4.
Взвесить альтернативы по nice-to-have критериям
5.
Выбрать «лучшую» альтернативу из возможных
26
Взвешивание альтернатив
Критерий
Важн
ость
Вариант 1:
Outsource
тестирование
Вариант 2:
Внутреннее
тестирование
Вариант 3:
Внутреннее +
outsource
Уровень коммуникаций
4
3
5
4
Тесная интеграция
тестеров в Scrum
команде
5
1
5
3
Стоимость
тестирования
3
5
2
4
Качество тестирования
7
3
5
4
Всего:
53 (3*4 + 1*5 +
5*3 + 3*7)
90
71
27
Дополнительно: презентация
стратегии для стейкхолдеров
1.
Рассказать о всем процессе принятия
решений
2.
Показать выгоды для компании, связанные
с
принятием данной стратегии
тестирования
3.
Быть готовым обосновать каждое решение
логически, даже если оно принималось
нами интуитивно
28
Выводы по принятию решений при
формировании стратегии
•
Какие методы использовались:
–
Эвристики, эвристики, эвристики
–
Матрица взвешивания альтернатив
•
Многие решения основывались на опыте
•
Советы:
–
Контролируйте свои склонности и интуицию
–
Оценивайте риски, связанные с принятыми
решениями
29
Summary
•
В рамках нашей каждодневной работы мы
пользуемся эвристиками
•
При своих плюсах (быстрота и интуитивность
использования) – они подвержены ошибкам
•
Для наиболее важных решений следует
использовать более структурные подходы
•
Пример – метод Кепнера и Трего
•
При составлении тестовой стратегии (как и в рамках
других задач) можно использовать массу методов
принятия решений:
–
Эвристики (HTSM, “Делай как раньше”, туры)
–
Матрицу взвешивания альтернатив (Кепнера и Трего)
30
Материалы
•
См. на слайдах
•
По эвристикам:
–
Книга: Пойа Д. - Как решать задачу. Пособие для
учителей.
–
http://www.developsense.com/blog/category/heuristics/
–
http://www.satisfice.com/blog/archives/category/heuristics
•
По тестовой стратегии:
–
http://satisfice.com/tools/htsm.pdf
–
http://33testers.blogspot.ru/2015/02/3.html
–
http://www.slideshare.net/EuroSTARConference/fiona-charles-slides
•
По подходу Кепнера и Трего:
–
Лучше прочитать
книгу
31
Дополнение: решения, которые я
принимал при подготовке доклада
•
Как выбрать скоуп
доклада?
•
Форма представления?
•
Картинки – их баланс
•
График подготовки – как
все распланировать
•
Какие эвристики я
использовал:
–
Делай, как раньше
–
Выбери практический
пример – это интереснее
–
Добавь видео (так
делает Джеймс Бах
)
–
Подкинь несколько
противоречивых фраз,
чтобы привлечь
внимание
–
Добавь юмора
–
Уложись во время, чтобы
ответить на вопросы
–
Побольше примеров из
жизни
–
Попроси проголосовать
за тебя – в конце
доклада
32
Вопросы?
33
Принятие решений в тестировании на примере тестовой стратегии