9 rodzajów testowania oprogramowania w inżynierii oprogramowania

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Testowanie oprogramowania to rzemiosło. Tester oprogramowania, podobnie jak rzemieślnik, powinien dobrze rozumieć dostępne mu narzędzia do testowania oprogramowania. Przygotowaliśmy listę 9 różnych rodzajów testowania oprogramowania oraz narzędzi wykorzystywanych w każdym z nich, aby pomóc analitykom QA i wszystkim innym osobom pracującym w branży testowania oprogramowania lepiej zrozumieć swoje rzemiosło. Dlaczego potrzebujemy testowania oprogramowania? Czasami warto […]

Testowanie oprogramowania to rzemiosło. Tester oprogramowania, podobnie jak rzemieślnik, powinien dobrze rozumieć dostępne mu narzędzia do testowania oprogramowania. Przygotowaliśmy listę 9 różnych rodzajów testowania oprogramowania oraz narzędzi wykorzystywanych w każdym z nich, aby pomóc analitykom QA i wszystkim innym osobom pracującym w branży testowania oprogramowania lepiej zrozumieć swoje rzemiosło.

Dlaczego potrzebujemy testowania oprogramowania?

Czasami warto przypomnieć sobie, dlaczego to, co robisz, ma znaczenie. Prosty fakt jest taki, że każdy opracowany kiedykolwiek program, który odniósł sukces, zawdzięczał go pomocy testerów oprogramowania, którzy niestrudzenie pracowali nad tym, aby produkt spełniał możliwie najwyższe standardy. Oto trzy powody, dla których testowanie oprogramowania ma znaczenie.

  1. Zadowolenie klienta: Podczas opracowywania projektu łatwo zagubić się w gąszczu kodu i zapomnieć, że użytkownik również musi być zadowolony ze sposobu działania oprogramowania. Analitycy QA i inni członkowie zespołu QA pełnią właśnie tę rolę. 
  2. Jakość produktu: Każda profesja, w której zespół lub pojedyncza osoba tworzy coś od podstaw, wymaga innego zespołu, który wykryje popełnione błędy. Pisarze potrzebują redaktorów. Reżyserzy filmowi również potrzebują redaktorów. Deweloperzy oprogramowania nie potrzebują redaktorów, ale potrzebują zespołu QA, który zapewni obiektywną perspektywę i wykryje ewentualne błędy. 
  3. Bezpieczeństwo: Z każdym dniem wydaje się, że ten punkt staje się coraz ważniejszy. Klienci chcą mieć pewność, że informacje wprowadzane przez nich do oprogramowania oraz praca wykonywana w jego obrębie pozostają prywatne. Częścią QA jest dbanie o to, aby klienci mieli takie zaufanie. 

Metodyki testowania oprogramowania

Każda wspomniana w tym artykule technika testowania oprogramowania należy do jednej z dwóch głównych kategorii: testowania statycznego i testowania dynamicznego. Zanim omówimy szczegółowe informacje dotyczące dziewięciu różnych technik testowania oprogramowania, wyjaśnię różnicę między tymi dwiema metodykami oraz to, w którym miejscu cyklu tworzenia oprogramowania mają one zastosowanie. 

Testowanie statyczne

Testowanie statyczne to rodzaj testowania oprogramowania przeprowadzanego na wczesnym etapie cyklu tworzenia oprogramowania. Jest to opłacalny sposób wykrywania błędów, zanim staną się one poważnym problemem dla zespołu programistycznego. Testy statyczne przeprowadza się na wczesnym etapie cyklu tworzenia oprogramowania, ponieważ można je wykonywać bez w pełni działającego oprogramowania. Zgadza się — oprogramowanie można debugować, zanim będzie choćby bliskie ukończenia. Widzisz, jakie może to być przydatne? 

Testy statyczne przeprowadza się na dwa sposoby:

  • Badania manualne: Kod jest analizowany przez analityka QA lub testera. 
  • Analiza automatyczna: Narzędzie testowe automatycznie sprawdza dokument programu i odnotowuje wszelkie błędy.

Testowanie statyczne jest:

