Pytanie Jakie rodzaje testów istnieją?


Zawsze pracowałem sam, a moja metoda testowania jest zwykle bardzo często kompilowana i upewniając się, że zmiany, które wprowadziłem, działają dobrze i naprawiają je, jeśli tego nie robią. Jednak zaczynam czuć, że to nie wystarczy i jestem ciekawy, jakie są standardowe testy.

Czy ktoś może mi powiedzieć o podstawowych testach, prostym przykładzie każdego z nich i dlaczego jest używany / co testuje?

Dzięki.


10
2018-06-26 08:12


pochodzenie




Odpowiedzi:


Różni ludzie mają nieco inne wyobrażenia na temat tego, co stanowi rodzaj testu, ale oto kilka pomysłów na to, co myślę, że każdy termin oznacza. Zauważ, że jest to mocno obciążone kodowaniem po stronie serwera, ponieważ to właśnie robię :)

Test jednostkowy

Test jednostkowy powinien sprawdzać tylko jedną jednostkę logiczną kodu - zazwyczaj jedną klasę dla całego przypadku testowego i niewielką liczbę metod w każdym teście. Testy jednostkowe są (idealnie) małe i tanie w użyciu. Interakcje z zależnościami są zwykle izolowane za pomocą test podwójny takie jak fikcja, podróbka lub stub.

Test integracyjny

Test integracji sprawdzi, jak różne elementy współpracują ze sobą. Usługi zewnętrzne (nie będące częścią zakresu projektu) mogą nadal być fałszowane, aby zapewnić większą kontrolę, ale wszystkie elementy w ramach samego projektu powinny być rzeczywistością. Test integracji może przetestować cały system lub jakiś podzbiór.

Test systemu

Test systemu jest jak test integracyjny, ale także z prawdziwymi usługami zewnętrznymi. Jeśli jest to zautomatyzowane, zazwyczaj system jest skonfigurowany w znanym stanie, a następnie klient testowy działa niezależnie, wykonując żądania (lub cokolwiek) jak prawdziwy klient i obserwując efekty. Usługi zewnętrzne mogą być produkcyjne lub tworzone tylko w środowisku testowym.

Test próbny

To jest jak test systemu, ale przy użyciu usług produkcyjnych dla wszystkiego. Są one okresowo uruchamiane w celu śledzenia stanu systemu.

Test akceptacyjny

Jest to chyba najmniej dobrze zdefiniowany termin - przynajmniej w moim umyśle; może się znacznie różnić. Zazwyczaj będzie to dość wysoki poziom, jak test systemowy lub test integracyjny. Testy akceptacyjne mogą być określone przez zewnętrzny podmiot (standardową specyfikację lub klienta).


Czarne pudełko lub białe pudełko?

Testy mogą być również testami "czarnej skrzynki", które tylko dotykają publicznego interfejsu API lub testów "białej skrzynki", które wykorzystują dodatkową wiedzę, aby ułatwić testowanie. Na przykład w testach białych skrzynek możesz wiedzieć, że konkretna metoda wewnętrzna jest używana przez wszystkie publiczne metody API, ale łatwiej ją przetestować. Możesz przetestować wiele przypadków narożnych, wywołując tę ​​metodę bezpośrednio, a następnie wykonać mniej testów za pomocą publicznego interfejsu API. Oczywiście, jeśli jesteś projektowanie Publiczny interfejs API prawdopodobnie powinien go zaprojektować tak, aby był łatwy do przetestowania na początek - ale nie zawsze działa to w ten sposób. Często miło jest móc przetestować jeden mały aspekt w izolacji reszty klasy.

Z drugiej strony, testowanie czarnej skrzynki jest zazwyczaj mniej kruche niż testowanie w białej skrzynce: z definicji, jeśli testujesz tylko to, co gwarantuje API w umowach, wtedy implementacja może zmienić się tak bardzo, jak chce, bez zmieniania testów. Z drugiej strony testy w białych skrzynkach są wrażliwe na zmiany implementacji: jeśli metoda wewnętrzna zmienia się subtelnie - lub na przykład zyskuje dodatkowy parametr - trzeba zmienić testy, aby to odzwierciedlić.

Wszystko sprowadza się do równowagi, w końcu - im wyższy poziom testu, tym większe prawdopodobieństwo, że będzie to czarna skrzynka. Z drugiej strony, testy jednostkowe mogą zawierać element testowania białych skrzynek ... przynajmniej w moim doświadczeniu. Jest wielu ludzi, którzy odmówiliby w ogóle używania testów białych skrzynek zawsze testowanie publicznego interfejsu API. To wydaje mi się bardziej dogmatyczne niż pragmatyczne, ale widzę też korzyści.


Zaczyna się

Teraz, gdzie powinieneś pójść dalej - testowanie jednostek jest prawdopodobnie najlepszą rzeczą do rozpoczęcia. Możesz napisać testy przed zaprojektowaniem klasy (rozwój sterowany testami) lub mniej więcej w tym samym czasie, a nawet miesiące później (nie idealne, ale jest dużo kodu, który nie ma testów, ale powinien) . Przekonasz się, że niektóre z twoich kodów są bardziej podatne na testowanie niż inne ... te dwa istotny koncepcje, które sprawiają, że testowanie jest wykonalne (IMO) iniekcja zależności (kodowanie do interfejsów i dostarczanie zależności do klasy zamiast pozwalania na samodzielne tworzenie tych zależności) i testuj podwójne (np. szydercze frameworki, które umożliwiają testowanie interakcji lub fałszywe implementacje, które wykonują wszystko w prosty sposób w pamięci).


19
2018-06-26 08:25



+1 dla wstrzyknięcia zależności i testu podwójnego (dla właściwego TDD). - Igor Popov
A co z tymi testami "białej skrzynki" i "czarnej skrzynki", o których słyszę? - Leo Jweda
@L Juwaidah: Będę edytować moją odpowiedź, aby wyjaśnić. - Jon Skeet


Sugerowałbym przeczytanie przynajmniej książki na ten temat, ponieważ domena jest dość ogromna, a książki mają tendencję do lepszej syntezy takich koncepcji. Na przykład. Bardzo dobrą podstawą może być: Testowanie testowania oprogramowania w całym cyklu życia oprogramowania (2007)

Wydaje mi się, że taka książka mogłaby wyjaśnić wszystko lepiej niż przykłady z kontekstu, które mogliśmy opublikować tutaj.


1
2018-06-26 08:28





Cześć ... Chciałbym dodać, na co odpowiedział Jon Skeet Sir ... Na podstawie testów białych skrzynek (lub testów strukturalnych) i czarnej skrzynki (lub testów funkcjonalnych) poniżej przedstawiono inne techniki testowania w ramach każdej odpowiedniej kategorii:

  • BADANIA STRUKTURALNE Techniki

Test naprężeń

Służy do testowania dużych ilości danych w systemie. To więcej niż zwykle system. Jeśli system może znieść te wolumeny, to z pewnością może przyjąć normalne wartości.

Na przykład.

Być może możesz wziąć warunki przepełnienia systemu, takie jak próba wypłaty większej niż dostępna w Twoim banku, saldo nie powinno działać, a wycofanie do maksymalnego progu powinno zadziałać.

Używane When

Może to być głównie używane, ponieważ nie jesteśmy pewni, ile woluminów może obsłużyć twój system.

Testowanie wykonania

Zrobione, aby sprawdzić, jak sprawny jest system.

Na przykład. 

Aby obliczyć czas realizacji transakcji.

Używane, gdy: W początkowej fazie procesu rozwoju, aby sprawdzić, czy spełnione są kryteria wydajności.

Testowanie odzyskiwania

Aby sprawdzić, czy system może odzyskać oryginalną postać po awarii.

Na przykład.

Bardzo często, np. w codziennym życiu jest System Restore obecny w systemie Windows. Mają punkty przywracania używane do odzyskiwania, jak dobrze wiadomo.

Używane, gdy:

Kiedy użytkownik odczuwa krytyczną dla niego aplikację w tym momencie przestał działać i powinien kontynuować pracę, dla której wykonuje odzyskiwanie.

Inne rodzaje testów, które można wykorzystać, to: -

Testowanie operacyjne

Testy zgodności

Testowanie bezpieczeństwa

  • TESTOWANIE FUNKCJONALNE Techniki obejmują:

Testowanie wymagań

Testowanie regresyjne

Testowanie błędów

Testowanie wspomagania ręcznego

Testowanie między systemami

Kontrola kontrolna

Testowanie równoległe

Jest bardzo dobra książka zatytułowana "Skuteczne metody testowania oprogramowania" autorstwa Williama Perry'ego z Quality Assurance Institute (QAI), którą proponuję przeczytać, jeśli chcesz zagłębić się w.r.t. Testowanie oprogramowania.

Więcej informacji na temat wyżej wymienionych typów testów byłoby z pewnością dostępnych w tej książce.

Istnieją również dwie inne bardzo szerokie kategorie badań, a mianowicie

Testowanie ręczne: Wykonuje się to dla interfejsów użytkownika.

Automatyczne testowanie: Testowanie polegające zasadniczo na przeprowadzeniu testów na białym polu lub wykonaniu testów za pomocą narzędzi do testowania oprogramowania, takich jak Load Runner, QTP itp.

Na koniec chciałbym wspomnieć o szczególnym rodzaju testów zwanych

Wyczerpujące testy

Tutaj próbujesz sprawdzić każdy możliwy warunek, stąd nazwa. Jest to bardzo mało prawdopodobne, ponieważ liczba warunków testowych może być nieskończona.


1
2017-07-02 14:37





Po pierwsze są różne testy, które można wykonać. Pytanie brzmi: jak to zorganizować. Testowanie to proces Vast & Enjoying.

Rozpocznij test za pomocą 1. Testowanie skoku. Po przejściu, przejdź do Testowania Funkcjonalności. To jest szkielet testowania. Jeśli funkcja działa dobrze, to 80% testów jest opłacalne.

2. Teraz idź z testowaniem interfejsu użytkownika. Od czasu do czasu interfejs użytkownika jest czymś, co bardziej przyciąga klienta niż funkcjonalność. Jest to wygląd i wrażenie, które przyciąga do klienta.

3. Teraz nadszedł czas, aby rzucić okiem na kosmetyczne błędy. Generalnie te błędy są ignorowane z powodu ograniczeń czasowych. Ale te odgrywają ważną rolę w zależności od strony, którą się znajduje. Błąd w pisowni okazuje się być głównym po znalezieniu na ekranie powitalnym lub stronie docelowej lub samej nazwie aplikacji. Dlatego też nie można ich przeoczyć.

4. Wykonaj test zgodności. i, e Testowanie w różnych przeglądarkach i wersjach przeglądarkowych. Może być urządzeniem i systemem operacyjnym dla aplikacji Responsive.

Szczęśliwe testowanie :)


0
2017-12-08 09:00