SlideShare uma empresa Scribd logo
1 de 91
Baixar para ler offline
ŚRODOWISKO TESTOWE POD 
REST’A 
Piotr Misiuga 
Test Developer
AGENDA 
 1. REST API 
 2. Framework Rest-Assured 
 3. Maven – wprowadzenie 
 4. Embedded Tomcat i Embedded ElasticSearch 
 5. SonarQube i pokrycie testów integracyjnych z 
JaCoCo
AGENDA 
 1. REST API 
 2. Framework Rest-Assured 
 3. Maven – wprowadzenie 
 4. Embedded Tomcat i Embedded ElasticSearch 
 5. SonarQube i pokrycie testów integracyjnych z 
JaCoCo
REST API 
 Representational State Transfer – styl 
architektoniczny dla projektowania aplikacji 
rozproszonych 
 Założenia: 
Architektura klient-serwer 
Bezstanowość (cache) 
Jednolity interfejs dostępu 
 Jednolity interfejs: 
Jednolita identyfikacja / adresacja zasobów 
Manipulacja zasobami poprzez ich reprezentacje 
Bezstanowa komunikacja (serwer nie tworzy sesji)
REST API 
 Styl architektury dla projektowania aplikacji 
sieciowych 
http://www.codeproject.com/Articles/426769/Creating-a-REST-service-using-ASP-NET-Web-API
REST API 
 Zasoby jako źródła danych 
 URI – nazwa, która identyfikuje zasób 
Np. http://myserver/tasks 
Np. http://myserver/tasks/12345 
http://www.codeproject.com/Articles/426769/Creating-a-REST-service-using-ASP-NET-Web-API
REST API 
 Każdy zasób posiada reprezentację 
 Reprezentacje dodatkowo mogą zawierać 
metadane 
http://www.codeproject.com/Articles/426769/Creating-a-REST-service-using-ASP-NET-Web-API
ARCHITEKTURA TESTÓW
REST API – JEDNOLITY INTERFEJS 
METODY 
 GET - odczytywanie danych 
 POST - wstawianie/edycja danych 
 PUT – wstawianie/edycja danych 
 DELETE - usuwanie danych
REST API – METODA GET
REST API – METODA GET
REST API – METODA GET 
 Filtrowanie zapytań
Środowisko testowe pod REST-a
REST API – METODA POST
REST API – METODY 
CRUD ≠ HTTP? 
CRUD HTTP 
Create POST 
Read GET 
Update PUT 
Delete DELETE
POST VS. PUT 
 Idempotentność – koncepcja specyfikacji HTTP. 
 Requesty, które posiadają tę cechę będą 
zakończone niezmiennym stanem po stronie 
serwera, niezależnie od tego ile razy zostaną 
wykonane. 
 GET, HEAD, PUT, DELETE są idempotentne
POST VS. PUT 
OPERACJA CREATE 
 POST: 
- zalecana metoda 
- używamy, gdy nie znamy identyfikatora 
tworzonego zasobu (generowany jest po stronie 
serwera) 
- w odpowiedzi otrzymujemy status „201 Created” 
oraz położenie(identyfikator) nowostworzonego 
zasobu
POST VS. PUT 
OPERACJA CREATE 
 PUT: 
- musimy podać identyfikator 
- używane w systemach, gdzie identyfikator 
generowany jest po stronie klienta 
-Wstawia zasób zastępując całkowicie to co istnieje 
pod danym URL, dlatego wymaga podania 
wszystkich wartości
POST VS. PUT 
OPERACJA UPDATE 
 POST: 
- w ciele możemy podać wszystkie pola lub tylko 
niektóre z nich 
- nie jest idempotentna, bezpieczna
POST VS. PUT 
OPERACJA UPDATE 
 PUT: 
- w ciele musimy podać wszystkie pola(wartości) 
- jest idempotentna
PODSUMOWANIE 
Zasób 
POST 
(create) 
GET 
(read) 
PUT 
(update) 
DELETE 
(delete) 
/customers 
201(Created), 
Zostaje stworzony 
nowy klient z 
wygenerowanym 
ID 
200(OK), 
Pobranie listy 
klientów 
404(Not Found), 
chyba, że 
edytujemy całą 
kolekcję 
404(Not Found), 
chyba, że 
usuwamy całą 
kolekcję 
/customers/{id} 404(Not Found) 
Pobranie klienta o 
ID {id} 
200(OK) lub 
204(No Content). 
Zwraca klienta 
jeśli istnieje. 
404(Not Found) 
Jeśli nie istnieje 
zwraca błąd 
200(OK) usuwa 
klienta o ID {id}. 
404(Not Found) 
Jeśli nie istnieje 
zwraca błąd.
NARZĘDZIA DO TESTOWANIA REST’A 
 curl 
 Python: 
