Калайда В.Т., Романенко В.В. Технология разработки программного обеспечения (2007) (1095890), страница 15
Текст из файла (страница 15)
Во-первых,они обычно позволяют раньше обнаружить ошибки, уменьшитьстоимость исправления последних и увеличить вероятностьтого, что корректировка произведена правильно. Во-вторых,психология программистов, по-видимому, изменяется, когда начинается тестирование на ЭВМ. Возрастает внутреннее напряжение, и появляется тенденция «исправлять ошибки так быстро,как только это возможно». В результате программисты допускают больше промахов при корректировке ошибок, уже найден-99ных во время тестирования на ЭВМ, чем при корректировкеошибок, найденных на более ранних этапах.6.3.1 Инспекции и сквозные просмотрыИнспекции исходного текста и сквозные просмотры являются основными методами ручного тестирования.
Так как этидва метода имеют много общего, они рассматриваются здесьсовместно. Различия между ними обсуждаются в последующихразделах.Инспекции и сквозные просмотры включают в себя чтение или визуальную проверку программы группой лиц. Эти методы развиты из идей Вейнберга. Оба метода предполагают некоторую подготовительную работу. Завершающим этапом является «обмен мнениями» — собрание, проводимое участниками проверки. Цель такого собрания — нахождение ошибок, ноне их устранение (т.е. тестирование, а не отладка).Инспекции и сквозные просмотры широко практикуютсяв настоящее время, но причины их успеха до сих пор еще недостаточно выяснены. Не удивительно, что они связаны с некоторыми принципами (п.
6.2). Заметим, что данный процесс выполняется группой лиц (оптимально — три-четыре человека), лишьодин из которых является автором программы. Следовательно,программа, по существу, тестируется не автором, а другимилюдьми, которые руководствуются изложенными выше принципами, обычно не эффективными при тестировании собственнойпрограммы. Фактически, «инспекция» и «сквозной просмотр»— просто новые названия старого метода «проверки за столом»(состоящего в том, что программист просматривает свою программу перед ее тестированием), однако они гораздо более эффективны опять-таки по той же причине: в процессе участвуетне только автор программы, но и другие лица.
Результатом использования этих методов, по-видимому, также является болеенизкая стоимость отладки (исправления ошибок), так как вовремя поиска ошибок обычно точно определяют их природу.Кроме того, с помощью данных методов обнаруживают группыошибок, что позволяет в дальнейшем корректировать несколькоошибок сразу. С другой стороны, при тестировании на ЭВМобычно выявляют только симптомы ошибок (например, про-100грамма не закончилась или напечатала бессмысленный результат), а сами они определяются поодиночке.Эксперименты по применению этих методов показали,что с их помощью для типичных программ можно находить от30 до 70 % ошибок логического проектирования и кодирования(однако эти методы не эффективны при определении ошибокпроектирования «высокого уровня», например сделанных в процессе анализа требований).
Так, экспериментально установлено,что при проведении инспекций и сквозных просмотров определяются в среднем 38 % общего числа ошибок в учебных программах. При использовании инспекций исходного текста вфирме IBM эффективность обнаружения ошибок составляет80 % (в данном случае имеется в виду не 80 % общего числаошибок, поскольку, как отмечалось в п. 6.2, общее число ошибок в программе никогда не известно, а 80 % всех ошибок,найденных к моменту окончания процесса тестирования). Конечно, можно критиковать эту статистику в предположении,что ручные методы тестирования позволяют находить только«легкие» ошибки (те, которые можно просто найти при тестировании на ЭВМ), а трудные, незаметные или необычные ошибки можно обнаружить только при тестировании на машине.
Однако проведенные исследования показали, что подобная критика является необоснованной. Исследователи сделали также вывод о том, что при нахождении определенных типов ошибокручное тестирование более эффективно, чем тестирование наЭВМ, в то время как для других типов ошибок верно противоположное утверждение. Подразумевается, что инспекции,сквозные просмотры и тестирование, основанное на использовании ЭВМ, дополняют друг друга; эффективность обнаружения ошибок уменьшится, если тот или иной из этих подходовне будет использован.Наконец, хотя эти методы весьма важны при тестировании новых программ, они представляют не меньшую ценностьпри тестировании модифицированных программ.
Опыт показал,что в случае модификации существующих программ вноситсябольшее число ошибок (измеряемое числом ошибок на вновьнаписанные операторы), чем при написании новой программы.Следовательно, модифицированные программы также должныбыть подвергнуты тестированию с применением данных методов.1016.3.2 Инспекции исходного текстаИнспекции исходного текста представляют собой наборпроцедур и приемов обнаружения ошибок при изучении (чтении) текста группой специалистов.
При рассмотрении инспекций исходного текста внимание будет сосредоточено в основных процедурах, формах выполнения и т.д.; после краткого изложения основной процедуры мы изучим существующие методы обнаружения ошибок.Инспектирующая группа включает обычно четыре человека, один из которых выполняет функции председателя. Председатель должен быть компетентным программистом, но не автором программы; он не должен быть знаком с ее деталями. Вобязанности председателя входят подготовка материалов длязаседаний инспектирующей группы и составление графика ихпроведения, ведение заседаний, регистрация всех найденныхошибок и принятие мер по их последующему исправлению.Председателя можно сравнить с инженером отдела технического контроля. Членами группы являются автор программы,проектировщик (если он не программист) и специалист по тестированию.Общая процедура заключается в следующем.
Председатель заранее (например, за несколько дней) раздает листингпрограммы и проектную спецификацию остальным членамгруппы. Они знакомятся с материалами, предшествующими заседанию. Инспекционное заседание разбивается на две части:1. Программиста просят рассказать о логике работы программы. Во время беседы возникают вопросы, преследующие цель обнаружения ошибки.
Практика показала, что даже только чтение своей программы слушателям представляется эффективным методом обнаружения ошибок и многие ошибки находит сам программист, а не другие члены группы.2. Программа анализируется по списку вопросов для выявления исторически сложившихся общих ошибокпрограммирования (такой список будет рассмотрен вследующем разделе).Председатель является ответственным за обеспечение результативности дискуссии. Ее участники должны сосредоточить102свое внимание на нахождении ошибок, а не на их корректировке (корректировка ошибок выполняется программистом послеинспекционного заседания).По окончании заседания программисту передается списокнайденных ошибок.
Если список включает много ошибок илиесли эти ошибки требуют внесения значительных изменений,председателем может быть принято решение о проведении после корректировки повторной инспекции программы. Списоканализируется, и ошибки распределяются по категориям, чтопозволяет совершенствовать его с целью повышения эффективности будущих инспекций.В большинстве примеров описания процесса инспектирования утверждается, что во время инспекционного заседанияошибки не должны корректироваться. Однако существует идругая точка зрения: вместо того, чтобы сначала сосредоточиться на основных проблемах проектирования, необходимо решитьвторостепенные вопросы.
Два или три человека, включая разработчика программы, должны внести очевидные исправления впроект с тем, чтобы впоследствии решить главные задачи. Однако обсуждение второстепенных вопросов сконцентрируетвнимание группы на частной области проектирования. Во времяобсуждения наилучшего способа внесения изменений в проекткто-либо из членов группы может заметить еще одну проблему.Теперь группе придется рассматривать две проблемы по отношению к одним и тем же аспектам проектирования, объяснениябудут полными и быстрыми. В течение нескольких минут целаяобласть проекта может быть полностью исследована, и любыепроблемы станут очевидными. Как упоминалось выше, многиеважные проблемы, возникавшие во время обзоров блок-схем,были решены в результате многократных безуспешных попыток решить вопросы, которые на первый взгляд казались «тривиальными».Время и место проведения инспекции должны быть спланированы так, чтобы избежать любых прерываний инспекционного заседания.
Его оптимальная продолжительность, по-видимому, лежит в пределах от 90 до 120 мин. Так как это заседание является экспериментом, требующим умственного напряжения, увеличение его продолжительности ведет к снижению продуктивности. Большинство инспекций происходит при скоро-103сти, равной приблизительно 150 операторам в час. При этомподразумевается, что большие программы должны рассматриваться за несколько инспекций, каждая из которых может бытьсвязана с одним или несколькими модулями или подпрограммами.Для того чтобы инспекция была эффективной, должныбыть установлены соответствующие отношения.
Если программист воспринимает инспекцию как акт, направленный личнопротив него, и, следовательно, занимает оборонительную позицию, процесс инспектирования не будет эффективным. Программист должен подходить к нему с менее эгоистической позиции; он должен рассматривать инспекцию в позитивном иконструктивном свете. Объективно инспекция является процессом нахождения ошибок в программе и, таким образом, улучшает качество его работы. По этой причине, как правило, рекомендуется результаты инспекции считать конфиденциальнымиматериалами, доступными только участникам заседания. Вчастности, использование результатов инспекции руководствомможет нанести ущерб целям этого процесса.Процесс инспектирования, в дополнение к своему основному назначению, заключающемуся в нахождении ошибок, выполняет еще ряд полезных функций. Кроме того, что результаты инспекции позволяют программисту увидеть сделанные имошибки и способствуют его обучению на собственных ошибках, он обычно получает возможность оценить свой стиль программирования и выбор алгоритмов и методов тестирования.Остальные участники также приобретают опыт, рассматриваяошибки и стиль программирования других программистов.Наконец, инспекция является способом раннего выявления наиболее склонных к ошибкам частей программы, позволяющим сконцентрировать внимание на этих частях в процессевыполнения тестирования на ЭВМ (один из принципов тестирования п.