W dynamicznym świecie tworzenia oprogramowania, gdzie zmiany są nieuniknione, utrzymanie porządku i kontroli nad wszystkimi elementami projektu jest kluczowe.
Dotyczy to nie tylko kodu źródłowego, ale również wszystkich produktów pracy związanych z testowaniem.
Właśnie tutaj wkracza zarządzanie konfiguracją (Configuration Management - CM).
W tej lekcji przyjrzymy się, czym jest CM w kontekście testowania, dlaczego jest ważne i jak pomaga zapewnić spójność i identyfikowalność w procesie testowym.
Wyobraź sobie, że budujesz skomplikowany model z klocków LEGO.
Masz instrukcję (plan testów), różne rodzaje klocków (przypadki testowe, skrypty), narzędzia (środowisko testowe) i notatki o postępach (wyniki, raporty).
Zarządzanie konfiguracją to system, który pozwala Ci dokładnie wiedzieć, jakiej wersji instrukcji używasz, które klocki zostały już użyte, gdzie są przechowywane, jak są ze sobą połączone i jak śledzić wszelkie zmiany wprowadzane w modelu lub instrukcji.
Bez tego systemu, szybko zapanowałby chaos, a Ty nie byłbyś pewien, czy Twój model jest zgodny z pierwotnym planem.
W tej lekcji, bazując na sylabusie ISTQB Foundation Level v4.0 (sekcja FL-5.4 K2), omówimy:
- Definicję zarządzania konfiguracją w kontekście testowania.
- Elementy konfiguracji (Configuration Items - CI) związane z testowaniem.
- Znaczenie identyfikacji, nadzorowania i śledzenia produktów pracy testowej.
- Pojęcie konfiguracji bazowej (baseline).
- Rolę zarządzania konfiguracją w zapewnieniu powtarzalności i identyfikowalności testów.
Zrozumienie i stosowanie zasad zarządzania konfiguracją jest niezbędne do utrzymania kontroli nad procesem testowym, zwłaszcza w złożonych projektach i środowiskach, gdzie wiele elementów ulega ciągłym zmianom.
1. Czym Jest Zarządzanie Konfiguracją w Kontekście Testowania? (FL-5.4 K2)
Sylabus ISTQB definiuje zarządzanie konfiguracją jako „uporządkowany proces umożliwiający identyfikowanie, nadzorowanie i śledzenie produktów pracy”.
W kontekście testowania, te produkty pracy obejmują wszystko, co jest tworzone, używane i modyfikowane w ramach procesu testowego.
Główne cele zarządzania konfiguracją w testowaniu to:
- Identyfikacja: Jednoznaczne nazwanie i opisanie wszystkich elementów, które podlegają kontroli (elementów konfiguracji).
- Kontrola (Nadzór): Zarządzanie zmianami wprowadzanymi w elementach konfiguracji, zapewnienie, że zmiany są autoryzowane, udokumentowane i komunikowane.
- Śledzenie (Status Accounting): Rejestrowanie i raportowanie statusu elementów konfiguracji oraz wprowadzanych w nich zmian na przestrzeni czasu.
- Audyt (Verification and Audit): Sprawdzanie, czy konfiguracja produktu jest zgodna z wymaganiami i dokumentacją oraz czy proces CM jest przestrzegany.
Dzięki CM zespół testowy może mieć pewność, że testuje właściwą wersję oprogramowania, używając odpowiednich wersji przypadków testowych, w poprawnie skonfigurowanym środowisku, a wyniki testów są jednoznacznie powiązane z konkretną konfiguracją.
2. Elementy Konfiguracji (Configuration Items - CI) w Testowaniu
Element konfiguracji (CI) to dowolny produkt pracy, który jest zarządzany w ramach procesu CM.
W testowaniu, elementami konfiguracji mogą być:
- Przedmiot testów: Konkretna wersja testowanego oprogramowania, modułu, komponentu.
- Testware (Produkty pracy testowej):
- Plany testów
- Strategie testów
- Specyfikacje projektowania testów
- Warunki testowe
- Przypadki testowe (manualne i automatyczne)
- Skrypty testowe
- Dane testowe
- Procedury testowe
- Środowisko testowe:
- Sprzęt (serwery, urządzenia klienckie)
- Oprogramowanie systemowe (systemy operacyjne, bazy danych, serwery aplikacyjne)
- Narzędzia testowe (wersje i konfiguracje)
- Konfiguracja sieci
- Wyniki testowania:
- Dzienniki testów (logi)
- Raporty o defektach
- Raporty z wykonania testów
- Raporty postępu i raporty końcowe
- Dokumentacja związana: Wymagania, specyfikacje, dokumentacja użytkownika (wersje używane jako podstawa testów).
Każdy z tych elementów powinien mieć unikalny identyfikator, przypisaną wersję oraz zdefiniowane relacje z innymi elementami.
Na przykład, konkretny przypadek testowy (CI) może być powiązany z konkretnym wymaganiem (CI) i testować określoną wersję oprogramowania (CI).
Sylabus podkreśla, że w przypadku złożonych elementów konfiguracji, jak środowisko testowe, CM pozwala zarejestrować jego elementy składowe (np. wersje systemu operacyjnego, bazy danych, bibliotek) oraz relacje między nimi.
Jest to kluczowe dla zapewnienia powtarzalności testów – musimy wiedzieć dokładnie, w jakich warunkach test został wykonany.
3. Identyfikacja, Nadzorowanie i Śledzenie
Proces CM opiera się na trzech fundamentalnych działaniach:
- Identyfikacja: Każdy element konfiguracji (CI) musi być jednoznacznie zidentyfikowany, nazwany i opisany. Nadaje mu się unikalny identyfikator i wersję. Określa się również relacje między CI (np. ten przypadek testowy testuje tę wersję modułu).
- Nadzorowanie (Kontrola zmian): Wszelkie zmiany wprowadzane do CI muszą być kontrolowane. Obejmuje to proces zgłaszania propozycji zmian, ich ocenę, zatwierdzanie lub odrzucanie, implementację zatwierdzonych zmian oraz weryfikację ich poprawności. Zapewnia to, że zmiany są wprowadzane w sposób uporządkowany i autoryzowany.
- Śledzenie (Rejestrowanie stanu): Stan każdego CI oraz historia wprowadzanych w nim zmian muszą być rejestrowane i dostępne. Pozwala to na odtworzenie dowolnej poprzedniej konfiguracji oraz śledzenie ewolucji produktu i testware.
Te działania są zazwyczaj wspierane przez specjalistyczne narzędzia do zarządzania konfiguracją (np. systemy kontroli wersji jak Git, SVN; narzędzia do zarządzania cyklem życia aplikacji - ALM).
4. Konfiguracja Bazowa (Baseline)
Konfiguracja bazowa (baseline) to formalnie zatwierdzona i zdefiniowana wersja jednego lub więcej elementów konfiguracji w danym punkcie czasu.
Stanowi ona punkt odniesienia dla dalszych prac i może być zmieniona tylko poprzez formalny proces kontroli zmian.
Przykłady konfiguracji bazowych w testowaniu:
- Zatwierdzona wersja planu testów.
- Zestaw przypadków testowych gotowych do wykonania dla danej iteracji.
- Wersja oprogramowania przekazana do testów akceptacyjnych.
- Konfiguracja środowiska testowego używana podczas testów wydajności.
Ustanowienie konfiguracji bazowej zapewnia stabilny punkt odniesienia i pomaga w zarządzaniu zmianami.
Wszyscy członkowie zespołu wiedzą, która wersja jest aktualnie obowiązująca.
5. Rola CM w Powtarzalności i Identyfikowalności Testów
Zarządzanie konfiguracją odgrywa kluczową rolę w zapewnieniu dwóch ważnych cech procesu testowego:
- Powtarzalność (Repeatability): Możliwość ponownego wykonania testu w dokładnie takich samych warunkach i uzyskania tych samych wyników (chyba że w międzyczasie wprowadzono zmiany). CM zapewnia powtarzalność poprzez precyzyjne wersjonowanie i kontrolę wszystkich elementów konfiguracji (oprogramowania, testware, środowiska).
- Identyfikowalność (Traceability): Możliwość śledzenia powiązań między różnymi produktami pracy. CM, w połączeniu z narzędziami wspierającymi, pozwala na śledzenie relacji np. między wymaganiem, przypadkiem testowym, wykonaniem testu, znalezionym defektem i wersją kodu, w której defekt został naprawiony. Jest to kluczowe dla analizy pokrycia, oceny wpływu zmian i raportowania.
Bez skutecznego zarządzania konfiguracją, trudno jest zagwarantować, że testujemy właściwą rzecz, we właściwy sposób, we właściwym środowisku, a wyniki, które uzyskujemy, są wiarygodne i możliwe do odtworzenia.
Podsumowanie
Zarządzanie konfiguracją jest niezbędnym procesem wspierającym testowanie oprogramowania.
Poprzez identyfikację, nadzorowanie i śledzenie wszystkich kluczowych elementów (przedmiotu testów, testware, środowiska, wyników), CM zapewnia porządek, kontrolę i spójność w dynamicznym środowisku projektowym.
Umożliwia ustanawianie stabilnych punktów odniesienia (konfiguracji bazowych) oraz gwarantuje powtarzalność i identyfikowalność testów.
Chociaż wdrożenie pełnego procesu CM może wydawać się skomplikowane, jego korzyści w postaci zwiększonej kontroli, redukcji błędów i poprawy komunikacji są nieocenione, zwłaszcza w większych i bardziej złożonych projektach.