Skąd się biorą błędy i jaka jest ich cena?

Co sprawia, że programiści popełniają błędy, a testerzy oprogramowania ich nie znajdują?

10/9/2023

Nie da się ukryć, że testerzy oprogramowania mają sporo wspólnego z błędami - wszak ich zadaniem jest wyszukiwanie defektów w aplikacjach. Nie będziemy się jednak dzisiaj skupiać na pracy testerów, tylko spróbujemy odpowiedzieć na istotne pytanie. Dlaczego w kodzie danego produktu pojawiają się błędy, a co za tym idzie, niepoprawne działanie fukcjonalności?

Błąd czy defekt? A może awaria?

"Błąd" to dość ogólne określenie, bo przecież może ono oznaczać zarówno błąd w aplikacji (np. niedziałającą funkcjonalność), ale też błąd popełniony przez programistę (np. niepoprawnie napisany kod). Dlatego też w specjalistycznej terminologii rozróżniono trzy pojęcia związane z nieprawidłowym działaniem oprogramowania - błąd, defekt oraz awaria. Błąd może być popełniony przez osobę - choćby przez wspomnianą pomyłkę w kodzie. Idąc dalej, popełniony błąd wprowadził do oprogramowania defekt. A na samym końcu, defekt spowodował awarię podczas działania aplikacji - czyli dopiero w tym momencie trafiamy na ten ogólnie przyjęty błąd. Nie musicie się jednak przejmować nazewnictwem - w środowisku IT nieprawidłowe zachowanie oprogramowania zazwyczaj nazywamy po prostu błędem.

Nie istnieje oprogramowanie bez błędów

Odpuśćmy już terminologię - nie istnieje oprogramowanie wolne od błędów. Jak mówi teoria - testowanie jest nieskończone, dlatego też w każdej aplikacji znajdzie się ta jedna nieodkryta ścieżka użycia. Inaczej mówiąc - w każdym oprogramowaniu w ukryciu zawsze czyha przynajmniej jeden błąd. Nie ma w tym oczywiście nic złego, bo aplikacje mają odpowiadać na konkretne potrzeby, a nie próbować być idealne.

cena błędu
cena błędu

Programista też człowiek

Może niektórzy będą zaskoczeni, ale programiści są tylko ludźmi. I to właśnie tu leży główna przyczyna pojawiania się błędów w oprogramowaniu. Brak doświadczenia, zmęczenie czy po prostu chwila nieuwagi mogą sprawić, że dane rozwiązanie nie zostanie wykonane poprawnie. Czasami nawet drobna pomyłka w kodzie może doprowadzić do nieprzewidzianego zachowania danej funkcji.

czas to pieniądz
czas to pieniądz

Jak to mówią - czas to pieniądz, więc presja nakładana przez przełożonych również może wpłynąć na częstsze niedociągnięcia pracowników. Oczywistym faktem jest, że firmy tworzą oprogramowanie, aby zarabiąc pieniądze. Nie mogą więc pozwolić na przeciąganie tworzenia produktu w nieskończoność. Popularną praktyką jest wyznaczanie deadline'u, czyli ostatecznego terminu na wykonanie określonej czynności. A że nie każdy dobrze radzi sobie z presją czasu, może być to kolejny powód popełnienia błędu.

To dotyczy też testerów

Nie chcę narazić się na ataki rozwścieczonych programistów, więc dodam jeszcze, że to wszystko dotyczy też testerów oprogramowania. Tester również jest tylko człowiekiem i tak samo z jego strony dochodzi do pomyłek. Co prawda, tester nie ma wpływu na kod aplikacji, ale nie znalezienie błędu i nie zgłoszenie go do poprawek niesie za sobą negatywne, czasem poważne konsekwencje. Nie ułatwia tego wciąż spotykana praktyka oszczędzenia na procesie jakości. Do tej pory wiele firm przeznacza niewielkie zasoby na testowanie, więc testerzy są (brzydko mówiąc) zawaleni robotą i nie mają czasu na odpowiednie sprawdzenie danej części oprogramowania.

Cena błędu

Ceną błędu są przede wszystkim pieniądze. Nawet jeśli błąd został wykryty na etapie rozwoju aplikacji, to jego poprawa wymaga czasu - czyli pracy, za którą trzeba zapłacić. Siły przeznaczone na poprawki istniejących funkcjonalności nie mogą uczestniczyć w dorzucaniu nowości, co może wpłynąć na premierę produktu. Oczywiście, doświadczony zespół z góry zakłada czas przeznaczony na testy, ale niestety, nie wszystkie problemy są do przewidzenia. Palące terminy nie pozwalają na poprawę wszystkich usterek i tak oto na światło dzienne wychodzą niedopracowane produkty - schemat (zbyt) często widoczny w branży gier komputerowych. Jeszcze gorzej, gdy błąd zostanie znaleziony przez klienta - wtedy w grę mogą wejść nawet kary umowne, ale jest to kwestia biznesowa, więc nie będziemy wchodzić w szczegóły.

Niestety, historia zna przypadki, gdzie ceną błędu były nie tylko pieniądze. Therac-25 to maszyna do radioterapii nowotworów, która na skutek nieprawidłowego funkcjonowania aplikowała śmiertelną dawkę promieniowania. Może więc niedotrzymanie deadline'u to nie koniec świata?

błąd w Therac 25
błąd w Therac 25

Dziękuję, że czytasz mojego bloga!

Masz jakieś pytania? Z chęcią odpowiem :)

Radosław Wasik
Radosław Wasik