SlideShare a Scribd company logo
1 of 34
Unit testy w aplikacjach webowych opartych na AngularJS
Unit testy w aplikacjach webowych
opartych na AngularJS
Unit testy w aplikacjach webowych opartych na AngularJS
1 Wstęp
2 Rodzaje testów i ich granice
3 AngularJS
4 Dobre praktyki kodowania
5 Testy jednostkowe - powtórka
6 Warsztaty – aplikacja
7 Warsztaty – aplikacja
8 Warsztaty – testy
Agenda
9 Q&A
1
Unit testy w aplikacjach webowych opartych na AngularJS
12.04.2014
Kariera IT
Sopot, Polska
Project Manager @ Neoteric
Mateusz Paprocki
Współzałożyciel @ Architekci Podróży
Unit testy w aplikacjach webowych opartych na AngularJS
• Wdrażamy systemy, które się
opłacają
• Przewagą konkurencyjną jest
wysoka jakość
• Jakość wynika z rozsądnego
stosowania najlepszych praktyk
oraz inwestowaniu w rozwój ludzi
• Nie zatrudniamy code monkeys
3
O firmie
Unit testy w aplikacjach webowych opartych na AngularJS
Techologie
co robimy
4
Unit testy w aplikacjach webowych opartych na AngularJS
O firmie
jak działamy
5
Wylęgarnia projektów
Kreatywność
Jak
działamy
DVCS (Git)
Zaplecze finansowe
Odpowiedzialność i cel
CI (Jenkins)
Frontend (AngularJS)
Backend (Java)
Automatyzacja
Unit testy w aplikacjach webowych opartych na AngularJS
Wstęp do testowania
6
Po co testować?
• Dowód, a nie przekonanie, że kod działa prawidłowo
• Dokumentacja działania – lepsza niż komentarze
• Pewność przy zmianach
• Konieczność pisania lepszego kodu – bardziej świadomy development
• Początek automatyzacji
• Lepsza współpraca w zespole
• Standard w lepszych firmach
Unit testy w aplikacjach webowych opartych na AngularJS
Wstęp do testowania
7
Testowanie w JS
• Do niedawna trudne, pracochłonne i upierdliwe
• Dzisiaj łatwe, przyjazne i szybkie dzięki świetnym technologiom
• Uruchamianie testów przy zapisie pliku ze źródłem
• Uruchamianie testów na serwerze CI (Jenkins)
• Testy jednostkowe oraz testy integracyjne (nie testujemy backendu!)
Unit testy w aplikacjach webowych opartych na AngularJS
Wstęp do testowania
8
Testy jednostkowe
„metoda testowania tworzonego oprogramowania poprzez wykonywanie
testów weryfikujących poprawność działania pojedynczych elementów
(jednostek) programu” (wikipedia).
• Różne ścieżki (przebiegi)
• Warunki brzegowe
• Wywołania funkcji (tak/nie)
Unit testy w aplikacjach webowych opartych na AngularJS
Wstęp do testowania
9
Testy jednostkowe
• Świetnie nadają się do automatyzacji
• Wymagają małego nakładu pracy
• Mogą być napisane przed napisaniem testowanej funkcji (TDD)
• Dzięki Jasmine, składania jest naturalna i intuicyjna, zbliżona do
naturalnego języka („oczekiwania”)
Unit testy w aplikacjach webowych opartych na AngularJS
Wstęp do testowania
10
Testy integracyjne
Polegają na testowaniu poprawnej współpracy modułów oraz systemów.
Skupiamy się nie na pojedynczych funkcjach, a na większych fragmentach
aplikacji.
• Współpraca modułów
• User stories
• Przykład pojedynczego testu: po poprawnym zalogowaniu, aplikacja
powinna wyświetlić listę zadań do zrobienia (user story) posortowaną
malejąco wg deadline’u.
Unit testy w aplikacjach webowych opartych na AngularJS
Wstęp do testowania
11
Testy integracyjne
• „Drogie” do wytworzenia, jednak dalej warte pisania
• Oparte na interfejsie użytkownika
• Protractor to the rescue!
Unit testy w aplikacjach webowych opartych na AngularJS
Wstęp do testowania
12
Testy akceptacyjne
• Black box testing – nie wiemy nic o implementacji aplikacji, testujemy tylko i
wyłącznie za pomocą interfejsów
• Sprawdzamy, czy aplikacja poprawnie wykonuje założone zadanie (logika
biznesowa, a nie to, czy poprawnie działa)
• Drogie w napisaniu i utrzymaniu – dedykowane środowisko testowe
• Często wykonywane manulanie
Unit testy w aplikacjach webowych opartych na AngularJS
Zakres i granice testów
13
Testy jednostkowe
Testy integracyjne
Stopień skomplikowania testów
Testy
akceptacyjne
Koszty
Unit testy w aplikacjach webowych opartych na AngularJS
Moduł 1
Moduł 2
Moduł 3
Moduł 4
Moduł 5
Zakres i granice testów
14
Test integracyjny 1
lub więcej modułów
Unit test pojedynczej funkcji
w ramach modułu
showLoader()
Unit testy w aplikacjach webowych opartych na AngularJS
Zakres i granice testów
15
Testy akceptacyjne i manualne
App
Black box
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
16
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
17
Czym właściwie jest?
• Frameworkiem, dzięki któremu można bardzo szybko pisać zaawansowane
aplikacje
• Gotowy do tworzenia dużych, komercyjnych aplikacji
• Rozwijany przez Google
• Pozwala uczyć przeglądarki „nowych sztuczek” (nowe tagi HTML), czyniąc
kod bardziej deklaratywnym
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
18
Czym jest dla mnie?
• Nigdy nie lubiłem JS – dzięki Angularowi to się zmieniło
• Pozwala przenieść dobre praktyki z innych języków programowania
• Nieco trudny do nauki na początku, bardzo wydajny później
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
19
Superheroic JavaScript MVW Framework
• Czy AngularJS implementuje MVC?
„I hereby declare AngularJS to be MVWframework - Model-View-Whatever.
Where Whatever stands for "whatever works for you".”
Igor Minar
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
20
Kluczowe korzyści
• Data binding
• Podział na warstwy
• Dependency injection
• Modułowość
• Wsparcie dla Q (promises) – „zabija” callbacki
https://github.com/kriskowal/q
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
21
Kluczowe korzyści - testowanie
• Niespotykana prostota pisania i uruchamiania testów
• Mocks ($httpBackend, $q, Jasmine spyOn)
• PhantomJS – testowanie bez przeglądarki
• Wsparcie dla testów E2E - Protractor
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
22
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
23
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
24
Unit testy w aplikacjach webowych opartych na AngularJS
AngularJS
25
Unit testy w aplikacjach webowych opartych na AngularJS
Dobre praktyki
26
Jak pisać testowalny kod?
• Używać DI (Dependency Injection)
• AngularJS jest o to oparty
• Nie robić instancji obiektów w funkcji
• Nie pisać długich funkcji, które robią dużo rzeczy jednocześnie
• Nie produkować długich if’ów i switchy
• Pisać krótkie funkcje
• Używać modułów, services
• Protractor to the rescue!
Unit testy w aplikacjach webowych opartych na AngularJS
Testy jednostkowe
27
Powtórka
• Będziemy testować pojedyncze funkcje różnych modułów
• Nie chcemy testować działania rzeczy, które dzieją się poza naszą funkcją
• Mocks!
• Chcemy przetestować różne scenariusze wywołania funkcji
• Zakończone sukcesem
• Zakończone porażką
Unit testy w aplikacjach webowych opartych na AngularJS
Nie gryzę :)
Q&A
Unit testy w aplikacjach webowych opartych na AngularJS
WARSZTATY - WYMAGANIA
29
• Znajomośd JS (to jest konieczne, z resztą sobie poradzimy)
• GIT
• Node (npm)
• Bower
• Grunt
• Linux
• URL: http://www.github.com/neoteric-eu/karierait-sopot
Unit testy w aplikacjach webowych opartych na AngularJS
WARSZTATY - APLIKACJA
30
• Prosta lista TODO
• Local Storage
• Nie przejmujemy się modułem $System
• Uznajemy, że piszemy moduł Todo
Unit testy w aplikacjach webowych opartych na AngularJS
Nie gryzę
Q&A
Unit testy w aplikacjach webowych opartych na AngularJS
Kodujcie i testujcie :)
Dziękuję za uwagę
Unit testy w aplikacjach webowych opartych na AngularJS
Odwiedź nas
Miszewskiego 16/5
80-239 Gdańsk
e-Mail
mpaprocki@neoteric.eu
rekrutacja@neoteric.eu
Zadzwoń
+48 602 557 952
KONTAKT
WEB
www.neoteric.eu
facebook.com/neoteric-eu

