Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie...

48
Metodyki zwinne wytwarzania oprogramowania Wyklad 4 Marcin Mlotkowski 26 października 2016

Transcript of Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie...

Page 1: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Metodyki zwinne wytwarzania oprogramowaniaWykład 4

Marcin Młotkowski

26 października 2016

Page 2: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Plan wykładu

1 Testowanie oprogramowaniaWprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

2 Testy akceptacyjne

3 Wytwarzanie sterowane testamiFazy TDD

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 2 / 34

Page 3: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Najsłynniejsze i najdroższe błędy programistyczne

Ariane 5 lot 501

Użycie oprogramowania z Ariane 4 (370 mln USD).

Apollo 11

Błąd radaru zbliżeniowego wygenerował serię przerwań komputeranawigacyjnego.

Błąd w aparacie Therac-25 do radioterapii

Wyścigi wątków/procesów spowodowały 200-krotne przekroczeniedawki podczas napromieniania.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 3 / 34

Page 4: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Najsłynniejsze i najdroższe błędy programistyczne

Ariane 5 lot 501

Użycie oprogramowania z Ariane 4 (370 mln USD).

Apollo 11

Błąd radaru zbliżeniowego wygenerował serię przerwań komputeranawigacyjnego.

Błąd w aparacie Therac-25 do radioterapii

Wyścigi wątków/procesów spowodowały 200-krotne przekroczeniedawki podczas napromieniania.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 3 / 34

Page 5: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Najsłynniejsze i najdroższe błędy programistyczne

Ariane 5 lot 501

Użycie oprogramowania z Ariane 4 (370 mln USD).

Apollo 11

Błąd radaru zbliżeniowego wygenerował serię przerwań komputeranawigacyjnego.

Błąd w aparacie Therac-25 do radioterapii

Wyścigi wątków/procesów spowodowały 200-krotne przekroczeniedawki podczas napromieniania.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 3 / 34

Page 6: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Cele testowania

Weryfikacja

Sprawdzenie, czy oprogramowanie jest zgodne ze specyfikacją.

Walidacja

Sprawdzenie, czy oprogramowanie jest zgodne z oczekiwaniamiużytkownika.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 4 / 34

Page 7: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Cele testowania

Weryfikacja

Sprawdzenie, czy oprogramowanie jest zgodne ze specyfikacją.

Walidacja

Sprawdzenie, czy oprogramowanie jest zgodne z oczekiwaniamiużytkownika.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 4 / 34

Page 8: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Typy testów

Testy białej (przezroczystej skrzynki), testy strukturalne

Testy, które mają na celu przejście wszystkich możliwych ścieżek wprogramie.

Testy czarnej skrzynki (testy funkcjonalne)

Testy przygotowane na podstawie specyfikacji.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 5 / 34

Page 9: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Typy testów

Testy białej (przezroczystej skrzynki), testy strukturalne

Testy, które mają na celu przejście wszystkich możliwych ścieżek wprogramie.

Testy czarnej skrzynki (testy funkcjonalne)

Testy przygotowane na podstawie specyfikacji.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 5 / 34

Page 10: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Hierarchia testów

testy jednostkowetesty integracyjnetesty akceptacyjne

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 6 / 34

Page 11: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Przypadek testowy (test case)

Zbiór testów oceniających, czy aplikacja spełnia warunki określonew przypadku użycia.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 7 / 34

Page 12: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Test jednostkowy (unit test)

Test testujący pojedynczy element programu (procedurę, klasę,moduł).

Sposób testowania

sprawdzenie, czy dla przykładowych danych są zwracanewłaściwe wyniki;sprawdzenie reakcji na błędne dane (np: zwrócenie wyjątku);kontrola stanu aplikacji po wykonaniu operacji (np: operacjawstawienia do bazy danych).

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 8 / 34

Page 13: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Test jednostkowy (unit test)

Test testujący pojedynczy element programu (procedurę, klasę,moduł).

Sposób testowania

sprawdzenie, czy dla przykładowych danych są zwracanewłaściwe wyniki;sprawdzenie reakcji na błędne dane (np: zwrócenie wyjątku);kontrola stanu aplikacji po wykonaniu operacji (np: operacjawstawienia do bazy danych).

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 8 / 34

Page 14: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Schemat działania testu jednostkowego

Schemat działania pojedynczego przypadku testowego:1 utworzenie stanu podstawowego;2 wykonanie testowanych operacji;3 weryfikacja wyników;4 przywrócenie stanu początkowego.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 9 / 34

Page 15: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Uwagi

