Dlaczego testowanie oprogramowania jest niezbędne?

W latach 80-tych defekt w oprogramowaniu kontrolującym maszynę do radioterapii był bezpośrednią przyczyną zgonu kilku pacjentów.

Samolot Airbus A300 Chińskich linii lotniczych China Airlines 26 kwietnia 1994 roku rozbił się z powodu błędu w oprogramowaniu. Zginęły 264 osoby a 7 zostało ciężko rannych.

Poważny błąd w oprogramowaniu doprowadził do samozniszczenia rakiety nośnej Ariane 5, zaprojektowanej przez Europejską Agencję Kosmiczną. Był to jeden z najbardziej kosztownych błędów oprogramowania w historii. Straty wyniosły ponad 370 milionów dolarów.

Niestety tego typu przypadków było w historii dużo więcej. Czy można było ich uniknąć? Być może byłoby to możliwe gdyby wspomniany wyżej sprzęt z błędami w oprogramowaniu nie został dopuszczony do użytku. Tylko skąd wziąć wiedzę na temat tego czy oprogramowanie jest wolne od defektów, które w konsekwencji mogą prowadzić do groźnych lub kosztownych awarii? Odpowiedzią jest oczywiście testowanie oprogramowania, którego jednym w rezultatów jest ocena jakości oprogramowania. Informacje zebrane podczas procesu testowania umożliwiają podjęcie decyzji czy testowany produkt powinien zostać dopuszczony do użytku.

Nie zawsze błędy prowadzą do tak skrajnych przypadków. Przykładowo błędy w grach komputerowych mogą jedynie obniżyć satysfakcję z rozgrywki (co w efekcie i tak prowadzi do mniejszej sprzedaży, obniżenia zaufania i strat finansowych). Wszystko zależy oczywiście od zastosowań systemu informatycznego. Jednak jak widać na powyższych przykładach niska jakość oprogramowania może prowadzić m.in. do utraty pieniędzy, czasu, reputacji, a nawet spowodować obrażenia lub śmierć. Dlatego dopóki oprogramowanie będzie wytwarzane przez ludzi, dopóty niezbędne będzie weryfikowanie jakości takiego oprogramowania.

Korzyści wynikające z testowania.

Jak wiadomo z mojego poprzedniego wpisu testowanie oprogramowania ma na celu dostarczenie produktu końcowego o jak najwyższej jakości, zgodnego ze zdefiniowanymi wcześniej wymaganiami. Jeśli testowanie znajduje błędy i błędy te zostają naprawione, jakość systemu informatycznego wzrasta, co z kolei zmniejsza ryzyko występowania awarii lub innych niepożądanych skutków. Testowanie ma zapewnić bezawaryjne korzystanie z oprogramowania.

Można wyróżnić dwa typy korzyści z testowania:

  • ilościowe (np. mniejszy koszt naprawy błędu na wcześniejszym etapie),
  • jakościowe (np. większe zaufanie do organizacji dzięki produktowi o wysokiej jakości).

Dobrze zaplanowane i przeprowadzone testy wykryją większość problemów, w szczególności tych krytycznych, dzięki czemu nie dojdzie do awarii oprogramowania u użytkownika końcowego. Oczywiście może zdarzyć się że jakiś defekt nie zostanie znaleziony w wyniku testowania i ujawni się dopiero podczas użytkowania. Jednak dzięki testowaniu prawdopodobieństwo wystąpienia takiej sytuacji możemy zmniejszyć do akceptowalnego minimum. Proces testowania, który doprowadzi do sytuacji, w której w systemie nie będzie groźnych defektów musi być dobrze zaplanowany, zarządzany i wykonywany, ale to temat na oddzielny artykuł.

Dodaj komentarz