Przegląd sekcji

    • Podręcznik omawia trzy główne podejścia do projektowania testów oprogramowania: techniki czarnej skrzynki, białoskrzynkowe oraz metody oparte na doświadczeniu. Szczegółowo przedstawiono testowanie funkcjonalne, oparte na specyfikacji, z wykorzystaniem klas równoważności, wartości granicznych i testów decyzyjnych. W technikach białoskrzynkowych omówiono analizę kodu, pokrycie instrukcji i ścieżek oraz wykorzystanie narzędzi do analizy statycznej. Sekcja dotycząca testów opartych na doświadczeniu prezentuje testowanie eksploracyjne, heurystyczne i eksperckie. Duży nacisk położono na automatyzację testowania, w tym wybór narzędzi, integrację z systemami CI/CD oraz przygotowanie środowiska testowego. Podkreślono znaczenie wyboru odpowiednich frameworków zależnie od technologii projektu oraz przedstawiono różnice między narzędziami open-source a komercyjnymi. Całość materiału ukazuje testowanie jako złożony, wieloaspektowy proces wymagający zarówno wiedzy technicznej, jak i intuicji oraz doświadczenia.

    • [1] B. Homès, Fundamentals of software testing. John Wiley & Sons, 2024.
      [2] G. Fraser i J. M. Rojas, „Software testing”, Handbook of Software Engineering, s. 123–192, 2019.
      [3] R. Smilgin, Zawód tester. Warszawa: Wydawnictwo Naukowe PWN, 2018.
      [4] A. Roman, Testowanie i jakość oprogramowania. Modele, techniki, narzędzia. Warszawa: Wydawnictwo Naukowe PWN, 2017.
      [5] P. Ammann i J. Offutt, Introduction to software testing. Cambridge University Press, 2017.
      [6] T. Linz, Testowanie w procesie Scrum. Warszawa: Promise, 2016.
      [7] J. Sosnowski, Testowanie i niezawodność systemów komputerowych. Akademicka Oficyna Wydawnicza EXIT Andrzej Lang, 2015.
      [8] S. K. Singh i A. Singh, Software testing. Vandana Publications, 2012.
      [9] W. Malina i M. Szwoch, Metodologia i techniki programowania. Warszawa: Wydawnictwo Naukowe PWN, 2008.
      [10] J. Pan, „Software testing”, Dependable Embedded Systems, t. 5, nr 2006, s. 1, 1999.
    • Podstawowym celem materiału jest kompleksowe wprowadzenie w tematykę testowania oprogramowania, uwzględniające zarówno aspekty teoretyczne, jak i praktyczne. Autorzy rozpoczynają od wyjaśnienia roli testowania w cyklu życia oprogramowania, podkreślając jego ciągłość i integralność względem wszystkich etapów SDLC – od planowania, przez analizę wymagań, projektowanie, implementację, testowanie, aż po utrzymanie i eksploatację. Szczególny nacisk położono na rolę testerów, których zadania ewoluują od pasywnej roli detektorów błędów do aktywnych uczestników procesu projektowania i zapewnienia jakości. Testowanie nie jest traktowane jako etap końcowy, lecz jako działalność zintegrowana z całym procesem wytwórczym, co widać zwłaszcza w kontekście metodologii Agile i DevOps, gdzie testowanie przebiega iteracyjnie i wymaga wysokiego poziomu współpracy zespołowej.

      Planowanie testów przedstawiono jako krytyczny komponent zapewnienia jakości. W procesie tym kluczowe znaczenie ma precyzyjne określenie zakresu, celów oraz zasobów, jakie będą wykorzystane w trakcie testów. Podkreślono konieczność identyfikacji ograniczeń projektowych, ryzyk oraz wymagań regulacyjnych, co wpływa na skuteczność planu testowego. Uwagę zwrócono również na znaczenie harmonogramowania testów oraz przypisania odpowiedzialności poszczególnym członkom zespołu. Planowanie obejmuje też wybór strategii testowych, które powinny być dostosowane do rodzaju projektu i charakterystyki systemu – od testowania opartego na ryzyku, przez podejścia iteracyjne, po techniki hybrydowe.

      W obszarze technik projektowania testów wyróżniono metody czarnej skrzynki, białoskrzynkowe oraz techniki oparte na doświadczeniu. Testowanie czarnej skrzynki skupia się na analizie funkcjonalności bez znajomości kodu źródłowego, a więc koncentruje się na danych wejściowych i wyjściowych, zgodnie ze specyfikacją. Przedstawiono tu metody takie jak analiza klas równoważności, testowanie wartości granicznych czy technika tabel decyzyjnych. Techniki białoskrzynkowe z kolei opierają się na analizie wewnętrznych struktur programu, takich jak pętle, warunki i ścieżki logiczne, wymagając dobrej znajomości kodu. Omówiono także techniki heurystyczne, stosowane przez doświadczonych testerów, którzy korzystają z intuicji i znajomości domeny.

      Automatyzacja testów została zaprezentowana jako konieczność w nowoczesnych środowiskach, gdzie kluczową rolę odgrywa ciągła integracja (CI) i ciągłe dostarczanie (CD). Opisano tu pipeline’y automatyzacji, które umożliwiają szybkie budowanie, testowanie i wdrażanie kodu, minimalizując ryzyko błędów i przyspieszając reakcję na zmiany rynkowe. W praktyce CI/CD korzysta się z narzędzi takich jak Jenkins czy GitLab CI oraz zautomatyzowanych zestawów testów jednostkowych i regresyjnych. W środowiskach Agile i DevOps testowanie jest aktywną częścią każdego sprintu i angażuje nie tylko testerów, lecz również programistów i interesariuszy biznesowych, wspierając kulturę współpracy i szybkiego reagowania.

      Końcowym aspektem materiału jest analiza metryk testowania. Pokazano, że pomiar jakości testów nie ogranicza się do liczby wykrytych defektów, lecz obejmuje także takie wskaźniki jak pokrycie testowe, liczba testów nieudanych, efektywność wykrywania błędów czy czas odpowiedzi systemu. Metryki te nie tylko wspomagają optymalizację procesu testowania, ale także pozwalają na identyfikację obszarów wymagających usprawnienia i podejmowanie decyzji opartych na danych. Monitorowanie i analiza pętli sprzężenia zwrotnego stały się kluczowymi komponentami umożliwiającymi ewolucję jakości oprogramowania w czasie rzeczywistym, co szczególnie uwydatnia się w projektach o wysokiej dynamice rozwoju i częstych wdrożeniach.

    • W tym miejscu znajduje się krótkie podsumowanie treści kursu. Podsumowanie to ma na celu zwrócenie uwagi na elementy które powinny zostać zapamiętane i stanowią istotną część całości.