Wstęp

Kim jesteśmy?

Krzysiek Kijas
Senior Software Quality Engineer, Tech Lead, Mentor
profil na LinkedIn
O doświadczeniu...
  • Jako Tech Lead odpowiada za architekturę automatów z Playwright.
  • Z testowaniem i dbaniem o jakość oprogramowania jestem profesjonalnie związany od 2011.
  • Nabywałem doświadczenie w wielu projektach IT z różnych domen biznesowych (transport, finanse, administracja, zarządzanie systemami).
  • Posiadam doświadczenie praktyczne w pracy z różnymi narzędziami CI/CD (Jenkins, GitLab CI, Azure DevOps).
  • W codziennej pracy dbam o szeroko pojętą jakość w projekcie – poczynając od projektowania testów i strategii testowania, definiowanie i usprawnianie procesów, konsultacje rozwiązań, aż po tworzenie i projektowanie architektury frameworków do testów automatycznych.
  • Od 2014 zdobywam doświadczenie jako trener poprzez prowadzenie warsztatów dotyczących jakości, pisania testów i narzędzi wspomagających testowanie.
  • Współtworzę inicjatywę jaktestowac.pl, gdzie od początku przygotowuje kursy i materiały dla Nowoczesnych Testerów.
Przemek Barański
Senior Software Quality Engineer, Principal Engineer
profil na LinkedIn
O doświadczeniu...
  • Rozwija frameworki w Playwright do testów GUI oraz API zintegrowane z procesami CI/CD
  • Komercyjnym testowaniem oprogramowania zajmuje się od ponad 10 lat!
  • Specjalizuje się w tematach performance i automation, które praktycznie wykorzystuje przy zapewnieniu jakości dla globalnych systemów informatycznych.
  • Trenuje testerów od 2015, nie tylko online, ale też bezpośrednio na warsztacie, meetupie, konferencji czy uczelni.
  • Twórca bezpłatnych treści wspomagających testerów w całej Polsce ze stawianiem swoich pierwszych kroków w różnych obszarach testowania (vlog, Git dla Testerów, Podstawy Automatyzacji).
  • Zafascynowany technicznym rozwojem oraz upraszczaniem poznanych konceptów do łatwych i przyjemnych treści 😀
  • Tester nie tylko aplikacji ale i praktyk związanych z życiem, rozwojem i szeroko rozumianą jakością.

Jak wspieramy i dzielimy się wiedzą o Playwright?

Prelekcja: 7 Grzechów Playwright – Pułapki nowoczesnej automatyzacji

Uwydatnimy różne grzechy.

Dlaczego?

Aby skłonić do refleksji.

Aby wyciągnąć wnioski.

Uważamy, że sprzyja to głębszemu zastanowieniu się nad własnymi działaniami. Ten proces refleksji umożliwia nam spojrzenie na własne aktywności, podejścia i praktyki z większa krytyką.

Może być to impulsem do poprawy i dalszego rozwoju.

Dodatkowo, uwydatnianie grzechów w celu wyciągnięcia wniosków może pozwolić na zrozumienie mechanizmów, które prowadzą do popełnianych błędów oraz analizę możliwych ścieżek. Możemy bardziej świadomie podejść do podejmowania naszych przyszłych decyzji 😉

W efekcie, uwydatnianie grzechów przyczynia się do doskonalenie umiejętności programistycznych i ciągłe dążenie do lepszej jakości 😉

TIP: Każdy z grzechów można odnieść zarówno do narzędzia, jak i nas samych, czyli użytkowników 😉 W poniższych przykładach będziemy płynnie przechodzić pomiędzy tymi kontekstami 😉

Prezentacja

Prezentacje możesz pobrać klikając poniższy obrazek:

Lub za pomocą linka: Prezentacja

A teraz zobaczmy jakie grzechy ciążą nad twórcami i użytkownikami 😉




Pycha (Superbia)

Szybko, dużo, prosto! Czy na pewno?

  • Playwright jest świetny, ale rozpoczęcie przygody może wymagać pracy

    Playwright jest rozbudowanym narzędziem do automatyzacji testów, które oferuje obsługę wielu przeglądarek, w tym Chrome, Firefox i Safari. Jego bogata funkcjonalność, chociaż potężna, może być wyzwaniem. Podczas pisania testów pojawiają się różne koncepty jak fixtures, zrównoleglenie, asynchroniczność i wiele innych.

  • Proste nagrane testy? Mogą generować sporo problemów

    Nagrane testy mogą znacznie przyspieszyć pracę i idealnie nadają się na szybki start lub bardzo proste projekty. Jeśli chcemy je wykorzystać w bardziej zaawansowanych projektach, to musimy wykonać kosztowny refactor.

  • W dokumentacji tylko proste przykłady (i to wyszukiwanie pomiędzy kontekstami)

    Dokumentacja Playwright zawiera podstawowe przykłady, które pomagają w szybkim starcie, ale bardziej zaawansowane przypadki użycia mogą wymagać głębszego zrozumienia dokumentacji.

Czego nas uczy? 👨‍🏫

Playwright jest potężny, jednak trzeba podejść z pokorą.

Poznając podstawy możemy już zacząć automatyzować, a tym samym dostarczać wartość.

Jednak Playwright ma bardzo wiele funkcji – dopiero poznanie i zastosowanie ich pozwala na tworzenie czytelnych i utrzymywalnych testów. Testów, które przynoszą dużą wartość, a koszt utrzymania jest niski.

Niektóre z nich to:

  • Zależności w projektach, suite, testach
  • Mockowanie, GUI wsparte API, websockets
  • CI/CD – Cachowanie, sharding i zarządzanie projektami
  • Często adepci Playwright inwestują czas w rozwiązania, gdy jest totalnie inna droga.
    Przykład: obsługa bardzo dużej liczby scenariuszy z unikalnymi danymi, gdy wystarczą proste testy z zamockowanymi wartościami



Chciwość (Avaritia)

Czy grupa zapaleńców może przejąć władzę?

  • Microsoft to obecnie najwyżej wyceniana korporacja Q1 2024

    Microsoft zajmuje obecnie pozycję najwyżej wycenionej korporacji według danych z Q1 2024. Źródło: CompaniesMarketCap

  • Microsoft sponsoruje ekosystem Playwright

    Framework Playwright, TypeScript oraz VSCode są obecnie rozwijane przez zespoły pracujące dla Microsoft. Obecnie są to narzędzia w pełni bezpłatne. Również twórcy Playwright na konferencji Let’s talk Playwright with the Playwright team zapewniali, że Playwright będzie zawsze darmowy.

  • Niewielki zespół dla najczęściej pobieranego narzędzia

    Mimo popularności narzędzia, Microsoft utrzymuje niewielki zespół odpowiedzialny za jego rozwój.

  • Wraz ze skalą coraz trudniejsze staje się utrzymanie

    Z rosnącą popularnością narzędzia, utrzymanie wysokiej jakości i wydajności staje się coraz trudniejsze. Szczególnie jeśli popatrzymy przez pryzmat niewielkiego zespołu.

Czego nas uczy? 👨‍🏫

Chcielibyśmy mieć wszystko (funkcjonalności), jednak mamy ograniczone zasoby (czas i ludzi).

  • Wybierajmy najpopularniejszy stos, który ma największe wsparcie

    Priorytetem powinno być wybieranie stosu narzędziowego, który cieszy się największym wsparciem społeczności. To wpływa na szybkość znajdowania błędów i rozwijania nowych funkcji.

  • Nowe funkcje nie będą wchodziły tak szybko – trzeba być cierpliwym

    W przypadku wyboru popularnego stosu, wprowadzanie nowych funkcji może wymagać cierpliwości, ponieważ proces ten może być bardziej umiarkowany.

  • Czasem trzeba inwestować w swoje implementacje

    W niektórych przypadkach może być konieczne inwestowanie w własne implementacje, zwłaszcza jeśli istnieje potrzeba dostosowania narzędzi do specyficznych wymagań projektu.

  • Pomagajmy w rozwoju narzędzia, z którego korzystamy

    Takie wsparcie pozwoli nam aktywnie uczestniczyć w rozwoju i przyśpieszyć wprowadzanie nowych funkcji.

  • Obserwujmy rynek
    Dzięki temu będziemy mogli wcześniej reagować na ewentualne zawirowania lub niepokojące sygnały 😉




Nieumiarkowanie (Gula)

