Budowa RESTowego api w oparciu o HATEOAS
@braincodemobi2014
EN: https://blog.allegrogroup.com/it/braincode-mobi1-mobile-people-move-your-brains
PL: https://blog.allegrogroup.com/it/braincode-mobi1-mobilni-ruszcie-mozgi
http://info.put.poznan.pl/2013/12/16/2004
v1.1
Allegro.pl
Budowa RESTowego api w oparciu o HATEOAS
@braincodemobi2014
EN: https://blog.allegrogroup.com/it/braincode-mobi1-mobile-people-move-your-brains
PL: https://blog.allegrogroup.com/it/braincode-mobi1-mobilni-ruszcie-mozgi
http://info.put.poznan.pl/2013/12/16/2004
v1.1
Allegro.pl
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
Sesja z konferencji Microsoft Technology Summit 2013 na temat nowości, które pojawiły się w ASP.NET 4.5.1 oraz Visual Studio 2013 dla web deweloperów. Poruszane zagadnienia to m.in.: zmiany w IDE / Web Essentials, Web Forms, ASP.NET MVC 5, OWIN, SignalR, Web API 2
O koncepcie Venia Storefront w Magento opowiadał podczas 6. edycji Meetupu Piotr Makowski - Senior Frontend Developer i Certyfikowany Magento Frontend Developer z VIRTUA
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaMarcin Gajda
Narzędzia takie jak Grunt i Gulp są coraz częściej wypierane z użycia przez swojego następce, webpacka. Wynika to z prostego powodu – w kwestii pakowania assetów rozwiązuje on domyślnie wiele problemów, z którymi tamte narzędzia radzą sobie gorzej. Ta prezentacja omawia te zagadnienia i pokazuje jak skonfigurować webpacka od zera.
Poznasz wartość biznesową testów, a prelegentka udowodni, że tester jest fajną rolą i potrzebną osobą w organizacji. Potem zastanowimy się nad tym, czy automatyzacja jest zawsze najlepszym rozwiązaniem dla testera.
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
Sesja z konferencji Microsoft Technology Summit 2013 na temat nowości, które pojawiły się w ASP.NET 4.5.1 oraz Visual Studio 2013 dla web deweloperów. Poruszane zagadnienia to m.in.: zmiany w IDE / Web Essentials, Web Forms, ASP.NET MVC 5, OWIN, SignalR, Web API 2
O koncepcie Venia Storefront w Magento opowiadał podczas 6. edycji Meetupu Piotr Makowski - Senior Frontend Developer i Certyfikowany Magento Frontend Developer z VIRTUA
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaMarcin Gajda
Narzędzia takie jak Grunt i Gulp są coraz częściej wypierane z użycia przez swojego następce, webpacka. Wynika to z prostego powodu – w kwestii pakowania assetów rozwiązuje on domyślnie wiele problemów, z którymi tamte narzędzia radzą sobie gorzej. Ta prezentacja omawia te zagadnienia i pokazuje jak skonfigurować webpacka od zera.
Poznasz wartość biznesową testów, a prelegentka udowodni, że tester jest fajną rolą i potrzebną osobą w organizacji. Potem zastanowimy się nad tym, czy automatyzacja jest zawsze najlepszym rozwiązaniem dla testera.
Jak radzić sobie z projektami o wysokiej złożoności? Jak organizować kod, aby uzyskać wysoki poziom elastyczności rozwiązania? Prezentacja stanowi krótkie wprowadzenie do świata architektury oprogramowania. Omówiona zostanie przykładowa implementacja z wykorzystaniem frameworka ASP .NET Core oraz korzyści płynące z zastosowania wzorców Clean Architecture
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
W dzisiejszych czasach praca z chmurą pozwala niesamowicie zmniejszyć koszta wejścia na rynek z rozwiązaniami typu PoC i MVP oraz w późniejszych etapach rozwoju produktów skalować oprogramowanie według potrzeb. Niestety nie jest to złoty środekt i rozwiązując stare problemy, tworzy nowe. Dlatego, oprócz zapoznania się z technologią serverless, czy Infrastructure as a Code, spróbujemy przede wszystkim stworzyć bezpieczne środowisko, pozwalające na Continuous Deployment.
Dodatkowe materiały: https://www.dropbox.com/sh/tbf1l7omvopv1rg/AACxbDcdOhpzfF7u9SIWSnqUa/Filmiki%20i%20gify%20z%20prezentacji?dl=0
Testowanie aplikacji mobilnych bywa nie lada wyzwaniem. Niejednokrotnie samo urządzenie testowe jest niewystarczające nawet do przetestowania pojedynczej funkcjonalności, a wykonanie niektórych testów zależy od dostępności do programisty lub zewnętrznego oprogramowania. Istnieją jednak narzędzia ułatwiające pracę, o których marzy każdy tester. Mogą one znacząco wpłynąć na poprawę jakości w projekcie jak i zwiększenie ilości i różnorodności testów, które są przeprowadzane. Podczas prezentacji Dorota skupia się na debug screenie Hyperion, który sprawia, że zyskujemy szereg nowych możliwości, od testowania wydajności aplikacji, po podglądanie zapytań i odpowiedzi API.
Efekt potwierdzenia. Samospełniająca się przepowiednia. Iluzja grupowania. Paradoks hazardzisty… i dziesiątki innych, które próżno wymieniać. Homo Sapiens, jako gatunek, choć tak doskonale wierzący w ideały, jest doskonale nieidealny. Błędy (skrzywienia) poznawcze sprawiają, że ufamy sobie bardziej, niż powinniśmy.
Omawiając błędy poznawcze, przytrafiające się w codziennej pracy, Magda starała się przekonać nas do tego, co i tak podejrzewamy — że za błędy możemy odpowiadać tylko przed sobą.
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
Teoria gier wywodzi się z matematycznego opisu gier hazardowych i określa międzyludzkie zachowania w ujęciu graczy, nagród, obranych strategii oraz ryzyka. Dlaczego by więc nie spojrzeć na proces wytwarzania oprogramowania (w tym na pracę testerów) przez pryzmat tej teorii? Jest on w końcu naturalnie związany z zarządzaniem ryzykiem i uwzględnianiem możliwych scenariuszy.
W kilku przykładach znanych z teorii gier, Adrian pokazał, jak teoretyczne koncepcje można odnieść do testowania oprogramowania i jakie lekcje dla naszej codziennej pracy płyną z tej ciekawej gałęzi matematyki.
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
Tworzenie skalowalnych i wydajnych mikroserwisów w rozproszonym środowisku chmurowym wymaga dużej dyscypliny u programisty oraz zastosowania wielu narzędzi ułatwiających to zadanie. Im większy system, tym większej uwagi wymaga. Rozproszone środowisko dodatkowo wymusza korzystanie z zewnętrznych rozwiązań ułatwiających pracę ze stanem systemu, takich jak cache.
Zdarzyło Ci się kiedyś pogubić w tym, gdzie leży która usługa i skąd się wziął błąd w systemie? Czy nie łatwiej byłoby mieć jedno narzędzie, które utrzyma wszystkie usługi pod kontrolą i zapewni niezawodne zarządzanie stanem aplikacji bez konieczności używania zewnętrznych systemów? W czasie swojej prelekcji Krzysiek przedstawił, jak sprawdzony w bojach Azure Service Fabric zapewnia stabilną kontrolę nad systemem mikroserwisów oraz pozwala stworzyć aplikację bez użycia zewnętrznej bazy danych i systemu cachingu. Swoje doświadczenie z Azure Service Fabric nabył w codziennej pracy w dużym projekcie dla korporacji finansowej w FP.
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
Uważa się, że karty graficzne / CUDA to technologia wykorzystywana do wykonywania dużej ilości skomplikowanych obliczeń w implementacji sieci neuronowych. Jakie jeszcze praktyczne problemy można rozwiązać za jej pomocą? Czy w medycynie przydatna jest realistyczna grafika rodem z gier komputerowych? Bazując na wiedzy wyciągniętej z pracy w projekcie Cardiac, prelegenci postarają się odpowiedzieć na te pytania. Celem tego projektu jest stworzenie narzędzia wspomagającego lekarzy w podejmowaniu decyzji i stawianiu diagnozy chorób wieńcowych. Aby to osiągnąć, niezbędne jest pozyskanie geometrii naczyń wieńcowych w wysokiej rozdzielczości, co wymaga wykonania ponad 7 bilionów operacji.
Pozyskana geometria służy do symulacji przepływu krwi, w trakcie której w każdej sekundzie generowane jest 100 GB danych, a te trzeba następnie wizualizować. Wykorzystując odpowiednie algorytmy i współczesne karty graficzne, wszystkie ww. problemy są do rozwiązania.
Zastosowanie technologii Blockchain we współczesnym biznesie staje się coraz bardziej powszechne. W czasie prelekcji Lech wprowadził słuchaczy do podstawowych technologii, kryjących się za prywatnym Blockchainem i zdecentralizowanymi aplikacjami oraz wskazał różnicę pomiędzy stosowanymi obecnie dowodami autoryzującymi bloki. Pokazał również, jak w prosty sposób postawić prywatny Blockchain na platformie Azure z PoA (Proof of Authority) i przedstawił narzędzia, które mogą być zastosowane przy procesie developmentu oprogramowania opartego o Ethereum Dapps (Truffle, Genache, Metamask).
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
Jednym z ciekawszych kierunków w Deep Learning jest idea autoenkoderów, czyli sieci neuronowych aproksymujących funkcję F(X)=X. W trakcie wystąpienia dowiecie się, w jaki sposób ten jeden prosty trik pozwala komputerom malować obrazy, tworzyć muzykę, zapobiegać atakom hakerów, diagnozować choroby, odkrywać nowe leki i wstawiać twarz Nicolasa Cage’a do każdego zdjęcia.
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
RFC 679 to specyfikacja standardu autoryzacji o nazwie OAuth2. Jego rozszerzenie stanowi OpenId Connect, którego szczegółowy opis możecie znaleźć pod adresem https://openid.net/developers/specs. Aby zacząć z nim pracę, należałoby dodatkowo dobrze poznać IdentityServer – scentralizowany i modularny magazyn tożsamości umożliwiający łatwe rozszerzanie. Oczywiście można próbować przebrnąć przez stos definicji, by dowiedzieć się, w jaki sposób pracować z tymi technologiami. Jeżeli jednak nie przepadacie za czytaniem suchych dokumentów technicznych, a chcecie dowiedzieć się czegoś więcej o sposobach zabezpieczania aplikacji, koniecznie zobaczcie prelekcję Jarka.
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
Tworzenie skalowalnych i wydajnych mikroserwisów w rozproszonym środowisku chmurowym wymaga dużej dyscypliny u programisty oraz zastosowania wielu narzędzi ułatwiających to zadanie. Im większy system, tym większej uwagi wymaga. Rozproszone środowisko dodatkowo wymusza korzystanie z zewnętrznych rozwiązań ułatwiających pracę ze stanem systemu, takich jak cache.
Zdarzyło Ci się kiedyś pogubić w tym, gdzie leży która usługa i skąd się wziął błąd w systemie? Czy nie łatwiej byłoby mieć jedno narzędzie, które utrzyma wszystkie usługi pod kontrolą i zapewni niezawodne zarządzanie stanem aplikacji bez konieczności używania zewnętrznych systemów?
W czasie swojej prelekcji Krzysiek przedstawi, jak sprawdzony w bojach Azure Service Fabric zapewnia stabilną kontrolę nad systemem mikroserwisów oraz pozwala stworzyć aplikację bez użycia zewnętrznej bazy danych i systemu cachingu. Swoje doświadczenie z Azure Service Fabric nabył w codziennej pracy w dużym projekcie dla korporacji finansowej w Future Processing.
The document discusses monads in .NET, including examples using the Maybe monad to avoid null references. It provides code samples for defining a Maybe monad in C# and using it to chain operations together safely. It also discusses other monads like Task and how monads can increase the representational power of types. Finally, it lists some references for learning more about monads and functional programming concepts in .NET.
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
W dobie technologii rozwijających się niemal wykładniczo łatwo jest zapomnieć o tym, że zarówno wytwórcy, jak i użytkownicy oprogramowania są ludźmi z całym ogromem możliwości, ale jednocześnie z pewnymi ograniczeniami poznawczymi. Projektując rozwiązanie, warto zastanowić się jak sprawić, by użytkownicy chcieli go używać oraz by robili to w sposób jak najbliższy zaprojektowanemu.
Ola podczas swojej prelekcji zapoznała uczestników z kognitywnym (poznawczym) podejściem do testowania aplikacji mobilnych. W tym celu przywołała kilka teorii i zjawisk, pokazujących, jak umysł konstruuje rzeczywistość oraz tym samym uświadamiających, gdzie mogą czaić się błędy w postrzeganiu.
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
Świat technologii mobilnych od pewnego czasu przechodzi rewolucję – odchodzi się od natywnych aplikacji mobilnych. Jak zatem twórcy aplikacji mobilnych odpowiadają na potrzeby rynku? Czy osoby automatyzujące testy aplikacji mobilnych mają do dyspozycji narzędzia gotowe na technologie, takie jak React Native czy Flutter? Czy można uniknąć pisania oddzielnego kodu testów dla Androida i iOS-a?
W czasie wykładu, na przykładzie aplikacji stworzonej w oparciu o technologię React Native oraz narzędzia Detox, Adam przedstawił praktyczną implementację testów end-to-end oraz ich konfigurację z Continuous Integration.
Apache Spark jest narzędziem do przetwarzania danych na dużą skalę. Zastosowanie tego narzędzia w rozproszonym środowisku, w celu przetwarzania dużych zbiorów danych daje ogromne korzyści.
Ale co z szybką pętlą zwrotną podczas opracowywania aplikacji z użyciem Apache Spark? Testowanie aplikacji w klastrze jest niezbędne, lecz nie wydaje się być tym, do czego większość programistów przywykło podczas praktykowania TDD.
Podczas wystąpienia, Łukasz podzielił się z kilkoma wskazówkami, jak można napisać testy jednostkowe oraz integracyjne i jak Docker może być używany do testowania Sparka na lokalnej maszynie.
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
Zachodząca w ostatnich latach transformacja procesów wytwarzania oprogramowania zorientowana jest głównie w kierunku zespołów zwinnych, wykorzystujących podejście DevOps. Następstwem tych zmian jest potrzeba przemyślenia na nowo sposobów zapewniania bezpieczeństwa tworzonych aplikacji.
Krótkie sprinty nie pozostawiają już miejsca na testy manualne. O ile jednak nie znikną one całkowicie, główną osią ochrony projektu stają się testy automatyczne, które zespół projektowy musi zaimplementować i utrzymać. Teraz w kompetencjach developerów i testerów będzie leżeć kwestia znajomości zasad bezpieczeństwa, w kontekście działania ich systemu.
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
Thriving as a Tester is different to just succeeding or just getting by, or just having a decent career. To thrive means to grow vigorously. Wow. To grow vigorously!
In a nutshell, this means to grow personally and pretty quickly; and this is what the job market needs – and of course, this is what your career needs too.
Thriving as a Tester is about adopting a mindset of success and then building the habits to support your goals.
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
Paul Gerrard discusses the future of testing and automation in an environment focused on digital transformation and continuous delivery. He argues that the traditional testing models are no longer relevant and proposes a new model of testing focused on exploration, judgment, and building test models from various sources of knowledge. Under this new model, all testing is seen as exploratory in nature. Gerrard also emphasizes the importance of shifting testing activities left in the development process through early collaboration to help address issues with requirements. Automation is framed as only one part of the overall testing process and trust in automation requires proactive efforts to reduce doubts through addressing underlying issues identified earlier in development.
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
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.
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
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
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
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
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
85.
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