Листинг 5.5. Автоматизированное тестирование: все элементы различны
for 1 = [0 . п ] x[i] = 10*1 for 1 = [0 . п)
assert(s(10*1) == i) assert(s(10*i -5) == -1) assert(s(10*n - 5) == -1) assert(s(10* n) == -1)
Чтобы облегчить проверку различных функций, мы можем определить тестируемую функцию как макрос:
#define s binarysearch
Утверждения проверяют все возможные результаты успешных и неуспешных вызовов функции поиска. Кроме того, проверяется элемент, расположенный за границами диапазона поиска (он не должен быть найден).
Вторая часть цикла проверяет функцию поиска на массиве из одинаковых элементов (листинг 5.6).
Листинг 5.6. Автоматизированное тестирование: массив из одинаковых элементов
for 1 = [0 , п) x[i] = 10 1f п == 0
assert (s(10) == -1)
el se
assert(0 <= s(10) && s(10) < n) assert(s(15) == -1) assert(s(5) == -1)
Мы проверяем функцию поиска имеющегося элемента, а также элементов, отличных от него.
Подобные проверки позволяют выявить почти все возможные ошибки. Диапазон значений n=1..100 позволяет проверить случай с пустым массивом, все стандартные размеры массивов (1, 2), несколько массивов с размерами, равными степеням двойки, и еще некоторые, размеры которых отличаются от степеней двойки на 1. Выполнять эти тесты вручную было бы нестерпимо скучно. Компьютерного же времени было затрачено совсем немного. При установке MAXN = 1000 на все эти тесты требуется всего несколько секунд работы моей машины.
Опубликовал vovan666
April 16 2013 23:58:40 ·
0 Комментариев ·
4069 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.