自動テスト

PHPUnit がKanboardの自動テストに使用されます。

異なるデータベース(Sqlite, MySQL, PostgreSQL) を横断して、どれでも同じ結果が得られるようにテストができます。

必要要件

  • Linux/Unix マシン
  • PHP
  • PHPUnit がインストールされていること
  • Mysql と Postgresql (任意)
  • Selenium (任意)
  • Firefox (任意)

単体テスト

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 を使用したテスト

ローカルホスト上にMySQLかMariaDBがインストールされている必要があります。

デフォルトでは、以下の資格情報を使用します:

  • ホスト名: localhost
  • ユーザー名: root
  • パスワード: none
  • データベース: kanboard_unit_test

実行ごとにデータベースは破棄され、再度生成されます。

PHPUnit の設定ファイルは tests/units.mysql.xml です。Kanboardのディレクトリから、phpunit -c tests/units.mysql.xml コマンドを実行してください。

PostgreSQL を使用したテスト

ローカルホスト上にPostgreSQLがインストールされている必要があります。

デフォルトでは、以下の資格情報を使用します:

  • ホスト名: localhost
  • ユーザー名: postgres
  • パスワード: none
  • データベース: kanboard_unit_test

ユーザー postgres に、データベースの生成と破棄を許可する必要があります。実行の都度データベースは再度生成されます。

PHPUnit の設定ファイルは tests/units.postgresql.xml です。Kanboardのディレクトリから、phpunit -c tests/units.postgresql.xml コマンドを実行してください。

結合テスト

結合テストは主にAPIのテストに使用されますテストスイートはコンテナ内でアプリケーションを実行するために実際にHTTPコールを生成します。

必要要件

  • PHP
  • コンポーザー
  • Unix系のOS (Mac OS か Linux)
  • Docker
  • Docker Compose

結合テストを実行する

結合テストはDockerコンテナを使用します。それは3つの異なる環境であっても、個々のデータベース毎にテストをする為です。

これらのコマンドで各々のテストスイートを実行できます。

# Sqliteでのテスト
make integration-test-sqlite

# Mysqlでのテスト
make integration-test-mysql

# PostgreSQLでのテスト
make integration-test-postgres

受入テスト

受入テスト (もしくは end-to-end テスト、機能テスト) はSeleniumを使用してブラウザ上のUIが実際に機能するかテストします。

これらのテストの実行を指示するには Selenium Standalone Server がインストールされている必要があり、また互換性のあるバージョンのFirefoxが必要です。

PHPUnit の設定ファイルは tests/acceptance.xml です。SeleniumとKanboardを同時に実行するには、Kanboardのディレクトリで make test-browser を実行してください。テストスイートを初期化して、Firefoxを自動的に開き、受入テストで指定されたアクションを実行します。

例:

$ make test-browser
PHPUnit 4.8.26 by Sebastian Bergmann and contributors.

..

Time: 5.59 seconds, Memory: 5.25MB

OK (2 tests, 5 assertions)

Travis-CI を使用した継続的インテグレーション

メインのリポジトリにコミットがプッシュされた後に、その都度様々なバージョンのPHPで単体テストが実行されます。

  • PHP 7.4
  • PHP 7.3
  • PHP 7.2

各バージョンのPHPで、サポートされている3つのデータベースでテストされます: Sqlite, Mysql とPostgresql です。

Travis-CIの設定ファイルは Kanboard のルートディレクトリにある .travis.yml です。