Sytuacja kobiet w IT w 2024 roku
14.04.20174 min
XSolve (Boldare now)

XSolve Sp. z o.o.XSolve (Boldare now)

QA Engineer - czyli tester do zadań specjalnych

QA Engineer - czyli tester do zadań specjalnych

Historycznie podchodząc do sprawy, można rozróżnić pojęcia Software Quality Control oraz Software Quality Assurance. Software Quality Control oznaczało testowanie oprogramowania w celu wykrycia już istniejących błędów. Software Quality Assurance oznaczało, przede wszystkim, zapobieganie ich powstawaniu poprzez testowanie i udoskonalanie samego procesu wytwarzania oprogramowania. Obecnie jednak granice te się zacierają i Software Quality Assurance oznacza szeroko pojęte zapewnienie jakości oprogramowania, a osoby za nie odpowiedzialne nazywane są w skrócie QA lub Software QA. 

Kim jest QA Engineer?

Można powiedzieć, że jest to osoba, która zajmuje się zapewnieniem jakości oprogramowania w sposób inżynierski, czyli poprzez wykorzystanie do tego wiedzy technicznej. Manualne testowanie oprogramowania, nie licząc mniejszych, prostych projektów, jest najczęściej nieoptymalne - zarówno jeżeli chodzi o czas, jak i koszt. QA Engineer automatyzuje powtarzalne, często wykonywane czynności. 

Dlaczego warto automatyzować testy?

Jednym z najczęściej automatyzowanych obszarów są testy regresji, które mają na celu przede wszystkim zagwarantowanie, że już istniejące funkcjonalności działają poprawnie oraz nie pojawiły się w nich błędy podczas pracy nad innymi, z pozoru niezależnymi, funkcjonalnościami. Automatyzacja testów funkcjonalnych stron, czy aplikacji powoduje, że testy regresji zamiast być manualnie wykonywane przez kilka godzin lub dni, mogą zostać wykonane w kilka, kilkanaście minut. W przypadku integracji z serwerem Continuous Integration umożliwiają one bardzo szybkie znalezienie defektów, przez co zarówno koszt jak i czas ich naprawy jest znacznie niższy niż w przypadku wykrycia ich później w procesie developmentu. Mniejsza ilość czasu potrzebnego na testy regresji oznacza mniej czasu potrzebnego na testy po code-freeze, przez co mamy więcej czasu na sam rozwój oprogramowania.

Automatyzacja testów nie ogranicza się do samego ich wykonywania. Automatyzacja procesu tworzenia danych testowych powoduje, że powstają one dużo szybciej oraz możliwe jest wygenerowanie znacznie większej ich ilości. Skryptowanie często wykonywanych zadań systemowych powoduje, że sama praca jest wygodniejsza oraz bardziej wydajna.

Mniej, więcej czy inaczej niż developer?

QA Engineer, odpowiedzialny głównie za automatyzację, nazywany jest również czasem QA Automation Engineer. Zarówno praca QA Engineera, jak i Developerów polega głównie na programowaniu. Czym różni się więc QA Automation Engineer od Software Developerów? Software Developer najczęściej ukierunkowany jest na konkretną technologię, jak JS, Java, czy PHP. Jego celem jest jak najlepsza znajomość „swojej” technologii. QA Engineer natomiast ma na celu wykonanie konkretnego zadania przy użyciu technologii, które w kontekście konkretnego projektu będą optymalne. 

QA Engineer, podobnie jak Developer również specjalizuje się w określonych technologiach, ale ważna jest tu znajomość wielu języków na co najmniej podstawowym poziomie i umiejętność bardzo szybkiego wdrożenia się do nowych.

W przypadku QAE, ważniejsza od bardzo dobrej znajomości danego języka jest wiedza typowo testerska, a może przede wszystkim, doświadczenie w automatyzacji testów. Nawet dobry Developer najczęściej nie będzie w stanie napisać dobrych testów automatycznych, ponieważ jest to całkiem inne podejście do programowania. Developer patrzy z punktu widzenia tworzenia aplikacji, implementacji określonych funkcjonalności programu. Praca QA to natomiast staranie się, by wymagania te były spełnione oraz zagwarantowanie, że funkcjonalności działają poprawnie.

Poza tym potrzebny jest tu całkowicie inny zakres wiedzy. Ważniejsza od znajomości danego języka jest architektura testów, ponieważ umożliwia ona zapewnienie czytelności testów, polepsza utrzymywalność. Jeszcze ważniejsze jest takie napisanie testów, aby były one stabilne. Losowe failowanie testów i przez to częste czerwone buildy na CI mogą spowodować brak zaufania do nich.

Jak przedszkolak ze śrubokrętem?

Dlaczego ogólnie ktoś chciałby być QA Engineer? Dlaczego ktoś chciałby pisać testy automatyczne do aplikacji, zamiast pisać właściwą aplikację? Niektórzy po prostu lubią psuć! Sprawia im radość znalezienie edge-case’ów, których często nie przewidzą nawet bardzo dobrzy programiści. Ludzie zawsze popełniają błędy, nigdy też nie znajdzie się wszystkich. QA dba o to, żeby jakość aplikacji była jak najlepsza, a w szczególności aby było jak najmniej niewykrytych błędów w najważniejszych, z punktu widzenia użytkownika, funkcjonalnościach .

Sama automatyzacja testów jest trochę bardziej powtarzalna niż pisanie właściwej aplikacji, ale różnorodność używanych technologii powoduje, że cały czas coś się dzieje. Podobnie w przypadku samych zadań, które mogą iść również w kierunkach DevOPSowych, jak przygotowanie i zarządzanie serwerem CI, czy przygotowanie środowisk testowych. 

W zespołach IT najważniejszym celem jest wykonanie określonych zadań jako zespół, przez co bardzo ważna jest współpraca wszystkich członków zespołu, pomaganie sobie nawzajem w przypadku problemów, czy wymiana wiedzy. Rzeczą naturalną jest jednak dzielenie się zespołu na nieformalne grupy osób, najczęściej powiązane z poszczególnymi technologiami. W organizacjach o zdrowym podejściu do pracy, zwykle uwidacznia się to na poziomie swobodnych żartów. Pewnym plusem w codziennej pracy testera jest również to, że Backend Developerzy żartują z Frontend Developerów i odwrotnie, QA może natomiast żartować z jednych i drugich.


O autorze:
Tomasz Konieczny pracuje jako Senior QA Engineer w XSolve Software House. Tomasz jest QA od kwietnia 2014 i głównie zajmuje się automatyzacją testów funkcjonalnych. Prywatnie użytkownik Linuksa interesujący się Bitcoinem, Blockchainem, szeroko pojętym wolnym oprogramowaniem i technologią. Z zainteresowań mniej „wirtualnych" pasjonuje go jazda na motocyklu oraz na rowerze, lubi także książki i głośną muzykę (głównie Death/Black metal).

<p>Loading...</p>