Metody przewidywania jakości produktu: szacowanie defektów w kodzie

Podobne dokumenty
Regresja logistyczna. Regresja logistyczna. Przykłady DV. Wymagania

Techniki (automatyzacji) projektowania testów. Adam Roman WarszawQA, 24 II 2016

Regresja liniowa wprowadzenie

Temat zajęć: ANALIZA DANYCH ZBIORU EKSPORT. Część I: analiza regresji

Plan. Zapewnienie jakości produktu informatycznego. Zarządzanie jakością i metryki oprogramowania. Podstawowe parametry mierzalne

Model regresji wielokrotnej Wykład 14 ( ) Przykład ceny domów w Chicago

Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania. Pomiary w inżynierii oprogramowania

KORELACJA 1. Wykres rozrzutu ocena związku między zmiennymi X i Y. 2. Współczynnik korelacji Pearsona

Regresja liniowa. Etapy analizy regresji. Założenia regresji. Kodowanie zmiennych jakościowych

Analiza zależności cech ilościowych regresja liniowa (Wykład 13)

Testowanie mutacyjne

Prawdopodobieństwo i statystyka r.

Regresja liniowa w R Piotr J. Sobczyk

Testy własności składnika losowego Testy formy funkcyjnej. Diagnostyka modelu. Część 2. Diagnostyka modelu

Testowanie oprogramowania

Rozdział 2: Metoda największej wiarygodności i nieliniowa metoda najmniejszych kwadratów

Czy techniki projektowania testów mają sens? Adam Roman WarszawQA, 14 IV 2015

Niezawodność diagnostyka systemów laboratorium. Ćwiczenie 2

PAKIETY STATYSTYCZNE

Rachunek prawdopodobieństwa dla informatyków

Średni. Mały. Zakres Dół Środek Góra

Niezawodność i diagnostyka projekt. Jacek Jarnicki

Nowa oferta edukacyjna Uniwersytetu Wrocławskiego odpowiedzią na współczesne potrzeby rynku pracy i gospodarki opartej na wiedzy

Matematyka ubezpieczeń majątkowych r.

Projekt Nowa oferta edukacyjna Uniwersytetu Wrocławskiego odpowiedzią na współczesne potrzeby rynku pracy i gospodarki opartej na wiedzy

Stanisław Cichocki. Natalia Nehrebecka

PODSTAWY STATYSTYCZNEJ ANALIZY DANYCH

Statystyka medyczna II. 7. Wstęp do regresji logistycznej. Regresja logistyczna prosta, porównanie z miarami ryzyka.

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ Arkusz I. Czas pracy: 60 minut Liczba punktów do uzyskania: 15

Stanisław Cichocki. Natalia Nehrebecka. Wykład 9

Niezawodność i diagnostyka projekt

Priorytetyzacja przypadków testowych za pomocą macierzy

Najwyżej ocenione raporty dla Mr Buggy 4

Równania strukturalne

Certyfikowany tester Pytania przykładowe do poziomu podstawowego

EGZAMIN MAGISTERSKI, Matematyka w ekonomii i ubezpieczeniach. x i 0,

Zastosowanie uogólnionych modeli liniowych i uogólnionych mieszanych modeli liniowych do analizy danych dotyczacych występowania zębiniaków

Regresja logistyczna. Regresja logistyczna. Wymagania. Przykłady DV

Entropia Renyi ego, estymacja gęstości i klasyfikacja #2

Regresja logistyczna

Uczenie ze wzmocnieniem

Ekonometria dla IiE i MSEMat Z7

Własności statystyczne regresji liniowej. Wykład 4

Stanisław Cichocki Natalia Nehrebecka. Wykład 7

1. Pokaż, że estymator MNW parametru β ma postać β = nieobciążony. Znajdź estymator parametru σ 2.

Stanisław Cichocki. Natalia Nehrebecka

Testowanie oprogramowania. Wykład 1 dlaczego testowanie jest niezbędne czym jest testowanie ogólne zasady testowania

Wykład Centralne twierdzenie graniczne. Statystyka matematyczna: Estymacja parametrów rozkładu

EGZAMIN DYPLOMOWY, część II, Biomatematyka

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

1.9 Czasowy wymiar danych

Analiza regresji Konspekt do zaj : Statystyczne metody analizy danych

Ekonometria dla IiE i MSEMat Z12

