Testowanie manualne · Lekcja 08

Jak testować wyszukiwanie, filtry i sortowanie?

Ćwiczenie do tej lekcji jest gotowe do uruchomienia w tym serwisie. Otwórz laboratorium → Instrukcje uruchomienia terminala w tekście dotyczą również samodzielnej pracy na plikach źródłowych.

Wpisujesz „notes”, wybierasz Akcesoria i otrzymujesz cztery produkty. Pierwszy pasuje do frazy, trzy pozostałe do kategorii. Czy lista jest prawidłowa? Odpowiedź zależy od sposobu łączenia warunków. W tej lekcji zbudujesz oczekiwany zbiór wyników, sprawdzisz jego skład i kolejność, a potem opiszesz dwa błędy z konkretnymi danymi.

Materiał jest przeznaczony dla początkujących testerów. Nie potrzebujesz wiedzy o wyszukiwarkach pełnotekstowych. Używamy Sklepu DEMO v1.0: sześciu fikcyjnych produktów, dwóch kategorii i trzech sposobów sortowania. Katalog jest w całości zapisany w przeglądarce. Nie ma serwera wyszukiwania, rankingu trafności ani opóźnionych odpowiedzi API. Taka mała próbka pozwala ręcznie sprawdzić wszystkie wyniki bez zgadywania.

1. Oddziel trzy funkcje katalogu

Wyszukiwanie wybiera produkty pasujące do frazy. W naszym demo chodzi o fragment nazwy: notes pasuje do „Notes QA”, a QA do notesu i kubka. Wielkość liter i spacje na początku oraz końcu frazy są ignorowane. Nie ma rozpoznawania synonimów, poprawiania literówek ani wyszukiwania po opisie.

Filtr kategorii wybiera produkty należące do Biura lub Akcesoriów. Sortowanie ustala kolejność wybranego zbioru. Prawidłowy przełącznik sortowania nie dodaje produktów, nie usuwa ich i nie zmienia cen. Może zmienić tylko kolejność. To rozdzielenie pomaga znaleźć miejsce problemu: inny skład listy to inny objaw niż te same produkty w niewłaściwym porządku.

Kategoria i fraza łączą się warunkiem AND: produkt musi jednocześnie pasować do nazwy i należeć do wybranej kategorii. Wybór „Wszystkie” nie ogranicza kategorii. Pusta fraza nie ogranicza nazwy. Dzięki temu pusty tekst plus Biuro powinien zwrócić trzy produkty biurowe, a notes plus Akcesoria — zero.

To umowa naszego katalogu, nie uniwersalna reguła każdego serwisu. W produktach można spotkać OR pomiędzy zaznaczonymi wartościami jednego filtra i AND pomiędzy różnymi filtrami. Zanim uznasz wynik za błąd, ustal regułę dla konkretnej kombinacji. Pytanie „czy zaznaczenie dwóch marek pokazuje którąkolwiek z nich?” jest bardziej użyteczne niż ogólne „filtry powinny zawężać”.

Najpierw katalog sześciu produktów, potem dopasowanie nazwy AND kategorii, następnie sortowanie bez zmiany składu wyników

Najpierw sprawdź członkostwo w zbiorze. Dopiero potem oceniaj kolejność.

2. Przygotuj katalog, którego wynik znasz

Otwórz instrukcję ćwiczenia, uruchom node tools/serwer-lekcji.cjs albo użyj działającego procesu. Wejdź pod adres:

http://127.0.0.1:8787/content/cwiczenia/sklep-demo/lab.html

Kliknij reset. Zanotuj wersję i przeglądarkę. Dane są stałe, a katalog po resecie pokazuje sześć produktów. W dalszych próbach nie dodawaj nic do koszyka: badamy listę, więc ograniczamy poboczne zmiany. Nie jest to zakaz badania interakcji katalogu z koszykiem; na ten etap wybieramy jeden wyraźny cel.

ProduktKategoriaCena
Długopis testeraBiuro9,00 zł
Notes QABiuro20,00 zł
Kubek QAAkcesoria25,00 zł
Karty przypadkówBiuro35,00 zł
Torba na testyAkcesoria45,00 zł
Mata pod myszAkcesoria100,00 zł

Zapisz własne oczekiwania przed wykonaniem testu. Licznik „3” nie wystarcza: trzy niewłaściwe produkty też mogą dać prawidłową liczbę. Dla małej próbki porównuj nazwy wszystkich pozycji, ceny oraz kategorię. Dla większego katalogu warto przygotować kontrolowane dane o znanych cechach i identyfikatorach. Sam zrzut dziesięciu przypadkowych produktów nie daje pewnego wyniku oczekiwanego.

3. Sprawdź frazę bez innych ograniczeń

