Lekcja 2.11: Testowanie Pielęgnacyjne (Maintenance Testing)

Cykl życia oprogramowania nie kończy się wraz z jego wdrożeniem.

Wręcz przeciwnie, dla wielu systemów to właśnie po wdrożeniu rozpoczyna się najdłuższy etap – pielęgnacja (maintenance).

W tym okresie oprogramowanie jest używane w środowisku produkcyjnym, ale jednocześnie podlega ciągłym zmianom, adaptacjom i poprawkom.

Testowanie odgrywa kluczową rolę również na tym etapie, zapewniając, że wprowadzane modyfikacje nie tylko działają poprawnie, ale także nie naruszają stabilności i jakości całego systemu.

Sylabus ISTQB Foundation Level v4.0 poświęca osobną sekcję testowaniu pielęgnacyjnemu, podkreślając jego znaczenie i specyfikę.

W tej lekcji przyjrzymy się, czym jest testowanie pielęgnacyjne, jakie są jego główne wyzwalacze i jak określa się jego zakres.

Czym Jest Testowanie Pielęgnacyjne?

Testowanie pielęgnacyjne to proces testowania zmian wprowadzanych w systemie, który już działa w środowisku produkcyjnym.

Jak wskazuje sylabus, „pielęgnacja może obejmować między innymi działania naprawcze, działania wynikające z konieczności dostosowania oprogramowania do zmian w środowisku oraz działania mające na celu zwiększenie wydajności lub utrzymywalności”.

Standard ISO/IEC 14764 (Software Engineering — Software Life Cycle Processes — Maintenance) dostarcza bardziej szczegółowej klasyfikacji działań pielęgnacyjnych, które często wyzwalają potrzebę testowania.

Głównym celem testowania pielęgnacyjnego jest weryfikacja wprowadzonych zmian oraz zapewnienie, że nie spowodowały one regresji w niezmienionych częściach systemu.

Jak trafnie ujmuje to sylabus: „jeśli dany system znajduje się w eksploatacji, testowanie zmian obejmuje zarówno sprawdzenie, czy zmiana została wprowadzona pomyślnie, jak i wykrycie ewentualnych regresji w niezmienionych częściach systemu (czyli zwykle w większości jego obszarów)”.

Testowanie pielęgnacyjne jest więc ściśle powiązane z testowaniem potwierdzającym (sprawdzenie, czy zmiana działa) i testowaniem regresji (sprawdzenie, czy zmiana niczego nie zepsuła), ale odbywa się w specyficznym kontekście działającego systemu produkcyjnego.

Wyzwalacze (Triggers) Testowania Pielęgnacyjnego

Potrzeba przeprowadzenia testów pielęgnacyjnych może wynikać z różnych zdarzeń i działań podejmowanych w trakcie eksploatacji systemu.

Sylabus ISTQB grupuje te zdarzenia w trzy główne kategorie:

1. Modyfikacje (Modifications)

Jest to najczęstsza kategoria wyzwalaczy. Obejmuje ona wszelkie zmiany wprowadzane w kodzie lub konfiguracji systemu w celu:

  • Udoskonalenia (Enhancements): Dodawanie nowych funkcji, rozszerzanie istniejących możliwości, poprawa interfejsu użytkownika. Często realizowane w ramach planowanych wydań (np. nowe wersje oprogramowania).
  • Zmiany Korekcyjne (Corrective Changes): Naprawianie defektów wykrytych w środowisku produkcyjnym przez użytkowników lub w wyniku monitoringu.
  • Poprawki Doraźne (Hot Fixes): Pilne naprawy krytycznych błędów, które muszą być wdrożone natychmiast, często poza regularnym cyklem wydań, aby przywrócić stabilność systemu lub usunąć poważną lukę bezpieczeństwa.
  • Zmiany Adaptacyjne (Adaptive Changes): Dostosowywanie oprogramowania do zmian w jego środowisku operacyjnym, np. aktualizacja systemu operacyjnego, bazy danych, bibliotek zewnętrznych, zmiana przepisów prawnych, które system musi uwzględniać.
  • Zmiany Prewencyjne / Doskonalące (Preventive / Perfective Changes): Modyfikacje mające na celu poprawę jakości niefunkcjonalnej systemu, np. optymalizacja wydajności, refaktoryzacja kodu w celu poprawy utrzymywalności, zwiększenie bezpieczeństwa, poprawa czytelności kodu.