Większość testów statycznych przeprowadza się w formie przeglądów dokumentów. W tym przypadku dokumentem jest pisemny opis produktu (znany jako dokument projektu oprogramowania) albo kod źródłowy programu. Oto kilka technik testowania statycznego, które powinien znać każdy analityk QA:

  • Przegląd nieformalny:  Nie ma ścisłych wytycznych dotyczących przeglądu nieformalnego. Zespół przegląda dokumenty testowe i komentuje to, co widzi. Nie sporządza się dokumentacji.
  • Przegląd krok po kroku: Autor kodu omawia swój dokument, a zespół QA zgłasza wszelkie pytania i wątpliwości. Przeglądy krok po kroku są zazwyczaj bardzo nieformalne i stanowią dobry sposób omawiania tematów z osobami spoza branży oprogramowania. 
  • Przegląd techniczny: Eksperci techniczni spotykają się, aby przeanalizować specyfikację techniczną kodu. Przeprowadzenie tego działania na wczesnym etapie procesu tworzenia oprogramowania zapewnia, że produkt końcowy będzie spełniał wymagane specyfikacje.
  • Inspekcje: Najbardziej formalna ze wszystkich form przeglądu. Zespół przeszkolonych moderatorów dokładnie sprawdza dokumenty podczas spotkania. Wszystkie znalezione błędy są formalnie dokumentowane i rejestrowane do dalszej analizy. Następnie przeprowadza się kontrolę, aby sprawdzić, czy udokumentowane błędy zostały usunięte. 

W większości przypadków statyczne przeglądy testów są przydatne, ponieważ cały zespół QA analizuje produkt i proponuje zmiany na podstawie dostrzeżonych problemów oraz problemów, które można przewidzieć. Oprócz korzyści wynikającej z zaangażowania w rozmowę szerokiego grona osób, zapewnia to również dodatkową korzyść w postaci zapoznania wszystkich członków zespołu z postępami i projektem. 

Użyj testowania statycznego, jeśli Twój zespół:

  • Znajduje się na wczesnym etapie procesu tworzenia.
  • Poszukuje opłacalnego sposobu wykrywania błędów.
  • Ma oprogramowanie, które nie jest jeszcze gotowe do uruchomienia.
  • Chce wcześnie wykrywać błędy w procesie tworzenia.
Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Testowanie dynamiczne

W przeciwieństwie do testowania statycznego testowanie dynamiczne jest rodzajem testowania oprogramowania, które wymaga uruchomienia kodu. Oczywiście oznacza to, że proces tworzenia musi być bardziej zaawansowany. Zaletą testowania wykonywalnego kodu jest możliwość obserwowania przez analityków QA działania oprogramowania podczas pracy w rzeczywistej sytuacji. Jest to doskonały sposób na sprawdzenie funkcjonalnego zachowania oprogramowania oraz innych aspektów, takich jak wykorzystanie procesora. Testowanie dynamiczne sprawdza, czy oczekiwany rezultat odpowiada rezultatowi uzyskanemu w rzeczywistości. Głównym celem testowania dynamicznego jest zweryfikowanie, czy produkt spełnia wymagania projektowe i funkcjonalne określone przed rozpoczęciem projektu.