-urllib2 
-requests 
-rester 
 Java: 
-Rest-assured + awaitility
AGENDA 
 1. REST API 
 2. Framework Rest-Assured 
 3. Maven – wprowadzenie 
 4. Embedded Tomcat i Embedded ElasticSearch 
 5. SonarQube i pokrycie testów integracyjnych z 
JaCoCo
REST-ASSURED 
 Łatwy w użyciu DSL oparty na Javie 
 Gherkin syntax (given(), when(), then()) 
 Automatyczne mapowanie(JAX-B dla XML jak i 
Jackson lub Gson dla JSON) 
 Walidacja Xpath (XMLPath) 
 Walidacja JSONpath (JSONPath) 
 Reużywalność specyfikacji
REST-ASSURED
REST-ASSURED 
 Wymagania: 
-JDK >= 1.6 
-Maven 
 Instalacja za pomocą maven’a:
KONFIGURACJA REST-ASSURED
WALIDACJA JSON’A
WALIDACJA JSON’A II
WALIDACJA JSON’A VS. JSON SCHEMA
WALIDACJA JSON VS. JSON SCHEMA
GROOVY CLOSURES W JSONPATH
GROOVY CLOSURES W JSONPATH
WALIDACJA XML
WALIDACJA XML – OBSŁUGA XPATH
WALIDACJA XML WYKORZYSTUJĄC XSD 
SCHEMA
WALIDACJA XML WYKORZYSTUJĄC XSD 
SCHEMA
WALIDACJA XML WYKORZYSTUJĄC XSD 
SCHEMA
PRZESYŁANIE PARAMETRÓW, WALIDACJA 
STATUSU I CONTENT-TYPE
PROSTE UWIERZYTELNIANIE
USTAWIANIE NAGŁÓWKÓW
TESTOWANIE NAGŁÓWKÓW
TESTOWANIE DOSTĘPU PRZY UŻYCIU 
COOKIES
WALIDACJA ZA POMOCĄ COOKIES
WIELOKROTNE WYKORZYSTANIE 
SPECYFIKACJI
AWAITILITY – BIBLIOTEKA DO TESTOWANIA 
ASYNCHRONICZNYCH SYSTEMÓW
AWAITILITY – BIBLIOTEKA DO TESTOWANIA 
ASYNCHRONICZNYCH SYSTEMÓW 
 Instalacja 
 Przykład użycia
AWAITILITY + REST-ASSURED
AGENDA 
 1. REST API 
 2. Framework Rest-Assured 
 3. Maven – wprowadzenie 
 4. Embedded Tomcat i Embedded ElasticSearch 
 5. SonarQube i pokrycie testów integracyjnych z 
JaCoCo
MAVEN – WPROWADZENIE 
 Budowanie oprogramowania przy użyciu maven’a 
ma zakończyć się osiągnięciem wybranego celu 
 Cele definiowane są przez wtyczki (plugins) 
 Cele mogą być wywoływane w różnych fazach 
cyklu życia projektu 
 Projekt mavenowy definiuje się poprzez stworzenie 
i utrzymywanie pliku pom.xml (Project Object 
Model) 
 POM zawiera elementy definiujące projekt, jego 
strukturę, sposób budowania i zależności
PRZYKŁADOWY POM.XML
DOMYŚLNY CYKL ŻYCIA PROJEKTU 
 Fazy domyślnego cyklu życia projektu: 
- validate - sprawdza poprawność projektu 
- compile - kompiluje kod źródłowy; 
- test - wykonuje testy jednostkowe; 
- package - pakuje skompilowany kod w paczki dystrybucyjne (np. Jar, 
war); 
- integration-test – deployuje paczkę w środowisku testów 
integracyjnych; 
- verify - sprawdza poprawność paczki; 
- install - umieszcza paczkę w lokalnym repozytorium aby mogła być 
używana przez inne moduły; 
- deploy - umieszcza (publikuje) paczkę w zdalnym repozytorium.
DODATKOWE CYKLE ŻYCIA 
 clean – czyści wynik działania wcześniejszych 
buildów (folder target) 
 site – generuje dokumentację projektu
