Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 12 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 29 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 25 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 26 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 27 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 28 Deprecated: Function eregi() is deprecated in /home/codingr/sites/codingrus.ru/maincore.php on line 29 .:: CodingRUS ::. программирование по-русски на Delphi, C++, PHP, Prolog, GPSS Листинг 5.5. Автоматизированное тестирование: все элементы различны
Прислано vovan666 на April 16 2013 23:58:40
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 на все эти тесты требуется всего несколько секунд работы моей машины.