Zazwyczaj dynamiczne testowanie oprogramowania systemowego obejmuje cztery etapy, które analitycy QA powinni znać:

  • Testowanie jednostkowe: Podczas testowania jednostkowego oprogramowanie dzieli się na najmniejsze możliwe komponenty, które są testowane indywidualnie. Dzięki testowaniu w ten sposób analitycy QA mogą mieć pewność, że każda część oprogramowania działa zgodnie z założeniami. Jeśli zostanie znaleziony błąd, łatwiej będzie go naprawić na tym etapie tworzenia, ponieważ można szybko odizolować problematyczny kod. Zazwyczaj, gdy zespół QA rozpoczyna testowanie dynamiczne (choć czasami ten etap testowania jest realizowany przez zespół programistów), zaczyna od testów jednostkowych.
  • Testowanie integracyjne: Po dokładnym podzieleniu oprogramowania na komponenty i przetestowaniu ich za pomocą testów jednostkowych oprogramowanie zostaje połączone w grupy i ponownie przetestowane. O ile testowanie jednostkowe ma na celu upewnienie się, że każda pojedyncza część działa prawidłowo, o tyle testowanie integracyjne sprawdza, czy te części komunikują się ze sobą tak, jak powinny. Można to porównać do montażu samochodu. Na każdym etapie montażu poszczególne części samochodu (silnik, pedały, kierownica) są testowane indywidualnie. Następnie samochód jest montowany i testowany jako całość, aby upewnić się, że pedał gazu prawidłowo współpracuje z silnikiem (podobnie jak hamulce!). Chcesz zapewnić bezproblemową integrację między modułami? Nasze polecane narzędzia do testowania oprogramowania mogą Ci w tym pomóc.
  • Testowanie systemowe: Testowanie systemowe jest trzecim poziomem testowania oprogramowania. Na tym etapie testowane jest kompletne i w pełni zintegrowane oprogramowanie. Celem testu systemowego jest upewnienie się, że oprogramowanie spełnia wymagania, czyli robi to, do czego zostało zaprojektowane. 
  • Testowanie akceptacyjne: Ostatni etap testowania dynamicznego. Test akceptacyjny polega na ponownym sprawdzeniu zgodności z wymaganiami i upewnieniu się, że oprogramowanie jest dopracowane do akceptowalnego poziomu. Wykonuje się go, aby upewnić się, że żadne błędy nie przedostały się przez wcześniejsze etapy testowania. Zasadniczo jest to dodatkowa kontrola przeprowadzana dla bezpieczeństwa. 

Etapy testowania dynamicznego

  1. Testowanie jednostkowe
  2. Testowanie integracyjne
  3. Testowanie systemowe
  4. Testowanie akceptacyjne

Szybka wskazówka: testowanie weryfikacyjne a walidacyjne 

Testowanie weryfikacyjne ma wszystkie kluczowe cechy testowania statycznego. Celem testu weryfikacyjnego jest zweryfikowanie wszystkich dokumentów i kodu, a test ten przeprowadza się za pomocą tych samych metod, które stosuje się podczas testowania statycznego

Podobnie testowanie walidacyjne ma wszystkie kluczowe cechy testowania dynamicznego. Test walidacyjny koncentruje się na potwierdzeniu wysokiej jakości oprogramowania, czym dokładnie zajmują się testy systemowe i akceptacyjne.

Skoro omówiliśmy już kilka kluczowych pojęć związanych z testowaniem oprogramowania, przyjrzyjmy się 9 rodzajom testowania oprogramowania, które powinien znać każdy analityk QA.

9 rodzajów testowania oprogramowania, które powinien znać każdy analityk QA:

  1. Testowanie czarnoskrzynkowe
  2. Testowanie białoskrzynkowe
  3. Testowanie szaroskrzynkowe 
  4. Testowanie automatyczne 
  5. Testowanie jednostkowe
  6. Testowanie regresji
  7. Testowanie eksploracyjne
  8. Testowanie funkcjonalne
  9. Testowanie użyteczności

1. Testowanie czarnoskrzynkowe

Testowanie czarnoskrzynkowe to strategia testowania oprogramowania, w której projekt testowanego systemu oprogramowania jest nieznany testerowi.

Pamiętasz scenę pod koniec Pulp Fiction, gdy Samuel Jackson otwiera walizkę, a jego twarz rozjaśnia się? Jako widzowie wiemy, co walizka oznacza i reprezentuje w kontekście filmu, ale nigdy nie dowiadujemy się, co jest w środku. Tester czarnoskrzynkowy jest jak widz, który wie, co dana rzecz — niezależnie od tego, czy jest to walizka, czy oprogramowanie systemowe — powinna robić, ale nie wie, z czego jest zbudowana.

Zdjęcie testowania czarnoskrzynkowego, rodzaje testowania oprogramowania

Tester odpowiedzialny za czarnoskrzynkowe testowanie oprogramowania do rejestrowania czasu uruchomi program bez znajomości jego wewnętrznego projektu i wypróbuje różne funkcje oraz menu, aby upewnić się, że działają zgodnie z oczekiwaniami. Powodem przeprowadzania testów czarnoskrzynkowych jest to, że bez dogłębnej znajomości projektu oprogramowania tester będzie podchodzić do niego z podobnymi oczekiwaniami jak użytkownik końcowy. 

Niektóre korzyści z testowania czarnoskrzynkowego to:

  • Testerzy nie potrzebują dużej wiedzy na temat języków programowania, ponieważ korzystają z oprogramowania z perspektywy użytkownika.
  • Zapewnia bezstronną ocenę oprogramowania, ponieważ test przeprowadza zespół QA, a nie jego twórcy.
  • Testerzy nie muszą być na bieżąco z rozwojem systemu oprogramowania, co oznacza, że przed rozpoczęciem testów potrzeba bardzo niewiele czasu na przygotowania.

Powiązany artykuł: 10 najlepszych narzędzi do testowania czarnoskrzynkowego

2. Testowanie białoskrzynkowe

W testowaniu białoskrzynkowym członek zespołu QA w pełni rozumie wewnętrzną strukturę i projekt testowanego oprogramowania. Podchodzi do testu jak inspektor, upewniając się, że każda część programu działa prawidłowo. Testowanie białoskrzynkowe jest czasami nazywane testowaniem przezroczystoskrzynkowym, ponieważ tester obserwuje interakcje między jednostkami podczas testowania oprogramowania. W przeciwieństwie do testowania czarnoskrzynkowego tester białoskrzynkowy nie przykłada aż tak dużej wagi do doświadczenia użytkownika. 

Niektóre korzyści z testowania białoskrzynkowego to:

  • Testy można przeprowadzać na wczesnych etapach rozwoju. Graficzny interfejs użytkownika (GUI) nie musi być w pełni funkcjonalny. 
  • Testy są dokładniejsze i bardziej metodyczne niż testy czarnoskrzynkowe.

W przykładzie z filmu Pulp Fiction testerem białoskrzynkowym jest postać grana przez Tima Rotha, która patrzy bezpośrednio na zawartość walizki. 

3. Testowanie szaroskrzynkowe

W testowaniu szaroskrzynkowym tester ma pewną wiedzę o wewnętrznej strukturze i projekcie oprogramowania (testowanie białoskrzynkowe), ale nadal testuje je z perspektywy użytkownika końcowego (testowanie czarnoskrzynkowe). I właśnie tak narodziło się testowanie szaroskrzynkowe. W testowaniu szaroskrzynkowym projekt testu opracowuje się na podstawie wewnętrznej struktury oprogramowania, a właściwy test przeprowadza się za pomocą interfejsu użytkownika.

Gdyby to znów była ta słynna scena z filmu Pulp Fiction, testerem szaroskrzynkowym nie byłby ani widz, ani Tim Roth. Tym razem byłby nim sam Quentin Tarantino.  

4. Testowanie automatyczne

Testy automatyczne wykorzystują oprogramowanie do wykonywania zadań bez ręcznych instrukcji testera.

W testowaniu ręcznym tester napisze kod, który chce wykonać, lub zaplanuje ścieżkę w oprogramowaniu, aby sprawdzić, czy działa prawidłowo. Testy automatyczne wykonują takie zadania w imieniu testera. Oto krótka lista narzędzi do automatyzacji oprogramowania i QA, które analitycy QA powinni znać:

Aby zapoznać się z bardziej szczegółową oceną narzędzi do testowania automatycznego, sprawdź listę najlepszych narzędzi do testowania automatycznego, z których powinieneś korzystać.

5. Testowanie jednostkowe

Narzędzia do testów jednostkowych zapewniają, że każda pojedyncza część oprogramowania działa prawidłowo. Niezwykle ważne jest, aby testy jednostkowe były przeprowadzane właściwie, w przeciwnym razie zespół programistyczny poniesie ogromne konsekwencje, gdy później okaże się, że kluczowa część oprogramowania nie działa. 

6. Testy regresji

Narzędzia do testów regresji uruchamiają stare testy na nowych kompilacjach, aby upewnić się, że oprogramowanie nadal działa zgodnie z założeniami. Przeprowadzanie testów regresji chroni programistów przed ukrytymi skutkami zmian, upewniając się, że modyfikacja oprogramowania w punkcie A nie spowodowała przypadkowo awarii czegoś zupełnie odległego, w punkcie D. 

Dla analityka QA dwa kroki naprzód i jeden krok wstecz nie powinny być postrzegane jako coś negatywnego. Cofając się od czasu do czasu o jeden krok, upewniasz się, że później nie będziesz zmuszony cofnąć się o pięćdziesiąt kroków.

7. Testy eksploracyjne

Testy eksploracyjne są przeznaczone dla osób, które nie lubią planowania. W większości innych sytuacji przypadek testowy jest dokładnie planowany przed wykonaniem. Nie tutaj. Podczas testu eksploracyjnego tester bada oprogramowanie bez wcześniej ustalonego planu, korzystając ze specjalistycznych narzędzi do testów eksploracyjnych.

Zaletą testów eksploracyjnych jest to, że pozwalają testerowi na bieżąco dostosowywać działania do poczynionych obserwacji, bez konieczności pisania kolejnego przypadku testowego. Testy eksploracyjne umożliwiają również współpracę, tworzenie teorii i wymianę pomysłów w czasie rzeczywistym.

Wraz ze wzrostem znaczenia zwinnej metodyki tworzenia oprogramowania zyskały na znaczeniu również testy eksploracyjne. Pozwalając testerom QA korzystać z intuicji, można wykryć wiele interesujących błędów, których tradycyjne wykonanie testów mogłoby nie uwzględnić. 

Uwaga: testy eksploracyjne mogą wymagać dużej kreatywności. 

More Articles

8. Testy funkcjonalne

Testy funkcjonalne przeprowadza się, aby upewnić się, że oprogramowanie systemowe odpowiada wymaganiom projektu ustalonym przed rozpoczęciem prac programistycznych.

Tester oprogramowania sprawdza, czy dane wejściowe odpowiadają oczekiwanym wynikom. Testy te przeprowadza się na jednym z ostatnich etapów testowania, podczas testów systemowych lub akceptacyjnych, i są one wyłącznie formą testów czarnoskrzynkowych, ponieważ nie jest w nich istotne, jak działa oprogramowanie, o ile działa. 

9. Testy użyteczności

Testerzy użyteczności upewniają się, że decyzje projektowe są funkcjonalne, a jednocześnie intuicyjne.

Jeśli przewidujesz, że wielu użytkowników Twojego oprogramowania będzie chciało tworzyć kopie zapasowe dokumentów co pół godziny, najlepiej umieścić funkcję tworzenia kopii zapasowej w łatwo dostępnym miejscu, zamiast ukrywać ją za czterema podmenu. 

W wielu przypadkach opracowano oprogramowanie, które działa bez zarzutu i zaspokaja istotną potrzebę rynkową, ale z perspektywy użytkownika jest całkowicie niemożliwe do obsługi. Można to wyjaśnić brakiem testów użyteczności na etapie testowania oprogramowania.

Ostatecznie, bez względu na to, jak dobre jest oprogramowanie pod względem technicznym, trudno będzie znaleźć dla niego rynek, jeśli użytkownicy nie będą czerpać przyjemności z korzystania z niego.

Chcesz wiedzieć więcej?

Branża testowania oprogramowania nieustannie się zmienia, a analitycy QA muszą być na bieżąco z aktualnymi trendami. Istnieje nieskończenie wiele materiałów na temat testowania oprogramowania, w tym podcasty, książki, biuletyny i wiele innych.

Zasubskrybuj biuletyn The CTO Club aby otrzymywać informacje o aktualizacjach produktów, recenzje narzędzi i zestawienia innych materiałów.

Jason Boog
Over his 15-year career, Jason Boog has worked as a QA tester, QA analyst, and Senior QA Analyst on video games, commercial sites, and interactive web applications. He spent more than a decade building out the QA team and process as Director of Quality & Client Support at a full-service digital agency.
Follow the author: