Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тестирование программного обеспечения. Фундамен...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
935.81 Кб
Скачать

492 Часть III: Управление проектами и группами

Условия гонок представляют собой граничные значения времени.

Условия циклов

Вот пример цикла:

10 IF CountVar < 45

THEN PRINT "Это цикл"

SET CountVar TO CountVar + 1 GOTO 10

ELSE QUIT

Программа печатает слова “Это цикл” и увеличивает значение перемен­ной CountVar на 1 до тех пор, пока ее значение не станет равным 45. После этого программа прекращает работу. Выражение CountVar < 45 является условием выполнения цикла. Граничное значение (в данном случае мак­симальное) представляет в нем число 45. Возможно также наличие в условии цикла минимального граничного значения, а также обоих: 10 < CountVar < 45.

О тестировании условий циклов подробно рассказывает Бейзер (Beizer, 1990).

Ограничения объема памяти

Каковы максимальный и минимальный объемы памяти, с которыми может работать программа? (Да-да, существуют программы, которые не могут работать со слишком большим объемом памяти.) Как программа использует свою память: разбивает на страницы, сегментирует? Не теряют­ся ли первый или последний байты сегмента? (Кстати говоря, начинается ли их нумерация с 0 или с 1?) Используется ли программой виртуальная память, т.е. выгружается ли часть страниц данных на диск? Если да, как выполняется чтение данных? Возможно так: страница — из памяти, стра­ница — с диска, страница — из памяти, страница — с диска и т.д. Как это отражается на производительности программы?

Ограничения, связанные со структурой данных

Предположим, что программа хранит данные в виде записей. Каждая запись состоит из имени сотрудника, его учетного номера и оклада. Пра­вильно ли программа читает с диска первую запись? Последнюю? Как программа отмечает конец одной записи и начало следующей? Все ли дан­ные соответствую этому формату? Что, если у двух служащих окажутся одинаковые учетные номера?

Ограничения, связанные с аппаратным обеспечением

Если мэйнфрейм способен обслуживать до сотни терминалов, что будет при подключении 99, 100, 101-го. Что, если 100 человек одновременно попытаются к нему подключится?

Приложение: Распространенные программные ошибки 493

Что произойдет, когда диск заполнится до отказа? Если в каталоге может храниться до 128 файлов, что будет, если попытаться сохранить в нем 127, 128 и 129-й файл? Если у принтера имеется входной буфер, что будет, если программа заполнит его, но у нее останутся еще неотправлен­ные данные? Что будет, если в принтере закончится бумага или картридж?

Невидимые границы

Не все граничные условия программы видны извне. Например, под­программа может вычислять результат по одной формуле, если значение аргумента больше 100, и по другой в противном случае. Очевидно, что 100 в данном случае является граничным значением, но вы можете даже не по­дозревать об использовании такого алгоритма вычислений.

Ошибки вычислений

Программа что-то вычисляет и получает неверный результат. Этому могут быть три причины.

Неверная логика. Ее причиной может быть опечатка, например, А-А вместо А+А. Возможно также, что программист неаккуратно разбил сложное выражение на несколько более простых. Возможно, он воспользовался неверной или неприменимой к данной ситуации формулой. (Это, впрочем, уже ошибка проектирования — код делает именно то, что хотел программист, но его представление о том, что должно быть сделано, неверно.)

Неправильно выполняются арифметические операции. Возможно, что допущена ошибка при кодировании базовых функций, например, сложения или умножения. Такая ошибка может проявляться при каждом выполнении данной операции (например, 2+2=5), а может только в некоторых случаях. Как бы там ни было, при работе про­граммы, использующей неверно закодированную функцию, возмож­ны ошибки.

Неточные вычисления. Если программа выполняет арифметические операции над числами с плавающей запятой, возможны ошибки округления и отсечения. После ряда промежуточных округлений 2+2 может оказаться равным 5, даже если в программе нет логических ошибок.

Данная область настолько велика, что в этом приложении мы рассмат­риваем ошибки вычислений лишь самым поверхностным образом. Для начального ознакомления с этим вопросом можно порекомендовать книги таких авторов, как Конте и Де Буа (Conte & deBoor, 1980) и Кнут (Knuth, 1981). Для его дальнейшего изучения подойдут книги Конте и Де Буа, Карнахана (Carnahan), Лютера и Уилкеса (Luter & Wilkes, 1969).