Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Testowanie i jakość oprogramowania

L#13: QA & AI-Driven Development

Wprowadzenie

Rola inżyniera jakości (QA) dynamicznie ewoluuje. Dziś nowoczesny tester nie tylko manualnie weryfikuje oprogramowanie, ale przede wszystkim projektuje zautomatyzowane procesy z wykorzystaniem AI. Podczas tego laboratorium dowiesz się, jak sprawnie tworzyć własne, inteligentne narzędzia i asystentów znacząco przyspieszających codzienną pracę.

Cel

Praktyczne opanowanie środowiska Gemini (przejdź do Gemini) w celu tworzenia dedykowanych botów (Gems) generujących testy automatyczne. Kolejnym etapem będzie błyskawiczna budowa własnego, przeglądarkowego klienta API z wykorzystaniem interaktywnego panelu Gemini Canvas.

Słownik pojęć

  • Data-Driven Testing (DDT): Technika automatyzacji polegająca na oddzieleniu skryptów testowych od danych (zapisywanych w zewnętrznym pliku np. JSON, YAML lub CSV), co pozwala na wykonywanie tych samych testów dla wielu zestawów danych wejściowych.
  • Gemini Gem: Spersonalizowana wersja asystenta AI, skonfigurowana pod konkretne zadanie za pomocą stałych instrukcji systemowych.
  • System Prompt (Instrukcja systemowa): Główna instrukcja nadająca asystentowi AI rolę, kontekst oraz określająca format wyjściowy i ograniczenia.
  • Gemini Canvas: Zintegrowany, interaktywny edytor wbudowany w Gemini, pozwalający na programowanie, testowanie i edycję kodu bezpośrednio obok okna czatu.

Automatyzacja tworzenia testów z Gemini Gems

Gemini Gem to spersonalizowany asystent AI działający w oparciu o stałe instrukcje. Dzięki nim bot staje się wyspecjalizowanym narzędziem, które nie traci kontekstu projektu podczas kolejnych sesji programistycznych.

Jak utworzyć Gema?
W lewym menu bocznym interfejsu Gemini przejdź do sekcji Gemy (Gems). Należy wybrać opcję + Nowy Gem. Zostaniesz przekirowany do formularza konfiguracji Gema, który składa się z następujących pól:

  • Nazwa (Name): Krótka, identyfikująca nazwa asystenta.
  • Opis (Description): Zwięzła informacja o przeznaczeniu bota.
  • Instrukcje (Instructions): Najważniejsze pole (system prompt), które decyduje o zachowaniu AI. Wklejamy tu rygorystyczne wytyczne określające rolę, styl pracy oraz ograniczenia bota.
  • Wiedza: Pliki lub zrzuty ekranu, które mają być wykorzystywane przez bota jako kontekst w procesie tworzenia kodu.
  • Podgląd: Pole do testowania stworzonego bota.

Kluczem do sukcesu przy generowaniu testów jest podanie botowi precyzyjnej sygnatury metody, wymagań biznesowych i wymuszenie w promptach (instrukcjach Gema) rygorystycznego zwracania wyłącznie kodu źródłowego (bez opisów). Zmusza to model do wygenerowania gotowego do wdrożenia kodu testów, eliminując niepotrzebny szum informacyjny.

Zadania do wykonania

Zadanie 1: Budowa bota odpowiedzialnego za tworzenie testów
Utwórz Gema Senior QA Test Generator, którego wyłącznym celem jest generowanie testów w bibliotece unittest dla języka Python na podstawie dostarczonych wymagań biznesowych i sygnatury. Upewnij się, że bot zwraca wyłącznie kod źródłowy. Kluczowe jest, aby w polu Instrukcje wyegzekwować od bota stosowanie zasady FIRST (Fast, Independent, Repeatable, Self-validating, Timely) oraz precyzyjny podział kodu każdego testu na sekcje (np. Arrange-Act-Assert). Przetestuj bota, przekazując mu poniższą deklarację oraz wymagania:

