Введение

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

История

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

Описание

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

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

Основное преимущество исследовательского тестирования заключается в том, что требуется меньше подготовки, важные ошибки находят быстро, а во время выполнения подход, как правило, более интеллектуально стимулирующий, чем выполнение скриптированных тестов. Еще одно важное преимущество заключается в том, что тестеры могут использовать дедуктивные рассуждения, основанные на результатах предыдущих результатов, для руководства их будущими испытаниями на лету. Им не нужно завершать текущую серию скриптированных тестов, прежде чем сосредоточиться на исследовании более целевой среды. Это также ускоряет обнаружение ошибок при разумном использовании. Еще одно преимущество заключается в том, что после первоначального тестирования большинство ошибок обнаруживаются с помощью исследовательского тестирования. Это можно продемонстрировать логически, заявив: "Программы, которые проходят определенные тесты, имеют тенденцию продолжать проходить те же тесты и с большей вероятностью провалят другие тесты или сценарии, которые еще предстоит изучить". Недостатки заключаются в том, что тесты, изобретенные и выполненные на лету, не могут быть рассмотрены заранее (и тем самым предотвращают ошибки в коде и тестовых случаях), и что может быть трудно показать, какие именно тесты были выполнены. Идеи экспериментальных испытаний свободного стиля, когда они пересматриваются, вряд ли будут выполнены точно таким же образом, что может быть преимуществом, если важно найти новые ошибки; или недостатком, если более важно повторить конкретные детали предыдущих испытаний. Это может контролироваться с помощью специальных инструкций для испытателя или путем подготовки автоматизированных испытаний, где это возможно, целесообразно и необходимо, и в идеале как можно ближе к уровню единицы.

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

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

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

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