Tester automatyk – fiszki
To translate to english click on English flag button
1-10
Kliknij w fiszkę, aby zobaczyć drugą stronę.
Jakie są trzy podstawowe techniki projektowania testów czarnoskrzynkowych (Black-Box Testing) oparte na specyfikacji?
click
Podział na Klasy Równoważności (EP),
Analiza Wartości Brzegowych (BVA)
oraz Tablice Decyzyjne.
Na jakiej teorii matematycznej opiera się technika Podziału na Klasy Równoważności (Equivalence Partitioning)?
click
Na teorii mnogości, która zakłada podział dziedziny wejściowej na skończoną liczbę rozłącznych podzbiorów (klas).
Jaką zasadą należy się kierować podczas testowania klas niepoprawnych, aby uniknąć maskowania defektów?
click
Klasy niepoprawne należy testować pojedynczo, utrzymując pozostałe wejścia w stanie poprawnym,
aby system mógł zwalidować i zgłosić konkretny błąd.
Czym różni się 3-wartościowa analiza brzegowa (3-value BVA) od 2-wartościowej (2-value BVA)?
click
3-wartościowa BVA testuje wartość na granicy, tuż poniżej i tuż powyżej,
podczas gdy 2-wartościowa testuje tylko wartość na granicy i najbliższą wartość spoza granicy.
W jakim celu w technice Tablic Decyzyjnych stosuje się redukcję reguł (collapsing rules)?
click
W celu wyeliminowania testowania warunków, które nie wpływają na wynik akcji w danej kombinacji,
co optymalizuje proces testowy i poprawia czytelność.
Dlaczego testowanie wyczerpujące (Exhaustive Testing) jest niemożliwe dla nietrywialnych systemów?
click
Z powodu problemu eksplozji kombinatorycznej, gdzie przestrzeń wejściowa rośnie wykładniczo wraz ze złożonością systemu.
Jakie założenie, często nieuświadomione, jest kluczowe dla techniki Podziału na Klasy Równoważności?
click
Założenie o jednorodności (Hypothesis of Uniformity), które mówi, że przetestowanie jednego reprezentanta klasy jest wystarczające dla całej klasy.
Jaka jest fundamentalna obserwacja leżąca u podstaw techniki Analizy Wartości Brzegowych (BVA)?
click
Empiryczna obserwacja, że błędy w oprogramowaniu mają tendencję do klastrowania się na granicach domen wejściowych.
Do jakich systemów zaleca się stosowanie rygorystycznej, 3-wartościowej analizy brzegowej?
click
Do systemów krytycznych, takich jak systemy safety-critical lub finansowe, gdzie ryzyko błędu na granicy jest wysokie.
Jaką zależność można zaobserwować między Tablicami Decyzyjnymi a pokryciem MC/DC (Modified Condition/Decision Coverage)?
click
Analiza pełnej tablicy decyzyjnej pozwala zidentyfikować pary testów, które spełniają wymagania MC/DC, czyli weryfikują niezależny wpływ każdego warunku na wynik.
11-20
Najedź kursorem na fiszkę, aby zobaczyć drugą stronę.
W jaki sposób można zaimplementować techniki EP i BVA w scenariuszach BDD (Gherkin), aby uniknąć duplikacji kodu?
Należy wykorzystać konstrukcję `Scenario Outline`
z tabelą `Examples`, gdzie każdy wiersz reprezentuje osobny przypadek testowy dla klasy równoważności lub wartości brzegowej.
Czym, z perspektywy lingwistyki komputerowej, jest język Gherkin?
Jest to Kontrolowany Język Naturalny
(Controlled Natural Language – CNL),
który redukuje wieloznaczność poprzez ograniczoną gramatykę i słownictwo.
Czym jest Wszechobecny Język (Ubiquitous Language) w kontekście BDD i Domain-Driven Design?
Jest to wspólny model językowy używany przez wszystkich członków zespołu we wszystkich formach komunikacji, od rozmów po kod źródłowy.
Jaka jest różnica między stylem imperatywnym, a deklaratywnym w pisaniu scenariuszy Gherkin?
Styl imperatywny opisuje 'jak’ użytkownik wchodzi w interakcję z UI (np. 'kliknij przycisk’),
a styl deklaratywny opisuje 'co’ użytkownik chce osiągnąć (np. 'zaloguj się’).
Jakie dwa główne rozwiązania do implementacji BDD dominują w ekosystemie Pythona?
Biblioteki `Behave`
oraz `pytest-bdd`.
Jaki jest główny problem w inżynierii oprogramowania, na który odpowiada metodologia BDD (Behavior Driven Development)?
Problem luki semantycznej i kryzysu komunikacyjnego między interesariuszami biznesowymi, a zespołami inżynierskimi.
Jaką strukturę logiczną, z perspektywy teorii automatów, opisuje scenariusz Gherkina (Given-When-Then)?
Opisuje maszynę stanów:
`Given` definiuje stan początkowy,
`When` funkcję przejścia,
a `Then` oczekiwany stan końcowy.
Jaka jest rola inżyniera QA podczas warsztatów "Three Amigos" w procesie BDD?
Wnosi sceptycyzm i myślenie o ryzyku, odpowiadając na pytanie „Co może pójść źle?” (What if?).
Dlaczego styl deklaratywny jest preferowany w długoterminowych projektach BDD?
Ponieważ jest odporny na zmiany w interfejsie użytkownika (UI) i służy jako czytelna, 'żywa dokumentacja’ logiki biznesowej.
Czym jest biblioteka Faker w Pythonie i do czego służy w testowaniu oprogramowania?
Faker to biblioteka do generowania realistycznie wyglądających, ale fikcyjnych danych testowych, używana do wypełniania baz danych i symulowania scenariuszy.
21-30
Kliknij w fiszkę, aby zobaczyć drugą stronę.
Jak można zagwarantować powtarzalność wyników generowanych przez bibliotekę Faker?
click
Należy użyć metody `Faker.seed()` z konkretną wartością (ziarnem), co sprawi, że sekwencja generowanych danych będzie zawsze taka sama.
Co to są samonaprawiające się skrypty testowe (self-healing tests)?
click
Są to skrypty, które potrafią automatycznie dostosować się do drobnych zmian w UI, np. aktualizując przestarzałe selektory, aby uniknąć awarii testu.
Jakie narzędzie open-source dla Selenium w Pythonie wspiera mechanizm samonaprawy testów?
click
Healenium.
Jakie są korzyści z użycia Copilota przy tworzeniu testów jednostkowych?
click
Copilot może automatycznie wygenerować kompletny zestaw testów, włączając przypadki brzegowe i obsługę wyjątków, co znacznie przyspiesza pracę.
Czym jest GitHub Actions i jaką rolę pełni
w procesie wytwarzania oprogramowania?
click
Jest to platforma CI/CD, która umożliwia automatyzację budowania, testowania i wdrażania oprogramowania za pomocą potoków (workflows) zdefiniowanych
w repozytorium.
W jaki sposób można wymusić, aby model GPT od OpenAI zwrócił odpowiedź
w formacie JSON?
click
Można ustawić parametr `response_format`
na `{„type”: „json_object”}` w zapytaniu API
lub precyzyjnie opisać format w prompcie.
Na czym polega mechanizm samonaprawy, gdy skrypt testowy nie może zlokalizować elementu za pomocą głównego selektora?
click
Uruchamiane są strategie zapasowe, takie jak próba lokalizacji elementu za pomocą alternatywnych atrybutów, które były przechowywane w jego profilu
z poprzednich uruchomień.
Do czego służy GitHub Copilot w kontekście automatyzacji testów?
click
Służy jako inteligentny asystent, który generuje fragmenty kodu testowego, scenariusze, asercje i dane testowe na podstawie kontekstu i komentarzy.
Jaką dobrą praktykę należy stosować
w odniesieniu do kodu wygenerowanego przez GitHub Copilot?
click
Należy zawsze weryfikować i w razie potrzeby poprawiać wygenerowany kod, ponieważ Copilot nie rozumie w pełni logiki biznesowej i może generować błędy.
W jakim katalogu w repozytorium należy umieścić pliki konfiguracyjne workflow dla GitHub Actions?
click
W katalogu
`.github/workflows`.
31-40
Kliknij w fiszkę, aby zobaczyć drugą stronę.
Do czego służy akcja `actions/checkout` w kroku workflow GitHub Actions?
click
Służy do pobrania kodu źródłowego z repozytorium do środowiska maszyny wirtualnej, na której uruchamiany jest workflow.
Czym różnią się testy regresji od testów smoke pod względem zakresu i czasu wykonania?
click
Testy regresji są szerokie i czasochłonne, sprawdzając czy nowe zmiany nie zepsuły istniejących funkcji, podczas gdy testy smoke są wąskie i bardzo szybkie.
Jaki jest podstawowy mechanizm zarządzania pamięcią w Pythonie, oparty na strukturze `PyObject`?
click
Zliczanie referencji , gdzie każdy obiekt przechowuje licznik odwołań do niego.
W jaki sposób silnik V8 w JavaScripcie optymalizuje operacje na małych liczbach całkowitych, unikając alokacji na stercie?
click
Przez technikę Pointer Tagging, gdzie ostatni bit w słowie pamięci jest używany jako znacznik typu, pozwalając na przechowywanie małych liczb (SMI) bezpośrednio w słowie wskaźnika.
Na czym polega mechanizm leniwego wartościowania (short-circuit evaluation) operatorów logicznych `AND` oraz `OR`?
click
Interpreter przerywa ewaluację wyrażenia, gdy tylko wynik jest zdeterminowany (np. przy `A AND B`, jeśli A jest fałszem, B nie jest sprawdzane).
Co definiuje sekcja `on: [push]` w pliku workflow GitHub Actions?
click
Definiuje, że workflow zostanie uruchomiony automatycznie po każdym zdarzeniu `push` (wypchnięciu kodu) do repozytorium.
Jaki jest główny cel testów typu 'smoke' (dymnych)?
click
Szybka weryfikacja kluczowych, podstawowych funkcji aplikacji, aby potwierdzić, że nowy build jest wystarczająco stabilny do dalszego testowania.
Jaką strategię uruchamiania testów często stosuje się w CI/CD, łącząc testy smoke i regresyjne?
click
Testy smoke uruchamia się przy każdym `pushu`, a pełne testy regresyjne są uruchamiane według harmonogramu, np. w nocy.
Gdzie w pamięci procesu przechowywane są zmienne lokalne funkcji i ramki wywołań, a gdzie obiekty o dynamicznym czasie życia?
click
Zmienne lokalne i ramki wywołań przechowywane są na Stosie (Stack), a obiekty o dynamicznym czasie życia na Stercie (Heap).
Czym są ukryte klasy (Hidden Classes) w silniku V8 i jaką pełnią rolę w optymalizacji wydajności?
click
Są to wewnętrzne struktury opisujące kształt obiektu (offsety pól), co pozwala na bezpośredni dostęp do pamięci zamiast wolniejszego wyszukiwania w mapie haszującej.
41-50
Kliknij w fiszkę, aby zobaczyć drugą stronę.
Która instrukcja, `match` w Pythonie czy `switch` w JavaScripcie, oferuje bardziej zaawansowane możliwości dopasowywania wzorców strukturalnych?
click
Instrukcja `match` w Pythonie (Structural Pattern Matching) jest znacznie potężniejsza, pozwalając na destrukturyzację i dopasowanie do złożonych struktur danych.
Co formalizuje zasada DRY (Don't Repeat Yourself) w programowaniu?
click
Każdy fragment wiedzy w systemie musi mieć jedną, jednoznaczną i autorytatywną reprezentację,
co zapobiega duplikacji logiki biznesowej.
Na czym polega pułapka związana z mutowalnymi argumentami domyślnymi (np. `def func(items=[])`) w Pythonie?
click
Obiekt domyślny (lista) jest tworzony tylko raz przy definiowaniu funkcji, a nie przy każdym jej wywołaniu,
co prowadzi do współdzielenia stanu między wywołaniami.
Jaka jest zasadnicza różnica między dziedziczeniem w Pythonie,
a w JavaScripcie?
click
Python wspiera wielodziedziczenie klasowe z algorytmem MRO, podczas gdy JavaScript opiera się na jednodziedziczeniu prototypowym.
Czym różni się `self` w Pythonie od `this`
w JavaScripcie pod względem wiązania kontekstu?
click
Pythonowe `self` jest jawnie przekazywane i sztywno związane z instancją, podczas gdy JS-owe `this` jest wiązane dynamicznie w momencie wywołania funkcji.
Jaka jest fundamentalna różnica w definiowaniu bloków kodu (np. w pętli `for`) między Pythonem a JavaScriptem?
click
Python używa wcięć jako części składni do definiowania bloków, podczas gdy JavaScript używa nawiasów klamrowych `{}`.
Jaki jest skutek braku zakresu blokowego (block scope) dla pętli `for` w Pythonie?
click
Zmienna sterująca pętlą (np. `i`) oraz inne zmienne zdefiniowane wewnątrz pętli „wyciekają” i są dostępne
w całej funkcji po zakończeniu pętli.
Co oznacza, że funkcje w Pythonie
i JavaScripcie są 'obywatelami pierwszej kategorii' (first-class citizens)?
click
Oznacza to, że mogą być przypisywane do zmiennych, przekazywane jako argumenty do innych funkcji oraz zwracane przez inne funkcje.
Jakie jest prawidłowe i bezpieczne rozwiązanie problemu mutowalnych argumentów domyślnych w Pythonie?
click
Należy użyć `None` jako wartości domyślnej i tworzyć nowy obiekt (np. listę) wewnątrz funkcji, `if items is None: items = []`.
Jak w Pythonie i JavaScripcie nazywają się metody inicjalizujące stan obiektu podczas jego tworzenia?
click
W Pythonie jest to `__init__`,
a w JavaScripcie `constructor`.
51-60
Kliknij w fiszkę, aby zobaczyć drugą stronę.
Jaką strategię uruchamiania testów często stosuje się w CI/CD, łącząc testy smoke i regresyjne?
click
Testy smoke uruchamia się przy każdym `pushu`, a pełne testy regresyjne są uruchamiane według harmonogramu, np. w nocy.
W kontekście HTTP, co oznacza, że metoda jest 'idempotentna'?
click
Oznacza to, że wielokrotne wykonanie tego samego żądania daje taki sam efekt jak wykonanie go jeden raz.
Jaka jest różnica semantyczna między kodem statusu HTTP 401 Unauthorized a 403 Forbidden?
click
401 oznacza błąd uwierzytelnienia (system nie wie, kim jesteś), a 403 błąd autoryzacji (system wie, kim jesteś, ale nie masz uprawnień).
Czym jest Postman Sandbox i jakie ma główne zadanie?
click
Jest to izolowane środowisko wykonawcze JavaScript (oparte na Node.js), w którym uruchamiane są skrypty Pre-request i Tests.
Do czego służy funkcja `postman.setNextRequest()` w skryptach Postmana?
click
Pozwala na nieliniowe sterowanie przepływem wykonania w Collection Runnerze, umożliwiając tworzenie pętli lub warunkowe pomijanie żądań.
Jakiego nagłówka HTTP należy użyć,
aby w Postman Mock Serverze wymusić zwrócenie konkretnej, nazwanej odpowiedzi (Example)?
click
Należy użyć nagłówka `x-mock-response-name`
z nazwą pożądanego przykładu.
Jaki wzorzec projektowy jest standardem w automatyzacji testów UI do hermetyzacji interakcji ze stroną internetową?
click
Wzorzec Page Object Model (POM).
Która z głównych metod HTTP (GET, POST, PUT, DELETE) z definicji nie jest idempotentna?
click
Metoda POST.
W jaki sposób w Postmanie realizuje się testy sterowane danymi (Data-Driven Testing)?
click
Za pomocą narzędzia Collection Runner, które uruchamia kolekcję wielokrotnie, w każdej iteracji pobierając dane z zewnętrznego pliku (CSV lub JSON).
Do czego służy hierarchia zmiennych (Global, Collection, Environment)
w Postmanie?
click
Pozwala na zarządzanie konfiguracją i stanem testów, gdzie zmienne o węższym zakresie (np. Environment) nadpisują te o szerszym zakresie (np. Global).
Jaka jest podstawowa różnica między 'stubem' a 'mockiem' w kontekście dublerów testowych?
click
Stub dostarcza gotowe odpowiedzi i służy do weryfikacji stanu, podczas gdy mock weryfikuje zachowanie (sprawdza, czy i jak został wywołany).
61-70
Kliknij w fiszkę, aby zobaczyć drugą stronę.
W jaki sposób można symulować dynamiczne dane w odpowiedziach Postman Mock Server?
click
Należy użyć wbudowanych zmiennych dynamicznych, takich jak `{{$randomFullName}}` czy `{{$randomUUID}}`, w ciele zapisanej odpowiedzi.
Jaką rolę w frameworku `pytest` pełnią fixtury?
click
Fixtury przygotowują środowisko, dane lub stan przed testem (setup) i sprzątają po nim (teardown), a następnie są wstrzykiwane do testów jako argumenty.
Jaka jest różnica między 'twardą' asercją (`assert`), a 'miękką' asercją (np. z `pytest-check`)?
click
Twarda asercja przerywa wykonanie testu natychmiast po pierwszym błędzie,
podczas gdy miękka asercja rejestruje wszystkie błędy i raportuje je na końcu.
Jaką fundamentalną zmianą architektoniczną cechuje się Pydantic V2 w porównaniu do V1?
click
Rdzeń walidacyjny został przepisany z Pythona na język Rust (pydantic-core), co przyniosło drastyczny wzrost wydajności.
Jaki przepływ (Grant Type) OAuth 2.0 jest najczęściej rekomendowany do automatyzacji testów API i dlaczego?
click
Resource Owner Password Credentials (ROPC), ponieważ pozwala uzyskać token jednym żądaniem POST bez potrzeby interakcji z interfejsem użytkownika.
Dlaczego w frameworkach do testowania API w Pythonie preferuje się użycie obiektu `requests.Session()` zamiast pojedynczych wywołań `requests.get()`?
click
Ponieważ `requests.Session()` wykorzystuje pulę połączeń (connection pooling) i utrzymuje połączenie (Keep-Alive), co drastycznie redukuje narzut sieciowy.
Co oznacza `scope="session"` w definicji fixtury w `pytest`?
click
Oznacza, że dana fixtura zostanie utworzona tylko raz na całą sesję testową, a jej wynik będzie współdzielony przez wszystkie testy, które jej używają.
Na czym polega filozofia "Parse, Don't Validate" biblioteki Pydantic?
click
Pydantic nie tylko sprawdza poprawność danych, ale przede wszystkim próbuje je przekształcić (sparsować) do docelowych typów zdefiniowanych w modelu, gwarantując typ wyjściowy.
W jaki sposób w Pydantic V2 definiuje się walidację obejmującą wiele pól modelu (cross-field validation)?
click
Należy użyć dekoratora `@model_validator(mode=’after’)`, który działa na całej instancji modelu po walidacji poszczególnych pól.
Z jakich trzech zakodowanych w Base64Url części składa się JSON Web Token (JWT)?
click
Z Nagłówka (Header),
Ładunku (Payload)
i Podpisu (Signature).
71-78
Kliknij w fiszkę, aby zobaczyć drugą stronę.
W jaki sposób w raporcie Allure rozróżniane są błędy asercji od błędów technicznych w teście?
click
Błędy asercji są oznaczane jako 'Failed’ (czerwone),
a błędy techniczne (np. wyjątki w kodzie) jako 'Broken’ (żółte).
Do czego służy dekorator `@allure.step` w testach integrowanych z Allure?
click
Służy do podziału logiki testu na czytelne, zagnieżdżone kroki, co ułatwia analizę przebiegu wykonania w raporcie.
Dlaczego struktura DOM może różnić się od źródłowego kodu HTML strony?
click
Ponieważ DOM jest dynamiczny i odzwierciedla aktualny stan strony, uwzględniając modyfikacje wprowadzone przez JavaScript oraz automatyczne korekty błędów dokonane przez przeglądarkę.
Jaka jest główna wada porównywania obrazów typu 'pixel-perfect' w testach wizualnych?
click
Generuje ono dużo fałszywych alarmów (false positives) z powodu nieistotnych różnic, takich jak antyaliasing czcionek czy drobne przesunięcia renderowania.
Jaką rolę w architekturze Allure pełni `allure-pytest` (adaptor) a jaką `allure-commandline` (generator)?
click
Adaptor `allure-pytest` zbiera dane o przebiegu testów i zapisuje je jako surowe pliki JSON, a generator `allure-commandline` przetwarza te pliki w interaktywny raport HTML.
Czym jest Document Object Model (DOM)?
click
Jest to obiektowa, drzewiasta reprezentacja dokumentu HTML w pamięci przeglądarki, która umożliwia skryptom dynamiczny dostęp i modyfikację jego struktury oraz zawartości.
Czym są testy regresji wizualnej?
click
Jest to technika polegająca na porównywaniu zrzutów ekranu aplikacji (piksel po pikselu) z obrazem bazowym (baseline), w celu wykrycia niezamierzonych zmian w UI.
W jaki sposób można sterować częstością wykonywania zadań przez wirtualnych użytkowników w Locust?
click
Należy podać wagę liczbową do dekoratora `@task()`; zadania z wyższą wagą będą wybierane częściej.