Инспекции и сквозные просмотры

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

Инспекции и сквозные просмотры включают в себя чтение или визуальную проверку программы группой лиц. Эти методы развиты из идей Вейн­бер­га. Оба метода предполагают некоторую подготовительную работу. Завершающим этапом является «обмен мнениями» — собрание, проводимое участниками проверки. Цель такого собрания — нахождение ошибок, но не их устранение (т.е. тестирование, а не отладка).

Инспекции и сквозные просмотры широко практикуются в настоящее время, но причины их успеха до сих пор еще недостаточно выяснены. Не удивительно, что они связаны с некоторыми принципами (п. 6.2). Заметим, что данный процесс выполняется группой лиц (оптимально — три-че­ты­ре человека), лишь один из которых является автором программы. Следовательно, программа, по существу, тестируется не автором, а другими людьми, которые руководствуются изложенными выше принципами, обычно не эффективными при тестировании собственной программы. Фактически, «инспекция» и «сквозной просмотр» — просто новые названия старого метода «проверки за столом» (состоящего в том, что программист просматривает свою программу перед ее тестированием), однако они гораздо более эффективны опять-та­ки по той же причине: в процессе участвует не только автор программы, но и другие лица. Результатом использования этих методов, по-ви­ди­мо­му, также является более низкая стоимость отладки (исправления ошибок), так как во время поиска ошибок обычно точно определяют их природу. Кроме того, с помощью данных методов обнаруживают группы ошибок, что позволяет в дальнейшем корректировать несколько ошибок сразу. С другой стороны, при тестировании на ЭВМ обычно выявляют только симптомы ошибок (например, программа не закончилась или напечатала бессмысленный результат), а сами они определяются поодиночке.

Эксперименты по применению этих методов показали, что с их помощью для типичных программ можно находить от 30 до 70 % ошибок логического проектирования и кодирования (однако эти методы не эффективны при определении ошибок проектирования «высокого уровня», например сделанных в процессе анализа требований). Так, экспериментально установлено, что при проведении инспекций и сквозных просмотров определяются в среднем 38 % общего числа ошибок в учебных программах. При использовании инспекций исходного текста в фирме IBM эффективность обнаружения ошибок составляет 80 % (в данном случае имеется в виду не 80 % общего числа ошибок, поскольку, как отмечалось в п. 6.2, общее число ошибок в программе никогда не известно, а 80 % всех ошибок, найденных к моменту окончания процесса тестирования). Конечно, можно критиковать эту статистику в предположении, что ручные методы тестирования позволяют находить только «легкие» ошибки (те, которые можно просто найти при тестировании на ЭВМ), а трудные, незаметные или необычные ошибки можно обнаружить только при тестировании на машине. Однако проведенные исследования показали, что подобная критика является необоснованной. Исследователи сделали также вывод о том, что при нахождении определенных типов ошибок ручное тестирование более эффективно, чем тестирование на ЭВМ, в то время как для других типов ошибок верно противоположное утверждение. Подразумевается, что инспекции, сквозные просмотры и тестирование, основанное на использовании ЭВМ, дополняют друг друга; эффективность обнаружения ошибок уменьшится, если тот или иной из этих подходов не будет использован.

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