Исследовательское тестирование - Exploratory testing

Исследовательское тестирование это подход к тестирование программного обеспечения что кратко описывается как одновременное обучение, дизайн теста и выполнение теста. Джем Канер, который ввел термин в употребление в 1984 году,[1] определяет исследовательское тестирование как «стиль тестирования программного обеспечения, который подчеркивает личную свободу и ответственность отдельного тестировщика за постоянную оптимизацию качества своей работы, рассматривая обучение, связанное с тестированием, разработку тестов, выполнение тестов и интерпретацию результатов тестирования как взаимно вспомогательные мероприятия, которые проводятся параллельно на протяжении всего проекта ».[2]

Пока программное обеспечение тестируется, тестировщик изучает вещи, которые вместе с опытом и креативность генерирует новые хорошие тесты для запуска. Исследовательское тестирование часто рассматривается как тестирование черного ящика техника. Вместо этого те, кто его изучал, считают это испытанием. подход который может быть применен к любой методике тестирования на любом этапе процесса разработки. Ключевым моментом является не метод тестирования или элемент, который проверяется или анализируется; ключевым моментом является когнитивная вовлеченность тестировщика и ответственность тестировщика за управление своим временем.[3]

История

Исследовательское тестирование всегда проводилось опытными тестировщиками. В начале 1990-х гг. для этого случая слишком часто было синонимом небрежной и небрежной работы. В результате группа методистов-тестировщиков (теперь называющих себя Контекстно-ориентированная школа ) начал использовать термин «исследовательский», стремясь подчеркнуть доминирующий мыслительный процесс, связанный с незапланированным тестированием, и начать превращать практику в обучаемую дисциплину. Эта новая терминология была впервые опубликована Джем Канер в его книге Тестирование компьютерного программного обеспечения [4] и расширен в Уроки, полученные при тестировании программного обеспечения.[5] Исследовательское тестирование может быть таким же дисциплинированным, как и любая другая интеллектуальная деятельность.

Описание

Исследовательское тестирование направлено на выяснение того, как на самом деле работает программное обеспечение, и на то, чтобы задать вопросы о том, как оно будет обрабатывать сложные и легкие случаи. Качество тестирования зависит от умения тестировщика изобретать. контрольные примеры и найти дефекты. Чем больше тестировщик знает о продукте и разных методы испытаний, тем лучше будет тестирование.

Для дальнейшего объяснения можно сравнить исследовательское тестирование вольного стиля с его антитезисом. тестирование по сценарию. В последнем случае заранее разработаны тестовые случаи. Сюда входят как отдельные шаги, так и ожидаемые результаты. Эти тесты позже выполняет тестировщик, который сравнивает фактический результат с ожидаемым. При проведении исследовательского тестирования ожидания открыты. Некоторые результаты можно предвидеть и ожидать; другие не могут. Тестировщик настраивает, эксплуатирует, наблюдает и оценивает продукт и его поведение, критически исследуя результат и сообщая информацию, которая может быть ошибкой (которая угрожает ценности продукта для кого-то) или проблемой (которая угрожает качество тестирования).

В действительности тестирование почти всегда представляет собой комбинацию исследовательского и скриптового тестирования, но в зависимости от контекста склоняется к любому из них.

По мнению Канера и Джеймс Маркус Бах, исследовательское тестирование - это больше образ мышления или «... способ мышления о тестировании», чем методология.[6] Они также говорят, что он пересекает континуум от слегка исследовательского (слегка неоднозначное или расплывчатое тестирование) до в высшей степени исследовательского (исследовательское тестирование вольным стилем).[7]

Документация исследовательского тестирования варьируется от документирования всех выполненных тестов до простого документирования ошибки. В течение парное тестирование, два человека вместе создают тестовые примеры; один их выполняет, а другой документирует.Сессионное тестирование - это метод, специально разработанный для обеспечения возможности аудита и измерения исследовательского тестирования в более широком масштабе.

Исследовательские тестировщики часто используют инструменты, в том числе инструменты для захвата экрана или видео, в качестве записи исследовательского сеанса, или инструменты для быстрого создания интересных ситуаций, например Perlclip Джеймса Баха.

Преимущества и недостатки

Основное преимущество исследовательского тестирования состоит в том, что требуется меньше подготовки, важные ошибки обнаруживаются быстро, а во время выполнения подход имеет тенденцию быть более интеллектуальным, чем выполнение тестов по сценарию.

Еще одно важное преимущество заключается в том, что тестировщики могут использовать дедуктивное мышление на основе результатов предыдущих результатов, чтобы направлять их будущее тестирование на лету. Им не нужно выполнять текущую серию тестов по сценариям, прежде чем сосредоточиться или перейти к исследованию более целевой среды. Это также ускоряет обнаружение ошибок при разумном использовании.

Еще одно преимущество заключается в том, что после первоначального тестирования большинство ошибок обнаруживается с помощью некоторого исследовательского тестирования. Это можно логически продемонстрировать, заявив: «Программы, которые проходят определенные тесты, как правило, продолжают проходить те же тесты и с большей вероятностью не пройдут другие тесты или сценарии, которые еще предстоит изучить».