PLUGINY 
 Wywołanie celów zdefiniowanych w pluginach za 
pomocą komendy mvn [plugin]:[goal] 
 mvn compile:compile
ZALEŻNOŚCI
MAVEN - DZIAŁANIE
POWIĄZANIA POMIĘDZY POM-AMI 
 1. Dziedziczenie projektów 
 Co jest dziedziczone? 
- zależności 
- pluginy 
- konfiguracje 
 2. Agregacja – projekty wielomodułowe
DEFINIOWANIE USTAWIEŃ 
 Możliwość definiowania zmiennych lub zarządzania 
zmiennymi: 
- projektu ${project.version} 
- środowiskowymi ${env.JAVA_HOME} 
- systemowymi ${java.version}
PROFILE 
 Umożliwiają zbudowanie projektu w różnych 
środowiskach np. QA, DEV, PROD
PROFILE 
 Aktywacja profilu mvn [plugin]:[goal]-P[profil]
AGENDA 
 1. REST API 
 2. Framework Rest-Assured 
 3. Maven – wprowadzenie 
 4. Embedded Tomcat i Embedded ElasticSearch 
 5. SonarQube i pokrycie testów integracyjnych z 
JaCoCo
INTEGRACYJNE TESTY NA EMBEDOWANYM 
TOMCACIE 
 Cel jaki chcemy uzyskać to: 
1. Uruchomić aplikację, którą chcemy testować na 
wtyczce Apache Maven Tomcat 7 
2. Uruchomić testy posiadające przyrostek 
IntegrationTest 
3. Po testach wyłączyć serwer
INTEGRACYJNE TESTY NA EMBEDOWANYM 
TOMCACIE 
 Wtyczka Surefire odpowiada za uruchomienie 
testów JUnit w fazie test 
 Musimy wyłączyć testy integracyjne z tej fazy
INTEGRACYJNE TESTY NA EMBEDOWANYM 
TOMCACIE 
 Wtyczka Failsafe odpowiada za uruchomienie 
testów integracyjnych JUnit w fazie integration-test 
 Dodajemy testy integracyjne i aktywujemy plugin
INTEGRACYJNE TESTY NA EMBEDOWANYM 
TOMCACIE
WIELOMODUŁOWY PROJEKT NA EMBEDDED 
TOMCAT 
 Problem: 
Celem jest przetestowanie aplikacji zanim trafi do 
repozytorium
WIELOMODUŁOWY PROJEKT NA EMBEDDED 
TOMCAT 
 Rozwiązanie: 
-ustawienie zmiennych w parent pom.xml
WIELOMODUŁOWY PROJEKT NA EMBEDDED 
TOMCAT 
 Ustawienie ścieżek do projektów z zasobami w 
child-pomach 
 Moduł z testami aplikacji moduleA 
 Moduł z testami aplikacji moduleB
ELASTICSEARCH – KTÓRTKIE WPROWADZENIE 
 Czym jest ES? 
Bazą danych dokumentów rozproszonych 
Darmowym (open-source) silnikiem wyszukiwania w 
czasie rzeczywistym 
Narzędziem do analizy 
RESTowym serwisem 
Nie przejmuje się schemą
ELASTICSEARCH – JAKO BAZA NOSQL 
MySQL ElasticSearch 
Baza danych Index 
Tabela Typ (Type) 
Wiersz Dokument (Document) 
Kolumna Pole (Field) 
Schema Mapowanie (Mapping) 
Index Wszystko jest indeksowane 
SQL DSL zapytań 
SELECT * FROM table… GET http:// 
UPDATE table SET … PUT http://
EMBEDDED ELASTICSEARCH – POTRZEBNA 
TERMINOLOGIA 
 Node – instancja elasticsearch (proces javowy), 
zwykle jeden node uruchomiony jest na jednej 
maszynie. Odpowiada za przechowanie danych, 
dodawanie i usuwanie indeksów 
 Cluster – grupa node’ów z tym samym 
cluster.name, które współdzielą dane i 
zapewniają działanie i skalolwalność. Pojedynczy 
node może tworzyć cluster 
 Mapping – proces definiowania struktury typu w 
indeksie. 
 Client– klient javy, który umożliwia wysyłanie 
requestów do node’a w clusterze.
INTEGRACYJNE TESTY W OPARCIU O 
EMBEDDED ELASTICSEARCH PROCEDURA 
 Tworzymy node’a 
 Tworzymy indeks i definiujemy mapowanie 
 Dodajemy dokumenty o danym typie 
 Uruchamiamy naszego embedded elasticsearch’a 