Pozostaw kategorię „Wszystkie”. Wpisz notes. Oczekuj dokładnie jednego Notesu QA i licznika 1. Teraz zmień tekst na nOtEs , zachowując spacje na końcach. Zbiór ma pozostać identyczny. W tym demo oba przypadki przechodzą, co potwierdza zadeklarowaną normalizację tekstu.

Normalizacja oznacza przekształcenie danych przed porównaniem, na przykład usunięcie spacji z końców i zmianę wielkości liter. Nie zakładaj, że obejmuje wszystko. Fraza no tes zawiera spację w środku i według naszych wymagań nie musi pasować do „Notes”. Fraza dlugopis bez polskiego „ł” również nie ma gwarancji dopasowania. Przed testem diakrytyki, czyli znaków takich jak ą i ł, ustal oczekiwanie produktu.

Wpisz nieistniejacy. Powinna pojawić się pusta lista i licznik zero. Następnie wyczyść tekst: sześć produktów wraca. To sprawdza także zmianę wyniku, a nie jedynie dopasowanie frazy. Jeżeli lista jest pusta, a licznik nadal pokazuje poprzednie 1, zapisujesz dwie obserwacje i nie traktujesz licznika jako wiarygodnego dowodu składu.

Sprawdź też tekst zawierający wyłącznie spacje. Nasza reguła usuwa je z końców, więc powstaje pusta fraza, która nie ogranicza wyników. Takie próbki mają konkretne uzasadnienie. Sto losowych zdań nie zastąpi sprawdzenia pustego tekstu, znanego dopasowania i braku dopasowania.

4. Zbuduj tabelę kombinacji

Zresetuj stan i przetestuj same kategorie. Pusta fraza oraz Biuro ma pokazać długopis, notes i karty. Pusta fraza oraz Akcesoria ma pokazać kubek, torbę i matę. Po każdym kroku porównaj licznik ze składami zapisanymi powyżej.

Następnie połącz kategorie ze znanymi frazami. Poniższa tabela zawiera wynik oczekiwany według wymagań. W aktualnym kodzie część prób będzie niezgodna.

FrazaKategoriaOczekiwany zbiór
pusty tekstWszystkieSześć produktów
notesWszystkieNotes QA
notesBiuroNotes QA
notesAkcesoriaPusty zbiór
QABiuroNotes QA
QAAkcesoriaKubek QA

Wpisz notes, a potem wybierz Akcesoria. Demo pokazuje Notes QA oraz trzy akcesoria: razem cztery produkty. To defekt S03. Każdy wynik spełnia co najmniej jeden warunek, podczas gdy powinien spełniać oba. Zestaw jest celowo dobrany tak, aby przecięcie było puste. Dzięki temu nie musisz dyskutować o rankingu lub podobieństwie nazw.

Ważny szczegół: test samych kategorii może przechodzić częściowo lub dawać mylący obraz. Gdy fraza jest pusta, każdy produkt pasuje do nazwy. Wadliwe OR dopuszcza wtedy cały katalog nawet przy wybranej kategorii. Zapisz tę próbę również. Jeden znaleziony minimalny przypadek wystarczy do zgłoszenia, ale kolejne pomagają zrozumieć zakres problemu.

Nie wpisuj w raporcie „błąd bazy danych”. W naszym ćwiczeniu bazy nie ma. Dowód mówi o złym składzie listy przy kombinacji warunków. Inspekcja kodu potwierdza OR zamiast AND, lecz samo UI nie wskazuje technologii odpowiedzialnej za problem.

5. Sprawdź sortowanie całej listy

Zresetuj katalog, pozostaw wszystkie kategorie i pustą frazę. Wybierz „Cena rosnąco”. Oczekiwana sekwencja to 9, 20, 25, 35, 45, 100 zł. W wersji wadliwej mata za sto złotych pojawia się pierwsza, a długopis za dziewięć złotych ostatni. Nie zmienia się zbiór sześciu produktów, zmienia się ich porządek.

To defekt S02. Ceny w kodzie są groszami: 900, 2000, 2500, 3500, 4500, 10000. Program porównuje ich tekstowe zapisy. W porównaniu znak po znaku początkowe „1” z 10000 wyprzedza „2” z 2000, a „9” z 900 trafia za „4”. Techniczne rozróżnienie porównania tekstu i liczb opisuje specyfikacja ECMAScript: sortowanie tablic.

Sprawdź także cenę malejąco. Oczekujesz dokładnego odwrócenia sekwencji: 100, 45, 35, 25, 20, 9 zł. Jeśli ocenisz wyłącznie pierwszy produkt, błąd wewnątrz listy może pozostać niewidoczny. Porównaj każdą sąsiednią parę: w rosnącym porządku poprzednia cena nie może być większa od następnej.

Sortowanie nazw A–Z powinno dać Długopis, Karty, Kubek, Matę, Notes i Torbę. Reguła nazw jest inna niż numeryczna reguła ceny. W realnym produkcie ustal również zachowanie równych cen: dodatkowy klucz, na przykład nazwa lub identyfikator, może zapewnić przewidywalną kolejność. Nasze produkty mają różne ceny, więc ta próbka nie sprawdza remisów.