Każda z tych modyfikacji wymaga odpowiedniego przetestowania, aby upewnić się, że została zaimplementowana poprawnie i nie wprowadziła regresji.

2. Uaktualnienia lub Migracje Środowiska Produkcyjnego (Operational Environment Updates or Migrations)

Ta kategoria dotyczy zmian w infrastrukturze lub środowisku, w którym działa system, a niekoniecznie w samym kodzie aplikacji.

Przykłady obejmują:

  • Migracja na inną platformę: Przeniesienie systemu na nowy sprzęt, system operacyjny, serwer aplikacyjny, bazę danych lub do chmury.
  • Aktualizacje środowiska: Instalacja nowych wersji systemu operacyjnego, baz danych, bibliotek systemowych, na których opiera się aplikacja.

Jak wskazuje sylabus, takie zdarzenia „mogą wiązać się z koniecznością przeprowadzenia testów związanych z nowym środowiskiem i zmienionym oprogramowaniem bądź testów konwersji danych (w przypadku migracji danych z innej aplikacji do pielęgnowanego systemu)”.

Testowanie w tym kontekście ma na celu zapewnienie, że system nadal działa poprawnie i stabilnie w nowym lub zaktualizowanym środowisku, a proces migracji (jeśli występuje) przebiegł pomyślnie bez utraty czy uszkodzenia danych.

3. Wycofanie (Retirement / Decommissioning)

Każdy system ma swój cykl życia i w końcu nadchodzi moment, gdy przestaje być potrzebny lub opłacalny w utrzymaniu i zostaje wycofany z eksploatacji.

Nawet ten proces wymaga testowania.

  • Testowanie Archiwizacji Danych: Jak zauważa sylabus, „w przypadku wycofywania systemu może być konieczne przetestowanie archiwizacji danych, jeśli zachodzi potrzeba ich przechowywania przez dłuższy czas” (np. ze względów prawnych lub regulacyjnych). Należy sprawdzić, czy proces archiwizacji działa poprawnie, czy dane są kompletne i czy można je bezpiecznie przechowywać.
  • Testowanie Odtwarzania Danych: „Ponadto jeśli w okresie archiwizacji będzie wymagany dostęp do niektórych danych, może być konieczne przetestowanie procedur przywracania i odtwarzania danych po archiwizacji”. Trzeba upewnić się, że zarchiwizowane dane można w razie potrzeby odzyskać i odczytać.
  • Testowanie Usunięcia Danych/Systemu: W niektórych przypadkach może być konieczne bezpieczne usunięcie danych lub deinstalacja systemu, co również może wymagać weryfikacji.

Testowanie na etapie wycofania systemu ma na celu zapewnienie zgodności z politykami przechowywania danych, regulacjami prawnymi oraz bezpieczne zakończenie cyklu życia aplikacji.

Określanie Zakresu Testowania Pielęgnacyjnego

Podobnie jak w przypadku testów regresji podczas rozwoju, kluczowym wyzwaniem w testowaniu pielęgnacyjnym jest określenie odpowiedniego zakresu testów dla danej zmiany.

Wykonanie pełnego zestawu testów regresji dla każdej, nawet drobnej poprawki w systemie produkcyjnym, jest często niepraktyczne.

