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) величину С.
|