Wielu adeptów testowania oprogramowania często szuka informacji o tym, jakie umiejętności powinni posiadać i jakie technologie znać, by stać się lepszymi specjalistami, lub po prostu dostać pierwszą pracę w roli testera. Lista wymagań jest dość szeroka i podlega ciągłym aktualizacjom, stąd niełatwo wybrać dla siebie konkretną i sensowną ścieżkę nauki. W poniższym artykule postarałem się spisać to, co według mnie powinien potrafić początkujący tester oprogramowania i jakie cechy powinien u siebie rozwijać.
Szukam pierwszej pracy jako tester oprogramowania, lub od niedawna pracuję w branży. Czego dokładnie powinienem się nauczyć?
Znajomość podstawowych pojęć związanych z testowaniem oprogramowania
Jest to oczywiste, ale nie można tego pominąć. Tester musi znać terminologię związaną z testowaniem, taką jak przypadki testowe, defekty, raporty błędów, środowisko testowe itp. Należy znać rodzaje i typy testów, czyli na przykład: czym różnią się testy regresji od smoke testów, co to są testy integracyjne, akceptacyjne, systemowe. Warto wiedzieć także, czym się różnią testy czarnoskrzynkowe od białoskrzynkowych, na czym polegają testy eksploracyjne, a także jakie obszary obejmują testy niefunkcjonalne.
Podobnych zagadnień jest o wiele więcej i trzeba znać możliwie jak najwięcej z nich. Kompendium wiedzy na temat teorii testowania oprogramowania jest sylabus ISTQB. Nawet jeśli nie planujesz certyfikacji, czyli zdawania egzaminu ISTQB, warto spojrzeć w sylabus lub jego opracowania.
Znajomość technik testowania
W skrócie – tworzenie scenariuszy i przypadków testowych, wykonywanie testów, opisywanie błędów, analiza wyników testów. Jako tester musisz być w stanie zapoznać się z dokumentacją dotyczącą danej funkcjonalności, przygotować dla niej scenariusze testowe, wykonać testy i w przypadku znalezienia błędów, poprawnie je opisać, wskazując wyczerpujące dane dotyczące danego defektu. Jeśli zajdzie taka potrzeba, musisz być w stanie przygotować raport z testów.
Kluczowa tutaj jest bez wątpienia umiejętność pisania przypadków testowych i opisywania znalezionych błędów – warto zadbać o swój warsztat w tym zakresie.
Obsługa baz danych i znajomość języka SQL
Bardzo często w trakcie pracy projektowej będziesz poruszał się (lub poruszała się) po bazie danych aplikacji którą testujesz, by podejrzeć dane i sprawdzić ich poprawność, lub nawet je zmodyfikować. Tester powinien zrozumieć, co to są bazy danych, ich zasady działania, a także w podstawowym stopniu znać język zapytań SQL, który jest używany do komunikacji z bazą danych.
Abstrachując od pracy projektowej, na większości rozmów rekrutacyjnych gwarantowane są pytania z SQL 🙂
Czego dokładnie należy się tutaj nauczyć? Według mnie, powinien wystarczyć zakres wskazany w poniższej liście:
- Tworzenie zapytań SELECT do pobierania danych z bazy danych.
- Operatory logiczne i porównywania w zapytaniach SQL.
- Sortowanie wyników zapytań przy użyciu ORDER BY, filtry i warunki w klauzuli WHERE.
- Grupowanie danych i obliczenia za pomocą GROUP BY i funkcji agregujących (np. SUM, AVG, COUNT).
- Łączenie tabel w zapytaniach za pomocą JOIN.
- Tworzenie i modyfikacja danych: INSERT, UPDATE, DELETE.
- Indeksy i klucze: zrozumienie roli indeksów w bazach danych.
- Definiowanie i zarządzanie kluczami głównymi (PRIMARY KEY) i kluczami obcymi (FOREIGN KEY).
- Transakcje: zrozumienie transakcji i ich znaczenia w kontekście baz danych.
Zrozumienie cyklu wytwarzania oprogramowania
Istnieje pojęcie cyklu życia oprogramowania (ang. SDLC – Software Development Life Cycle). Dobrze jest wiedzieć i rozumieć jego fazy – testowanie jest jedną z nich.
Zrozumienie podstaw protokołu HTTP
Tester powinien znać podstawy komunikacji HTTP, czyli między innymi najpopularniejsze metody (GET, POST, PUT, DELETE), nagłówki i statusy odpowiedzi – najlepiej wiedzieć za co odpowiada każda z grup statusów (1xx, 2xx, 3xx, 4xx i 5xx).
Na naszym blogu dostępny jest darmowy kurs podstaw HTTP
Testy API
Umiejętność testowania API jest kluczowa dla testera oprogramowania z kilku powodów. Po pierwsze, w erze architektury mikrousługowej i chmurowej, aplikacje często komunikują się poprzez interfejsy programowania aplikacji (czyli właśnie API), co wymaga skutecznego testowania tych interfejsów. Po drugie, umiejętność testowania API pozwala na automatyzację testów, co z kolei przyczynia się do szybkiego dostarczania informacji zwrotnej dotyczącej jakości oprogramowania.
Narzędzie najczęściej wykorzystywane do testowania API to Postman. Dobrze jest znać Postmana co najmniej na tyle, by tworzyć i zarządzać kolekcjami, tworzyć żądania API, a także analizować ich odpowiedzi.
Kompetencje miękkie!
Branża IT głównie kojarzy się z umiejętnościami „twardymi”, jednak umiejętności miękkie są równie potrzebne i w znaczny sposób definiują dobrego specjalistę QA. W pracy zespołowej, a szczególnie na stanowisku testerskim które nota bene wymaga wskazywania kolegom i koleżankom „ich błędów”, bardzo ważne jest to jak się komunikujemy i jak wyrażamy swoje opinie.
Nie jest to łatwe. Tester powinien swobodnie komunikować się z zespołem i klientem, jego/jej wypowiedzi powinny być konkretne i wyważone. Ceni się proaktywność i asertywność, lecz także skłonność do kompromisów, ponieważ nie zawsze znaleziony przez nas błąd będzie naprawiony w taki sposób, lub tak szybko jak tego chcemy. Tester oprogramowania musi być odpowiedzialnym graczem zespołowym, potrafiącym krytycznie myśleć.
Język angielski
Przyjęło się, że j. angielski warto znać na poziomie co najmniej B1. Dlaczego? Głównie po to, by potrafić dogadać się w projekcie dla zagranicznego klienta, ale także podczas pracy w angielskojęzycznym zespole. Poza tym, może się zdarzyć, że będziemy mieli do czynienia np. z dokumentacją w tym języku, lub zasób wiedzy którego będziemy poszukiwać, będzie dostępny tylko w tym języku. O komunikatywny poziom znajomości angielskiego naprawdę warto zadbać – to zaprocentuje prędzej czy później.
To tyle jeśli chodzi o fundamentalne umiejętności testerskie – zachęcam do podzielenia się swoimi uwagami dotyczącymi tego tematu.