O tym, dlaczego znajomość SQLa powinna być częścią warsztatu testera oprogramowania.

Czy testerzy używają SQL w swojej codziennej pracy? Odpowiedź brzmi: to zależy. Zależy oczywiście od rodzaju projektu, ale także od potrzeb. Istnieją projekty, w których testerzy w większości wykorzystują właśnie SQL, ale są też takie, do których nie potrzeba wiedzy na temat SQLa albo wymogi bezpieczeństwa nie pozwalają na dostęp do bazy danych. Zdarza się również tak, że tester nie będzie miał dostępu do baz danych, ponieważ najzwyczajniej w świecie taka jest polityka firmy. Niemniej jednak najczęściej wymaganym językiem programowania dla testerów, którzy zajmują się weryfikacją oprogramowania jest właśnie SQL. Obecnie większość ofert na rynku pracy, dotyczących stanowisk testerskich wymaga znajomości baz danych. Zastanówmy się teraz, do czego znajomość baz danych może przydać się testerowi.

Dlaczego warto, by tester znał język SQL?

Spróbujmy wyobrazić sobie sytuację, w której tester jest osobą początkującą na rynku pracy. Chciałby wejść do świata IT, stawia swoje pierwsze kroki jako tester. Znajomość baz danych oraz SQLa zdecydowanie zwiększy możliwość zatrudnienia na danym stanowisku oraz pozycję na rynku pracy w ogóle. Wiedza na temat baz danych to również szansa na lepszy rezultat rozmowy kwalifikacyjnej. Rekruterzy z pewnością przychylnie podejmą do kandydata, który posiada wiedzę przydatną na stanowisku, o które się ubiega. Na samym początku wspomniałem, że obecnie w ofertach pracy dla testerów bardzo często znajdziemy wymóg znajomości SQLa. Dlaczego? Ponieważ pracodawca chce sprawdzić, czy tester ma umiejętności techniczne, które na tym stanowisku się przydają. Testerzy bez studiów technicznych często nie mają podejścia logicznego, technicznego do pracy. Poznanie podstaw SQLa może w tym pomóc.

Z drugiej strony, kiedy tester otrzymał już wymarzoną pracę i spełnia się w swoim zawodzie, wiedza na temat baz danych może zapewnić mu awans, a co za tym idzie podwyżkę. Pracodawcy doceniają tych, którzy poszerzają swoje kompetencje i starają się rozwijać. Dodatkowo, dzięki znajomości SQLa tester ma szansę na dołączenie do projektu, w którym chciał wziąć udział, a który opiera się na bazach danych. Zdecydowanie wniesie wartość dodaną do takiego projektu.

Ostatnim i być może najważniejszym czynnikiem będzie zrozumienie. Mam świadomość, że są ludzie, którzy w pracy zachowują się bardzo automatycznie, zwłaszcza jeśli jest w niej dużo powtarzalnych czynności, które każdego dnia muszą wykonać. W pracy testera zrozumienie to klucz do efektywnego działania. Znajomość baz danych oraz SQLa jest w stanie pomóc testerowi zrozumieć, co on tak naprawdę robi, jaki skrypt właśnie uruchomił, w jaki sposób może go zmodyfikować itp. Jest to niezwykle istotne również z punktu widzenia pracodawcy – jeśli tester będzie miał świadomość swoich działań, będzie wiedział co, dlaczego i po co, pracodawca będzie miał do niego zaufanie. Zaufanie z kolei może przełożyć się na awans oraz podwyżkę, o których mówiliśmy wcześniej.

W jakich sytuacjach tester może wykorzystać SQLa?

Pora na konkrety! Chciałbym teraz wskazać konkretne sytuacje oraz czynności, w których tester może wykorzystać bazy danych. Po pierwsze tester wykorzysta wiedzę na temat bazy danych do tego, aby w ogóle uzyskać dostęp do tej bazy, ale także po to, by dane móc przechowywać. Znajomość SQLa pomoże mu również przy modyfikowaniu danych do testów, pobieraniu danych testowych, ale także przy wyszukiwaniu informacji (odczytywaniu danych z bazy). Są to dość podstawowe czynności w codziennej pracy testera, jednak moim zdaniem bez wiedzy na temat baz danych trwałyby po prostu znacznie dłużej.

