Przejdź do głównej zawartości

25. Testowanie aplikacji webowych

Testowanie aplikacji webowych

Testowanie to nie opcja — to część profesjonalnego programowania. Ta prezentacja wyjaśnia czym różnią się testy jednostkowe od integracyjnych i manualnych, jak pisać testy w PHPUnit i dlaczego automatyczne testy oszczędzają czas na dłuższą metę.

  1. Co testować? — logika biznesowa, walidacja, edge cases
  2. Jak wygląda test jednostkowy w PHP? — klasa testowa, asercje, izolacja
  3. Kiedy testy są za drogie? — balance między pokryciem a nakładem pracy
  1. Piramida testów: jednostkowe → integracyjne → e2e
  2. Test jednostkowy — co to jest i czego NIE testujemy
  3. PHPUnit — instalacja, struktura testu, uruchamianie
  4. Asercje: assertEquals, assertTrue, assertCount, assertNull
  5. Test integracyjny — kilka komponentów razem
  6. Testowanie manualne — kiedy i jak (checklisty)
  7. Pokrycie kodu (code coverage) — co oznacza %

Piramida testów

Diagram: piramida testów z opisem każdej warstwy

Przykład testu

Kompletny test jednostkowy funkcji PHP z asercjami

Minimum:

  • Definicja testu jednostkowego
  • Prosty przykład PHPUnit
  • Trzy rodzaje testów z opisem

Forma: 10 slajdów, 10 minut

Ocena: 3.0
<?php
// Funkcja do przetestowania
function calculateDiscount(float $price, int $percentage): float {
if ($percentage < 0 || $percentage > 100) {
throw new InvalidArgumentException("Rabat musi być w zakresie 0-100");
}
return round($price * (1 - $percentage / 100), 2);
}
// Test jednostkowy (PHPUnit)
use PHPUnit\Framework\TestCase;
class DiscountTest extends TestCase {
public function testCalculatesDiscountCorrectly(): void {
$result = calculateDiscount(100.0, 20);
$this->assertEquals(80.0, $result);
}
public function testReturnsOriginalPriceForZeroDiscount(): void {
$result = calculateDiscount(100.0, 0);
$this->assertEquals(100.0, $result);
}
public function testThrowsExceptionForNegativeDiscount(): void {
$this->expectException(InvalidArgumentException::class);
calculateDiscount(100.0, -5);
}
}

Użyj anegdoty

„Bug znaleziony przez test kosztuje 1 zł. Bug na produkcji kosztuje 1000 zł.”

Pokaż na żywo

Jeśli możliwe, uruchom phpunit w terminalu — wynik zielony/czerwony robi wrażenie