🚀

Launchable Advent Calendar 24日目 - rawプロファイル

2022/12/25に公開

Launchableの各機能の利用方法を紹介する Launchable Advent Calendar 24日目です。

はじめに

Day 23でサポートされていないテストランナーやレポートフォーマットに対応するため、custom pluginの作り方/使い方を紹介しました。
しかし1からcustom pluginを作り、メンテナンスし続けるのは難しいのも事実です。

そこで今日は対応していないテストランナーやレポートフォーマットを利用している人向けのrawプロファイルについて紹介します。(docs)

rawプロファイル

rawプロファイルはLaunchableが指定する特定のフォーマットに従ってPredictive Test Selection(PTS)およびテスト結果を送信します。
指定のフォーマットに合わせる必要がありますが、そこまで複雑なフォーマットではないのでcustom pluginを用意するよりは手間が少なく対応できます。

record tests

rawプロファイルでは出力されるレポートファイルのフォーマットがJUnit形式であればそのまま利用できます。
異なっている場合でも決められたJSONフォーマットでテスト結果を出力することで結果をLaunchableへ取り込むことができます。

例)

report-format-example.json
{
  "testCases": [
     {
       "testPath": "file=login/test_a.py#class=class1#testcase=testcase899",
       "duration": 42,
       "status": "TEST_PASSED",
       "stdout": "This is stdout",
       "stderr": "This is stderr",
       "createdAt": "2021-10-05T12:34:00"
     }
  ]
}

Day 23で利用したXML形式のレポートファイルをrawプロファイルのJSONのフォーマットに対応してみます。

report.xml
<result>
  <UseCase name="Buy New Item">
    <Scenario name="Purchase">
      <TestCase name="success" time="3.6" result="success" />
      <TestCase name="soldout" time="1.6" result="error" />
    </Scenario>
  </UseCase>
</result>

このようなフォーマットになります。
rawプロファイルの duration は少数点以下をサポートしていないのでここでは切り捨てています。

report.json
{
  "testCases": [
     {
       "testPath": "UseCase=Buy New Item#Scenario=Purchase#TestCase=success",
       "duration": 3,
       "status": "TEST_PASSED",
       "stdout": "",
       "stderr": "",
       "createdAt": "2021-10-05T12:34:00"
     },
    {
       "testPath": "UseCase=Buy New Item#Scenario=Purchase#TestCase=soldout",
       "duration": 1,
       "status": "TEST_FAILED",
       "stdout": "",
       "stderr": "",
       "createdAt": "2021-10-05T12:34:00"
     }
  ]
}

launchable record tests コマンドはこのようになります。

$ launchable record tests --allow-test-before-build raw ./raw-report.json
Launchable recorded tests for build 1671608132 (test session 23) to workspace Konboi/advent-calendar-2022 from 1 files:

|   Files found |   Tests found |   Tests passed |   Tests failed |   Total duration (min) |
|---------------|---------------|----------------|----------------|------------------------|
|             1 |             2 |              1 |              1 |                 0.0667 |

Subset

subsetのインプットは launchable report tests 時のtestPathのフォーマットと同様に # 区切りで名前と階層情報を表現します。

Day 23のサンプルをもとに launchable subset コマンドで利用するファイルを用意しました。

example-raw-input.txt
UseCase=Buy New Item#Scenario=Purchase
UseCase=Buy New Item#Scenario=Order

このファイルを使ってsubsetを実行してみます。

$ launchable subset --target 100% raw example-raw-input.txt
UseCase=Buy New Item#Scenario=Order
UseCase=Buy New Item#Scenario=Purchase
Your model is currently in training
Launchable created subset 18 for build 1671608132 (test session 23) in workspace Konboi/advent-calendar-2022

|           |   Candidates |   Estimated duration (%) |   Estimated duration (min) |
|-----------|--------------|--------------------------|----------------------------|
| Subset    |            2 |                      100 |                3.33333e-05 |
| Remainder |            0 |                        0 |                0           |
|           |              |                          |                            |
| Total     |            2 |                      100 |                3.33333e-05 |

Run `launchable inspect subset --subset-id 18` to view full subset details

$ launchable subset --target 50% raw example-raw-input.txt
UseCase=Buy New Item#Scenario=Order
Your model is currently in training
Launchable created subset 19 for build 1671608132 (test session 23) in workspace Konboi/advent-calendar-2022

|           |   Candidates |   Estimated duration (%) |   Estimated duration (min) |
|-----------|--------------|--------------------------|----------------------------|
| Subset    |            1 |                       50 |                1.66667e-05 |
| Remainder |            1 |                       50 |                1.66667e-05 |
|           |              |                          |                            |
| Total     |            2 |                      100 |                3.33333e-05 |

Run `launchable inspect subset --subset-id 19` to view full subset details

あとは出力されたSubsetの結果をテストランナーの対応しているフォーマットに変換してあげればPTSを利用したテストの実行ができます。

さいごに

今日はrawプロファイルについて紹介しました。自分の扱っているテストランナー/レポートフォーマットがLaunchableで対応していない場合は試してみてください。

明日は今までのまとめになります。

Discussion