Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Теоретическая часть. Полное тестирование программы невозможно






Полное тестирование программы невозможно. Тест для любой программы будет обязательно неполным, то есть тестирование не гарантирует полное отсутствие ошибок в программе. Стратегия проектирования тестов заключается в том, чтобы попытаться уменьшить эту неполноту насколько это возможно.

1. Методы стратегии ‘белого ящика’

Тестирование по принципу белого ящика характеризуется степенью, какой тесты выполняют или покрывают логику (исходный текст программы).

1.1. Метод покрытия операторов

Целью этого метода тестирования является выполнение каждого оператора программы хотя бы один раз.

Пример:

Рисунок 1.1 Рисунок 1.2

В этой программе можно выполнить каждый оператор, записав один единственный тест, который реализовал бы путь ace. Т.е., если бы на входе было: А=2, В=0, Х=3, каждый оператор выполнился бы один раз. Но этот критерий на самом деле хуже, чем он кажется на первый взгляд. Пусть в первом условии вместо “ and”®“or” и во втором, вместо “x> 1”®“x< 1” (блок-схема правильной программы приведена на рисунке 1.1, а неправильной - на рисунке 2.2). Результаты тестирования приведены в таблице 1.1. Обратите внимание: ожидаемый результат определяется по алгоритму на рисунке 1.1, а фактический - по алгоритму рисунка 1.2, поскольку определяется чувствительность метода тестирования к ошибкам программирования. Как видно из этой таблицы, ни одна из внесенных в алгоритм ошибок не будет обнаружена.

Таблица 1.1 - Результат тестирования методом покрытия операторов

Тест Ожидаемый результат Фактический результат Результат тестирования
A=2, B=0, X=3 X=2, 5 X=2, 5 неуспешно

1.2. Метод покрытия решений (покрытия переходов)

Более сильный метод тестирования известен как покрытие решений (покрытие переходов). Согласно данному методу каждое направление перехода должно быть реализовано, по крайней мере, один раз.

Покрытие решений обычно удовлетворяет критерию покрытия операторов. Поскольку каждый оператор лежит на некотором пути, исходящем либо из оператора перехода, либо из точки входа программы, при выполнении каждого направления перехода каждый оператор должен быть выполнен.

Для программы приведенной на рисунке 1.2 покрытие решений может быть выполнено двумя тестами, покрывающими пути { ace, abd }, либо { aсd, abe }. Пути { aсd, abe } покроим, выбрав следующие исходные данные: {A=3, B=0, X=3} и {A=2, B=1, X=1} (результаты тестирования - в таблице 1.2).

Таблица 1.2 - Результат тестирования методом покрытия решений

Тест Ожидаемый результат Фактический результат Результат тестирования
A=3, B=0, X=3 X=1 X=1 неуспешно
А=2, В=1, Х=1 Х=2 Х=1, 5 успешно

1.3 Метод покрытия условий

Лучшие результаты по сравнению с предыдущими может дать метод покрытия условий. В этом случае записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз.

В предыдущем примере имеем четыре условия: {A> 1, B=0}, {A=2, X> 1}. Следовательно, требуется достаточное число тестов, такое, чтобы реализовать ситуации, где A> 1, A£ 1, B=0 и B¹ 0 в точке а и A=2, A¹ 2, X> 1 и X£ 1 в точке В. Тесты, удовлетворяющие критерию покрытия условий и соответствующие им пути:

а) A=2, B=0, X=4 ace

б) A=1, B=1, X=0 abd

Таблица 1.3 - Результаты тестирования методом покрытия условий

Тест Ожидаемый результат Фактический результат Результат тестирования
A=2, B=0, X=4 X=3 X=3 неуспешно
A=1, B=1, X=0 X=0 X=1 успешно

 

1.4 Критерий решений (условий)

Критерий покрытия решений/условий требует такого достаточного набора тестов, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз, все результаты каждого решения выполнялись, по крайней мере, один раз и, кроме того, каждой точке входа передавалось управление, по крайней мере, один раз.

Два теста метода покрытия условий

а) A=2, B=0, X=4 ace

б) A=1, B=1, X=0 abd
отвечают и критерию покрытия решений/условий. Это является следствием того, что одни условия приведенных решений скрывают другие условия в этих решениях. Так, если условие А> 1 будет ложным, транслятор может не проверять условия В=0, поскольку при любом результате условия В=0, результат решения ((А> 1)& (В=0)) примет значение ложь. Следовательно, недостатком критерия покрытия решений/условий является невозможность его применения для выполнения всех результатов всех условий.

Другая реализация рассматриваемого примера приведена на рисунке 1.4. Многоусловные решения исходной программы разбиты на отдельные решения и переходы. Наиболее полное покрытие тестами в этом случае выполняется так, чтобы выполнялись все возможные результаты каждого простого решения. Для этого нужно покрыть пути HILP (тест А=2, В=0, Х=4), HIMKT (тест А=3, В=1, Х=0), HJKT (тест А=0, В=0, Х=0), HJKR (тест А=0, В=0, Х=2)..

Протестировав алгоритм на рисунке 2.3, нетрудно убедиться в том, что критерии покрытия условий и критерии покрытия решений/условий недостаточно чувствительны к ошибкам в логических выражениях.

Рисунок 1.4

1.5 Метод комбинаторного покрытия условий

Критерием, который решает эти и некоторые другие проблемы, является комбинаторное покрытие условий. Он требует создания такого числа тестов, чтобы все возможные комбинации результатов условия в каждом решении выполнялись по крайней мере один раз. Набор тестов, удовлетворяющих критерию комбинаторного покрытия условий, удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий.

По этому критерию в рассматриваемом примере должны быть покрыты тестами следующие восемь комбинаций:

а) A> 1, B=0;

б)A> 1, B¹ 0;

в) A£ 1, B=0;

г) А£ 1, B¹ 0;

д) A=2, X> 1;

е) A=2, X£ 1;

ж) А¹ 2, X> 1;

з) А¹ 2, X£ 1;

Для того чтобы протестировать эти комбинации, необязательно использовать все 8 тестов. Фактически они могут быть покрыты четырьмя тестами:

- A=2, B=0, X=4 {покрывает а, д};

- A=2, B=1, X=1 {покрывает б, е};

- A=0, 5, B=0, X=2 {покрывает в, ж};

- A=1, B=0, X=1 {покрывает г, з}.

Таблица 2.4 - Результаты тестирования методом комбинаторного покрытия условий

Тест Ожидаемый результат Фактический результат Результат тестирования
A=2, B=0, X=4 X=3 X=3 неуспешно
A=2, B=1, X=1 X=2 X=1, 5 успешно
A=0, 5 B=0, X=2 X=3 X=4 успешно
A=1, B=0, X=1 X=1 X=1 неуспешно

Порядок выполнения практической работы

1. По результатам практической работы№ 1 разработать тестовые наборы для функционального тестирования.

2. Провести тестирование программы и представить результаты в виде таблицы (Таблицы 1.1-1.4)

3. Оформить отчет по лабораторной работе.

 

Контрольные вопросы

1. Что такое тестирование ПС?

2. Чем тестирование отличается от отладки ПС?

3. Для чего проводится функциональное тестирование?

4. Каковы правила тестирования программы «как черного ящика»?

5. Как проводится тестирования программы по принципу «белого ящика»?

6. Какие методы используются при тестировании программы по принципу «белого ящика»?

 


 

Практическая работа №3

Тема: «Отладка программ в ИСР C++ Builder».

Цель работы: Научиться отлаживать программы средствами ИСР C++ Builder.

Время выполнения: подготовка – 5 мин; выполнение – 75 мин.; проверка – 10 мин; всего – 90 мин.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.