Lepiej zapobiegać niż leczyć. Quality Assurance.
Transformacja cyfrowa w ostatnich latach wymusiła szybszą realizację projektów. Rynek także odpowiedział zwiększonym zapotrzebowaniem na specjalistów z branży IT. Zespoły projektowe muszą działać szybko, jednocześnie dostarczając wysokiej jakości produkty cyfrowe. Również digitalizacja znalazła zainteresowanie wśród wielu firm, w tym przede wszystkim firm z sektora publicznego. Dla wielu przedsiębiorstw jest to ogromna szansa, na wprowadzenie długo oczekiwanych usprawnień. W jaki sposób szybko wdrażać produkty dobrej jakości w czasie, gdy wszystko dzieje się „tu i teraz”? Dlaczego tak ważna staje się rola Quality Assurance oraz jak zapewnić największą jakość rozwijanego oprogramowania? Bez względu na to, czy rozwijasz system, pracujesz nad rozwojem aplikacji, outsourcingiem zespołów i specjalistów, na te i wiele innych pytań, znajdziesz odpowiedź w poniższym artykule.
Zapewne nie raz zdarzyło Ci się utknąć w procesie logowania do aplikacji, natrafić na niezrozumiały komunikat o błędzie, czy też mieć problem z dokonaniem zakupu on-line. W każdej z tych sytuacji masz prawo czuć złość i frustrację z powodu złej kontroli jakości produktu cyfrowego. Obecnie, oprogramowanie komercyjne zawierające nawet najmniejsze bugi może powodować utratę znacznej części ruchu lub zmniejszyć zaangażowanie klientów. Natomiast błędy w kodzie powstałe dla poważnych aplikacji wojskowych, czy też przemysłowych mogą mieć znacznie poważniejsze konsekwencje. Awarie takiego oprogramowania w moment sieją spustoszenie i powodują ogromne straty finansowe oraz moralne. Znane więc „lepiej zapobiegać niż leczyć” jest tu bardzo trafione. Aby zapobiec przykrym zdarzeniom i zapewnić stały poziom jakości, do procesów wytwarzania oprogramowania wprowadza się Quality Assurance.
Zgodnie z normą ISO 9000, Quality Assurance jest sektorem zarządzania jakością, który zapewnienia, że wymagania jakościowe w firmie zostają spełnione. Dzięki właściwej organizacji działań, mamy wpływ na jakość. Jest to istotny aspekt funkcjonowania przedsiębiorstwa, który bezpośrednio oddziałuje na jej konkurencyjność. Quality Assurance (zapewnienie jakości) i Quality Control (kontrola jakości) to dwa aspekty zarządzania jakością. Chociaż niektóre działania związane z zapewnieniem jakości i kontrolą jakości są ze sobą powiązane, te dwie definiowane w różny sposób.
Quality Assurance
Quality Assurance tyczy się wszystkich zadań związanych z projektem. Począwszy od współpracy z klientem, poprzez zdefiniowanie ról i odpowiedzialności, wyboru odpowiedniej metodologii, komunikacji, terminów, czy narzędzi, kończąc na zdefiniowaniu wymagań i cyklu życia produktu. Zapewnienie jakości dotyczy wszystkich członków zespołu, umożliwiając im kształtowanie i definiowanie jakości. Wszystko uzależnione jest od kontekstu projektu oraz jego wartości biznesowej. Uściślając, proces Quality Assurance zapobiega błędom w procesie tworzenia oprogramowania. Odpowiada na pytanie – co zrobić, aby jakość była jak najlepsza? QA to nie tylko propagowanie roli jakości, ale dokonywanie szeregu analiz, doboru odpowiednich narzędzi, ustalanie standardów oraz podejmowanie znaczących dla produktu decyzji.
Quality Control
Kontrola jakości to proces, w którym szukamy błędów w zaprojektowanych produktach z wykorzystaniem różnych poziomów i rodzajów testów. QC dokładnie analizuje, czy wymagania jakościowe zostały spełnione — to narzędzie do weryfikacji jakości. W skład Quality Control wchodzi wdrożenie programu w celu jego przetestowania, za co jest odpowiedzialny wyłącznie zespół testerów. Quality Control ma miejsce po Quality Assurance
What You need?
Zadaj sobie pytanie: jakiej jakości oczekujesz? Zapewne na myśl przychodzi odpowiedź: najlepszej! I nie ma w tym nic złego. Kupując owoc, czy musi być on najsłodszy? Albo telefon, czy musi być najnowszy? Niekoniecznie. Gdy produkt jest naprawdę innowacyjny, pozwalamy sobie na niższą jakość z wielu względów, szczególnie gdy nie jesteśmy do końca przekonani co do pewności jego sukcesu.
Refaktoryzacja
Refaktoryzacja to technika stosowana w programowaniu, polegająca na przemianie już istniejącego kodu na czytelny i prostszy w utrzymaniu. Innymi słowy, to porządkowanie bałaganu w kodzie. Proces ten odgrywa szczególną rolę w aplikacjach, które są zaniedbane, gdzie wprowadzanie nowych funkcjonalności przyczyniłoby się do powstania kolejnych dużych problemów. Gdy dokonujemy refaktoryzacji istniejącego produktu, dobrze jest, aby ukierunkowywać go do uzyskania kodu o najwyższej możliwej jakości. Przyjrzyjmy się zatem podejściu Quality Assurance w tworzeniu oprogramowania.
Pozyskiwanie wymagań
To metody, które pozwolą zebrać informacje o projekcie, potrzebie czy konkretnym rozwiązaniu. Dzięki tym informacjom odkryjesz wymagania. Zbieranie wymagań potrzebuje analityka biznesowego, kodera i testera QA. Team określa, co trzeba dostarczyć w postaci opisów i kryteriów akceptacji. To etap, w którym QA Tester zadaje właściwe pytania dotyczące produktu.
Wdrożenie wymagań
To etap, gdzie następuje faza rozwoju. W tym miejscu mamy wiele możliwości poprawy jakości oprogramowania. To moment na wybór odpowiednich praktyk wytwarzania oprogramowania oraz praktyk związanych z QA.
Testowanie
Jest to obszar działań zespołu z obszaru walidacji i weryfikacji oprogramowania względem wcześniej zdefiniowanych wymagań, a także z zakresu testów niefunkcjonalnych: wydajności, bezpieczeństwa. Testowanie może się odbywać ręcznie, automatycznie lub półautomatycznie. Podczas testowania manualnego tester przechodzi przez wszystkie możliwe przypadki testowe w scenariuszu testowym, zbiera dane i przygotowuje raport końcowy. Natomiast podczas testowania automatycznego procesy odbywają się za pomocą narzędzi i skryptów. Dane pozyskiwane są automatycznie, tak samo, jak raporty końcowe. Istnieje także scenariusz, w którym testy wykonywane są automatycznie, ale całe środowisko testowe ustawiane jest ręcznie, mowa wtedy o testowaniu półautomatycznym.
Benefits
To istotne, aby od samego początku cyklu rozwoju oprogramowania działał w sposób właściwy. Za poprawnie wykonanym procesem kontroli stoi wiele korzyści, a takie podejście zdecydowanie pozwoli zaoszczędzić nie tylko czas, ale i pieniądze. Im później wykryty zostanie błąd, tym więcej będzie kosztować jego naprawa. Co więcej, dobrze zaprojektowany proces QA pozwala na poprawne zarządzanie jakością produktu. Nie ulega wątpliwości fakt, że jakość projektu ma kluczowe znaczenie dla zapewnienia pomyślnego wprowadzenia na rynek lub aktualizacji wersji produktu.
Zapewnienie i kontrola jakości to jeden z ważniejszych obszarów codzienności wielu z Was. Należy wspierać klientów w realizacji projektów zgodnie z normami jakościowymi, obowiązującymi regulacjami prawnymi oraz warunkami umownymi w całym cyklu życia produktu. Do zapewnienia odpowiedniej jakości rozwijanego oprogramowania przyczyniło się zacieranie granicy między Quality Assurance i Quality Control. Coraz większe doświadczenie projektowe testerów sprawia, że standardowe podejście do testów się zmienia, a testerzy częściej przejmują obowiązki QA. Ciągłe zmiany rynkowe wymusiły szybkie reagowanie i sprawne wdrażanie innowacyjnych rozwiązań cyfrowych. Wykorzystanie rozwiązań chmurowych umożliwia szybszy dostęp i skalowalność. Tak samo automatyzacja, AI i Machine Learning przyczyniają się do dostarczania produktów lepszej jakości. Iteracyjne dostarczanie produktów zapewnienia ciągłość procesów i pozwala na poprawę funkcjonalności rozwijanego produktu.