Metodyki zwinne wytwarzania oprogramowania Wykład 5

Marcin Młotkowski

9 listopada 2016 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Plan wykładu

1 Testowanie akceptacyjne FitNesse Testowanie graficznego interfejsu użytkownika (GUI)

2 Zapewnienie jakości kodu Code review Ciągła integracja Czysta inżynieria oprogramowania

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 2 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Co to jest

fork FIT: Framework for Integrated Test portal w stylu Wiki Skąd można pobrać: www.fitnesse.org

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 3 / 25 Łatwy w użyciu Rodzaj serwisu WWW w stylu wiki, który może być ”programowany” również przez klienta (użytkownika) niebędącego programistą

Znaczniki Prosty język znaczników umożliwia łatwe tworzenie testów.

Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Istotne cechy

Przeznaczenie Testy warstwy zaraz ”za interfejsem graficznym”.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 4 / 25 Znaczniki Prosty język znaczników umożliwia łatwe tworzenie testów.

Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Istotne cechy

Przeznaczenie Testy warstwy zaraz ”za interfejsem graficznym”.

Łatwy w użyciu Rodzaj serwisu WWW w stylu wiki, który może być ”programowany” również przez klienta (użytkownika) niebędącego programistą

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 4 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Istotne cechy

Przeznaczenie Testy warstwy zaraz ”za interfejsem graficznym”.

Łatwy w użyciu Rodzaj serwisu WWW w stylu wiki, który może być ”programowany” również przez klienta (użytkownika) niebędącego programistą

Znaczniki Prosty język znaczników umożliwia łatwe tworzenie testów.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 4 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Przykład

Przeliczanie temperatur Przeliczanie stopni Celsiusza na Fahrenheita

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 5 / 25 Uzupełnienie !define TEST_SYSTEM {slim} !path /home/marcinm/fitnesse/FahrenheitTest

Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Przykład testu

|Fahrenheit| |Celsius|temp?| |0 | 32.0 | |100 | 212.0 | |40 | 104.0 |

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 6 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Przykład testu

Uzupełnienie !define TEST_SYSTEM {slim} !path /home/marcinm/fitnesse/FahrenheitTest

|Fahrenheit| |Celsius|temp?| |0 | 32.0 | |100 | 212.0 | |40 | 104.0 |

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 6 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Implementacja funkcjonalności

Przypomnienie |Fahrenheit| |Celsius|temp?| |0 | 32.0 | |100 | 212.0 | |40 | 104.0 |

public class Fahrenheit { private double cels;

public void setCelsius(double c) { this.cels = c; } public double temp() { return 32 + (9/5)*this.cels; } }

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 7 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Rodzaje testów

Decision table: tabela argumentów i poprawnych wartości Query table: zapytania w stylu zapytań do bazy danych Script table: tworzenie scenariuszy

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 8 / 25 HtmlFixture Testy akceptacyjne dla serwisów webowych.

Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Dodatkowe wtyczki

Fit JfcFixtures Testy akceptacyjne dla programów Java Swing

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 9 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Dodatkowe wtyczki

Fit JfcFixtures Testy akceptacyjne dla programów Java Swing

HtmlFixture Testy akceptacyjne dla serwisów webowych.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 9 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Rodzaje GUI

Testowanie interfejsów lokalnych Testowanie serwisów WWW

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 10 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Selenium

wtyczka do Firefoxa może zapisywać scenariusze (”wyklikane”przez użytkownika) i je odtwarzać scenariusze mogą być zapisywane w Ruby, Python, .NET, Java, PHP

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 11 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) CubicTest

Graficzna wtyczka do Eclipse wspierająca tworzenie testów Selenium

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 12 / 25 przede wszystkim dla systemów Windows są wersje Mono/ AutoKey: wzorowany na AutoHotkey, na Linux/X11

Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) AutoHotKey

Cele programu Symulowanie użytkownika poprzez ”udawanie” naciskania klawiszy czy klikania myszką

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 13 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) AutoHotKey

Cele programu Symulowanie użytkownika poprzez ”udawanie” naciskania klawiszy czy klikania myszką

przede wszystkim dla systemów Windows są wersje Mono/Linux AutoKey: wzorowany na AutoHotkey, na Linux/X11

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 13 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) AutoHotKey

Przykład skryptu WinGet, wowid, list, World of Warcraft ;2locks

1:: KeyWait, 1, D ControlSend,, 1 , ahk_id %wowid1% ControlSend,, h , ahk_id %wowid2% ; assist macro /target Party1 /assist Sleep, 500 ControlSend,, 1 , ahk_id %wowid2%

Return

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 14 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Xnee

Dedykowany system do X11, z możliwością zapisywania o odtwarzania akcji użytkownika (naciśnięcia klawiszy, ruchy myszki).

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 15 / 25 Cechy możliwość zapisywania i odtwarzania akcji użytkownika programowanie akcji: Python

Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) System dedykowany: Linux Desktop Testing Project

Testowanie programów graficznych: Gnome KDE Java (SWING) Firefox

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 16 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) System dedykowany: Linux Desktop Testing Project

Testowanie programów graficznych: Gnome KDE Java (SWING) Firefox Cechy możliwość zapisywania i odtwarzania akcji użytkownika programowanie akcji: Python

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 16 / 25 Testowanie akceptacyjne FitNesse Zapewnienie jakości kodu Testowanie graficznego interfejsu użytkownika (GUI) Test Automation FX

Środowisko do Visual Studio. Cechy: możliwość zapisywania akcji użytkownika implementacja własnych skryptów w C#

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 17 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Plan wykładu

1 Testowanie akceptacyjne FitNesse Testowanie graficznego interfejsu użytkownika (GUI)

2 Zapewnienie jakości kodu Code review Ciągła integracja Czysta inżynieria oprogramowania

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 18 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Inspekcja kodu

Systematyczne przeglądanie kodu w celu znalezienia błędów.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 19 / 25 wyznaczenie osoby odpowiedzialnej za przeglądy; wykorzystanie oprogramowania do wyszukiwania błędów; organizowanie spotkań.

Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Sposoby code review

podczas programowania w parach;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 20 / 25 wykorzystanie oprogramowania do wyszukiwania błędów; organizowanie spotkań.

Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Sposoby code review

podczas programowania w parach; wyznaczenie osoby odpowiedzialnej za przeglądy;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 20 / 25 organizowanie spotkań.

Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Sposoby code review

podczas programowania w parach; wyznaczenie osoby odpowiedzialnej za przeglądy; wykorzystanie oprogramowania do wyszukiwania błędów;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 20 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Sposoby code review

podczas programowania w parach; wyznaczenie osoby odpowiedzialnej za przeglądy; wykorzystanie oprogramowania do wyszukiwania błędów; organizowanie spotkań.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 20 / 25 Dlaczego Wczesne wykrywanie problemów integracji (liczba argumentów w wywołaniach, różnice kompilatorów/bibliotek, etc).

Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Ciągła integracja

Łączenie wyników pracy programistów. Najlepiej łatwo i kilka razy dziennie.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 21 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Ciągła integracja

Łączenie wyników pracy programistów. Najlepiej łatwo i kilka razy dziennie.

Dlaczego Wczesne wykrywanie problemów integracji (liczba argumentów w wywołaniach, różnice kompilatorów/bibliotek, etc).

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 21 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Elementy integracji

kompilacja całej aplikacji; testowanie całej aplikacji;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 22 / 25 automatyczna budowa kodu wynikowego; testy automatyczne; automatyczne uruchamianie integracji po commicie;

Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Praktyczna realizacja ciągłej integracji

wspólne repozytorium kodu;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 23 / 25 testy automatyczne; automatyczne uruchamianie integracji po commicie;

Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Praktyczna realizacja ciągłej integracji

wspólne repozytorium kodu; automatyczna budowa kodu wynikowego;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 23 / 25 automatyczne uruchamianie integracji po commicie;

Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Praktyczna realizacja ciągłej integracji

wspólne repozytorium kodu; automatyczna budowa kodu wynikowego; testy automatyczne;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 23 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Praktyczna realizacja ciągłej integracji

wspólne repozytorium kodu; automatyczna budowa kodu wynikowego; testy automatyczne; automatyczne uruchamianie integracji po commicie;

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 23 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Idea

najlepiej robic wszystko dobrze od razu.

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 24 / 25 Code review Testowanie akceptacyjne Ciągła integracja Zapewnienie jakości kodu Czysta inżynieria oprogramowania Realizacja

formalne definiowanie specyfikacji; dowodzenie twierdzeń o poprawności; statystyczna kontrola jakości (oparta na statystycznych przewidywaniach dot. wykorzystania aplikacji);

Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 25 / 25