przed uruchomieniem testów
EMBEDDED ELASTICSEARCH – TWORZENIE 
NODE’A
PRZYKŁADOWY MAPPING
EMBEDDED ELASTICSEARCH – DODAWANIE 
MAPPINGU, TWORZENIE INDEXU
EMBEDDED ELASTICSEARCH – DODAWANIE 
DOKUMENTÓW
INTEGRACYJNE TESTY W OPARCIU O 
EMBEDDED ELASTICSEARCH 
 Piszemy prosty mavenowy plugin dla embedded 
elasticsearch’a.
AGENDA 
 1. REST API 
 2. Framework Rest-Assured 
 3. Maven – wprowadzenie 
 4. Embedded Tomcat i Embedded ElasticSearch 
 5. SonarQube i pokrycie testów integracyjnych z 
JaCoCo
SONARQUBE – NARZĘDZIE DO ZARZĄDZANIA 
JAKOŚCIĄ KODU 
 Sonar analizuje kod w siedmiu wymiarach: 
duplikacja kodu 
standardy kodowania (konwencje) 
testy jednostkowe 
kompleksowość 
potencjalne błędy 
komentarze 
architektura
SONARQUBE - DASHBOARD
POKRYCIE KODU 
 Co to jest pokrycie kodu? 
Miara wykorzystywana przy testowaniu 
oprogramowania 
Opisuje w jakim stopniu program został sprawdzony 
przez testy 
Zazwyczaj wykorzystywane przy określaniu 
‘skuteczności’ testów jednostkowych (integracyjnych) 
Dla większości języków istnieją zestawy narzędzia do 
testowania / pomiaru pokrycia 
Pokrycie możemy mierzyć według różnych kryteriów
JACOCO – NARZĘDZIE UMOŻLIWIAJĄCE POMIAR 
POKRYCIA KODU W ŚRODOWISKACH JVM 
 JaCoCo 
Analizuje pokrycie instrukcji (C0), gałęzi (C1), linii, 
metod, typów, powtarzalności kodu 
Wspiera różne języki JVM 
Zintegrowane z wieloma popularnymi narzędziami w 
tym SonarQube, Maven 
Przeprowadza instrumentacje bajt kodu „w locie” (tym 
wyróżnia się spośród konkurencji) 
http://www.eclemma.org/jacoco/
ANALIZA POKRYCIA KODU PRZEZ TESTY 
INTEGRACYJNE – SONAR I JACOCO 
 1. Konfiguracja agenta JaCoCo i przypisanie go do 
JVM, na której uruchamiane są testy integracyjne. 
Konfiguracja możliwa jest poprzez linię komend lub 
poprzez JaCoCo Maven plugin 
 2. Uruchomienie integracyjnych testów. Na koniec 
agent JaCoCo generuje raport pokrycia kodu w 
miejscu, które ustawiliśmy w kroku 1. 
 3. Konfiguracja SonarQube, by używał 
wygenerowanego raportu 
 4. Po uruchomieniu analizy Sonar’a generuje się 
pokrycie kodu przez testy integracyjne
KONFIGURACJA AGENTA JACOCO – JACOCO 
MAVEN PLUGIN 
 Dodajemy jacoco-maven-plugin do naszego 
projektu 
 Konfigurujemy plugin
Środowisko testowe pod REST-a
KONFIGURACJA FAILSAFE-PLUGIN 
 Konfigurujemy failsafe plugin, gdyż to on jest 
odpowiedzialny za uruchomienie testów 
integracyjnych
KONFIGURACJA SONARQUBE 
 W pliku sonar-project.properties 
sonar.jacoco.itReportPath=target/jacoco-it.exec 
 W sonar-maven-plugin 
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
<sonar.jacoco.itReportPath>target/jacoco-it.exec</sonar.jacoco.itReportPath>
ANALIZA POKRYCIA KODU PRZEZ TESTY 
INTEGRACYJNE – SONAR I JACOCO 
 Problem – Embedded Tomcat 
Niestety wtyczka tomcat7-maven-plugin nie potrafi 
„skonsumować” / skorzystać z argLine’a, z którego 
korzysta failsafe plugin (Jetty potrafi) 
 Rozwiązanie: 
