W pierwszej części Dekalogu testera dowiedzieliście się o podstawowych aspektach pracy testera. Omówiłam elementy technologii webowych, przeglądarki oraz nazewnictwo. Wspomniałam również o typowych narzędziach wykorzystywanych przez testerów oraz najważniejszych zasadach pisania testów automatycznych. 

Zapraszam na drugą część Dekalogu – tym razem bardziej techniczną. Dowiesz się, czym są wzorce projektowe i jakie warto znać. Przeczytasz również o językach programowania, których dobrze jest się uczyć.   

5# Wzorce projektowe  

Wzorzec projektowy to gotowe rozwiązanie często pojawiającego się problemu. Używając wzorca, możesz mieć pewność, że zaproponowane rozwiązanie jest uniwersalne i sprawdzone. Dzięki temu osoby, które będą miały do czynienia z Twoim kodem nie będą rwały włosów z głów, próbując rozgryźć, co próbowałeś zrobić.  

Wzorce w jasny i czytelny sposób pokazują zależności i powiązania pomiędzy klasami a obiektami. Ułatwiają pielęgnację i modyfikację napisanego kodu. Należy jednocześnie pamiętać, że są one jedynie opisem rozwiązania problemu, a nie jego implementacją.  

Po co testerom wzorce? Testowanie aplikacji jest dość uciążliwą pracą. Deweloperzy dodają coraz więcej funkcji, a to wymaga czujności i stałego testowania. Aplikacje stają się coraz większe, przez co testy regresyjne trwają dłużej. Warto wtedy zainwestować w testy automatyczne. A co, jeśli mamy do czynienia ze zmieniającym się oprogramowaniem? Właśnie wtedy przydają się wzorce, które w prosty sposób uczą i pozwalają pisać łatwo modyfikowalny kod.  

Poniżej znajdziesz dwa najpopularniejsze wzorce wykorzystywane przez testerów w Goyello.  

  • Page Object Pattern – tester aplikacji webowych (prawie) zawsze ma do czynienia z wieloma różnymi stronami tworzonej aplikacji. Najwygodniej wtedy zastosować wzorzec Page Object. Dzięki niemu masz dokładną reprezentację testowanej strony w kodzie. Co najważniejsze – wszystkie elementy strony mają swoje odwzorowanie w kodzie tylko w jednym miejscu. W praktyce oznacza to, że gdy na testowanej stronie jeden obiekt zmieni swój stan – wystarczy zmienić kod tylko w jednym miejscu. Nie musisz zmieniać scenariuszy testowych ani pisać kodu od początku. Page Object może być również implementowany wraz z frameworkiem Selenium.  

Podsumowując, Page Object:  

  • jest klasą obiektową, która służy jako interfejs strony, 
  • zmniejsza powielanie kodu, 
  • sprawia, że testy są bardziej czytelne i trwałe, 
  • dodaje logiczną strukturę do kodu. 
  • Data Driven Testing – to kolejny ułatwiający pracę wzorzec. Pozwala na proste testowanie oparte na danych zapisanych w zewnętrzych plikach. W plikach tych możesz trzymać dane wejściowe, takie jak: dane testowych użytkowników, nazwy i ceny produktów. Nikt Ci nie zabroni trzymać tam także danych wyjściowych, które chcemy walidować, takich jak:  oczekiwany wynik, suma końcowa koszyka przy zakupach czy lista pojawiajacych się komunikatków o błędach. Zewnętrznymi plikami mogą być dowolne pliki: bazy danych, arkusze kalkulacyjne, pliki XML itd. Oczywiście, przy samej implementacji wczytywania danych warto poprosić o pomoc doświadczonego programistę, aby wspólnie wypracować najlepszy sposób wczytywania danych. Ważne, aby był odpowiedni i spójny w całym projekcie.  

Podsumowując: 

  • Dane testowe możesz przechowywać w łatwo modyfikowanych plikach, 
  • Dane nie są „zahardkodowane” w testach.  

#6 Języki programowania  od czego zacząć 

software-762486_1280Wielu czytelników pewnie zdziwi się, ale programowanie to nie język. Programowanie to sposób myślenia. Teoretycznie sama nauka języka nie jest trudna. Wystarczy chcieć. Zdecydowanie trudniej jest zacząć myśleć w sposób analityczny, rozbijając każdy problem na jak najmniejsze fragmenty. Musisz też być świadomy, w jaki sposób napisane przez człowieka polecenia rozumieją komputery. Ta nauka przychodzi z czasem, doświadczeniem i liczbą napotkanych problemów.  

