Jak mierzyć jakość oprogramowania?

lipiec 7, 2021

Istnieją różne cele testowania oprogramowania. Jednym z głównych celów testowania jest mierzenie jakości oprogramowania. Czym zatem jest ta tajemnicza „jakość”?

Jakość oprogramowania to zestaw istotnych cech, które wyróżniają dane oprogramowanie – negatywnie lub pozytywnie.

Jak mierzyć jakość oprogramowania? – miary jakości

Pomyślmy zatem jakie mogą być miary jakości? Od razu pewnie na myśl przychodzi nam – opisowa miara jakości, czyli po prostu opis słowny. Jednak taka miara bywa bardzo zwodnicza – w końcu takowa miara zależeć będzie od podmiotu, który stworzył opis, w szczególności od jego subiektywnych odczuć i interpretacji. Należy zatem wystrzegać się tak sporządzonej opisowo miary jakości. Powinniśmy za to przede wszystkim stosować miary liczbowe, metryki  w kontekście mierzenia jakości oprogramowania. W końcu: „liczby nie kłamią!”. Należy wykorzystać przede wszystkim fakty liczbowe, aby stworzyć końcowa analizę jakościową.

Jak wspomniałem wcześniej podstawowym parametrem miary jakości oprogramowania powinno być kryterium ilościowe. Według takiego kryterium opisujemy proporcję błędów wykrytych w fazie produkcji oprogramowania do liczby błędów, wykrytych już w fazie odbiorczej przez klienta końcowego . Możemy takie kryterium ilościowe przedstawić na grafie – może on wyglądać np. tak:

Jak mierzyć jakość oprogramowania?

Jakość oprogramowania – wagi błędów

Stosując tego typu kryterium ilościowe powinniśmy przyjąć jakąś wartość graniczną, która stanie się dla nas pewnym wyznacznikiem, a w momencie przekroczenia będzie dla nas jasnym ostrzeżeniem, alertem, który wymusza na nas podjęcie działań zaradczych. Podkreślam raz jeszcze, że jest to parametr ilościowy, a więc nie rozróżnia on wagi błędów (np. krytyczny, wysoki, średni, niski itp.) a jedynie bierze pod uwagę ich ilość. Oznacza to, że dla kryterium ilościowego – błędy krytyczne są na równi z błędami niskimi, mało znaczącymi incydentami, czy nawet zwykłymi literówkami. Zatem w tym momencie powinna zapalić nam się w głowie czerwona lampka ostrzegawcza, która sygnalizuje nam, że sam parametr ilościowy może nie wystarczyć do poprawnej miary jakości oprogramowania. Parametr ilościowy powinniśmy zatem uzupełnić o parametr „wagi błędu – w końcu jeden błąd krytyczny nie równa się jednemu błędowi o niskiej wadze.

Jakość oprogramowania

Jakość oprogramowania – feedback

Oczywiście wyżej przedstawione kryterium ilościowe nie powinno być jedynym miernikiem jakości oprogramowania. Kolejnym ważnym aspektem miary jakości powinien być feedback od użytkowników końcowych, klientów. Opinie użytkowników powinniśmy skonfrontować z wyżej opisanymi parametrami i ich statystykami. Feedback możemy zbierać np. za pomocą ankiet. Takie zestawienie powinno dać nam informacje potwierdzające lub zaprzeczające trafności pomiarów liczbowych, przyjętych granic. Na tej podstawie możemy nieco skorygować przyjęte wcześniej progi tak, aby jeszcze lepiej oddawały faktyczny stan oprogramowania. Sam proces testowania oprogramowania, czy mierzenia jego jakości zwykle jest złożony i skomplikowany – gdyż istnieją różne rodzaje błędów, usterek, a także ich okoliczności występowania. Wysoka liczba błahych do wykrycia błędów  znalezionych przez klientów– zawsze źle świadczy o jakości danego produktu. Natomiast istnienie błędów, które pojawiają się tylko w rzadkich, specyficznych sytuacjach (które ciężko jest wykryć podczas standardowej pracy z oprogramowaniem) – zwykle dobierana jest dużo bardziej wyrozumiale. Dlatego kolejnym ważnym parametrem w przeprowadzaniu miary jakości oprogramowania jest parametr określający stosunek wagi błędu do poziomu skomplikowania sytuacji jego wystąpienia.