Przekazanie argumentów VM do konfiguracji build’a
ANALIZA POKRYCIA KODU PRZEZ TESTY 
INTEGRACYJNE – SONAR I JACOCO
ANALIZA POKRYCIA KODU PRZEZ TESTY 
INTEGRACYJNE – SONAR I JACOCO 
 Wynik po uruchomieniu testów integracyjnych, a 
następnie analizy SonarQube’a
DZIĘKUJĘ ZA UWAGĘ!

Mais conteúdo relacionado

Semelhante a Środowisko testowe pod REST-a

Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Automatyczne testy end-to-end aplikacji JavaScript.
Automatyczne testy end-to-end aplikacji JavaScript.Automatyczne testy end-to-end aplikacji JavaScript.
Automatyczne testy end-to-end aplikacji JavaScript.Future Processing
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptJacek Okrojek
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationMaciej Zbrzezny
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITRedge Technologies
 
Devbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracyDevbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracyMarek Bleschke
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPROIDEA
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVCQuick-Solution
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaMarcin Gajda
 

Semelhante a Środowisko testowe pod REST-a (20)

JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Automatyczne testy end-to-end aplikacji JavaScript.
Automatyczne testy end-to-end aplikacji JavaScript.Automatyczne testy end-to-end aplikacji JavaScript.
Automatyczne testy end-to-end aplikacji JavaScript.
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows Application
 
university day 1
university day 1university day 1
university day 1
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
 
Devbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracyDevbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracy
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
 
JavaEE + OSGi
JavaEE + OSGiJavaEE + OSGi
JavaEE + OSGi
 

Mais de Future Processing

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfFuture Processing
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfFuture Processing
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfFuture Processing
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shakeFuture Processing
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myśleniaFuture Processing
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 

Mais de Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

