Туры в исследовательском тестировании
t.me/qa_chillout![](/file/6dcf9744e10d0d2422586.png)
В одной из статей мы ранее рассуждали про исследовательское тестирование, выделяли преимущества, а также недостатки, рассуждали когда стоит применять, а когда нет. А вот как организовать исследовательское тестирование? Ответить на этот вопрос поможет Джеймс Виттакер, предложивший подход к исследовательскому тестированию с использованием туров в своей книге «Exploratory Software Testing».
Тест-туры — неформальный подход к исследовательскому тестированию, который позволяет сделать его ещё более осмысленным и интересным. Они содержат инструкции по исследованию приложения — по аналогии с тем, как турист изучает незнакомый город. Виттакер говорит, что тестировщик – это турист, а тестируемое приложение – это город.
Начнем с туристической метафоры в тестировании. Предположим, вы впервые посещаете такой большой город, как Лондон. Это большое, оживленное, запутанное место для новых туристов, где есть что посмотреть и чем заняться. Даже самому богатому, не ограниченному во времени туристу, будет трудно увидеть все, что может предложить такой город, как Лондон. Тоже самое можно сказать и о тестировщиках, пытающихся исследовать сложное программное обеспечение. Такие туры требуют определенной стратегии, от которой зависит как время, так и «достопримечательности», которые увидят туристы.
Перед началом тестирования следует декомпозировать требования на атомарные части. Это поможет не только упростить тестирование, но и грамотно распределить ресурсы, выбрать тот или иной маршрут. Ну что, прогуляемся по «городу»?
![](/file/26fbfe27658be00c1b9bf.png)
Деловой район
Отправимся в деловой район. В деловом районе расположены банки, офисные здания, кафе и магазины, которые работают по графику, т.е от начала и до завершения рабочего дня. Для программного обеспечения деловой район также является «местом, где делается бизнес» и начинается с запуска кода и до его завершения, а также содержит функции, ради которых пользователи и используют данное приложение.
![](/file/ea61f75b8b8f42915005a.png)
Исторический район
Побывав в деловом районе, мы переместимся в исторический городок. Туристы любят тайны и наследие прошлого, и это делает исторические районы очень популярными. Для программного обеспечения история определяется его легаси кодом и функциями, которые исторически содержали большое количество ошибок. Легаси код зачастую плохо понятен. Его использование и изменение подразумевает большое количество затрачиваемых ресурсов (время). Именно на этом компоненте и сосредотачивается данный тур.
![](/file/173ae6fd1a2241938d8e2.png)
Туристический район
А теперь переместимся в то место, которое интересно только туристам и пользователям-новичкам. Местные жители стараются избегать эти переполненные улицы. Данный тур как раз и сосредотачивается на тех функциях, «которые старые» пользователи уже не используют. Пристальное внимание уделяем тому функционалу, который доступен только «туристам-новичкам».
![](/file/1928c7427381a721eb17c.png)
Развлекательный район
После прогулок стоит немного развлечься. В программном обеспечении для этого есть дополнительные функции. Например, функционал для разметки страницы, форматирования, изменения фона, изменение темы и многое другое. Другими словами, это все необходимо для наведения «красоты».
![](/file/c631e72c8e67485699faa.png)
Гостиничный район
Пора бы уже хорошенько выспаться и отдохнуть в гостинице! Наличие места для отдыха является обязательным условием для любого города. Однако, программное обеспечение в моменты отдыха пользователя совсем не отдыхает. Цель данного тура – проверить функции, которые выполняются в момент бездействия пользователя.
![](/file/07bbde7927118c2c1d4c4.png)
Тур по плохому району
Хотите после отдыха немного приключений? Отправляемся в бандитский район! Это такие неприглядные места, которые задокументируют немногие путеводители. Они полны людей, делающих плохие и незаконные вещи. Сомнительные туры являются обязательными для тестировщиков, потому что они находят уязвимости, которые могут нанести пользователям большой урон.
![](/file/a2c69557fc22eb0f35be3.png)
Тур по путеводителю
Вы купили путеводитель и хотите пройтись по проложенному за вас маршруту? Вперед! В путеводителях вы найдете лучшие отели, лучшие предложения и лучшие достопримечательности. Вам не нужно будет вдаваться в подробности – просто идите в то место, которое указано в справочнике. В тестировании аналогичным артефактом является руководство пользователя. В этом туре мы следуем указаниям руководства пользователя как осторожный турист, не отклоняясь от написанного, всё четко по инструкции. При тестировании важно уделить время основным сценариям и не отходить в сторону. Цель тура: выполнить все инструкции, в противном случае мы «заблудимся».
![](/file/f361096f5f58a8a839b00.png)
Денежный тур
Хотите зрелищ? Ищите где бы потратить деньги? В каждом месте стараются удивить туриста, чтобы именно в этом месте он оставил деньги. В Лас-Вегасе это казино и стрип-клубы, в Амстердаме – улица красных фонарей, в Египте — пирамиды. Уберите эти достопримечательности, и туристы уйдут тратить деньги в другие места.
В программном обеспечение все ровным счетом также: должна быть какая-то причина, по которой пользователи покупают его. Денежный тур != туру оплаты. Вы должны определить функции, которые привлекают пользователей. В денежном туре выполняется проверка на соответствие информации в рекламных материалах и в приложении: тестирование той функциональности, которая продает приложение, функционал, который используют менеджеры по продажам на демонстрациях продукта. Цель тура – контроль качества этого функционала и информирование маркетологов о всевозможных проблемах, которые могут повлиять на рекламу и продажи.
![](/file/320459c5adf71746e1d73.png)
Интеллектуальный тур
Любите всегда задавать вопросы? Тогда это тур для вас! Данный тур заключается в том, чтобы задавать программному обеспечению сложные вопросы. Какие функции нагружают приложение до предела? Какие входные значения и данные вызовут максимальную нагрузку? Какие значения могут ввести в заблуждение проверки на ошибочные данные? Какие внешние и внутренние данные приводят к специфичным результатам? Очевидно, что такие вопросы будут широко варьироваться в зависимости от тестируемого приложения.
Например: если это онлайн-магазин – попробуйте совершить максимально большой заказ, если это форма – попробуйте ошибиться в каждом поле и так далее, если это передача файла, то попробуйте передать максимально большой файл.
![](/file/a30298e462e297d6d43ac.png)
Тур сборщика мусора
Люди, которые убирают мусор на лицах, знают окрестности лучше, чем жители или полиция, потому что они идут улица за улицей, дом за домом и знакомятся с каждой выбоиной на дороге.
В данном туре мы выбираем цель (меню, ошибки, диалоговые окна и т.д) и посещаем каждый экран наиболее коротким путем.
![](/file/cfc36ab4142afdd82d371.png)
Экскурсия по музею
Прикоснемся к древностям. Музейные древности в нашем туре – легаси код. Его можно идентифицировать по дате коммита. Такой код, использованный в новом окружении, склонен к некорректной работе. Исследовать этот код сложно: программист может быть уже не в компании, а документация может быть недостоверной. Тестировщик должен выявить такой код и обратить внимание на его работу.
![](/file/b02712298126b18b30389.png)
Тур актеров второго плана
Всякий раз, когда специалисты по продажам демонстрируют продукт или маркетинг рекламирует какую-либо функцию приложения, пользователи могут быть соблазнены функциями рядом с теми, которые находятся в центре внимания. Тур актеров второго плана побуждает тестировщиков сосредоточиться на тех функциях, которые разделяют экран с функциями, которые «продают». Их близость к основным функциям увеличивает их видимость, и мы должны уделять им соответствующее внимание.
![](/file/b9583174013cad7456374.png)
Экскурсия по глухому переулку
В глазах многих людей хороший тур – это тот, в котором вы посещаете популярные места. Противоположностью этих экскурсий – тот тур, в котором вы посещаете места, куда вряд ли кто пойдет. Цель такого тура – найти экран, функциональность, в которой больше всего багов и уделить ей должное внимание.
![](/file/f3c01e612ba9593f8a3ef.png)
FedEx тур
В курьерской службе FedEx посылки путешествуют вокруг планеты. Из одного города в другой город, из одного сортировочного пункта в другой. Подобно посылкам, данные проходят сквозь приложение, путешествуя по его «закоулкам». Данные начинают свой путь с ввода, далее хранятся во внутренних хранилищах и переменных, где часто происходит их обработка и изменение. В конце большинство из таких данных предоставляются пользователю или куда-либо еще.
Например: пользователь установил скидку на товар, покупатель оплатил его по скидочной цене, а продавцу пришел чек на оплату, в котором указана скидочная стоимость.
![](/file/e87babe9d944f7eaa7fa7.png)
Клубный тур
Любите всю ночь отдыхать после трудовой недели? Добро пожаловать в клуб! Это экскурсия на всю ночь. Как долго приложение может работать и обрабатывать данные перед тем, как аварийно завершится? Это нагрузочное тестирование приложения. Накопление данных в памяти, запись, перезапись, многократное чтение переменных – это может привести к сбоям приложения: утечки памяти, нарушение данных и многое другое. Главное условие – никогда не закрывайте приложение. Открывайте файлы, не закрывайте их, не сохраняйте их.
![](/file/156ba43fac27a46cefa28.png)
Тур коллекционера
Коллекционируйте выходные данные, и чем больше, тем лучше. Идея в том, чтобы пройти туда, куда вы только можете и покрыть тестами все то, что вы увидите. Идея этого тура состоит в том, чтобы покрыть тестами все выходные данные.
Например тестирование маркетплейса: можно купить товар из разных точек мира, провести оплату с помощью любой карты, указать любой адрес доставки. Любые возможные выходные данные необходимо проверять до тех пор, пока не убедитесь, что побывали везде, увидели все и собрали полную коллекцию.
Это большой тур, поэтому лучше использовать его для группы тестирования. Собрали коллекцию, а когда выйдет новая версия с новыми функциями, пополнили.
![](/file/01a0b2f596c3516a452e4.png)
Тур одинокого бизнесмена
Идея состоит в том, чтобы посетить (и, конечно, протестировать) функцию, которая максимально удалена от начальной точки приложения. На какую функцию уходит больше всего кликов? Выберите одну из таких и протестируйте путь к ней. В каких функциях нужно пройти максимальное число экранов, чтобы получить результат? Выберите их и протестируйте. Идея в том, чтобы путешествовать сквозь приложение как можно дольше, прежде чем достигните места назначения. Предпочитайте длинные пути коротким. Выберите страницу, похороненную глубже всего в приложении.
Например: чтобы попасть в профиль продавца на каком-либо маркетплейса, попробуйте отправить push-уведомление со ссылкой на товар, авторизуйтесь в приложении, перейдите на карточку товара, из карточки товара перейдите в чат, а из чата в профиль продавца.
![](/file/ee55ff7609ab44db7eb78.png)
Тур по Шотландскому пабу
Этот тур применяется специально для больших и сложных приложений. Продукты Microsoft Office подходят под эту категорию. Так же как и такие сайты, как eBay, Amazon и MSDN. Цель данного тура – найти и протестировать функции, которые сложно найти, если заранее о них не знаешь, подобно тому, как житель мегаполиса пройдет мимо хорошего паба, не зная, что внутри хорошее место.
![](/file/822bcf43f2eb1abbeedf9.png)
Тур домоседа
Всегда есть некто в групповом туре, кто скучает и не проявляет никакой активности. И часто происходит так, что гид старается больше обычного, чтобы заинтересовать такую персону. Так и для приложений: если человек не проявляет высокой активности, не значит, что приложение работает также неактивно. Наоборот, зачастую, это нагружает приложение. Приложению приходится выяснять, что делать, если пользователь оставляет поля пустыми. В моменты, когда пользователь не берет на себя инициативу, выполняется «логика по умолчанию».
![](/file/b1d9469fa2d7fb4ccdc97.png)
Тур диверсанта
Это диверсионный тур, и во время него мы постараемся при любой возможности подорвать работу приложения. Мы, например, попробуем загрузить фотографию, но затем саботируем попытку приложения сделать это, к примеру, испортим файл или запретим разрешение на доступ к памяти.
Этот тур очень прост в осмыслении:
•Заставьте программное обеспечение предпринять некоторые действия.
•Поймите, какие ресурсы требуются для успешного выполнения этого действия.
•Удалите или ограничьте эти ресурсы в той или иной степени.
![](/file/33b0fcadf88a7575015ac.png)
Тур обсессивно-компульсивного расстройства
Закажите товар в маркетплейсе, а затем закажите его снова, чтобы проверить, применяется ли многократная скидка на покупку. Введите некоторые данные на экране, а затем вернитесь, чтобы ввести их снова. Это действия, для которых разработчики часто не предусматривают случаи ошибок. А они могут нанести значительный ущерб. Разработчики часто думают о том, что пользователь делает вещи в определенном порядке и использует программное обеспечение с определенной целью. Но пользователи совершают ошибки и они часто не понимают, какой конкретный путь имел в виду для них разработчик, и они выбирают свой собственный. Это может привести к тому, что тщательно продуманная разработчиками схема использования быстро отойдет на второй план.
Резюме
Туры привносят структуру в тестирование и помогают тестировщикам найти более интересные и релевантные сценарии, чем те, которые они обычно придумывают. Давая тестировщикам цель, туры помогают им пройти через интересные пути использования, которые, как правило, более сложны, чем традиционное функционально-ориентированное тестирование, когда отдельный тестировщик пытается протестировать одну функцию изолированно.
Туры являются важным инструментом для тестировщиков, чтобы обнаружить интересные способы объединения функций как в отдельных сценариях, так и в наборах: чем больше взаимодействия, тем тщательнее тестирование.
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».
We express our gratitude to James Whittaker for allowing to share tours idea from the 4th chapter of «Exploratory software testing» with community of @qa_chillout channel.