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

Глава 12: Планирование и документация 321

С этой целью в таблицу ввода/вывода добавляется еще один столбец. М и) получается в результате в нашем примере со счетами на заказы, пока- 1лпо на рис. 12.13. На этом рисунке в качестве промежуточной перемен­ной выступает переменная Общая_стоимость: она записана в таблице рядом с переменной Налог_с_продажи, что указывает на их связь.

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

I много.

Чтобы убедиться в этом на примере, создайте еще пару таблиц, подоб­ных приведенным на рисунках 12.12 и 12.13. Входными переменными пусть будут Цена_1, Цена_2, Цена_3 и Цена 4. В качестве выходных переменных подойдут Цена_товара_в_счете, Общая_стоимость (сумма всех четырех цен), Налог_с_продажи и Итоговыйбаланс.

В первой таблице, такой как на рис. 12.12, должно получиться 16 строк и соответственно 16 пар переменных. Четыре строки должны отражать езязи переменной Цена_1 с переменными Цена товара в_счете, Обща- я_стоимость, Налог_с_продажи и Итоговый_баланс. И такие же четыре строки должны присутствовать для каждой из остальных входных перемен­ных: Цена_2, Цена З и Цена 4.

Во второй таблице получится только 10 строк. Каждая из переменных 1(ена_1, Цена_2, Цена_3 и Цена 4 будет комбинироваться не с четырьмя, а только с двумя переменными: Цена_товара_в_счете и Общая_стоимость. Всего получается 8 строк. Затем промежуточная переменная Общая_стои- мость комбинируется с выходными переменными Налог_с_продажи и

11 ч оговыйбаланс — это еще две строки. Итого 8 + 2 = 10.

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

Если программа достаточно сложна, анализ потоков ее данных можно п дубить. Для этого вся обработка данных разбивается на несколько стадий. Каждая из этих стадий получает данные от предыдущей. Одни из выход­ных переменных очередной стадии могут быть просто копиями ее входных переменных, в то время как другие могут быть результатами обработки

322 Часть II: Приемы и технологии тестирования

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

Итак, у нас вырисовываются три типа таблиц.

• В таблицах первого типа отражаются все входные переменные, то, как они используются, где они появляются в качестве промежуточ­ных результатов и как влияют на выходные данные. Для каждой из входных переменных необходимо составить список всех связанных с ней стадий обработки данных и результирующих значений.

• В таблицах второго типа отражаются все выходные переменные и то, откуда берутся их значения. Для каждой из выходных переменных необходимо составить список всех связанных с ней стадий обработ­ки данных и результирующих значений.

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

Информация в этих трех таблицах повторяется. Фактически для объе­динения всех необходимых сведений достаточно и одной из них. Однако это не значит, что составление всех трех таблиц — лишняя работа. Их ценность в том, что они позволяют анализировать программу с разных точек зрения.

Мы очень часто включаем в тестовую документацию диаграммы пото­ков данных, показывающих, как программа генерирует или откуда получа­ет каждый элемент данных, где она его использует или в каком виде и когда выводит (на печать, экран, диск и т.п.). Вся эта информация зани­мает множество страниц документации, но она того стоит. Подробнее обо всем этом можно почитать у таких авторов, как Гейн и Сарсон (Gane & Sarson, 1979) и Де Макро (De Macro, 1979).

Таблицы и деревья решений

В таблице решений отражается логика программы. Каждый ее элемент

— это Д (да) или Н (нет) либо И (истина) или JI (ложь). Программа по­стоянно принимает решения, что ей делать дальше. Эти решения зависят от определенных обстоятельств, а точнее, от значений определенных дан­ных. Эти обстоятельства и принимаемые программой решения и описыва­ются в таблице.