Co to jest test jednostkowy, Test integracyjny, Test dymu, test regresji?

Co to jest test jednostkowy, Test integracyjny, Test dymu, test regresji i jakie są różnice między nimi? Jakich narzędzi mogę użyć dla każdego z nich?

Na przykład używam JUnit i NUnit do testów jednostkowych i integracyjnych. Czy są jakieś narzędzia do testowania dymu lub regresji?

Author: OmG, 2009-02-06

20 answers

  • Test jednostkowy : określić i przetestować jeden punkt umowy jednej metody klasy. Powinno to mieć bardzo wąski i dobrze określony zakres. Złożone zależności i interakcje ze światem zewnętrznym są stubowane lub wyśmiewane.

  • Test integracji : Test poprawnego współdziałania wielu podsystemów. Jest tam całe spektrum, od testowej integracji między dwiema klasami, po testową integrację z produkcją środowisko.

  • Smoke test (aka sanity check): prosty test integracji, w którym sprawdzamy, czy po wywołaniu testowanego systemu powraca on normalnie i nie wybucha.

      [1]}testowanie dymu jest analogią z elektroniką, gdzie pierwszy test następuje podczas zasilania obwodu (jeśli pali, jest źle!)...
  • ... i, najwyraźniej , z kanalizacją , gdzie system rur jest dosłownie wypełniony dymem, a następnie sprawdzany wizualnie. Jeśli coś pali, system jest nieszczelny.
  • Test regresji: test, który został napisany, gdy błąd został naprawiony. Zapewnia, że ten konkretny błąd nie wystąpi ponownie. Pełna nazwa to "test bez regresji". Może to być również test wykonany przed zmianą aplikacji, aby upewnić się, że aplikacja zapewnia taki sam wynik.

  • Do tego dodam:

    • Test akceptacji : Test, czy dana funkcja lub przypadek użycia jest poprawnie zaimplementowane. Jest podobny do testu integracyjnego, ale z naciskiem na przypadek użycia, aby zapewnić, a nie na komponenty zaangażowane.

    • Test Systemu : testuje system jako czarną skrzynkę. Zależności od innych systemów są często wyśmiewane lub stubowane podczas testu (w przeciwnym razie byłby to bardziej test integracji).

    • Pre-flight check: testy, które są powtarzane w środowisku produkcyjnym, aby złagodzić "buildy na mojej maszynie" syndrom. Często jest to realizowane poprzez wykonanie testu akceptacyjnego lub testu dymu w środowisku podobnym do produkcji.

     870
    Author: ddaa,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2018-07-26 16:15:21
    • test jednostkowy : Test automatyczny do testowania wewnętrznego działania klasy. Powinien to być samodzielny test, który nie jest związany z innymi zasobami.
    • Test integracji : automatyczny test, który jest wykonywany na środowisku, tak podobnym do testów jednostkowych, ale z zewnętrznymi zasobami (db, dostęp do dysku)
    • Test regresji : po zaimplementowaniu nowych funkcji lub poprawek błędów, ponownie testujesz scenariusze, które działały w przeszłości. Tutaj możesz pokryć możliwość w które nowe funkcje przełamują istniejące funkcje.
    • Testy dymu : pierwsze testy, na których testerzy mogą stwierdzić, czy będą kontynuować testy.
     88
    Author: Gerrie Schenck,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2009-02-06 12:13:56

    Każdy będzie miał nieco inne definicje i często pojawiają się szare obszary. Jednakże:

    • test jednostkowy: czy ten jeden mały kawałek (jak najbardziej izolowany) działa?
    • Test integracji: czy te dwa (lub więcej) komponenty współpracują ze sobą?
    • Test dymu: czy ten cały system (jak najbardziej zbliżony do systemu produkcyjnego) dobrze się razem trzyma? (tj. czy jesteśmy przekonani, że nie stworzy czarnej dziury?)
    • Test regresji: czy mamy nieumyślnie wprowadziliśmy jakieś błędy, które wcześniej naprawiliśmy?
     77
    Author: Jon Skeet,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2009-02-06 12:15:07

    Nową kategorią testów, o której właśnie się dowiedziałem, jest:

    Canary test

    A Canary test jest zautomatyzowanym, nieniszczącym testem, który jest uruchamiany regularnie w środowisku LIVE, tak że jeśli kiedykolwiek się nie powiedzie, stało się coś naprawdę złego.

    Przykłady mogą być:

    • czy dane, które powinny być dostępne tylko w DEV / TEST pojawiły się w Żyj.
    • nie powiodło się uruchomienie procesu w tle
    • czy użytkownik logon
     41
    Author: AndyM,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2013-09-11 03:47:51

    Apokryficzne ciekawostki historyczne: "testowanie dymu" pochodzi z inżynierii podwodnej (odziedziczonej po hydraulice), gdzie dosłowny dym byłby pompowany do kadłuba, aby zobaczyć, czy coś z tego wyjdzie ponownie, co byłoby raczej dramatyczną porażką dla łodzi podwodnej!

     16
    Author: annakata,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2009-02-06 12:27:23

    Test jednostkowy: sprawdzenie, czy dany komponent (tj. Klasa) stworzył lub zmodyfikował funkcje zgodnie z projektem. Test ten może być ręczny lub zautomatyzowany, ale nie przekracza granicy komponentu.

    Test integracji: sprawdzenie, czy interakcja poszczególnych komponentów działa zgodnie z projektem. Testy integracyjne mogą być wykonywane na poziomie jednostki lub na poziomie systemu. Testy te mogą być ręczne lub zautomatyzowane.

    Test regresji: sprawdzenie, czy nie wprowadzono nowych wad do istniejącego kodu. Testy te mogą być ręczne lub zautomatyzowane.

    W zależności od Twojego SDLC (waterfall, rup, agile, itp.) poszczególne testy mogą być wykonywane "fazowo" lub wszystkie mogą być wykonywane mniej więcej w tym samym czasie. Na przykład, testowanie jednostkowe może być ograniczone do programistów, którzy następnie przekazują kod testerom w celu integracji i testowania regresji. Jednak inne podejście może mieć deweloperów robi testowanie jednostkowe i pewien poziom integracji i testowanie regresji (za pomocą TDD podejście wraz z ciągłą integracją i zautomatyzowanymi testami jednostkowymi i regresyjnymi).

    Zestaw narzędzi będzie zależał w dużej mierze od bazy kodowej, ale istnieje wiele narzędzi open source do testowania jednostkowego (JUnit). HP (mercury) QTP lub Borland Silktest są zarówno narzędzia do automatycznej integracji i testowania regresji.

     8
    Author: rdrex,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2009-03-04 01:48:41

    Odpowiedź z jednej z najlepszych stron internetowych dla technik testowania oprogramowania:

    Rodzaje testowania oprogramowania-pełna lista Kliknij tutaj

    Tutaj wpisz opis obrazka

    To dość długi opis, Nie będę go tu wklejał: ale może być pomocny dla kogoś, kto chce poznać wszystkie techniki testowania.

    Mam nadzieję, że to będzie pomocne.:)

     7
    Author: Kaleem Ullah,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2017-08-04 22:59:10

    Test jednostkowy : testowanie pojedynczego modułu lub niezależnego komponentu w aplikacji jest znane jako testowanie jednostkowe , testowanie jednostkowe zostanie wykonane przez dewelopera.

    Test integracyjny : łączenie wszystkich modułów i testowanie aplikacji w celu sprawdzenia, czy komunikacja i przepływ danych między modułami działają poprawnie , czy nie, test ten jest również wykonywany przez programistów.

    Smoke test w smoke test sprawdzają zastosowanie w płytkich i w szerokim zakresie, w testach dymu sprawdzają główną funkcjonalność aplikacji, jeśli wystąpi jakikolwiek problem z blokerem w aplikacji, zgłoszą go zespołowi programistów, a zespół programistów naprawi go i naprawi usterkę, i zwróci ją zespołowi testującemu, a teraz zespół testujący sprawdzi wszystkie moduły, aby zweryfikować zmiany tat wprowadzone w jednym module wpłyną na drugi moduł, czy nie. W testowaniu dymu przypadki testowe są skryptowane

    Testowanie regresji przypadki powtarzane w celu zapewnienia, że niezmieniony moduł nie powoduje żadnej wady. Testowanie regresji podlega testom funkcjonalnym

     6
    Author: malini,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2014-04-26 12:02:23

    BADANIE REGRESJI-

    " test regresyjny ponownie uruchamia poprzednie testy ze zmienionym oprogramowaniem, aby upewnić się, że zmiany wprowadzone w bieżącym oprogramowaniu nie wpływają na funkcjonalność istniejącego oprogramowania."

     5
    Author: Nikita G,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2010-10-21 05:28:26

    Test jednostkowy: sprawdzenie, czy dany komponent (tj. Klasa) stworzył lub zmodyfikował funkcje zgodnie z projektem. Test ten może być ręczny lub zautomatyzowany, ale nie przekracza granicy komponentu.

    Test integracji: sprawdzenie, czy interakcja poszczególnych komponentów działa zgodnie z projektem. Testy integracyjne mogą być wykonywane na poziomie jednostki lub na poziomie systemu. Testy te mogą być ręczne lub zautomatyzowane.

    Test regresji: sprawdzenie, czy nie wprowadzono nowych wad do istniejącego kodu. Testy te mogą być ręczne lub zautomatyzowane.

    W zależności od Twojego SDLC (waterfall, rup, agile, itp.) poszczególne testy mogą być wykonywane "fazowo" lub wszystkie mogą być wykonywane mniej więcej w tym samym czasie. Na przykład, testowanie jednostkowe może być ograniczone do programistów, którzy następnie przekazują kod testerom w celu integracji i testowania regresji. Jednak inne podejście może mieć deweloperów robi testowanie jednostkowe i pewien poziom integracji i testowanie regresji (za pomocą TDD podejście wraz z ciągłą integracją i zautomatyzowanymi testami jednostkowymi i regresyjnymi).

     3
    Author: nhfghfgsq,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2013-09-17 09:59:06

    Jednym z rodzajów testów, który wydaje się być wart wspomnieć w tym wątku jest stress/performance / load tests, które można po prostu określić jako znalezienie granic, poza którymi dany kawałek oprogramowania łamie. Należy zauważyć, że w zakresie oprzyrządowania istotne jest dokładne określenie zakresu tego, co proponuje się do testów warunków skrajnych z perspektywy systemu. Na przykład w przypadku "aplikacji webowej" testy warunków skrajnych mogą obejmować w swoim zakresie samą aplikację web serwera, a więc narzędzia może interweniować w tym celu. Oto fajny post o HTTP load testing

     3
    Author: Jaime Gago,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2013-10-28 21:19:35

    Testowanie jednostkowe jest ukierunkowane na jak najmniejszą część implementacji. W Javie oznacza to, że testujesz jedną klasę. Jeśli Klasa zależy od innych klas są one sfałszowane.

    Gdy twój test wywoła więcej niż jedną klasę, jest to Test integracyjny .

    Pełne pakiety testowe mogą zająć dużo czasu, więc po zmianie wiele zespołów uruchamia szybkie testy, aby wykryć znaczące uszkodzenia. Na przykład, złamałeś Uri do essential zasoby. To są testy dymu .

    Testy regresyjne działają na każdej kompilacji i pozwalają skutecznie refaktorować, łapiąc to, co zepsujesz. Każdy rodzaj testu może być testem regresji, ale uważam, że testy jednostkowe są najbardziej pomocne w znalezieniu źródła błędu.

     3
    Author: Dave,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2014-11-07 12:23:58

    Testy Jednostkowe:- testowanie jednostkowe jest zwykle wykonywane przez stronę deweloperów, gdzie jako testery są częściowo ewoluowane w tego typu testach, w których testowanie odbywa się jednostkowo. W Javie Junit test cases można również sprawdzić, czy napisany kod jest doskonale zaprojektowany, czy nie.

    Testy Integracyjne:- Ten rodzaj testów jest możliwy po testach jednostkowych, gdy wszystkie / niektóre komponenty są zintegrowane.Tego typu testy upewnią się, że gdy komponenty są zintegrowane, czy wpływają każdy inny zdolność robocza lub funkcjonaliści.

    Testy Dymu:- Ten typ testów jest przeprowadzany na końcu, gdy system jest pomyślnie zintegrowany i gotowy do pracy na serwerze produkcyjnym. Tego typu testy upewnią się, że każda ważna funkcjonalność od początku do końca działa poprawnie i system jest gotowy do wdrożenia na serwerze produkcyjnym.

    Badanie Regresji:- Ten rodzaj testów jest ważne, aby sprawdzić, czy niezamierzone / niepożądane usterki nie są obecne w systemie, gdy programista naprawił kilka problemów. To testowanie również upewnić się, że wszystkie błędy zostały pomyślnie rozwiązane i z tego powodu nie wystąpiły żadne inne problemy.

     2
    Author: mohit sarsar,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2014-09-16 10:50:07
    • testowanie integracji: testowanie integracji jest integracją innego elementu
    • testowanie dymu: testowanie dymu jest również znane jako testowanie wersji kompilacji.Testowanie dymu jest wstępnym procesem testowania przeprowadzanym w celu sprawdzenia, czy testowane oprogramowanie jest gotowe / stabilne do dalszych testów.
    • testowanie regresji: testowanie regresji to testowanie regresji. Czy nowe oprogramowanie jest realizowane w innym module, czy nie.
    • testowanie jednostkowe : jest to testowanie białego pudełka .Tylko Programiści angażują się w to
     2
    Author: Madhivanan,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2014-11-07 12:22:42

    Już kilka dobrych odpowiedzi, ale chciałbym je jeszcze dopracować:

    Testowanie jednostkowe jest tutaj jedyną formą testowania białego pudełka. Pozostałe testują czarną skrzynkę. Testowanie białej skrzynki oznacza, że znasz wejście, znasz wewnętrzne działanie mechanizmu i możesz go sprawdzić i znasz wyjście. Przy testowaniu czarnej skrzynki wiesz tylko, jakie jest wejście i jakie powinno być wyjście.

    Więc najwyraźniej testowanie jednostkowe jest jedynym testem w białym pudełku.

    • testy jednostkowe przetestuj określone fragmenty kodu. Zazwyczaj metody.
    • testowanie integracji sprawdź, czy Twoja nowa funkcja oprogramowania może integrować się ze wszystkim innym.
    • badanie regresji. To testy, aby upewnić się, że niczego nie złamałeś. Wszystko, co kiedyś działało, powinno działać.
    • testy dymu są wykonywane jako szybki test, aby upewnić się, że wszystko wygląda dobrze, zanim zaangażujesz się w bardziej energiczne testy.
     1
    Author: uriDium,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2009-02-06 12:31:31

    Test regresji - jest to rodzaj testu SW, w którym staramy się pokryć lub sprawdzić poprawkę błędu. funkcjonalność wokół poprawki błędu nie powinna zostać zmieniona lub zmieniona ze względu na dostarczoną poprawkę. Problemy znalezione w takim procesie nazywane są problemami regresji.

    Smoke Testing: jest rodzajem testów wykonywanych w celu podjęcia decyzji, czy zaakceptować kompilację / oprogramowanie do dalszych testów QA .

     1
    Author: Sanyal,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2015-07-28 16:36:50

    Testy jednostkowe:

    Testowanie jednostkowe to proces tworzenia oprogramowania, w którym najmniejsze testowalne części aplikacji, zwane jednostkami, są indywidualnie i niezależnie badane pod kątem prawidłowego działania. Testy jednostkowe są często zautomatyzowane, ale mogą być również wykonywane ręcznie.

    Testy integracyjne:

    (czasami nazywany integration and testing, w skrócie I&T) jest fazą testowania oprogramowania, w której poszczególne moduły oprogramowania są łączone i testowany jako grupa. Występuje po testach jednostkowych i przed testami walidacyjnymi.

    Testowanie systemu:

    Jest najczęściej końcowym testem mającym na celu sprawdzenie, czy dostarczany system spełnia specyfikację i jej przeznaczenie.

    Test regresji:

    Po zaimplementowaniu nowych funkcji lub poprawek błędów, ponownie testujesz scenariusze, które działały w przeszłości. Tutaj omówisz możliwość, w której twoje nowe funkcje przełamują istniejące funkcje.

    Dym Testowanie:

    Celem nie jest przeprowadzenie wyczerpujących testów, ale sprawdzenie, czy krytyczne funkcjonalności systemu działają prawidłowo. Na przykład typowym testem dymu będzie-sprawdź, czy aplikacja uruchamia się pomyślnie, sprawdź, czy GUI jest responsywny, itp.

     1
    Author: Manjunatha B,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2015-09-21 09:47:08

    Testy jednostkowe: zawsze wykonuje je programista po ich opracowaniu, aby dowiedzieć się o problemie z ich strony testowej, zanim przygotują jakiekolwiek wymagania do QA.

    Testowanie integracji: oznacza to, że tester musi zweryfikować weryfikację modułu do modułu podrzędnego, gdy niektóre dane / wyjście funkcji są napędowane do jednego modułu do drugiego modułu. Lub w systemie, jeśli używasz narzędzia innej firmy, które wykorzystuje dane systemowe do integracji.

    Testowanie dymu: tester przeprowadzony w celu sprawdzenia systemu dla testy na wysokim poziomie i próby wykrycia błędu przed wprowadzeniem zmian lub kodu.

    Testowanie regresji: Tester przeprowadził regresję w celu weryfikacji istniejącej funkcjonalności ze względu na zmiany wprowadzone w systemie dla nowo ulepszenia lub zmiany w systemie.

     1
    Author: Krunal,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2017-07-18 12:29:27

    Testy smoke I sanity są wykonywane po zbudowaniu oprogramowania, aby określić, czy rozpocząć testy. Sanity może, ale nie musi być wykonane po badaniu dymu. Mogą być wykonywane osobno lub jednocześnie-po zapaleniu natychmiast.

    Ponieważ testowanie zdrowego rozsądku jest bardziej dogłębne i zajmuje więcej czasu, w większości przypadków warto zautomatyzować.

    Badanie dymu zwykle trwa nie dłużej niż 5-30 minut. Jest bardziej ogólne: to sprawdza niewielką liczbę podstawowych funkcjonalności całego systemu, aby sprawdzić, czy stabilność oprogramowania jest wystarczająco dobra do dalszych testów i czy nie ma żadnych problemów, blokując przebieg planowanych przypadków testowych.

    Testy na zdrowie psychiczne są bardziej szczegółowe niż testy dymu i mogą trwać od 15 minut do całego dnia, w zależności od skali nowej konstrukcji. Jest to bardziej wyspecjalizowany rodzaj testów akceptacyjnych, wykonywanych po progresji lub ponownym teście. Sprawdza podstawowe funkcje niektórych nowych funkcjonalności i / lub poprawek błędów wraz z niektórymi ściśle związanymi z nimi funkcjami, w celu sprawdzenia, czy działają one zgodnie z wymaganą logiką operacyjną, przed testowaniem regresji można wykonać w większej skali.

     1
    Author: Radostta,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2017-11-17 11:58:04

    Test dymu został już wyjaśniony i jest prosty. Test regresji podlega testowi integracyjnemu.

    Testy automatyczne można podzielić na tylko 2.

    Test jednostkowy i test integracyjny. (tylko to się liczy)

    Użyłbym wyrażenia "long test" (LT)dla wszystkich testów, takich jak test integracyjny, test funkcjonalny, test regresji, test interfejsu użytkownika itp. I test jednostkowy jako "krótki test".

    Przykładem LT może być automatyczne ładowanie strony, zalogowanie się na konto i zakup książki. Jeśli test przejdzie pomyślnie, jest bardziej prawdopodobne, że będzie działał na żywo w ten sam sposób (stąd odniesienie do "lepszego snu"). Long = odległość między stroną(start) a bazą danych (end).

    I jest to świetny artykuł omawiający korzyści z testów integracyjnych(long test) nad testami jednostkowymi

     -1
    Author: Blue Clouds,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2017-12-09 08:45:56