Дисциплина «Тестирование программного обеспечения», изучаемая студентами бакалавриата по направлению «Программная инженерия», весьма актуальна, поскольку тестирование является важнейшей составляющей поддержки качества программного обеспечения [1–7].
В ходе одной из лабораторных работ в рамках этой дисциплины студент должен научиться производить тестирование программного обеспечения методом, основанным на построении диаграмм причин-следствий. Такие диаграммы используются для проектирования тестовых вариантов и обеспечивают формальную запись логических условий и соответствующих действий [1, 8].
Рассмотрим некоторые особенности разработанного методического пособия по данной теме. В разделе «Краткие теоретические сведения» методического пособия сначала представлена необходимая теория, посвященная данному способу тестирования.
Изначально разобраны основные шаги этого метода тестирования. Информация основана главным образом на работе [1], однако принципы подачи материала несколько усовершенствованы: изменена структура материала, а именно по каждому из шагов детально разобрана вся необходимая информация; использована единая система обозначений для записи базовых символов графов причин и следствий. Далее приведем этот фрагмент методического пособия.
Диаграммы причинно-следственных связей используются для проектирования тестовых вариантов и обеспечивают формальную запись логических условий и соответствующих действий [1]. Данный способ является разновидностью тестирования «черного ящика». Используется автоматный подход к решению задачи.
На первом шаге способа тестирования, основанного на построении диаграмм причинно-следственных связей, для тестируемой программы (или отдельного тестируемого модуля) перечисляются причины (условия ввода или классы эквивалентности условий ввода) и следствия (действия или условия вывода). Каждой причине и следствию присваивается свой идентификатор.
На втором шаге данного способа тестирования разрабатывается граф причинно-следственных связей.
Изобразим базовые символы для записи графов причин и следствий [1]. Причины будем обозначать символами , а следствия — символами
. Каждый узел графа может находиться в состоянии 0 (состояние отсутствует) или 1 (состояние присутствует).
Функция «тождество» (рис. 1) устанавливает, что если значение есть 1, то и значение
есть 1. В противном случае значение
есть 0.

Рис. 1. Функция «тождество»
Функция «не» (рис. 2) устанавливает, что если значение есть 1, то значение
есть 0. В противном случае значение
есть 1.
Рис. 2. Функция «не»
Функция «или» (рис. 3) устанавливает, что если или
есть 1, то
есть 1. В противном случае
есть 0.
Рис. 3. Функция «или»
Функция «и» (рис. 4) устанавливает, что если и




Рис. 4. Функция «и»
Часто определенные комбинации причин невозможны из-за синтаксических или внешних ограничений. Используются перечисленные ниже обозначения ограничений.
Ограничение «исключает» («Exclusive»), показанное на рис. 5, устанавливает, что должно быть истинным, если причины нулевые, или только одна из причин —
или
— принимает значение 1 (
и
не могут принимать значение 1 одновременно).
Рис. 5. Ограничение «исключает» («Exclusive»)
Ограничение «включает» («Inclusive»), показанное на рис. 6, устанавливает, что по крайней мере одна из величин ,
или
всегда должна быть равной 1 (
,
и
не могут принимать значение 0 одновременно).
Рис. 6. Ограничение «включает» («Inclusive»)
Ограничение «одно и только одно» («Only one»), показанное на рис. 7, устанавливает, что одна и только одна из величин или
должна быть равна 1.
Рис. 7. Ограничение «одно и только одно» («Only one»)
Ограничение «требует» («Requires»), показанное рис. 8, устанавливает, что если принимает значение 1, то и
должна принимать значение 1 (нельзя, чтобы
было равно 1, и при этом
было равно 0).
Рис. 8. Ограничение «требует» («Requires»)
Часто возникает необходимость в ограничениях для следствий.
Ограничение «скрывает» («Masks»), показанное рис. 9, устанавливает, что если следствие


Рис. 9. Ограничение «скрывает» («Masks»)
На третьем шаге рассматриваемого способа тестирования граф преобразуется в таблицу решений.
Порядок генерации таблицы решений [1]:
1) Выбирается некоторое следствие, которое должно быть в состоянии «1».
2) Находятся все комбинации причин (с учетом ограничений), которые устанавливают это следствие в состояние «1». Для этого из следствия прокладывается обратная трасса через граф.
3) Для каждой комбинации причин, приводящих следствие в состояние «1», строится один столбец.
4) Для каждой комбинации причин доопределяются состояния всех других следствий. Они помещаются в тот же столбец таблицы решений.
5) Действия 1–4 повторяются для всех следствий графа.
На четвертом шаге данного способа тестирования столбцы таблицы решений преобразуются в тестовые варианты.
Далее, для иллюстрации способа тестирования, в «Кратких теоретических сведениях» рассмотрен пример программы, выполняющей расчет оплаты за Интернет.
Таким образом, в разработанном методическом пособии в компактном виде изложена теория, посвященная основным понятиям и шагам тестирования программного обеспечения методом, основанным на построении диаграмм причин-следствий, снабженная достаточным количеством примеров. Изучив «Краткие теоретические сведения» методического пособия, студенты приступают к самостоятельному решению подобных задач.
Литература:
- Орлов С. А., Цилькер Б. Я. Технологии разработки программного обеспечения: Учебник для вузов. 4-е изд. Стандарт третьего поколения. СПб.: Питер, 2012. 608 с.
- Файзрахманов Р. А., Мурзакаев Р. Т., Брюханова А. А. Командная разработка и непрерывная интеграция в системах автоматизированного проектирования фигурного раскроя // Научное обозрение. 2015. № 1. С. 95–101.
- Темичев А. А., Файзрахманов Р. А. Аналитический обзор средств автоматизации тестирования производительности применительно к системам мониторинга // Вестник Пермского национального исследовательского политехнического университета. Электротехника, информационные технологии, системы управления. 2015. № 3 (15). С. 117–133.
- Полевщиков И. С., Байков В. С., Швецов М. Д. Разработка методического пособия на тему «Тестирование условий» (для студентов и магистрантов направления «Информатика и вычислительная техника») // Педагогика и современность. 2012. № 2. С. 84–90.
5. Полевщиков И. С. Разработка методического пособия на тему «Тестирование базового пути» (для студентов бакалавриата направления «Программная инженерия») // Педагогика и современность. 2013. № 4. С. 83–85.
- Селуков Д. А., Полевщиков И. С. Автоматизация процесса тестирования программного обеспечения при использовании тестирования базового пути // Молодой ученый. 2015. № 23. С. 60–63.
- Селуков Д. А., Полевщиков И. С. Автоматизация процесса тестирования программного обеспечения при использовании тестирования условий // Молодой ученый. 2015. № 23. С. 63–67.
- Полевщиков И. С., Кондратович М. А., Селиванова О. И. Разработка методического пособия на тему «Способ диаграмм причин-следствий» (для студентов и магистрантов направления «Информатика и вычислительная техника») // Педагогика и современность. 2012. № 2. С. 79–84.