Тестирование софта - статьи

       

Критерии полноты тестового покрытия


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

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

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

Многие критерии полноты тестового покрытия, имеющие практическое применение, строятся по следующей схеме: для тестируемой системы S критерий F определяет множество элементов тестового покрытия

. Элементом тестового покрытия можно считать некоторый класс событий, которые могут произойти в ходе работы тестируемой программной системы. По появлению в процессе исполнения программы элементов тестового покрытия и различных их комбинаций можно судить о полноте или качестве проверки, которую выполняет данный тестовый набор. Например, элементами тестового покрытия могут быть исполняемые строки исходного кода (соответствующие событиям их исполнения); рёбра графа потока управления; пути в графе потока управления; логические выражения, встречающиеся в исходном коде и т.п. Кроме того, критерий F определяет логическую функцию
, которая принимает значение
, если элемент тестового покрытия q покрывается тестом t. Тестовый набор
для системы S удовлетворяет критерию полноты тестового покрытия F, если каждый элемент тестового покрытия из множества
покрывается хотя бы одним тестом из тестового набора
. Иными словами:

(1)

Приведём несколько примеров часто упоминаемых критериев полноты тестового покрытия:

  • каждый оператор в исходном коде выполняется хотя бы один раз;
  • каждая ветвь графа потока управления выполняется хотя бы один раз;
  • каждый путь графа потока управления исполнение выполняется хотя бы один раз;
  • каждое логическое выражение хотя бы один раз вычисляется со значением «истина» и хотя бы один раз - со значением «ложь»;
  • тестовый набор убивает всех мутантов из заданного набора.

Заметим, что все критерии, приведённые в качестве примеров, соответствуют ранее изложенной схеме.

Содержание раздела