Po 9ciu mc-ach od ostatniego wpisu mój pierwszy kurs wideo ujrzał światło dzienne.

.net_tests

Siemanko

Ostatni mój wpis na tym blogu miał miejsce dziewięć miesięcy temu. Z jednej strony to szmat czasu, z drugiej jednak te miesiące minęły bardzo szybko. Przez ten cały czas dużo pracowałem i przygotowywałem coś co od dawna miałem w swojej liście TODO powiązanej z mojej karierą w programowaniu. Dziś mogę tę pozycję oznaczyć jako wykonaną gdyż to właśnie dziś wraz z wydawnictwami VideoPoint oraz Helion wydałem swój pierwszy kurs wideo na temat testowania oprogramowania w trakcie developmentu w .Net Core. Traktuje to jako uzupełnienie mojego programistycznego CV tak samo jak mój GitHub.

Testowanie oprogramowania w .NET Core 2.0. Kurs video. Poziom pierwszy. Jak pisać dobry, niezawodny i łatwy w utrzymaniu kod

Mam nadzieje, że przypadnie Wam do gustu to w jaki sposób spróbowałem przekazać swoją wiedzę, dotychczasowe doświadczenie i spojrzenie na pisanie kodu i testów.

Jesli jesteście ciekawi jak wygląda praca nad stworzeniem kursu wideo lub chcielibyście również mieć taką publikację na swoim koncie – gorąco zachęcam! Jednak uprzedzam, że jest to znacznie trudniejsze niż się może wydawać na początku. Wymaga to dobrego planu, przygotowania i wytrwałości. Nie spisywałem ilości godzin, które poświęciłem na przygotowanie tego kursu jednak szacuję, że było ich ok 100 – więc wg mnie b. dużo.

Szczegółowy opis jak i spis treści znajdziecie na stronach kursu:

  • na portalu Helion – tutaj
  • na portalu ViedoPoint – tutaj

Jeśli się skusicie – dajcie feeback!

Pjona!

 

Reklamy

Selenium czyli jak zautomatyzować proces końcowego testowania aplikacji webowej.

Siemanko

W dzisiejszym poście pragnę nieco przybliżyć temat automatycznych testów end2end i pokazać przykładowy teścik.

Jak wszyscy pracujący m.in. przy webie wiemy, że ostateczne testy wykonują zazwyczaj ludzie klikając myszką i stukając w klawiaturę. Bez względu na fakt pokrycia kodu testami jednostkowymi, które przed release’em mienią się na zielono. Jeśli Twoim lub Twojej firmy mottem nie jest hasło „Testujemy na produkcji!” to na pewno Wasz dział testerski (o ile go macie) lub Wy sami musicie klikać jak małpka te same user stories i interpretować co się dzieje. Jeśli release’y są np. co pół roku to spoko – duże wydarzenie więc wszystkie ręce na pokład testerskiego okrętu. Jednak jeśli release’y są co np. tydzień (hot fixy itp.) to aby być pewnym, że zmiany w nadchodzącym release’ie nie popsuły niczego w aktualnym trzeba wszystko od początku do końca przeklikać co przy zaawansowanych aplikacjach może zająć b. długo. O kosztach takiego postępowania (pieniężnych i emocjonalnych) chyba nie muszę pisać. Czy jest coś co możemy z tym zrobić? Owszem, jest.

User story w teście jednostkowym

Selenium umożliwia przetestowanie działania aplikacji internetowej z poziomu testu jednostkowego. Udostępnia ono „drivery” do większości przeglądarek inetrnetowych i tak jak „Karma” (jeśli pracujesz przy froncie to wiesz o co kaman) otwiera okno przeglądarki i klika, wpisuje, przesuwa, robi dokładnie to co zakodujesz w teście, a że jest SDK dla .NETu to jesze wynik wyświetli Ci się na czerwono lub zielono w Test Explorer’ze w VS.

Test case

Na pokaz zróbmy taki test SEO w google. Chcemy sprawdzić czy po wpisaniu „Selenium” w google główna strona selenium będzie pierwszym wynikiem.

test1

Klikamy Run Test. Selenium otworzy przeglądarkę (w tym przypadku Chrome), wpisze „Selenium” i kliknie szukaj. Następnie pobierze adres strony pierwszego wyniku i zostanie on przyrównany do oczekiwanego.

ezgif-3-2306a82b10

Ok, poszło. Ale my jesteśmy programistami i nie mamy takich pomysłów co można dziwnego zrobić z aplikacją jak testerzy. Wspomniani natomiast patrząc na ciąg tych znaczków w XPath też mogą nie kumać czaczy i Oni kolejnych testów nie napiszą. Dlatego w tym momencie do akcji wchodzi POM (nie, nie powolny objazd miasta) – Page Object Model.

Page Object Model

bumblebee_logo

To pattern umożliwiający testerom nie posiadającym wiedzy programistycznej na skuteczne i bezproblemowe pisanie testów w Selenium. Ten pattern można stosować dzięki BumbleBee. Udostępnia ona wiele implementacji tagów html’owych, które posiadają user, a raczej tester friendly API.

POM dla głownej strony wyszukiwania.

page1

POM dla strony z wynikami wyszukiwania

page2

Za POM odpowiedzialny jest programista i ma w nim dostarczyć testerowi dokładnie to co user może kliknąć na stronie. W naszym uproszczonym przypadku wyłuskałem przy użyciu BumbleBee tylko pole wyszukiwania, submit button oraz pierwszą stronę wyników. Teraz tester, gdy ma dostarczony taki POM, po krótkim przeszkoleniu może pisać test case’y jako testy jednostkowe bo pole wyszukiwania ma metodę AppendText(), a button ma metodę Submit(). Trzeba tylko znać angielski aby sie połapać.

test2

Podsumowanie

To oczywiście tylko drobna zajawka, gdyż sam całkiem niedawno dopiero się dowiedziałem o istnieniu tego cuda. Po więcej odsyłam do Selenium i BumbleBee. Kodzik stworzony na potrzeby posta jak zwykle na moim github’ie

Pjona!