Na początku Twojej przygody z programowaniem musisz zadać sobie pytanie: „jakiego języka będę się uczyć”. Sama, jeszcze na studiach, zaczęłam swoją karierę od C++. Miałam ambitnego wykładowcę, udało mi się więc skubnąć odrobinę wiedzy o Asebmlerze. Z zamiłowaniem uczyłam się Javy, aby ostatecznie… wylądować w komercyjnym projekcie .NET-owym.  

Nieważne, na który język zdecydujesz się. Musisz przede wszystkim wyrobić nawyki, które pozwolą Ci skutecznie unikać przeszkód i błędów podczas pisania kodu. Twój umysł musi najpierw nauczyć się abstrakcyjnego myślenia, którego potem będziesz używać w codziennej pracy.  

Na co w takim razie zwracać uwagę? 

  • Rozbijaj zadania na jak najmniejsze elementy – Dostajesz duże i skomplikowane zadanie i rozkładasz ręce. Nie wiesz, jak to ugryźć? Rozbij je na szereg małych zadań, które po złożeniu będą kompletną odpowiedzią.  
     
  • Najpierw pomyśl, potem pisz – nigdy na odwrót. Odpowiednie zaplanowanie i przemyślenie rozwiązania to 90% sukcesu. Jeśli czegoś nie jesteś pewny lub chcesz się upewnić, czy Twój tok myślenia jest poprawny, warto spytać bardziej doświadczoną osobę. Rozmawianie i analizowanie kodu to również nauka.  
     
  • Bądź systematyczny – im więcej wiesz, tym… więcej wiesz. [Symbol] Gdy zaczynasz przygodę z programowaniem, czasem możesz odnieść wrażenie, że „tego jest po prostu za dużo” i nigdy nie uda ci się tego wszystkiego pojąć. Po części to prawda. Programowanie jest bardzo szeroką dziedziną i zdobycie 100% wiedzy jest prawdopodobnie niemożliwe. Systematyczna praca będzie jednak przynosić efekty. Im więcej informacji i doświadczenia zgromadzisz, tym więcej będziesz rozumieć. To dlatego, że po pewnym czasie wiele rzeczy zacznie łączyć się ze sobą w jedną, spójną całość.  

Gdy już wiesz, że chcesz podążać tą ścieżką i znasz podstawy, warto skupić się na jednym, wybranym języku. Do wyboru masz następujące: 

  • Java – dzięki wieloplatformowości oraz łatwości integracji z rozwiązaniami mobilnymi, jej programiści są bardzo pożądani przez firmy. Pozwala na tworzenie gotowych aplikacji i oprogramowania systemów.  
  • C# – język podobny do Javy ale skupia się wokół platformy Windows i wykorzystuje biblioteki .Net.  
  • C i C++ – to podstawa dla wszystkich, którzy chcą zajmować się oprogramowaniem systemowym, niskopoziomowym.  
  • PHP – język skryptowy, wykonywany jest po stronie serwera. Służy głównie do tworzenia rozbudowanych, dynamicznych witryn sieciowych.  
  • Python – jeden z łatwiejszych języków do nauki. Posiada przejrzystą składnię i wykorzystywany jest jako język skryptowy.  

A gdy już nauczysz się programować: 

  • Zwracaj uwagę na konwencję nazewnictwa – każdy język posiada własny zestaw cech związanych z formatowaniem tekstu. Dzięki tym zasadom kod jest czytelny i łatwy w odbiorze. Klasy, funkcje, zmienne – każdy z tych elementów posiada swój własny zestaw charakterystycznych formatowań, do których należy się stosować.  
     
  • Używaj gotowych rozwiązań – nie wymyślaj koła na nowo. Na 99% podobny problem jest już rozwiązany w sieci i musisz po prostu skorzystać z zaproponowanego rozwiązania.  
     
  • Używaj narzędzi – każdy język posiada zestaw narzędzi, które pomagają w codziennej pracy. Naucz się z nich skutecznie korzystać.   

To (jeszcze) nie koniec. Kolejne punkty Dekalogu testera już wkrótce. Tymczasem zachęcam Cię do samodzielnego pogłębiania wiedzy. Chętnie też przeczytam o Twoich doświadczeniach z nauką narzędzi testerskich. Podziel się nimi w komentarzu. 

Software Tester at Aspire Systems Poland. Agile believer, following the Agile manifesto both in her professional and private life. Passionate about databases and IT project management.