Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
30.05.2020
Размер:
134.66 Кб
Скачать

Лекція 2.

Тема: Основні поняття тестування

Мета: ознайомити студентів з такими поняттями тестування як Формальний підхід, Інтерпретаційний підхід, Налагодження, Статичне тестування, Динамічне тестування, Оракул, deskchecking, logging, single-step running, Контрольна точка, break mode, Траса, Реверсивне (зворотне) виконання, Створення тестового набору, Прогін програми на тестах, Оцінка результатів виконання, Керуючий граф програми, Шлях, Гілка – шлях.

Що визначає якість програмного продукту?

Хто саме визначає, чи є дана розробка якісною?

До чого можна звести тестування з технічної точки зору?

На які етапи можна розділити розробку програмного продукту?

Як розподіляється час розробки додатку?

Яким чином можна перерозподілити час? За рахунок чого можливий такий перерозподіл?

ПЛАН

1 Концепція тестування

2 Основна термінологія

3 Організація тестування

4 Фази тестування

5 Керуючий граф програми

6 Основні проблеми тестування

1 Концепція тестування

Програма - це аналог формули у звичайній математиці.

Формула для функції f, отриманою суперпозицією функцій f1, f2, ... fn - вираз, що описує цю суперпозицію.

f = f1* f2* f3*... * fn

Якщо аналог f1,f2,... fn - оператори мови програмування, то їхня формула - програма.

Існує два методи обґрунтування істинності формул:

Формальний підхід або доказ застосовується, коли з вихідних формул-аксіом за допомогою формальних процедур (правил виводу) виводяться шукані формули й твердження (теореми). Вивід здійснюється шляхом переходу від одних формул до інших за строгими правилами, які дозволяють звести процедуру переходу від формули до формули до послідовності текстових підстановок:

A**3 = A*A*A

A*A*A = A -> R, A*R -> R, A*R -> R

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

Інтерпретаційний підхід застосовується, коли здійснюється підстановка констант у формули, а потім інтерпретація формул як осмислених тверджень в елементах множині конкретних значень. Істинність формул, що інтерпретуються, перевіряється на кінцевих множинах можливих значень. Складність підходу полягає в тому, що на кінцевих множинах комбінації можливих значень для реалізації вичерпної перевірки можуть виявитися досить великі.

Інтерпретаційний підхід використається при експериментальній перевірці відповідності програми своєї специфікації

Застосування інтерпретаційного підходу у формі експериментів над програмою, що виконується, становить суть налагодження й тестування.

2 Основна термінологія

Налагодження (debug, debugging) - процес пошуку, локалізації й виправлення помилок у програмі [IEEE Std.610-12.1990].

Термін " налагодження " у вітчизняній літературі використається подвійно: для позначення активності по пошуку помилок (власне тестування), по знаходженню причин їхньої появи й виправленню, або активності по локалізації й виправленню помилок.

Тестування забезпечує виявлення (констатацію наявності) фактів розбіжностей з вимогами (помилок).

Як правило, на фазі тестування здійснюється й виправлення ідентифікованих помилок, що включає локалізацію помилок, знаходження причин помилок і відповідне коректування програми тестованого додатка (Application Under Testing (AUT) або Implementation Under Testing (IUT)).

Якщо програма не містить синтаксичних помилок (пройшла трансляцію) і може бути виконана на комп'ютері, вона обов'язково обчислює яку-небудь функцію, що здійснює відображення вхідних даних у вихідні. Це означає, що комп'ютер на своїх ресурсах довизначає частково визначену програмою функцію до тотальної визначеності. Отже, судити про правильність або неправильність результатів виконання програми можна, тільки порівнюючи специфікацію бажаної функції з результатами її обчислення, що й здійснюється в процесі тестування.

Приклад пошуку й виправлення помилки

Налагодження забезпечує локалізацію помилок, пошук причин помилок і відповідне коректування програми (Приклад 2.1, Приклад 2.2).

// Метод обчислює ненегативну ступінь n числа x

double Power(double x, int n)

{

double z=1;

int i;

for(i=1;n>=i;i++)

{

z=z*x;

}

return z;

}

2.1 Вихідний текст методу Power

Якщо викликати метод Power з негативним значенням ступеня n Power(2,-1), то одержимо некоректний результат -2. Виправимо метод так, щоб помилкове значення параметра (неприпустиме по специфікації значення) ідентифікувалося спеціальним повідомленням, а повернений результат дорівнював 1 (Приклад 2.2).

// Метод обчислює ненегативну ступінь n числа x

double PowerNonNeg(double x, int n)

{

double z=1;

int i;

if (n>0)

{

for (i=1;n>=i;i++)

{

z = z*x;

}

}

else printf("Помилка! Ступінь числа n має бути більше 0.\n");

return z;

}

2.2 Скоректований вихідний текст

Якщо викликати скоректований метод PowerNonNeg(2,-1) з негативним значенням параметра ступеня, то повідомлення про помилку буде видано автоматично.

Тестування розділяють на статичне й динамічне:

Статичне тестування виявляє формальними методами аналізу, без виконання тестованої програми, невірні конструкції або невірні відносини об'єктів програми (помилки формального завдання) за допомогою спеціальних інструментів контролю коду - CodeChecker.

Динамічне тестування (власне тестування) здійснює виявлення помилок тільки в програмі, що виконується, за допомогою спеціальних інструментів автоматизації тестування - Testbed або Testbench.

Соседние файлы в папке Тестування