Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Testy akceptacyjne w pigułce.

3,838 views

Published on

Prezentacja Bartosza Szulca z II edycji konferencji Quality Excites.

Published in: Technology
  • Be the first to comment

Testy akceptacyjne w pigułce.

  1. 1. Klient 0 Korporacja specjalizująca się w tworzeniu oprogramowania dla użytkowników transportu publicznego i prywatnego 0 Bogaty portfel projektów, od aplikacji internetowych po aplikacje na urządzenia mobilne, webowe i natywne
  2. 2. Problem 0Częste release jak poradzić sobie z zapewnieniem jakości dla kolejnych wersji oprogramowania ułatwiającego korzystanie z komunikacji miejskiej w Wielkiej Brytanii? 0Wiele klientów dedykowane rozwiązania pod wybrane obszary Wielkiej Brytanii o zbliżonej funkcjonalności 0Wiele aplikacji wachlarz implementacji... od aplikacji internetowych po aplikacje internetowe mobilne oraz natywne mobilne
  3. 3. Rozwiązanie 0Automatyzacja testowania bo przecież warto zlecić maszynie mało rozwijające, nużące i powtarzalne zadania i skupić się na ciekawszych problemach
  4. 4. Poziomy testów
  5. 5. Warstwy problemu
  6. 6. Implementacja
  7. 7. Narzędzia
  8. 8. Architektura Opis przypadku Warstwa pośrednia Wywołania API
  9. 9. Opis Przypadku
  10. 10. Warstwa Pośrednia
  11. 11. Wywołania API
  12. 12. Ograniczenia 0 Co z osobami, które nie mają doświadczenia w programowaniu... Czy oni mogą tworzyć automatyczne skrypty? 0 Przy dobrej architekturze mogą tworzyć automatyczne przypadki testowe, skorzystać ze stworzonych kroków testowych
  13. 13. Techniki i Dobre Praktyki
  14. 14. Page Objects 0 Niech nasza strona bedzie zbudowana z komponentów, obiektów, specjalizujących się w wybranych funkcjach HomePage *SearchPane - (void) search(String term) *ResultsPane - (Collection<SearchResult>) getResults()
  15. 15. Page Factory 0 Zamiast ręcznie wyszukiwać elementy użyj czytelnych anotacji @FindBy(how = How.NAME, using = "q") private WebElement searchBox; 0 Skorzystaj z opóźnionego wyszukiwania przy AJAX ElementLocatorFactory finder = new AjaxElementLocatorFactory( this.driver, TIMEOUT); PageFactory.initElements(finder, this);
  16. 16. Loadable Components 0 Niech twoje narzędzie samo zarządza wczytywaniem odpowiednich PageObjects i sprawdzaniem ich poprawności @Override protected void load() { driver.get("http://code.google.com/p/selenium/issues/en try"); } @Override protected void isLoaded() throws Error { String url = driver.getCurrentUrl(); assertTrue("Not on the issue entry page: " + url, url.endsWith("/entry")); }
  17. 17. Data Driven Testing 0 Generuj nowe dane testowe z różnych podzbiorów, testuj swoje oprogramowanie zbiorami rozmytymi, nie popadaj w rutynę! Staraj sie tworzyć unikalne zbiory testowe, by jeszcze bardziej uniezależnić swoje testy.
  18. 18. Wstrzykiwanie kontekstu 0 Korzystaj z narzędzi umożliwiających zarządzanie kontekstem poprzez wstrzykiwanie. Wstrzykuj inormacje o środowisku testowym, wstrzykuj informacje o testowanym serwisie, dane testowe, reguły tworzenia obiektów, etc.
  19. 19. Set up & Tear down 0 Korzystaj z Set up i Tear down do generacji unikalnych danych testowych i tworzenia odpowiedniej konfiguracji bazy danych i innych zależności, dzięki czemu będziesz w stanie tworzyć testy niezależne, które będziesz w stanie uruchomić jednocześnie na wielu maszynach.
  20. 20. Środowisko Rozproszone Stabilne Zróżnicowane Kompletne
  21. 21. Środowisko Rozproszone
  22. 22. Rozproszony Web
  23. 23. Rozproszony Web 0 WebDriver Grid2 Konfiguracja mastera java -jar selenium-server-standalone-2.14.0.jar role hub Konfiguracja slave java -jar selenium-server-standalone-2.14.0.jar role node -hub http://localhost:4444/grid/register Nawiązanie połączenia WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
  24. 24. Rozproszony Mobile Web
  25. 25. Rozproszony Mobile Web 0 WebDriver Android Instalacja i inicjalizacja adb -s <serialId> -e install -r server.apk android- adb -s <serialId> shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivi ty adb -s <serialId> forward tcp:8080 tcp:8080
  26. 26. Rozproszony Native Mobile
  27. 27. Rozproszony Native Mobile 0 Jenkins Master-Slave 1. Przyłączanie Slave 2. Konfiguracja Środowiska Developerskiego 3. Stworzenie Joba na Jenkinsie wywoływanego na konkretnym Slave 4. Oskryptowanie Joba o tworzenie instancji emulatora i zbieranie wyników testów z emulatora
  28. 28. Środowisko Zróżnicowane Urządzenia Przeglądarki Konfiguracje testowe Rozdzielczości Systemy operacyjne
  29. 29. Zróżnicowany Web Internet Explorer 8 Chrome Firefox Przeglądarki Opera Internet Explorer 9
  30. 30. Zróżnicowany Web 0 Popularność przeglądarek... Chrome 44.06% Internet Explorer 22.08% Firefox 18.17%
  31. 31. Zróżnicowany Web Mac OS X Lion Windows Vista Windows 7 Systemy operacyjne Windows XP Ubuntu 12.04
  32. 32. Zróżnicowany Web 0 Popularność systemów operacyjnych... Windows 7 44.72% Windows XP 38.31%
  33. 33. Zróżnicowany Mobile Web Emulat ory iPhone Android Urządzenia Black Berry Rzeczywi ste
  34. 34. Zróżnicowany Mobile Web iPhone 5.X Android 2.3.X Android 2.2 Wersje Oprogramowania Android 4.0.X Android 3.X
  35. 35. Zróżnicowany Native Mobile Rootowane Urządzenia Emulatory Android
  36. 36. Zróżnicowany Native Mobile Android 2.3.X Android 2.2 Wersje Oprogramowania Android 4.0.X Android 3.X
  37. 37. Zróżnicowany Native Mobile 0 Popularność wersji systemu Android... 4.2.x 1.6% Jelly Bean 4.1.x Jelly Bean 14.9% 4.0.x Ice Cream Sandwich 28.6%
  38. 38. Środowisko Stabilne
  39. 39. Stabilne Środowisko 0 Przydatne narzędzia 0 PsExec – zdalna kontrola nad maszynami z systemem Windows z poziomu linii poleceń 0 Ssh – zdalna kontrola nad maszynami z systemem Linux z poziomu linii poleceń 0 CCleaner – czyszczenie cache i historii aplikacji, przeglądarek, systemu operacyjnego 0 VMRun – zdalna kontrola nad maszynami VMWare, restartowanie, przywracanie obrazów, z poziomu linii poleceń 0 Adb – kontrola nad emulatorami Androida z poziomu linii poleceń
  40. 40. Zarządzanie
  41. 41. Zarządzanie Przypadkami Testowymi 0 Scenariusze w BDD - Cucumber Feature: As a user I want to find places and nearby stops @web @mobile Scenario Outline: As a user I want to places matching my choice Given I navigated to the home page When I search for <place> from the home page Then the following list of matched places is returned | name | postcode | | <first-name> | <first-postcode> | | <second-name> | <second-postcode> | | <third-name> | <third-postcode> | | <fourth-name> | <fourth-postcode> |
  42. 42. Zarządzanie Przypadkami Testowymi 0 TestLink
  43. 43. Zarządzanie Przypadkami Testowymi 0 Behave for JIRA
  44. 44. Zarządzanie Konfiguracjami Testowymi 0 Narzędzia 0 Maven 0 PicoContainer 0 Jenkins 0 Technika 0 Parametryzowanie 0 Wstrzykiwanie 0 Rezultat 0 Możliwość definiowania konfiguracji testowej w pliku XML 0 Możliwość uruchamiania testów dla odpowiedniej konfiguracji z poziomu lini poleceń 0 Rozszerzalność konfiguracji 0 Definicje uruchomień dla różnych konfiguracji
  45. 45. Zarządzanie Harmonogramem Testów 0 Narzędzia 0 Jenkins 0 Technika 0 Nasłuchiwanie na wykonanie projektu nadrzędnego 0 Wykonywanie z zadaną częstotliwością 0 Rezultat 0 Okresowa kontrola jakości projektu
  46. 46. Zarządzanie Rezultatami Testów 0 Raporty
  47. 47. Zarządzanie Rezultatami Testów 0 Zrzuty ekranów @After public void closeDriver(ScenarioResult scenario) { if (scenario.isFailed()) { captureScreenshot(); } { if (!takenScreenshots.isEmpty()) { for (byte[] screenshot : takenScreenshots) { try { scenario.embed(screenshot, IMAGE_PNG); } catch (WebDriverException somePlatformsDontSupportScreenshots) System.err.println(somePlatformsDontSupportScreenshots .getMessage()); } } } }

×