Świat jest pełen oprogramowania, które doskonale spełnia wszystkie udokumentowane wymagania, ale mimo to nie tworzy wartości dla swoich użytkowników.
Kiedy studiowałem inżynierię oprogramowania — wieki temu — jakość oznaczała zgodność, czyli spełnienie wymagań. Nauczyłem się również, że zapewnianie jakości obejmuje wszystkie działania podejmowane w celu umożliwienia, tworzenia i weryfikowania jakości oraz że testowanie jest kluczową metodą zapewniania jakości.
Obecnie Wikipedia definiuje testowanie jako czynność polegającą na badaniu artefaktów i zachowania oprogramowania poddawanego testom poprzez walidację i weryfikację. Testowanie jest definiowane jako działanie, pozostawiając jego cel otwartym. Definicje, których nauczyłem się na studiach inżynierskich, są bardzo zgodne z definicją Wikipedii dotyczącą testowania zgodności: testowania, które określa, czy proces, produkt lub usługa są zgodne z wymaganiami specyfikacji, normy technicznej, umowy lub przepisów. Co ciekawe, żadna z tych definicji w ogóle nie używa słowa jakość .
Czym jest jakość?
Obecnie unikam pokusy definiowania jakości, z wyjątkiem pośredniego ujęcia jej poprzez cztery wymiary: korzyści, funkcje, proces i doświadczenie. Pomyślmy o czymś, co zna każdy, na przykład o Paypal. Ludzie używają go do przesyłania pieniędzy przez internet; jest to jego funkcja. Poszukiwane przez nich korzyści to łatwość obsługi, bezpieczeństwo i niski koszt. Korzystanie z PayPal obejmuje różne procesy użytkownika, a oprogramowanie prowadzi użytkownika przez te procesy. Odczucia, takie jak szczęście, frustracja czy poczucie spełnienia, których użytkownik doświadcza podczas korzystania z Paypal, składają się na doświadczenie. Czymkolwiek jest jakość, trudno, aby istniała bez wszystkich tych czterech wymiarów.
Testowanie zwykle koncentruje się na zgodności funkcjonalnej, czyli sprawdzaniu, czy oprogramowanie robi to, co określają jego wymagania, i nie robi niczego więcej. Mogą istnieć również wymagania niefunkcjonalne, takie jak czasy odpowiedzi, liczba obsługiwanych równoległych transakcji oraz bezpieczeństwo danych użytkownika. Normy i przepisy, takie jak SOC2 lub RODO, wprowadzają dodatkowe wymagania, podobnie jak umowy Paypal z firmami obsługującymi karty kredytowe. Mogą one mieć niewiele wspólnego z rzeczywistymi funkcjami i wartością oprogramowania, ale spełnienie tych wymagań jest warunkiem wstępnym prowadzenia działalności.
Jakość wykracza poza samą zgodność. Aby osiągnąć jedno i drugie, zapoznaj się z naszą wyselekcjonowaną listą najlepszych platform do testowania oprogramowania
Idealny świat
Świetni testerzy stosują zarówno podejście oparte na zgodności, koncentrujące się na spełnieniu wymagań, jak i podejście oparte na rezultatach, skupiające się na osiągnięciu korzyści. W idealnym świecie spełnienie udokumentowanych wymagań oznaczałoby osiągnięcie korzyści przez użytkownika, ale świat rzadko jest idealny. Nawet gdyby oprogramowanie było doskonałe, użytkownicy tacy nie są. Osiągnięcie korzyści w dużej mierze zależy od działań użytkownika, a działania użytkownika zależą od tego, jak oprogramowanie komunikuje się z użytkownikiem i prowadzi go przez kolejne czynności. To z kolei wpływa na jakość całego doświadczenia. Te cechy oprogramowania trudno uchwycić w wymaganiach dotyczących zgodności lub formalnych przypadkach testowych. Ponownie, w idealnym świecie wszystkie te wyzwania są rozwiązywane odpowiednio wcześnie dzięki projektowaniu zorientowanemu na użytkownika — ale świat jest daleki od ideału, a tester musi wcielić się w rzeczywistego użytkownika.
Testowanie zgodności a testowanie rezultatów
Testowanie zgodności i testowanie rezultatów wymagają różnych sposobów myślenia. Testowanie zgodności przypomina zastawianie pułapek: czytanie wymagań, wyobrażanie sobie, co może pójść nie tak, oraz projektowanie warunków testowych, w których oprogramowanie prawdopodobnie zawiedzie. Testowanie oparte na rezultatach przypomina bardziej akt ciekawości: zrozumienie, co użytkownik chce osiągnąć, wyobrażenie sobie wszystkich czynności, które może wykonać, ustalenie, jak oprogramowanie powinno zareagować, a następnie wypróbowanie go.
Zgodność jest warunkiem wstępnym jakości. W wielu branżach spełnienie formalnych wymagań dotyczących zgodności jest nawet warunkiem wstępnym uczestnictwa w działalności biznesowej. Można również ograniczyć ryzyko odpowiedzialności, przedstawiając udokumentowany dowód, że zgodność została prawidłowo przetestowana. Skłaniam się ku poglądowi, że testowanie zgodności pomaga zmniejszyć ryzyko porażki, a testowanie oparte na rezultatach pomaga zwiększyć prawdopodobieństwo sukcesu.

