ПАРК НА МЕТОД

1 ПАРК НА МЕТОДИ Мутантите се лабави или кој всушност ги тестира моите тестови?

парк

2 Бенџамин Клиглеин, виш инженер за софтвер, дипло. Инф. (FH) 2

4 Нашата тема денес Тестирање на мутација 4

6 Нема нова идеја. Предложено од Ричард Липтон 1971 Објавено од ДеМило, Липтон и Сајворд во IEEE Computer, 11 (4): април Во многу случаи, тестовите на програмата што откриваат едноставни грешки се исто така ефикасни во откривањето на многу покомплексни грешки. Овој таканаречен ефект на спојување може да се искористи за заштеда на работа за време на процесот на тестирање, IBM го претставува првиот преносен компјутер (IBM 5100) .1976 Apple го носи Apple I на пазарот => возбудливи времиња, моќна компјутерска моќност 6

7 забавни факти X-Men се појавуваат за прв пат во 1963 година, но само успешни од приближно. Предавачот постои само од 1982 година. Како што ќе видиме, на нашата тема и требаше малку обид 7

8 Зошто тестирање? Зошто јас/пишуваме тестови, се чувствував добро во врска со тоа. Andreas Möller Доброто чувство за обезбедување квалитет Што всушност сакам да имплементирам? Правила за подобар дизајн/API, како што е IEC (софтвер за медицински помагала) Бара тестирање на сите нивоа на единично тестирање, интеграција и систем 8

9 Само забавувањето при пишување тестови може да се чува во границите, одземаат многу време, комплицирани, тестовите можат да бидат aвер по себе Носење свои концепти и структури Понекогаш има и недостаток на знаење Тестовите се нова територија за сите нас Вие не можете да го тестирате нашиот код воопшто Да станете запоставени на моменти постапувано Дури и обезмастено во прегледите за кодови 9

Наоѓање 10 одговори Колку се добри тестовите за мојата единица? Колку е добро моето тестирање? Кои тестови може да недостасувам? 10

11 Што ми треба за тестирање на мутација? Кодот е обезбеден од мутанти. Треба да биде зелен во почетокот на постапката. Како и обично;-) 11

12 чекори низ лов на мутанти 1. Генерирани се мутанти (грешки) 2. УТ се вршат за секој мутант 1. Ако тестот е црвен, мутанот е убиен 2. Ако никој не преовладува, мутанот преживеал 3. Евалуација на процентот на убиени мутанти 12-ти

13 МТ наспроти традиционалното покривање на тестот Опфатот на тестот споредува само кој код е извршен, но не и дали тестовите се во можност да најдат грешки Бидејќи е всушност во состојба да открие дали секоја изјава е тестирано, тестирањето на мутација е златен стандард против кој се мерат сите други видови покриеност. pitest.org 13

14 Автоматски може да се префрли на различни класи на мутанти Услови на границата на мутаторот Зголемувања на мутаторот инвертен негативни мутатори Математички мутатор Негат условите на мутаторот Вредности на враќање на мутаторот Метод на празнина Повици Мутатор Конструктор повици Мутатор Вклучен константен мутатор Невалиден метод Повици Мутатор Отстрани ги условите мутатор експериментален член

Оригинална промена на мутатори на условите на границите на мутаторот> 15 < return -i; >Промена на негирање на јавниот плови (конечен плови i) < return i; >15-ти

16 Мутатори II Математички мутатор Оригинална промена *// *% * & & ^ &> >> >> >> 17 Мутатори III Врати вредности Мутатор Оригинален Буловски инт, бајт, краток Long X + 1 Плови, двојни предмети Метод на празнина Повик на мутатор Оригинален јавен инт foo () < int i = 5; dosomething(i); return i; >Променете ја вистинската или погрешната 1 или 0, спротивно на оригиналот - (x + 1.0) Null или RuntimeException за нулта вредност ја смени јавната int foo () < int i = 5; return i; >17-ти

18 Како работи сето тоа? Во зависност од Pitest технологијата: Се прават измени во броевите на бајт кодот и се бара име на изворна датотека Mutate.py (скрипта за мутации на C-код): Генерира модифицирана.c-датотека 18

19 Предизвици Интензивно напојување Може да се користи само со моментална компјутерска моќност Тест на единица времетраење на мин. 53 с. Мин. 39 с. Тест на времето: мин. 44 с. 19

20 предизвици - тајминг ========================================> скенирајте ја патеката на час: 1 секунда> анализа на покриеност и зависност: 2 минути и 33 секунди> тестови за градење мутација: 1 секунда> извршена анализа на мутација: 5 минути и 7 секунди> Вкупно: 7 минути и 44 секунди ================= ==================================================== =============== - Статистика ================================== ======== ======================================== Генерирани 5336 мутации убиени 3034 (57%) >> истрчани 9923 тестови (1,86 тестови по мутација) 20

21 предизвици II Лажни позитиви Јазична поддршка со различен квалитет Употреба во тековниот проект тешка за употреба: JavaScript транспилација 21

22 Можни решенија Повеќе моќност (процесор, нишки) Користете само во одредени периоди Ограничете се на одредени тестови Само активирајте одредени мутатори ПДД: Актуелна анализа Обид за оптимизација со претпоставки за промените

25 крај Ви благодариме за вниманието, доколку имате какви било прашања: 25