
4 Стохастичні критерії (клас III)
Стохастичне тестування застосовується при тестуванні складних програмних комплексів - коли набір детермінованих тестів (X, Y) має величезну потужність. У випадках, коли подібний набір неможливо розробити й виконати на фазі тестування, можна застосувати наступну методику.
-
Розробити програми - імітатори випадкових послідовностей вхідних сигналів {x}.
-
Обчислити незалежним способом значення {y} для відповідних вхідних сигналів {x} й одержати тестовий набір (X,Y).
-
Протестувати додаток на тестовому наборі (X,Y), використовуючи два способи контролю результатів:
Детермінований контроль -
перевірка відповідності обчисленого
значення
значенню y, отриманому в результаті
прогону тесту на наборі {x} - випадкової
послідовності вхідних сигналів, що
згенеровані імітатором.
Стохастичний контроль - перевірка відповідності безлічі значень {yв}, отриманого в результаті прогону тестів на наборі вхідних значень {x}, заздалегідь відомому розподілу результатів F(Y).
У цьому випадку безліч Y невідома (її обчислення неможливе), але відомий закон розподілу даної безлічі.
Критерії стохастичного тестування
-
Cтатичні методи закінчення тестування - стохастичні методи прийняття рішень про збіг гіпотез про розподіл випадкових величин. До них належать широко відомі: метод Стьюдента ( St ), метод Хі-квадрат (
) і т.п.
-
Метод оцінки швидкості виявлення помилок - заснований на моделі швидкості виявлення помилок, відповідно до якої тестування припиняється, якщо оцінений інтервал часу між поточною помилкою й наступної занадто великий для фази тестування додатка.
Рис. 3.1. Залежність швидкості виявлення помилок від часу виявлення
При формалізації моделі швидкості виявлення помилок (мал. 3.1) використалися наступні позначення:
N - вихідне число помилок у програмному комплексі перед тестуванням,
C - константа зниження швидкості виявлення помилок за рахунок знаходження чергової помилки,
t1, t2,... tn - кортеж зростаючих інтервалів виявлення послідовності з n помилок,
T - час виявлення n помилок.
Якщо допустити, що за час T виявлено n помилок, то справедливо співвідношення (1), яке стверджує, що добуток швидкості виявлення i помилки й часу виявлення i помилки є 1 по визначенню:
(N – i + 1) * C * ti = 1 (1)
У цьому припущенні справедливе співвідношення (2) для n помилок:
N*C*t1 + (N - 1) * C * t2 + … (N – n + 1) * c * tn = n (2)
N * C * (t1 + t2 + … + tn) – C * Σ(i-1)ti = n
NCT – C * Σ(i - 1)ti = n
Якщо з (1) визначити ti і просумувати від 1 до n, то прийдемо до співвідношення (3) для часу T виявлення n помилок
Σ1 / (N – i + 1) = TC (3)
Якщо з (2) виразити C, приходимо до співвідношення (4):
C = n / (NT - Σ(i - 1)ti) (4)
Нарешті, підставляючи C в (3), одержуємо остаточне співвідношення (5), зручне для оцінок:
Σ1 / (N – i + 1) = n / (N – 1/T * Σ(i - 1)ti)) (5)
Якщо оцінити величину N приблизно, використовуючи відомі методи оцінки числа помилок у програмі або дані про щільність помилок для проектів розглянутого класу з історичної бази даних проектів, і, крім того, використати поточні дані про інтервали між помилками t1, t2 ... tn, отримані на фазі тестування, тj, підставляючи ці дані в (5), можна одержати оцінку tn+1 – тимчасового інтервалу необхідного для знаходження й виправлення чергової помилки (майбутньої помилки).
Якщо tn+1>Td - припустимого часу тестування проекту, то тестування закінчуємо, у противному випадку продовжуємо пошук помилок.
Спостерігаючи послідовність інтервалів помилок t1, t2 … tn, і час, витрачений на виявлення n помилок T = Σ ti, можна прогнозувати інтервал часу до наступної помилки й уточнювати відповідно до (4) величину C.