2.4. Для всех ли обращений с помощью указателей или переменных-ссылок память, к которой производится обращение, распределена (есть ли "подвешенные" обращения)?
2.5. Корректны ли атрибуты при всех псевдонимах? Если одна и та же область памяти имеет несколько псевдонимов (имен) с разными атрибутами, то имеют ли значения данных в этой области корректные атрибуты при обращении по одному из этих псевдонимов?
2.6. Соответствуют ли атрибуты записи и структуры?
2.7. Отличаются ли типы или атрибуты переменных величин от тех, которые предполагались компилятором? Это может произойти в том случае, когда программа считывает записи из памяти и обращается к ним как к структурам, но физическое представление записей отлично от описания структуры.
2.8. Вычислимы ли адреса битовых строк? Передаются ли битовые строки в качестве аргументов?
2.9. Если к структуре данных обращаются из нескольких процедур или подпрограмм, то определена ли эта структура одинаково в каждой процедуре?
2.10. Не превышены ли границы строки при индексации в ней?
2.11.Существуют ли какие-нибудь другие ошибки в операциях с индексацией или при обращении к массиву по индексу?
3. Корректность описания данных
3.1. Все ли переменные описаны явно?
3.2. Если начальные значения присваиваются переменным в операторах описания, то правильно ли инициализируются эти значения?
3.3. Правильно ли для каждой переменной определены длина, тип и класс памяти?
3.4. Согласуется ли инициализация переменной с ее типом памяти?
3.5. Есть ли переменные со сходными именами?
4. Корректность вычислений
4.1. Есть ли вычисления, использующие переменные недопустимых типов?
4.2. Есть ли вычисления, использующие данные разного типа (смешанные вычисления)? Возможно ли усечение дробной части?
4.3. Существуют ли
вычисления, использующие переменные одного типа, но разной
длины?
4.4. Не меньше ли длина результата, чем длина вычисляемого значения?
4.5. Возможно ли переполнение или потеря промежуточного результата во время вычисления?
4.6. Возможно ли, чтобы делитель в операторе был равен нулю?
4.7. Возможет ли выход значения переменной за пределы ее диапазона ?
4.8. Правильно ли используется целочисленная арифметика, особенно деление.
5. Корректность сравнения данных
5.1. Сравниваются ли величины несовместимых типов (например, строка символов с адресом)?
5.2. Сравниваются ли величины различных типов?
5.3. Корректны ли отношения сравнения?
5.4. Корректны ли булевские выражения?
5.5. Объединяются ли сравнения и булевские выражения?
5.6. Сравниваются ли дробные величины, представленные в двоичной форме?
5.7. Понятен ли порядок следования операторов?
6. Корректность передачи управления
6.1. Может ли значение индекса в переключателе превысить число переходов?
6.2. Будет ли завершен каждый цикл?
6.3. Будет ли завершена программа?
6.4. Возможно ли, что из-за входных условий цикл никогда не сможет выполняться?
6.5. Корректны ли возможные погружения в цикл?
6.6. Есть ли ошибки отклонения числа итераций от нормы?
6.7. Соответствуют ли друг другу операторы DO и END в группах DO-END?
7. Корректность интерфейса между модулями
7.1. Есть ли несоответствие количества, порядка, типов и размеров параметров в вызывающем и вызываемом модулях (подпрограммах)?
7.2. Если модуль имеет несколько точек входа, передается ли параметр всегда вне зависимости от точки входа?
7.3. Не изменяет ли
подпрограмма параметр, который должен использоваться только
как
входная величина?
7.4. Все ли глобальные переменные используются правильно?
7.5. Передаются ли в качестве аргументов константы?
8. Корректность ввода-вывода
8.1. Нет ли ошибок в описаниях атрибутов файлов и операторах ввода-вывода?
8.2. Соответствует ли размер буфера размеру записи?
8.3. Открыты ли файлы перед их использованием?
8.4. Обнаруживаются ли признаки конца файла?
8.5. Обнаруживаются ли ошибки ввода-вывода?
8.6. Существуют ли текстовые ошибки в выходной информации?
Приложение 3. ИНСТРУМЕНТЫ ТЕСТИРОВАНИЯ
В этом приложении приведен далеко не полный список существующих зарубежных инструментов тестирования1.
1 К сожалению, авторы не располагают сведениями о подобных отечественных инструментах.
Приложение 4. ВОПРОСЫ ДЛЯ ОЦЕНКИ РИСКА ПРОЕКТА
Вопросы для анализа и оценки риска проекта объединены в группы в соответствии с трехуровневой таксономией риска "класс-элемент-атрибут" (таблица 4.1).
Каждая из представленных ниже таблиц содержит перечень вопросов, касающихся атрибутов одного из элементов таксономии. Вопросы имеют сквозную нумерацию. Форма задания вопросов выбрана с учетом удобства автоматизации обработки вопросника.
Вопросник содержит несколько вопросов к одному атрибуту таксономии, способных прояснить угрозы качеству, стоимости и срокам разработки продукта, которые связаны с указанным атрибутом.
Каждому вопросу приписан максимальный вес, отражающий важность данного вопроса для снижения общего риска по соответствующему атрибуту. Чем выше вес, тем существеннее вопрос с точки зрения обнаружения риска.
Возможные варианты ответа на вопрос таковы: "Да", "Нет", "Частично", "Не знаю ", "Не применим ".
Ответ "Да" свидетельствует об отсутствии риска, суть которого сформулирована в вопросе.
Ответ "Нет" или "Не знаю" свидетельствует о наличии риска.
Ответ "Частично" также свидетельствует о наличии риска, но дает возможность эксперту, оценивающему риск, указать вес вопроса, отличный от предлагаемого в таблице максимального веса.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.