Czy jest ktoś, kto może jasno zdefiniować te poziomy testowania, ponieważ trudno mi je rozróżnić podczas wykonywania TDD lub testów jednostkowych. Proszę, jeśli ktoś może wyjaśnić, jak i kiedy je wdrożyć?
Czy jest ktoś, kto może jasno zdefiniować te poziomy testowania, ponieważ trudno mi je rozróżnić podczas wykonywania TDD lub testów jednostkowych. Proszę, jeśli ktoś może wyjaśnić, jak i kiedy je wdrożyć?
Odpowiedzi:
Krótko:
Testowanie jednostkowe - testujesz jednostkowo każdy fragment kodu. Pomyśl o każdym pliku lub klasie.
Testowanie integracyjne - podczas łączenia ze sobą kilku jednostek, które współpracują, należy przeprowadzić testy integracyjne, aby upewnić się, że integracja tych jednostek nie spowodowała żadnych błędów.
Testowanie regresyjne - po integracji (i być może naprawieniu) należy ponownie uruchomić testy jednostkowe. To jest test regresyjny, aby upewnić się, że dalsze zmiany nie zepsują żadnych jednostek, które zostały już przetestowane. Testy jednostkowe, które już wykonałeś, stworzyły testy jednostkowe, które można uruchamiać wielokrotnie w celu testowania regresji.
Testy akceptacyjne - gdy użytkownik / klient / firma otrzyma funkcjonalność, on (lub Twój dział testów) przeprowadzi testy akceptacyjne, aby upewnić się, że funkcjonalność spełnia jego wymagania.
Możesz także chcieć zbadać testy białej i czarnej skrzynki. Istnieją również testy wydajności i obciążenia, a także testowanie „wad” do rozważenia.
Test jednostkowy: jeśli się nie powiedzie, informuje, który fragment kodu wymaga naprawy.
Test integracji: jeśli się nie powiedzie, informuje, że elementy aplikacji nie współpracują ze sobą zgodnie z oczekiwaniami.
Test akceptacji: jeśli się nie powiedzie, informuje, że aplikacja nie robi tego, czego oczekuje od niej klient.
Test regresji: jeśli się nie powiedzie, informuje, że aplikacja nie zachowuje się już tak, jak kiedyś.
Oto proste wyjaśnienie każdego z wymienionych testów i kiedy mają one zastosowanie:
Test jednostkowy Test jednostkowy jest wykonywany na samodzielnej jednostce (zwykle klasie lub metodzie) i powinien być wykonywany za każdym razem, gdy jednostka została zaimplementowana lub aktualizacja jednostki została zakończona.
Oznacza to, że jest uruchamiany za każdym razem, gdy napiszesz klasę / metodę, naprawisz błąd, zmienisz funkcjonalność ...
Test integracji Test integracji ma na celu sprawdzenie, jak dobrze kilka jednostek współdziała ze sobą. Ten rodzaj testu powinien być wykonywany zawsze, gdy pojawiła się nowa forma komunikacji między jednostkami lub zmienił się charakter ich interakcji.
Oznacza to, że jest uruchamiany za każdym razem, gdy niedawno napisana jednostka jest integrowana z resztą systemu lub gdy jednostka, która współdziała z innymi systemami, została zaktualizowana (i pomyślnie ukończyła testy jednostkowe).
Test regresji Testy regresyjne są przeprowadzane za każdym razem, gdy cokolwiek zostało zmienione w systemie, w celu sprawdzenia, czy nie zostały wprowadzone żadne nowe błędy.
Oznacza to, że jest uruchamiany po wszystkich łatkach, aktualizacjach, poprawkach błędów. Testowanie regresji można postrzegać jako szczególny przypadek łączonego testu jednostkowego i testu integracji.
Test akceptacji akceptacyjne są przeprowadzane zawsze, gdy zachodzi potrzeba sprawdzenia, czy podsystem (ewentualnie cały system) spełnia wszystkie swoje specyfikacje.
Oznacza to, że jest uruchamiany głównie przed zakończeniem nowego elementu dostawy lub ogłoszeniem zakończenia większego zadania. Potraktuj to jako ostateczną kontrolę, aby zobaczyć, czy naprawdę osiągnąłeś swoje cele, zanim pobiegniesz do klienta / szefa i ogłosisz zwycięstwo.
Tak przynajmniej się nauczyłem, chociaż jestem pewien, że istnieją inne przeciwstawne poglądy. Tak czy inaczej, mam nadzieję, że to pomoże.
Spróbuję:
Test jednostkowy: czy moja pojedyncza metoda działa poprawnie? (NIE Zależności lub Zależności Mocked)
Test integracji: czy moje dwa oddzielnie opracowane moduły działają poprawnie po złożeniu ?
Test regresji: czy coś złamałem, zmieniając / pisząc nowy kod? (uruchamianie testów jednostkowych / integracyjnych z każdym zatwierdzeniem jest technicznie (automatycznym) testowaniem regresyjnym). Częściej używany w kontekście kontroli jakości - ręcznej lub automatycznej.
Test akceptacji : test wykonany przez klienta, czy „akceptuje” dostarczone oprogramowanie
Nie mogę komentować (reputacja zbyt niska: - |), więc ...
@Andrejs dobrze wskazuje różnice między środowiskami związanymi z każdym typem testów.
Testy jednostkowe są zwykle uruchamiane na maszynie deweloperskiej (i prawdopodobnie podczas kompilacji CI) z symulowanymi zależnościami do innych zasobów / systemów.
Testy integracyjne z definicji muszą mieć (w pewnym stopniu) dostępność zależności; inne zasoby i systemy są nazywane tak, że środowisko jest bardziej reprezentatywne. Dane do testów mogą być wyszydzane lub stanowić niewielki, zaciemniony podzbiór rzeczywistych danych produkcyjnych.
Testy UAT / akceptacyjne muszą przedstawiać rzeczywiste doświadczenia zespołom kontroli jakości i zespołom biznesowym akceptującym oprogramowanie. Potrzebna jest więc pełna integracja i realistyczne ilości danych oraz pełne zamaskowane / zaciemnione zestawy danych, aby zapewnić realistyczną wydajność i wrażenia użytkownika końcowego.
Inne „choroby” mogą również wymagać, aby środowisko było jak najbliższe rzeczywistości, aby symulować doświadczenie produkcyjne, np. Testy wydajności, bezpieczeństwo, ...