Тестирование циклов

Download Report

Transcript Тестирование циклов

Тестирование циклов
циклы с предусловием и с постусловием
Простые циклы
Вложенные циклы
• 1. Выбирается самый внутренний цикл.
Устанавливаются минимальные значения
параметров всех остальных циклов.
• 2. Для внутреннего цикла проводятся тесты
простого цикла. Добавляются тесты для
исключенных значений и значений,
выходящих за пределы рабочего диапазона.
• 3. Переходят в следующий по порядку
объемлющий цикл. Выполняют его
тестирование. При этом сохраняются
минимальные значения параметров для всех
внешних (объемлющих) циклов и типовые!
значения для всех вложенных циклов.
• 4. Работа продолжается до тех пор, пока не
будут протестированы все циклы.
Пример
•
•
•
•
•
•
•
•
for(NW1=1; NW1<=CountW1; NW1++)
for(NG1=1; NG1<=CountG1; NG1++)
for(NA1=1; NA1<=CountA1; NA1++)
for(NW2=1; NW2<=CountW2; NW2++)
for(NG2=1; NG2<=CountG2; NG2++)
for(NA2=1; NA2<=CountA2; NA2++)
{
Вычисление_и_выдача(NW1, NG1, NA1,
NW2, NG2, NA2);
• }
• for(NA2=1; NA2<=CountA2; NA2++)
• {
• Вычисление_и_выдача(1, 1, 1, 1, 1,
NA2);
• }
• for(NG2=1; NG2<=CountG2; NG2++)
• for(NA2=1; NA2<=CountA2; NA2++)
• {
• Вычисление_и_выдача(1, 1, 1, 1, NG2,
NA2);
• }
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
for(NW1=1; NW1<=CountW1; NW1++)
{
CountG1=Подготовка1(NW1);
for(NG1=1; NG1<=CountG1; NG1++)
{
CountA1=Подготовка2(NW1,NG1);
for(NA1=1; NA1<=CountA1; NA1++)
{
CountW2=Подготовка3(NW1,NG1,NA1);
for(NW2=1; NW2<=CountW2; NW2++)
{
CountG2=Подготовка4(NW1,NG1,NA1,NW2);
for(NG2=1; NG2<=CountG2; NG2++)
{
CountA2=Подготовка5(NW1,NG1,NA1,NW2);
for(NA2=1; NA2<=CountA2; NA2++)
{
Вычисление_и_выдача(NW1, NG1, NA1, NW2, NG2, NA2);
}
}
}
}
}
Граничные условия цикла
1. Особое внимание при тестировании циклов
надо уделить поведению программы при
входе в цикл и при выходе их него.
2. Для циклов с постусловием и предусловием
должны быть спроектированы тесты для
всех вариантов истинности составляющих
их высказываний. Для цикла с предусловием
следует придумать тесты, при которых:
– цикл выполнялся бы только один раз;
– предусловие было бы ложно с самого начала, т.е.
входа в цикл вообще бы не происходило;
– цикл выполнялся бы максимальное число раз.
Пример
while not eof(F) do
begin
readln(F,S);
if S[1]=’*’ then break;
end;
Отладка
Отладкой называется процесс
выявления природы ошибки
программы и исправления ошибок,
после того, как ошибки были
обнаружены в процессе
тестирования.
Общие этапы отладки
•
•
•
•
•
1 этап - изучение проявления ошибки.
2 этап - локализация ошибки.
3 этап - определение причины ошибки.
4 этап - исправление ошибки.
5 этап - повторное тестирование повторение всех тестов с начала.
Ошибки
• синтаксические ошибки и ошибки
компоновки
• ошибки выполнения
Ошибки выполнения
• сообщение об ошибке системы контроля
выполнения машинных команд
(переполнение, деление на ноль, нарушение
адресации и т. п.);
• сообщение об ошибке операционной системы
(нарушении защиты памяти, попытке записи
на устройства, защищенные от записи,
отсутствии файла с заданным именем и т. п.);
• «зависание» компьютера;
• несовпадение полученных результатов с
ожидаемыми.
Причины ошибок
• неверное определение исходных
данных;
• логические ошибки;
• накопление погрешностей результатов
вычислений.
Cложность отладки
• опосредованное проявления ошибок;
• возможность взаимовлияния ошибок;
• возможность получения внешне одинаковых
проявлений разных ошибок;
• отсутствие повторяемости проявлений некоторых
ошибок от запуска к запуску – так называемые
стохастические ошибки;
• возможность изменения внешних проявлений ошибок
при внесении изменений в программу;
• написание отдельных частей программы разными
программистами.
Методы отладки
•
•
•
•
метод ручного тестирования;
метод обратного прослеживания.
метод индукции (накопление улик);
метод дедукции (анализ причин);
Средства отладки
• отладочный вывод;
• интегрированные средства отладки;
• независимые отладчики
Бесплатные советы
1. Следует более тщательно проверять фрагменты
программного обеспечения, где уже были
обнаружены ошибки, так как вероятность ошибок в
этих местах по статистике выше.
2. Затиранием памяти называют ошибки,
возникающие в результате записи некоторой
информации не на свое место. Определение
фрагмента программы, который затирает память сложная задача, причем, чем длиннее программа,
тем сложнее искать ошибки такого рода. В этом
случае часто прибегают к удалению из программы ее
частей. Но эффективнее:
– попытаться определить операторы, которые записывают
данные в память не по имени, а по адресу, и
последовательно их проверить.
– обратить особое внимание на корректное распределение
памяти под данные.