Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: 01.08.2005 – 31.07.2007 Testowanie akceptacyjne.

Podobne prezentacje


Prezentacja na temat: "InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: 01.08.2005 – 31.07.2007 Testowanie akceptacyjne."— Zapis prezentacji:

1 InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: – Testowanie akceptacyjne Bartosz Walter Marcin Werla Szkolenie finansowane ze środków Europejskiego Funduszu Społecznego (75%) i budżetu państwa (25%) w ramach Zintegrowanego Programu Operacyjnego Rozwoju Regionalnego

2 Model V Specyfikacja wymagań Kodowanie Projekt Testy integracyjne Testy akceptacyjne Testy jednostkowe

3 Model V Specyfikacja wymagań Testy akceptacyjne Projekt Testy integracyjne Kodowanie Testy jednostkowe Klient

4 Programowanie Ekstremalne Programowanie sterowane testami Testy akceptacyjne: klient Automatyczne testy akceptacyjne: klient + tester Pomiary postępu bazujące na testach akceptacyjnych

5 Programowanie Ekstremalne Testy akceptacyjne jako miara postępów

6 Rodzaje testów Sum=0; for (i=0; i

7 Testy akceptacyjne  Testy akceptacyjne są wykonywane przez klienta lub w jego imieniu przed akceptacją oprogramowania  Testy akceptacyjne nie mają na celu znalezienia błędów w oprogramowaniu  Służą do udowodnienia, że aplikacja działa w założony sposób

8 Na czym polega automatyzacja testowania? To proste! 1. Kup automat testujący 2. Nagraj testy. 3. Odtwarzaj je, kiedykolwiek będziesz miał ochotę. „Just as there is more to software design than knowing a programming language, there is more to automating testing than knowing a testing tool.” -- M. Fewster & D. Graham

9 Testy ręczne czy automatyczne? Pracochłonność automatyzacji testów: 2 – 10 razy tyle co ręczne wykonanie testów (!)

10 Automatyzacja wykonywania testów  Skrypty automatyczne nie są podobne do skryptów ręcznych  Nie automatyzuj testowania przez proste nagrywanie testów  Automatyczne wykonywanie z ‘ręczną’ weryfikacją?  Ile porównywać (wszystko czy tylko część)?  Dynamiczne porównywanie i porównywanie po wykonaniu  Wyniki porównania automatycznego muszą być ręcznie sprawdzane  Testy uruchomione drugi raz – zawodzą

11 Czynności testowania Zidentyfikuj warunki testowania (‘co’ testować) i priorytety Zaprojektuj scenariusze testowe (‘jak’ testować) Zbuduj przypadki testowe (skrypty, dane etc.) Przeprowadź testy Porównaj faktyczne wyniki z oczekiwanymi

12 Przykład scenariusza testowego 1. Wprowadź frazę "Zbigniew Herbert" do pola wyszukiwania Wyświetlona zostaje lista pasujących książek 2. Wybierz pozycję piątąWyświetlona zostaje strona z opisem książki 3. Kliknij klawisz "Dodaj do koszyka" Wyświetlona zostaje ponownie lista z umieszczoną książką w koszyku 4. Kliknij klawisz "Twój koszyk"Wyświetlona zostaje zawartość koszyka z jedną pozycją 5. Wprowadź wartość "2" w polu "Liczba", kliknij klawisz "Przelicz" Wartość zakupu wynosi dwa razy więcej 6. Kliknij klawisz usuńWyświetlony zostaje pusty koszyk

13 Testowanie aplikacji internetowych Serwer WWW HTML Klient HTTP HttpUnit, jWebUnit Klient odwołuje się jedynie do interfejsu WWW

14 jWebUnit  Wysokopoziomowa biblioteka służąca do testowania aplikacji internetowych po stronie klienta  Uproszczone API w stosunku do HTTPUnit  Możliwość wykorzystania HTTPUnit  Testy nie zależą od implementacji serwera  Interfejsem komunikacyjnym jest HTTP 

15 Architektura HttpUnit/jWebUnit Web Server HTML Klient HTTP Parser HTML TestCase Odpowiedź Żądanie HttpUnit

16 Przypadek testowy jWebUnit YYYTest.java + testXXX() + tearDown () + setUp () Klient getTestContext().setBaseUrl(URL aplikacji) beginAt(dokładny URL); Wskazanie adresu aplikacji

17 Przypadek testowy jWebUnit FormTest.java + testXXX() + tearDown () + setUp () Klient clickLinkWithText("Formularz"); setFormElement("imie", "Janek"); submit(); assertTextPresent("Wiek: 20 lat"); assertLinkWithTextPresent("Powrót"); Nawigacja i asercje

18  assertFramePresent (ID)  assertWindowPresent (ID)  assertTitleEquals(oczekiwany)  assertTextPresent(tekst)  assertLinkPresent(ID)  assertLinkPresentWithText(ID)  assertLinkPresentWithImage(ID) OGÓLNE Asercje jWebUnit  assertFormPresent (ID)  assertFormElementPresent (ID)  assertFormElementPresentWithLabel(etykieta)  assertFormElementEquals(oczekiwany, faktyczny)  assertCheckboxSelected(ID)  assertButtonPresent(ID)  assertRadioOptionPresent(ID)  assertOptionsEqual(nazwa, wzorce[]) FORMULARZETABELE  assertTablePresent (ID)  assertTableEquals(ID, tabela[][])  assertTextInTable (ID, tekst)  assertTableRowsEqual(ID, wierszPoczątkowy, oczekiwana)

19 HttpUnit  Złożona biblioteka do testów akceptacyjnych aplikacji internetowych  Wbudowany parser HTML  Wbudowane wsparcie dla JavaScript (rhino)  Integracja z jWebUnit 

20 WebRequest, WebResponse  WebRequest  Obiekt reprezentujący żądanie HTTP  Specyficzne podklasy obsługują metody GET, POST & PUT  WebResponse  Obiekt reprezentujący odpowiedź HTTP  Można go przetwarzać zarówno jako zwykły tekst lub DOM WebConversation wc = new WebConversation(); WebRequest request = new GetMethodWebRequest( "http://www.merlin.com.pl"); WebResponse response = wc.getResponse(request);

21 Wybrane metody klasy WebRequest WebRequest  void setParameter (String name, String value)  void setParameter (parameterName, UploadFileSpec[] files)  void setHeaderField(String name, String value)  java.util.Dictionary getHeaders()  void selectFile(String name, File file)  java.net.URL getUrl()

22 Wybrane metody klasy WebResponse WebResponse  String getContentType()  org.w3c.dom.Document getDOM()  HTMLElement[] getElementsWithName(String name)  HTMLElement getElementWithId(String id)  WebForm getFirstMatchingForm (HTMLElementPredicate predicate, Object criteria)  WebLink getFirstMatchingLink (HTMLElementPredicate predicate, Object criteria)  WebTable getFirstMatchingTable (HTMLElementPredicate predicate, Object criteria)

23 Nawigacja: Linki HTML WebLink getLinkWithText() link.click() link.mouseOver() Do formularza WebRequest link.getRequest()

24 Nawigacja: Tabele HTML WebTable[] getTables() table.getCellAsText(row, col) table.getRowCount() table.getColumnCount() ala34

25 Nawigacja: Formularze HTML WebForms[] getForms() Imię: form.getMethod() Wyślij form.submit() form.getAction() form.setParameter()

26 Księgarnia elektroniczna

27 Zadanie Napisz testy akceptacyjne z wykorzystaniem bibliotek jWebUnit i HttpUnit, które zweryfikują podany przykład scenariusza Zakup książki 1. Klient wyszukuje książki dostępne w księgarni. 2. Klient wkłada do koszyka wybraną książkę. 3. Klient przegląda zawartość koszyka i zwiększa liczbę egzemplarzy 4. System aktualizuje cenę zakupu 5. Klient zwiększa liczbę egzemplarzy, tak aby kwota przekroczyła 150 PLN 6. System wyświetla informację o gratisowej dostawie 7. Klient klika klawisz "Do kasy" 8. System przekierowuje formularz na bezpieczne połączenie https Wyjątki 3a. Klient chce rozważyć możliwość zakupu jeszcze jednej książki. 3a1. Następuje powrót do kroku 1. 3b. Klient chce zrezygnować z zakupu książki, którą ma w koszyku. 3b1. Klient usuwa książkę z koszyka

28 Podsumowanie Testy akceptacyjne są tworzone pod dyktando klienta Testy akceptacyjne są b.dobrym miernikiem postępów Testy akceptacyjne pasują do przypadków użycia Testy akceptacyjne można automatyzować, ale trzeba uważać

29 Q&A


Pobierz ppt "InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: 01.08.2005 – 31.07.2007 Testowanie akceptacyjne."

Podobne prezentacje


Reklamy Google