Ручное тестирование программ

 

Если программа только что составлена, то в редких случаях она не содержит ошибок. Нужно заранее настраиваться на то, что в программе есть ошибки, и их нужно найти и исправить.

Некоторые ошибки не зависят от конкретного языка программирования и могут быть определены по схеме на этапе разработки алгоритма (частично вопросы тестирования алгоритма по схеме рассматриваются в пункте 6.2.), другие могут быть выявлены при компиляции, выполнении и тестировании программ. Рассмотрим типичные ошибки в программах.

Синтаксические ошибки, т. е. несоответствие конструкций, используемых в программе, правилам языка Бейсик (к такого рода ошибкам относятся, в частности, ошибки в написании формул), обычно выявляются при компиляции. Однако часть таких ошибок может быть не определена вычислительной машиной. К ним относятся, например, неверное задание константы, иногда отсутствие знака арифметической операции (например, А2 вместо A*2 - и та и другая записи допустимы в Бейсике, хотя имеют разный смысл) и т. п.

Ошибки инициализации заключаются в том, что в программе не зарезервирована память под массивы, не присвоены переменным их начальные значения. Здесь нужно иметь в виду, что если значение переменной не задано, то оно не определено (т. е. может быть любым), и результат работы программы будет непредсказуем.

Ошибки в циклах могут быть различными. В частности, из-за ошибок в организации цикла или недостаточного предварительного исследования используемых методов могут произойти так называемые зацикливания, когда программа не выходит из цикла. Как правило, в этом случае операционная система прекращает выполнение программы после исчерпания определенного, наперед заданного временного интервала.

Ошибки в организации программы часто связаны с неверным использованием меток или номеров строк программы. Например, в программе имеется оператор GOТО 30, а оператора с номером 30 в программе нет, или, наоборот, несколько операторов имеют номер 30.

Ручное тестирование программы проводится аналогично ручному тестированию схемы для контроля ее правильности. При этом методично выполняют действия, предписываемые операторами программы для какого-либо простого набора исходных данных. Особое внимание обращают на проверку правильности разветвлений и выходов из циклов. Значения изменяемых величин фиксируют в ячейках памяти или в виде трассировочной таблицы. Отдельно выписывают то, что в соответствии с операторами вывода должно появляться на экране дисплея. При этом нужно "забыть" цель программы и, начав с первого оператора, выполнять оператор за оператором, подобно "роботу".

Как же найти ошибку в программе, выполняя ее вручную? Для этого нужно переключаться из состояния "робота", в котором Вы находитесь, когда выполняете очередной оператор, в состояние человека, обладающего интеллектом. Сначала Вы "робот" и оператор выполняется Вами точно так, как это делает машина, потом опять становитесь человеком и спрашиваете: "Тот ли получен результат, которого я ожидал?". Если да, то продолжаете выполнение программы. Если нет, нужно думать, почему программа работает неправильно. Эту работу нужно выполнять, пока либо на очередном шаге не будет обнаружена ошибка, либо не будет выполнен оператор END.

При выполнении программы вручную мы имитируем работу вычислительной машины, а для этого нужно хорошо понимать, как она работает и какие действия соответствуют отдельным oпeраторам. Частой ошибкой при ручном выполнении программы является использование значений переменных, задаваемых в последующих операторах. Здесь трудность для начинающих состоит в том, что человек видит всю программу, а вычислительная машина хранит программу в оперативной памяти, выбирая для выполнения по одному оператору в порядке их следования в программе или по указанию, содержащемуся в очередном операторе. Например, если в программе имеются операторы

X=N

N=10

то очень часто, при ручном тестировании, в первом операторе при вычислении Х используют N, задаваемое следующим оператором, и получают X=10, хотя в данном случае, при выполнении первого оператора, значение N не определено (или используется старое значение, если оно было задано).

Лица, имеющие опыт составления программ и работы на ЭВМ, обычно выполняют ручное тестирование программы до первого выхода на машину. Тем, кто только приступает к изучению программирования, требуется некоторое время, чтобы уяснить, как машина воспринимает и выполняет операторы программы; в первых своих программах новички делают ошибки, которые они сами обнаружить не в состоянии. Они могут поверить в ошибки, только если машина не выполняет составленную ими программу или выполняет ее неправильно.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: