Читать в оригинале

<< Предыдущая Оглавление Следующая >>


3.2.3. Стохастические критерии (класс III)

Стохастическое тестирование применяется при тестировании сложных программных комплексов - когда набор детерминированных тестов (X,Y) имеет громадную мощность. В случаях, когда подобный набор невозможно разработать и исполнить на фазе тестирования, можно применить следующую методику.

1. Разработать программы - имитаторы случайных последовательностей входных сигналов {х}.

2. Вычислить независимым способом значения {у} для соответствующих входных сигналов {х} и получить тестовый набор (X,Y).

3. Протестировать приложение на тестовом наборе (X,Y), используя два способа контроля результатов:

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

Стохастический контроль - проверка соответствия множества значений {ув}, полученного в результате прогона тестов на наборе входных значений

{х}, заранее известному распределению результатов F(Y).

В этом случае множество Y неизвестно (его вычисление невозможно), но известен закон распределения данного множества.

Критерии стохастического тестирования

Статистические методы окончания тестирования представляют собой стохастические методы принятия решений о совпадении гипотез о распределении случайных величин. К ним принадлежат такие широко известные методы, как метод Стьюдента (St), метод Хи-квадрат и т. п.

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

Рис. 10. Зависимость скорости выявления ошибок от времени выявления

При формализации модели скорости выявления ошибок (Рис. 10) используют следующие обозначения:

N - исходное число ошибок в программном комплексе перед тестированием,

С - константа снижения скорости выявления ошибок за счет нахождения очередной ошибки,

t1,t2,...tn - кортеж возрастающих интервалов обнаружения последовательности из n ошибок,

T - время выявления n ошибок.

Если допустить, что за время T выявлено n ошибок, то справедливо соотношение (3.2-1), утверждающее, что произведение скорости выявления одной i- той ошибки и времени выявления этой i-той ошибки есть 1 по определению:

(3.2-1) (N-i+1)*C*ti = 1. Отсюда для n ошибок справедливо соотношение (3.2-2):

(3.2-2           N*C*t1+(N-1)*C*t2+...+(N-(n-1))*C*tn=n

                                   N*C*(t1+t2+...+tn) – C*Σi [(i-1)*ti] = n, i=1..n

                                   N*C*T - C* Σi[(i-1)*ti] = n

Если из (3.2-1) определить ti и просуммировать от 1 до n, то придем к соотношению (3.2-3) для времени T выявления n ошибок

(3.2-3)       Σi[1/(N-i+1)] = T*C, i=1..n

Если из (3.2-2) выразить С, приходим к соотношению (3.2-4):

(3.2-4)       C = n/(N*T - Σi[(i-1)*ti)], i=1..n

Наконец, подставляя С в (3.2-3), получаем окончательное соотношение (3.2-5), удобное для оценок:

(3.2-5)        Σi[1/(N-i+1)] = n/(N - (1/T)* Σi[(i-1)*ti])

Если оценить величину N приблизительно, используя известные методы оценки числа ошибок в программе [4] или данные о плотности ошибок для проектов рассматриваемого класса из исторической базы данных проектов. И, кроме того, использовать текущие данные об интервалах между ошибками t1,t2...tn, полученные на фазе тестирования, то, подставляя эти данные в (3.2-5), можно получить оценку tn+1 временного интервала необходимого для нахождения и исправления очередной ошибки (будущей ошибки).

Если tn+1>Td - допустимого времени тестирования проекта, то тестирование заканчиваем, в противном случае продолжаем поиск ошибок.

Наблюдая последовательность интервалов ошибок t1,t2...tn, и время, потраченное на выявление n ошибок T= Σiti, можно прогнозировать интервал времени до следующей ошибки и уточнять в соответствии с (3.2-4) величину С.

 



<< Предыдущая Оглавление Следующая >>