👨‍🏫 Porady

Dlaczego tester powinien znać TypeScript?

Language
date
Sep 26, 2023
slug
typescript-i-testy-automatyczne
author
status
Public
tags
TypeScript
Automatyzacja
Playwright
summary
Wady i zalety wyboru języka TypeScript do testów automatycznych
type
Post
thumbnail
czemu-typescript-i-testy-automatyczne.jpg
updatedAt
Oct 5, 2023 10:46 AM
category
👨‍🏫 Porady
 
W tym wpisie odpowiemy na pytanie:
Dlaczego tester powinien znać TypeScript?
 
💡
Po dogłębnej analizie zalet TypeScript nasz kurs o Playwright stworzyliśmy właśnie w tym języku: 🔗https://jaktestowac.pl/playwright/ Jako mega bonus - przygotowaliśmy kursy JavaScript i TypeScript dla Testera 😉 aby wspierać naszych kursantów w nauce najbardziej przydatnych w testowaniu elementów obu tych języków.

Czym jest TypeScript?

notion image
 
TypeScript to język programowania stworzony przez Microsoft, który jest nadzbiorem JavaScript (w dużym uproszczeniu - jest on rozszerzeniem JS). Dodaje on typowanie do JavaScript, co pomaga w unikaniu błędów już na etapie pisania kodu.
TypeScript jest szeroko stosowany w projektach programistycznych, dzięki czytelności i kompatybilności z istniejącym kodem JavaScript oraz ze względu na minimalizację błędów w kodzie.
 
🤖 Co to oznacza dla testera?
TypeScript jest językiem, który na dobre rozgościł się także w testerskim świecie. Posiada wsparcie w najbardziej rozpoznawalnych na rynku narzędziach. Dlatego też jest coraz częściej wybierany do automatyzacji testów.
Wielu testerów jest jednak wciąż niepewnych czy warto zainwestować w naukę tego języka i z czym to się wiąże.

Popularność języka TypeScript

 
Prześledźmy popularność tego języka na różnych serwisach, platformach i narzędziach.
💡
TypeScript jest rozszerzeniem języka JavaScript. Gdy poznasz język JavaScript, to poznanie TypeScript to kwestia godzin 😉

Repozytorium GitHub

 
Zacznijmy od oficjalnego repozytorium na GitHub:
notion image
To repozytorium znajduje się w pierwszej 50-tce najpopularniejszych repozytoriów na świecie!
notion image
 

Popularność języków programowania wg. GitHub

 
Niedługo po wprowadzeniu TypeScript stał się jednym z najczęstszych wyborów do nowych projektów (powstał w 2014, dla porównania Python w 1994 czy Java w 1996).
notion image
 

Popularność języków programowania wg. StackOverflow

 
Przyjrzyjmy się, jak wyglądają wyniki badań, które prowadzi StackOverflow:
notion image
Tutaj też obserwujemy olbrzymią popularność TypeScript.
 
🤖 Co to oznacza dla testera?
Język o tak dużej popularności będzie posiadał duże wsparcie społeczności, wiele narzędzi i materiałów szkoleniowych w sieci. Bardzo duża popularność oznacza też wsparcie w przyszłości, co jest kluczowe w tworzeniu rozwiązań do automatyzacji i ich utrzymania.

Narzędzia

Frameworki do testów

Obecnie na rynku testów automatycznych największą popularnością w nowych projektach, cieszą się narzędzia które bazują na JavaScript/TypeScript. Mowa tu o Cypress i Playwrigth czy Puppeteer.
 
notion image
 
🤔
Playwright jest dostępny dla różnych języków (Java, C#, Python, JavaScript, TypeScript - 🔗https://playwright.dev/docs/languages) Dlaczego powinienem wybrać akurat TypeScript?
 
Sami twórcy frameworka Playwright sugerują TypeScript. Playwright jest domyślnie rozwijany dla języków JavaScript/TypeScript, w nich posiada najwięcej funkcji i tam pojawiają się wszelkie usprawnienia jako pierwsze.
 
notion image
 
💡
Pisaliśmy o tym więcej w poście: 🔗https://playwright.info/dlaczego-playwright-typescript
 
🤖 Co to oznacza dla testera?
Wybór TypeScript przez twórców wspomnianych narzędzi nie jest przypadkiem. Warto szukać w sieci informacji związanych z takimi decyzjami. Można takie argumenty rozważyć przy wyborze języka do automatyzacji testów.
 

Visual Studio Code

notion image
Jest to jedno z najpopularniejszych na świecie narzędzi (IDE) do rozwijania kodu.
notion image
 
VSCode doskonale integruje się i wspiera TypeScript.
Nie bez znaczenia jest fakt, że powstaje w bardzo podobnym modelu jak TypeScript i możemy mieć realny wpływ na rozwój tego narzędzia. W jaki sposób? Zgłaszając błędy, usprawnienia i wystawiając Pull Requesty do głównego repozytorium😉
 
🤖 Co to oznacza dla testera?
Wybór VSCode do nowoczesnej automatyzacji z TypeScript to doskonale połączenie. Biorąc pod uwagę darmowy dostęp, liczbę pluginów i wsparcie globalnej społeczności jest to idealny stos do rozpoczęcia i rozwijania projektu.
Przykładem może być Playwright Test for VSCode (🔗https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright). Wtyczka wspierająca uruchamianie, debugowanie i nagrywanie testów w VSCode. Wspomniana wtyczka, VSCode i Playwright w TypeScript prawdziwą maszynę do automatów 😃
notion image
 

✅ Zalety TypeScript

 

✅ Silne typowanie

 
TypeScript powstał jako odpowiedź na brak restrykcji w języku JavaScript. Dzięki TypeScript możemy pisać bezpieczny kod oparty o sprawdzone struktury dobrze znane z języków Java czy C#.
Jednocześnie możemy korzystać z zalet elastyczności JavaScript.
 
🤖 Co to oznacza dla testera?
W automatyzacji tworzymy np. modele naszych danych i możemy być pewni, że dane funkcje będą wykorzystywać tylko zadaną strukturę. Minimalizujemy przez to ilość błędów a kod zyskuje na niezawodności.
Przykład kodu z zastosowaniem interfejsów i reguł związanych ze zwracanymi typami w frameworku do testów automatycznych:
notion image
 

✅ Wykorzystanie globalnej dominacji JavaScript

 
JavaScript to potężna społeczność, najpopularniejszy język na świecie wg GitHub czy StackOverflow. TypeScript to ewolucja języka JavaScript. W uproszczeniu - TypeScript jest rozszerzeniem języka JavaScript, do którego dodaje wiele nowych funkcji (typy, interfejsy, enumy etc.).
 
notion image
 
Dlatego w TypeScript możemy wykorzystać olbrzymią liczbę bibliotek i narzędzi napisanych w języku JavaScript.
 
🤖 Co to oznacza dla testera?
W automatyzacji często potrzebujemy dodatkowych narzędzi np. do czytania/zapisu plików czy też rozszerzeń do frameworków. Możemy korzystać ze wspaniałej liczby stworzonych rozwiązań i elastycznie integrować je w naszych projektach do automatyzacji testów.
 

✅ TypeScript to pierwszy wybór do nowych projektów front-end, a także back-end

 
TypeScript to już standard przy tworzeniu wydajnego front-endu i główny język najpopularniejszych na świecie frameworków do front-end. Często też jest wykorzystywany do aplikacji back-endowych, szczególnie opartych o narzędzie Node.js.
 
🤖 Co to oznacza dla testera?
W świecie automatyzacji często testujemy na wielu warstwach, zarówno GUI jak i API. Posiadając dobrą znajomość TypeScript możemy rozmawiać językiem deweloperów. Dzięki temu:
  • cały zespół może wesprzeć testerów w pisaniu testów automatycznych
  • można wspólnie rozwijać kod testów i aplikacji współdzieląc dobre praktyki i standardy
  • możemy używać współdzielonego kodu do uruchamiania testów w środowisku Ciągłej Integracji (CI/CD)
  • możemy zwiększyć poznanie działania nowoczesnego front-endu i jego elementów
 

❌ Wyzwania w języku TypeScript

 
TypeScript nie jest idealnym językiem. W trakcie jego nauki i podczas jego wykorzystania natkniemy się na kilka wyzwań.
 

❌ TypeScript wymaga nauki

 
Aby wejść do świata TypeScript należy zainwestować w kompetencje. Niezbędne może okazać się poznanie fundamentów JavaScript, aby spokojnie zaznajomić się z filozofią TypeScript.
 
Podstawowe kompetencje z JavaScript w ekosystemie nowoczesnych testów (szczególnie GUI) to wręcz standard. Inwestycja w naukę JS, jeśli chodzi o testy automatyczne front-end (w Selenium nie raz musimy wstrzykiwać kod JavaScript) to konieczność. TypeScript jest potem miłym dodatkiem.
 
Wiemy jak trudno wybrać materiały do nauki danego języka. JS i TS to potężne narzędzia i trzeba świadomie dobierać jakie obszary tych języków poznać, aby skutecznie wykorzystać je w automatyzacji testów. Dlatego przygotowaliśmy dedykowane rozwiązania związane z nauką JavaScript i TypeScript dla testerów dostępne między innymi w Programie Automatyzacji z Playwright.
notion image
 
 
🤖 Co to oznacza dla testera?
Aby poznać TypeScript trzeba dobrze opracować plan nauki związany z brakującymi kompetencjami (JavaScript) i obszarami do poznania w TypeScript względem potrzeb związanych z automatyzacją testów.
 

❌ Trudność w debugowaniu

 
Asynchroniczna natura JS/TS nie jest łatwa do zrozumienia. Debugowanie może także stanowić wyzwanie i wymaga pewnego przyzwyczajenia do specyficznych obiektów, z którymi się zetkniemy.
Zdecydowanie lepiej wypadają tu języki synchroniczne jak Java czy Python.
 
Jednak asynchroniczność to także mega zaleta. Dzięki temu w automatyzacji testów możemy łatwo obsłużyć wiele aspektów na raz, np.:
  • jednoczesne sprawdzenie danych na UI i nasłuchiwanie odpowiedzi z API
  • wykonywanie testów na GUI i jednoczesne zbieranie danych z konsoli
  • czy uruchomić testy równolegle (bez żadnych dodatkowych narzędzi czy bibliotek!)😉
notion image
 
🤖 Co to oznacza dla testera?
Asynchroniczność to finalnie sprzymierzeniec w tworzeniu niezawodnego frameworka do testów automatycznych. Aby ją opanować należy przeznaczyć czas na zrozumienie działania asynchronicznego kodu oraz sposobów debugowania testów w takim środowisku.
 

❌ Uzależnienie się od ekosystemu jednego dostawcy

 
Obecnie TypeScript, VSCode i Playwright są rozwijane przez Microsoft. Mimo iż są one dostępne za darmo, to obawy może budzić przywiązanie do jednego dostawcy i presję na wykorzystanie jego usług (np. chmury Azure czy subskrypcji GitHub).
 
notion image
Mamy świadomość takiej sytuacji i trzeba się liczyć z ewentualnymi zmianami w przyszłości związanymi z TypeScript oraz powiązanymi narzędziami.
Warto także wspomnieć, że oficjalne stanowisko Microsoft jest takie, że te narzędzia mają pozostać otwarte i bezpłatne.

Jak zacząć z TypeScript?

 
Aby skutecznie uczyć się TypeScript warto najpierw poznać podstawy JavaScript.
notion image
W przypadku testerów sprawa jest o tyle skomplikowana, że bardzo łatwo wpaść na materiały, które kierują typowo do rozwoju w kierunku nauki tworzenia front-end lub back-end. O ile ta wiedza jest ciekawa, to nie będzie aż tak bardzo przydatna przy nauce automatyzacji testów czy samego TypeScript.
 
Sugerujemy wybór najpopularniejszych kursów dla testerów, w których jest uwzględniona nauka JavaScript. Dzięki temu, tester może uniknąć wielu godzin spędzonych nad mało przydatnymi materiałami. Oczywiście istnieje wiele materiałów w sieci, ale należy ostrożnie dobierać treści jakie chcemy przyswoić.
💡
Możesz zapoznać się z agendą naszego kursu o JavaScript i przystąpić do jednego z Programów w ramach których jest on oferowany😉 Cały kurs znajdziesz pod adresem: 🔗https://jaktestowac.pl/js
 
Jeśli nie masz możliwości, aby przystąpić do Programu, możesz spróbować samodzielnie douczyć się wymienionych konceptów.
 
Podobna droga czeka testera przy TypeScript. Tutaj możemy polecić dokumentację Microsoft: 🔗https://learn.microsoft.com/en-us/training/paths/build-javascript-applications-typescript/
 
💡
Tu też stworzyliśmy dedykowane dla testerów materiały, gdyż wiemy czego wymagamy od nich w ramach lekcji związanych z automatyzacją. Cały kurs znajdziesz pod adresem: 🔗https://jaktestowac.pl/ts
 
I tak samo jak przy JavaScript, jeśli nie masz możliwości przystąpienia - sprawdź agendę i odszukaj samodzielnie kursy lub materiały z tych tematów.
 
Na koniec, najważniejsza jest praktyka😉
Czyli dla testera to zaprojektowanie i budowa pełnego frameworka do testów automatycznych w oparciu o TypeScript. Jeśli nie wiesz jak zacząć z takim tematem, to wystartujesz z naszym darmowym kursem na YouTube Praktyczne wprowadzenie do testów automatycznych z Playwright.
 

Podsumowanie

 
Naszym zdaniem nie ma języka idealnego, który spełniłby wszystkie potrzeby i przypadki użycia. Przy nauce danego języka musisz uwzględnić potrzeby swoje oraz projektu.
 
Uważamy, że warto zainwestować w naukę TypeScript. Dla testera to zdecydowanie furtka do testowania w nowoczesnych ekosystemach. Doświadczenie z TypeScript otwiera nowe możliwości i zwiększy atrakcyjność na wymagającym rynku IT 😉
 
Tutaj szczególną uwagę należy poświęcić najczęściej wybieranemu narzędziu w nowych projektach do testów automatycznych. Playwright otwarcie wspiera i rekomenduje TypeScript oraz w tym języku jest najczęściej wykorzystywany. Oznacza to, że z dużą dozą prawdopodobieństwa, zapotrzebowanie na wykwalifikowanych w TypeScript testerów będzie sukcesywnie rosnąć.
 
notion image
 

Bonus

Czy ktoś rezygnuje świadomie z używania TypeScript? Oczywiście są takie przypadki i jeśli chcesz poczytać o tym co myśli społeczność rozwijająca oprogramowanie możesz zagłębić się te ten bardzo ciekawy wątek: https://github.com/hotwired/turbo/pull/971