Cena bazowa biletu to 50 PLN. Dzieci poniżej 12 r.ż. mają 50% zniżki, seniorzy powyżej 65 r.ż. 30%. Klubowicze otrzymują dodatkowe 10% zniżki naliczane kaskadowo (zniżka nie jest naliczana od kwoty bazowej, ale od kwoty po zastosowaniu innych zniżek). Metoda rzuca wyjątek ValueError dla ujemnego wieku.

def calculate_ticket_price(age: int, is_club_member: bool) -> float:
    pass

Zadanie 2: Budowa bota odpowiedzialnego za tworzenie produkcyjnego kodu
Zbuduj drugiego Gema Python Developer, który na podstawie zwróconych testów z Zadania 1 przygotuje czysty, produkcyjny kod metody. W polu Instrukcje tego Gema kategorycznie zażądaj przestrzegania dobrych praktyk inżynierskich: zasad SOLID, prawa Demeter, reguł KISS (Keep It Simple, Stupid) i DRY (Don’t Repeat Yourself). Wygenerowany kod musi charakteryzować się najwyższą jakością. Skopiuj wygenerowany kod, uruchom go w lokalnym środowisku i solidnie przetestuj. Sprawdź, czy wszystkie testy zakończyły się powodzeniem.

Wskazówka: Wykorzystaj świeżo zbudowane Gemy do wygenerowania i weryfikacji testów dla logiki aplikacji, którą tworzyłeś w poprzednich laboratoriach (np. L#02: Framework unittest, L#04: Pokrycie kodu testami, L#06: Code Smells). To doskonała okazja, aby porównać kod testów napisany manualnie z rozwiązaniami od GenAI.

Klient API w środowisku Gemini Canvas

Gemini Canvas to zaawansowany edytor pozwalający na błyskawiczne prototypowanie, modyfikowanie i uruchamianie aplikacji webowych (np. lekkich klientów API) bezpośrednio z poziomu przeglądarki, bez potrzeby instalacji lokalnego IDE czy frameworków.

Zadania do wykonania

Zadanie 3: Prototypowanie klienta API
Zleć w Gemini (wykorzystując Canvas) zaprojektowanie nowoczesnego, przeglądarkowego narzędzia do testowania API. Aplikacja powinna pozwalać na wczytanie pliku ze specyfikacją testów (np. w formacie JSON, YAML lub CSV), zawierającego listę zapytań HTTP (URL, metoda, opcjonalny payload) oraz oczekiwane kody statusów. Narzędzie ma odczytać ten plik, wygenerować listę testów i umożliwić ich zbiorcze uruchomienie jednym przyciskiem. Całość powinna zamknąć się w jednym, czytelnym pliku integrującym HTML, CSS oraz JavaScript (wybór bibliotek UI pozostaw asystentowi). Zadbaj, aby interfejs czytelnie prezentował raport i statusy wykonanych testów. Taką aplikację możesz udostępnić w formie gotowego linku, a następnie dodać go do ulubionych zakładek w przeglądarce. W ten sposób zyskasz wygodny i szybki sposób na uruchomienie własnych testów z każdego miejsca na świecie.

Zadanie 4: Testy integracyjne na żywo
Uruchom aplikację za pomocą przycisku Preview w oknie Canvas. Przygotuj prosty plik ze specyfikacją (np. tests.json) dla darmowego serwera , w którym zdefiniujesz scenariusze dla różnych endpointów. Wczytaj plik do swojego nowego narzędzia, uruchom kolekcję jednym kliknięciem i zweryfikuj, czy klient poprawnie odczytał specyfikację, wykonał żądania oraz wygenerował czytelny raport z informacją o sukcesach i błędach.

Podsumowanie

Sztuczna inteligencja rewolucjonizuje szybkość budowania oprogramowania i automatyzacji, lecz to na inżynierze QA spoczywa obowiązek projektowania odpowiedniej architektury testów oraz krytycznej weryfikacji kodu. Pamiętaj o ryzyku zjawiska halucynacji modeli językowych. AI dostarcza tylko wysokiej jakości szkice, które zawsze wymagają audytu przez specjalistę przed wdrożeniem.