Launchable Advent Calendar 24日目 - rawプロファイル
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へ取り込むことができます。
例)
{
"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のフォーマットに対応してみます。
<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
は少数点以下をサポートしていないのでここでは切り捨てています。
{
"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
コマンドで利用するファイルを用意しました。
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