263 lines
6.5 KiB
Markdown
263 lines
6.5 KiB
Markdown
Автоматизированные тесты
|
||
========================
|
||
|
||
|
||
|
||
[PHPUnit](https://phpunit.de/) используется для запуска автоматизированных тестов в Канборд.
|
||
|
||
|
||
|
||
Вы можете запускать тесты для разных баз данных (Sqlite, Mysql and Postgresql), чтобы убедится, что результаты будут одинаковые.
|
||
|
||
|
||
|
||
Требования[¶](#requirements "Ссылка на этот заголовок")
|
||
-------------------------------------------------------
|
||
|
||
|
||
|
||
- Компьютер Linux/Unix
|
||
|
||
|
||
|
||
- PHP cli
|
||
|
||
|
||
|
||
- Установленный PHPUnit
|
||
|
||
|
||
|
||
- Mysql и Postgresql (опционально)
|
||
|
||
|
||
|
||
Unit тесты[¶](#unit-tests "Ссылка на этот заголовок")
|
||
-----------------------------------------------------
|
||
|
||
|
||
|
||
### Тестирование с Sqlite[¶](#test-with-sqlite "Ссылка на этот заголовок")
|
||
|
||
|
||
|
||
Sqlite тестирование использует базу данных в памяти, без использования записи на файловую систему.
|
||
|
||
|
||
|
||
Конфигурационный файл PHPUnit - `tests/units.sqlite.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.sqlite.xml`.
|
||
|
||
|
||
|
||
Пример:
|
||
|
||
|
||
|
||
phpunit -c tests/units.sqlite.xml
|
||
|
||
|
||
|
||
PHPUnit 5.0.0 by Sebastian Bergmann and contributors.
|
||
|
||
|
||
|
||
............................................................... 63 / 649 ( 9%)
|
||
|
||
............................................................... 126 / 649 ( 19%)
|
||
|
||
............................................................... 189 / 649 ( 29%)
|
||
|
||
............................................................... 252 / 649 ( 38%)
|
||
|
||
............................................................... 315 / 649 ( 48%)
|
||
|
||
............................................................... 378 / 649 ( 58%)
|
||
|
||
............................................................... 441 / 649 ( 67%)
|
||
|
||
............................................................... 504 / 649 ( 77%)
|
||
|
||
............................................................... 567 / 649 ( 87%)
|
||
|
||
............................................................... 630 / 649 ( 97%)
|
||
|
||
................... 649 / 649 (100%)
|
||
|
||
|
||
|
||
Time: 1.22 minutes, Memory: 151.25Mb
|
||
|
||
|
||
|
||
OK (649 tests, 43595 assertions)
|
||
|
||
|
||
|
||
### Тестирование с Mysql[¶](#test-with-mysql "Ссылка на этот заголовок")
|
||
|
||
|
||
|
||
У вас должна быть локально установлена база данных Mysql или MariaDb.
|
||
|
||
|
||
|
||
По умолчанию, используются следующие учетные данные:
|
||
|
||
|
||
|
||
- Hostname: **localhost**
|
||
|
||
- Username: **root**
|
||
|
||
- Password: none
|
||
|
||
- Database: **kanboard\_unit\_test**
|
||
|
||
|
||
|
||
При каждом выполнении база данных удаляется и создается снова.
|
||
|
||
|
||
|
||
Конфигурационный файл HPUnit - `tests/units.mysql.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.mysql.xml`.
|
||
|
||
|
||
|
||
### Тестирование с Postgresql[¶](#test-with-postgresql "Ссылка на этот заголовок")
|
||
|
||
|
||
|
||
У вас должен быть локально установлен Postgresql.
|
||
|
||
|
||
|
||
По умолчанию, используются следующие учетные данные:
|
||
|
||
|
||
|
||
- Hostname: **localhost**
|
||
|
||
- Username: **postgres**
|
||
|
||
- Password: none
|
||
|
||
- Database: **kanboard\_unit\_test**
|
||
|
||
|
||
|
||
Убедитесь, что пользователь `postgres` может создавать и удалять базу данных. База данных пересоздается при каждом выполнении теста.
|
||
|
||
|
||
|
||
Конфигурационных файл PHPUnit - `tests/units.postgres.xml`. Из директории Kanboard, запустите команду `phpunit -c tests/units.postgres.xml`.
|
||
|
||
|
||
|
||
Тесты интеграции[¶](#integration-tests "Ссылка на этот заголовок")
|
||
------------------------------------------------------------------
|
||
|
||
|
||
|
||
Фактически тестируются только вызовы API.
|
||
|
||
|
||
|
||
Реальные HTTP calls выполняются с этими тестами. Поэтому, необходим локальный экземпляр Канборда, который слушает на `http://localhost:8000/`.
|
||
|
||
|
||
|
||
Все данные будут удалены/изменены при тестировании. Более того скрипт будет сброшен и установлен новый ключ API.
|
||
|
||
|
||
|
||
1. Запустите локольный экземпляр Канборда: `php -S 127.0.0.1:8000`
|
||
|
||
|
||
|
||
2. Запустите тест в другом терминале
|
||
|
||
|
||
|
||
Этот же метод используется для запуска тестов для разных баз данных:
|
||
|
||
|
||
|
||
- Sqlite: `phpunit -c tests/integration.sqlite.xml`
|
||
|
||
- Mysql: `phpunit -c tests/integration.mysql.xml`
|
||
|
||
- Postgresql: `phpunit -c tests/integration.postgres.xml`
|
||
|
||
|
||
|
||
Пример:
|
||
|
||
|
||
|
||
phpunit -c tests/integration.sqlite.xml
|
||
|
||
|
||
|
||
PHPUnit 5.0.0 by Sebastian Bergmann and contributors.
|
||
|
||
|
||
|
||
............................................................... 63 / 135 ( 46%)
|
||
|
||
............................................................... 126 / 135 ( 93%)
|
||
|
||
......... 135 / 135 (100%)
|
||
|
||
|
||
|
||
Time: 1.18 minutes, Memory: 14.75Mb
|
||
|
||
|
||
|
||
OK (135 tests, 526 assertions)
|
||
|
||
|
||
|
||
Непрерывная интеграция с Travis-CI[¶](#continuous-integration-with-travis-ci "Ссылка на этот заголовок")
|
||
|
||
--------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
После каждого commit влитого в мой репозиторий, юнит тесты выполняются для 5 различных версий PHP:
|
||
|
||
|
||
|
||
- PHP 7.0
|
||
|
||
- PHP 5.6
|
||
|
||
- PHP 5.5
|
||
|
||
- PHP 5.4
|
||
|
||
- PHP 5.3
|
||
|
||
|
||
|
||
При тестировании каждой версии PHP используются 3 поддерживаемые базы данных: Sqlite, Mysql and Postgresql.
|
||
|
||
|
||
|
||
Конфигурационный файл Travis - `.travis.yml` - находится в корневой директории Kanboard.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[Русская документация Kanboard](http://kanboard.ru/doc/)
|
||
|