w Praktyce
7 godz. 1 min · Angular · Full-stack i Programowanie
Mateusz KuleszaSenior Software Developer, Konsultant, TrenerPodstawą produktywnej pracy z angularem jest możliwość zagwarantowania że wszystko działa bez potrzeby wielokrotnego “przeklikiwania” poszczególnych ekranów. W pierwszej części kursu omawiam więc temat testów automatycznych.Już po obejrzeniu pierwszych lekcji zobaczysz dlaczego warto testować kod i jak dzięki narzędziom dostarczonym z angularem jest to proste. Zobaczysz jak testowanie automatyczne pozwoli zaoszczędzić Ci wiele godzin spędzonych na szukaniu błędów.
Za jakość aplikacji odpowiada nie tylko to czy działa ona poprawnie, ale w dużej mierze decyduje o tym dobry interfejs użytkownika oraz UX, czyli user experience. Dwie kolejne sekcje kursu poświęcone są właśnie dobremu UI oraz UX. Omawiam typowe problemy w oparciu o zasady i wskazówki specyfikacji Google Material Design - jednej z najbardziej szczegółowych specyfikacji UX. Wszystkie przykłady UI zarówno w wariantach desktopowych jak i mobilnych omówione są na przykładzie Angulara oraz obszernej biblioteki komponentów Angular Material. Zobaczysz nie tylko jak korzystając z gotowych komponentów błyskawicznie budować nowe funkcjonalności, ale przy okazji omówimy wiele praktycznych wskazówek oraz dobrych praktyk UX które warto wykorzystać w Twoich aplikacjach.
W ramach budowania interfejsów skupimy się na najmniejszych szczegółach takich jak prawidłowe zachowanie linków, przycisków oraz wskaźników przechodząc stopniowo do coraz większych elementów aplikacji takich jak nawigacja, układ strony, paski nawigacyjne czy okna dialogowe. Przy każdym etapie czeka Cię masa wskazówek, przykładów i rozwiązań typowych problemów user experience.
Jednak UX to nie tylko wygląd i zachowanie pojedynczych elementów. W ostatnich sekcjach kursu dowiesz się jak projektować bardziej złożone interakcje z użytkownikiem. Zobaczysz wieloetapowe formularze kreatora oraz dowiesz się jak zarządzać stanem aplikacji oraz różnymi źródłami danych. Pokaże Ci jak zbudować samodzielnie sortowane, filtrowane i stronicowane źródła danych oraz połączyć je z różnymi komponentami UI takimi jak listy czy datagrid.
Na koniec kursu zobaczysz jak możemy różne gotowe elementy UI połączyć w przepływ ekranów budując ścieżkę użytkownika. Zobaczysz jak prawidłowo zaprojektowane komponenty wraz z dobrze zaplanowanym UX pozwalają być niesamowicie produktywnym jednocześnie nie poświęcając jakości czy dobrej architektury aplikacji.
Jest to kurs dla osób które już pracowały z angularem i chciałyby wyjść poza pojedyncze techniki oraz poznać proces projektowania aplikacji w praktyce z uwzględnieniem najlepszych praktyk programistycznych oraz user experience. Zarówno w wariancie webowym jak i projektując pod urządzenia mobilne.
Angular 6, 7, 8+
W poprzednich lekcjach tu widziałaś tutaj jak wygląda konfiguracja
narzędzia karma jak dodać przeglądarki jak dodać różne reportery
czyli tutaj informacje o wyniku testów o czym nie powiedzieliśmy
to jak dodać pokrycie linii kodu tutaj w wygenerowanym przez angular
projekcie mamy dodany plugin karma coverage istanbul reporter
i jest tak skonfigurowany żeby to działało z angularem czyli jak tu widzisz mamy już jakie
ustawienia dla coverage czy istanbul reporter jest tu po prostu plugin mamy ścieżkę
gdzie ma być wytworzony raport beta raport po prostu powstanie
jako zestaw plików wynikowych mamy tutaj także
raport jakby z czego mu się składać bo ten sam coverage też możemy skopiować
na różne sposoby możemy też w różnym formacie wyeksportować dla
człowieka do czytania html w którym możemy sobie otworzyć
przeklikać i w tym html'u też możemy różne jakby statystyki uwzględnić
tutaj domyślnie mamy line coverage only może
tutaj więcej statystyk dodać także nie będę wchodził w szczegóły każdego z tych
narzędzi polecam tobie też zobaczyć sobie co to jest coverage istambul
i jakie on udostępnia możliwości tak więc tutaj
mamy karma cover czyli sam reporter i tutaj też możesz zobaczyć jakie
dodatkowe opcje można dodać pokażę natomiast jakie
domyślnie mamy opcje właśnie dla tego instambul reporter i
co nam to daje jeśli chodzi faktycznie o pisanie testów tutaj tak jak
widzisz możesz to karma cover czy istanbul tylko wspomnę dodać tak zwane progi czyli
dodać reguły poniżej których twoje testy pomimo że są napisane to
jakby całościowo testy są niepoprawne nadal jest to błąd mimo
że testy są napisane to jeśli jest ich za mało lub jeśli nie pokrywają wystarczającej
części aplikacji możemy także jakby cały test oznaczyć jako błąd
że jako się nie udało porażka jeśli testy mimo że są poprawne
to jest ich zbyt mało lub one zbyt nieskutecznie określają
opisują twoją aplikację więc tu polecam sobie zajrzeć poczytać ja
pokażę jak takie testy jak taki raport z testów łatwo wygenerować
czyli uruchamiam tutaj konsolę tak jak poprzednio ng test z
jedną małą różnicą tym razem dopiszę opcje code coverage
i takie coś uruchomi dokładnie te same testy ktore robiliśmy przed chwilą te testy
tu chyba się nie udadzą bo to z tego co pamiętam dlatego że ja coś w komponencie zmieniłem więc
ja może coś przywrócę to tak jak było żebyśmy mieli testy pełen sukces
okej mamy sukces bo naprawiłem tutaj te zmiany które robiłem
w poprzedniej lekcji uruchomiła mi się przeglądarka mam tutaj wynik testów
ale to nie wszystko jeśli spojrzymy tutaj do katalogu odświeżę powstał
nam to w naszym katalogu z projektem dodatkowy katalog o nazwie coverage jeśli
ten katalog sobie rozwinę to jak widzisz mamy masę plików mamy jakieś css'y javascript'y
i tak dalej jest to praktycznie strona internetowa raport
z naszych testów w postaci stron internetowych żeby był po prostu wygodny do przeglądania
i ja otworzę sobie tutaj index html i
po prostu to jest sama strona internetowa więc to uruchomię po prostu w naszej
przeglądarce czyli dodam sobie nową kartę okej
i zobaczymy sobie jak to wygląda to jest raport z
pokrycia jak widzisz mamy tutaj katalogi i pliki i dla
każdego katalogu dla każdego pliku mam taki pasek który mówi ile wyrażeń
zostało pokrytych a także ile gałęzi ile funkcji ile linii
czyli zwróć uwagę że pokryliśmy 92% kodu ale
tylko 42% gałęzi co to znaczy gałęzi
zobaczymy wejdźmy w komponent i tutaj tam
gdzie mamy żółto ten część ta część kodu jakby
się nie wykonała ta część kodu się nie pokryła tu nie mamy za wiele logiki spróbuję
przerobić troszeczkę ten komponent i pokazać ci o co chodzi powiedzmy
że w naszym komponencie dopiero tutaj jest konstruktor czyli metoda
która na pewno się wykona pokaże klasa jeśli jest utworzona konstruktor się wykona
i tutaj napiszę jeśli title jeśli
this title to console log mam
title w przeciwnym wypadku i tu
zrobimy drugi console.log nie mam title ten
kod jakby jest tutaj nie znaczący on nic nie robi ma on jedną
tutaj ważną cechę w naszym przypadku teraz ten kod zawsze
wejdzie w tą gałąź kodu nigdy nie wejdzie w tą gałąź bo zawsze mamy tytuł dopóki
nie zmienię tego kodu zawsze będziemy wchodzić w tą jedną gałąź zobaczmy zobaczmy
jeszcze raz teraz raport ja go odświeżę ok 89
wejdźmy do komponentu i tu jak widzisz pojawiła się taka
czerwona linia kiepsko troszeczkę to widać ale
nigdy nie weszliśmy w tą gałąź tutaj czyli w
testach powinniśmy uwzględnić obie sytuacje co jeśli tytuł jest poprawny
i przetestować tą ścieżkę oraz jeszcze raz uruchomić drugi
test w którym sprawdzimy czy na przykład co się stanie kiedy tytułu nie ma i
jak to zadziała jak to wejdzie w drugą ścieżkę tak czyli tym razem mamy pokrycie
89% procent jeśli bym
wykonał test tutaj właśnie który oba te warianty sprawdza
no to wtedy byśmy mieli wyższe pokrycie o tym jak to testować
żeby mieć wysokie pokrycie żeby tutaj sprawdzać różne gałęzie żeby testować funkcje
i linie o tym będziemy sobie mówić w praktyce które pokażę tylko jak takie
raport wygenerować jak w taki raport wejść natomiast
już w trakcie pracy będziemy zaglądać w to pokrycie i sprawdzać
właśnie jak nam się udało tutaj jakie wyniki się udało nam osiągnąć i
też poromawiamy sobie o tym czy na pewno zawsze chcemy mieć przetestowane
wszystko i które gałęzie powinniśmy testować a kiedy jakby
opuszczenie gałęzi nie jest tak istotne nie zagraża jakby bezpieczeństwu aplikacji i nie
jest wymagane pisanie testów specjalnie tylko po to żeby tutaj mieć po prostu wyższy
procent okej to tyle jeśli chodzi o pokrycie kodu zobaczysz
więcej praktycznych przykładów już gdy będziemy faktycznie pisać prawdziwe testy no
i właśnie no właśnie kolejne testy prawdziwe
testy gdzie już będziemy pracować z jasmine więc wyjaśnię tylko kod aplikacji tylko nasze
testy o tym już w kolejnej lekcji tak więc do zobaczenia