Skip to content Skip to sidebar Skip to footer

Tagi i skrypty w testach automatycznych: efektywna organizacja testów

Automatyzacja testów jest kluczowa dla procesu zapewniania jakości oprogramowania, pozwalając na szybkie, powtarzalne i skuteczne weryfikowanie funkcjonalności aplikacji. Jednak w miarę jak rośnie liczba testów, organizacja i zarządzanie nimi staje się wyzwaniem. Jednym z najskuteczniejszych sposobów na usprawnienie tego procesu jest zastosowanie tagów i skryptów w testach automatycznych.

Tagi to etykiety przypisane do testów, które umożliwiają ich grupowanie i selektywne uruchamianie, natomiast skrypty to zautomatyzowane instrukcje wykonywania testów, które zapewniają powtarzalność i spójność testów. W tym artykule pokażę, jak efektywnie wykorzystać te techniki w celu lepszej organizacji testów, zarządzania środowiskami testowymi oraz integracji testów z innymi elementami procesu CI/CD.

Zalety tagów i skryptów w testach automatycznych

Testy automatyczne mogą obejmować szeroki zakres scenariuszy, od prostych przypadków testowych po bardziej złożone procesy biznesowe. W miarę jak liczba testów rośnie, ich skuteczna organizacja staje się ważna dla zapewnienia jakości. Tagi i skrypty są narzędziami, które umożliwiają:

  • Lepszą organizację – pozwalają na łatwiejsze grupowanie testów według różnych kryteriów, takich jak funkcjonalność, priorytet, zespół odpowiedzialny, środowisko czy typ testu (np. testy UI, testy API, testy wydajnościowe).
  • Łatwiejsze zarządzanie – tagi pozwalają na selektywne uruchamianie określonych grup testów, co jest szczególnie przydatne w większych projektach, gdzie testy muszą być uruchamiane w określonych warunkach.
  • Efektywność procesów CI/CD – skrypty pozwalają na automatyczne uruchamianie testów w ramach pipeline’ów CI/CD, co zapewnia szybsze wykrywanie błędów i zapewnia ciągłość w procesie dostarczania oprogramowania.

Konfiguracja środowiska i integracja tagów

Żeby rozpocząć organizację testów za pomocą tagów i skryptów, należy odpowiednio skonfigurować środowisko i narzędzia do automatyzacji. Wiele frameworków do automatyzacji testów, takich jak Playwright, Selenium, Cypress czy Jest umożliwia stosowanie tagów do grupowania testów. Zasadniczo proces obejmuje:

  1. Instalację odpowiednich narzędzi – w zależności od wybranego narzędzia do automatyzacji, należy zainstalować odpowiednie pakiety, np. w przypadku Playwright: npm install @playwright/test.
  2. Używanie tagów w testach – tagi są zwykle definiowane za pomocą specjalnych słów kluczowych, takich jak @smoke, @regression, @critical, które pomagają w organizowaniu testów.

Przykład konfiguracji z tagami w Playwright:

import { test } from '@playwright/test';

test('@smoke Test logowania użytkownika', async ({ page }) => {

  await page.goto('https://example.com/login');

  await page.fill('#username', 'admin');

  await page.fill('#password', 'password');

  await page.click('#login');

  await expect(page).toHaveURL('/dashboard');

});

test('@regression Test rejestracji użytkownika', async ({ page }) => {

  await page.goto('https://example.com/register');

  await page.fill('#username', 'newUser');

  await page.fill('#password', 'newPassword');

  await page.click('#register');

  await expect(page).toHaveText('Welcome, newUser');

});

W powyższym przykładzie dwa testy są oznaczone tagami @smoke i @regression, co pozwala na uruchomienie tylko testów z określoną etykietą, zależnie od tego, jaką grupę testów chcemy przeprowadzić.

Zarządzanie skryptami testowymi