Testy jednostkowe (i ich zestawy) to mogą być programy(skrypty etc) lub scenariusze do ręcznego testowania;test jednostkowy może składać się z kilku drobniejszychtestów;testy powinne być ”zewnętrzne”w stosunku do testowanejjednostki;zestawy testów umożliwiają prowadzenie testowanieregresyjne, tj. czy drobne modyfikacje nie wprowadziły błędów.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 10 / 34

Page 16: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Środowiska xUnit

są to środowiska dedykowane dla poszczególnych języków(Java, Python, C#)są to środowiska oparte o obiekty.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 11 / 34

Page 17: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Podstawowe elementy środowiska xUnit

Przypadek testowy

Jest to klasa, pochodna klasy *Unit

Testy

Pojedyncze testy są implementowane jako metody.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 12 / 34

Page 18: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Test fixtures

Co to jest

Ustalony stan początkowy testu.

Przykład

Pusta (ale istniejąca) baza danych.

Realizacja

Metody:

setup()teardown()

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 13 / 34

Page 19: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Test fixtures

Co to jest

Ustalony stan początkowy testu.

Przykład

Pusta (ale istniejąca) baza danych.

Realizacja

Metody:

setup()teardown()

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 13 / 34

Page 20: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Test fixtures

Co to jest

Ustalony stan początkowy testu.

Przykład

Pusta (ale istniejąca) baza danych.

Realizacja

Metody:

setup()teardown()

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 13 / 34

Page 21: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Kontrola poprawności

Asercje

Metody, które sprawdzają czy zwracane wyniki są zgodne zoczekiwaniami.

Asercje robią wiele innych rzeczy: reagują na nieprzewidzianewyjątki, mierzą czas, etc.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 14 / 34

Page 22: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Kontrola poprawności

Asercje

Metody, które sprawdzają czy zwracane wyniki są zgodne zoczekiwaniami.

Asercje robią wiele innych rzeczy: reagują na nieprzewidzianewyjątki, mierzą czas, etc.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 14 / 34

Page 23: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Uzupełnienie

Kolekcje testów (test suites)

Kolekcje testów, które można uruchamiać dla całego istniejącegooprogramowania.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 15 / 34

Page 24: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Przykład: NUnit

Zadanie

Implementacja stosu.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 16 / 34

Page 25: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

Implementacja

public class Stos<T>{public Stos() { ... }

public bool isEmpty() { ... }

public void push(T val) { ... }

public T pop() { ... }}

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 17 / 34

Page 26: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

WprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

[TestFixture()]public class TestowanieStosu{

[Test()]public void TestEmpty(){Stos<int> s = new Zwinne.Stos<int>();Assert.AreEqual(s.isEmpty(), true);

}[Test()]public void TestPush(){Stos<int> s = new Zwinne.Stos<int>();s.push(1024);Assert.AreEqual(s.pop(), 1024);

}} Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 18 / 34

Page 27: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

Plan wykładu

1 Testowanie oprogramowaniaWprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

2 Testy akceptacyjne

3 Wytwarzanie sterowane testamiFazy TDD

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 19 / 34

Page 28: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

Ogólna definicja

Test akceptacyjny

Test przygotowany przez klienta/użytkownika.

Test jest wyrażany w języku klienta.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 20 / 34

Page 29: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

Ogólna definicja

Test akceptacyjny

Test przygotowany przez klienta/użytkownika.

Test jest wyrażany w języku klienta.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 20 / 34

Page 30: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

Testy akceptacyjne w praktyce

Co może być testem akceptacyjnym

To mogą być przykłady podane przez klienta, na przykład w postaciscenariusza określającego stan początkowy, akcję i stan końcowy.

Prosta akcja

Jeśli użytkownik systemu poda swoje dane i zaakceptuje regulamin,to mu się tworzy profil i widzi on inne profile.

Inny przykład: System Zapisy

Jeśli użytkownik systemu kliknie na przedmiot, i liczba osóbzapisanych na przedmiot jest mniejsza niż limit, to osoba zostajezapisana na przedmiot.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 21 / 34

Page 31: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

Testy akceptacyjne w praktyce

Co może być testem akceptacyjnym

To mogą być przykłady podane przez klienta, na przykład w postaciscenariusza określającego stan początkowy, akcję i stan końcowy.

Prosta akcja

Jeśli użytkownik systemu poda swoje dane i zaakceptuje regulamin,to mu się tworzy profil i widzi on inne profile.

Inny przykład: System Zapisy

Jeśli użytkownik systemu kliknie na przedmiot, i liczba osóbzapisanych na przedmiot jest mniejsza niż limit, to osoba zostajezapisana na przedmiot.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 21 / 34

Page 32: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testami

Testy akceptacyjne w praktyce

Co może być testem akceptacyjnym

To mogą być przykłady podane przez klienta, na przykład w postaciscenariusza określającego stan początkowy, akcję i stan końcowy.

Prosta akcja

Jeśli użytkownik systemu poda swoje dane i zaakceptuje regulamin,to mu się tworzy profil i widzi on inne profile.

Inny przykład: System Zapisy

Jeśli użytkownik systemu kliknie na przedmiot, i liczba osóbzapisanych na przedmiot jest mniejsza niż limit, to osoba zostajezapisana na przedmiot.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 21 / 34

Page 33: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Plan wykładu

1 Testowanie oprogramowaniaWprowadzenieTesty jednostkoweTechnologia testowania jednostkowego

2 Testy akceptacyjne

3 Wytwarzanie sterowane testamiFazy TDD

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 22 / 34

Page 34: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

TDD: Test–Driven Development

Jedna z koncepcji stosowana w programowaniu ekstremalnym(”najpierw testy”).

albo

Samodzielna technika rozwoju oprogramowania.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 23 / 34

Page 35: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

TDD: Test–Driven Development

Jedna z koncepcji stosowana w programowaniu ekstremalnym(”najpierw testy”).

albo

Samodzielna technika rozwoju oprogramowania.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 23 / 34

Page 36: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Zasady TDD

Reguły:

Najpiew pisany jest test jednostkowy, potem kod.Tworzone są tylko niezbędne testy.Kodu pisze się tylko tyle, ile jest niezbędne do przejścia testów.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 24 / 34

Page 37: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Cykl pracy

Napisanietestu

Napisaniekodu

Refaktoryzacjakodu

Testowaniekodu

Testowaniekodu

Test zawiódł

Test przeszedł

Test przeszedł

Test zawiódł

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 25 / 34

Page 38: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Cykl pracy

Zakres prac w ramach cyklu

Pojedyncza funkcjonalność/funkcja

Czas pracy

Kilkanaście minut

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 26 / 34

Page 39: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Faza pierwsza

Dodanie testu

Utworzenie testu na podstawie opowieści użytkownika lubprzypadku użycia.

Napisanie szkicu właściwej klasy/modułu tak, aby test sięskompilował.

Próba testu. Test powinien zawieść, co sugeruje, że test jestpoprawny.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 27 / 34

Page 40: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Faza pierwsza

Dodanie testu

Utworzenie testu na podstawie opowieści użytkownika lubprzypadku użycia.

Napisanie szkicu właściwej klasy/modułu tak, aby test sięskompilował.

Próba testu. Test powinien zawieść, co sugeruje, że test jestpoprawny.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 27 / 34

Page 41: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Faza pierwsza

Dodanie testu

Utworzenie testu na podstawie opowieści użytkownika lubprzypadku użycia.

Napisanie szkicu właściwej klasy/modułu tak, aby test sięskompilował.

Próba testu. Test powinien zawieść, co sugeruje, że test jestpoprawny.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 27 / 34

Page 42: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Faza druga

Testowanie testu

Uruchmienie wszystkich testów (również utworzonych wcześniej), isprawdzenie czy nowy test zawiedzie.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 28 / 34

Page 43: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Faza trzecia

Pisanie właściwego kodu

Kod nie musi być elegancki, ale powinien przechodzić testy. Kodjest poprawiany dopóki nie przejdzie swojego testu.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 29 / 34

Page 44: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Faza czwarta

Uruchomienie wszystkich testów

Testowany jest cały program/moduł.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 30 / 34

Page 45: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Faza piąta

Refaktoryzacja

Ulepszanie kodu i jego testowanie.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 31 / 34

Page 46: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Przykład

Implementacja stosu

Wstępna implementacja stosu

[TestFixture()]public class TestowanieStosu{[Test()]public void TestCase(){Stos<int> s = new Stos<int>();Assert.AreEqual(s.isEmpty(), true);s.push(1024);Assert.AreEqual(s.pop(), 1024);

}}

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 32 / 34

Page 47: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Przykład

Szkielet implementacji stosu

Wstępna implementacja stosu

public class Stos<T> {public Stos() { }public bool isEmpty(){return false;

}public void push(T val) { }public T pop(){return default(T);

}}

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 33 / 34

Page 48: Wykład 4 Marcin Młotkowski 26 października 2016marcinm/dyd/zwinne/testowanie1.pdf · Testowanie oprogramowania Testy akceptacyjne Wytwarzanie sterowane testami Wprowadzenie Testy

Testowanie oprogramowaniaTesty akceptacyjne

Wytwarzanie sterowane testamiFazy TDD

Red–green–refactor

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 34 / 34