More Related Content

What's hot

Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testowWiktor Żołnowski
 
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
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Quick-Solution
 

What's hot (6)

Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
Ewa Bielska: Testowanie aplikacji mobilnych
Ewa Bielska: Testowanie aplikacji mobilnychEwa Bielska: Testowanie aplikacji mobilnych
Ewa Bielska: Testowanie aplikacji mobilnych
 
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
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
Tdd AngularJs application
Tdd AngularJs applicationTdd AngularJs application
Tdd AngularJs application
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?
 

Viewers also liked

Starter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO A
Starter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO AStarter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO A
Starter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO AProfesora de Inglés
 
بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...
بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...
بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...أمنية وجدى
 

Viewers also liked (9)

Test units 1,2
Test units 1,2Test units 1,2
Test units 1,2
 
Starter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO A
Starter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO AStarter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO A
Starter Unit and Unit 1 - Interface 4 (Macmillan) - 4th ESO A
 
Test. units 1 & 2
Test. units 1 & 2Test. units 1 & 2
Test. units 1 & 2
 
Test book what's up 1b
Test book what's up 1bTest book what's up 1b
Test book what's up 1b
 
Booklet english p2 t1
Booklet english p2 t1Booklet english p2 t1
Booklet english p2 t1
 
Macmillan 2 booklet
Macmillan 2 booklet   Macmillan 2 booklet
Macmillan 2 booklet
 
