24.01.2014 Views

Testowanie. Testy jednostkowe

Testowanie. Testy jednostkowe

Testowanie. Testy jednostkowe

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Programowanie zwinne<br />

Wykład 4<br />

Marcin Młotkowski<br />

7 listopada 2012


Plan wykładu<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

1 <strong>Testowanie</strong> oprogramowania<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

2 <strong>Testy</strong> akceptacyjne<br />

3 Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Marcin Młotkowski Programowanie zwinne 2 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Najsłynniejsze i najdroższe błędy programistyczne<br />

Ariane 5 lot 501<br />

Użycie oprogramowania z Ariane 4 (370 mln USD).<br />

Marcin Młotkowski Programowanie zwinne 3 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Najsłynniejsze i najdroższe błędy programistyczne<br />

Ariane 5 lot 501<br />

Użycie oprogramowania z Ariane 4 (370 mln USD).<br />

Apollo 11<br />

Błąd radaru zbliżeniowego wygenerował serię przerwań komputera<br />

nawigacyjnego.<br />

Marcin Młotkowski Programowanie zwinne 3 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Najsłynniejsze i najdroższe błędy programistyczne<br />

Ariane 5 lot 501<br />

Użycie oprogramowania z Ariane 4 (370 mln USD).<br />

Apollo 11<br />

Błąd radaru zbliżeniowego wygenerował serię przerwań komputera<br />

nawigacyjnego.<br />

Błąd w aparacie Therac-25 do radioterapii<br />

Wyścigi wątków/procesów spowodowały 200-krotne przekroczenie<br />

dawki podczas napromieniania.<br />

Marcin Młotkowski Programowanie zwinne 3 / 34


Cele testowania<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Weryfikacja<br />

Sprawdzenie, czy oprogramowanie jest zgodne ze specyfikacją.<br />

Marcin Młotkowski Programowanie zwinne 4 / 34


Cele testowania<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Weryfikacja<br />

Sprawdzenie, czy oprogramowanie jest zgodne ze specyfikacją.<br />

Walidacja<br />

Sprawdzenie, czy oprogramowanie jest zgodne z oczekiwaniami<br />

użytkownika.<br />

Marcin Młotkowski Programowanie zwinne 4 / 34


Typy testów<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

<strong>Testy</strong> białej (przezroczystej skrzynki), testy strukturalne<br />

<strong>Testy</strong>, które mają na celu przejście wszystkich możliwych ścieżek w<br />

programie.<br />

Marcin Młotkowski Programowanie zwinne 5 / 34


Typy testów<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

<strong>Testy</strong> białej (przezroczystej skrzynki), testy strukturalne<br />

<strong>Testy</strong>, które mają na celu przejście wszystkich możliwych ścieżek w<br />

programie.<br />

<strong>Testy</strong> czarnej skrzynki (testy funkcjonalne)<br />

<strong>Testy</strong> przygotowane na podstawie specyfikacji.<br />

Marcin Młotkowski Programowanie zwinne 5 / 34


Hierarchia testów<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

testy <strong>jednostkowe</strong><br />

testy integracyjne<br />

testy akceptacyjne<br />

Marcin Młotkowski Programowanie zwinne 6 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Przypadek testowy (test case)<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Zbiór testów oceniających, czy aplikacja spełnia warunki określone<br />

w przypadku użycia.<br />

Marcin Młotkowski Programowanie zwinne 7 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Test jednostkowy (unit test)<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Test testujący pojedynczy element programu (procedurę, klasę,<br />

moduł).<br />

Marcin Młotkowski Programowanie zwinne 8 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Test jednostkowy (unit test)<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Test testujący pojedynczy element programu (procedurę, klasę,<br />

moduł).<br />

Sposób testowania<br />

sprawdzenie, czy dla przykładowych danych są zwracane<br />

właściwe wyniki;<br />

sprawdzenie reakcji na błędne dane (np: zwrócenie wyjątku);<br />

kontrola stanu aplikacji po wykonaniu operacji (np: operacja<br />

wstawienia do bazy danych).<br />

Marcin Młotkowski Programowanie zwinne 8 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Schemat działania testu <strong>jednostkowe</strong>go<br />

Schemat działania pojedynczego przypadku testowego:<br />

1 utworzenie stanu podstawowego;<br />

2 wykonanie testowanych operacji;<br />

3 weryfikacja wyników;<br />

4 przywrócenie stanu początkowego.<br />

Marcin Młotkowski Programowanie zwinne 9 / 34


Uwagi<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

<strong>Testy</strong> <strong>jednostkowe</strong> (i ich zestawy) to mogą być programy<br />

(skrypty etc) lub scenariusze do ręcznego testowania;<br />

test jednostkowy może składać się z kilku drobniejszych<br />

testów;<br />

testy powinne być ”zewnętrzne”w stosunku do testowanej<br />

jednostki;<br />

zestawy testów umożliwiają prowadzenie testowanie<br />

regresyjne, tj. czy drobne modyfikacje nie wprowadziły błędów.<br />

Marcin Młotkowski Programowanie zwinne 10 / 34


Środowiska xUnit<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

są to środowiska dedykowane dla poszczególnych języków<br />

(Java, Python, C#)<br />

są to środowiska oparte o obiekty.<br />

Marcin Młotkowski Programowanie zwinne 11 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Podstawowe elementy środowiska xUnit<br />

Przypadek testowy<br />

Jest to klasa, pochodna klasy *Unit<br />

<strong>Testy</strong><br />

Pojedyncze testy są implementowane jako metody.<br />

Marcin Młotkowski Programowanie zwinne 12 / 34


Test fixtures<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Co to jest<br />

Ustalony stan początkowy testu.<br />

Marcin Młotkowski Programowanie zwinne 13 / 34


Test fixtures<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Co to jest<br />

Ustalony stan początkowy testu.<br />

Przykład<br />

Pusta (ale istniejąca) baza danych.<br />

Marcin Młotkowski Programowanie zwinne 13 / 34


Test fixtures<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Co to jest<br />

Ustalony stan początkowy testu.<br />

Przykład<br />

Pusta (ale istniejąca) baza danych.<br />

Realizacja<br />

Metody:<br />

setup()<br />

teardown()<br />

Marcin Młotkowski Programowanie zwinne 13 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Kontrola poprawności<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Asercje<br />

Metody, które sprawdzają czy zwracane wyniki są zgodne z<br />

oczekiwaniami.<br />

Marcin Młotkowski Programowanie zwinne 14 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Kontrola poprawności<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Asercje<br />

Metody, które sprawdzają czy zwracane wyniki są zgodne z<br />

oczekiwaniami.<br />

Asercje robią wiele innych rzeczy: reagują na nieprzewidziane<br />

wyjątki, mierzą czas, etc.<br />

Marcin Młotkowski Programowanie zwinne 14 / 34


Uzupełnienie<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Kolekcje testów (test suites)<br />

Kolekcje testów, które można uruchamiać dla całego istniejącego<br />

oprogramowania.<br />

Marcin Młotkowski Programowanie zwinne 15 / 34


Przykład: NUnit<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

Zadanie<br />

Implementacja stosu.<br />

Marcin Młotkowski Programowanie zwinne 16 / 34


Implementacja<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

public class Stos<br />

{<br />

public Stos() { ... }<br />

public bool isEmpty() { ... }<br />

public void push(T val) { ... }<br />

}<br />

public T pop() { ... }<br />

Marcin Młotkowski Programowanie zwinne 17 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

[Test()]<br />

public void TestEmpty()<br />

{<br />

Stos s = new Zwinne.Stos();<br />

Assert.AreEqual(s.isEmpty(), true);<br />

}<br />

[Test()]<br />

public void TestPush()<br />

{<br />

Stos s = new Zwinne.Stos();<br />

s.push(1024);<br />

Assert.AreEqual(s.pop(), 1024);<br />

}<br />

Marcin Młotkowski Programowanie zwinne 18 / 34<br />

[TestFixture()]<br />

public class <strong>Testowanie</strong>Stosu<br />

{


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Plan wykładu<br />

1 <strong>Testowanie</strong> oprogramowania<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

2 <strong>Testy</strong> akceptacyjne<br />

3 Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Marcin Młotkowski Programowanie zwinne 19 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Ogólna definicja<br />

Test akceptacyjny<br />

Test przygotowany przez klienta/użytkownika.<br />

Marcin Młotkowski Programowanie zwinne 20 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Ogólna definicja<br />

Test akceptacyjny<br />

Test przygotowany przez klienta/użytkownika.<br />

Test jest wyrażany w języku klienta.<br />

Marcin Młotkowski Programowanie zwinne 20 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

<strong>Testy</strong> akceptacyjne w praktyce<br />

Co może być testem akceptacyjnym<br />

To mogą być przykłady podane przez klienta, na przykład w postaci<br />

scenariusza określającego stan początkowy, akcję i stan końcowy.<br />

Marcin Młotkowski Programowanie zwinne 21 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

<strong>Testy</strong> akceptacyjne w praktyce<br />

Co może być testem akceptacyjnym<br />

To mogą być przykłady podane przez klienta, na przykład w postaci<br />

scenariusza określającego stan początkowy, akcję i stan końcowy.<br />

Prosta akcja<br />

Jeśli użytkownik systemu poda swoje dane i zaakceptuje regulamin,<br />

to mu się tworzy profil i widzi on inne profile.<br />

Marcin Młotkowski Programowanie zwinne 21 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

<strong>Testy</strong> akceptacyjne w praktyce<br />

Co może być testem akceptacyjnym<br />

To mogą być przykłady podane przez klienta, na przykład w postaci<br />

scenariusza określającego stan początkowy, akcję i stan końcowy.<br />

Prosta akcja<br />

Jeśli użytkownik systemu poda swoje dane i zaakceptuje regulamin,<br />

to mu się tworzy profil i widzi on inne profile.<br />

Inny przykład: System Zapisy<br />

Jeśli użytkownik systemu kliknie na przedmiot, i liczba osób<br />

zapisanych na przedmiot jest mniejsza niż limit, to osoba zostaje<br />

zapisana na przedmiot.<br />

Marcin Młotkowski Programowanie zwinne 21 / 34


Plan wykładu<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

1 <strong>Testowanie</strong> oprogramowania<br />

Wprowadzenie<br />

<strong>Testy</strong> <strong>jednostkowe</strong><br />

Technologia testowania <strong>jednostkowe</strong>go<br />

2 <strong>Testy</strong> akceptacyjne<br />

3 Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Marcin Młotkowski Programowanie zwinne 22 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

TDD: Test–Driven Development<br />

Fazy TDD<br />

Jedna z koncepcji stosowana w programowaniu ekstremalnym<br />

(”najpierw testy”).<br />

Marcin Młotkowski Programowanie zwinne 23 / 34


<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

TDD: Test–Driven Development<br />

Fazy TDD<br />

Jedna z koncepcji stosowana w programowaniu ekstremalnym<br />

(”najpierw testy”).<br />

albo<br />

Samodzielna technika rozwoju oprogramowania.<br />

Marcin Młotkowski Programowanie zwinne 23 / 34


Zasady TDD<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Reguły:<br />

Najpiew pisany jest test jednostkowy, potem kod.<br />

Tworzone są tylko niezbędne testy.<br />

Kodu pisze się tylko tyle, ile jest niezbędne do przejścia testów.<br />

Marcin Młotkowski Programowanie zwinne 24 / 34


Cykl pracy<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Napisanie<br />

testu<br />

Napisanie<br />

kodu<br />

Test zawiódł<br />

<strong>Testowanie</strong><br />

kodu<br />

Test przeszedł<br />

Refaktoryzacja<br />

kodu<br />

Test zawiódł<br />

Test przeszedł<br />

<strong>Testowanie</strong><br />

kodu<br />

Marcin Młotkowski Programowanie zwinne 25 / 34


Cykl pracy<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Zakres prac w ramach cyklu<br />

Pojedyncza funkcjonalność/funkcja<br />

Czas pracy<br />

Kilkanaście minut<br />

Marcin Młotkowski Programowanie zwinne 26 / 34


Faza pierwsza<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Dodanie testu<br />

Utworzenie testu na podstawie opowieści użytkownika lub<br />

przypadku użycia.<br />

Marcin Młotkowski Programowanie zwinne 27 / 34


Faza pierwsza<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Dodanie testu<br />

Utworzenie testu na podstawie opowieści użytkownika lub<br />

przypadku użycia.<br />

Napisanie szkicu właściwej klasy/modułu tak, aby test się<br />

skompilował.<br />

Marcin Młotkowski Programowanie zwinne 27 / 34


Faza pierwsza<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Dodanie testu<br />

Utworzenie testu na podstawie opowieści użytkownika lub<br />

przypadku użycia.<br />

Napisanie szkicu właściwej klasy/modułu tak, aby test się<br />

skompilował.<br />

Próba testu. Test powinien zawieźć, co sugeruje, że test jest<br />

poprawny.<br />

Marcin Młotkowski Programowanie zwinne 27 / 34


Faza druga<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

<strong>Testowanie</strong> testu<br />

Uruchmienie wszystkich testów (również utworzonych wcześniej), i<br />

sprawdzenie czy nowy test zawiedzie.<br />

Marcin Młotkowski Programowanie zwinne 28 / 34


Faza trzecia<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Pisanie właściwego kodu<br />

Kod nie musi być elegancki, ale powinien przechodzić testy. Kod<br />

jest poprawiany dopóki nie przejdzie swojego testu.<br />

Marcin Młotkowski Programowanie zwinne 29 / 34


Faza czwarta<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Uruchomienie wszystkich testów<br />

Testowany jest cały program/moduł.<br />

Marcin Młotkowski Programowanie zwinne 30 / 34


Faza piąta<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Refaktoryzacja<br />

Ulepszanie kodu i jego testowanie.<br />

Marcin Młotkowski Programowanie zwinne 31 / 34


Przykład<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Implementacja stosu<br />

Wstępna implementacja stosu<br />

[TestFixture()]<br />

public class <strong>Testowanie</strong>Stosu<br />

{<br />

[Test()]<br />

public void TestCase()<br />

{<br />

Stos s = new Stos();<br />

Assert.AreEqual(s.isEmpty(), true);<br />

s.push(1024);<br />

Assert.AreEqual(s.pop(), 1024);<br />

}<br />

}<br />

Marcin Młotkowski Programowanie zwinne 32 / 34


Przykład<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Szkielet implementacji stosu<br />

Wstępna implementacja stosu<br />

public class Stos {<br />

public Stos() { }<br />

public bool isEmpty()<br />

{<br />

return false;<br />

}<br />

public void push(T val) { }<br />

public T pop()<br />

{<br />

return default(T);<br />

}<br />

}<br />

Marcin Młotkowski Programowanie zwinne 33 / 34


Red–green–refactor<br />

<strong>Testowanie</strong> oprogramowania<br />

<strong>Testy</strong> akceptacyjne<br />

Wytwarzanie sterowane testami<br />

Fazy TDD<br />

Marcin Młotkowski Programowanie zwinne 34 / 34

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!