Sylabus wskazuje trzy główne czynniki wpływające na zakres testowania pielęgnacyjnego:

  • Poziom ryzyka związanego ze zmianą: Jak krytyczna jest modyfikowana funkcja? Jakie są potencjalne negatywne konsekwencje błędu w tej zmianie lub regresji spowodowanej tą zmianą? Im wyższe ryzyko, tym szerszy powinien być zakres testów.
  • Rozmiar istniejącego systemu: W dużych, złożonych systemach pełna regresja jest niemożliwa. Konieczna jest bardziej precyzyjna analiza wpływu i wybór kluczowych obszarów do przetestowania.
  • Rozmiar zmiany: Małe, izolowane zmiany mogą wymagać węższego zakresu testów regresji niż duże zmiany obejmujące wiele modułów lub kluczowe elementy architektury.

Dodatkowo, jak wspomniano wcześniej, analiza wpływu (impact analysis) jest kluczowym narzędziem do określania zakresu testowania pielęgnacyjnego.

Pomaga ona zidentyfikować obszary systemu, które mogły zostać dotknięte zmianą, i na tej podstawie wybrać odpowiedni zestaw testów potwierdzających i regresji.

Wyzwania Testowania Pielęgnacyjnego

Testowanie pielęgnacyjne niesie ze sobą specyficzne wyzwania:

  • Brak lub nieaktualna dokumentacja: Starsze systemy często cierpią na brak specyfikacji, wymagań czy dokumentacji projektowej, co utrudnia zrozumienie systemu i analizę wpływu zmian.
  • Brak wiedzy o systemie: Osoby odpowiedzialne za pielęgnację mogą nie być tymi samymi, które tworzyły system, co prowadzi do braku dogłębnej wiedzy o jego działaniu i architekturze.
  • Ograniczony czas i zasoby: Zespoły pielęgnacyjne często działają pod presją czasu, zwłaszcza w przypadku poprawek doraźnych (hot fixów), co może prowadzić do skracania zakresu testów.
  • Trudności w odtworzeniu środowiska: Środowisko produkcyjne może być złożone i trudne do dokładnego odtworzenia w środowisku testowym.
  • Zarządzanie zestawami testów: Utrzymanie aktualnych i efektywnych zestawów testów (zwłaszcza regresji) dla starzejącego się systemu może być trudne.

Podsumowanie

Testowanie pielęgnacyjne jest kluczowym elementem zapewnienia jakości oprogramowania po jego wdrożeniu.

Obejmuje testowanie zmian wprowadzanych w działającym systemie produkcyjnym.

Główne wyzwalacze to modyfikacje (udoskonalenia, poprawki, adaptacje), migracje środowiska oraz wycofanie systemu.

Testowanie pielęgnacyjne obejmuje zarówno testy potwierdzające (weryfikacja poprawności zmiany), jak i testy regresji (wykrywanie niezamierzonych skutków ubocznych).

Zakres testowania pielęgnacyjnego zależy od poziomu ryzyka, rozmiaru systemu i rozmiaru zmiany, a analiza wpływu jest kluczowa dla jego optymalizacji.

Pomimo wyzwań, skuteczne testowanie pielęgnacyjne jest niezbędne do utrzymania stabilności, niezawodności i wartości biznesowej systemów w długim okresie ich eksploatacji.

Najczęściej Zadawane Pytania (FAQ)

