- •Верификация программ
- •Метод верификации на основе программных функций
- •Верификация структурированных программ
- •Правильность элементарных программ
- •Лемма о сведении итерационных программ к рекурсивным
- •Методика верификации циклических программ типа while-do, do-until, do-while-do
- •Верификация программы for-do
- •Метод индуктивных утверждений
- •Функциональные методы тестирования метод функциональных диаграмм
- •Тестирование программ
- •1 Шаг. Тщательный анализ спецификаций. Определение причин и следствий.
- •2Шаг. Изобразить функциональную диаграмму («и-или» граф)
- •Метод эквивалентного разбиения
- •Метод анализа граничных условий (значений)
- •Структурные методы поектирования тестов
- •Метод покрытия операторов
- •Метод покрытия переходов
- •Метод покрытия условий
- •Метод комбинаторного покрытия условий
- •Общая стратегия проектирования тестов
- •Тестирование модульных программ
- •Монолитное тестирование методом «большого удара»
- •Пошаговое тестирование
- •Тестирование потоков данных
- •Особенности тестирования циклов
- •1. Простые циклы
- •2. Вложенные циклы
- •3. Объединенные циклы
- •4. Неструктурированные циклы
- •Тестирование правильности
- •Тестирование объектно-ориентированных программ
- •Расширение области применения тестирования про ооп
- •Изменение методики при объектно-ориентированном тестировании
- •Особенности тестирования объектно-ориентированных «модулей»
- •Тестирование объектно-ориентированной интеграции
- •Объектно-ориентированное тестирование правильности
- •Проектирование объектно-ориентированных тестов
- •Построение тестов, основанное на ошибках
- •Построение тестов, основанных на сценариях
- •Способы тестирования содержания классов
Метод анализа граничных условий (значений)
Метод прост и дает хорошие тесты
Идея: анализ граничных условий! Граничные условия – это ситуации, возникающие непосредственно НА, ВЫШЕ и НИЖЕ границ входных и выходных классов эквивалентности.
Тесты разрабатывается так, чтобы проверялась каждая граница класса эквивалентности.
Рассматриваются не только входные условия (пространство входов), но и пространство выходных данных, т е входные классы эквивалентности.
Применение метода тем успешнее, чем больше изобретательности (творчества, интеллекта) проявит программист.
Следует применять следующие рекомендации:
Если функциональная характеристика задает область значений входных данных, то надо построить тесты с неправильными входными данными
-1.0<=X>=+1.0
будет 4 теста: x=-1.0 x=+1.0 x=-1.01 x=+1.01
Использование правила 1 для каждой выходной характеристики.
Например: Программа начисляет зарплату Z
0<=Z<=10000грн
Тесты:
Т1 = {Исходные данные, вызывающие начисление зарплаты 0 грн}
Т2 = {Исходные данные, вызывающие начисление зарплаты 10000 грн}
Т3 = {Исходные данные, вызывающие начисление отрицательной зарплаты}
Т41 = {Исходные данные, вызывающие начисление зарплаты больше 10000 грн}
Не всегда можно построить тесты, выводящие выходные данные за допустимые границы
Если входные и выходные данные программы – упорядоченное множество (линейный список, таблица), то надо разрабатывать тесты, связанные с 1ым и последним элементами этого множества.
ПРИМЕР 1
Протестировать программу сортировки.
Функциональные характеристики программы:
-обращение к программе имеет вид SORT(A,B,N,K)
-идентификатор А - имя исходного неупорядоченного массива целых чисел
- Идентификатор B – имя массива, в котором расположены упорядоченные элементы
- размерность массива А и В равна N (целая переменная или константа в диапазоне от 0 до 1000)
- целая переменная или константа K указывает вид сортировки
К=0 – массив А по возрастанию
К=1 – по убыванию
Проведем анализ граничных условий!
Первое граничное условие связано с N(размерностью массива). Из него получаем 4 теста
№ теста |
Тестовые данные |
||
N |
K |
A |
|
1 |
1 |
0 |
Любой неуп массив А[1] |
2 |
10000 |
1 |
Любой неуп массив А[1..1000] |
3 |
0 |
1 |
Любой неуп массив А |
4 |
1001 |
1 |
Любой неуп массив А[1..1001] |
Второе граничное условие связано с множеством значений K. из него получаются тесты 2,5,6
№ теста |
Тестовые данные |
||
N |
K |
A |
|
5 |
10 |
0 |
Любой неуп массив А[1..10] |
6 |
5 |
2 |
Любой неуп массив А[1..5] |
Третье граничное условие связано с перемещением всех элементов при сортировке (тесты 7,8) и с отсутствием перемещения элементов (9,10,11,12)
№ теста |
Тестовые данные |
||
N |
K |
A |
|
7 |
5 |
0 |
Упоряд по убыванию, элементы – различны |
8 |
5 |
1 |
Упоряд по возраст, элементы – различны |
9 |
5 |
0 |
Элементы одинаковы |
10 |
5 |
1 |
Элементы одинаковы |
11 |
5 |
0 |
Упоряд по возраст |
12 |
5 |
1 |
Упоряд по убыванию |
ПРИМЕР 2
Протестировать программу, которая распознает вид 4угольника.
Из анализа выявлены следующие граничные условия.
1: ai>0
2:0<αi<180
3:Число ввода чисел = 8
Появляются следующие новые тесты:
-одна или несколько сторон = 0
- все стороны > 0(уже покрывается)
- один или неск углов = 0
- все углы 0<αi<180 (покрывается уже)
- один или неск углов >=180
-число вводимых чисел = 8(уже покрывается)
- число вводимых чисел>8
Получаем тесты:
Тест 7: 0,20,30,50,80,100,30,150
Тест8: 10,20,10,20,0,140,60,160
Тест9: 10,50,30,50,180,100,40,40,70
Тесты10: 10,10,10,10,90,90,90,10
Резюме
Метод анализа граничных значений – один из самых полезных методов.
Однако граничные условия могут быть едва улавливаемые, следовательно, их обнаружение связано с большими трудностями.