W Playwright możemy bardzo łatwo tworzyć testy.

  • Szybko okaże się, że bez wzorców projektowych będziemy mieli nieutrzymywane spaghetti code albo przerośnięte abstrakcje bez biznesowego uzasadnienia.
  • Różne koncepty połączone razem mogą tworzyć bardzo kompleksowe struktury, np. połączenie fixtures, projektów zależnych i hooks

Czego nas uczy? 👨‍🏫

  • Bądźmy skromni w tworzeniu struktur i konfiguracji – czasem prościej i czytelniej daje lepszą wartość, niż mega skomplikowane struktury.
  • Pamiętajmy nie tylko o sobie, ale innych/przyszłych użytkownikach frameworka. Często w projekcie osoby mają bardzo zróżnicowaną wiedzę na temat programowania – podciągnięcie ich wiedzy do ekspera/seniora może trochę zająć.
  • Czytaj swój kod i testy tak jak książkę dla dzieci, a nie wiersz po psychodelikach.



Lenistwo (Acedia)

Implementacja nowych funkcjonalności jest ultra ciekawym zadaniem i wyzwaniem. Nowe funkcje są też najbardziej pożądane przez użytkowników danego narzędzia 😉

Jednak wraz ze wzrostem poziomu skomplikowania projektu, do ultra ciekawych zadań dochodzą też te mniej ciekawsze – np. aktualizacji i utrzymanie dokumentacji. Bez niej ciężko odnaleźć się w nowych funkcjach i poznać sposoby prawidłowego korzystania z możliwości, jakie daje dane narzędzie.

  • Dokumentacja wymaga zaangażowania nie tylko twórców, np:
    • brak wyróżnionych zwracanych wartości z funkcji i metod
    • chaos z wyszukiwaniem danego tematu np. Route
    • brak dedykowanych miejsc poświęconych pojedynczemu zagadnieniu
TIP: Braki w dokumentacji mogą nie wynikać z lenistwa, a z niewielkiego zespołu, który ma na barkach bardzo wiele pracy.

A jak wygląda lenistwo po stronie użytkowników?

Często, gdy widzimy jakiś błąd, to nie zgłaszamy go twórcom. Mamy nadzieję, że zgłosi go ktoś inny…
A takie zgłoszenie, a następnie poprawka mogłaby poprawić komfort pracy i zadowolenie całej społeczności.

Czego nas uczy? 👨‍🏫

  • Proaktywnie wspieraj framework którego używasz.
  • Zgłaszaj bugi, pytaj, dziel się wiedzą.
  • Staraj się zadbać nie tylko o siebie, ale też o narzędzie, z którego korzystasz.
TIP: Nie wiesz jak zacząć? Rzuć okiem na nasze zgłoszenia błędów i usprawnień – inspiruj się i działaj! 😉




Gniew (Ira)

Podczas korzystania z danego narzędzia może pojawić się gniew u użytkowników.
Źródłem tych emocji może być brak niektórych ważnych funkcji, które okażą się być dla nas kluczowe.

Przykładowo, w Playwright obecnie nie ma następujących funkcji lub są w ograniczonym stopniu:

  • Mockowanie websocket: brak
  • Lepsze soft asercje dla projektów zależnych: brak
  • BDD: w ograniczonym stopniu

Dlatego warto pamiętać:

  • Playwright ma wiele słabych punktów, jak każdy framework
  • Gdy chcemy realizować kompleksowe działania, natrafiamy na brak takich możliwości
  • Wiele osób z tym samym problemem czeka od lat na poprawki lub nowe funkcje

Czego nas uczy? 👨‍🏫

  • Wiele osób z tym samym problemem czeka od lat na poprawki lub nowe funkcje – i to jest przypadłość wszystkich narzędzi.
  • Zgłaszaj bugi, pytaj, dziel się wiedzą i uczestnicz w dyskusjach o frameworku.
  • Keep calm, szukaj nowych rozwiązań i pomagaj w rozwoju narzędzia



Zazdrość (Invidia)

Zazdrość pojawia się u użytkowników.

Mam do przetestowania… Bierz Playwright!

Czasem możesz coś takiego usłyszeć. Może mieć to podłoże zazdrości.

Czemu miałbyś wybrać inne narzędzie gdy Playwright jest najlepszy?

Naszym zdaniem, nie jest to dobre podejście. Najważniejsze jest spełnienie określonego celu, a nie samo narzędzie.

  • Playwright posiada wiele ograniczeń:
    • Testy starszych wersji przeglądarek
    • Testy na urządzeniach mobilnych.
    • Testy wydajności.
  • Czekanie na niektóre nowe funkcjonalności może zająć lata (np. BDD)

