Psychologia testowania

Psychologia testowania
Wytwarzanie oprogramowania, w tym jego testowanie, to proces realizowany z udziałem ludzi. W związku z tym, duże znaczenie dla przebiegu testowania mają uwarunkowania psychologiczne.

Identyfikowanie defektów podczas testowania statycznego (np. w ramach przeglądów wymagań lub sesji doprecyzowywania historyjek użytkowników), bądź identyfikowanie awarii w trakcie testowania dynamicznego, może być odbierane jako krytyka produktu lub jego autora. Jednocześnie zjawisko psychologiczne, zwane efektem potwierdzenia (ang. confirmation bias), może utrudniać zaakceptowanie informacji sprzecznych z dotychczasowymi przekonaniami. Przykładem takiego zjawiska są oczekiwania programistów, że ich kod będzie poprawny, co prowadzi do wystąpienia efektu potwierdzenia, który skutkuje tym, że trudno jest im zaakceptować fakt, że ich kod jest błędny.

Obok efektu potwierdzenia mogą też występować inne błędy poznawcze, które utrudniają ludziom zrozumienie lub zaakceptowanie informacji uzyskanych w wyniku testowania. Dodatkowy czynnik utrudniający przyjęcie informacji zwrotnej z testów, stanowi skłonność wielu osób do obwiniania osoby przynoszącej złe wiadomości, a takie sytuacje często są rezultatem testowania.

Na skutek działania powyższych czynników psychologicznych, niektóre osoby mogą postrzegać testowanie jako czynność destrukcyjną, nawet jeśli przyczynia się ono wydatnie do postępu w realizacji projektu i podnoszenia jakości produktów. aby ograniczyć podobne reakcje, należy przekazywać informacje o defektach i awariach w sposób jak najbardziej konstruktywny, co pozwoli zmniejszyć napięcia między testerami a analitykami, właścicielami produktów, projektantami i programistami. Zasada ta ma zastosowanie zarówno do testowania statycznego, jak i do testowania dynamicznego.

Testerzy i kierownicy testów muszą posiadać duże umiejętności interpersonalne, aby sprawnie przekazywać informacje na temat defektów, awarii, rezultatów testów, postępu testowania i ryzyk oraz budować pozytywne relacje ze współpracownikami. Poniżej przedstawiono kilka zaleceń dotyczących zasad dobrej wymiany informacji:

  • Należy myśleć i działać zaczynając od współpracy, a nie od konfliktu. Wszystkich powinna łączyć świadomość wspólnego celu, jakim jest podnoszenie jakości systemów.
  • Należy podkreślić korzyści wynikające z testowania. Przykładem takiego zachowania jest wykorzystanie przez autorów informacji o defektach do doskonalenia produktów pracy i rozwijania umiejętności. Dla organizacji wykrycie i usunięcie defektów podczas testowania oznacza oszczędność czasu i pieniędzy oraz zmniejszenie ogólnego ryzyka związanego z jakością produktów.
  • Informacje na temat rezultatów testów i inne wnioski należy przekazywać w sposób neutralny, koncentrując się na faktach i nie krytykując osoby, która stworzyła wadliwy element.

W związku z powyższym należy zadbać o to, by raporty o defektach i wnioski z przeglądu były obiektywne oraz znajdowały oparcie w faktach:

  • Należy wczuć się w sytuację drugiej osoby i zrozumieć, dlaczego negatywnie reaguje ona na podane informacje.
  • Należy upewnić się, że rozmówca rozumie przekazywane informacje i vice versa.

Jednoznaczne zdefiniowanie właściwego zbioru celów testowania ma istotne implikacje psychologiczne, ponieważ większość osób ma skłonność do dopasowywania swoich planów i zachowań do celów określonych przez zespół, kierownictwo i innych interesariuszy. W związku z tym, należy zadbać o to, by testerzy przestrzegali przyjętych założeń, a ich osobiste nastawienie w jak najmniejszym stopniu wpływało na wykonywaną pracę.

Programiści i testerzy często prezentują odmienny sposób myślenia. Podstawowym celem prac programistycznych jest zaprojektowanie i wykonanie produktu. jak wspomniano powyżej, cele testowania obejmują weryfikację i walidację produktu, wykrycie defektów przed przekazaniem produktu do eksploatacji itd. Tym samym mamy do czynienia z różnymi zbiorami celów wymagającymi różnego nastawienia, których pogodzenie jest kluczem do uzyskania produktu wyższej jakości.

Sposób myślenia danej osoby wyznaczają przyjmowane przez nią założenia oraz preferowane przez nią sposoby podejmowania decyzji i rozwiązywania problemów. Wśród pożądanych cech osobowościowych testera należy wymienić:

  • ciekawość,
  • „zawodowy pesymizm”,
  • umiejętność krytycznego spojrzenia na wykonywane czynności,
  • dbałość o szczegóły,
  • motywację do utrzymywania opartych na zaufaniu i wspólnym dążeniu do celu relacji zawodowych.

Warto też zaznaczyć, że sposób myślenia testera często ewoluuje i dojrzewa wraz ze zdobywaniem przez niego doświadczenia zawodowego.

Wśród typowych cech osobowościowych programisty, mogą występować niektóre cechy charakterystyczne dla testera, ale programiści odnoszący sukcesy w swoim zawodzie są często bardziej zainteresowani projektowaniem i budowaniem rozwiązań, niż analizowaniem ewentualnych problemów z przyjętymi rozwiązaniami. Ważnym czynnikiem jest również efekt potwierdzenia, który może utrudnić znajdowanie pomyłek w rezultatach własnej pracy.

Programiści mający odpowiednie nastawienie mogą testować własny kod. Różne cykle życia oprogramowania oferują różne sposoby organizowania pracy testerów i wykonywania czynności testowych. Zlecając wykonanie niektórych czynności testowych niezależnym testerom, można zwiększyć skuteczność wykrywania defektów, co jest szczególnie ważne w przypadku systemów dużych, złożonych lub krytycznych ze względów bezpieczeństwa. Niezależni testerzy mają inny punkt widzenia, różny od punktów widzenia autorów produktów pracy (tj. analityków biznesowych, właścicieli produktów, projektantów i programistów), ponieważ mają inne uprzedzenia poznawcze (ang. cognitive biases).

Tekst (prawie) w całości pochodzi z sylabusa ISTQB 2018. Zostały z niego usunięte nagłówki i odesłania. choć jako źródło wiedzy sylabus może być postrzegany jako zbyt "ciężki", w małych dawkach jest to bardzo wartościowe kompendium wiedzy.

Całość można pobrać ze strony.

To powinno Cię zainteresować