Как выполнить интеграционное тестирование в PHP? - PullRequest
21 голосов
/ 28 июня 2011

В настоящее время я выполняю модульные тесты для своего кода (с использованием PHPUnit и Jenkins), но я много читал об интеграционном тестировании.

  • Существуют ли инструменты для выполнения этого в php (желательно автоматизированный)?

  • Как бы я это реализовал?Есть ли где-нибудь хорошие уроки?

Ответы [ 2 ]

7 голосов
/ 10 октября 2018

Много лет спустя ... появилась платформа Codeception , которую можно использовать для выполнения модульных, интеграционных и функциональных тестов .

Codeception с использованием PHPUnit в качестве бэкэнда.для запуска это тесты.Таким образом, любой тест PHPUnit может быть добавлен к набору тестов Codeception.

В модульных тестах вы бы высмеивали доступ к базе данных, файловую систему, HTTP-запросы и другие компоненты, чтобы изолировать код и сделать егобыстрее.
Интеграционные тесты не требует, чтобы код выполнялся изолированно, это означает, что вы будете использовать эти компоненты по-настоящему и проверять вывод / результаты на предмет ожидаемого.

Чтобы проиллюстрировать, взгляните на этот пример интеграционного теста из Codeception DOC :

<?php
function testSavingUser()
{
    $user = new User();
    $user->setName('Miles');
    $user->setSurname('Davis');
    $user->save();
    $this->assertEquals('Miles Davis', $user->getFullName());
    $this->tester->seeInDatabase('users', ['name' => 'Miles', 'surname' => 'Davis']);
}
4 голосов
/ 28 июня 2011

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

Одной из возможных библиотек для этого является yaymock в хранилище кода Google. Это фиктивная библиотека php5.

Дальнейшие интеграционные тесты - это более или менее единственные тесты, которые проверяют поведение всей системы. Основным является настройка тестовой среды и последующее развертывание приложения. Вы можете выполнять такое тестирование также с помощью модульного тестового фреймворка или фиктивной библиотеки. Как хотите. Подробно тесты интеграции в вашем случае представляют собой запросы http, основанные на некоторых данных в вашей базе данных и ожидаемом возможном выводе html.

Чтобы автоматизировать это, вы можете использовать некоторые интегрированные интегрированные среды ... Hudson, Arbit или phpUnderControl. Для настройки php с помощью hudson и некоторых хороших плагинов для тестирования есть довольно хороший учебник . В нем также упоминаются некоторые полезные плагины, такие как проверки покрытия кода и т. Д., Которые можно интегрировать в среду.

...