Исследовательское тестирование
Исследовательское тестирование — это подход к тестированию программного обеспечения , который кратко описывается как одновременное обучение, проектирование тестов и их выполнение. Джем Канер , придумавший этот термин в 1984 году, [1] определяет исследовательское тестирование как «стиль тестирования программного обеспечения, который подчеркивает личную свободу и ответственность отдельного тестировщика за постоянную оптимизацию качества своей работы, рассматривая связанное с тестированием обучение, проектирование тестов, выполнение тестов и интерпретацию результатов тестов как взаимозависимые процессы». вспомогательные мероприятия, которые выполняются параллельно на протяжении всего проекта». [2]
Пока программное обеспечение тестируется, тестировщик изучает вещи, которые вместе с опытом и творческим подходом позволяют создавать новые хорошие тесты для запуска. Исследовательское тестирование часто называют методом тестирования «черного ящика» . Вместо этого те, кто изучал его, считают его подходом к тестированию , который можно применять к любой методике тестирования на любом этапе процесса разработки. Ключевым моментом является не техника тестирования и не тестируемый или проверяемый элемент; Ключом является когнитивная вовлеченность тестировщика и ответственность тестировщика за управление своим временем. [3]
История
[ редактировать ]Исследовательское тестирование всегда выполнялось опытными тестировщиками. В начале 1990-х годов «ad hoc» слишком часто ассоциировался с небрежной и небрежной работой. В результате группа методистов тестирования (теперь называющая себя « Школой контекстно-ориентированного тестирования ») начала использовать термин «исследовательский», стремясь подчеркнуть доминирующий мыслительный процесс, участвующий в незапланированном тестировании, и начать развивать эту практику в обучаемую дисциплину. Эта новая терминология была впервые опубликована Джемом Канером в его книге «Тестирование компьютерного программного обеспечения». [4] и подробно изложено в разделе « Уроки, извлеченные из тестирования программного обеспечения» . [5] Исследовательское тестирование может быть таким же дисциплинированным, как и любая другая интеллектуальная деятельность.
Описание
[ редактировать ]Исследовательское тестирование направлено на то, чтобы выяснить, как на самом деле работает программное обеспечение, и задать вопросы о том, как оно будет справляться со сложными и простыми случаями. Качество тестирования зависит от умения тестировщика придумывать тестовые примеры и находить дефекты . Чем больше тестировщик знает о продукте и различных методах тестирования , тем лучше будет тестирование.
Для дальнейшего объяснения можно сравнить произвольное исследовательское тестирование с его противоположностью сценарному тестированию . В последнем случае тестовые сценарии разрабатываются заранее. Сюда входят как отдельные шаги, так и ожидаемые результаты. Эти тесты позже выполняются тестировщиком, который сравнивает фактический результат с ожидаемым. При проведении исследовательского тестирования ожидания открыты. Некоторые результаты можно предсказать и ожидать; другие могут нет. Тестировщик настраивает, эксплуатирует, наблюдает и оценивает продукт и его поведение, критически исследуя результат и сообщая информацию, которая, по-видимому, может быть ошибкой (которая угрожает ценности продукта для кого-то) или проблемой (которая угрожает качество тестирования).
В действительности тестирование почти всегда представляет собой комбинацию исследовательского и сценарного тестирования, но с тенденцией к любому из них, в зависимости от контекста.
По мнению Канера и Джеймса Маркуса Баха , исследовательское тестирование — это скорее образ мышления или «...способ мышления о тестировании», чем методология. [6] Они также говорят, что оно пересекает континуум от слегка исследовательского (слегка двусмысленного или неясно написанного тестирования) до высокоисследовательского (свободного исследовательского тестирования). [7]
Документация исследовательского тестирования варьируется от документирования всех выполненных тестов до простого документирования ошибок . Во время парного тестирования два человека вместе создают тестовые примеры; один их исполняет, а другой документирует. Сессионное тестирование — это метод, специально разработанный для того, чтобы сделать исследовательское тестирование проверяемым и измеримым в более широком масштабе.
Исследовательские тестировщики часто используют инструменты, в том числе инструменты захвата экрана или видео для записи исследовательского сеанса, или инструменты, помогающие быстро создавать интересующие ситуации, например Perlclip Джеймса Баха.
Преимущества и недостатки
[ редактировать ]Основное преимущество исследовательского тестирования состоит в том, что требуется меньшая подготовка, важные ошибки обнаруживаются быстро, а во время выполнения этот подход имеет тенденцию быть более интеллектуально стимулирующим, чем выполнение скриптовых тестов.
Еще одним важным преимуществом является то, что тестировщики могут использовать дедуктивные рассуждения, основанные на результатах предыдущих результатов, для оперативного руководства своим будущим тестированием. Им не нужно выполнять текущую серию скриптовых тестов, прежде чем сосредоточиться или перейти к изучению более целевой среды. Это также ускоряет обнаружение ошибок при разумном использовании.
Еще одним преимуществом является то, что после первоначального тестирования большинство ошибок обнаруживается в ходе исследовательского тестирования. Это можно продемонстрировать логически, заявив: «Программы, прошедшие определенные тесты, как правило, продолжают проходить те же тесты и с большей вероятностью провалят другие тесты или сценарии, которые еще предстоит изучить».
Недостатки заключаются в том, что тесты, придуманные и выполняемые «на лету», не могут быть проверены заранее (и тем самым предотвращены ошибки в коде и тестовых примерах), и что может быть сложно точно определить, какие тесты были запущены.
Идеи исследовательских тестов по фристайлу при повторном рассмотрении вряд ли будут реализованы точно таким же образом, что может быть преимуществом, если важно найти новые ошибки; или недостаток, если важнее повторить конкретные детали предыдущих испытаний. Это можно контролировать с помощью специальных инструкций для тестировщика или путем подготовки автоматических тестов, где это возможно, целесообразно и необходимо, и в идеале как можно ближе к уровню единицы.
Научные исследования
[ редактировать ]Повторный эксперимент показал, что, хотя скриптовое и исследовательское тестирование приводят к одинаковой эффективности обнаружения дефектов (общее количество обнаруженных дефектов), исследовательские результаты дают более высокую эффективность (количество дефектов в единицу времени), поскольку на предварительное проектирование тестовых примеров не затрачивается никаких усилий. . [8] Наблюдательное исследование исследовательских тестировщиков показало, что использование знаний о предметной области, тестируемой системе и клиентах является важным фактором, объясняющим эффективность исследовательского тестирования. [9] Тематическое исследование трех компаний показало, что способность предоставлять быструю обратную связь была преимуществом исследовательского тестирования, тогда как управление тестовым покрытием было названо недостатком. [10] Опрос показал, что исследовательское тестирование также используется в критически важных областях и что подход к исследовательскому тестированию предъявляет высокие требования к человеку, выполняющему тестирование. [11]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Джем Канер, « Учебное пособие по исследовательскому тестированию, заархивировано 12 июня 2013 г. в Wayback Machine », стр. 2
- ^ Джем Канер, Учебное пособие по исследовательскому тестированию, заархивировано 12 июня 2013 г. в Wayback Machine , стр. 36.
- ^ Джем Канер, Учебное пособие по исследовательскому тестированию, заархивировано 12 июня 2013 г. в Wayback Machine , стр. 37-39, 40- .
- ^ Сем Канер, Тестирование компьютерного программного обеспечения , TAB Books, Blue Ridge Summit, Пенсильвания, 1988. стр. 6, 7–11.
- ^ Канер, Джем ; Бах, Джеймс; Петтикорд, Брет (2001). Уроки, извлеченные из тестирования программного обеспечения . Джон Уайли и сыновья . ISBN 978-0-471-08112-8 .
- ^ Сем Канер, Джеймс Бах, Исследовательское тестирование и тестирование на основе риска , www.testingeducation.org. Архивировано 11 мая 2008 г. в Wayback Machine , 2004, стр. 10
- ^ Сем Канер, Джеймс Бах, Исследовательское тестирование и тестирование на основе риска , www.testingeducation.org. Архивировано 11 мая 2008 г. в Wayback Machine , 2004, стр. 14
- ^ Итконен, Юха; Мянтюля, Мика В. (11 июля 2013 г.). «Нужны ли тестовые примеры? Повторное сравнение исследовательского и тестового тестирования программного обеспечения». Эмпирическая программная инженерия . 19 (2): 303–342. CiteSeerX 10.1.1.363.6524 . дои : 10.1007/s10664-013-9266-8 . ISSN 1382-3256 . S2CID 254472881 .
- ^ Итконен, Дж.; Мянтюля, М.В.; Лассениус, К. (01 мая 2013 г.). «Роль знаний тестировщика в исследовательском тестировании программного обеспечения». Транзакции IEEE по разработке программного обеспечения . 39 (5): 707–724. дои : 10.1109/TSE.2012.55 . ISSN 0098-5589 . S2CID 1763558 .
- ^ Итконен, Дж.; Раутиайнен, К. (1 ноября 2005 г.). «Исследовательское тестирование: множественное тематическое исследование». 2005 Международный симпозиум по эмпирической разработке программного обеспечения, 2005 г. стр. 10 стр.–. дои : 10.1109/ISESE.2005.1541817 . ISBN 978-0-7803-9507-7 . S2CID 7974121 .
- ^ Пфаль, Дитмар; Инь, Хуэйши; Мянтюля, Мика В.; Мюнх, Юрген (1 января 2014 г.). «Как используется исследовательское тестирование? Исследование состояния практики». Материалы 8-го Международного симпозиума ACM/IEEE по эмпирической разработке программного обеспечения и измерениям . ЭСЕМ '14. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 5:1–5:10. дои : 10.1145/2652524.2652531 . hdl : 10138/153363 . ISBN 9781450327749 . S2CID 17924562 .
Внешние ссылки
[ редактировать ]- Джеймс Бах, Объяснение исследовательского тестирования
- Сем Канер, Джеймс Бах, Природа исследовательского тестирования. Архивировано 11 мая 2008 г. в Wayback Machine , 2004 г.
- Сем Канер, Джеймс Бах, «Семь основных принципов контекстно-ориентированной школы»
- Джонатан Коль, Исследовательское тестирование: поиск музыки для исследования программного обеспечения , Kohl Concepts Inc., 2007 г.