Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałDagmara Bednarek Został zmieniony 8 lat temu
1
InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: 01.08.2005 – 31.07.2007 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<n; i++) Sum+= a[i]; White box testing (testowanie szklanej skrzynki) Black box testing (testowanie czarnej skrzynki)
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 http://jwebunit.sourceforge.net/
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 http://httpunit.sourceforge.net/
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() http://httpunit.sf.net http://jwebunit.sf.net
24
Nawigacja: Tabele HTML WebTable[] getTables() table.getCellAsText(row, col) table.getRowCount() table.getColumnCount() ala34 http://httpunit.sf.net http://jwebunit.sf.net
25
Nawigacja: Formularze HTML WebForms[] getForms() Imię: form.getMethod() Wyślij form.submit() form.getAction() form.setParameter() http://httpunit.sf.net http://jwebunit.sf.net
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.