Опубликован: 05.11.2013 | Доступ: свободный | Студентов: 543 / 46 | Длительность: 11:51:00
Лекция 3:

Основные элементы программной документации

Проверка реализации (верификация)

После написания кода составляется шестой раздел - тест-план, который содержит в себе реальные данные и ожидаемые результаты для проверки программы согласно функциональным требованиям к задаче и тест-требованиям. Тест-план можно рассматривать как часть спецификации, но зачастую он является отдельным документом.

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

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

Рассмотрим очень похожую на MAX3(A, B, C) задачу MAXNUMBER(A, B, C), в разделе 3 которой основное требование звучит следующим образом:

3.1. Программа должна определить номер параметра с максимальным значением.

Схема решения задачи MAXNUMBER(A, B, C)

Рис. 2.4(а). Схема решения задачи MAXNUMBER(A, B, C)

Этому рисунку соответствуют тесты, результаты которых очевидны, но не все:

MAXNUMBER(1, 2, 3) ответ 3

MAXNUMBER(1, 3, 2) ответ 2

MAXNUMBER(3, 1, 2) ответ 1

MAXNUMBER(1, 1, 1) ответ ?

Они дают значения, указывающие на 3-й, 2-й и 1-й параметры соответственно. Совсем не очевиден результат для случая, когда все три параметра имеют одинаковые значения.

Это как раз тот случай, когда следует вернуться к этапу постановки требований и добавить в функциональные требования еще один пункт:

3.2. При одинаковых значениях параметров программа должна выводить порядковый номер с наименьшим значением.

Тогда становится очевидным, что на входную тройку (1, 1, 1) ответ должен быть 1. На тестовый пример (1, 2, 2) - ответ 2. Получение такого решения потребует модификации первичной программной реализации. Строгие отношения неравенства > потребуется сменить на \geq, что приведет к схеме, представленной на рис. 2.4(б).

Модифицированная схема решения задачи MAXNUMBER(A, B, C)

Рис. 2.4(б). Модифицированная схема решения задачи MAXNUMBER(A, B, C)

MAXNUMBER(1, 2, 3) ответ 3

MAXNUMBER(1, 3, 2) ответ 2

MAXNUMBER(3, 1, 2) ответ 1

MAXNUMBER(1, 1, 1) ответ 1

MAXNUMBER(1, 2, 2) ответ 2

Дополнительный тест на покрытие:

MAXNUMBER(1, 2, 2) ответ 3

Результат выполнения тест-модуля - отчет о прогоне теста тоже является частью спецификации программы. Тесты, которые нельзя провести в автоматическом режиме, проводятся вручную, и их результаты добавляются в отчет о прогоне теста. Желательно по завершении тестирования проверить не только то, что все требования к программе были выполнены, но и то, что проверен весь программный код и все ветви программы.

На рис. 2.4(б) выделена ветвь, которая не была пройдена (покрыта) первыми пятью тест-примерами (1, 2, 3), (1, 3, 2), (3, 1, 2), (1, 1, 1), (1, 2, 2). Поэтому специально для покрытия этой части кода добавлен еще один набор входных значений (2, 1, 3), также выдающий номер третьего параметра, но при вычислении которого была задействована не пройденная ранее ветвь программы. Более детально вопросы тестирования и покрытия кода будут рассмотрены позже.