Środowisko testowe pod REST-a

  • 1. ŚRODOWISKO TESTOWE POD REST’A Piotr Misiuga Test Developer
  • 2. AGENDA  1. REST API  2. Framework Rest-Assured  3. Maven – wprowadzenie  4. Embedded Tomcat i Embedded ElasticSearch  5. SonarQube i pokrycie testów integracyjnych z JaCoCo
  • 3. AGENDA  1. REST API  2. Framework Rest-Assured  3. Maven – wprowadzenie  4. Embedded Tomcat i Embedded ElasticSearch  5. SonarQube i pokrycie testów integracyjnych z JaCoCo
  • 4. REST API  Representational State Transfer – styl architektoniczny dla projektowania aplikacji rozproszonych  Założenia: Architektura klient-serwer Bezstanowość (cache) Jednolity interfejs dostępu  Jednolity interfejs: Jednolita identyfikacja / adresacja zasobów Manipulacja zasobami poprzez ich reprezentacje Bezstanowa komunikacja (serwer nie tworzy sesji)
  • 5. REST API  Styl architektury dla projektowania aplikacji sieciowych http://www.codeproject.com/Articles/426769/Creating-a-REST-service-using-ASP-NET-Web-API
  • 6. REST API  Zasoby jako źródła danych  URI – nazwa, która identyfikuje zasób Np. http://myserver/tasks Np. http://myserver/tasks/12345 http://www.codeproject.com/Articles/426769/Creating-a-REST-service-using-ASP-NET-Web-API
  • 7. REST API  Każdy zasób posiada reprezentację  Reprezentacje dodatkowo mogą zawierać metadane http://www.codeproject.com/Articles/426769/Creating-a-REST-service-using-ASP-NET-Web-API
  • 9. REST API – JEDNOLITY INTERFEJS METODY  GET - odczytywanie danych  POST - wstawianie/edycja danych  PUT – wstawianie/edycja danych  DELETE - usuwanie danych
  • 10. REST API – METODA GET
  • 11. REST API – METODA GET
  • 12. REST API – METODA GET  Filtrowanie zapytań
  • 14. REST API – METODA POST
  • 15. REST API – METODY CRUD ≠ HTTP? CRUD HTTP Create POST Read GET Update PUT Delete DELETE
  • 16. POST VS. PUT  Idempotentność – koncepcja specyfikacji HTTP.  Requesty, które posiadają tę cechę będą zakończone niezmiennym stanem po stronie serwera, niezależnie od tego ile razy zostaną wykonane.  GET, HEAD, PUT, DELETE są idempotentne
  • 17. POST VS. PUT OPERACJA CREATE  POST: - zalecana metoda - używamy, gdy nie znamy identyfikatora tworzonego zasobu (generowany jest po stronie serwera) - w odpowiedzi otrzymujemy status „201 Created” oraz położenie(identyfikator) nowostworzonego zasobu
  • 18. POST VS. PUT OPERACJA CREATE  PUT: - musimy podać identyfikator - używane w systemach, gdzie identyfikator generowany jest po stronie klienta -Wstawia zasób zastępując całkowicie to co istnieje pod danym URL, dlatego wymaga podania wszystkich wartości
  • 19. POST VS. PUT OPERACJA UPDATE  POST: - w ciele możemy podać wszystkie pola lub tylko niektóre z nich - nie jest idempotentna, bezpieczna
  • 20. POST VS. PUT OPERACJA UPDATE  PUT: - w ciele musimy podać wszystkie pola(wartości) - jest idempotentna
  • 21. PODSUMOWANIE Zasób POST (create) GET (read) PUT (update) DELETE (delete) /customers 201(Created), Zostaje stworzony nowy klient z wygenerowanym ID 200(OK), Pobranie listy klientów 404(Not Found), chyba, że edytujemy całą kolekcję 404(Not Found), chyba, że usuwamy całą kolekcję /customers/{id} 404(Not Found) Pobranie klienta o ID {id} 200(OK) lub 204(No Content). Zwraca klienta jeśli istnieje. 404(Not Found) Jeśli nie istnieje zwraca błąd 200(OK) usuwa klienta o ID {id}. 404(Not Found) Jeśli nie istnieje zwraca błąd.
  • 22. NARZĘDZIA DO TESTOWANIA REST’A  curl  Python: -urllib2 -requests -rester  Java: -Rest-assured + awaitility
  • 23. AGENDA  1. REST API  2. Framework Rest-Assured  3. Maven – wprowadzenie  4. Embedded Tomcat i Embedded ElasticSearch  5. SonarQube i pokrycie testów integracyjnych z JaCoCo
  • 24. REST-ASSURED  Łatwy w użyciu DSL oparty na Javie  Gherkin syntax (given(), when(), then())  Automatyczne mapowanie(JAX-B dla XML jak i Jackson lub Gson dla JSON)  Walidacja Xpath (XMLPath)  Walidacja JSONpath (JSONPath)  Reużywalność specyfikacji
  • 26. REST-ASSURED  Wymagania: -JDK >= 1.6 -Maven  Instalacja za pomocą maven’a:
  • 30. WALIDACJA JSON’A VS. JSON SCHEMA
  • 31. WALIDACJA JSON VS. JSON SCHEMA
  • 32. GROOVY CLOSURES W JSONPATH
  • 33. GROOVY CLOSURES W JSONPATH
  • 35. WALIDACJA XML – OBSŁUGA XPATH
  • 39. PRZESYŁANIE PARAMETRÓW, WALIDACJA STATUSU I CONTENT-TYPE
  • 43. TESTOWANIE DOSTĘPU PRZY UŻYCIU COOKIES
  • 46. AWAITILITY – BIBLIOTEKA DO TESTOWANIA ASYNCHRONICZNYCH SYSTEMÓW
  • 47. AWAITILITY – BIBLIOTEKA DO TESTOWANIA ASYNCHRONICZNYCH SYSTEMÓW  Instalacja  Przykład użycia
  • 49. AGENDA  1. REST API  2. Framework Rest-Assured  3. Maven – wprowadzenie  4. Embedded Tomcat i Embedded ElasticSearch  5. SonarQube i pokrycie testów integracyjnych z JaCoCo
  • 50. MAVEN – WPROWADZENIE  Budowanie oprogramowania przy użyciu maven’a ma zakończyć się osiągnięciem wybranego celu  Cele definiowane są przez wtyczki (plugins)  Cele mogą być wywoływane w różnych fazach cyklu życia projektu  Projekt mavenowy definiuje się poprzez stworzenie i utrzymywanie pliku pom.xml (Project Object Model)  POM zawiera elementy definiujące projekt, jego strukturę, sposób budowania i zależności
  • 52. DOMYŚLNY CYKL ŻYCIA PROJEKTU  Fazy domyślnego cyklu życia projektu: - validate - sprawdza poprawność projektu - compile - kompiluje kod źródłowy; - test - wykonuje testy jednostkowe; - package - pakuje skompilowany kod w paczki dystrybucyjne (np. Jar, war); - integration-test – deployuje paczkę w środowisku testów integracyjnych; - verify - sprawdza poprawność paczki; - install - umieszcza paczkę w lokalnym repozytorium aby mogła być używana przez inne moduły; - deploy - umieszcza (publikuje) paczkę w zdalnym repozytorium.
  • 53. DODATKOWE CYKLE ŻYCIA  clean – czyści wynik działania wcześniejszych buildów (folder target)  site – generuje dokumentację projektu
  • 54. PLUGINY  Wywołanie celów zdefiniowanych w pluginach za pomocą komendy mvn [plugin]:[goal]  mvn compile:compile
  • 57. POWIĄZANIA POMIĘDZY POM-AMI  1. Dziedziczenie projektów  Co jest dziedziczone? - zależności - pluginy - konfiguracje  2. Agregacja – projekty wielomodułowe
  • 58. DEFINIOWANIE USTAWIEŃ  Możliwość definiowania zmiennych lub zarządzania zmiennymi: - projektu ${project.version} - środowiskowymi ${env.JAVA_HOME} - systemowymi ${java.version}
  • 59. PROFILE  Umożliwiają zbudowanie projektu w różnych środowiskach np. QA, DEV, PROD
  • 60. PROFILE  Aktywacja profilu mvn [plugin]:[goal]-P[profil]
  • 61. AGENDA  1. REST API  2. Framework Rest-Assured  3. Maven – wprowadzenie  4. Embedded Tomcat i Embedded ElasticSearch  5. SonarQube i pokrycie testów integracyjnych z JaCoCo
  • 62. INTEGRACYJNE TESTY NA EMBEDOWANYM TOMCACIE  Cel jaki chcemy uzyskać to: 1. Uruchomić aplikację, którą chcemy testować na wtyczce Apache Maven Tomcat 7 2. Uruchomić testy posiadające przyrostek IntegrationTest 3. Po testach wyłączyć serwer
  • 63. INTEGRACYJNE TESTY NA EMBEDOWANYM TOMCACIE  Wtyczka Surefire odpowiada za uruchomienie testów JUnit w fazie test  Musimy wyłączyć testy integracyjne z tej fazy
  • 64. INTEGRACYJNE TESTY NA EMBEDOWANYM TOMCACIE  Wtyczka Failsafe odpowiada za uruchomienie testów integracyjnych JUnit w fazie integration-test  Dodajemy testy integracyjne i aktywujemy plugin
  • 65. INTEGRACYJNE TESTY NA EMBEDOWANYM TOMCACIE
  • 66. WIELOMODUŁOWY PROJEKT NA EMBEDDED TOMCAT  Problem: Celem jest przetestowanie aplikacji zanim trafi do repozytorium
  • 67. WIELOMODUŁOWY PROJEKT NA EMBEDDED TOMCAT  Rozwiązanie: -ustawienie zmiennych w parent pom.xml
  • 68. WIELOMODUŁOWY PROJEKT NA EMBEDDED TOMCAT  Ustawienie ścieżek do projektów z zasobami w child-pomach  Moduł z testami aplikacji moduleA  Moduł z testami aplikacji moduleB
  • 69. ELASTICSEARCH – KTÓRTKIE WPROWADZENIE  Czym jest ES? Bazą danych dokumentów rozproszonych Darmowym (open-source) silnikiem wyszukiwania w czasie rzeczywistym Narzędziem do analizy RESTowym serwisem Nie przejmuje się schemą
  • 70. ELASTICSEARCH – JAKO BAZA NOSQL MySQL ElasticSearch Baza danych Index Tabela Typ (Type) Wiersz Dokument (Document) Kolumna Pole (Field) Schema Mapowanie (Mapping) Index Wszystko jest indeksowane SQL DSL zapytań SELECT * FROM table… GET http:// UPDATE table SET … PUT http://
  • 71. EMBEDDED ELASTICSEARCH – POTRZEBNA TERMINOLOGIA  Node – instancja elasticsearch (proces javowy), zwykle jeden node uruchomiony jest na jednej maszynie. Odpowiada za przechowanie danych, dodawanie i usuwanie indeksów  Cluster – grupa node’ów z tym samym cluster.name, które współdzielą dane i zapewniają działanie i skalolwalność. Pojedynczy node może tworzyć cluster  Mapping – proces definiowania struktury typu w indeksie.  Client– klient javy, który umożliwia wysyłanie requestów do node’a w clusterze.
  • 72. INTEGRACYJNE TESTY W OPARCIU O EMBEDDED ELASTICSEARCH PROCEDURA  Tworzymy node’a  Tworzymy indeks i definiujemy mapowanie  Dodajemy dokumenty o danym typie  Uruchamiamy naszego embedded elasticsearch’a przed uruchomieniem testów
  • 73. EMBEDDED ELASTICSEARCH – TWORZENIE NODE’A
  • 75. EMBEDDED ELASTICSEARCH – DODAWANIE MAPPINGU, TWORZENIE INDEXU
  • 76. EMBEDDED ELASTICSEARCH – DODAWANIE DOKUMENTÓW
  • 77. INTEGRACYJNE TESTY W OPARCIU O EMBEDDED ELASTICSEARCH  Piszemy prosty mavenowy plugin dla embedded elasticsearch’a.
  • 78. AGENDA  1. REST API  2. Framework Rest-Assured  3. Maven – wprowadzenie  4. Embedded Tomcat i Embedded ElasticSearch  5. SonarQube i pokrycie testów integracyjnych z JaCoCo
  • 79. SONARQUBE – NARZĘDZIE DO ZARZĄDZANIA JAKOŚCIĄ KODU  Sonar analizuje kod w siedmiu wymiarach: duplikacja kodu standardy kodowania (konwencje) testy jednostkowe kompleksowość potencjalne błędy komentarze architektura
  • 81. POKRYCIE KODU  Co to jest pokrycie kodu? Miara wykorzystywana przy testowaniu oprogramowania Opisuje w jakim stopniu program został sprawdzony przez testy Zazwyczaj wykorzystywane przy określaniu ‘skuteczności’ testów jednostkowych (integracyjnych) Dla większości języków istnieją zestawy narzędzia do testowania / pomiaru pokrycia Pokrycie możemy mierzyć według różnych kryteriów
  • 82. JACOCO – NARZĘDZIE UMOŻLIWIAJĄCE POMIAR POKRYCIA KODU W ŚRODOWISKACH JVM  JaCoCo Analizuje pokrycie instrukcji (C0), gałęzi (C1), linii, metod, typów, powtarzalności kodu Wspiera różne języki JVM Zintegrowane z wieloma popularnymi narzędziami w tym SonarQube, Maven Przeprowadza instrumentacje bajt kodu „w locie” (tym wyróżnia się spośród konkurencji) http://www.eclemma.org/jacoco/
  • 83. ANALIZA POKRYCIA KODU PRZEZ TESTY INTEGRACYJNE – SONAR I JACOCO  1. Konfiguracja agenta JaCoCo i przypisanie go do JVM, na której uruchamiane są testy integracyjne. Konfiguracja możliwa jest poprzez linię komend lub poprzez JaCoCo Maven plugin  2. Uruchomienie integracyjnych testów. Na koniec agent JaCoCo generuje raport pokrycia kodu w miejscu, które ustawiliśmy w kroku 1.  3. Konfiguracja SonarQube, by używał wygenerowanego raportu  4. Po uruchomieniu analizy Sonar’a generuje się pokrycie kodu przez testy integracyjne
  • 84. KONFIGURACJA AGENTA JACOCO – JACOCO MAVEN PLUGIN  Dodajemy jacoco-maven-plugin do naszego projektu  Konfigurujemy plugin
  • 86. KONFIGURACJA FAILSAFE-PLUGIN  Konfigurujemy failsafe plugin, gdyż to on jest odpowiedzialny za uruchomienie testów integracyjnych
  • 87. KONFIGURACJA SONARQUBE  W pliku sonar-project.properties sonar.jacoco.itReportPath=target/jacoco-it.exec  W sonar-maven-plugin <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.jacoco.itReportPath>target/jacoco-it.exec</sonar.jacoco.itReportPath>
  • 88. ANALIZA POKRYCIA KODU PRZEZ TESTY INTEGRACYJNE – SONAR I JACOCO  Problem – Embedded Tomcat Niestety wtyczka tomcat7-maven-plugin nie potrafi „skonsumować” / skorzystać z argLine’a, z którego korzysta failsafe plugin (Jetty potrafi)  Rozwiązanie: Przekazanie argumentów VM do konfiguracji build’a
  • 89. ANALIZA POKRYCIA KODU PRZEZ TESTY INTEGRACYJNE – SONAR I JACOCO
  • 90. ANALIZA POKRYCIA KODU PRZEZ TESTY INTEGRACYJNE – SONAR I JACOCO  Wynik po uruchomieniu testów integracyjnych, a następnie analizy SonarQube’a