Московский Государственный Технический Университет им. Н.Э. Баумана Факультет “Информатика и системы управления” Кафедра “Компьютерные системы и сети” Лабораторная работа №2 по курсу “Технология программирования” Тестирование программного обеспечения. Выполнил: Рябухин С.Г. Группа: ВИУ6-71 Проверил: Пугачев Е.К.. Москва 2007 Цель работы - знакомство с существующими стратегиями тестирования, приобретение навыков выбора стратегии и разработки тестов для отдельных задач, сравнение и оценка различных методов тестирования и их возможностей. 1. Структурный контроль {Вар.7. Размер ренты в расчете на 1 $ определяется следующим образом: S (1 r ) n 1 r , где r - норма процента, n - количество периодов времени. Оп-ределить r при заданных S и n. } program ex1; var S,S1,S2,St,n,r,r1,r2,rt,eps:real; existr:boolean; function Vren(r,n:real):real; begin Vren:=(exp(n*ln(1+r)-1)/r) end; begin writeln('Введите размер ренты:'); readln(S); writeln('Введите количество периодов времени:'); readln(n); writeln('Введите допустимую погрешность:'); readln(eps); r1:=0.01; S1:=Vren(r1,n); while S1>S do begin r1:=r1/2; S1:=Vren(n, r1) end; r2:=1; S2:=Vren(n, r2); while S2<S do begin r2:=r2*2; S2:=Vren(r2, n) end; rt:=(S-S1)*(r2-r1)/(S2-S1)+r1; St:=Vren(n, rt); r:=0; while abs(rt-r)<eps do begin if St>S then begin S2:=St;r2:=rt end else begin S1:=St;r1:=rt end; r:=rt; rt:=(S-S1)*(r2-r1)/(S2-S1)+r1; St:=Vren(rt,n) end; writeln('Норма процента=', rt:1:2) end. Номе р вопроса 1.1 Строки, подлежащие проверке 12 18 24 30 Результат проверки S-вводиться S1 – рез-т. ф-ции S2- рез-т. ф-ции St – рез-т ф-ции Вывод Не все переменные инициализированы 14 31 17 23 29 16 6 1.2 1.3 1.6 1.4 n – вводиться r=0 r1=0.01 r2=1 rt – расчет eps – вводиться existr –не определяется Массивы отсутствуют - 8 Функция использует глобальные переменные как формальные параметры 1.5 2.1 5,6,8,9,11,17,18,19, 20,21,23,23,26,27,29, 30,31,32,33,34,36,37,38,40 Все операторы записаны в соответствие с синтаксисом 2.2 2.3. 9 Не верное выражение для вычисления ренты 2.4 2.5 32 Abs(rt-r)<eps 2.6 3.1 3.2 3.3 19-22 25-28 32-38 19-22 25-28 32-38 12-16 4.2 8,9 4.3 8,9 Не арифметические переменные не инициализированы Ошибка Переполнение или деление на 0 не возможно Соответствует точности Сравнения переменных различного типа отсутствуют Все циклы завершаются Все циклы могут быть пропущены по входным условиям. Поисковые циклы отсутствуют Соответствуют 3.4 4.1 Присутствуют как параметры функции Файлы не используются Все верно Подпрограмма значения переменных не изменяет Функция Область действия не нарушается Методы ручного контроля предназначены для периода разработки, когда программа закодирована, но тестирование на машине еще не началось. Доказано, что эти методы способствуют существенному увеличению производительности и повышению надежности программ и с их помощью можно находить от 30 до 70% ошибок логического проектирования и кодирования. 2. Стратегия “белого ящика” Номер теста 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Назначение Значения теста исходных данных покрытия a=0 f=1 d=0 операторов a=2 f=2 d=1 a=-12 f=-16 d=1 Покрытие a=0 f=1 d=0 решений a=2 f=2 d=1 (переходов) a=-12 f=-16 d=1 a=-11 f=-12 d=0 Покрытие a=0 f=0 d=0 условий a=-20 f=-10 d=-15 a=0 f=-15 d=5 Покрытие a=0 f=0 d=0 решений/условий a=1 f=1 d=0 a=2 f=2 d=1 a=-12 f=-16 d=1 a=-20 f=-10 d=-15 Комбинато a=-1 f=-1 d=0 рное покрытие a=-20 f=-20 d=-40 условий. a=-5 f=5 d=-10 a=-20 f=-20 d=0 Ожидаемый результат q=0 q=4 q=8 q=0 q=4 q=8 q-? q=0 q=-25 q-? q=1 q=? q=4 q=8 q=25 q=1 q=-10 q=-125 q=400 Стратегия тестирования по принципу «белого ящика», или стратегия тестирования, управляемая логикой программы (с учетом алгоритма), позволяет проверить внутреннюю структуру программы. В этом случае тестирующий получает тестовые данные путем анализа логики программы. Подразумевается, что программа проверена полностью, если с помощью тестов удается осуществить выполнение программы по всем возможным маршрутам передач управления. Однако, нетрудно видеть, что даже в программе среднего уровня сложности число неповторяющихся маршрутов астрономическое и, следовательно, исчерпывающее тестирование маршрутов невозможно. Кроме того, метод исчерпывающего тестирования маршрутов имеет ряд недостатков: метод не обнаруживает пропущенные маршруты; не обнаруживает ошибок, появление которых зависит от обрабатываемых данных (например, if (a-b)< eps - пропуск функции abs проявится только, если a<b); не дает гарантии, что программа соответствует описанию (например, если вместо сортировки по убыванию написана сортировка по возрастанию). 3. Тестирование по принципу «черного ящика». Задача 7. Программа должна вычислять с заданной точностью значение интеграла функции F ( x) x 2 на введенном с клавиатуры интервале от a до b. Н Назначе ние теста 1 2 3 4 5 Метод эквивалентных разбиений омер теста предположения об ошибке Значения исходных данных a=1 b=2 eps =1 а=1 b=2 eps=0.1 a=0.1 b=2 eps=0.1 a=0.1 b=0.5 eps=0.01 a=0 b=0 eps=0 Ожидаем ый результат Ошибка 2,333333 2,666333 0,04133 Ошибка Реакция Вывод программы Ок Ok Ok Ok Ok -1,8*10-9 2,3 2,77 0,041 0 Недостатком метода эквивалентных разбиения в том, что он не исследует комбинации входных условий.. Процедура метода предположения об ошибке в значительной степени основана на интуиции. Основная идея метода состоит в том, чтобы перечислить в некотором списке возможные ошибки или ситуации, в которых они могут появиться, а затем на основе этого списка составить тесты. Другими словами, требуется перечислить те специальные случаи, которые могут быть не учтены при проектировании.