Przejdź do treści

Jak testujemy oprogramowanie, zanim trafi do klienta

Nowy CRM trafia do handlowców w poniedziałek rano. Po dwóch godzinach nikt nie może zapisać notatki ze spotkania, formularz kontaktowy gubi dane, a raport pipeline'u pokazuje inne liczby niż Excel. Według danych branżowych firmy tracą na słabej jakości oprogramowania ponad 3 biliony dolarów rocznie, a większości takich problemów da się uniknąć. Opisujemy, jak testujemy CRM-y, systemy ERP i automatyzacje procesów.

AutorDział IT
  • 8 min czytania
  • 324 wyświetlenia
Jak testujemy oprogramowanie, zanim trafi do klienta

Dlaczego testowanie to inwestycja, a nie koszt

Wielu właścicieli firm traktuje testy jak dodatkowy wydatek, który wydłuża projekt i podnosi budżet. Dane pokazują coś innego: naprawa błędu wykrytego po wdrożeniu kosztuje nawet stukrotnie więcej niż jego wychwycenie na etapie projektowania lub programowania.

Ile naprawdę kosztuje pominięcie testów

Programiści spędzają średnio 20% czasu na poprawianiu błędów. To jeden dzień w tygodniu, w którym zespół gasi pożary zamiast rozwijać nowe funkcje. W firmie z kilkoma programistami daje to dziesiątki tysięcy złotych rocznie wydanych na naprawy.

Czas programistów to jednak tylko część rachunku. Każdy błąd w CRM-ie czy systemie ERP oznacza sfrustrowanych pracowników, utracone szanse sprzedażowe, błędne raporty, na których zarząd opiera decyzje, a w skrajnych przypadkach utratę zaufania klientów.

Zwrot z inwestycji w QA

Według raportu Forrester zwrot z inwestycji w jakość doświadczenia użytkownika wynosi 9900%. To nie pomyłka: każda złotówka wydana na UX i testy użyteczności może przynieść nawet 99 złotych zwrotu. Wśród firm, które wdrożyły automatyzację testów, ponad 60% raportuje dodatni zwrot w pierwszym roku, a 24% widzi go praktycznie od razu.

U nas testowanie jest częścią tworzenia oprogramowania, a nie dodatkiem. Każdy system przechodzi dwa poziomy weryfikacji: manualne testy UX wykonywane przez testerów oraz automatyczne testy, które pokrywają kod.


Poziom pierwszy: manualne testy UX, czyli system oczami użytkownika

Automatyzacja bardzo pomaga, ale pewnych rzeczy maszyna nie wyłapie. Czy przycisk „Zapisz” jest tam, gdzie człowiek go szuka? Czy księgowa, która nie zna żargonu, zrozumie komunikat błędu? Czy kolejność kroków w procesie zamówienia ma sens biznesowy? Na takie pytania odpowiadają nasi testerzy.

Na czym polegają manualne testy UX

Wykwalifikowany tester wciela się w użytkownika końcowego i przechodzi wszystkie ścieżki w systemie. Samo sprawdzenie, czy coś działa technicznie, nie wystarcza. Liczy się to, czy działa dobrze dla kogoś, kto będzie z tego korzystał osiem godzin dziennie, pięć dni w tygodniu.

Tester sprawdza nawigację: użytkownik ma zawsze wiedzieć, gdzie jest i jak dojść do potrzebnej funkcji. Ocenia, czy formularze są logicznie ułożone, a etykiety pól zrozumiałe bez instrukcji. Czyta komunikaty błędów, bo każdy powinien mówić, co poszło nie tak i jak to naprawić. Pilnuje też spójności interfejsu, żeby podobne akcje wyglądały i działały tak samo w całym systemie.

Scenariusze oparte na prawdziwych procesach

Butikową agencję od fabryki oprogramowania odróżnia to, jak dobrze zna procesy klienta. Zanim tester otworzy system, dostaje pełną dokumentację procesów, które system ma obsługiwać.

Weźmy CRM dla firmy B2B. Tester nie sprawdza tylko, czy da się dodać kontakt. Przechodzi całą drogę: import leadów z kampanii marketingowej, przypisanie opiekuna handlowego, rejestrowanie kolejnych kontaktów, konwersję na klienta i przekazanie go do obsługi. Na każdym etapie ocenia, czy system pasuje do sposobu pracy handlowca, czy wymusza czasochłonne obejścia.

Zgłoszenia i współpraca z programistami

Każda uwaga trafia do systemu zgłoszeń z dokładnym opisem: co zrobiono, czego się spodziewano i co faktycznie się stało. Dołączamy zrzuty ekranu albo nagrania, żeby nikt nie musiał zgadywać, co tester miał na myśli. Programista dostaje wszystko, czego potrzebuje do szybkiej poprawki.