W dużym skrócie omówiliśmy sobie parametry, które mogą pomóc zmierzyć jakość oprogramowania. Teraz zobaczymy jakie konkretnie atrybuty aplikacji powinniśmy poddać testowaniu i weryfikacji, aby uzyskać wystarczającą pewność co do jakości oprogramowania. Poniższe atrybuty oprogramowania będą zatem naszymi punktami kontrolnymi:

  • Funkcjonalność
  • Niezawodność
  • Przenośność
  • Wydajność
  • Pielęgnowalność
  • Użyteczność
  • Bezpieczeństwo
  • Przydatność dokumentacji

Oczywiście każdy powyższy punkt kontrolny odnosi się do innej właściwości oprogramowania, dlatego powinniśmy wykonywać osobne testy właściwe dla każdego ze wskazanych atrybutów oprogramowania. Dobrze jest, aby klient zamawiający oprogramowanie – wskazał, które atrybuty oprogramowania są dla niego najważniejsze, a które mają mniejsze znaczenie. Np. klient może wskazać, że aplikacja bezdyskusyjnie musi działać w trybie ciągłym – musi być niezawodna (gdyż np. każda jej niedostępność niesie za sobą duże straty finansowe) a np. może przymknąć oko na niedoskonałości dokumentacji. Takie informacje powinniśmy uzyskać na samym początku  – podczas fazy planowania i powinny być zapisane w dokumencie Planu Testów. Na podstawie takich informacji będziemy wiedzieć na czym powinniśmy skupić największą uwagę i swoją pracochłonność, a co możemy zostawić do testów na koniec, czy nawet w skrajnych przypadkach pominąć.

Na koniec chciałbym zwrócić uwagę na jeszcze jeden bardzo ważny aspekt, który bywa często niewłaściwie rozumiany.

Pamiętajmy:

Jakość oprogramowania podnosi się wraz z naprawianiem błędów, a nie ich znajdywaniem!

Proces mierzenia jakości oprogramowania powinien odbywać się przez cały czas w fazie developmentu. Oczywiście każdy projekt ma swój koniec i termin oddania  więc przychodzi również czas na generalną miarę jakości oprogramowania, w której biorą udział również klienci. Pamiętajmy o tym, że najważniejszą miarą, która powinna mieć dla nas (zespół developerski, testerski) znaczenie jest realne zadowolenie klienta z otrzymanego oprogramowania. W końcu celem każdej wytworzonej aplikacji, jest spełnianie biznesowych zadań naszych klientów. To klient końcowy wystawia nam ostateczną ocenę i rozlicza nas za wyprodukowane oprogramowanie. Pamiętajmy również o tym, że nie ma oprogramowania wolnego od błędów – są tylko nieznalezione defekty! Dlatego pamiętajmy, aby wyciągać wnioski z każdego procesu testowego (nawet tego niezupełnie udanego czy dobrze ocenionego) i w ten sposób podnosić swoje umiejętności, a w konsekwencji jakość kolejnych projektów.

Autor: Tomasz Stelmach

Pozostałe:

Typy testów

Testowanie oprogramowania to bardzo rozległy obszar branży IT. Testować aplikacje możemy na wiele sposobów, a same testy mogą mieć różne cele. I to właśnie wspomniane cele testowania, definiują typy testów, jakimi możemy poddać oprogramowanie. Jeśli celem testów jest...

Agile i SCRUM, czyli co?

Agile to ostatnimi czasy bardzo popularny termin. Jest odmieniamy przez wszystkie przypadki. Obecnie zdecydowana większość zespołów developerskich korzysta z Agile w swojej codziennej pracy. O „Agile” i „Zwinnym” podejściu do prowadzenia projektów słyszeli już chyba...

Raport z testów – must have!

Dzisiaj napiszę kilka słów o niezbędnym elemencie w każdym procesie testowym - mowa oczywiście o tytułowym – Raporcie z Testów. Na początek, krótka regułka określająca, czym tak naprawdę jest Raport z Testów: O jakich czynnościach testowych traktuje powyższa...

Testy wydajnościowe

W tym materiale chciałbym przybliżyć Wam tematykę testów wydajnościowych. Testy wydajnościowe te są dość specyficznym, ale jednocześnie popularnym i bardzo ważnym rodzajem testów w przekroju całego procesu testowego niemal każdego oprogramowania. Testowanie wydajności...

Testy End to End

W tym materiale postaram się przybliżyć Wam szczególny rodzaj testów, jakim niewątpliwie są testy End To End. Zapewne, jeśli jesteście testerami, czy tez osobami należącymi do zespołów zapewniania jakości, to nieraz słyszeliście termin „End-to-End”, czy...