Пособие по практике программирования

Первый шаг, по крайней мере


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

Предположим, что у нас есть функция, осуществляющая двоичный поиск в массиве целых чисел. Начнем со следующих тестов (как нетрудно заметить, расположены они в порядке увеличения сложности):

  • поиск в пустом массиве;


  • поиск в массиве с одним элементом — пробное значение:
    - меньше чем элемент массиша;
    - равно элементу массива;
    - больше чем элемент массива;


  • поиск в массиве с двумя элементами — пробные значения:
    - тестируем все пять возможных вариантов;


  • проверяем поведение при дублировании элемента — пробные значения:
    - меньше значения в массиве;
    - равно значению в массиве;
    - больше значения в массиве;


  • поиск в массиве с тремя элементами (так же, как и с двумя);


  • поиск в массиве с четырьмя элементами (так же, как с двумя и тремя).


  • Если функция пройдет эти тесты без ошибок, она, по всей видимости, находится в неплохой форме, однако ее можно тестировать и дальше.

    Приведенный набор тестов достаточно мал, чтобы выполнять их все вручную, но лучше создать оснастку (test scaffold — подмости тестирования) для механизации процесса. С этой целью мы напишем простейшую программу (по сути, драйвер). Она будет считывать строки, содержащие ключ, по которому будет производиться поиск, и размер массива; после этого будет создан массив указанного размера, содержащий значения 1, 3, 5 и т. п.; результат поиска будет выводиться на экран.


    Содержание раздела