Недостатки заключаются в том, что тесты, изобретенные и выполняемые на лету, невозможно просмотреть заранее (и тем самым предотвратить ошибки в коде и тестовых примерах), и что может быть трудно точно показать, какие тесты были запущены.

Идеи исследовательских тестов вольным стилем при повторном рассмотрении вряд ли будут реализованы точно таким же образом, что может быть преимуществом, если важно найти новые ошибки; или недостаток, если важнее повторить конкретные детали предыдущих тестов. Это можно контролировать с помощью специальных инструкций для тестировщика или путем подготовки автоматических тестов, где это возможно, уместно и необходимо, а в идеале - как можно ближе к единичному уровню.

Научные исследования

Повторный эксперимент показал, что хотя сценарии и исследовательское тестирование приводят к аналогичной эффективности обнаружения дефектов (общее количество обнаруженных дефектов), исследовательские результаты дают более высокую эффективность (количество дефектов в единицу времени), так как никакие усилия не тратятся на предварительное проектирование тестовых случаев. .[8] Наблюдательное исследование исследовательских тестировщиков показало, что использование знаний о предметной области, тестируемой системе и клиентах является важным фактором, объясняющим эффективность исследовательского тестирования.[9] Тематическое исследование трех компаний показало, что способность предоставлять быструю обратную связь была преимуществом исследовательского тестирования, тогда как управление тестовым покрытием было указано как недостаток.[10] Опрос показал, что исследовательское тестирование также используется в критических областях и что подход исследовательского тестирования предъявляет высокие требования к человеку, выполняющему тестирование.[11]

использование

Исследовательское тестирование особенно подходит, если: требования и технические характеристики неполные или нехватка времени.[12][13]Этот подход также можно использовать для проверки того, что предыдущее тестирование обнаружило наиболее важные дефекты.[12]

Смотрите также

Рекомендации

  1. ^ Джем Канер "Учебное пособие по исследовательскому тестированию ", стр.2
  2. ^ Джем Канер, Учебное пособие по исследовательскому тестированию, п. 36.
  3. ^ Джем Канер, Учебное пособие по исследовательскому тестированию, п. 37-39, 40-.
  4. ^ Джем Канер, Тестирование компьютерного программного обеспечения, TAB Books, Саммит Блю Ридж, Пенсильвания, 1988. стр. 6, 7-11.
  5. ^ Канер, Джем; Бах, Джеймс; Петтихорд, Брет (2001). Уроки, полученные при тестировании программного обеспечения. Джон Уайли и сыновья. ISBN  978-0-471-08112-8.
  6. ^ Джем Канер, Джеймс Бах, Исследовательское и риск-ориентированное тестирование, www.testingeducation.org, 2004, с. 10
  7. ^ Джем Канер, Джеймс Бах, Исследовательское и риск-ориентированное тестирование, www.testingeducation.org, 2004, с. 14
  8. ^ Итконен, Юха; Мянтюля, Мика В. (11.07.2013). «Нужны ли тестовые примеры? Повторяющееся сравнение исследовательского и тестового тестирования программного обеспечения». Эмпирическая разработка программного обеспечения. 19 (2): 303–342. CiteSeerX  10.1.1.363.6524. Дои:10.1007 / s10664-013-9266-8. ISSN  1382-3256.
  9. ^ Itkonen, J .; Mäntylä, M. V .; Лассениус, К. (2013-05-01). «Роль знаний тестировщика в исследовательском тестировании программного обеспечения». IEEE Transactions по разработке программного обеспечения. 39 (5): 707–724. Дои:10.1109 / TSE.2012.55. ISSN  0098-5589.
  10. ^ Itkonen, J .; Раутиайнен, К. (2005-11-01). Исследовательское тестирование: изучение нескольких примеров. 2005 Международный симпозиум по эмпирической разработке программного обеспечения, 2005 г.. С. 10 с. Дои:10.1109 / ISESE.2005.1541817. ISBN  978-0-7803-9507-7.
  11. ^ Пфаль, Дитмар; Инь, Хуэйши; Mäntylä, Mika V .; Мюнх, Юрген (01.01.2014). Как используется исследовательское тестирование? Обзор состояния практики. Материалы 8-го Международного симпозиума ACM / IEEE по эмпирической разработке программного обеспечения и измерениям. ESEM '14. Нью-Йорк, Нью-Йорк, США: ACM. С. 5: 1–5: 10. Дои:10.1145/2652524.2652531. HDL:10138/153363. ISBN  9781450327749.
  12. ^ а б Бах, Джеймс (2003). «Объяснение исследовательского тестирования» (PDF). Satisfice.com. п. 7. Получено 23 октября, 2010.
  13. ^ Канер, Джем (2008). "Учебное пособие по исследовательскому тестированию" (PDF). kaner.com. стр.37, 118. Получено 23 октября, 2010.

внешняя ссылка