Skrypty w testach automatycznych pozwalają na automatyzację uruchamiania testów w określonych warunkach. W praktyce oznacza to, że testy mogą być uruchamiane na różnych środowiskach (np. staging, produkcja, testowanie lokalne) lub w odpowiedzi na określone zdarzenia, takie jak commit w repozytorium czy zmiana w kodzie.

Przykład prostego skryptu do uruchamiania testów z wybranym tagiem:

npx playwright test --grep @smoke

Powyższa komenda uruchomi wszystkie testy oznaczone tagiem @smoke, co jest idealnym rozwiązaniem w przypadku, gdy chcemy szybko sprawdzić kluczowe funkcjonalności aplikacji, np. podczas codziennego buildu lub w trakcie weryfikacji po wprowadzeniu poprawek.

Organizacja testów w zależności od środowiska

Różne środowiska testowe mogą wymagać uruchomienia różnych zestawów testów. Na przykład na środowisku staging można uruchomić pełny zestaw testów regresyjnych, natomiast na środowisku lokalnym wystarczą testy szybkie, takie jak testy smoke. Dzięki tagom możemy elastycznie dostosować zestawy testów do specyficznych potrzeb danego środowiska.

Przykład konfiguracji w pliku playwright.config.js:

import { defineConfig } from '@playwright/test';

export default defineConfig({

  use: {

    baseURL: 'https://staging.example.com',

  },

  projects: [

    {

      name: 'Smoke tests',

      testMatch: '@smoke',

    },

    {

      name: 'Regression tests',

      testMatch: '@regression',

    },

  ],

});

W ten sposób możemy skonfigurować różne zestawy testów w zależności od projektu i środowiska, co pomaga w zarządzaniu dużymi zbiorami testów.

Praktyki organizacji testów z tagami i skryptami

  1. Tagowanie testów według typu i priorytetu – Stosowanie tagów do oznaczania różnych rodzajów testów, np. @smoke, @regression, @performance, pozwala na łatwe zarządzanie i uruchamianie tylko tych testów, które są aktualnie potrzebne. Testy krytyczne mogą być oznaczone tagiem @critical, a testy związane z wydajnością – @performance.
  2. Zarządzanie testami według środowiska – Korzystając z tagów, możemy precyzyjnie określić, które testy mają być uruchamiane w danym środowisku, co pozwala na lepsze dopasowanie testów do wymagań konkretnych etapów cyklu życia aplikacji.
  3. Skrypty do uruchamiania testów – Skrypty automatyzujące uruchamianie testów w ramach CI/CD to ważny element, który pomaga w automatycznym uruchamianiu testów na różnych etapach procesu tworzenia oprogramowania. Skrypty te mogą uwzględniać parametry, takie jak tagi, środowisko czy rodzaj testu, co zwiększa ich elastyczność.
  4. Dokumentowanie strategii tagowania – Aby uniknąć chaosu w organizacji testów, warto stworzyć dokumentację określającą zasady tagowania testów, np. jakie tagi są używane, co oznaczają poszczególne tagi, oraz jak są one wykorzystywane w procesach CI/CD.

Alternatywa dla tagów: Organizacja testów przez nomenklaturę

Chociaż tagi są skuteczną metodą organizacji testów, popularną alternatywą jest zastosowanie odpowiedniego nazewnictwa testów. Podejście to pozwala na grupowanie testów za pomocą konwencji nazewniczych, dzięki którym można łatwo identyfikować i uruchamiać testy według ich funkcjonalności, obszaru testowanego, priorytetu lub innego kryterium, jednocześnie eliminując potrzebę stosowania tagów.

Zalety ustrukturyzowanego nazewnictwa testów:

  • Prosta organizacja – Testy są organizowane za pomocą odpowiednich prefiksów i numerów, co umożliwia łatwą identyfikację grup testów.
  • Brak potrzeby stosowania tagów – Przypisanie odpowiednich nazw testów pozwala na ich uruchamianie bez konieczności stosowania dodatkowych tagów, co upraszcza organizację, szczególnie w mniejszych projektach.
  • Elastyczność – Testy mogą być uruchamiane na podstawie wspólnej części nazwy, co zapewnia większą elastyczność w zarządzaniu testami, szczególnie w przypadku dużych projektów.