Tester, pracując z klientem, dzięki znajomości SQLa jest w stanie wdrożyć aplikację, uruchomić skrypt, który przygotowuje do wdrożenia. Taka wiedza pozwoli także na weryfikację bazy danych – dzięki temu tester jest w stanie wychwycić potencjalne zgrzyty między bazą danych, a aplikacją która z niej korzysta. To pozwoli na szybkie znalezienie błędów i zgłoszenie ich do poprawy. Tester, dzięki wiedzy na temat SQLa sprawdzi, czy coś dzieje się po stronie bazy danych, czy po stronie aplikacji. Później jedynie zgłasza programiście, w którym miejscu znalazł błąd.

Testerzy z pomocą SQLa wykonają również testy wydajności – sprawdzą, jak działa baza danych, gdy jest ona bardzo mocno obciążona – do tego wiedza na temat SQL przyda się jak znalazł. Oprócz tego, dzięki znajomości baz danych testerzy mogą wykonać testy bezpieczeństwa, testy integracji z bazą danych. Dodatkowo będą w stanie zweryfikować spójność bazy danych.

Jak wykorzystać znajomość baz danych w codziennej pracy?

Tester ma naprawdę sporo możliwości, by wykorzystać wiedzę na temat baz danych w praktyce. Zacznijmy od wykonywania prostych, codziennych zapytań, które pozwolą sprawdzić dane, np. PESEL klienta. Idąc dalej, tester dzięki znajomości SQLa jest w stanie zmodyfikować dane, zaktualizować daną wartość (np. zmiana bramki przy płatnościach), jak również skomunikować się z innym systemem.

W codziennej pracy na pewno przyda się także testowanie raportów i prześledzenie bazy danych. Czasem łatwiej jest przetestować jeden krok niż cały algorytm. Sytuacja wygląda podobnie w przypadku „podglądania”, w jaki sposób działają algorytmy. Znalezienie kawałka tekstu, który spełnia jeden warunek jest naprawdę trudne, dlatego wyłapanie błędu poprzez podglądanie algorytmów jest istotne i pomocne.

Znając SQLa, tester jest w stanie przygotować dane do testów, działać na podstawie wcześniej stworzonego skryptu, co jest znacznie szybsze niż integracja z systemem. Wiąże się to także z automatyzacją działań – czasami wystarczy jedynie przechwycenie zapytań, które są wykonywane na bazie i zapisanie do pliku. W ten sposób system jest gotowy do testu.

Jaka jest alternatywa dla SQLa w pracy testera?

Na samym początku wspomniałem o tym, że zdarzają się sytuacje, w których tester nie wykorzystuje baz danych w codziennej pracy. Dla znajomości SQLa istnieje alternatywa: ORM, czyli mapowanie obiektowo-relacyjne. Są to narzędzia, które same automatycznie generują zapytania SQLowe. ORM znacznie uprości kod źródłowy, a w związku z tym, że wszystko dzieje się automatycznie, zyskasz sporo czasu. Jednak moim zdaniem zadziała dobrze i efektywnie tylko wtedy, jeśli nie mamy bardzo dużo danych do przetworzenia. Jeśli jest ich naprawdę dużo, ORM zwyczajnie się nie sprawdzi.

Od czego zacząć?

Zapytacie, jak zacząć przygodę z SQLem? Na samym początku najważniejsza jest duża ilość ćwiczeń oraz poznanie teorii. Potem zaczniecie pisać proste selecty, dowiecie się, jak zainstalować bazę danych, stopniowo przechodząc do trudniejszych ćwiczeń. Wszystko krok po kroku, byle do celu. SQL nie ma wysokiego progu wejścia, tak naprawdę po kilkunastogodzinnym szkoleniu będziecie w stanie wdrożyć wiedzę w codziennej pracy i przede wszystkim efektywnie z tej wiedzy korzystać. Pamiętajcie również, że już na samym początku warto wyrobić sobie dobre praktyki: dobrze napisane zapytanie to zapytanie czytelne.

Odpowiedzi na to, do czego znajomość baz danych może przydać się testerowi, udzieliłem aż nadto, a mam wrażenie, że to nawet nie połowa przykładów. Pamiętajcie, że SQL to język, którego naprawdę szybko można się nauczyć, a korzyści płynących z tej wiedzy jest wiele. Jeśli jesteś testerem i jeszcze nie wiesz, co to bazy danych – przemyśl, czy nie warto tego zmienić. Ostatecznie celem jest wydajna praca i efektywne wykorzystywanie poznanych narzędzi na co dzień, a do tego dążymy wszyscy.