Тестирование

Оригинальное название: testing

Коротко

Проверка программы на соответствие требованиям и ожиданиям: запуск её в заданных условиях и сравнение фактического результата с ожидаемым.

Что такое «Тестирование»

Любая правка кода может что-то сломать, и вопрос только в том, кто заметит это первым — разработчик или клиент на странице оплаты. Тестирование переносит обнаружение ошибок на этап, когда их дешевле исправить. Ошибка, найденная до выкладки, стоит минут работы. Та же ошибка в рабочем магазине стоит потерянных заказов.

Важно понимать границы метода. Эдсгер Дейкстра сформулировал это так: тестирование может показать наличие ошибок, но не их отсутствие. Тесты проверяют только те сценарии, о которых подумали. Поэтому их набор пополняют каждый раз, когда находят новую ошибку.

Виды тестирования

  • По уровню: модульное, интеграционное, системное, приёмочное.
  • По цели: функциональное — работает ли то, что должно; нефункциональное — скорость, безопасность, удобство.
  • По способу: ручное, когда сценарий проходит человек, и автоматическое, когда проверки выполняет программа.
  • По моменту: проверка нового и регрессионное — повторная проверка старого после изменений.

Отдельная группа — проверки под нагрузкой; о них рассказывает статья про нагрузочное тестирование.

Пример автотеста на PHPUnit

Тест проверяет функцию расчёта цены со скидкой из кода проекта:

use PHPUnit\Framework\TestCase;

final class PriceTest extends TestCase
{
    public function testDiscountIsApplied(): void
    {
        $this->assertSame(900.0, priceWithDiscount(1000.0, 10));
    }
}

Такой тест выполняется за доли секунды и запускается перед каждой выкладкой. Если кто-то поменяет формулу, тест сразу покажет расхождение. Для запуска используется фреймворк тестирования, он же собирает отчёт.

Сколько тестов нужно сайту

Для визитки достаточно ручного прохода по формам после изменений. Для интернет-магазина или личного кабинета разумный минимум — автотесты на расчёты цен, скидок и доставки и сквозной сценарий оформления заказа. Принцип пирамиды тестирования: много быстрых модульных тестов в основании, меньше интеграционных и совсем немного медленных сквозных тестов через браузер. Сто процентов покрытия кода — не цель. Цель — чтобы самые дорогие ошибки ловились до пользователей.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение