środa, 29 marca 2017

Napisz swój pierwszy test w Javie

Zaproszenie na warsztaty pod tytułem "Napisz swój pierwszy test w Javie"

Women in Technology Rule

Zgłosiłam się na wydarzenie organizowane przez Women in Technology i QA Courses dla testerów manualnych, którzy nie znają języka Java, ani nigdy wcześniej nie pisali testów automatycznych. Mimo, że wprawdzie nie jestem testerem manualnym, na podstawie mojego zgłoszenia zakwalifikowałam się do grona 25 uczestników warsztatów "Napisz swój pierwszy test w Javie".  Bardzo się ucieszyłam z tego małego sukcesu. Konfigurowanie środowiska, żeby sprawnie w tych warsztatach wziąć udział przysporzyły mi nieco kłopotów, ale dopomógł mąż deweloper. Zainstalowałam na swoim  komputerze pod czujnym okiem domowego uber-programisty Java JDK, środowisko programistyczne IntelliJ IDEA i wtyczkę Selenium Builder w Firefoksie, aby w środowy wieczór popędzić moją srebrną Renią na spotkanie z innymi aktywnymi technologicznie dziewczętami. Jak przed każdym tego typu wydarzeniem, byłam zestresowana, że nie nadążę za tempem prowadzących i reszty grupy, ale dzielnie pojawiłam się na miejscu.

QA Courses Rule

Warsztaty prowadziła Irena Szumowskaja z pomocą krążącego po sali, żeby rozwiązywać bieżące problemy Olega Manzhosa. Irena jeszcze przed szkoleniem wymagała, żeby wszyscy uczestnicy poprosili ją na Skypie o dodanie do czatu, dzięki czemu mogliśmy wszelkie linki i kawałki kodu dostawać wprost na nasze konta Skypowe natychmiast, gdy były nam potrzebne w ćwiczeniach. Bardzo przypadło mi do gustu to rozwiązanie usprawniające naszą komunikację i nasze ćwiczenia.

Sama Irena prowadziła warsztaty w komfortowym tempie, spokojnie, cierpliwie i z poczuciem humoru tłumacząc zagadnienia i rozwiązując problemy. Dziewczyna umie uczyć! Warsztaty były dobrze zorganizowane i zaplanowane - jedno ćwiczenie dotyczyło stworzenia testu automatycznie przy pomocy zapisu z nagrywarki Selenium Builder, a drugie odbywało się już ręcznie - prawie od podstaw.

Najpierw robiliśmy test automatyczny z użyciem Selenium Buildera wspólnie. Wtyczka Selenium Builder zapisuje kroki, które wykonuje się na jakiejś stronie internetowej, a następnie te kroki można wyeksportować do "Java/TestNG", czyli zapisać w pliku scenariusz testowy w języku Java. Taki plik można potem otworzyć przy pomocy IntelliJ IDEA, żeby zobaczyć kod i ponownie uruchomić zapisane kroki.

Na podstawie kodu, który utworzył się przy pomocy Selenium Buildera, Irena pokazała nam, jak stworzyć podobny test od podstaw, ręcznie. Nauczyła nas poleceń takich jak:
 // utwórz sterownik
 FirefoxDriver wd = new FirefoxDriver();
 // nawiguj do wskazanego adresu strony
 wd.get("adres.strony.http");
 // znajdź element po identyfikatorze i go kliknij
 wd.findElement(By.id("main-search-text")).click();
 // znajdź element po nazwie
 wd.findElement(By.name("a"));
 // znajdź element po nazwie i wstaw do niego tekst
 wd.findElement(By.name("password")).sendKeys("password");
 // znajdź element z wykorzystaniem XPath
 // - drugie pole tekstowe w formularzu o identyfikatorze 'login'
 // - i go kliknij
 wd.findElement(By.xpath("//form[@id='login']/input[2]")).click();
Zmienna wd to Web Driver przeglądarki Firefox. Jest to urządzenie z pakietu Selenium, które możemy prosić o wykonanie konkretnych poleceń w przeglądarce internetowej, np. znalezienie elementu w kodzie HTML strony, aby następnie wywołać na nim akcje takie, jak kliknięcie, czy uzupełnienie danymi. Irena pokazała nam, jak znajdować elementy oznaczone identyfikatorem (id) i/lub nazwą (name), których chcemy użyć w naszym teście.

Jest to dla mnie nadal doświadczenie z pogranicza magii, kiedy jakieś tajemnicze polecenia napisane w ledwo zrozumiałym języku powodują, że komputer zaczyna żyć własnym życiem, otwierać strony internetowe, uzupełniać pola tekstowe. Warsztaty nie były dla mnie ani za trudne, ani za łatwe. Zakończyły się z poczuciem osiągniętego sukcesu, bo oba zadania udało mi się zrobić i wszystko zadziałało tak, jak było przewidziane.

JetBrains Rule

IntelliJ IDEA to takie środowisko, w którym można tworzyć kod w języku Java. Stworzyła je firma JetBrains, z którą miałam już styczność przy bezpłatnym kursie podstaw Pythona przygotowanym przez Udemy.com.  Tam poznałam środowisko podobne do IntelliJ tyle, że przygotowane specjalnie do pisania w Pythonie - PyCharm. JetBrains wydaje się tworzyć dosyć przystępne narzędzia do ćwiczenia swoich umiejętności tworzenia oprogramowania w różnych językach. W PyCharm można znaleźć konsolę do tworzenia skryptów Pythonowych oraz terminal do wpisywania komend typowych dla Linuxa. Wszystko jest zintegrowane w jednym miejscu i od razu można zobaczyć działanie swojej radosnej twórczości.

czwartek, 9 marca 2017

Trochę praktyki, trochę zdobytych porad i napisany egzamin

Testy jednostkowe i TDD

Już coraz więcej rozumiem i coraz więcej wiem. Czuję się coraz pewniej w zagadnieniach teoretycznych. Radzę sobie nawet z testami jednostkowymi na studiach podyplomowych, choć są one dla mnie bardzo wymagające intelektualno-logicznie.

Testy jednostkowe, które ćwiczymy na WSB bazują na podejściu zwanym Test Driven Development, czyli "najpierw testuj, potem programuj." Polega ono na tym, że dostajemy dane, które ma obsługiwać napisana przez nas funkcja tak, żeby osiągnąć wyszczególniony rezultat. Na przykład, jeśli podamy funkcji liczbę 1, to ma ona zwracać liczbę 1, a jeśli tej samej funkcji podamy liczbę 2, to ma zwrócić liczbę 4. Trzeba się nagłówkować, jak napisać w Pythonie funkcję, która wykona najpierw to pierwsze zadanie, a później zadziała również dla drugiego przypadku. Podczas zajęć formułę do tworzenia testu jednostkowego dostaliśmy gotową, więc główne zadanie polegało na modyfikowaniu modułu z funkcją tak, żeby test przechodził pozytywnie. Zgodnie z zasadami TDD, najpierw test jednostkowy ma zostać nie zaliczony i na podstawie błędu wprowadza się zmiany w module z funkcją, aż uda się zaliczyć test poprawnie. Było to trudne i jeszcze przede mną wiele ćwiczeń na zadanie domowe, ale dużą satysfakcję daję komunikat, że test został zaliczony pomyślnie.

Praktyczne warsztaty z testowania oprogramowania

12. lutego razem z dwoma koleżankami ze studiów i jednym kolegą bawiliśmy się w testerów na warsztatach prowadzonych przez Karolinę Pawłowską z Ipis Services. Karolina przygotowała dla nas krótką prezentację teoretyczną z typowych zagadnień związanych z testowaniem oprogramowania. Natomiast 80% czasu w tę słoneczną niedzielę próbowaliśmy znajdować usterki w grze komputerowej przygotowanej specjalnie na warsztaty.

Moje emocje związane z praktycznym testowaniem gry na tych ćwiczeniach określiłabym od początkowej konfuzji i zupełnego chaosu do końcowego uporządkowania i większej uważności. Stopniowo uczyliśmy się, jak efektywnie podchodzić do zadań testerskich, które mogą nas spotkać na rozmowach kwalifikacyjnych. Ćwiczenia przeplatały się z coraz bardziej uszczegółowioną teorią. W usystematyzowany sposób poznawaliśmy od praktycznej strony kolejne techniki: od testowania eksploracyjnego przez testowanie w oparciu o klasy równoważności i warunki brzegowe, aż po przypadki testowe generowane ze specyfikacji. W miarę upływu czasu coraz lepiej szło nam spostrzeganie defektów. I co najważniejsze uczyliśmy się nasze odkrycia w miarę sensownie i spójnie notować.

Karolina bardzo wiele opowiadała nam też o tym, co warto uwypuklić w CV (szczególnie, kiedy nie mamy jeszcze żadnego doświadczenia przemawiającego na naszą korzyść) i jak wyglądają rozmowy kwalifikacyjne, które ona sama przeprowadza dosyć często.

Akademia Początkującego Testera

Udało mi się wziąć udział w wydarzeniu organizowanym przez Akademię Początkującego Testera pt. "Rozmowy o testach." Nie było to ogólnikowe spotkanie, na którym poznaje się, czym jest zawód testera i jak się zabrać za przebranżawianie. Wydarzenie określiłabym raczej na poziomie średnio-zaawansowanym. Składało się ono z czterech wykładów dotyczących różnych szczegółów/aspektów pracy testera.

Po pierwsze Joasia mówiła o tym, że jeśli są jakieś cechy charakteru, które utrudniają nam bycie dobrym testerem (np. introwertyzm lub nie dostateczne zwracanie uwagi na szczegóły), to mamy na nie wpływ przez ćwiczenia i wyrabianie nowych nawyków. W skrócie - możemy pracować nad naszymi słabszymi stronami - nie determinują one powodzenia w pracy testera. Asia poleciła nam książkę "Myśl jak Sherlock Holmes" jako źródło ćwiczeń na spostrzegawczość. Postaram się ją przeczytać w wolnej chwili.

Po drugie, Marta przedstawiła kilka narzędzi do zarządzania testami, które warto poznać, żeby ułatwić sobie pracę w testowaniu - od Excela po Microsoft Test Manager. W każdej firmie istnieje inny sposób zarządzania testami, ale wyróżnione przez Martę narzędzia mogą służyć jako przedstawiciele większości z nich.

Następnie Darek podpowiadał, jak można się samodoskonalić, żeby zostać testerem. Podkreślał rolę poświęcenia, wizualizacji, wyznaczania sobie i zapisywania celów. Muszę jego wskazówki koniecznie wcielić w życie, bo moje cele motają mi się w głowie bez większego ładu, co nie pomaga w dążeniu do ich realizacji.

Na koniec, Grzegorz opowiadał o tym, jak skomplikowane jest testowanie urządzeń mobilnych i jak wiele rzeczy trzeba wziąć pod uwagę, żeby przetestować aplikacje mobilne. Mnogość zagadnień, z którymi trzeba się liczyć w takim testowaniu przyprawia o zawrót głowy, ale podobno są usystematyzowane sposoby na poradzenie sobie z tym.

Egzamin ISTQB - poziom podstawowy

7. marca napisałam egzamin ISTQB w siedzibie SJSI we Wrocławiu. Cieszę się, że mam to już za sobą i mogę skupić się na uczeniu innych, bardziej praktycznych rzeczy. Moja wersja egzaminu składała się zarówno z typowych pytań o teorię zawartą w sylabusie, jak i z kilku praktycznych zastosowań tej teorii w przypadkach testowych. Te praktyczne zadania przysporzyły mi najwięcej trudu z racji tego, że za mało mam jeszcze doświadczenia w tworzeniu testów i przypadków testowych. Wyobrażam sobie, że ktoś, kto zdaje egzamin ISTQB po przepracowaniu choć kilku miesięcy jako tester może poradzić sobie z tego typu pytaniami o wiele lepiej. Ale mam nadzieję, że rozwiązałam poprawnie wystarczająco dużo zadań, żeby egzamin zdać. Dowiem się tego w ciągu kilku nadchodzących dni.