Експериментальне оцінювання кількості помилок у програмі
Кількість природних помилок у програмі визначають стосовно кількості виявлених природних і штучних помилок, якщо в програму була введена певна кількість однотипних з природними штучних помилок.
Помилки у програму вносять хаотично. Їх кількість відома заздалегідь. Припускають, що ймовірність виявлення помилок, внесених штучно, і ймовірність виявлення помилок, наявних у програмі до їх внесення, однакова при реалізації тестування і залежить тільки від кількості помилок. Тестуючи програму і відсортовуючи внесені й наявні помилки, оцінюють початкову кількість помилок у програмі.
Наприклад, у програму внесли помилок і після цього розпочали тестування. При тестуванні виявили
помилок, де
– кількість виявлених помилок, що були в програмі, a
– кількість виявлених помилок, внесених у програму. Тоді їх початкову кількість
у програмі за методом максимальної правдоподібності визначають як
. (2.2)
Припустивши, що в програмі наявно не більше власних помилок, у неї вносять ще
помилок. Тестують її, поки не виявлять усі внесені помилки, підраховуючи кількість виявлених власних помилок
. Тоді міру довіри (рівень значущості)
до моделі визначають за формулою
. (2.3)
Міра довіри – ймовірність того, що модель правильно відхилятиме хибне припущення.
Якщо в програмі немає помилок і, внісши в неї 4 помилки, їх виявляють, не натрапивши на жодну вихідну помилку, то (
= 0,8). Щоб досягти рівня значущості 0,95, потрібно було б внести в програму 19 помилок. Стверджуючи, що в програмі не більше 3-х вихідних помилок і внісши ще 6, виявляють їх усі, рівень значущості дорівнює 0,6.
Формули (2.2) і (2.3) мають достатню статистичну основу. Це довів американський вчений X. Мілс. Перша передбачає кількість помилок, другу використовують для встановлення довірчого інтервалу прогнозу. Вада цієї формули в тому, що її не використовують для визначення доти, поки не будуть виявлені всі внесені помилки. А це може бути і в завершальній фазі тестування. Щоб усунути цю ваду, формулу (2.3) модернізовано:
, (2.4)
де – кількість виявлених внесених помилок при оцінюванні
, коли
. У наведених прикладах
змінюється з 0,6 до 0,33, якщо виявлені 5 із 6-ти внесених помилок при
= 3, a
= 6. Виходячи з формул (2.3) і (2.4), можна будувати графік у процесі тестування, на якому відображається поточне значення верхньої границі
для певного фіксованого довірчого рівня, наприклад 0,9; 0,95.
Усі внесені помилки слід реєструвати, щоб їх можна було поділити на власні і внесені. Однак природу внесених помилок не з’ясовують. Головне, щоб вони були типовими. X. Мілс пропонує інтуїтивну модель, яка не потребує введення штучних помилок. Згідно з нею кількість помилок у програмі оцінюють як , де
,
– кількість помилок, виявлених першим і другим програмістами, які налагоджують незалежно один від одного первісний текст програми.
– кількість помилок, виявлених першим і другим програмістами. При цьому первісний текст програми повинен розробляти третій програміст, щоб поставити перших двох в однакові (рівні) умови.
Один із простих інтуїтивних методів прогнозування надійності ПЗ – тестування одних і тих самих програм незалежними групами програмістів, які використовують різні набори тестів. Певний час вони тестують ПЗ паралельно, а потім збирають і порівнюють результати.
Нехай множина відображає невідому повну кількість помилок у програмі, підмножини
і
– відповідно кількість помилок, виявлених першою і другою групою, а підмножина
– кількість помилок, виявлених двічі, тобто обома групами. Це відношення показано на рис. 2.1.
Рис. 2.1. Підмножини помилок
Тоді: .
Ефективність тестування програми кожною з груп визначають за формулами ;
.
Вважаючи, що можливість виявлення помилок для обох груп однакова, кожну підмножину простору N розглядають як апроксимацію (лат. approximatio – зближення) всього простору. Це дає змогу зробити висновок, що: . Виконуючи підстановку для
, отримуємо
або
.
відомо, a
і
визначають як
і
відповідно. Маючи ці дані, отримують наближення для
.
Це лише середні оцінювання, що ґрунтуються на інформації, яку використовували для нових методів програмування, наприклад структурного програмування. Загалом найкраще послуговуватися кількома моделями і об’єднувати їх результати. Дані раніше розроблених підходів використовують для приблизного оцінювання кількості помилок ПЗ у сучасних підходах.