Unit 7 exam
Unit 7 examUnit 7 exam
Unit 7 exam
 
Units 1,2 test
Units 1,2 testUnits 1,2 test
Units 1,2 test
 
بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...
بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...
بوكلت تدريبات اللغة العربية للصف الأول الابتدائى الجديد للترم الأول 2016 أمني...
 

Similar to Kariera it Sopot

HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymDariusz Jagieło
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końceThe Software House
 
Techniczna organizacja zespołu
Techniczna organizacja zespołuTechniczna organizacja zespołu
Techniczna organizacja zespołuintive
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8DreamLab
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...Future Processing
 
Automated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał SzybalskiAutomated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał SzybalskiŁódQA
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6The Software House
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaBartłomiej Cymanowski
 
Ulepszanie aplikacji webowej z AngularJS
Ulepszanie aplikacji webowej z AngularJSUlepszanie aplikacji webowej z AngularJS
Ulepszanie aplikacji webowej z AngularJSTomasz Bak
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiRadoslaw Smilgin
 
MS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMarcin Samsonowski
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxKatarzyna Javaheri-Szpak
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Developmentbartlomiej.szafko
 

Similar to Kariera it Sopot (20)

HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końce
 
Techniczna organizacja zespołu
Techniczna organizacja zespołuTechniczna organizacja zespołu
Techniczna organizacja zespołu
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
 
Automated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał SzybalskiAutomated Tests in Agile based on Serenity BDD - Michał Szybalski
Automated Tests in Agile based on Serenity BDD - Michał Szybalski
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
Ulepszanie aplikacji webowej z AngularJS
Ulepszanie aplikacji webowej z AngularJSUlepszanie aplikacji webowej z AngularJS
Ulepszanie aplikacji webowej z AngularJS
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacji
 
university day 1
university day 1university day 1
university day 1
 
Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
 
MS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowych
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptx
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
 