Regularnie spotykamy się z zespołem programistów i omawiamy problemy, które się powtarzają. Jeśli w wielu miejscach komunikaty błędów są zbyt techniczne, wspólnie ustalamy standard pisania ich prostym językiem. Dzięki temu podobne usterki nie wracają.


Poziom drugi: automatyczne testy i pokrycie kodu

Za każdym przyciskiem i formularzem kryją się tysiące linii kodu. Mają działać poprawnie teraz, ale też po zmianach wprowadzonych za miesiąc, pół roku czy dwa lata. Tę stabilność zapewniają testy automatyczne.

Czym jest pokrycie kodu testami

Pokrycie kodu (code coverage) mówi, jaki procent kodu źródłowego sprawdzają testy automatyczne. Przy pokryciu 80% cztery piąte ścieżek wykonania programu jest weryfikowane przy każdej zmianie.

Testy automatyczne wykrywają od 70 do 80% błędów znajdowanych w fazie testowania. Wykonują się błyskawicznie: dla tej samej funkcjonalności czas testu automatycznego bywa nawet o 90% krótszy niż ręcznego. Można je uruchamiać setki razy dziennie bez dodatkowych kosztów, a każde powtórzenie testu ręcznego zabiera czas człowieka.

Jakie testy piszemy

W projektach stosujemy kilka poziomów, a każdy sprawdza co innego.

Testy jednostkowe sprawdzają pojedyncze funkcje: czy liczenie rabatu jest poprawne, czy walidacja numeru NIP odrzuca błędne dane, czy algorytm przydziału leadów wybiera właściwego handlowca. To podstawa piramidy testów, najszybszy i najliczniejszy rodzaj testów.

Testy integracyjne sprawdzają współpracę komponentów: czy moduł zamówień poprawnie rozmawia z magazynem, czy dane z formularza na stronie trafiają do bazy CRM w oczekiwanym formacie. Łapią problemy na styku elementów, których testy jednostkowe nie widzą.

Testy end-to-end odtwarzają pełne scenariusze użycia, podobnie jak tester manualny, ale automatycznie i powtarzalnie. Przeglądarka uruchamia się sama, klika przyciski, wypełnia formularze i sprawdza, czy na ekranie pojawia się to, co powinno.

Ciągła integracja: testy przy każdej zmianie

Testy nie czekają na koniec projektu. Każda zmiana w kodzie uruchamia pełny zestaw testów, zanim trafi do głównej gałęzi projektu. Gdy któryś test nie przejdzie, programista od razu dostaje informację i poprawia błąd, zanim ten pójdzie dalej.

Ta praktyka nazywa się ciągłą integracją (CI). Skraca czas od wprowadzenia błędu do jego wykrycia. Im krótszy ten odstęp, tym taniej naprawić błąd: programista wciąż pamięta, co zmieniał, i szybko znajduje przyczynę.


Dlaczego potrzebne są i testy manualne, i automatyczne

Można zapytać: skoro testy automatyczne są szybsze i tańsze w utrzymaniu, po co testerzy manualni? Albo odwrotnie: skoro człowiek oceni UX, to czy warto pisać testy automatyczne? Potrzebne są oba rodzaje, bo każdy łapie to, czego drugi nie zobaczy.

Co wyłapuje który rodzaj testów

Testy automatyczne najlepiej sprawdzają logikę biznesową, obliczenia, reguły walidacji i integracje między systemami. Bezbłędnie przejdą tysiące kombinacji danych, które człowiek testowałby tygodniami. Nie ocenią jednak, czy kolor przycisku ma wystarczający kontrast, czy komunikat brzmi przyjaźnie i czy rozmieszczenie elementów jest intuicyjne.

Tester manualny zauważy, że formularz wymaga zbyt wielu kliknięć, że słownictwo w systemie nie pasuje do języka branży klienta albo że jakaś funkcja jest schowana zbyt głęboko w menu. Znajdzie też sytuacje brzegowe, których programista nie przewidział, bo tester myśli jak użytkownik, a nie jak autor systemu.

Jak dobrać proporcje

Badania branżowe pokazują, że firmy zmierzają do równowagi: około 73% organizacji chce osiągnąć proporcję 50:50 między testami manualnymi a automatycznymi albo przechylić ją na stronę automatyzacji. W praktyce optymalny układ zależy od typu projektu.

Przy CRM-ach i systemach ERP z rozbudowaną logiką biznesową rekomendujemy wysokie pokrycie testami automatycznymi (od 70 do 80%) oraz regularne testy manualne UX przed każdym większym wydaniem. Przy aplikacjach z dynamicznym interfejsem i częstymi zmianami wizualnymi proporcje mogą być bardziej wyrównane.


Proces QA krok po kroku

Pokażemy to na przykładzie jednej funkcji, od początku do końca.

