-
Notifications
You must be signed in to change notification settings - Fork 5
Edit test system
このページではテストシステムがどのように動作しているのか述べた後に,どのように編集すればよいのかを述べる.
以下のような構造になっている.
Langrid-php-library-master //多言語工房のホームディレクトリ
├...
└test //テストシステムが実装されているディレクトリ
├...
├task.sh //テストを開始するシェルファイル.実行結果を送付するメールアドレスなどを設定可能
├AllTests.php //task.shからphpunitの引数として呼び出され,テスト全体を呼び出すphpファイル.
├test_settings.php //テストの設定を書き込むファイル.言語グリッドを利用するためのIDとパスワードの入力が必要
├resource
├...
├KyotoLangridResourceTest.php //各サービスタイプのテストコードを実装
└service_list.php //各サービスのテストの引数を記述
1:task.shが実行実行される. cronなどによってtask.shが実行されると,その中でphpunitがAllTests.phpを引数として実行される.
2:AllTests.phpがphpunitの引数として呼び出され,LocalServiceAllTests.php,BridgeAllTests.php,KyotoLangridResourceTest.phpがsuiteとして呼び出される LocalServiceAllTests.phpではローカルで必要な処理(データベースへの辞書データのデプロイなど)ができるかどうかがテストされ,BridgeAllTests.phpでも同様にデータベースの状態などがテストされる.これらはインフォニック様が実装したものだが,西村は正直なところ全貌は把握できていない. KyotoLangridResourceTest.phpを実行すると,各サービスを呼び出すテストが実行される.
3:KyotoLangridResourceTest.phpが実行され,各サービスのテストが実行される. KyotoLangridResourceTest.phpは最初にservice_list.phpを読み込む. service_list.phには各サービスをテストする際に与える引数が記述されている. その後に,各サービスタイプ毎にテストを進める.サービスタイプ毎の実際のテスト内容はKyotoLangridResourceTest.php内に記述される.
4:テスト結果がメールで送信される テスト結果がpostfixを介して外部に送信される. 現在はsmtpサーバとして,KUINSによって用意されたsmtpサーバであるsendmail.kuins.netを利用している. sendmail.kuins.netを利用するためにはECS-IDが必要となるが,sparrowサーバでは暫定的に西村のECS-IDを利用している.
定期的に実行されるテストの対象となるサービスを追加・編集する場合,\langrid-php-library-master\test\resource\service_list.phpを編集します. 新しいサービスタイプについて実装する場合,\langrid-php-library-master\test\resource\KyotoLangridResourceTest.phpを編集します.
service_list.phpではテストを実行するために,各サービス内に登録されている単語や用例などを設定します. サービスの種類(用例対訳,辞書...)によってテストを実行する際のパラメータは異なります.各サービスの設定部分の1行目に必要なパラメータが示されていますので,参考にしてください.
例えば,サービスの種類が用例対訳の場合,
<?php
// $endpoint, $headLang, $targetLang, $text, $mat(デフォルト MatchingMethod::COMPLETE)
'ParallelText' => array(
"kyoto1.langrid:KanagawaPrefectureSchoolEntranceParalleltext" => array( // Service ID
"http://langrid.org/service_manager/wsdl/kyoto1.langrid:KanagawaPrefectureSchoolEntranceParalleltext", // WSDL
"en", // 対訳の元言語
"ja", // 対訳の対象言語
"Approximate school fees", // 元言語の対訳例
"参考", //対象言語の対訳例
MatchingMethod::COMPLETE, // 検索方式
),
)各サービスの情報は言語グリッドサービスマネージャーから得ることができます.言語グリッドサービスマネージャーのページのmenuからView of Language Grid --> Language Services を選択すると,サービスの一覧を見ることができます.各サービスごとに詳細な情報が掲載されていますので,各サービスの対応している言語を知ることができます.また,上記のService IDやWSDLの情報もここから得ることができます.
##KyotoLangridResourceTest.php 各サービスタイプ毎に,テストの中でそのサービスのどの関数を呼び出し,その結果をどのようにチェックするかを記述します. 例えばパラレルテキストサービスタイプは以下のように実装されています.
<?php
//$endpoint: サービスエンドポイントURL
//$headLang: 翻訳元の言語
//$targetLang: 翻訳先の言語
//$text: 検索に用いる単語
//$answer: 正しく動作した場合の結果
//$mat: 検索時のマッチングメソッド.デフォルト値としてPREFIXを指定
public function testParallelTextResource($endpoint, $headLang, $targetLang, $text, $answer, $mat = MatchingMethod::PREFIX)
{
$client = ClientFactory::createParallelTextClient($endpoint); //クライアントのインスタンスをエンドポイントURLから作成
$result = $client->search(
Language::get($headLang),
Language::get($targetLang),
$text,
$mat
); //検索を実行し,その結果を得る.引数の内容などは多言語工房APIを参照する.
$this->assertEquals($answer,$result[0]->target); //検索結果は配列の形で返ってくる.配列の中から結果を見たい部分(今回でいえば$result[0]->targetに検索結果が入っている)と,$answerに入っている,正しく動作した場合の結果とを比較して同じでなければエラーを返す.
}