Testowanie aplikacji JAVA Laboratorium 8 (Tabele w scenariuszach JBehave. Projekt z podstaw BDD oraz atrap.) Przykład z użycia bezpośrednio tabel w scenariuszach JBehave znajduje się tutaj. Zadanie 1 (0.5 pkt). Do pokazanego przykładu dokończ metodę thenpowersandsizeissizepowers(examplestable table) uzupełniając ją o odpowiednią asercje. Dopisz co najmniej jeden podobny scenariusz (w osobnym pliku!) do tego przykładu. Zadanie 2 (0.25 pkt). Do poprzedniego zadania dopisz scenariusz (w osobnym pliku), który uruchomi poprzednie dwa scenariusze, będących w innych plikach. Wskazówka: Poszukaj informacji o Given Stories w JBehave. Zadanie 3 (0.75 pkt). Do zadania z przyjaciółmi (poprzednie zadania) dopisz co najmniej 4 scenariusze wykorzystując testy parametryczne (co najmniej 2) oraz z wykorzystaniem bezpośrednio tabel w scenariuszach (co najmniej 2). Scenariusze nie mają mieć pojedynczych przykładów (co najmniej dwa wiersze w tabelach).
PROJEKTY Wybieramy jedno z poniższych zadań. Zadania różnią się poziomem trudności i są inaczej punktowane. Każdy projekt ma być wykonany w Maven! Projekt nie powinien zawierać pliku jar oraz folderu target. Nie działanie mvn test wiąże się z niezaliczonym projektem! Przesyłanie projektu będzie odbywało się przy pomocy utworzenia Issue w swoim repozytorium. Utworzenie Issue wiąże się z oddanym projektem. Wszelkie zmiany po Issue będą obcinane ilością punktów. TERMIN: 23.04.2017 Spóźnienia z terminem będą wiązały się z mniejszą ilością punktów. Maksymalne spóźnienie wynosi 26.04.2017 i wtedy obowiązuje 50% punktów z projektu. A więc dzień zwłoki oznacza obniżenie progu o 15%. Po tym terminie projekty liczone są na 0%! Ponadto pod ocenę będzie brany styl projektu: jak zapisane są testy i jak sprawdzane są asercje. Testy powinny wykorzystywać wiele różnych asercji (a nie tylko assertequals)! Ponadto po sprawdzeniu projektu należy go obronić: będą to krótkie pytania i ewentualne drobne zmiany w kodzie podane przez prowadzącego! Projekt 1 (12 pkt). Tutaj znajduje się interfejs panelu sterującegp odtwarzaczem MP3. Utwórz klasę wypełniając metody z interfejsu i przetestuj działanie odtwarzacza MP3. Przykładowa klasa testująca jest tutaj. Pod ocenę będą brane pod uwagę następujące elementy: (1 pkt) Uwzględnienie powyższych wymagań. (3 pkt) Przypadki testowe (uwzględniające wyjątki). (1 pkt) Przetestowanie przy użyciu Mockito (co najmniej 5 testów). (1 pkt) Przetestowanie przy użyciu EasyMock (co najmniej 5 testów). (1 pkt) Zastosowanie testów akceptacyjnych (co najmniej 5 scenariuszy).
Projekt 2 (16 pkt). Jesteś deweloperem piszącym fragment (bardzo uproszczonej) aplikacji (tutaj klasy Messenger) wysyłającej komunikaty do serwera. Twoja klasa korzysta z implementacji interfejsu MessageService. Zadaniem twojej aplikacji (uwaga: często spotykane w praktyce) jest m.in. ukrywanie statusów oraz wyjątków generowanych przez wykorzystywane komponenty takie jak MessageService. Zgodnie z życzeniem klienta twoja metoda odpowiedzialna za wysyłanie komunikatów ma zwracać liczby: 0 gdy powodzenie 1 gdy występują problemy z wysłaniem 2 gdy adres serwera lub komunikat jest niewłaściwie zbudowany Klasa Messenger powinna też dostarczać metodę do testowania połączenia z serwerem zwracającym liczby: 0 w przypadku sukcesu 1 w przeciwnym przypadku Szkielet systemu jest zaimplementowany tutaj. Dokończ klasę Messenger, a następnie przy użyciu poznawanych technologii przeprowadź testy jednostkowe w tzw. izolacji (czyli bez gotowej implementacji MessageService) Pod ocenę będą brane pod uwagę następujące elementy: (2 pkt) Uwzględnienie powyższych wymagań. (4 pkt) Przypadki testowe (uwzględniające wyjątki). (2 pkt) Przetestowanie przy użyciu Mockito (co najmniej 6 testów). (2 pkt) Przetestowanie przy użyciu EasyMock (co najmniej 6 testów, w tym połowa innych (1 pkt) Zastosowanie testów akceptacyjnych (co najmniej 5 scenariuszy).
Projekt 3 (20 pkt). Rozważmy grę w kółko i krzyżyk z poprzedniego projektu. Teraz dodajmy do tej gry bazę MongoDB z użyciem Jongo (patrz przykład wykorzystany w atrapach) Dopiszmy do niej odpowiednie wymagania: Dodaj opcję umożliwiającą zapisanie posunięcia z numerem kolejki, pozycjami na osiach X i Y oraz symbolem gracza (X lub O). Zapisuj każdy ruch w bazie danych i zapewnij to, że utworzenie nowej sesji spowoduje usunięcie starszych danych. Pod ocenę będą brane pod uwagę następujące elementy: (3 pkt) Uwzględnienie powyższych wymagań. (4 pkt) Przypadki testowe (uwzględniające wyjątki). (3 pkt) Przetestowanie przy użyciu Mockito (co najmniej 6 testów). (3 pkt) Przetestowanie przy użyciu EasyMock (co najmniej 6 testów, w tym połowa innych (2 pkt) Zastosowanie testów akceptacyjnych (co najmniej 8 scenariuszy).
Projekt 4 (25 pkt). Rozważmy bardzo uproszczoną aplikacje w sklepie internetowym, która jest opisana danym diagramem związków encji: Dane do bazy mają być przechowywane w jakimś systemie bazodanowym. Zaimplementuj odpowiednie metody tej aplikacji i przetestuj ją uwzględniając wymagania zawarte w diagramie używając atrap oraz scenariuszy akceptacyjnych. Pod ocenę będą brane pod uwagę następujące elementy: (4 pkt) Uwzględnienie powyższych wymagań. (6 pkt) Przypadki testowe (uwzględniające wyjątki). (3 pkt) Przetestowanie przy użyciu Mockito (co najmniej 8 testów). (3 pkt) Przetestowanie przy użyciu EasyMock (co najmniej 8 testów, w tym połowa innych (3 pkt) Zastosowanie testów akceptacyjnych (co najmniej 10 scenariuszy). (2 pkt) Wykorzystanie scenariuszy parametrycznych (co najmniej 4).