Patrząc na motocykl Harley-Davidson, śmiało można stwierdzić, że pewne rzeczy nie muszą się zmieniać. Klasyczna dusza harleya z biegiem czasu tylko zyskuje. Świat jednak nie zważa na takie wyjątki i stale prze naprzód. Zwłaszcza z perspektywy branży IT. Żyjemy wśród ciągłej zmiany, a środowisko IT to prawdziwa dżungla, w której pojawiają się co rusz nowe technologie – jedne szybko znikają, inne przez pewien czas wyznaczają trendy. Z mojego punktu widzenia nasuwa się więc pytanie: w jaki sposób zachować jakość i testować w takich warunkach? IoT, Big Data, wyrafinowane systemy do zarządzania – to tak naprawdę szereg połączonych technologii, stanowiących jeden produkt, przez co wymykają się klasycznemu podejściu do testowania. Niestety – żeby przetrwać w dżungli IT, trzeba dołączyć do biegu.

Więc oto mamy rzeczywistość, w której wciąż pojawiają się nowe technologie, trendy, a oprogramowanie staje się coraz bardziej skomplikowane. To już samo w sobie powoduje, że praca testera jest bardzo wymagająca. A jeżeli dodamy do tego jeszcze wszechobecne agilowe podejście, w którym tester tworzy produkt wraz z resztą zespołu, czyli musi posiadać jeszcze dosyć szerokie umiejętności programistyczne (a raczej chcemy by je posiadał), robi się naprawdę ciężko.

Nie oszukujmy się przy tym – rola testerów oprogramowania jest wciąż podważana. Pomimo starań budowania świadomości dotyczącej istoty przeprowadzania testów, wciąż zdarzają się firmy, które najchętniej uniknęłyby kosztów z nimi związanych. Niektórym osobom może się to wydawać „prehistorycznym” podejściem, jednak nadal spotkać się można z opiniami typu:

  • testy nie przynoszą wymiernych korzyści,
  • testy powodują, że programiści staja się leniwi,
  • po co testy, skoro deweloper powinien programować wszystko tak, jak należy?

Jest to oczywiście podejście dość krótkowzroczne i tak naprawdę da się te argumenty sprowadzić do dwóch aspektów, mianowicie do pieniędzy i chęci ograniczenia kosztów. Dodatkowo niestety zdarza się, że sam proces testowania skonstruowany jest tak, że rzeczywiście nie dostarcza wystarczającej wartości dodanej do projektu. I niekoniecznie musi to być wina samych testerów.

Testy – jak to wygląda w praktyce

Weźmy na celownik klasyczny projekt. Mamy pewne potrzeby względem wykonywania testów w danym projekcie, co więcej nie są one stałe, bardzo często mają różnorodny charakter i zmieniają się w czasie. Oczywiście już na początku projektu staramy się różne ewentualności przewidzieć i takimi informacjami odpowiednio zarządzać, jednak musimy zawsze zakładać, że prędzej czy później powstanie dług, wynikający z prostego rozejścia się możliwości w stosunku do wynikających potrzeb.

Przyjmijmy, że do naszego klasycznego projektu delegujemy dwie osoby. Co to oznacza? To, że mamy w nim dwóch testerów, którzy mają określoną ilość czasu, określoną wiedzę i doświadczenie. Nawet jeśli są to bardzo doświadczeni testerzy, którzy są w stanie wykonać różne typy testów, takie jak: testy manualne, automatyzacja, testy wydajności, testy bezpieczeństwa, testy API, testy statyczne, możemy być pewni, że nie są specjalistami w każdej z tych dziedzin. Są więc w stanie dostarczyć nam określoną ich jakość. Czyli może się zdarzyć, że będziemy mieć bardzo dobrych testerów manualnych, którzy testów wydajności będą musieli się dopiero uczyć, w związku z tym, jakość tych testów będzie wątpliwa.

Oznacza to, że posiadając pewne skończone zasoby, nigdy nie będziemy w stanie zapewnić najwyższej jakości testów w kontekście wszystkich pojawiających się potrzeb – nawet jeżeli nasi testerzy dołożą największych starań i będą pracować czy dokształcać się po godzinach. A co w momencie, kiedy praca testerów akurat nie jest potrzebna? Przecież ciągle płacimy za zajmowane przez testerów krzesła – co oczywiście oznacza, że marnotrawimy posiadane przez siebie środki.

Quality-Assurance-JPro

Rysunek 1. Potrzeby względem dostarczanych testów. Niebieska linia przerywana oznacza pracę wykonaną, błękitne pola wartości, które pokryły potrzeby w projekcie, a białe pole oznacza niepokryte przez testy obszary.

Narzędzia testerskie

Istnieje też problem narzędzi. To, że dysponujemy określonymi narzędziami nie oznacza wcale, że są one najlepsze. Zazwyczaj wybór narzędzi przypomina sposób, w jaki wybieramy piekarnię, w której kupujemy codziennie bułki. Najlepsze według nas bułki to nie takie, które są faktycznie najlepsze w całym mieście, a takie które były wystarczająco dobre, żebyśmy przestali szukać innej piekarni. Bułki zwykle nie są dla nas priorytetem, tak jak testy nie są priorytetem dla wielu firm wytwarzających oprogramowanie. Firmy te, ze względu na to, że nie specjalizują się w testach, rzadko posiadają wiedzę o najnowszych, najbardziej optymalnych rozwiązaniach, trudno też od nich wymagać, żeby miały pełną ich paletę.

Specjalizacja

Priorytet i specjalizacja to w tym przypadku słowa klucze, bowiem firma zajmująca się tworzeniem oprogramowania zazwyczaj nie będzie traktowała testów jako core swojej działalności. To programowanie nim jest. Może więc powinna poszukać odpowiedniego partnera technologicznego, dla którego właśnie testy są priorytetem?

