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.