Впереди будет целая глава о тестировании производительности, но пока давайте пройдемся через один очень простой тест производительности. Мы хотим убедиться, что система выполняет расчет и выводит информацию на дисплей за 2 секунды. Легкий способ проверить это — использовать утилиту time операционной системы UNIX, которая покажет, сколько времени заняло выполнение команды. Хотя этот стандартный инструмент выдаст вам несколько различных результатов, сосредоточьтесь только на "реальном" (отмечен как real), который измеряет, сколько времени заняло выполнение чего-либо в соответствии с часами на стене (другие виды времени, которое измеряет команда time, будут обсуждаться в главе о тестировании производительности).
Мы хотим проверить, что будут рассчитаны различные значения и программа завершит работу в течение 2 секунд. В случае, если вычисления для одного класса эквивалентности занимают гораздо больше времени, чем другие, тестируется несколько значений:
ИДЕНТИФИКАТОР: PERFORMANCE-RUNTIME
ТЕСТ-КЕЙС: Запустить программу с различными входными значениями, измерить время выполнения, убедиться, что каждая итерация занимает меньше двух секунд.
ПРЕДУСЛОВИЯ: У программы нет известных функциональных дефектов
ВХОДНЫЕ ЗНАЧЕНИЯ: 0, 1.5, 5, 7.5, 10
ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher n", где n равняется одному из входных значений
ВЫХОДНЫЕ ЗНАЧЕНИЯ: Не доступны
ПОСТУСЛОВИЯ: Для каждого из входных значений реальное время выполнения, измеренное командой time, будет меньше 2.000 секунд.
Обратите внимание на появление предусловия. Этот тест-кейс не будет рассматриваться допустимым, пока не устранены все функциональные дефекты. В конце концов, неважно, сколько времени выполняется программа, если она не дает правильную информацию о весе кота! Это не означает, что тест-кейс нельзя выполнить заранее, но результаты его выполнения не могут рассматриваться валидными до тех пор, пока программное обеспечение не будет функционально правильным. Это одна из больших проблем тестирования производительности; часто им сложно заниматься до того, как программа станет функционально полной или по крайней мере будет близка к этому состоянию.