Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
479.74 Кб
Скачать

Завдання

Для наведеного нижче фрагментів програм, побудувати КГП та ІГП, виписати шляхи для забезпечення критерію покриття операторів та покриття умов (рішень), створити набори тесті для перевірки критеріїв тестування потоків даних, показати, що критерії потоків даних є доповнюючи ми до критеріїв потоків управління.

public int f(int a, int b, String c) {

if (a > 0) {

c = null;

}

if (b < 0) {

b = c.length()

}

return b;

}

program test;

uses CRT;

var x,y,z:real;

begin

Clrscr;

writeln('vvedite x i y');

readln(x,y);

if (x=0)and(x*y<>1) then

begin

z:=(sqr(x)-y)/(1-x*y);

end

else

begin

if (x>0)and(x*y<>1) then

z:=(x+y)/(1-x*y)

else z:=1;

end;

writeln('Z=',z:0:2);

readln;

end.

Лабораторна 3. Мутаційне тестування.

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

Мутаційні тестування проводиться шляхом вибору мутаційних операторів та застосування їх одного за іншим до кожного фрагменту вихідного коду програми.

Приклад:

if (a && b) {

c = 1;

} else {

c = 0;

}

Оператор мутації умов замінить && на ||, отримуючи наступного мутанта:

if (a || b) {

c = 1;

} else {

c = 0;

}

Для того, щоб тест міг вбити цього мутанта необхідно щоб були виконані наступні умови:

Вхідні дані тесту повинні привести до різних станів програми для мутанта і вихідної програми. Наприклад, тест з a = 1 і b = 0 призведе до цього.

Значення змінної c має вплинути на висновок програми і бути перевірено тестом. Багато мутаційних операторів можуть призвести до еквівалентних програм.

Приклад:

int index = 0;

while (…) {

;

index++;

if (index == 10) {

break;

}

}

Оператор мутації умов може замінити == на > = отримуючи таким чином наступного мутанта:

int index = 0;

while (…) {

;

index++;

if (index >= 10) {

break;

}

}

Однак не існує тесту, який міг би вбити цього мутанта. Отримана програма еквівалентна вихідній програмі. Такі мутанти називаються еквівалентними мутантами.

Завдання

  1. Використовуючи принципи мутаційного тестування здійснити тестування програм із попередніх лабораторних робіт.