Kariera it Sopot

  • 1. Unit testy w aplikacjach webowych opartych na AngularJS Unit testy w aplikacjach webowych opartych na AngularJS
  • 2. Unit testy w aplikacjach webowych opartych na AngularJS 1 Wstęp 2 Rodzaje testów i ich granice 3 AngularJS 4 Dobre praktyki kodowania 5 Testy jednostkowe - powtórka 6 Warsztaty – aplikacja 7 Warsztaty – aplikacja 8 Warsztaty – testy Agenda 9 Q&A 1
  • 3. Unit testy w aplikacjach webowych opartych na AngularJS 12.04.2014 Kariera IT Sopot, Polska Project Manager @ Neoteric Mateusz Paprocki Współzałożyciel @ Architekci Podróży
  • 4. Unit testy w aplikacjach webowych opartych na AngularJS • Wdrażamy systemy, które się opłacają • Przewagą konkurencyjną jest wysoka jakość • Jakość wynika z rozsądnego stosowania najlepszych praktyk oraz inwestowaniu w rozwój ludzi • Nie zatrudniamy code monkeys 3 O firmie
  • 5. Unit testy w aplikacjach webowych opartych na AngularJS Techologie co robimy 4
  • 6. Unit testy w aplikacjach webowych opartych na AngularJS O firmie jak działamy 5 Wylęgarnia projektów Kreatywność Jak działamy DVCS (Git) Zaplecze finansowe Odpowiedzialność i cel CI (Jenkins) Frontend (AngularJS) Backend (Java) Automatyzacja
  • 7. Unit testy w aplikacjach webowych opartych na AngularJS Wstęp do testowania 6 Po co testować? • Dowód, a nie przekonanie, że kod działa prawidłowo • Dokumentacja działania – lepsza niż komentarze • Pewność przy zmianach • Konieczność pisania lepszego kodu – bardziej świadomy development • Początek automatyzacji • Lepsza współpraca w zespole • Standard w lepszych firmach
  • 8. Unit testy w aplikacjach webowych opartych na AngularJS Wstęp do testowania 7 Testowanie w JS • Do niedawna trudne, pracochłonne i upierdliwe • Dzisiaj łatwe, przyjazne i szybkie dzięki świetnym technologiom • Uruchamianie testów przy zapisie pliku ze źródłem • Uruchamianie testów na serwerze CI (Jenkins) • Testy jednostkowe oraz testy integracyjne (nie testujemy backendu!)
  • 9. Unit testy w aplikacjach webowych opartych na AngularJS Wstęp do testowania 8 Testy jednostkowe „metoda testowania tworzonego oprogramowania poprzez wykonywanie testów weryfikujących poprawność działania pojedynczych elementów (jednostek) programu” (wikipedia). • Różne ścieżki (przebiegi) • Warunki brzegowe • Wywołania funkcji (tak/nie)
  • 10. Unit testy w aplikacjach webowych opartych na AngularJS Wstęp do testowania 9 Testy jednostkowe • Świetnie nadają się do automatyzacji • Wymagają małego nakładu pracy • Mogą być napisane przed napisaniem testowanej funkcji (TDD) • Dzięki Jasmine, składania jest naturalna i intuicyjna, zbliżona do naturalnego języka („oczekiwania”)
  • 11. Unit testy w aplikacjach webowych opartych na AngularJS Wstęp do testowania 10 Testy integracyjne Polegają na testowaniu poprawnej współpracy modułów oraz systemów. Skupiamy się nie na pojedynczych funkcjach, a na większych fragmentach aplikacji. • Współpraca modułów • User stories • Przykład pojedynczego testu: po poprawnym zalogowaniu, aplikacja powinna wyświetlić listę zadań do zrobienia (user story) posortowaną malejąco wg deadline’u.
  • 12. Unit testy w aplikacjach webowych opartych na AngularJS Wstęp do testowania 11 Testy integracyjne • „Drogie” do wytworzenia, jednak dalej warte pisania • Oparte na interfejsie użytkownika • Protractor to the rescue!
  • 13. Unit testy w aplikacjach webowych opartych na AngularJS Wstęp do testowania 12 Testy akceptacyjne • Black box testing – nie wiemy nic o implementacji aplikacji, testujemy tylko i wyłącznie za pomocą interfejsów • Sprawdzamy, czy aplikacja poprawnie wykonuje założone zadanie (logika biznesowa, a nie to, czy poprawnie działa) • Drogie w napisaniu i utrzymaniu – dedykowane środowisko testowe • Często wykonywane manulanie
  • 14. Unit testy w aplikacjach webowych opartych na AngularJS Zakres i granice testów 13 Testy jednostkowe Testy integracyjne Stopień skomplikowania testów Testy akceptacyjne Koszty
  • 15. Unit testy w aplikacjach webowych opartych na AngularJS Moduł 1 Moduł 2 Moduł 3 Moduł 4 Moduł 5 Zakres i granice testów 14 Test integracyjny 1 lub więcej modułów Unit test pojedynczej funkcji w ramach modułu showLoader()
  • 16. Unit testy w aplikacjach webowych opartych na AngularJS Zakres i granice testów 15 Testy akceptacyjne i manualne App Black box
  • 17. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 16
  • 18. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 17 Czym właściwie jest? • Frameworkiem, dzięki któremu można bardzo szybko pisać zaawansowane aplikacje • Gotowy do tworzenia dużych, komercyjnych aplikacji • Rozwijany przez Google • Pozwala uczyć przeglądarki „nowych sztuczek” (nowe tagi HTML), czyniąc kod bardziej deklaratywnym
  • 19. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 18 Czym jest dla mnie? • Nigdy nie lubiłem JS – dzięki Angularowi to się zmieniło • Pozwala przenieść dobre praktyki z innych języków programowania • Nieco trudny do nauki na początku, bardzo wydajny później
  • 20. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 19 Superheroic JavaScript MVW Framework • Czy AngularJS implementuje MVC? „I hereby declare AngularJS to be MVWframework - Model-View-Whatever. Where Whatever stands for "whatever works for you".” Igor Minar
  • 21. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 20 Kluczowe korzyści • Data binding • Podział na warstwy • Dependency injection • Modułowość • Wsparcie dla Q (promises) – „zabija” callbacki https://github.com/kriskowal/q
  • 22. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 21 Kluczowe korzyści - testowanie • Niespotykana prostota pisania i uruchamiania testów • Mocks ($httpBackend, $q, Jasmine spyOn) • PhantomJS – testowanie bez przeglądarki • Wsparcie dla testów E2E - Protractor
  • 23. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 22
  • 24. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 23
  • 25. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 24
  • 26. Unit testy w aplikacjach webowych opartych na AngularJS AngularJS 25
  • 27. Unit testy w aplikacjach webowych opartych na AngularJS Dobre praktyki 26 Jak pisać testowalny kod? • Używać DI (Dependency Injection) • AngularJS jest o to oparty • Nie robić instancji obiektów w funkcji • Nie pisać długich funkcji, które robią dużo rzeczy jednocześnie • Nie produkować długich if’ów i switchy • Pisać krótkie funkcje • Używać modułów, services • Protractor to the rescue!
  • 28. Unit testy w aplikacjach webowych opartych na AngularJS Testy jednostkowe 27 Powtórka • Będziemy testować pojedyncze funkcje różnych modułów • Nie chcemy testować działania rzeczy, które dzieją się poza naszą funkcją • Mocks! • Chcemy przetestować różne scenariusze wywołania funkcji • Zakończone sukcesem • Zakończone porażką
  • 29. Unit testy w aplikacjach webowych opartych na AngularJS Nie gryzę :) Q&A
  • 30. Unit testy w aplikacjach webowych opartych na AngularJS WARSZTATY - WYMAGANIA 29 • Znajomośd JS (to jest konieczne, z resztą sobie poradzimy) • GIT • Node (npm) • Bower • Grunt • Linux • URL: http://www.github.com/neoteric-eu/karierait-sopot
  • 31. Unit testy w aplikacjach webowych opartych na AngularJS WARSZTATY - APLIKACJA 30 • Prosta lista TODO • Local Storage • Nie przejmujemy się modułem $System • Uznajemy, że piszemy moduł Todo
  • 32. Unit testy w aplikacjach webowych opartych na AngularJS Nie gryzę Q&A
  • 33. Unit testy w aplikacjach webowych opartych na AngularJS Kodujcie i testujcie :) Dziękuję za uwagę
  • 34. Unit testy w aplikacjach webowych opartych na AngularJS Odwiedź nas Miszewskiego 16/5 80-239 Gdańsk e-Mail mpaprocki@neoteric.eu rekrutacja@neoteric.eu Zadzwoń +48 602 557 952 KONTAKT WEB www.neoteric.eu facebook.com/neoteric-eu