Тестовая стратегия - продолжение |
19.03.2015 12:30 |
Автор: Роман Шейко. Оригинальная публикация в блоге автора Сегодня я хотел бы рассказать о создании стратегии для тестирования одного крупного сайта (http://lingualeo.com). Коротко: это онлайн-платформа для желающих изучить английский язык. Цель у меня такая: не показать результат, а в первую очередь рассказать о самом процессе составления стратегии. Мне было интересно проследить, как и что я делаю. Это напоминает работу над ошибками и самопроверку. Кроме того, это попытка объяснить свою работу. Не всегда это просто сделать, потому что часто мы работаем интуитивно. Для меня умение объяснить свою работу означает способность понять свои ошибки (что я делаю неправильно) и свои достижения (что я делаю правильно).
1. Хождение по сайту (блиц-экскурсия) Начал я с обычного исследования сайта http://lingualeo.com. Можно назвать это упражнение туром по сайту (про туры совсем недавно было хорошее сообщение в блоге Ольги Киселевой, а еще раньше я читал про них в статье Майкла Келли). Можно назвать это позитивным тестированием, цель которого - не найти баги, а изучить продукт. В целом, я потратил на него всего 20-30 минут. Поэтому предлагаю назвать это упражнение коротким погружением или блиц-экскурсией. Могу сказать, что упражнение было полезным - благодаря ему у меня в голове сложились основы будущей тестовой стратегии. Что я заметил:
В процессе блиц-экскурсии по сайту у меня не было плана-путеводителя, но у меня была цель - выхватить основы продукта, его концепцию. И все это - с прицелом на дальнейшее тестирование. Поэтому я подсознательно замечал те вещи, которые влияют на объем тестирования и на его сложность: интеграция с внешними системами, многообразие платформ, крупные функциональные части (механизм монетизации, социальная интеграция и другие). Во время экскурсии я оставлял короткие заметки (всегда боюсь что-то забыть). Кроме того, я заметил интересную вещь: увидев, что сайт имеет подобие игры (в нем очень активно используются механизмы gamification), я довольно много времени уделил исследованию элементов игры. У меня есть к этому склонность: я интересуюсь использованием элементов игры в работе, в жизни; пару лет назад я прошел курс по Gamification на coursera.org. Поэтому я пробовал оценить, насколько реализация игры на сайте http://lingualeo.com может заинтересовать пользователей и мотивировать их к изучению английского. Ведь привлечение новых пользователей - это одно, а поддержание постоянного интереса, стимулирование внутренней мотивации внешними средствами, внедрение эффективных механизмов социализации - это другое. От продукта, построенного на gamification, ожидаешь чего-то особенного, какой-то харизмы. И большой вопрос - как эту харизму в будущем тестировать? Сделаю заметку: я уделил механизму gamification много времени потому, что в принципе интересуюсь игровыми элементами. Другой человек при исследовании сайта уделил бы внимание другим вещам. Поэтому нужно быть внимательным: нужно контролировать свои склонности. Они не всегда приводят к важным открытиям и правильным решениям. О склонностях в тестировании написано много - например, Bias and the Human Side of Software Testing и Reduce Biases. 2. Серфинг У меня получилось собрать следующие факты:
Для тестирования, как мы видим, большая часть собранной информации полезна. Но есть и информация, которая носит ознакомительный характер: интересно, но не совсем понятно, как такая информация может повлиять на стратегию тестирования. 3. Глубокое погружение (полноценная экскурсия) Я зарегился и решил пройти несколько упражнений на сайте. Обнаружил интересные для тестирования фичи, такие как:
В общем, я продолжил погружение в детали и узнавал все новые подробности некоторых фич. 4. Остановка исследования продукта Дальше я подумал о том, что тот уровень детализации, которого я достиг - детали конкретных фич продукта - это скорее следующий этап, к которому нужно приступать, когда тестовая стратегия уже составлена. Я понял, что готов обрисовать основные идеи тестирования уже сейчас. 5. Составление стратегии Дальше началось самое интересное - мне нужно было придумать с чего начать формулирование стратегии, как перейти от информации, которую я собрал, к выводу и принятию решений. Уже имея очертания тестовой стратегии в голове, я стал думать о том, как сделать эту стратегию логичной для себя и для потенциальных стейкхолдеров. Я мысленно начал готовить презентацию стратегии. Возвращаясь назад, я понимаю, что у меня еще не было достаточно четкой формулировки стратегии, когда я начал думать о ее презентации. Если бы меня в тот момент спросили о стратегии, я бы долго рассказывал о том, как на мой взгляд надо тестировать продукт. Но не уверен, что я смог бы обосновать все это. Мне не хватало логической цепочки, где каждая идея тестирования из чего-то вытекает. Но одно я знал точно: собранная информация - о продукте, о бизнес целях, о проблемах и трудностях компании - должна подкреплять и подтверждать мою стратегию тестирования. Мне нужно было связать интересы компании со стратегией. 5.0. Цели продукта и компании. Я решил начать с потребностей компании. Перечислил их для себя как:
Для упрощения я решил оставить две обобщенные потребности:
5.1. Логическая цепочка стратегии тестирования. Дальше я решил действовать в такой последовательности: Бизнес цели (потребности компании) -> Критерии качества (какие критерии качества продукта для компании важны) -> Техники тестирования (как мы будем тестировать) -> Cтратегия тестирования. Потом я решил добавить challenges (или трудности, с которыми компания сталкивается в процессе достижении своих целей), но убрать явное упоминание техник тестирования (можно коротко упомянуть их в самой стратегии). То есть, логическая цепочка стала такой: Цели > Challenges > Критерии качества > Стратегия 5.2. Challenges Итак, цели были уже сформулированы (см. выше). Поэтому я стал думать о том, какие испытания и трудности могут встречаться на пути у компании, ставящей подобные цели. Очевидно, это трудности роста и развития, возникающие с необходимостью поддержки огромного числа пользователей, платформ, локализаций. Отсюда вытекают:
5.3. Критерии качества Дальше в логической цепочке идут критерии качества, важные для данного продукта. Я выделил следующие критерии:
5.4. Как будем тестировать? Дальше - нужно было решить, как проверять критерии качества (см. выше 5.3), учитывая известные трудности и цели компании (см. выше 5.2 и 5.0). В этом сообщении я просто хотел написать то, что у меня в получилось. Но это нечестно, потому что тем самым я ставлю перед фактом, а не объясняю, как к этому пришел. Доминирующая проблема, которая засела у меня в голове - как можно справиться с множеством платформ для тестирования. Как можно ее решить?
Другая проблема - нужно справиться с частыми релизами и тестированием большого числа новых фич. Как поступить?
Кроме того, специфика проекта говорит о том, что мы не сможем обойтись без нагрузочного тестирования и без тестирования быстродействия. Проект растет очень быстро и мы рискуем потерять пользователей, если система не будет хорошо выдерживать нагрузку. Но, имхо, это не первоочередная задача, ее можно проводить раз в несколько релизов. Тоже самое можно сказать про другие виды тестирования - безопасности, юзабилити. Их можно либо включать, либо не включать в релизный цикл. Опять же, тут должен работать импакт анализ, чтобы мы могли понять, в каких случаях нужны эти виды тестирования, а в каких - не нужны. Итак, когда я собрал все идеи вместе, у меня получился такой список: 1) Scope тестирования зависит от конкретного релиза 2) Для определения скоупа используется анализ изменений 3) Каждый релиз обычно включает функциональное тестирование (проверка новых изменений) и регрессионное тестирование (проверка старого функционала) 4) Опционально проводится нагрузочное и другие виды тестирования (usability, безопасности, локализации) 5) Регрессионное тестирование по максимуму автоматизировано 6) Платформы разбиты на классы эквивалентности, тестируется минимум один представитель каждого класса 7) Для покрытия большего числа платформ используется crowdsource тестирование и бета тестирование 5.5. Недостатки стратегии Такая вот получилась стратегия. Какие недостатки я вижу?
Эти вещи - уже проработка следующего уровня, для формулировки стратегии я решил оставить их за рамками. 5.6. Выгоды при использовании стратегии На составлении стратегии я не закончил. Я добавил еще несколько пунктов - о том, какую выгоду может получить компания от использования этой тестовой стратегии. Эти пункты будут полезны во время презентации тестовой стратегии, они потенциально могут заинтересовать стейкхолдеров:
Выводы Что я могу сказать по процессу составления стратегии в целом? Конечно, это творческий процесс, но мне было интересно его структурировать. В процессе работы меня не покидало ощущение, что я читерю: основные идеи родились интуитивно и я пытался логически их обосновать :) Наверное, это нормально, если вы собираетесь объяснять свои решения другим людям. Но для выбора между возможными альтернативами интуитивная склонность к одному из решений может быть вредной. В завершение - вот, что у меня получилось. |