Легкий способ бросить тест-кейсы (часть 6) |
27.09.2019 00:00 |
Автор: Майкл Болтон (Michael Bolton) Часть 1 В прошлый раз мы остановились на вопросе "Как сфокусировать работу тестировщика, который уже что-то знает о продукте, не переусердствовав в этом?" В четвертой части этой серии статей я уже предлагал ряд примеров. Вот еще один: сценарное тестирование. Примеры, приведенные здесь, основаны на работе, проделанной несколько лет назад Джеймсом Бахом и Джорди Киттом (позднее я помогал ряду других организаций внедрять этот подход, но они не согласились делиться деталями). Идея тут в использовании сценариев, направляющих тестировщика на пути исследования, экспериментирования и получения опыта на продукте. Все это должно давать ему идеи о реальном использовании и о том, как продукт можно использовать неправильно. Приятно верить, что тщательно проработанный дизайн, юнит-тесты, BDD и автоматические проверки предотвратят баги продукта – и они, безусловно, помогают в этом деле – но, перефразируя Гертруду Штайн, опыт учит опыт учит опыт. Простите за выражение, но если вы хотите найти проблемы, с которыми люди могут столкнуться при использовании продукта, то использование этого чертова продукта может, знаете ли, помочь! Сценарный подход, который разработали Джеймс и Джорди, использовал более обширную и проработанную документацию, нежели чартеры сессионного тест-менеджмента в одно-три предложения. Одной из целей было подтолкнуть тестировщика к выполнению определенных действий для достижения определенного покрытия, особенно операционного. Другая цель – сделать миссию тестировщика более явной и читабельной для менеджеров и остальных членов команды. Подготовка к сценарному тестированию включает изучение продукта с использованием артефактов, разговоров, и всех подготовительных форм тест-деятельности (я уже приводил примеры в этой серии статей, особенно в первой части). Все это приводит к разработке и уточнению сценариев для покрытия продукта тестами. Сценарии, как правило, базируются вокруг пользовательских ролей, отображая людей, которые могут воспользоваться продуктом определенным образом. Создайте как минимум несколько таких пользователей, проработайте их характерные особенности – как минимум, то, чем они занимаются, и какие задачи решают. Также можно включить характеристики их жизни, личности, темперамента и условий использования продукта. (Некоторые называют пользовательские роли "персонами", как в примерах ниже. Будьте осторожны с путаницей в терминах – ниже вы увидите относительно поверхностное понимание "персоны". У Алана Купера оно отличается и приводится для дизайнерских целей – оно богаче и проработанней. В любом случае его книги стоит прочитать, особенно "Об интерфейсе (с Рейманом, Кронином, Носселом) и более старую "Психбольница в руках пациентов"). Продумайте не только разнообразие ролей, но и разнообразие уровня опыта среди этих ролей. Люди могут быть новичками в использовании продукта, новичками в этой бизнес-области, или одновременно и в том, и в этом. Новые пользователи могут быть хорошо или плохо обучены, за ними могут постоянно наблюдать или никак их не контролировать. Другие пользователи могут быть экспертами в предыдущих версиях продукта, и раздражаться или озадачиваться, сталкиваясь с нововведениями. Обрисуйте реалистичную работу, выполняемую людьми в пределах их ролей. Выявите отдельные задачи, которыми они хотят заняться, и ищите, что может вызвать проблемы у них или у людей, на которых влияет наш продукт. Проблемы могут принимать формы урона, ущерба, или сниженной ценности для значимых людей. Проблемы могут также включать такие чувства, как смущение, раздражение, разочарование или досаду. Помните, что сценарии использования, как правило, опускают большую часть реальной деятельности. Люди часто невнимательны, небрежны, отвлекаются или находятся в стрессе. Люди отвечают на сообщения в мессенджерах, что-то ищут в сети, вырезают и вставляют всякую всячину между приложениями. Они выходят на улицу, ездят в лифтах, садятся в самолеты и теряют доступ к интернету – все это мы делаем каждый день, не замечая этого. А иногда они активно пытаются навредить. Наш продукт может быть частью большой системы, или быть связанным с другими продуктами через интерфейсы, надстройки или API. Он как минимум зависит от платформенных элементов: железа, на котором он работает, периферии, к которой подключается (сети, принтеры и другие устройства), чужих фреймворков приложений и внешних библиотек, разработанных нами фреймворков и библиотек, находящихся вне спектра текущего проекта. Учитывая все это, дизайн набора сценариев должен включать шаблоны деятельности или действий, которые может выполнять тестировщик в ходе тестирования:
Дабы внедрить эти идеи в ProChain (компании, разрабатывающей ПО для управления проектами), Джеймс и Джорди разработали сборник сценариев. Первый пример – это одностраничный документ, описывающий общий протокол для настройки сессий сценария. Протокол и настройка сценарного тестированияМиссия: быстро найти важные баги, исследуя продукт способами, отражающими сложное, реалистичное, убедительное использование. Тестировщики:
Настройка:
Задачи: В сценарном исследовательском тестировании вы проектируете тесты во время их прохождения, в соответствии с тест-чартером сценария.
Заметки об оракулах:
Отчетность:
Этот документ – обзор того, что происходит на каждой сессии. Он разработан в основном для того, чтобы дать менеджеру и поддерживающим тестировщикам возможность краткого обзора процесса и особенностей его реализации (поддерживающий тестировщик – тот, кто не занят полную рабочую неделю, но выполняет тестирование под руководством и наблюдением ответственного тестировщика – опытного тестировщика, тест-лида или тест-менеджера. Ответственный тестировщик должен знать и усвоить инструкции на этом листе). Еще тут содержатся общие замечания о настройке и действиях для выполнения во время сессии. Тестировщики должны быть знакомы с оракулами, благодаря которым мы распознаем проблемы, или должны быстро их изучить. Когда этот документ разрабатывался, он содержал список соответствий мнемоническому акрониму HICCUPP; теперь он называется FEW HICCUPPS. Для каждого чартера могли существовать отдельные шаблоны соответствия, артефакты, документы, инструменты и механизмы, которые можно было применять, чтобы помочь тестировщику заметить и описать проблемы. Вот пример чартера для отдельной миссии тестирования: Сценарный тест-чартер, UP1: "Проверка и обновление задач"Тема: вы исполнитель в проекте. На вас назначены задачи. Проверьте ваши задачи и обновите их. Проверьте статус задач, регулирующих назначенные на вас задачи. Настройка: убедитесь, что у вашей учетной записи есть права, необходимые для доступа к проекту с множеством задач. Задачи:
Заметки об оракулах:
Вариации:
Раздел "Тема" описывает основную задачу сессии – так же, как трехстрочный чартер в сессионном тест-менеджменте. Раздел "Настройка" определяет, что должно быть выполнено специально для этой сессии. Заметьте, что раздел "Задачи" предлагает варианты, которые одновременно и точны, и открыты для интерпретаций. Открытость помогает поощрять вариации, которые расширяют покрытие и улучшают вовлеченность тестировщика ("для некоторых задач", "каким-то образом"). Точность помогает сфокусировать покрытие ("установите фильтр так, чтобы он показывал как минимум…", список различных способов обновления задач). Раздел "Оракулы" определяет способы поиска проблем в дополнение к общим принципам и механизмам оракулов. Раздел "Вариации" предлагает попробовать разные идеи, которые внедрят турбулентность, повысят нагрузку, или покроют больше тест-условий. Отчет и пересмотр заметок тестировщика после сессии помогает убедиться, что тестировщик добился достаточного покрытия. Вот еще пример из того же проекта: Сценарный тест-чартер, UP2: "Проверка статуса и выполнение буферного обновления"Тема: вы – менеджер проекта. Вам нужно обновить ваш проект, чтобы подготовить еженедельный отчет о статусе проекта. Настройка:
Задачи:
Заметки об оракулах:
Вариации:
Здесь тестировщику выдается другая роль, требующая других прав доступа, а также другой набор задач. В разделах "Задачи" и "Вариации" тестировщика поощряют к исследованию и переводу системы в состояния, вызывающие конфликты и соревнование за ресурсы. Создание подобных сессионных листов может быть куда более веселым и менее скучным делом, нежели перечисление инструкций в формальных процедурных тест-кейсах. Такие сессии фокусируются на темах и тест-идеях, а не на особых тест-условиях, и поэтому они компактнее, и их проще пересматривать и поддерживать. Если в проверке нуждаются особые функции, условия или значения данных, это можно помечать прямо на листе, или держать отдельно и сослаться на них в тексте сессии. Такой подход дает достаточно руководящих указаний тестировщику, вместе с этим оставляя ему свободу варьировать детали во время сессии. Так как основная миссия тестировщика – это исследовать продукт, а не следовать набору шагов, у него также есть возможность исследовать что угодно, выглядящее необычным или неправильным. Все это помогает поддерживать вовлеченность тестировщика, предотвращая его зомбированность сценарием, полным чужих идей. Больше информации по разработке сценариев можно найти в приложениях к Rapid Software Testing в разделе "PCE Scenario Testing". Вернемся к нашей тренинг-сессии. Фрида вновь вжилась в роль менеджера, зацикленного на тест-кейсах. "Если мы не дадим им тест-кейсы, то на что мы будем смотреть, когда они закончат работу? Как мы сможем точно убедиться, что было покрыто тестировщиком?" Кажется, что список тест-кейсов с пометками о выполнении решит проблему отчетности и ответственности – но так ли это? Если вы не доверяете тестировщику проводить тестирование без пошаговых инструкций, можно ли доверять ему проводить тестирование, имея эту инструкцию? Существует множество способов фиксировать работу тестировщика: личные заметки или сессионные листы SBTM, пометки и аннотации на требованиях и других артефактах, логи приложения, средства снятия скриншотов, видеозаписи… Совместите эти поддерживающие материалы с быстрым отчетом, чтобы убедиться, что тестировщик профессионален и выполняет свою работу. Если это новичок или поддерживающий тестировщик, то налегайте на обучение, личное руководство и обратную связь, пока он не завоюет ваше доверие. И если вы все еще не доверяете ему, то, возможно, не стоит поручать ему тестирование в принципе. Фрида, все еще в роли, ответила – "Хммм… Хотелось бы узнать больше об отчетности". Об этом поговорим в следующий раз! |