Урок 18
Автоматическое тестирование
20 минАвтоматическое тестирование — это написание кода, который проверяет другой код. Это основа качественной разработки.
Зачем нужны тесты?
- Уверенность: Код работает как ожидается
- Рефакторинг: Можно менять код, не боясь сломать
- Документация: Тесты показывают как использовать код
- Дизайн: Тестируемый код = хороший код
Виды тестов
| Тип | Что тестирует | Скорость |
|---|---|---|
| Unit | Отдельные функции/классы | Быстро |
| Integration | Взаимодействие компонентов | Средне |
| E2E | Всю систему целиком | Медленно |
PHPUnit — стандарт тестирования в PHP
Установка через Composer:
composer require --dev phpunit/phpunit
Структура теста:
// tests/CalculatorTest.php
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAddition()
{
$calc = new Calculator();
$this->assertEquals(4, $calc->add(2, 2));
}
public function testDivisionByZero()
{
$this->expectException(DivisionByZeroError::class);
$calc = new Calculator();
$calc->divide(10, 0);
}
}
Основные assertions
Написание хороших тестов
Правило AAA:
- Arrange — подготовка данных
- Act — выполнение действия
- Assert — проверка результата
- Arrange — подготовка данных
- Act — выполнение действия
- Assert — проверка результата
Запуск тестов
# Запуск всех тестов
./vendor/bin/phpunit tests/
# Запуск конкретного теста
./vendor/bin/phpunit tests/CalculatorTest.php
# С покрытием кода
./vendor/bin/phpunit --coverage-html coverage/
Материалы по теме
- Глоссарий digital-терминов Глоссарий
- Статьи блога по разработке и SEO Блог
- Практические чеклисты по внедрению Чеклисты
- A/B-тестирование Термин
- A/B тестирование: полное руководство Статья