Frage                    | 
                
                    Antworten                    | 
            
        
        
      Co to jest test jednostkowy (unit test)?    Lernen beginnen
 | 
 | 
      Test jednostkowy sprawdza pojedyncze jednostki kodu (np. funkcje, metody) w izolacji, aby upewnić się, że działają one poprawnie.   
 | 
 | 
 | 
      Co to jest test integracyjny (integration test)?    Lernen beginnen
 | 
 | 
      Test integracyjny sprawdza interakcje pomiędzy różnymi modułami lub komponentami systemu, aby upewnić się, że współpracują one poprawnie.   
 | 
 | 
 | 
      Co to jest test funkcjonalny (functional test)?    Lernen beginnen
 | 
 | 
      Test funkcjonalny sprawdza działanie aplikacji na podstawie jej specyfikacji funkcjonalnych, koncentrując się na wynikach działań użytkownika.   
 | 
 | 
 | 
      Co to jest testowanie end-to-end (E2E)?    Lernen beginnen
 | 
 | 
      Testowanie end-to-end sprawdza cały proces działania aplikacji od początku do końca, symulując rzeczywiste scenariusze użytkownika.   
 | 
 | 
 | 
      Co to jest Test-Driven Development (TDD)?    Lernen beginnen
 | 
 | 
      TDD to metodyka programowania, w której pisze się testy jednostkowe przed implementacją funkcjonalności, a następnie kod jest tworzony, aby te testy przeszły.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      Zalety TDD obejmują poprawę jakości kodu, łatwiejsze refaktoryzacje, wczesne wykrywanie błędów oraz lepszą dokumentację kodu.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      Mocking to technika testowania, w której tworzy się atrapy obiektów lub metod, aby symulować ich zachowanie w testach jednostkowych.   
 | 
 | 
 | 
      Jakie narzędzie służy do testowania jednostkowego w PHP?    Lernen beginnen
 | 
 | 
      PHPUnit to popularne narzędzie do testowania jednostkowego w PHP.   
 | 
 | 
 | 
      Co to jest testowanie regresyjne?    Lernen beginnen
 | 
 | 
      Testowanie regresyjne to proces testowania aplikacji po wprowadzeniu zmian, aby upewnić się, że nowe zmiany nie wprowadziły nowych błędów.   
 | 
 | 
 | 
      Co to jest coverage (pokrycie) kodu?    Lernen beginnen
 | 
 | 
      Coverage kodu to metryka określająca, jaki procent kodu źródłowego został przetestowany przez testy jednostkowe.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      CI/CD to skrót od Continuous Integration/Continuous Deployment. CI/CD automatyzuje procesy integracji kodu i wdrażania aplikacji, zapewniając szybkie i niezawodne wdrożenia.   
 | 
 | 
 | 
      Jakie są popularne narzędzia CI/CD?    Lernen beginnen
 | 
 | 
      Popularne narzędzia CI/CD to Jenkins, GitLab CI, Travis CI i CircleCI.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      Smoke test to szybki test sprawdzający podstawową funkcjonalność aplikacji, aby upewnić się, że działa ona poprawnie po wdrożeniu.   
 | 
 | 
 | 
      Co to jest testowanie wydajnościowe?    Lernen beginnen
 | 
 | 
      Testowanie wydajnościowe ocenia, jak aplikacja działa pod względem szybkości, skalowalności i stabilności pod określonym obciążeniem.   
 | 
 | 
 | 
      Jakie są popularne narzędzia do testowania wydajnościowego?    Lernen beginnen
 | 
 | 
      Popularne narzędzia do testowania wydajnościowego to JMeter, Gatling i LoadRunner.   
 | 
 | 
 | 
      Co to jest testowanie eksploracyjne?    Lernen beginnen
 | 
 | 
      Testowanie eksploracyjne polega na ręcznym badaniu aplikacji bez wcześniej zaplanowanych przypadków testowych, aby odkryć nowe, niezauważone wcześniej błędy.   
 | 
 | 
 | 
      Co to jest testowanie A/B?    Lernen beginnen
 | 
 | 
      Testowanie A/B polega na porównywaniu dwóch wersji aplikacji (A i B) w celu określenia, która z nich lepiej spełnia określone kryteria.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      Selenium to narzędzie do automatyzacji przeglądarek internetowych, używane do testowania aplikacji webowych.   
 | 
 | 
 | 
      Co to jest testowanie black-box?    Lernen beginnen
 | 
 | 
      Testowanie black-box polega na testowaniu funkcjonalności aplikacji bez znajomości jej wewnętrznej struktury kodu.   
 | 
 | 
 | 
      Co to jest testowanie white-box?    Lernen beginnen
 | 
 | 
      estowanie white-box polega na testowaniu aplikacji z pełną znajomością jej wewnętrznej struktury kodu, koncentrując się na testowaniu konkretnych ścieżek kodu i logiki.   
 | 
 | 
 | 
      Jak napisać test sprawdzający wyjątki w PHPUnit?    Lernen beginnen
 | 
 | 
      Używając adnotacji @expectedException lub metody expectException() w teście.   
 | 
 | 
 | 
      Co to jest assert w PHPUnit?    Lernen beginnen
 | 
 | 
      Assert w PHPUnit to metoda sprawdzająca, czy wynik testu jest zgodny z oczekiwaniami, np. assertEquals(), assertTrue().   
 | 
 | 
 | 
      Co to jest mocking w PHPUnit?    Lernen beginnen
 | 
 | 
      Mocking w PHPUnit to tworzenie atrap obiektów lub metod za pomocą metody createMock(), aby symulować ich zachowanie podczas testów.   
 | 
 | 
 | 
      Jakie metody w PHPUnit są używane do ustawiania test fixture?    Lernen beginnen
 | 
 | 
      setUp() do przygotowania środowiska testowego przed każdym testem i tearDown() do czyszczenia po każdym teście.   
 | 
 | 
 | 
      Co to jest test fixture w PHPUnit?    Lernen beginnen
 | 
 | 
      Test fixture to zestaw warunków przygotowanych przed uruchomieniem testów, który umożliwia uruchamianie testów w kontrolowanym środowisku.   
 | 
 | 
 | 
      Jakie są różnice między assertEquals a assertSame w PHPUnit?    Lernen beginnen
 | 
 | 
      assertEquals sprawdza, czy dwie wartości są równe (również po konwersji typów), podczas gdy assertSame sprawdza, czy dwie wartości są identyczne pod względem typu i wartości.   
 | 
 | 
 | 
      Jakie są różnice między testem jednostkowym a testem integracyjnym?    Lernen beginnen
 | 
 | 
      Test jednostkowy sprawdza pojedyncze jednostki kodu w izolacji, natomiast test integracyjny sprawdza współdziałanie wielu jednostek lub modułów razem.   
 | 
 | 
 | 
      Co to jest data provider w PHPUnit?    Lernen beginnen
 | 
 | 
      Data provider to metoda, która dostarcza różne zestawy danych do testów, umożliwiając uruchomienie tego samego testu z różnymi danymi.   
 | 
 | 
 | 
      Co to jest setUpBeforeClass w PHPUnit?    Lernen beginnen
 | 
 | 
      setUpBeforeClass to metoda, która uruchamia się raz przed wszystkimi testami w klasie, służąc do ustawienia stanu wspólnego dla wszystkich testów.   
 | 
 | 
 | 
      Co to jest tearDownAfterClass w PHPUnit?    Lernen beginnen
 | 
 | 
      tearDownAfterClass to metoda, która uruchamia się raz po wszystkich testach w klasie, służąc do czyszczenia stanu wspólnego dla wszystkich testów.   
 | 
 | 
 | 
      Jak można zignorować test w PHPUnit?    Lernen beginnen
 | 
 | 
      Używając adnotacji @ignore przed metodą testową lub markTestSkipped w ciele testu.   
 | 
 | 
 | 
      Co to jest assert preconditions i postconditions w PHPUnit?    Lernen beginnen
 | 
 | 
      Assert preconditions to metoda assertPreConditions sprawdzająca warunki wstępne przed uruchomieniem testu, a assert postconditions to metoda assertPostConditions sprawdzająca warunki końcowe po wykonaniu testu.   
 | 
 | 
 | 
      Jakie są popularne rozszerzenia PHPUnit?    Lernen beginnen
 | 
 | 
      Popularne rozszerzenia to PHPUnit Mock Objects (mockowanie obiektów), DBUnit (testowanie baz danych) i PHPUnit Selenium (testowanie aplikacji webowych).   
 | 
 | 
 | 
      Co to jest testowanie mutacyjne?    Lernen beginnen
 | 
 | 
      Testowanie mutacyjne polega na wprowadzaniu drobnych zmian (mutacji) w kodzie źródłowym i sprawdzaniu, czy testy wykrywają te zmiany, co pomaga ocenić jakość testów.   
 | 
 | 
 | 
      Co to jest @depends w PHPUnit?    Lernen beginnen
 | 
 | 
      Adnotacja @depends pozwala określić zależność jednego testu od innego, dzięki czemu można używać wyników wcześniejszych testów w kolejnych.   
 | 
 | 
 | 
      Jakie są różnice między mock a stub?    Lernen beginnen
 | 
 | 
      Mock to obiekt, który symuluje zachowanie innego obiektu i umożliwia sprawdzenie interakcji z nim, natomiast stub to obiekt, który dostarcza z góry określone odpowiedzi na wywołania metod.   
 | 
 | 
 | 
      Co to jest assertCount w PHPUnit?    Lernen beginnen
 | 
 | 
      assertCount sprawdza, czy liczba elementów w kolekcji jest zgodna z oczekiwaną.   
 | 
 | 
 | 
      Jakie są zalety automatyzacji testów w PHP?    Lernen beginnen
 | 
 | 
      Automatyzacja testów poprawia efektywność, pozwala na szybkie wykrywanie błędów, umożliwia częste wdrażanie zmian oraz zapewnia większą stabilność i jakość aplikacji.   
 | 
 | 
 | 
      Co to jest assertFileEquals w PHPUnit?    Lernen beginnen
 | 
 | 
      assertFileEquals sprawdza, czy zawartość dwóch plików jest identyczna.   
 | 
 | 
 | 
      Jak zaimplementować testy zależne od bazy danych w PHPUnit?    Lernen beginnen
 | 
 | 
      Używając rozszerzenia DBUnit, które umożliwia zarządzanie stanem bazy danych przed i po testach.   
 | 
 | 
 | 
      Jakie są typowe wyzwania związane z testowaniem aplikacji PHP?    Lernen beginnen
 | 
 | 
      Typowe wyzwania to zależności między modułami, skomplikowane środowiska testowe, integracja z zewnętrznymi usługami i zarządzanie stanem bazy danych.   
 | 
 | 
 | 
      Co to jest assertStringContainsString w PHPUnit?    Lernen beginnen
 | 
 | 
      assertStringContainsString sprawdza, czy określony ciąg znaków znajduje się w innym ciągu.   
 | 
 | 
 | 
      Jakie są najlepsze praktyki testowania kodu w PHP?    Lernen beginnen
 | 
 | 
      Najlepsze praktyki to pisanie testów przed kodem (TDD), używanie mocków i stubów, regularne uruchamianie testów, dbanie o pokrycie kodu testami oraz dokumentowanie testów.   
 | 
 | 
 | 
      Co to jest assertJsonStringEqualsJsonString w PHPUnit?    Lernen beginnen
 | 
 | 
      assertJsonStringEqualsJsonString sprawdza, czy dwa ciągi JSON są równe.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      Psalm to statyczny analizator kodu PHP, który pomaga w wykrywaniu błędów i poprawianiu jakości kodu poprzez analizę statyczną.   
 | 
 | 
 | 
      Co to jest poziom trudności w Psalm?    Lernen beginnen
 | 
 | 
      Poziom trudności w Psalm określa rygorystyczność analizy kodu, od poziomu 1 (najbardziej restrykcyjny) do poziomu 8 (najbardziej luźny).   
 | 
 | 
 | 
      Jakie są typowe błędy wykrywane przez Psalm?    Lernen beginnen
 | 
 | 
      Psalm wykrywa błędy takie jak niezgodności typów, nieużywane zmienne, potencjalne null reference, błędy w logice kodu oraz brakujące typy zwracane i argumenty.   
 | 
 | 
 | 
      Co to jest @psalm-suppress?    Lernen beginnen
 | 
 | 
      @psalm-suppress to adnotacja pozwalająca na zignorowanie konkretnego ostrzeżenia Psalm dla danego fragmentu kodu.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      PHPStan to kolejne narzędzie do analizy statycznej kodu PHP, które pomaga w wykrywaniu błędów i poprawianiu jakości kodu.   
 | 
 | 
 | 
      Jakie są główne zalety i wady TDD (Test-Driven Development)?    Lernen beginnen
 | 
 | 
      Zalety to lepsza jakość kodu, łatwiejsza refaktoryzacja, wczesne wykrywanie błędów i lepsza dokumentacja. Wady to większy nakład pracy na początku, konieczność pisania wielu testów i możliwe spowolnienie procesu developmentu.   
 | 
 | 
 | 
      Co to jest refaktoryzacja i jak testy mogą w niej pomóc?    Lernen beginnen
 | 
 | 
      Refaktoryzacja to proces poprawy struktury kodu bez zmiany jego zewnętrznego zachowania. Testy zapewniają, że zmiany w kodzie nie wprowadziły nowych błędów.   
 | 
 | 
 | 
      Jakie są typowe narzędzia do testowania end-to-end (E2E) w PHP?    Lernen beginnen
 | 
 | 
      Typowe narzędzia to Selenium, Codeception i Cypress.   
 | 
 | 
 | 
      Jakie są najczęstsze wyzwania związane z testowaniem aplikacji PHP?    Lernen beginnen
 | 
 | 
      Wyzwania to zarządzanie zależnościami, testowanie złożonych interakcji, utrzymanie aktualności testów, oraz zarządzanie danymi testowymi.   
 | 
 | 
 | 
      Co to jest Continuous Integration (CI) i Continuous Deployment (CD)?    Lernen beginnen
 | 
 | 
      CI to praktyka automatycznego integrowania kodu od wielu deweloperów i jego częstego testowania, a CD to praktyka automatycznego wdrażania przetestowanego kodu na środowisko produkcyjne.   
 | 
 | 
 | 
      Jakie są kluczowe metryki do oceny jakości testów jednostkowych?    Lernen beginnen
 | 
 | 
      Kluczowe metryki to pokrycie kodu, liczba testów, liczba wykrytych błędów, czas wykonywania testów oraz wskaźniki mutacyjne.   
 | 
 | 
 | 
| 
     Lernen beginnen
 | 
 | 
      Wady to większy nakład pracy na początku, konieczność pisania wielu testów, możliwe spowolnienie procesu developmentu oraz trudność w zastosowaniu TDD w przypadku legacy code.   
 | 
 | 
 |