Nawyki skutecznego testera

Tak naprawdę celów, jakie możemy postawić testerowi oprogramowania jest wiele, jednakże my skupimy się tutaj na tych podstawowych. Opowiemy o najważniejszych nawykach oraz umiejętnościach testera, które powinny być rozwijane i pielęgnowane, i które spowodują, że nie tylko będziesz lepszym testerem, ale również lepszym pracownikiem niezależnie od tego, czym będziesz zajmował się w życiu.

Do głównych obowiązków testera zaliczamy przeprowadzanie testów na różnych ich poziomach oraz weryfikowanie, czy oprogramowanie zostało stworzone zgodnie z opracowanymi wymaganiami. Tester często jest pierwszą osobą, która ma do czynienia z nową wersją testowanego przez siebie systemu i ważne jest, aby spoglądał na niego oczami klienta, tzn. “ubrał buty klienta” i korzystał z systemu tak, jak prawdopodobnie będzie to robić klient. Niestety jeszcze w wielu firmach widuje się “obrazek”, gdzie tester spychany jest na dalszy plan i przyjmuje mało ważną rolę w ramach całego procesu wytwórczego.Powodów tego stanu rzeczy jest wiele. Część wynika z kultury pracy w organizacji, a część zależy od samego testera, jednak nie tym mamy się teraz zająć. Dalecy jesteśmy od tworzenia wizerunku, że tester jest najważniejszą osobą przy tworzeniu systemu, ale na pewno jest on częścią całej układanki, której rezultatem ma być dobry, funkcjonalnie użyteczny produkt z punktu widzenia klienta – użytkownika. Brak osoby testującej oprogramowanie oraz weryfikującej je pod względem wymagań często może doprowadzić do katastrofy produktu. Dlatego ważne jest, aby zrozumieć, że taka osoba jest potrzebna. Ponadto wszystkie osoby w zespole powinny mieć jeden główny cel, jakim jest stworzenie wartościowego produktu, który zadowoli klienta, a jednocześnie przyniesie naszej firmie zysk. Aby to osiągnąć musimy współpracować ze sobą.W innym wypadku sami sobie podcinamy gałąź, na której siedzimy.

To tyle tytułem wstępu. Teraz przejdziemy do naszego głównego tematu, czyli dobrych nawyków i umiejętności testera.

 

Dyscyplina, dokładność, skupienie

Praca testera wielokrotnie polega na wykonywaniu tych samych czynności. Należy pamiętać, że nie wszystkie te zadania jesteśmy w stanie zautomatyzować i część musimy wykonywać ręcznie. Wówczas może nas dopaść znużenie, zmęczenie i brak chęci wykonywania kolejny raz tych samych czynności (np. testów tej samej funkcjonalności systemu). Jednak praca testera, dobrego testera, często tego wymaga i nie można sobie pozwolić na pominięcie czynności, które mogą mieć wpływ na jakość wytwarzanego systemu.

Na co najczęściej powinniśmy zwracać uwagę:

  • Testy regresyjne

Jedna z najbardziej nużących czynności dla testera – wykonywanie kolejny raz tych samych testów. Jeśli jesteśmy w stanie zautomatyzować te testy (bądź ich część), to można oczywiście to zrobić, natomiast należy pamiętać, że czasem nie da się zastąpić testów manualnych. Warto wyrobić sobie nawyk, aby przeprowadzać zawsze pełne zaplanowane testy regresyjne (oczywiście uwzględniając ryzyko), mimo że we wcześniejszych wersjach coś zazwyczaj działało.

  • Retesty

Kolejną częstą czynnością testera jest przeprowadzanie retestów, czyli testów poprawionych defektów. Należy pamiętać, że każdy rozwiązany defekt trzeba zweryfikować w nowej wersji oprogramowania, czy aby na pewno został on poprawiony. Nie można zamykać zgłoszeń bez ich weryfikacji.

  • Dokładność

Jedną z cech dobrego testera, nad którą trzeba pracować, jest dokładność. Nie należy przeprowadzać testów na łapu-capu. W trakcie testowania warto zastanowić się nad przypadkiem testowym, przeanalizować test, wybrać odpowiednie dane testowe, zweryfikować otrzymany rezultat itp. Takie myślenie pozwala na wykrywanie defektów w wielu obszarach, których na początku nie brało się pod uwagę oraz raportowanie wartościowych defektów.

  • Praca w skupieniu

Większość osób, aby wykonywać dobrze swoją pracę, potrzebuje skupienia (niektórym skupienie zapewnia głośna muzyka :))  i odpowiedniego środowiska pracy. W trakcie testowania dobrze jest stosować zasadę “zero rozpraszaczy”. Warto wyłączyć telefon (ewentualnie wyciszyć), klienta pocztowego, komunikator, facebooka, filmiki z kotami itp. i skupić się na testach. W naszym wypadku działa to bardzo dobrze i stosujemy tzw. okienka czasu, kiedy to nikt nie przeszkadza osobom przeprowadzającym testy. Taki tester podczas 1,5-godzinnej pracy w skupieniu jest często w stanie zrobić zdecydowanie więcej i to z lepszą jakością, niż gdy jest rozpraszany w trakcie 8 godzin pracy.

 

Rozwijanie swoich kompetencji testerskich

Produktywny tester to taki, który rozwija zarówno swoje kompetencje miękkie, jak i techniki testerskie. Zdarzają się okresy w pracy, kiedy jest trochę luźniej i warto wówczas spożytkować ten czas na swój rozwój. Jak powiedział Goethe: „Kto nie idzie do przodu, ten się cofa”. W dynamicznym świecie IT słowa te mają olbrzymie znaczenie. Ważne w samorozwoju jest to, aby robić to systematycznie, więc warto już dzisiaj znaleźć choć 30 minut i zastanowić się, w jakich obszarach chcielibyśmy się rozwijać. Wyznaczmy sobie cele i dążmy do ich osiągnięcia.

Istnieje wiele sposobów na rozwinięcie swoich kompetencji, np.:

  • Udział w Meetupach

Praktycznie w każdym większym mieście odbywają się regularne spotkania społeczności testerskiej. Warto brać w nich udział i czerpać wiedzę. Oprócz tego, że na takich spotkaniach jesteśmy w stanie poszerzyć naszą wiedzę, mamy również możliwość poznania wielu nowych osób i wymienić się z nimi doświadczeniami. Radzimy jednak nie ograniczać się do meetupów tylko dla testerów, ale i wziąć udział w spotkaniach, na których będą poruszane kwestie wymagań czy procesu tworzenia oprogramowania, aby mieć szersze spojrzenie na cały proces wytwarzania oprogramowania.

Na jednej z naszych stron znajdziecie listę społeczności testerskich w naszym kraju oraz listę wydarzeń, które będą odbywały się w najbliższym czasie.

  • Czytanie książek, publikacji, artykułów z obszaru testowania

Mimo że książek poruszających aspekt testowania jest ciągle mało, warto zapoznać się z tymi, które są dostępne na rynku. Pozwoli to na poszerzenie wiedzy z obszaru testowania oprogramowania. Dodatkowo warto na bieżąco czytać artykuły z tej tematyki.

Również w naszym serwisie możemy zaproponować Wam napisane przez nas artykuły i mamy nadzieję, że znajdziecie w nich coś, co pozwoli choć trochę rozwinąć Wam skrzydła.

  • Udział w szkoleniach

Kolejnym sposobem na zdobycie wiedzy testerskiej jest udział w płatnych szkoleniach z interesującego nas obszaru. Tutaj oczywiście pojawia się problem finansów, ale raz na jakiś czas pracodawca powinien umożliwić nam udział w takim szkoleniu. Warto, zwrócić na to uwagę, aby szkolenie było prowadzone przez praktyków.

Z naszej strony zapraszamy Was do zapoznania się z naszą ofertą szkoleniową – może znajdziecie coś interesującego dla siebie.

  • Poznawanie narzędzi

Stosowanie narzędzi w procesie testowania oprogramowania często pozwala zaoszczędzić sporo czasu, np. poprzez zautomatyzowanie pewnych czynności. Warto być na bieżąco z najnowszymi trendami i możliwościami narzędzi, które wykorzystujemy w codziennej pracy. Na pewno dobrze jest poznać narzędzia do zarządzania testami oraz raportowania zgłoszeń. Nie należy tutaj zatrzymywać się tylko na zasadach obsługi jako użytkownik, ale wejść w administrację narzędzia.

Może uda się Wam usprawnić działanie procesu testowego / wytwórczego, w którym uczestniczycie. W naszej Narzędziowni zebraliśmy podstawową listę narzędzi, natomiast sami musicie zdecydować, co jest dla Was odpowiednie i czego warto się nauczyć.

  • Kompetencje miękkie

Oprócz znajomości teorii i praktyki testowania oprogramowania warto również rozwijać się w obszarze kompetencji miękkich, które bardzo często są potrzebne w codziennej pracy testera oprogramowania. Do podstawowych cech, które warto posiadać, zaliczamy asertywność, umiejętność pracy w zespole, zarządzanie czasem, komunikatywność czy dynamizm działania.

 

Planowanie zadań

Aktywność testera, jak i każdej innej osoby, wymaga planowania. Nawet w sytuacji, gdy otrzymujemy od przełożonego listę zadań do wykonania, warto samodzielnie zaplanować naszą pracę.

W naszym wypadku najlepiej sprawdza się planowanie do przodu, tzn. na koniec dnia planujemy aktywności testerskie na cały kolejny dzień. Rozpisujemy sobie, co będziemy testować, co i w jaki sposób musimy zweryfikować. Wiemy, że im lepiej zaplanujemy sobie nasze zadania, tym lepiej wykonamy naszą pracę. Wspieramy się przy tym oprogramowaniem JIRA i indywidualnie korzystamy z narzędzia NOZBE, w którym organizujemy sobie zadania do wykonania (ogólny zakres prac, a szczegóły w JIRA). Dodatkowo polecamy grupować sobie nasze aktywności w paczki. Jeśli przykładowo wiemy, że musimy wykonać w trakcie dnia kilka telefonów do programistów rozsianych w różnych lokalizacjach, warto rozpisać to pod jednym typem zadań.

 

Skuteczna komunikacja

Skuteczna komunikacja to jedna z głównych umiejętności, nad którą tester oprogramowania powinien pracować. Tester ma obowiązek przekazywania klarownych raportów z wynikami testów z różnym stopniem szczegółowości w zależności od adresatów. Inną formę raportu będzie miał materiał przekazywany do lidera zespołu programistów, a inną do zarządu. Komunikacja może odbywać się na wiele sposobów – od wysłania maila, zaraportowania defektu po przedstawienie wyników testów na spotkaniu zarządu, który zadecyduje o uruchomieniu sprzedaży systemu. Wszystkie techniki komunikacji mają jednak cechy wspólne, którymi tester powinien się kierować:

  • Precyzyjne informacje

Przekazując informacje na temat prowadzonych testów, należy być bardzo precyzyjnym. Przekazanie informacji, np. że system został przetestowany, praktycznie nic nie wnosi. Musi być klarowny opis, jaki zakres systemu został zweryfikowany, jakie rodzaje defektów zostały zaraportowane, w jakim statusie są te defekty i o jakim priorytecie. To oczywiście przykład, natomiast musicie być bardzo dokładni przy przekazywaniu informacji na temat testowanego produktu, gdyż na podstawie tej wiedzy interesariusze często podejmują różne decyzje.

  • Dostosowanie informacji do odbiorców

Przy przekazywaniu informacji należy zawsze brać pod uwagę, do kogo jest ona adresowana. Innych informacji na temat testowanego produktu potrzebuje kierownik programistów, a innych dyrektor całego pionu.

  • Informowanie bez uprzedzeń

Jeśli informacja dotyczy testowanego produktu, nie możemy pozwolić sobie na personalne uwagi, co do osób tworzących oprogramowanie. Tekst w stylu „bo ja wiedziałem, że Kamil spie… tą funkcjonalność”, jest nieprofesjonalny. Takie zachowanie bardzo szybko spowoduje, że zarówno testerzy, jak i programiści będą grali od razu w przeciwnych drużynach i pojawią się duże kłopoty ze współpracą. Jeśli informujemy o błędach, nieprawidłowościach itp. starajmy się robić to bezosobowo, bez wskazywania winnych.

  • Prawda

Nie ma nic gorszego niż kłamstwo w trakcie przekazywania informacji na temat testowanego systemu. Często osoby decyzyjne w oparciu o nasze informacje podejmują decyzje dotyczące dalszego rozwoju i przyszłości tworzonego produktu. Nie może zdarzyć się sytuacja, że w jakiejś części dotyczącej naszej pracy i testów skłamiemy, np. zadeklarujemy, że wykonaliśmy 100% zaplanowanych testów regresyjnych, a w rzeczywistości wykonaliśmy tylko 75%. Nieprzetestowana funkcjonalność może zawierać błędy, a po jej udostępnieniu klientowi może odbić się negatywnie na opinii naszej firmy.

 

Proaktywność

Tak jak już wspominaliśmy, jednym z zadań testera oprogramowania jest dbanie o to, aby oprogramowanie udostępniane klientowi było jak najlepszej jakości. Oczywiście zdarzały się i będą się zdarzać sytuacje, że dostarczane oprogramowanie będzie dalekie od ideału, czy nawet nie powiedzie się wdrożenie u klienta. Wtedy po takim niepowodzeniu, często widać „załamanie” po stronie testerów oprogramowania. Zaczyna się narzekanie, że wymagania były kiepskiej jakości, że defekty nie były rozwiązywane na czas, czy że generalnie mało czasu było na testy. Warto, abyśmy my jako testerzy, nie wpadli wówczas w pułapkę narzekania, a zastanowili się, co zrobiliśmy źle w tym projekcie i co musimy usprawnić po naszej stronie.

Poniżej kilka naszych pomysłów dotyczących kwestii proaktywności w trakcie testowania oprogramowania, które powinniśmy zawsze stosować

  • Odpowiedzialność za tworzone wymagania

Również tester powinien brać na siebie odpowiedzialność za jakość tworzonych wymagań. Jeśli są one niepełne, powinniśmy prosić o ich doprecyzowanie. W razie konieczności trzeba tutaj być wytrwałym i nie zrażać się po pierwszych porażkach (czytaj: olewania przez ich twórców). Nie warto od razu wytaczać grubych dział i kierować do przełożonego skarg, że wymagania są do d… W pierwszej kolejności rozmawiajmy z osobami odpowiedzialnymi za wymagania i wskazujmy, gdzie są luki dotyczące wymagań. Może warto wprowadzić regularny przegląd wymagań, w którym to testerzy będą uczestniczyć. Od dobrych wymagań wiele zależy, dlatego warto poświęcić im odpowiednią ilość czasu.

  • Szczegółowe raportowanie defektów

Jedną z bardziej dołujących rzeczy dla testera oprogramowania jest to, że jego defekty leżą i nic z nimi się nie dzieje – brak reakcji. Nie warto obrażać się na programistów i strzelać focha w stylu “no to ja nie będę nic zgłaszać”, tylko zastanowić się, dlaczego pojawił się taki stan rzeczy. W takiej sytuacji wypada zrobić spotkanie z zespołem programistów i ustalić standard pracy nad zgłoszeniami oraz ustalić, czego oni tak naprawdę oczekują. Zróbmy refaktoryzację naszych zgłoszeń – może były nieprecyzyjne, może nie dotyczyły ważnych elementów systemu itp. Raportowanie zgłoszeń jest jedną z podstawowych czynności testera, jest sposobem komunikowania wykrytych defektów i musi być robione w precyzyjny sposób.

Celem zgłębienia technik raportowania zgłoszeń warto zapoznać się z jednym z naszych wcześniejszych artykułów –”Jak dobrze zgłaszać błędy”.

  • Przegląd przypadków / scenariuszy testowych

Warto co jakiś czas przeglądać istniejące przypadki testowe oraz na bieżąco je aktualizować i (jeśli trzeba) dodawać nowe. Często o tym zapominamy, a jest to jedna z siedmiu podstawowych zasad testowania – przypadki testowe się dezaktualizują i trzeba je regularnie aktualizować.

  • Przegląd listy defektów

W sytuacji, gdy testowany system jest projektem długofalowym i jesteśmy już po którejś wersji wdrożonej u klienta, dobrze jest co jakiś czas robić przegląd istniejących defektów, zarówno rozwiązanych, jak i otwartych. Warto zweryfikować, czy na pewno występują one w najnowszej wersji oprogramowania i jeśli tak, to zaktualizować numer wersji systemu czy dodać nowy screenshot. Możemy spotkać się również z sytuacją, że defekt został rozwiązany (może przy okazji poprawy innych) i można go wówczas zwyczajowo zamknąć. Pozwala to na utrzymanie względnego porządku w naszym narzędziu zarządzania defektami.

 

Mamy nadzieję, że pokazaliśmy Wam, jak ważne jest bycie „skutecznym testerem” i że warto zgłębiać swoją wiedzę w obszarze kompetencji miękkich, które są bardzo potrzebne w byciu dobrym testerem.