Pokrycie testami w testowaniu oprogramowania: jak je mierzyć
⚡ Inteligentne podsumowanie
Pokrycie testami w testowaniu oprogramowania mierzy, jak bardzo zestaw testów faktycznie sprawdza aplikację. Ujawnia nieprzetestowane wymagania, ścieżki kodu i ryzyka, dzięki czemu zespoły mogą dodawać konkretne przypadki i wydawać oprogramowanie z mierzalną pewnością.

Co to jest zasięg testów?
Pokrycie testami definiuje się w testowaniu oprogramowania jako metrykę, która mierzy ilość testów wykonanych przez zestaw testów. Będzie to obejmować gromadzenie informacji o tym, które części programu są wykonywane podczas uruchamiania zestawu testów, aby określić, które gałęzie instrukcji warunkowych zostały wykorzystane.
Mówiąc najprościej, jest to technika zapewniająca, że testy testują Twój kod lub jaka część kodu została wykorzystana poprzez uruchomienie testu.
Co daje pokrycie testowe?
W przypadku projektu na żywo pokrycie testami obejmuje cztery praktyczne działania:
- Znalezienie obszaru wymagania nie zaimplementowanego przez zbiór przypadków testowych
- Pomaga w tworzeniu dodatkowych przypadków testowych w celu zwiększenia zasięgu
- Identyfikacja ilościowej miary pokrycia testami, która jest pośrednią metodą kontroli jakości
- Identyfikowanie bezsensownych przypadków testowych, które nie zwiększają zasięgu
Korzyści z pokrycia testów w inżynierii oprogramowania
Działania te przekładają się na konkretne korzyści inżynieryjne.
- Może zapewnić jakość testu
- Może pomóc zidentyfikować, które części kodu zostały faktycznie zmienione w celu wydania lub poprawki
- Może określić wszystkie punkty decyzyjne i ścieżki w aplikacji, które nie zostały przetestowane, co pozwala na zwiększenie pokrycia testami
- Zapobiec ulegnie awarii? wyciek
- Czas, zakres i koszty można kontrolować
- Zapobieganie defektom na wczesnym etapie cyklu życia projektu
- Luki w wymaganiach, przypadki testowe i defekty na poziomie jednostki i kodu można znaleźć w łatwy sposób
Rodzaje pokrycia testowego
Zasięg nigdy nie jest pojedynczą liczbą. Zespoły track kilku typów jednocześnie, ponieważ każdy odpowiada na inne pytanie dotyczące tego samego zestawu. Poniższa tabela grupuje typy, z którymi spotykasz się najczęściej.
| Rodzaj pokrycia | Co mierzy | Najlepiej używany do |
|---|---|---|
| Pokrycie wyciągu (linii) | Linie wykonywalne są uruchamiane co najmniej raz | Testy jednostkowe i audyty starszego kodu |
| Oddział lub zasięg decyzji | Prawdziwy i fałszywy wynik każdej decyzji | Logika warunkowa i walidacyjna |
| Zakres stanu | Każde podwyrażenie boolowskie jako prawda i fałsz | Złożone wyrażenia AND lub OR |
| Pokrycie ścieżki | Unikalne trasy pokonywane przez moduł | Przepływy krytyczne dla bezpieczeństwa i przepływy finansowe |
| Pokrycie funkcji | Funkcje lub metody wywoływane przez testy | Warstwy API i usług |
| Zakres wymagań | Wymagania przypisane co najmniej jednemu testowi | Akceptacja i oszustwotracpodpisanie umowy |
| Pokrycie ryzyka | Zidentyfikowano obszary wysokiego ryzyka, w których przeprowadzono ćwiczenia | Krótkie cykle uwalniania |
Pierwsze pięć typów to środki na poziomie kodu i należą do testowanie w białej skrzyncepodczas gdy wymagania i pokrycie ryzyka znajdują się na poziomie planu testów.
Jakie są główne różnice między Code Zasięg i zasięg testów?
Code pokrycie i pokrycie testów to techniki pomiaru, które pozwalają ocenić jakość kodu aplikacji.
Oto kilka krytycznych różnic między kabinami tych metod pokrycia:
| Parametry | Code Pokrycie | Zasięg testu |
|---|---|---|
| Definicja | Code termin określający zakres stosowania, gdy kod aplikacji jest wykonywany podczas działania aplikacji. | Pokrycie testów oznacza ogólny plan testów. |
| Cel | Code metryki pokrycia mogą pomóc zespołowi monitorować automatyczne testy. | Pokrycie testowe to szczegółowe informacje na temat poziomu, w jakim przetestowano pisemny kod aplikacji. |
| Podtypy | Code zakres podzielony na podtypy, takie jak zakres oświadczeń, zakres warunków, zakres oddziałów, Togglzasięg e, zasięg FSM. | Brak podtypu metody pokrycia testem. |
Formuła pokrycia testu
Aby obliczyć zasięg testu, należy wykonać poniższe kroki:
Krok 1) Liczyć Y, całkowita liczba linii kodu w oprogramowaniu, które tworzysz testowanie
Krok 2) Liczyć X, liczba linii kodu, które obecnie wykonują wszystkie przypadki testowe
Teraz musisz znaleźć (X podzielone przez Y) pomnożone przez 100. Wynikiem tego obliczenia jest % pokrycia testowego.
Na przykład:
Jeżeli liczba wierszy kodu w komponencie systemu wynosi 500, a liczba wierszy wykonanych we wszystkich istniejących przypadkach testowych wynosi 50, wówczas pokrycie testowe wynosi:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Przykłady zasięgu testów
Jak pokazują poniższe przykłady, sam procent nigdy nie jest pełnym obrazem sytuacji.
1 przykład:
Na przykład, jeśli chcesz przetestować „nóż”, musisz skupić się na sprawdzeniu, czy dokładnie kroi warzywa lub owoce. Należy jednak zwrócić uwagę na inne aspekty, takie jak to, czy użytkownik powinien móc wygodnie nim operować.
2 przykład:
Na przykład, jeśli chcesz sprawdzić aplikację Notatnik, sprawdzenie jej podstawowych funkcji jest koniecznością. Należy jednak uwzględnić inne aspekty, ponieważ Notatnik reaguje w sposób przewidywalny podczas korzystania z innych aplikacji, użytkownik rozumie, do czego służy, i nie zawiesza się, gdy próbuje wykonać coś nietypowego itp.
Techniki pokrycia testów
Oba przykłady prowadzą do tego samego wniosku: osiągnięcie docelowego pokrycia zależy mniej od pisania większej liczby testów, a bardziej od wyboru odpowiedniej techniki projektowania testów. Poniższe techniki poszerzają pokrycie, jednocześnie zachowującping apartament jest mały.
- Analiza wartości brzegowych: Wybiera dane wejściowe na krańcach każdego prawidłowego zakresu, gdzie defekty gromadzą się najmocniej. Zobacz analiza wartości brzegowych dla rozwiązanych spraw.
- Podział równoważności: Grupuje dane wejściowe, które aplikacja traktuje identycznie, dzięki czemu pojedynczy przypadek może bezpiecznie reprezentować całą klasę wartości.
- Testowanie tabeli decyzyjnej: Obejmuje kombinacje warunków i ich oczekiwanych wyników w ramach jednej siatki.
- Testowanie przejścia stanu: Ćwiczy wszystkie prawidłowe i nieprawidłowe ruchy pomiędzy stanami aplikacji.
- Testowanie ścieżki bazowej: Wyprowadza minimalny zbiór niezależnych ścieżek z grafu przepływu sterowania.
- Testowanie oparte na ryzyku: Klasyfikuje funkcje według wpływu na działalność biznesową i w pierwszej kolejności uwzględnia te o najwyższym ryzyku.
- Testy eksploracyjne: Ujawnia luki, których nigdy nie ujawniają scenariusze ani raporty.
Jak osiągnąć pokrycie testowe?
Po wybraniu technik zasięg zapewniają cztery ustalone trasy.
- Pokrycie testami można uzyskać, stosując techniki przeglądu statycznego, takie jak recenzje wzajemne, inspekcje i inspekcje
- Poprzez przekształcenie defektów ad hoc w wykonywalne przypadki testowe
- Na poziomie kodu lub testu jednostkowego pokrycie testami można osiągnąć, korzystając z narzędzi do automatycznego pokrycia kodu lub pokrycia testami jednostkowymi
- Pokrycie testami funkcjonalnymi można wykonać za pomocą odpowiednich narzędzi do zarządzania testami
Jak poprawić zasięg testów
Ustalenie zasięgu to punkt wyjścia; jego zwiększanie to powtarzalna procedura. Przećwicz tę sekwencję na początku każdego cyklu wydania.
- Ustal aktualną liczbę bazową. Sporządź raport dotyczący pokrycia i osobno rejestruj pokrycie oświadczenia, gałęzi i wymagań, aby luki były widoczne dla każdego modułu, a nie ukryte w jednej średniej dla całego projektu.
- Mapowanie testów do wymagań. Budować tracSiatka eability, która łączy każde wymaganie z co najmniej jednym przypadkiem testowym. Każdy pusty wiersz to potwierdzona luka, a nie podejrzenie.
- Uporządkuj moduły według ryzyka. Logika płatności, uwierzytelniania i migracji danych zasługuje na o wiele głębsze omówienie niż statyczny ekran pomocy, dlatego przeznacz budżet na obszary, w których awaria byłaby najbardziej dotkliwa.
- Dodaj przypadki negatywne i skrajne. Puste dane wejściowe, za duże wartości, przekroczenia limitu czasu sieci i błędy uprawnień docierają do gałęzi, których testy happy-path nigdy nie dotykają.
- Ułóż poziomy testów. Połączyć testów jednostkowych, testy integracyjnei kontrole kompleksowe, ponieważ każdy poziom obejmuje to, czego pozostałe nie mogą strukturalnie zrobić.
- Zautomatyzuj zestaw narzędzi regresyjnych. Promostabilne przypadki do testowanie automatyzacji i wykonaj je w środku Potok CI/CD po każdym zatwierdzeniu.
- Wycofaj zbędne sprawy. Usuń zduplikowane testy, które wydłużają czas wykonania, nie dodając ani jednej nieobjętej linii.
- Revśledź trendy w każdym sprincie. Traczasięg k obok gęstość defektówRosnący wyciek w stosunku do płaskiego pokrycia jest wczesnym ostrzeżeniem o martwym polu.
⚠️ Ostrzeżenie: Nie traktuj 100% jako celu. Zestaw o wartości 85% i silnych asercjach chroni wydanie znacznie lepiej niż 95% płytkich kontroli, które wykonują kod bez weryfikacji wyniku.
Wady pokrycia testowego
Ubezpieczenie nadal jest cenne, jednak ma swoje ograniczenia, o których warto wspomnieć przed podaniem jakiegokolwiek procentu.
- Większość zadań w pokryciu testowym jest wykonywana ręcznie, ponieważ nie ma narzędzi do automatyzacji. Dlatego analiza wymagań i tworzenie przypadków testowych wymaga dużo wysiłku.
- Pokrycie testów pozwala policzyć cechy, a następnie dokonać pomiaru w oparciu o kilka testów. Jednak zawsze jest miejsce na błędy w ocenie.