Jakie zasady stosować w nazewnictwie testów?

Testy mogą być nazwane zgodnie z określoną konwencją, która umożliwia ich łatwe rozróżnienie. Na przykład:

  • Prefiks w nazwie: Prefiks w nazwie testu może wskazywać na funkcjonalność albo skrót procesu, którego dotyczy dany test, np. ziz01, ziz02 dla testów procesu z symbolem ziz, czy oiuPayment01, oiuPayment02 dla testów procesu z symbolem oiu i scenariuszami z weryfikacją przypadków dot. płatności w danym procesie.
  • Numeracja testów: Numeracja testów pozwala na ich uporządkowanie oraz ułatwia kontrolowanie, które testy zostały wykonane, a które jeszcze nie.
  • Grupy testów: Jeśli testy są zorganizowane według obszarów, takie jak firstApp dla testów pierwszej aplikacji, secondApp dla testów drugiej aplikacji, to uruchomienie testów z danej grupy może odbywać się za pomocą wspólnej części nazwy, np. firstApp* lub secondApp*.

Przykład organizacji testów za pomocą nazewnictwa:

Załóżmy, że mamy dwie grupy testów: testy pierwszej aplikacji (np. procesu w Ferrycie) (firstApp) oraz testy drugiej aplikacji (secondApp). Testy będą miały następującą konwencję nazewnictwa:

  • firstApp – testy pierwszej aplikacji
    • firstApp01
    • firstApp02
    • firstApp03
  • secondApp – testy napisane dla drugiej aplikacji
    • secondApp01
    • secondApp02
    • secondApp03

W takim przypadku uruchomienie wszystkich testów związanych z pierwszą aplikacją mogłoby wyglądać następująco:

npx playwright test firstApp

To uruchomi wszystkie testy, które zaczynają się od prefiksu firstApp, czyli testy pierwszej aplikacji. Podobnie, uruchomienie testów związanych z drugą aplikacją można osiągnąć przez:

npx playwright test secondApp

Podsumowanie

Tagi i skrypty są niezwykle pomocnymi narzędziami w organizacji i zarządzaniu testami automatycznymi. Dzięki nim możliwe jest efektywne grupowanie testów, selektywne uruchamianie testów w zależności od potrzeb, a także łatwiejsza integracja z procesami CI/CD. Poprzez odpowiednią organizację testów przy użyciu tagów i skryptów, zespoły QA i developerzy mogą zwiększyć efektywność testów automatycznych, skracając czas potrzebny na ich uruchomienie i poprawiając jakość oprogramowania.

Alternatywą dla tagów jest organizacja testów za pomocą odpowiedniego nazewnictwa. Zastosowanie konwencji nazewniczych pozwala na proste grupowanie testów oraz ich uruchamianie bez konieczności stosowania tagów. Takie podejście może być bardziej intuicyjne w mniejszych projektach lub w przypadkach, gdy testy muszą być łatwo identyfikowane na podstawie ich nazwy.

Zastosowanie dobrych praktyk w zakresie tagowania, nazewnictwa i organizacji skryptów pozwala na lepszą kontrolę nad testami, a także daje możliwość szybkiego reagowania na zmiany w aplikacji. Regularne stosowanie tagów, skryptów i odpowiednich zasad nazewnictwa zapewnia lepszą skalowalność testów, umożliwiając ich rozbudowę w miarę wzrostu projektu.

1 komentarz

  • Artur Wiśniewski
    Posted 2026-01-21 at 15:05

    Mega przydatny temat, bo bez sensownej organizacji testy szybko robią się nie do utrzymania. Jak Wy to ustawiliście u siebie: tagi bardziej pod funkcjonalności (np. kredyty, onboarding), czy pod typ/warstwę testu (smoke/regresja/e2e), i co najlepiej się sprawdza przy odpalaniu na CI?

Zostaw komentarz