6. Sprawdź zmiany kontrolek i reset

Testowanie każdej kontrolki osobno nie potwierdza całego katalogu. Wybierz cenę rosnąco, zmień kategorię, wpisz frazę i wyczyść ją. Po każdej akcji sprawdź aktywne wartości, skład listy, licznik i kolejność. Użytkownik powinien móc rozumieć, jakie ograniczenia nadal obowiązują.

Wypróbuj też inną kolejność: najpierw fraza, potem kategoria; następnie reset i najpierw kategoria, potem ta sama fraza. W tym lokalnym modelu końcowy stan kontrolek ma dawać ten sam wynik niezależnie od kolejności ustawiania. Taka próba wykrywa problemy z zachowaniem poprzedniego zbioru lub pominięciem ponownego przeliczenia po jednej akcji.

Reset przywraca pustą frazę, „Wszystkie”, nazwy A–Z i sześć produktów. Nie wpisuj „reset działa”, jeśli sprawdziłeś tylko wyczyszczenie pola. Obserwuj całość zadeklarowanego stanu. W prawdziwym produkcie przycisk „Wyczyść filtry” może świadomie pozostawić frazę lub sortowanie; wynik oczekiwany musi to odzwierciedlać.

7. Co dodać przy prawdziwym API?

Wyszukiwarka z backendem wymaga kolejnego poziomu dowodów. Po wpisaniu frazy sprawdź wysłane parametry i odpowiedź, a następnie porównaj ją z listą. Jeśli odpowiedź zawiera wyłącznie notes, a UI pokazuje cztery produkty, problem jest inny niż odpowiedź serwera zawierająca cztery rekordy.

Przy szybkiej zmianie zapytania odpowiedzi mogą wracać w różnej kolejności. Warto sprawdzić, czy starsza odpowiedź nie zastępuje wyników nowszej frazy. Zaplanuj również brak połączenia, błąd API, ładowanie, paginację i zachowanie po powrocie z karty produktu. Te próby wymagają działającej integracji i ustalonych wymagań. Sklep DEMO nie wykonuje żadnego z tych transferów.

Duże katalogi dodają problem wyników poza pierwszą stroną. Ustal, czy licznik opisuje wszystkie dopasowania, czy bieżącą stronę. Sprawdź brak duplikatów między stronami oraz zachowanie strony po zmianie filtra. Dla naszej sześciopozycyjnej listy nie wolno raportować „zweryfikowano paginację” ani wydajności silnika wyszukiwania.

8. Zadanie i rozwiązanie

Przygotuj dwa odrębne zgłoszenia. Pierwsze ma dotyczyć kombinacji notes i Akcesoria; drugie ceny rosnąco przy wszystkich produktach. W obu zapisz start od resetu, wartości kontrolek, pełną listę rzeczywistą i oczekiwaną. Ustal, czy różnica dotyczy składu, czy kolejności. Nie łącz ich pod ogólnym tytułem „katalog nie działa”.

Rozwiązanie dla filtrów: tytuł „Kombinacja frazy notes i kategorii Akcesoria zwraca cztery produkty zamiast zera”. Oczekiwany zbiór jest pusty. Rzeczywisty zawiera notes, kubek, torbę i matę. Po poprawieniu AND wykonaj każdą kontrolę osobno, wszystkie kombinacje z tabeli i wyczyszczenie frazy. Potwierdź liczniki.

Rozwiązanie dla ceny: tytuł „Cena rosnąco ustawia matę 100,00 zł przed długopisem 9,00 zł”. Po poprawieniu porównania liczb sprawdź całą sekwencję w obu kierunkach oraz sortowanie nazw. Test po naprawie S02 powinien także zachować właściwy zbiór wyników dla filtrów; poprawa porządku nie może zasłonić S03.

9. Weryfikacja i materiały

2 października 2026 wykonano node tools/test-sklep-pliki.cjs w Node v24.16.0 i Chromium 151.0.7922.34. Potwierdzono sześć produktów po resecie, jeden wynik dla nOtEs , zero dla nieistniejącej frazy przy wszystkich kategoriach oraz opisane defekty S02 i S03. Zapis pełnej rzeczywistej kolejności znajduje się w tmp/qa-sklep-pliki/wyniki.json.

To weryfikacja funkcjonalna lokalnej symulacji. Nie badano silnika pełnotekstowego, paginacji, wyścigów odpowiedzi ani obciążenia serwera. Użyj checklisty wyszukiwania lub jej PDF. Jeśli chcesz sprawdzić koszyk znalezionych produktów, przejdź do lekcji o koszyku.

Research i tekst z pomocą GPT-6.1 Sol, reasoning medium.