Projekt Nowa oferta edukacyjna Uniwersytetu Wrocławskiego odpowiedzią na współczesne potrzeby rynku pracy i gospodarki opartej na wiedzy

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE

WSTĘP DO REGRESJI LOGISTYCZNEJ. Dr Wioleta Drobik-Czwarno

Podstawowe modele probabilistyczne

Testy automatyczne. Korzystające z junit

Wstęp do Metod Systemowych i Decyzyjnych Opracowanie: Jakub Tomczak

W4 Eksperyment niezawodnościowy

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Testowanie hipotez statystycznych.

KONKURS MATEMATYCZNY

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

1 Modele ADL - interpretacja współczynników

Ekonometryczne modele nieliniowe

Testowy dokument raz dwa trzy

Wykład 9 Wnioskowanie o średnich

Metody systemowe i decyzyjne w informatyce

Modele nieliniowe a funkcja nls()

(LMP-Liniowy model prawdopodobieństwa)

Testowanie oprogramowania. Piotr Ciskowski

Microsoft Test Manager

Estimation and planing. Marek Majchrzak, Andrzej Bednarz Wroclaw,

Statystyka. Rozkład prawdopodobieństwa Testowanie hipotez. Wykład III ( )

Regresja - zadania i przykłady.

Statystyka w analizie i planowaniu eksperymentu

Mikroekonometria 6. Mikołaj Czajkowski Wiktor Budziński

Strategie ewolucyjne. Gnypowicz Damian Staniszczak Łukasz Woźniak Marek

Cwiczenie 3 - Rozkłady empiryczne i. teoretyczne

weryfikacja hipotez dotyczących parametrów populacji (średnia, wariancja) założenie: znany rozkład populacji (wykorzystuje się dystrybuantę)

Kolokwium ze statystyki matematycznej

Mikroekonometria 3. Mikołaj Czajkowski Wiktor Budziński

Prawdopodobieństwo i statystyka r.

Niech X i Y będą niezależnymi zmiennymi losowymi o rozkładach wykładniczych, przy czym Y EX = 4 i EY = 6. Rozważamy zmienną losową Z =.

Regresja liniowa oraz regresja wielokrotna w zastosowaniu zadania predykcji danych. Agnieszka Nowak Brzezińska Wykład III-VI

Oprogramowanie dla GWAS

Stanisław Cichocki. Natalia Nehrebecka. Wykład 10

Bioinformatyka V. Analiza Danych w Języku R

Zbiór pyta«zaawansowanej ekonometrii. c Rafaª Wo¹niak 1

Regresja - zadania i przykłady.

Uczenie ze wzmocnieniem

Analiza wariancji - ANOVA

Stanisław Cichocki Natalia Nehrebecka. Wykład 1

Wprowadzenie Model ARMA Sezonowość Prognozowanie Model regresji z błędami ARMA. Modele ARMA

Odwrotna analiza wartości brzegowych przy zaokrąglaniu wartości

2.3 Modele nieliniowe

Transkrypt:

Metody przewidywania jakości produktu: szacowanie defektów w kodzie Adam Roman Instytut Informatyki i Matematyki Komputerowej UJ TestWell, 21 IV 2015, Kraków

i wtedy powiedziałam PMowi, że po 6 tygodniach prac nad projektem wiemy, że będzie w nim w sumie 146 defektów i jeśli zrobimy release już za 4 tygodnie, to w kodzie wciąż zostanie 12 defektów polowych; ich naprawa będzie kosztować 3 razy więcej, niż koszt wydłużenia prac o 2 tygodnie, w których znajdziemy 9 z tych defektów, ale z drugiej strony nie opłaci się nam szukać ich dalej

i wtedy powiedziałam PMowi, że po 6 tygodniach prac nad projektem wiemy, że będzie w nim w sumie 146 defektów i jeśli zrobimy release już za 4 tygodnie, to w kodzie wciąż zostanie 12 defektów polowych; ich naprawa będzie kosztować 3 razy więcej, niż koszt wydłużenia prac o 2 tygodnie, w których znajdziemy 9 z tych defektów, ale z drugiej strony nie opłaci się nam szukać ich dalej

Ile waży wół? Czyli mądrość tłumu

Wisdom of crowd 2.0: metoda delficka RUNDA 1 RUNDA 2 RUNDA 3 RUNDA 4 WYNIK X X X X X X 0 10 20 30 40 50 X X X X X 0 10 20 30 40 50 X X X X 0 10 20 30 40 50 X X 0 10 20 30 40 50 X 0 10 20 30 40 50

Dane historyczne: metoda naiwna PROJEKT A - zakończony KLOC 45 Defekty / KLOC 1.4 Defekty wykryte 63 Defekty polowe 8 PROJEKT B w trakcie KLOC (ew. estymacja KLOC) 70 Defekty / KLOC 1.4 Predykcja wykrytych defektów 98 Defekty polowe 12 =70*1.4 =98*(8/63)

Dane historyczne: metoda naiwna PROJEKT A - zakończony KLOC 45 Defekty / KLOC 1.4 Defekty wykryte 63 Defekty polowe 8 PROJEKT B w trakcie KLOC (ew. estymacja KLOC) 70 Defekty / KLOC 1.4 Predykcja wykrytych defektów 98 Defekty polowe 12 =70*1.4 =98*(8/63) technologia? doświadczenie zespołu? proces testowy? czas trwania projektu? złożoność/trudność projektu? typ projektu?

Dane historyczne: Rome Lab Model

Barry Boehm Model COCOMO II: COnstructive COst MOdel

COCOMO II dla defektów: COQUALMO

Jak policzyć ryby w stawie?

Jak policzyć ryby w stawie? POŁÓW złowiono 8 rybek OZNACZENIE oznaczono 8 rybek Wypuszczenie rybek do stawu

Jak policzyć ryby w stawie? POŁÓW złowiono 8 rybek OZNACZENIE oznaczono 8 rybek Wypuszczenie rybek do stawu PONOWNY POŁÓW

Jak policzyć ryby w stawie? POŁÓW złowiono 8 rybek OZNACZENIE oznaczono 8 rybek Wypuszczenie rybek do stawu 2 spośród 8 rybek są oznaczone Przewidujemy, że w stawie pływa ok. 32 rybek! PONOWNY POŁÓW

Testowanie mutacyjne 1. read X, Y 2. if (X>0) then { 3. Y = Y + 1 4. } 5. return X+Y PROGRAM 1. read X, Y 2. if (X>0) then { 3. Y = X + 1 4. } 5. return X+Y MUTANT Test 1: X=5, Y=5 Oczekiwany wynik: 11 Test 1: X=5, Y=5 Wynik: 11 Test 2: X=6, Y=5 Oczekiwany wynik: 12 Test 2: X=6, Y=5 Wynik: 13 Tester jest zmuszony dodać nowy test, aby zabić mutanta M2!

Jak szacować defekty przy użyciu mutacji? w analogiczny sposób jak przy zliczaniu rybek w stawie! załóżmy, że testy wykryły D prawdziwych defektów, które zostały naprawione (usunięte) tworzymy N mutantów (symulujemy N sztucznych defektów) testy zabiły M spośród nich, czyli wykryły M/N całości D wynosi około M/N wszystkich prawdziwych defektów czyli szacujemy liczbę wszystkich prawdziwych defektów na (N/M)*D a skoro już usunęliśmy D z nich, w kodzie pozostało: (N/M)*D D = (N/M 1)*D

Model bazujący na pokryciu defekty vs. czas defekty vs. pokrycie w przybliżeniu funkcja liniowa pokrycie vs. czas może nie być obserwowane w niektórych programach eksperymenty dla pokryć: instrukcyjnego, gałęzi, p-use

Model bazujący na pokryciu

Modele zmian w kodzie (churn models) Microsoft, 2005 rok pozwalają na predykcję gęstości defektów na podstawie analizy repozytorium kodu wykorzystują metryki zmian w kodzie: LOC zmienione LOC usunięte LOC liczba plików użytych w kompilacji całkowity czas, w którym plik mógł być edytowany liczba zmian pomiędzy kolejnymi wersjami zmienione pliki

liczba znalezionych defektów Model Rayleigha czas t to pole wynosi ok. 40% pola pod całą krzywą zastosowanie naiwne: oblicz sumę S defektów znalezionych do czasu t szacuj całkowitą liczbę defektów na S/0.4

Model Rayleigha - przykład Tydzień 1 2 3 4 5 6 7 8 9 Liczba defektów 20 41 48 52 62 59 52 44 33 zastosowanie naiwne: max w tygodniu 5 do tygodnia nr 5 znaleziono 20+41+48+52+62 = 223 defektów całkowita liczba defektów szacowana jest na: 223/0.4=557

Model Rayleigha - przykład 1> obs <- data.frame(t=c(1:9), d=c(20,41,48,52,62,59,52,44,33)) 2> pred <- data.frame(t=c(10:15), d=na) 3> points <- rbind(obs, pred) 4> plot(points$t, points$d, xlim=c(1, 15), ylim=c(0, 65), pch=16) 5> model <- nls(d ~ K*2*(t/c^2)*exp(-(t/c)^2), data=points[1:9,], start=list(k=450, c=8)) 6> summary(model) 7> points$predval <- predict(model, newdata=points) 8> lines(points$t, points$predval, type="o", pch=1) 4>

Model Rayleigha - przykład 1> obs <- data.frame(t=c(1:9), d=c(20,41,48,52,62,59,52,44,33)) 2> pred <- data.frame(t=c(10:15), d=na) 3> points <- rbind(obs, pred) 4> plot(points$t, points$d, xlim=c(1, 15), ylim=c(0, 65), pch=16) 5> model <- nls(d ~ K*2*(t/c^2)*exp(-(t/c)^2), data=points[1:9,], start=list(k=450, c=8)) 6> summary(model) 7> points$predval <- predict(model, newdata=points) 8> lines(points$t, points$predval, type="o", pch=1) 6> Formula: d ~ K * 2 * (t/c^2) * exp(-(t/c)^2) Parameters: Estimate Std. Error t value Pr(> t ) K 489.7381 13.2938 36.84 2.82e-09 *** c 7.0245 0.1687 41.65 1.20e-09 *** --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05. 0.1 1 Residual standard error: 2.977 on 7 degrees of freedom Number of iterations to convergence: 4 Achieved convergence tolerance: 3.137e-06

Model Rayleigha - przykład 1> obs <- data.frame(t=c(1:9), d=c(20,41,48,52,62,59,52,44,33)) 2> pred <- data.frame(t=c(10:15), d=na) 3> points <- rbind(obs, pred) 4> plot(points$t, points$d, xlim=c(1, 15), ylim=c(0, 65), pch=16) 5> model <- nls(d ~ K*2*(t/c^2)*exp(-(t/c)^2), data=points[1:9,], start=list(k=450, c=8)) 6> summary(model) 7> points$predval <- predict(model, newdata=points) 8> lines(points$t, points$predval, type="o", pch=1) 8>

Wykorzystanie modeli niezawodności 1> library("maxlik") 2> i <- 1:10 3> x <- c(7, 11, 8, 10, 15, 22, 20, 25, 28, 35) 4> LL <- function(params) { 5> N <- params[1] 6> Phi <- params[2] 7> sum(log(phi*(n-(i-1))))-sum(phi*(n-(i-1))*x) 8> } 9> fit <- maxlik(ll, start=c(n=14,phi=0.5)) 10> summary(fit) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 9 iterations Return code 2: successive function values within tolerance limit Log-Likelihood: -37.80457 2 free parameters Estimates: Estimate Std. error t value Pr(> t) N 11.5964263 3.5454784 3.2708 0.001073 ** Phi 0.0096343 0.0066917 1.4398 0.149937 --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05. 0.1 1 -------------------------------------------- czasy pomiędzy kolejnymi awariami magiczna funkcja, korzysta z metody największej wiarygodności główna instrukcja: obliczenie modelu szacunkowa całkowita liczba awarii średni czas do następnej awarii

Wykorzystanie modeli niezawodności 1> library("maxlik") 2> i <- 1:10 3> x <- c(7, 11, 8, 10, 15, 22, 20, 25, 28, 35) 4> LL <- function(params) { 5> N <- params[1] 6> Phi <- params[2] 7> sum(log(phi*(n-(i-1))))-sum(phi*(n-(i-1))*x) 8> } 9> fit <- maxlik(ll, start=c(n=14,phi=0.5)) 10> summary(fit) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 9 iterations Return code 2: successive function values within tolerance limit Log-Likelihood: -37.80457 2 free parameters Estimates: Estimate Std. error t value Pr(> t) N 11.5964263 3.5454784 3.2708 0.001073 ** Phi 0.0096343 0.0066917 1.4398 0.149937 --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05. 0.1 1 -------------------------------------------- czasy pomiędzy kolejnymi awariami magiczna funkcja, korzysta z metody największej wiarygodności główna instrukcja: obliczenie modelu szacunkowa całkowita liczba awarii średni czas do następnej awarii