Тестирование при помощи диаграмм причин–следствий
Базовые понятия
Диаграммы причинно-следственных связей — способ проектирования тестовых вариантов, который обеспечивает формальную запись логических условий и соответствующих действий. Используется автоматный подход к решению задачи.
Шаги тестирования
Шаг 1. Для каждого модуля перечисляются причины (условия ввода или классы эквивалентности условий ввода) и следствия (действия или условия вывода). Каждой причине и следствию присваивается свой идентификатор.
Шаг 2. Разрабатывается граф причинно-следственных связей.
Шаг 3. Граф преобразуется в таблицу решений.
Шаг 4. Столбцы таблицы решений преобразуются в тестовые варианты.
Изобразим базовые символы для записи графов причин и следствий (cause-effect graphs). Сделаем предварительные замечания:
¾ причины будем обозначать символами сj, а следствия — символами еi;
¾ каждый узел графа может находиться в состоянии 0 или 1 (0 — состояние отсутствует, 1 — состояние присутствует).
Функция тождество (рисунок 16) устанавливает, что если значение c1 есть 1, то и значение e1 есть 1; в противном случае значение e1 есть 0.
Рисунок 16 – Функция тождество
Функция не (рисунок 17) устанавливает, что если значение с1 есть 1, то значение e1 есть 0; в противном случае значение e1 есть 1.
Рисунок 17 – Функция не
Функция или (рисунок 18) устанавливает, что если значение с1 или с2 есть 1 , то e1 есть1,в противном случае e1 есть 0.
Рисунок 18 – Функция или
Функция и (рисунок 19) устанавливает, что если и с1 и с2 есть 1, то el есть 1, в противном случае е1 есть 0.
Рисунок 19 – Функция и
Часто определенные комбинации причин невозможны из-за синтаксических или внешних ограничений. Используются перечисленные ниже обозначения ограничений.
Ограничение Е (исключает, Exclusive, рисунок 20) устанавливает, что Е должно быть истинным, если хотя бы одна из причин — а или b — принимает значение 1 (а и b не могут принимать значение 1 одновременно).
Рисунок 20 – Ограничение Е (исключает, Exclusive)
Ограничение I (включает, Inclusive, рисунок 21) устанавливает, что по крайней мере одна из величин, а, b, или с, всегда должна быть равной 1 (a, b u c не могут принимать значение 0 одновременно).
Рисунок 21 – Ограничение I (включает, Inclusive)
Ограничение О (одно и только одно, Only one, рисунок 22) устанавливает, что одна и только одна из величин а или b должна быть равна 1.
Рисунок 22 – Ограничение О (одно и только одно, Only one)
Ограничение R (требует, Requires, рисунок 23) устанавливает, что если а принимает значение 1, то и b должна принимать значение 1 (нельзя, чтобы а было равно 1, a b — 0).
Рисунок 23 – Ограничение R (требует, Requires)
Часто возникает необходимость вограничениях для следствий.
Ограничение М (скрывает, Masks, рисунок 24) устанавливает, что если следствие а имеет значение 1, то следствие b должно принять значение 0.
Рисунок 24 – Ограничение М (скрывает, Masks)
Для иллюстрации использования способа рассмотрим пример, когда программа выполняет расчет оплаты за электричество по среднему или переменному тарифу.
При расчете по среднему тарифу:
¾ при месячном потреблении энергии меньшем, чем 100 кВт/ч, выставляется фиксированная сумма;
¾ при потреблении энергии большем или равном 100 кВт/ч применяется процедура А планирования расчета.
При расчете по переменному тарифу:
¾ при месячном потреблении энергии меньшем, чем 100 кВт/ч, применяется процедура А планирования расчета;
¾ при потреблении энергии большем или равном 100 кВт/ч применяется процедура В планирования расчета.
Шаг 1.Причинами являются:
расчет по среднему тарифу (1);
расчет по переменному тарифу (2);
месячное потребление электроэнергии меньшее, чем 100 кВт/ч (3);
месячное потребление электроэнергии большее или равное 100 кВт/ч (4).
На основе различных комбинаций причин можно перечислить следующие следствия:
минимальная месячная стоимость (101);
процедура Л планирования расчета (102);
процедура В планирования расчета (103).
Щаг 2. Разработка графа причинно-следственных связей (рисунок 25).
Узлы причин перечислим по вертикали у левого края рисунка, а узлы следствий — у правого края рисунка. Для следствия 102 возникает необходимость введения вторичных причин — 11 и 12, — их размещаем в центральной части рисунка.
Рисунок 25 – Граф причинно-следственных связей
Шаг 3. Генерация таблицы решений. При генерации причины рассматриваются как условия, а следствия — как действия.
Порядок генерации.
Шаг 3.1. Выбирается некоторое следствие, которое должно быть в состоянии «1».
Шаг 3.2. Находятся все комбинации причин (с учетом ограничений), которые устанавливают это следствие в состояние «1». Для этого из следствия прокладывается обратная трасса через граф.
Шаг 3.3. Для каждой комбинации причин, приводящих следствие в состояние «1», строится один столбец.
Шаг 3.4. Для каждой комбинации причин доопределяются состояния всех других следствий. Они помещаются в тот же столбец таблицы решений.
Шаг 3.5. Действия 3.1 - 3.4 повторяются для всех следствий графа.
Таблица решений для этого примера показана в таблица 2.
Шаг 4. Преобразование каждого столбца таблицы в тестовый вариант. В нашем примере таких вариантов четыре:
ТВ 1: Исходные данные: расчёт по среднему тарифу; месячное потребление электроэнергии 75 кВт/ч.
Ожидаемый результат: минимальная месячная стоимость.
ТВ 2: Исходные данные:расчёт по переменному тарифу; месячное потребление электроэнергии 90 кВт/ч.
Ожидаемый результат: процедура А планирования расчёта.
ТВ 3: Исходные данные:расчёт по среднему тарифу; месячное потребление электроэнергии 100 кВт/ч.
Ожидаемый результат: процедура Л планирования расчёта.
ТВ 4: Исходные данные:расчет по переменному тарифу; месячное потребление электроэнергии 100 кВт/ч.
Ожидаемый результат: процедура В планирования расчета.
Таблица 2 – Таблица решений для расчёта оплаты на электричество
Номера столбцов→ | ||||||
Условия | Причины | |||||
Вторичные причины | ||||||
Действия | Следствия | |||||
Пример тестирования с помощью диаграмм причин-следствий
Шаг 1.Причинами являются:
1) введён массив не чисел.
2) верхняя граница массива >10000 (n>10000).
3) строго возрастающий массив чисел.
4) строго убывающий массив чисел.
5) неупорядоченный (произвольный) массив чисел.
6) массив из одного и того же числа, при n 2.
Можно перечислить следующие следствия:
11) сообщение об ошибке, массив не сортируется;
12) печать отсортированного массива.
Шаг 2. Разработка графа причинно-следственных связей (рисунок 26).
Выбранный тип ограничения для всех причин – Only one (O). Следствия образуются через функции или (V).
Рисунок 26 – Граф причинно-следственных связей
Шаг 3. Генерация таблицы решений.
Таблица 3 – Таблица решений
Номера столбцов→ | ||||||||
Условия | Причины | |||||||
Действия | Следствия | |||||||
Шаг 4. Преобразование каждого столбца таблицы 3 в тестовый вариант (таблица 4):
Таблица 4 – Таблица тестовых вариантов
№ ТВ | Исходные данные | Ожидаемый результат |
N = 5, A = {a, b, c, 1, d} | -1 | |
N = 10001, A = {…} – большой массив | -1 | |
N = 6, A = {1, 2, 5, 9, 12, 13} | A = {1, 2, 5, 9, 12, 13} | |
N = 5, A = {5, 4, 3, 2, 1} | A = {1, 2, 3, 4, 5} | |
N = 7, A = {1, 9, 2, 1, 2, 3, 4, 6} | A = {1, 1, 2, 2, 3, 4, 6, 9} | |
N = 7, A = {9, 9, 9, 9, 9, 9, 9} | A = {9, 9, 9, 9, 9, 9, 9} |
Контрольные вопросы
1. Чем характерно тестирования «чёрным ящиком»?
2. Какие существуют стратегии (способы) тестирования «чёрным ящиком»?
3. Какие существуют виды классов эквивалентности?
4. Какова суть тестирования через эквивалентное разбиение и анализ граничных условий?
5. Что такое диаграммы причинно-следственных связей, и из каких элементов они состоят?
6. Как происходит построение графа причинно-следственных связей?
7. Как составляется таблица решений для способа тестирования через диаграммы причин-следствий?
Лабораторная работа №4
Тема:Автоматизация процесса тестирования программного продукта.
Цель: Разработка драйверов тестирования в соответствии с лабораторными работами №1 и №2.
Содержание отчёта
a) Алгоритм работы драйвера тестирования.
b) Варианты тестирования (исходные данные, ожидаемые результаты).
c) Результат работы драйвера:
1) вывод номера варианта тестирования;
2) исходные данные;
3) ожидаемые результаты;
4) реальные результаты;
5) маршруты тестирования.
d) Листинг программы.