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


         

с синтаксической структурой программы. Редукция


Такое представление тесно связано с синтаксической структурой программы. Редукция грамматики языка позволяет получить модель, которая состоит из следующих видов строительных блоков:
  • Процедура, содержащая последовательность линейных участков;
  • Линейный участок, содержащий метку, переход, а также атрибут ``пустой'';
  • Метка, содержащая атрибут ``не используется'';
  • Безусловный переход, содержащий ссылку на метку;
  • Условный переход, содержащий ссылки на метки.
Будем называть модельной структурой граф, вершины которого - строительные блоки, а ребра - связи между строительными блоками. Проекция предложений исходного языка в модельные структуры индуцирует разбиение множества предложений исходного языка на классы эквивалентности. Один класс эквивалентности состоит из предложений, которые имеют одинаковое модельное представление, т.е. которые неразличимы для алгоритма оптимизации. Это свойство позволяет нам выдвинуть гипотезу, согласно которой на эквивалентных предложениях оптимизатор работает одинаково. Следовательно, в желаемом тестовом наборе достаточно иметь не более одного представителя из каждого класса эквивалентности. Поскольку множество модельных структур, т.е. множество классов эквивалентности, в общем случае бесконечно, то для создания тестового набора мы должны выбрать некоторое его конечное подмножество. Основанием для этого выбора должны служить те шаблоны, которые были выделены при анализе алгоритма оптимизации. Таким образом, критерий тестового покрытия формулируется в терминах абстрактной модели. Пример: Критерий тестового покрытия для анализатора Weak-Zero SIV Subscripts. Напомним, что анализатор Weak-Zero SIV Subscripts осуществляет поиск следующего шаблона: L ≤ i0 ≤ U и i0 целое, где i0 определяется из соотношения
(1)
Сформулируем соответствующий критерий тестового покрытия в терминах модели, т.е. в терминах L, U, a, c1 и c2. Фиксируем L, U и c1 - целые числа. Пусть a принимает значения 1 и 2. Мы хотим, чтобы i0 принимало целые значения из некоторого множества, а также какие-нибудь нецелые значения.Пусть в упомянутое множество входят целые числа, удовлетворяющие одному из следующих требований:
  • i0<L, например, i0=L-1;
  • i0=L;
  • i0 расположено близко к L внутри интервала, задаваемого границами цикла, например, i0=L+1;
  • i0 расположено в середине интервала, задаваемого границами цикла, например, i0=
    ;
  • i0 расположено близко к U внутри интервала, задаваемого границами цикла, например, i0=U-1;
  • i0=U;
  • i0>U, например, i0=U+1.
Для нахождения значения c2 достаточно решить уравнение (1) относительно значений a и i0.


Содержание  Назад  Вперед