Принятие решений для тестировщика Шейко Роман 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