Czy testowanie pielęgnacyjne to to samo co testowanie regresji?
Nie do końca. Testowanie pielęgnacyjne to szersze pojęcie obejmujące testowanie wszelkich zmian w systemie produkcyjnym. Testowanie regresji jest kluczową *częścią* testowania pielęgnacyjnego, mającą na celu wykrycie skutków ubocznych tych zmian.
Kto jest odpowiedzialny za testowanie pielęgnacyjne?
Odpowiedzialność może spoczywać na dedykowanym zespole pielęgnacyjnym, zespole deweloperskim odpowiedzialnym za dany system lub na niezależnym zespole testowym, w zależności od organizacji.
Czy testowanie pielęgnacyjne dotyczy tylko starych systemów?
Nie, dotyczy każdego systemu, który jest już w eksploatacji i podlega zmianom, niezależnie od jego wieku. Nawet nowe systemy wchodzą w fazę pielęgnacji zaraz po wdrożeniu.
Jakie typy testów wykonuje się w ramach testowania pielęgnacyjnego?
Głównie testy potwierdzające i testy regresji. Mogą one obejmować zarówno testy funkcjonalne, jak i niefunkcjonalne, w zależności od charakteru zmiany i ryzyka.
Czy analiza wpływu jest zawsze konieczna?
Jest wysoce zalecana, aby efektywnie zarządzać zakresem testów, zwłaszcza w dużych systemach lub przy częstych zmianach. Pomaga uniknąć zarówno niedostatecznego testowania, jak i marnowania zasobów na testowanie nieistotnych obszarów.
Co jeśli nie ma dokumentacji do systemu?
Brak dokumentacji jest dużym wyzwaniem. W takiej sytuacji testerzy muszą polegać na technikach opartych na doświadczeniu, eksploracji systemu, inżynierii wstecznej (jeśli to możliwe) i bliskiej współpracy z osobami, które znają system (jeśli takie są).
Czy testowanie pielęgnacyjne można zautomatyzować?
Tak, zwłaszcza testy regresji w ramach pielęgnacji są dobrym kandydatem do automatyzacji, podobnie jak podczas rozwoju. Pomaga to zapewnić spójność i szybkość weryfikacji po zmianach.
Jakie testy wykonuje się przy migracji systemu?
Przy migracji kluczowe są testy weryfikujące, czy system działa poprawnie w nowym środowisku (testy kompatybilności, wydajności, funkcjonalne) oraz, jeśli dotyczy, testy poprawności migracji danych (kompletność, spójność, poprawność danych po migracji).
Czy testowanie poprawek doraźnych (hot fixów) różni się od innych?
Ze względu na pilność, testowanie hot fixów często odbywa się pod presją czasu. Kluczowe jest szybkie potwierdzenie, że krytyczny błąd został naprawiony, oraz przeprowadzenie minimalnego, ale dobrze ukierunkowanego zestawu testów regresji w najbardziej ryzykownych obszarach.
Czy testowanie wycofania systemu jest naprawdę potrzebne?
Tak, zwłaszcza jeśli istnieją wymogi prawne lub regulacyjne dotyczące archiwizacji i odtwarzania danych. Zapewnia to, że organizacja może spełnić te wymogi nawet po wyłączeniu systemu.

Przykładowe Pytania Egzaminacyjne

Pytanie 1 (K1): Jak nazywa się testowanie zmian wprowadzanych w systemie, który już działa w środowisku produkcyjnym?

  • a) Testowanie systemowe
  • b) Testowanie akceptacyjne
  • c) Testowanie pielęgnacyjne
  • d) Testowanie integracyjne

Poprawna odpowiedź: c (Testowanie pielęgnacyjne dotyczy testowania zmian w systemach produkcyjnych.)

Pytanie 2 (K2): Które z poniższych NIE jest typowym wyzwalaczem testowania pielęgnacyjnego?

  • a) Wdrożenie nowej wersji systemu operacyjnego na serwerze.
  • b) Naprawa defektu zgłoszonego przez użytkownika.
  • c) Przeprowadzenie testów modułowych nowo napisanego kodu.
  • d) Dodanie nowej funkcjonalności do istniejącego systemu.

Poprawna odpowiedź: c (Testy modułowe nowo napisanego kodu są częścią rozwoju, a nie pielęgnacji systemu produkcyjnego. Pozostałe opcje to typowe wyzwalacze.)

Pytanie 3 (K2): Jaki jest główny cel testowania przy wycofywaniu systemu?

  • a) Sprawdzenie, czy system nadal działa poprawnie.
  • b) Weryfikacja poprawności archiwizacji i możliwości odtworzenia danych.
  • c) Ocena wydajności procesu wycofywania.
  • d) Znalezienie ostatnich defektów przed wyłączeniem.

Poprawna odpowiedź: b (Przy wycofywaniu systemu kluczowe jest zapewnienie, że dane są poprawnie zarchiwizowane i w razie potrzeby mogą zostać odtworzone, zgodnie z wymogami.)