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