Експериментальне оцінювання кількості помилок у програмі

Кількість природних помилок у програмі визначають стосовно кількості виявлених природних і штучних помилок, якщо в програму була введена певна кількість однотипних з природними штучних помилок.

Помилки у програму вносять хаотично. Їх кількість відома заздалегідь. Припускають, що ймовірність виявлення помилок, внесених штучно, і ймовірність виявлення помилок, наявних у програмі до їх внесення, однакова при реалізації тестування і залежить тільки від кількості помилок. Тестуючи програму і відсортовуючи внесені й наявні помилки, оцінюють початкову кількість помилок у програмі.

Наприклад, у програму внесли помилок і після цього розпочали тестування. При тестуванні виявили помилок, де – кількість виявлених помилок, що були в програмі, 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 і визначають як і відповідно. Маючи ці дані, отримують наближення для .

Це лише середні оцінювання, що ґрунтуються на інформації, яку використовували для нових методів програмування, наприклад структурного програмування. Загалом найкраще послуговуватися кількома моделями і об’єднувати їх результати. Дані раніше розроблених підходів використовують для приблизного оцінювання кількості помилок ПЗ у сучасних підходах.