Czego nas uczy? 👨‍🏫

Ostrożnie i krytycznie podchodź do porad, przy których nie zostały odkryte Twoje potrzeby.

  • Playwright nie nadaje się do wszystkich typów testów i nie spełni pewnych potrzeb.
  • Chłodno oceniaj możliwości narzędzia i pamiętaj, że spełnienie Twoich potrzeb jest najważniejsze.



Pożądanie (Luxuria)

  • Twórcy deklarują, że słuchają społeczności, ale często otrzymujemy milczenie.
  • Nie ma oficjalnej roadmapy, a decyzje zapadają w kuluarach i nie znamy ich motywacji.

Czego nas uczy? 👨‍🏫

  • Poznaj filozofię danego narzędzia i praktyki sugerowane przez twórców – zobacz czy spełniają Twoje potrzeby i czy nie potrzebujesz czegoś innego.
  • Uważaj na techniczne zbieractwo! Gdy pożądasz zbyt wiele, to nie będziesz w stanie tym sensownie zarządzać. Patrz krytycznie na to, czego potrzebujesz w danej chwili 😉
  • Bądź transparentny ze swoimi planami, aby osoby korzystające z Twoich rozwiązań czuły się pewnie

Podsumowanie

Masz obawę o przyszłość?

Przez monopol, niewielki zespół, duży produkt o ogromnej popularności?

Konkurencja nie śpi i będzie chciała zagarnąć trochę rynku dla siebie 😉

A wiele narzędzi, to wiele możliwości.

Zobacz przykład – Cypress zapożyczył sobie otwarty kod, który udostępnili twórcy Playwright, aby było możliwe testowanie przeglądarek opartych o WebKit (Launching Browsers WebKit (Experimental)) 😉

Ty również możesz podpatrywać różne rozwiązania – w innych projektach, w innych narzędziach. Wybierz to co jest Ci najbardziej obecnie potrzebne. Pamiętaj o swoim celu i dobieraj do niego adekwatne narzędzia 🙂

  • Bądź otwarty i dociekliwy

    Playwright, jako framework do testów, oferuje różnorodne formy i wzorce. Bądź otwarty na różnorodność możliwości i poznawaj nowe funkcje tego narzędzia. Jest wiele sposobów na osiągnięcie danego celu 🙂

  • Bądź czujny

    Playwright, podobnie jak każde narzędzie, ma swoje mocne i słabe strony. Jeśli napotkasz problemy, pamiętaj, że nie zawsze są one wynikiem Twojego błędu. Czasem są związane z samym frameworkiem, jego ograniczeniami i długiem technicznym. Bądź czujny i zawsze gotów na rozwiązywanie problemów ;).

  • Twórz kod prosty i zrozumiały

    Używaj jak najwięcej natywnych funkcji Playwright. Dzięki temu Twój kod będzie czytelniejszy i łatwiejszy do zrozumienia. Przy wykorzystaniu funkcji narzędzia możemy skoncentrować się bardziej na samych testach i przypadkach.

  • Partycypuj w rozwoju frameworka Playwright

    Twoje zaangażowanie w rozwój Playwright ma realny wpływ na społeczność. Zgłaszaj problemy, przesyłaj propozycje i bierz udział w procesie tworzenia. Dzięki temu framework będzie jeszcze lepszym narzędziem, które spełni różnorodne potrzeby zespołów..

  • Przekuj gniew w ciekawość

    Kiedy napotkasz trudności, nie wpadaj w złość. Zamiast tego, szukaj rozwiązań, dziel się swoim doświadczeniem z innymi i bądź zdeterminowany w dążeniu do osiągnięcia celu.

  • Inspiruj się

    Śledź postępy i trendy w świecie testów i narzędzi. Podpatruj jak inni rozwiązują różnorodne problemy i inspiruj się.

  • Testuj i daj testować innym

    Bądź aktywny w testowaniu własnego kodu, jednocześnie zachęcając innych do przeglądania i testowania Twojego kodu. Kwestionuj autorytety, w tym swoje własne, zadając pytania i poszukując najlepszych rozwiązań dostosowanych do konkretnego przypadku.

Linki

Poniżej znajdziesz rozszerzenie różnych materiałów: