メインコンテンツまでスキップ

プラグインのテスト

テストの実行についての概要を説明しています。


概要

テストは, プラグインのシナリオを実行し, 実行に成功したかどうかを判定してプラグインの正常性を確認するためのものです。
この機能はシナリオ機能と密接に関連しています。

シナリオの記述作業を開発フローに取り込む

テストを利用するには, プラグインの機能やテストごとに シナリオファイル を記述する作業が必要です。
なぜなら, Scenamatica はあなたが作成した機能の発火条件や, それにどのような結果が期待されているかを知りせん。 そのため, プラグインの開発者が正しい(期待される)動作を Scenamatica に教える必要があります。

驚くことに, シナリオファイルの記述は JUnit のテストコードの記述と同じくらいかんたんです。
新規機能を追加する際には, その機能を実装する前にシナリオファイルを作成し, それに沿って実装を進めるとよいでしょう。

プラグインにおけるテスト駆動開発の始まりです。

テストの実行

テストの実行は, そのプラグインのシナリオを実行するだけで, 自動的に行われます。 シナリオの実行結果はそのままテスト結果にエスカレーションされます。

テスト(シナリオ)を手動で実行するには, /scenamatica scenario startコマンドを実行します。

宣伝

CI/CD パイプラインと連携すると, テストサーバの用意からテストの実行, 結果のレポートまで全て自動で行えます。

詳しくは以下のドキュメントを参照してください:

シナリオセッション

シナリオセッションは, 複数のシナリオの実行をまとめて管理するための機能です。 1つのセッションは複数のシナリオを持ち, それらはセッション内で順番付けされて実行されます。
シナリオの実行結果(テストの実行結果)はセッションごとに集計され出力されます。

シナリオセッションは実行時に自動で構成されるため, 開発者が意識する必要はありません。

ヒント

シナリオが同じトリガで, かつ同タイミングで発火した場合は, 同じセッションに登録されます。
例えば, シナリオの読み込み後に実行するトリガ (ON_LOAD) を持つシナリオが .jar ファイルに複数存在する場合は, 同じセッションで実行されます。

条件付き実行

シナリオ実行条件を指定することで, テストの実行に条件を持たせられます。 条件が満たされない場合は, テストは実行されずにスキップされる(SKIPPED で終了する)ため, テストの実行に失敗したとはみなされません。

自動再再試行

この機能は, 失敗したシナリオを自動で再試行します。
この機能が有効な状態でシナリオの実行に失敗すると, キューの末尾にシナリオを追加して再実行を試みます。 これは設定された最大試行回数まで繰り返されます。

また, 再試行時のトリガは初回実行時のトリガと同じ種類・値が使われます。

初回実行で一度失敗し, かつ再試行時に成功したシナリオは 不安定なシナリオ としてマークされ, flakes としてレポートされます。

ヒント

テストのサマリには, この機能によって追加されたシナリオも含まれます。
また, 失敗したシナリオの一覧表示では, 同名(再試行された)シナリオはまとめられて表示されます。

テストの結果

Scenamatica のテストは, 以下の結果を持ちます。

テストに成功する結果

  • PASSED
    全てのテスト項目を正常に通過し, シナリオが正常に終了したことを示します。

テストに失敗する結果

  • CONTEXT_PREPARATION_FAILED
    シナリオの実行に必要なコンテキストの準備に失敗したことを示します。

  • ACTION_EXECUTION_FAILED
    アクションの実行に失敗したことを示します。

  • ACTION_EXPECTATION_JUMPED 実行を期待するアクションよりも先に他のアクションが(プラグインによって)実行されたことを示します。
    これについての詳細は[こちら](/docs/use/scenario/elements#scenario-type-condition-require:~:text=後に実行されるべきアクションが繰り上げられて先に実行された場合は, このシナリオは失敗します。) を参照してください。

  • SCENARIO_TIMED_OUT
    実行を期待するアクションやシナリオが(所定の時間内に)実行されなかったことを示します。

  • ILLEGAL_CONDITION
    条件チェックに失敗したことを示します。

  • RUN_TIMED_OUT
    全体の実行が(所定の時間内に)終了しなかったことを示します。

  • INTERNAL_ERROR
    内部エラーが発生したことを示します。

テストが中断する結果

この結果は, テストの実行がユーザーまたはシステムによって中断されたことを示します。
テストの実行に失敗したとはみなされません

  • CANCELLED
    シナリオの実行がキャンセルされたことを示します。
  • SKIPPED
    シナリオの実行が何らかの要因によってスキップされたことを示します。
SCENARIO_TIMED_OUT と RUN_TIMED_OUT の違い

RUN_TIMED_OUT は, シナリオファイルを構成するアクション全ての実行が所定の時間内に終了しなかったことを示すのに対し,
SCENARIO_TIMED_OUT は, その中の個々のアクションやシナリオが(それぞれに指定された)所定の時間内に終了しなかったことを示します。