Skip to content
Yuu NAKAJIMA edited this page Jan 6, 2014 · 10 revisions

このページではテストシステムがどのように動作しているのか述べた後に,どのように編集すればよいのかを述べる.

ファイル構造

以下のような構造になっている.

 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

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に入っている,正しく動作した場合の結果とを比較して同じでなければエラーを返す.
}

Clone this wiki locally