Pracując w systemie, w którym nasi testerzy muszą pokrywać bardzo różne wymagania, zawsze będziemy mieć problemy z odpowiednim pokryciem testami. Taki system nie tylko dostarcza nieefektywne testy, ale również produkuje pracowników, którzy są „mistrzami w niczym”. Czyli testerów, którzy potrafią „trochę tego, trochę tamtego”. Problem polega na tym, że nawet z najlepszymi chęciami i predyspozycjami ci testerzy sami stają w obliczu pułapki „umiejętności średniej jakości”.

Przestańmy się więc oszukiwać. Dobrej jakości testy automatyczne, nie zostaną wykonywane przez testera, który zajmuje się nimi sporadycznie, bo na co dzień zajmuje się testami manualnymi, czasem może wydajnościowymi. Testy automatyczne wymagają wyspecjalizowanego programisty testów, który swój czas poświęci nie tylko na przygotowanie skryptów testujących, ale także ich utrzymanie, refaktoryzację itd. Z drugiej jednak strony utrzymywanie w zespole wyspecjalizowanego testera, który ma wykonać testy raz na 4 miesiące nie ma ekonomicznego sensu.

Dobrym przykładem jest także bezpieczeństwo i wydajność. Wykonujemy te testy raz na jakiś czas, w związku z tym zatrudnienie na pełny etat wyspecjalizowanego w nich testera będzie trudne do obrony, przynajmniej z ekonomicznego punktu widzenia. Co więc jeśli zależy nam na tym, żeby nasze testy wykonywał doświadczony specjalista, który dostarczy testy najwyższej jakości? Rozwiązaniem tego problemu wydają się być usługi: wewnętrze lub zewnętrzne.

Więcej w drugiej części artykułu.

Autorem wpisu jest:
Leszek Zieliński

Od 2011 roku realizuje i kieruje projektami QA. Ekspert w obszarze testów manualnych, zarządzaniu testami, doskonaleniu procesów testowych, mający również doświadczenie w testach automatycznych. Posiada certyfikat ISTQB Full Advanced Tester. Zafascynowany metodologią Rapid Software Testing, jak i podejściem Software Testing as a Service. Absolwent Politechniki Śląskiej w Gliwicach. Po godzinach działacz społeczny.

Dodaj komentarz

Komentarze:

Skontaktuj się z nami

Chcesz dowiedzieć się więcej o naszych usługach? Napisz do nas – odpowiemy na każdą wiadomość.

Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach handlowych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach marketingowych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma w celach rekrutacyjnych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma na potrzeby przyszłych rekrutacji.
W związku z obowiązującymi przepisami dotyczącymi ochrony danych osobowych tj. Ustawą o ochronie danych osobowych z dnia 10 maja 2018 roku, jak również treścią Rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO), informujemy, że: 1. Administratorem danych osobowych jest JCommerce Sp. z o.o. z siedzibą w Katowicach, ul. Ściegiennego 3, 40-114 Katowice (KRS: 00007393418).
2. Powyższe dane osobowe przetwarzane będą przez JCommerce Sp. z o.o. – w zależności od udzielonych przez Panią/Pana zgód (podstawa prawna przetwarzania: art. 6 ust. 1 pkt a) RODO):
• w celach handlowych,
• w celach marketingowych,
• w celach rekrutacyjnych;
• w celach przyszłych rekrutacji.
3. Podanie powyższych danych osobowych nie jest wymogiem ustawowym, umownym lub warunkiem zawarcia umowy. Nie jest Pan/Pani zobowiązany/a do podania powyższych danych osobowych, jednak brak ich podania uniemożliwi realizacje ww. celu.
4. Posiada Pan/ Pani prawo dostępu do treści swoich danych, w tym otrzymania ich kopii i ich sprostowania, usunięcia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo do sprzeciwu wobec przetwarzania, prawo do cofnięcia zgody w dowolnym momencie, jeśli została udzielona. Wycofanie zgody nie wpływa jednak na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem; oświadczenie o cofnięciu zgody na przetwarzanie danych osobowych należy złożyć w siedzibie JCommerce Sp. z o.o. lub przesłać na adres mailowy zgody@jcommerce.pl. Cofnięcie zgody na przetwarzanie danych osobowych skutkuje brakiem możliwości realizacji ww. celów przetwarzania;
5. Dane osobowe są udostępniane przez JCommerce Sp. z o.o. upoważnionym pracownikom i osobom współpracującym z JCommerce Sp. z o.o. na podstawie umów cywilnoprawnych, przez których realizowany jest cel przetwarzania;
6. Wszelkie pytania dotyczące ochrony danych osobowych oraz realizacje przysługujących praw, prosimy kierować na adres odo@jcommerce.pl;
7. W zależności od udzielonej zgody, dane osobowe będą przetwarzane przez czas niezbędny do realizacji ww. celów przetwarzania. W przypadku wniesienia sprzeciwu, JCommerce Sp. z o.o. przestanie przetwarzać Pani/Pana dane w ww. celu, chyba że będzie w stanie wykazać, że w stosunku do tych danych istnieją ważne prawnie uzasadnione podstawy, które są nadrzędne wobec Pana/Pani interesów, praw i wolności, lub niezbędne do ewentualnego ustalenia, dochodzenia lub obrony roszczeń;
8. Nie przekazujemy Pani/Pana danych poza teren Europejskiego Obszaru Gospodarczego oraz do organizacji międzynarodowych.
9. Pani/Pana dane osobowe nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.
10. Ma Pani/Pan prawo wniesienia skargi do organu nadzorczego gdy uzna Pan/Pani, iż przetwarzanie ww. danych osobowych narusza przepisy ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r.