Programowanie: testy powstają razem z kodem

Programista, który tworzy moduł raportów w systemie ERP, najpierw pisze test automatyczny opisujący oczekiwane zachowanie: „dla danych sprzedażowych z ostatniego kwartału raport powinien zawierać sumę przychodów, liczbę transakcji i średnią wartość zamówienia”. Dopiero potem pisze kod, który to realizuje. Takie podejście nazywa się test-driven development (TDD) i zmusza do przemyślenia wymagań przed rozpoczęciem kodowania.

Po zakończeniu pracy programista uruchamia lokalnie wszystkie testy modułu raportów. Jeśli przechodzą, wysyła kod do repozytorium, gdzie system CI odpala pełny zestaw testów projektu. Każdy błąd blokuje dalsze kroki i trzeba go od razu obsłużyć.

Testy manualne: sprawdzenie doświadczenia użytkownika

Gdy nowa funkcja przejdzie testy automatyczne, trafia do testera manualnego. Dostaje scenariusz oparty na prawdziwym przypadku użycia: „jako dyrektor finansowy chcę wygenerować raport kwartalny dla zarządu, wyeksportować go do PDF i wysłać mailem członkom rady nadzorczej”.

Tester przechodzi scenariusz i dokumentuje każdy krok. Sprawdza, czy dane w raporcie są czytelnie sformatowane, czy wykresy mają sensowne opisy osi i czy eksport do PDF zachowuje układ na różnych formatach papieru. Patrzy też na drobiazgi: czy przycisk eksportu łatwo znaleźć, czy użytkownik dostaje potwierdzenie zakończenia operacji i czy przy dużych zbiorach danych pojawia się wskaźnik postępu.

Poprawki i ponowna weryfikacja

Uwagi testera trafiają do systemu zgłoszeń z priorytetami. Błędy krytyczne (system nie generuje raportu) blokują wydanie. Błędy średnie (zły format daty) trzeba naprawić przed wdrożeniem. Pomysły na usprawnienia (skrót klawiszowy) idą do backlogu i wracają przy kolejnych iteracjach.

Po poprawkach tester wykonuje retesty: potwierdza, że problemy zniknęły i że naprawa nie wprowadziła nowych defektów. Wdrożenie następuje dopiero po pozytywnym zamknięciu tego cyklu.


Co zyskujesz, wybierając agencję z procesem QA

Wybierając dostawcę oprogramowania, patrzy się na cenę i portfolio, ale to nie wszystko. Podejście firmy do jakości wpływa na to, jak będzie wyglądała współpraca, i na wartość inwestycji w dłuższej perspektywie.

Mniej niespodzianek po wdrożeniu

System po dwóch poziomach testów trafia do użytkowników w stanie gotowym do pracy. Żadne testy nie gwarantują zera błędów, ale zmniejszają ich liczbę i wagę do poziomu, który nie zakłóca codziennej pracy.

Szybsze zmiany w przyszłości

Solidne pokrycie testami daje pewność przy modyfikacjach. Gdy za pół roku zechcesz dodać moduł albo połączyć system z innym narzędziem, programiści nie muszą się bać, że „zepsują coś, co działało”. Testy same sprawdzą, czy dotychczasowe funkcje nadal działają.

Dokumentacja, która się nie starzeje

Dobrze napisane testy opisują też, jak system się zachowuje. Nowy programista może je przeczytać, żeby poznać reguły biznesowe i oczekiwane zachowanie każdego modułu. Przy wieloletnim utrzymaniu i rozwoju systemu bardzo się to przydaje.


Jakość buduje się świadomie

Testy nie opóźniają wdrożenia, tylko sprawiają, że jego efekt jest trwały. Manualne testy UX razem z automatycznym pokryciem kodu dają system, który działa poprawnie i pasuje do tego, jak ludzie naprawdę w nim pracują.

Butikowa agencja może poświęcić każdemu projektowi więcej uwagi, niż dadzą wielkie fabryki oprogramowania. Nasi testerzy poznają specyfikę Twojej branży i procesów. Programiści piszą testy z myślą o utrzymaniu systemu przez lata. Efektem jest oprogramowanie, które służy firmie długo, a nie generuje kolejnych problemów do rozwiązania.

Jeśli planujesz indywidualny CRM, system ERP albo automatyzację procesów biznesowych, napisz do nas. Przeanalizujemy Twoje potrzeby i zaproponujemy rozwiązanie, które przejdzie dokładne testy, zanim trafi do Twoich pracowników. Pierwsza konsultacja jest bezpłatna.


Tagi

Udostępnij ten artykuł

Wróć do bloga

Pliki cookies

Używamy niezbędnych plików cookies i jednego funkcjonalnego, tego tylko za Twoją zgodą. Statystyki odwiedzin liczymy na serwerze, bez cookies. Polityka cookies