【PractiTest】FireCrackerの使い方
PractiTestは、手動テストと自動テストの両方の実行をサポートしているため、ユーザーは商用またはご自身のツールからテストを実行できます。
PractiTestで自動化を実行する方法はいくつかあります。自動化を使用する方法については、こちらへ。
Firecrackerを使用すると、CI / CDツールからxmlレポートファイルを取得して、PractiTestに簡単かつ自動的にアップロードできます。これ以降、新しいビルド結果を取得するたびに、すべてのフィールドとパラメーターを含む結果がPractiTestに送信され、ソフトウェア開発および展開プロセス全体の結果をまとめて1つの場所から確認できるようになります。
Firecrackerの設定をする前にいくつかの事前作業があります:
- APIトークンを作成します。アカウント管理者が有効にしてから個人設定で生成する個人APIトークンを使用することをお勧めします。
 - CI / CDツールから取得したテスト結果のフィールドと一致するテストカスタムフィールドを作成します。例:自動テストに「class_name」というフィールドを作成した場合、PractiTestテストのカスタムフィールドにマッピングします。このようにして、PractiTestのレポートとダッシュボードグラフで、自動テストに相当するものを確認できます。
 - PCにJavaがインストールされていることを確認してください.
 
設定を開始するには、PractiTest資格情報を使用してここからFirecrackerにアクセスし、以下の手順に従って進めてください。
ステップ1-xmlファイルをアップロードする

ステップ2-設定を変更してダウンロードする
APIトークンを貼り付けます。プロジェクトのドロップダウンリストから、結果を送信するプロジェクトを選択します。
PractiTestに表示される結果を変更する場合は、関数列を使用します。例:関数が「join(take 3?field)」の場合、PractiTestに表示される結果は、xmlの選択されたフィールドの値の最初の3文字です。
[ダウンロード]ボタンをクリックし、JSONファイルを受け取ります。
より多くのフィールドをマッピングする必要がある場合、または結果を送信するプロジェクトを変更する必要がある場合は、いつでも設定ファイルをFirecracker UIモードに変更し、更新されたバージョンをダウンロードできます。既存のフィールドを再マッピングする必要はありません。必要なときに情報を更新するだけOKです。
ステップ3-設定を確認する
xmlファイル、ダウンロードしたJSONファイル、およびFirecrackerのJARファイルを格納するフォルダーを作成します。これらのファイルはここからダウンロードできます。
フォルダ:
- xml_reports
- xml1.xml
 - xml2.xml
 - ..。
 
 - CONFIGURATION_FILE.json
 - practitest-firecracker-standalone.jar
 
注:ファイルとフォルダーの名前は、選択した名前に基づいて変更される場合があります。
次に、結果をPractiTestに送信するために、任意のシェルで以下のコマンドを実行する必要があります。関連するフォルダの名前を必ず指定してください。
java -jar practitest-firecracker-standalone.jar --reports-path = "xml_reports" --testset-name = "TEST_SET_NAME" --author-id = USER_ID --config-path = "CONFIGURATION_FILE.json" \ create-and -populate-testset
USER_IDは、PractiTestアカウントに属するユーザーである必要があります。このリクエストを送信することで、ユーザーIDを取得できます。
Firecrackerテストを手動で作成し、新しく実行して更新する場合は、指定する名前がxmlファイルのテストの名前と一致することを確認してください。
これで、PractiTestですべての結果を確認できます。
ステップ4-プロセスを自動化する
このアップロードプロセスを自動化するには、新しいxmlレポートファイルを「xml_reports」フォルダーにダウンロードし、古いファイルを削除してコマンドを実行するスクリプトを作成する必要があります。このようにして、新しいビルドファイルと結果ファイルを取得するたびに、自動的にPractiTestにアップロードされます。
Jenkinsのスクリプトの例:
スクリプトがFireCracker経由でPractiTestが更新を続けていることを確認するために、JenkinsのPipelineプラグインを使用しています(テストが失敗してもJenkinsがPractiTestを更新し続けることを確認できます)。また、JenkinsのParametersプラグインも使用しており、Jenkinsの複数のプロジェクトでPractiTestを更新できるようにしています。
この例の最小要件は、Jenkinsバージョン2.13です。
- Jenkins内で、[Jenkinsの管理]-> [プラグインの管理]-> [サブタブ使用可能]-> [パイプラインプラグインを見る]を探してインストールします。※この例では、複数のJenkinsプロジェクトで、PractiTestを更新するパイプラインをアクティブ化する必要があります。したがって、上記の順に従って探しインストールします。
 - Jenkins内で、[Create a new item]を押し、[Pipeline]を選択します。パイプラインに名前を付けます。
以下のスクリプトを新しいパイプライン内の[スクリプト]フィールドに貼り付けて、[保存]を押します。とりあえず、デフォルト値は空のままにしておきます。パラメータを使用して定義するためです。(下記※1のコード参照) - JenkinsでPractiTestを更新している複数のプロジェクトを確認する為、ビルドするプロジェクトに移動して、パイプラインをトリガーします。
- 設定を押します。
 - [Post-build actions]までスクロールし、左下に「Add post-build action」ボタンが表示されます。その横にある矢印を押して、「Trigger parameterized build on other projects」を選択します。
 - 「Projects to build」フィールドに、作成したパイプラインの名前を入力します。
 - 「Projects to build」フィールドで、「Complete (always trigger)」またはプロセスに適したものを選択します。
 - [Add parameters]-> [Predefined Parameters]を押します。事前定義されたパラメータウィンドウが開きます。このウィンドウ内で、以下のテキストを使用してパラメーターを定義します。テキストボックスの下の説明に従って、各パラメータに関連する値を追加します。 次のように関連する値を追加してください。
 
 
- TESTSET_NAME =既存の名前を使用する場合-Firecrackerは、既存のテストセットを実行し更新します。テストセットに新しい名前を付けると、FirecrackerはPractiTestで付けた名前で新しいテストセットを作成します。
 - PROJECT =プロジェクト名は、現在実行中のJenkinsプロジェクトの名前です。
 - RELATIVE_TEST_LOCATION =は、ポストビルドアクション、Publish Junit test result reportの下にあるテストレポートxmlです。これは、「ポスト・ビルド・アクションの追加」ボタンで設定できます。
 - JAR_VERSION =は、ヘルプページからダウンロードしたJarファイルのバージョンです。ここで見つけることができます。
 - AUTHOR_ID =Firecrakerを実行している人のユーザーIDを入力します。
 - API URI =APIのurlを貼り付けます。
 - CONFIG_FILE = FireCrackerからダウンロードしたJson構成ファイルの内容を貼り付けます。
 - RUN_BUILD = Pipelineが現在のプロジェクトをループで何度もビルドしないように、常にfalseを維持します。
 
保存を押します。
※1
pipeline {
         agent any
         parameters {
      	    string(name: 'TESTSET_NAME', defaultValue: '', description: 'testset name')
             string(name: 'PROJECT', defaultValue: '', description: 'jenkins project folder and name')
             string(name: 'RELATIVE_TEST_LOCATION', defaultValue: '', description: 'folder where test results where located in jenkins project')
             string(name: 'JAR_VERSION', defaultValue: '', description: 'firecracker jar version')
             string(name: 'AUTHOR_ID', defaultValue: '', description: 'author id')
             string(name: 'API_URI', defaultValue: '', description: 'api uri')
             string(name: 'CONFIG_FILE', defaultValue: '', description: 'firecracker config file content- downloaded from Firacracker')
             booleanParam(name: 'RUN_BUILD', defaultValue: true, description: 'run build or don\'t for parameterized call')
         }
         stages {
             stage('run project') {
                 steps{
                     script{
                         if ("${params.RUN_BUILD}"  == "true") {
                             build "${params.PROJECT}"
                         }
                     }
                 }
             }
         }
         post {
             always {
                 script{
                     if (!fileExists("practitest-firecracker-standalone.jar")) {
                         sh "wget https://github.com/PractiTest/practitest-firecracker/releases/download/v${params.JAR_VERSION}/practitest-firecracker-standalone.jar"
                     }
                     if (!fileExists("surefire-reports")) {
                         sh 'mkdir surefire-reports'
                     }
                     if (fileExists("surefire-reports/*")) {
                         sh 'rm surefire-reports/*'
                     }
                 }
                 sh "echo \'${params.CONFIG_FILE}\' > config.json"
                 sh "cp -a ../${params.PROJECT}/${params.RELATIVE_TEST_LOCATION}/. surefire-reports"
                 sh "java -jar practitest-firecracker-standalone.jar --api-uri=${params.API_URI} --reports-path=surefire-reports --config-path=config.json --testset-name=${params.TESTSET_NAME} --author-id=${params.AUTHOR_ID} create-and-populate-testset"
             }
         }
      }
      
これで、このプロジェクトがビルドされるたびに、パイプラインが自動的に更新され、FireCrackerが更新され、ビルド結果がPractiTestに自動的に送信されます。
PractiTest(プラクティテスト)に関するお問い合わせ
「PractiTest(プラクティテスト)」のトライアルアカウントのお申し込みや、製品デモの依頼、機能についての問い合わせなどお気軽にお問い合わせください。


