Co to jest testowanie wątków w testowaniu oprogramowania?
⚡ Inteligentne podsumowanie
Testowanie wątków weryfikuje kluczowe możliwości funkcjonalne pojedynczego zadania biznesowego w trakcie jego realizacji w ramach zintegrowanego systemu. Jest ono przeprowadzane na wczesnym etapie testowania integracyjnego, a nie dopiero po zakończeniu realizacji każdego komponentu.

Co to jest testowanie wątków?
Testowanie wątków to rodzaj testowania oprogramowania, który weryfikuje kluczową funkcjonalność konkretnego zadania, zwanego wątkiem. Zwykle przeprowadza się go na wczesnym etapie. testy integracyjne Faza. Testowanie oparte na wątkach to jedna ze strategii przyrostowych stosowanych podczas testowania integracji systemów. Z tego powodu test wątków jest bardziej poprawnie opisany jako test interakcji wątków.
Wątek tutaj nie jest tylko wątkiem systemu operacyjnego. Inżynieria oprogramowania W terminologii wątek to jedna kompletna transakcja biznesowa — na przykład „klient składa zamówienie” — tracPrzechodzi przez każdy moduł, którego dotyka. Testowanie wątków polega na sprawdzeniu, czy ta pojedyncza ścieżka nadal zachowuje się poprawnie po połączeniu modułów.
Poniższy diagram pokazuje, w jaki sposób poszczególne wątki są integrowane i uruchamiane jako podsystem przed zmontowaniem całego systemu.
Rodzaje testowania gwintów
Testowanie oparte na wątkach dzieli się na dwie kategorie. Rozróżnienie to decyduje zarówno o danych testowych, jak i o tym, jakie defekty można znaleźć.
- Testowanie pojedynczego wątku: Test jednowątkowy obejmuje jedną transakcję aplikacji na raz. Obsługiwane jest tylko jedno żądanie, więc zachowanie odpowiedzi jest przewidywalne, a test można łatwo napisać i powtórzyć.
- Testowanie wielowątkowe: Test wielowątkowy obejmuje kilka jednocześnie aktywnych transakcji. Dla tej samej usługi przygotowywane są oddzielne wątki, co pozwala na obserwację responsywności i obsługi stanu współdzielonego przy jednoczesnym obciążeniu.
Transakcja, która pomyślnie przeszła testowanie jednowątkowe, może nadal zakończyć się niepowodzeniem w teście wielowątkowym, ponieważ drugi przebieg powoduje konflikt o te same rekordy, połączenia i pamięć.
Jak przeprowadzić testowanie wątków
Proces wątkowy koncentruje się na działaniach integracyjnych, a nie na całym cyklu rozwoju. W praktyce podejście to wygląda następująco.
- Testowanie oparte na wątkach to uogólniona forma testowania opartego na sesji, w tym sensie, że sesje są formą wątku, ale wątek niekoniecznie jest sesją.
- Wątek lub program (niewielka funkcjonalność) jest integrowany i testowany stopniowo jako podsystem, a następnie wykonywany w całym systemie.
- Na najniższym poziomie zapewnia integratorom lepszą wiedzę na temat zakresu testów.
- Zamiast testować bezpośrednio komponenty oprogramowania, integratorzy muszą skupić się na testowaniu logicznych ścieżek wykonania w kontekście całego systemu.
Ponieważ jednostką pracy jest ścieżka biznesowa, a nie komponent, testowanie wątków naturalnie znajduje się pomiędzy testowanie modułów i pełne testowanie systemu.
Wskazówki dotyczące testowania wielowątkowego
Defekty wielowątkowe zależą od czasu, więc pojedynczy, czysty przebieg niewiele dowodzi. Poniższe wskazówki zwiększają szansę na ich wykrycie.
- Przetestuj swój program wielowątkowy, uruchamiając go wielokrotnie przy różnych kombinacjach uruchomionych aplikacji.
- Przetestuj swój program wielowątkowy, uruchamiając wiele jego instancji jednocześnie.
- Uruchamiaj wielowątkowe programy na różnych modelach sprzętu przy różnych poziomach obciążenia i obciążenia.
- Stosuj inspekcję kodu, ponieważ niektóre błędy synchronizacji są łatwiejsze do odczytania niż do odtworzenia.
- Zbieraj tylko błędy i awarie, które wystąpiły w wątkach innych niż główny.
Typowe defekty wykrywane podczas testowania wątków
Błędy współbieżności rzadko ujawniają się przy użyciu czystego stosu trace. Poniższe kategorie wyjaśniają większość problemów ujawnianych podczas wykonywania wielu wątków, a każda z nich charakteryzuje się odrębnym objawem wartym rozpoznania.
- Warunki wyścigu: Dwa wątki odczytują i zapisują tę samą wartość bez kolejności, więc wynik końcowy zależy od tego, który wątek zakończył działanie jako pierwszy. Objaw: sumy są poprawne w niektórych przebiegach, a błędne w innych.
- Impas: Dwa wątki posiadają blokadę, której potrzebuje drugi wątek, i żaden z nich nie kontynuuje działania. Objaw: transakcja zawiesza się na czas nieokreślony, zamiast zakończyć się błędem.
- Konflikt o zasoby: Wątki ustawiają się w kolejce dla tego samego połączenia, uchwytu pliku lub rekordu, a przepustowość spada na długo przed osiągnięciem limitu sprzętowego.
- Korupcja danych: Częściowo zapisane struktury współdzielone pozostawiają rekordy w stanie, którego nie mogłaby wygenerować żadna prawidłowa transakcja.
- Głód: Wątek o niskim priorytecie nigdy nie uzyska potrzebnego mu zasobu, więc jedna ścieżka użytkownika traci limit czasu, podczas gdy reszta systemu wydaje się być w porządku.
W przypadku każdego z nich konieczne jest odnotowanie nieudanego przebiegu w dziennikach, ponieważ defekt, który odtwarza się raz na pięćdziesiąt prób, w przeciwnym razie nie da się zgłosić za pomocą proces zarządzania defektami.
Testowanie wątków a testowanie współbieżności a testowanie integracji
Te trzy terminy nakładają się na siebie i często są mylone w planach testów. Tabela rozdziela je celowo.
| WYGLĄD | Testowanie wątków | Testowanie współbieżności | Testy integracyjne |
| Jednostka testowana | Jedna transakcja biznesowa obejmująca wiele modułów | Wielu użytkowników lub wątków działających jednocześnie | Interfejsy między dwoma lub więcej komponentami |
| Główne pytanie | Czy ta ścieżka kluczowa działa od początku do końca? | Co ulega awarii, gdy dostęp jest jednoczesny? | Czy moduły komunikują się ze sobą prawidłowo? |
| Typowy etap | Wczesne testowanie integracyjne | Testowanie systemu lub wydajności | Po testach jednostkowych |
| Wady będące celem | Zerwane ścieżki wykonania, brakujące przekazania | Blokady, warunki wyścigu, rywalizacja o blokady | Niedopasowanie interfejsów, nieprawidłowe danetracts |
| Relacja | Wariant wielowątkowy pokrywa się z testowaniem współbieżności | Szerszy niż wielowątkowy fragment testowania wątków | Testowanie wątków to jedna ze strategii przyrostowych |
W skrócie, testowanie współbieżności Testowanie wątków pyta, jaki wpływ na system ma jednoczesny dostęp, podczas gdy testowanie wątków sprawdza, czy jedna ważna ścieżka w ogóle przetrwa integrację. Zespoły, które uruchamiają oba te testy, zazwyczaj planują testowanie wątków w pierwszej kolejności.
Zalety testowania wątków
Technika ta jest przydatna w planie integracji z kilku praktycznych powodów.
- Kluczowe ścieżki biznesowe są weryfikowane na wczesnym etapie, co oznacza, że wszelkie usterki można wykryć przed zmontowaniem całego systemu.
- Integratorzy uzyskują jasny obraz zakresu, ponieważ jednostka testowa jest rozpoznawalną transakcją, a nie abstracgranica składowej t.
- Testowanie logicznych ścieżek wykonania w kontekście systemu ujawnia błędy, które występują w izolacji testowanie komponentów nie widać.
- W przypadku przebiegów wielowątkowych ujawniają się błędy współbieżności — blokady, wyścigi warunków i konflikty zasobów — które w przeciwnym razie dotarłyby do środowiska produkcyjnego.
- Przyrostowa integracja sprawia, że powierzchnia debugowania jest niewielka, ponieważ dodawany jest tylko jeden wątek na raz.
- Wyniki są bezpośrednio przekazywane do testy regresji, ponieważ wątek przejściowy jest oczywistym kandydatem do zestawu regresyjnego.
Wady testowania gwintów
- W przypadku testowania wielowątkowego największym wyzwaniem jest możliwość zaprogramowania powtarzalnego testu jednostkowego.
- Pisanie testów jednostkowych dla kodu wielowątkowego jest trudnym zadaniem.
- Kryteria testowania dla testów wielowątkowych różnią się od kryteriów testowania jednowątkowego. W przypadku testów wielowątkowych czynniki takie jak rozmiar pamięci, pojemność pamięci masowej i problemy z synchronizacją zmieniają się, gdy kod jest wywoływany na innym sprzęcie.
- Wątków nie można testować, dopóki nie będą dostępne moduły, z którymi się stykają, dlatego harmonogramowanie zależy od kolejności integracji.
- Sporadyczne awarie można łatwo zignorować, uznając je za hałas otoczenia, dlatego też systematyczne rejestrowanie danych jest niezwykle istotne.

