Калайда В.Т., Романенко В.В. Технология разработки программного обеспечения (2007) (1095890), страница 18
Текст из файла (страница 18)
Соответствуют ли друг другуоператоры DO и END?8. Существуют ли неявные решения?Ввод-вывод1. Правильны ли атрибуты файлов?2. Правильны ли атрибуты оператораOPEN?3. Соответствует ли форматспецификации операторам вводавывода?4. Соответствует ли размер буфераразмеру записи?5. Открыты ли файлы перед ихиспользованием?6. Обнаруживаются ли признаки концафайла?7.
Обнаруживаются ли ошибки вводавывода?8. Существуют ли какие-нибудьтекстовые ошибки в выходнойинформации?Интерфейс1. Равно ли число входных параметров числуаргументов?2. Соответствуют ли атрибуты параметров иаргументов?3. Соответствуют ли единицы измерения параметров иаргументов?4. Равно ли число аргументов, передаваемыхвызываемым модулем, числу параметров?5. Соответствуют ли атрибуты аргументов,передаваемых вызываемым модулем, единицамизмерения параметров?6.
Совпадают ли единицы измерения аргументов,передаваемых вызываемым модулем, единицамизмерения параметров?7. Правильно ли заданы число, атрибуты и порядокследования аргументов для встроенных функций?8. Существуют ли какие-нибудь обращения кпараметрам, не связанным с текущей точкой входа?9.
Не изменяет ли подпрограмма аргументы,являющиеся только входными?10. Согласуются ли определения глобальныхпеременных во всех использующих модулях?11. Передаются ли в качестве аргумента константы?Другие виды контроля1. Есть ли в таблицеперекрестных ссылоккакие-нибудьпеременные, на которыенет ссылок?2. Список атрибутовтакой, который иожидался?3. Есть ли какие-нибудьпредупреждения илиинформационныесообщения?4. Осуществляется ликонтроль правильностивходных данных?5. Нет ли пропущенныхфункций?Рис. 6.4 — Сводный список вопросов для выявления ошибокпри инспекции (часть 2)1164.
Равен ли размеру записи размер области памяти дляввода-вывода? Это может быть важно при блочном вводе-выводе (функции BLOCKREAD и BLOCKWRITE в Паскале, FREADи FWRITE в Си).5. Все ли файлы открыты перед их использованием?6. Правильно ли обнаруживаются и трактуются признакиконца файла?7. Правильно ли трактуются ошибочные состояния вводавывода?8. Существуют ли смысловые или грамматические ошибки в тексте, выводимом программой на печать или экран дисплея?6.3.3.8 Другие виды контроля1.
Если компилятор выдает таблицу перекрестных ссылокидентификаторов, проверьте величины, на которые в этомсписке нет ссылок или есть только одна ссылка.2. Если компилятор выдает список атрибутов, проверьтеатрибуты каждой величины для обеспечения гарантии того, чтов программе нет никаких неожиданных и отсутствующих атрибутов.3. Если программа оттранслирована успешно, но компилятор выдает одно или несколько «предупреждений» или «информационных» сообщений, внимательно проверьте каждое изних. Предупреждение свидетельствует о «подозрениях» компилятора в отношении правильности ваших действий.
Все эти«подозрения» должны быть рассмотрены. В информационныхсообщениях могут перечисляться неописанные переменные иликонструкции языка, которые препятствуют оптимизации кода.4. Является ли программа (или модуль) достаточно устойчивой? Иными словами, проверяет ли она правильность своихвходных данных?5. Не пропущена ли в программе какая-нибудь функция?Сводный список вопросов для выявления ошибок приведен на рис. 6.3 и 6.4.1176.3.4 Сквозные просмотрыСквозной просмотр, как и инспекции, представляет собойнабор процедур и способов обнаружения, осуществляемыхгруппой лиц, просматривающих текст программы. Такой просмотр имеет много общего с процессом инспектирования, но ихпроцедуры несколько отличаются, и, кроме того, здесь используются другие методы обнаружения ошибок.Подобно инспекции, сквозной просмотр проводитсякак непрерывное заседание, продолжающееся один или два часа.
Группа по выполнению сквозного просмотра состоит из3—5 человек. В нее входят председатель, функции которогоподобны функциям председателя в группе инспектирования, секретарь, который записывает все найденные ошибки, и специалист по тестированию. Мнения о том, кто должен быть четвертым и пятым членами группы, расходятся. Конечно, одним изних должен быть программист. Относительно пятого участникаимеются следующие предположения:1) высококвалифицированный программист;2) эксперт по языку программирования;3) начинающий (на точку зрения которого не влияет предыдущий опыт);4) человек, который будет, в конечном счете, эксплуатировать программу;5) участник какого-нибудь другого проекта;6) кто-либо из той же группы программистов, что и авторпрограммы.Начальная процедура при сквозном просмотре такая же,как и при инспекции: участникам заранее, за несколько дней дозаседания, раздаются материалы, позволяющие им ознакомиться с программой.
Однако процедура заседания отличается отпроцедуры инспекционного заседания. Вместо того, чтобы просто читать текст программы или использовать список ошибок,участники заседания «исполняют роль вычислительной машины». Лицо, назначенное тестирующим, предлагает собравшимсянебольшое число написанных на бумаге тестов, представляющих собой наборы входных данных (и ожидаемых выходныхданных) для программ или модуля. Во время заседания каждыйтест мысленно выполняется.
Это означает, что тестовые данные118подвергаются обработке в соответствии с логикой программы.Состояние программы (т.е. значения переменных) отслеживается на бумаге или доске.Конечно, число тестов должно быть небольшим и онидолжны быть простыми по своей природе, потому что скоростьвыполнения программы человеком на много порядков меньше,чем у машины.
Следовательно, тесты сами по себе не играюткритической роли, скорее они служат средством для первоначального понимания программы и основой для вопросов программисту о логике проектирования и принятых допущениях. Вбольшинстве сквозных просмотров при выполнении самих тестов находят меньше ошибок, чем при опросе программиста.Как и при инспекции, мнение участников является решающим фактором.
Замечания должны быть адресованы программе, а не программисту. Другими словами, ошибки не рассматриваются как слабость человека, который их совершил. Онисвидетельствуют о сложности процесса создания программ иявляются результатом все еще примитивной природы существующих методов программирования.Сквозные просмотры должны протекать так же, как иописанный ранее прогресс инспектирования. Побочные эффекты, получаемые во время выполнения этого процесса (установление склонных к ошибкам частей программы и обучение наоснове анализа ошибок, стиля и методов), характерны и дляпроцесса сквозных просмотров.6.3.5 Оценка посредством просмотраПоследний ручной процесс обзора программы не связан сее тестированием (т.е. целью его не является нахождение ошибок).
Однако описание этого процесса приводится здесь потому, что он имеет отношение к идее чтения текста.Оценка посредством просмотра является методом оценкианонимной программы в терминах ее общего качества, ремонтопригодности, расширяемости, простоты эксплуатации иясности. Цель данного метода — обеспечить программистасредствами самооценки. Выбирается программист, которыйдолжен выполнять обязанности администратора процесса. Администратор, в свою очередь, отбирает приблизительно 6—11920 участников (6 — минимальное число для сохранения анонимности).
Предполагается, что участники должны быть одногопрофиля (например, в одну группу не следует объединять программистов, использующих Кобол, и системных программистов, пишущих на Ассемблере). Каждого участника просятпредставить для рассмотрения две свои программы — наилучшую (с его точки зрения) и низкого качества.Отобранные программы случайным образом «распределяются между участниками. Им дается на рассмотрение по четырепрограммы.
Две из них являются «наилучшими», а две — «наихудшими», но рецензенту не сообщают о том, какая программак какой группе относится. Каждый участник тратит на просмотр одной программы 30 мин и заполняет анкету для ее оценки. После просмотра всех четырех программ оценивается их относительное качество. В анкете для оценки проверяющемупредлагается оценить программу по семибалльной шкале(1 означает определенное «да», 7 — определенное «нет») приответе, например, на следующие вопросы: Легко ли было понять программу? Оказались ли результаты проектирования высокогоуровня очевидными и приемлемыми? Оказались ли результаты проектирования низкогоуровня очевидными и приемлемыми? Легко ли для вас модифицировать эту программу? Испытывали бы вы чувство удовлетворения, написавтакую программу?Проверяющего просят также дать общий комментарий ирекомендации по улучшению программы.
После просмотракаждому участнику передают анонимную анкету с оценкойдвух его программ. Участники получают статистическую сводку, которая содержит общую и детальную классификацию ихсобственных программ в сравнении с полным набором программ, и анализ того, насколько оценки чужих программ совпадают с оценками тех же самых программ, данными другимипроверяющими. Цель такого просмотра — дать возможностьпрограммистам самим оценить свою квалификацию. Этотспособ представляется полезным как для промышленного, так идля учебного применения.1206.4 Проектирование тестаРезультаты психологических исследований, обсуждавшиеся в п. 6.2, показывают, что наибольшее внимание при тестировании программ уделяется проектированию или созданию эффективных тестов.
Это связано с невозможностью «полного»тестирования программы, т.е. тест для любой программы будетобязательно неполным (иными словами, тестирование не можетгарантировать отсутствия всех ошибок). Стратегия проектирования заключается в том, чтобы попытаться уменьшить эту «неполноту» настолько, насколько это возможно.Если ввести ограничения на время, стоимость, машинноевремя и т.п., то ключевым вопросом тестирования становитсяследующий:Какое подмножество всех возможных тестов имеетнаивысшую вероятность обнаружения большинства ошибок?Изучение методологий проектирования тестов дает ответна этот вопрос.По-видимому, наихудшей из всех методологий являетсятестирование со случайными входными значениями (стохастическое) — процесс тестирования программы путем случайноговыбора некоторого подмножества из всех возможных входныхвеличин.
В терминах вероятности обнаружения большинстваошибок случайно выбранный набор тестов имеет малую вероятность быть оптимальным или близким к оптимальному подмножеством. В настоящем разделе рассматривается несколько подходов, которые позволяют более разумно выбирать тестовыеданные. В п. 6.2 было показано, что исчерпывающее тестирование по принципу черного или белого ящика в общем случае невозможно. Однако при этом отмечалось, что приемлемая стратегия тестирования может обладать элементами обоих подходов.