Тестирование операций сравнения чисел

Разбиение на классы эквивалентности широко используется при тестировании корректности реализации арифметических операций и операций сравнения. Каждую операцию можно рассматривать как блок с входами – значениям и выходом – результатом операции. Для ее тестирования выполняется разбиение диапазона изменения переменных на входах блока на классы эквивалентности и методом анализа граничных значений этих переменных.

В таблице 3 приведены тестовые наборы для блоков реализующих операции сравнения, в случае, когда на один из входов блока подаётся константа.

Таблица 3. Блоки сравнения и определённые для них тестовые наборы

greaterThan блок. Реализует операцию сравнения a>b (b – константа, на входе a может быть переменная числового типа)   greaterEq блок. Реализует операцию сравнения a>=b (b – константа, на входе a может быть переменная числового типа)
№ набора     3*     № набора     3*    
Вход a b - d b + d b min max Вход a b - d b + d b min max
Выход F T F F T Выход F T T F T
 
lessThan блок. Реализует операцию сравнения a<b (b – константа, на входе a может быть переменная числового типа)   lessEq блок. Реализует операцию сравнения a<=b (b – константа, на входе a может быть переменная числового типа)
№ набора     3*     № набора     3*    
Вход a b - d b + d b min max Вход a b - d b + d b min max
Выход T F F T F Выход T F T T F
 
equalTo блок. Реализует операцию сравнения a=b (b – константа, на входе a может быть переменная числового типа)   notEqualTo блок. Реализует операцию сравнения a≠b (b – константа, на входе a может быть переменная числового типа)
№ набора         № набора        
Вход a ≠ b b min max Вход a ≠ b b min max
Выход F T F F Выход T F T T
                                         

* тестовый набор реализуем только если переменная на входе a – переменная целого типа

В приведённых тестовых наборах используются следующие обозначения:

· d – шаг изменения (resolution) переменной на входе a. Если переменная на входе a – переменная целого типа, то d равно 1

· min – минимальное значение переменной на входе a

· max – максимальное значение переменной на входе a

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

Таблица 4. Блоки сравнения и определённые для них тестовые наборы (продолжение)

greaterThan блок. Реализует операцию сравнения a>b (a, b – переменные числового типа)   greaterEq блок. Реализует операцию сравнения a>=b (a, b – переменные числового типа)
№ набора     3*       № набора     3*    
Вход a val val val min max Вход a val val val min max
Вход b val + d2 val - d2 val max min Вход b val + d2 val - d2 val max min
Выход F T F F T Выход F T T F T
   
lessThan блок. Реализует операцию сравнения a>b (a, b – переменные числового типа)   lessEq блок. Реализует операцию сравнения a>=b (a, b – переменные числового типа)
№ набора     3*       № набора     3*    
Вход a val val val min max Вход a val val val min max
Вход b val + d2 val - d2 val max min Вход b val + d2 val - d2 val max min
Выход T F F T F Выход T F T T F
   
equalTo блок. Реализует операцию сравнения a=b (a, b – переменные любого типа)   notEqualTo блок. Реализует операцию сравнения a≠b (a, b – переменные любого типа)
№ набора         № набора        
Вход a val1 val min max Вход a val1 val min max
Вход b val2 val max min Вход b val2 val max min
Выход F T F F Выход T F T T
                                 

* тестовый набор реализуем только если переменные на входах блока - переменные целого типа

В приведённых тестовых наборах используются следующие обозначения:

· d2 – шаг изменения (resolution) переменной на входе b. Если переменная на входе b – переменная целого типа, то d2 равно 1

· val, val1, val2 – значения взятые из середины диапазона, полученного при пересечении диапазонов переменных на входах a и b

· min – минимальное значение переменной на входе блока

· max – максимальное значение переменной на входе блоке

2.5. Тест-планы

Тестовые примеры, рассматриваемые в предыдущих разделах, не существуют сами по себе – каждый тестовый пример проверяет одну ситуацию в работе системы, но вся совокупность тестовых примеров должна полностью проверять всю функциональность системы. В связи с этим описания тестовых примеров объединяют в документы, называемыми тест-планами.

Тест-план представляет собой документ, в котором перечислены все тестовые примеры, необходимые для тестирования системы, либо часть тестовых примеров, объединенных по определенному признаку.

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

Существует несколько причин для объединения описаний тестовых примеров в единый документ или несколько документов:

· Единая схема идентификации и трассировки тестовых примеров

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

· Объединение тестовых примеров в смысловые группы

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

· Внесение изменений в тестовые примеры

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

· Определение последовательности тестирования

Одно из важных свойств тестового примера, которое подробно будет рассматриваться в теме 3 – его независимость. Это означает, что результат выполнения тестового примера не должен изменяться в зависимости от того, какие тесты выполнялись до него. Как правило, независимость тестовых примеров достигается полной реинициализацией тестового окружения перед выполнением каждого нового тестового примера. Однако, часто возникают ситуации, в которых для экономии времени выполнения тестов, они объединяются в последовательности, в которых каждый следующий тестовый пример использует состояние тестового окружения или тестируемой системы, достигнутое во время предыдущего теста. Такие связанные тестовые примеры должны быть отдельно помечены для того, чтобы сохранить корректный порядок их следования.

2.5.1. Типовая структура тест-плана

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

Каждый тестовый пример в этом тест-плане имеет уникальный номер и ссылку на тест-требование, на основе которого он написан.

Общее описание теста помогает при сопровождении тест-планов – внесении изменений при изменении системы, инспекциях тест-планов, выявляющих несогласованность и т.п.

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

Тест-план

Тестовый пример 1

Номер тест-требования: 2а, 2b

Описание теста: В данном тесте проверяется правильность вычисления значения контрольной суммы (поля CRC) при непустом значении поля CRC и нулевых значениях элементов записи

Входные данные: CRC = 12345, A=0, B=0, C=0, D=0

Ожидаемые выходные данные: CRC = 0, A=0, B=0, C=0, D=0, Empty = TRUE

Сценарий теста:

1. Установка значения поля CRC в 12345

2. Установка значений полей A-F в 0

3. Вызов функции Set_CRC

4. Проверка значений CRC на 0 и Empty на TRUE

Тестовый пример 2

Номер тест-требования: 2a

Описание теста: В данном тесте проверяется соответствие алгоритма вычисления поля CRC, заданному в спецификации требований.

Входные данные: CRC = 0, A-D заполнены байтами 01010101b

Ожидаемые выходные данные: CRC = 0111100b, Empty = FALSE

Сценарий теста:

1. Установка значения поля CRC в 0

2. Заполнение байт полей A-D байтами 01010101b

3. Вызов функции Set_CRC

4. Проверка значений CRC на 0111100b и Empty на FALSE

Тестовый пример 3

Номер тест-требования: 2a

Описание теста: В данном тесте проверяется неизменность полей A-F записи при вычислении поля CRC (подсчете контрольной суммы)

Входные данные: CRC = 0, A-D заполнены байтами 01010101b

Ожидаемые выходные данные: A-D заполнены байтами 01010101b,

Сценарий теста:

1. Установка значения поля CRC в 0

2. Заполнение байт полей A-D байтами 01010101b

3. Вызов функции Set_CRC

4. Проверка значений байт полей A-D на 01010101b

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


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



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