Что же такое «Ad-hoc testing», то есть «Свободное или Интуитивное тестирование». Часто его путают с другим видом тестирования «Exploratory testing» – «Исследовательское тестирование».
Давайте, рассмотрим разницу между ними.
Свободное тестирование (ad-hoc testing) – это вид тестирования, который выполняется без подготовки к тестированию продукта, без определения ожидаемых результатов, проектирования тестовых сценариев. Это неформальное, импровизационное тестирование. Оно не требует никакой документации, планирования, процессов, которых следует придерживаться при выполнении тестирования. Такой способ тестирования в большинстве случаев дает большее количество заведенных отчётов об ошибке. Это обусловлено тем, что тестировщик на первых шагах приступает к тестированию основной функциональной части продукта и выполняет как позитивные, так и негативные варианты возможных сценариев.
Чаще всего такое тестирование выполняется, когда владелец продукта не обладает конкретными целями, проектной документацией и ранее поставленными задачами. При этом тестировщик полагается на свое общее представление о продукте, сравнение с похожими продуктами, собственный опыт. Однако при тестировании ad-hoc имеет смысл владеть общей информацией о продукте, особенно если проект очень сложный и большой. Поэтому нужно хорошее представление о целях проекта, его назначении и основных функциях и возможностях. А дальше уже можно приступать к ad-hoc тестированию.
Виды свободного тестирования (ad-hoc testing):
- Buddy testing – процесс, когда 2 человека, как правило разработчик и тестировщик, работают параллельно и находят дефекты в одном и том же модуле тестируемого продукта. Такой вид тестирования помогает тестировщику выполнять необходимые проверки, а разработчику исправлять множество дефектов на ранних этапах.
- Pair testing – процесс, когда 2 тестировщика проверяют один модуль и помогают друг другу. К примеру, один может искать дефекты, а второй их документировать. Таким образом, у одного тестера будет функция, скажем так, обнаружителя, у другого – описателя.
- Monkey testing – произвольное тестирование продукта с целью как можно быстрее, используя различные вариации входных данных, нарушить работу программы или вызвать ее остановку (простыми словами – сломать).
Различия между Buddy testing и Pair testing:
- Buddy testing (Совместное тестирование) – это сочетание модульного тестирования и системного тестирования между разработчиком и тестировщиком.
- Pair testing (Парное тестирование) – выполняется только тестировщиками с разным уровнем знаний и опыта (такое сочетание поможет поделиться взглядами и идеями).
Основные преимущества ad-hoc testing:
- нет необходимости тратить время на подготовку документации;
- самые важные дефекты зачастую обнаруживаются на ранних этапах;
- часто применяется, когда берут нового сотрудника. С помощью этого метода, человек усваивает за 3 дня то, что, разбираясь с тестовыми случаями, разбирал бы неделю – это называется форсированное обучение новых сотрудников;
- возможность найти трудновоспроизводимые и трудноуловимые дефекты, которые невозможно было бы найти, используя стандартные сценарии проверок.
Пример свободного тестирования (Ad-hoc testing):
Ad-hoc тестирование мы часто используем в нашей жизни, возьмем, к примеру, обычный поход в супермаркет.
После входа в супермаркет сразу на входе вы можете найти корзину/тележку для продуктов, но если её не окажется в привычном вам месте – это можно будет считать багом. При выборе молока обратите внимание на срок годности и, если молоко окажется просроченным, опять же это будет баг. Так же и с другими продуктами. И, если в конечном итоге, при оплате покупок на кассе, бутылка вина, на которой был ценник 100, окажется ценой в 200, это также будет багом.
Если нам нужно провести ad-hoc тестирование интернет-магазина, то этот краткий список может помочь с тем, что нужно проверить:
- все возможности сайта доступны без регистрации;
- корректность отображения анимаций и картинок;
- все возможности сайта доступны после регистрации;
- процесс регистрации;
- процесс добавления/удаления из корзины;
- процесс оплаты покупок;
- удобство в пользовании для новичков, простота, подсказки, помощь.
Также стоит отметить, что ad-hoc тестирование часто является любимым видом тестирования для тестировщиков, где можно проявить все свои знания и выполнить самые труднопредсказуемые сценарии, то есть предоставляется возможность чистой импровизации.
Способы повышения эффективности Ad-hoc тестирования
- Приготовление. Проанализировать дефекты в похожих приложениях, таким образом повысив вероятность обнаружения подобных дефектов в тестируемом приложении.
- Формирование черновика. Это не должен быть детальный план тестирования, а наброски, с чего начать и какие проблемы поискать.
- Тестирование сессиями. Тестировать различный функционал продукта по очереди, т.е. не всё сразу. Это помогает лучше сфокусироваться и понять проблемы.
- Уделять внимание целевым областям. В первую очередь проверить те области, которые не покрыты тест-дизайном и тестовой документацией.
- Использование разных вспомогательных программ. Некоторые дефекты можно обнаружить, используя дебаггеры, профайлеры и мониторинги. Знание таких утилит помогает в тестировании.
- Записывать результаты тестирования. Записи того, какие баги были найдены, в каких частях приложения их больше и т.п. Это может помочь как разработчикам, так и тестировщикам последующих версий приложения. Также можно записать то, что не работало, т.к. аналитикам может быть полезно увидеть, что работало хорошо.
Исследовательское тестирование (Exploratory testing)
Исследовательское тестирование (exploratory testing) — это одновременное изучение программного продукта, проектирование тестов и их выполнение. Это неформальный метод проектирования тестов, при котором тестировщик активно контролирует проектирование тестов в то время, как эти тесты выполняются, и использует полученную во время тестирования информацию для проектирования новых тестов.
Если каждый следующий тест, который выполняет тестировщик, выбирается по результатам предыдущего теста, это означает, что мы используем исследовательское тестирование.
Главное, что нужно помнить об исследовательском тестировании, это то, что само по себе оно не является методикой тестирования. Это, скорее, подход, который можно применить к любому виду тестирования. Еще один важный момент заключается в том, что исследовательское тестирование – это не только выполнение тестов. Тестировщики могут применять исследовательский подход и при разработке новых тестов в начале итерации, и при анализе уже завершенных тестов. Также, исследовательское тестирование не должно выполняться небрежно, в спешке и без подготовки. Исследовательский подход может требовать очень тщательной и длительной подготовки к определенным тестам, а накопленные за многие годы знания и умения тестировщика, применяющего данный подход, – это часто невидимая, но важная форма подготовки. Исследовательское тестирование может проводиться вручную, а может осуществляться с широким применением средств автоматизации, т.е. любых вспомогательных инструментов тестирования.
Когда следует применять исследовательское тестирование?
Самые распространенные случаи:
- когда нужно обеспечить быструю обратную связь для нового продукта или новой функциональности продукта;
- когда нужно быстро ознакомиться с продуктом;
- когда уже были проведены основные виды тестирования и время позволяет разнообразить методы тестирования;
- когда нужно найти дефект, локализованный в определенном модуле в кратчайшие сроки;
- когда проверяется работа другого специалиста по тестированию;
- когда нужно изучить состояние конкретного риска для принятия решения о необходимости покрытия конкретной области тестами.
Вывод
Описанные выше методы тестирования имеют основательные сходства и различия, поэтому стоит разделять эти две популярные методики в рамках тестирования. Разница между ad-hoc и exploratory testing в том, что теоретически, ad-hoc может провести кто угодно, а для проведения exploratory необходимо мастерство и владение определёнными техниками. При этом, определённые техники – это не только техники тестирования.
Оба метода часто используются в проектах, а также являются неотъемлемой частью знаний и опыта современного тестировщика программного обеспечения.
|