テストの追加
- すべてのSwarmユーザが、Swarmのテストを作成することができます。
- すべてのSwarmユーザが、Swarmの共有テストを表示することができます。
- ワークフローの編集権限を持っているすべてのSwarmユーザが、Swarmのテストをワークフローに追加することができます。
- グローバルワークフローの編集権限を持っているすべてのSwarmユーザが、Swarmの共有テストをグローバルワークフローに追加することができます。
旧バージョンのSwarmでは、Swarmのconfig.phpファイルでグローバルテストの設定を行っていました。 Swarm 2020.1からは、Swarmの[ワークフロー]ページでグローバルワークフローにテストを追加するようになりました。グローバルワークフローに追加されたテストは、グローバルテストとして機能します。 旧バージョンのSwarmをアップグレードすると、グローバルテストが自動的に移行されます。 各グローバルテストは、次のように移行されます: テストの所有者がSwarmのadminユーザとして設定され(共有はされない)、テスト名が元のテスト名に戻り、テストの説明が元のテストタイトルとして設定され、最後にグローバルワークフローに追加されます。
テストをワークフローに関連付けることにより、そのワークフローに関連付けられているレビューが作成/更新/サブミットされた場合に、関連付けられているテストが実行されます。 テストをグローバルワークフローに関連付けると、Swarmでレビューの作成/更新/サブミットを行うたびに、関連付けられているテストが実行されます。 これにより、テストがプロジェクトに含まれていない場合であっても、すべての変更に対してこれらのグローバルなテストが実行されます。
テストを追加するには、以下の手順を実行します。
-
Swarmの[テスト]ページで、[+テスト定義を追加]ボタンをクリックします。
[テスト定義を追加]ページが表示されます。
- テスト名を入力します。 一意のテスト名を1~32文字の範囲で入力する必要があります。
- 任意: テストの説明を入力します。
-
自分がワークフローの所有者として自動的に追加されます。
任意: 必要に応じて、自分以外の所有者を追加します。 このフィールドに文字を入力すると、Helixサーバ内でその文字に一致するグループやユーザが自動的に表示されます(グループとユーザの組み合わせで最大20件)。
重要- テストには、1人以上の所有者が必要です。
- 所有者である自分自身をテストから削除すると、super ユーザ権限を持っていない限り、このテストの設定を編集できなくなります。
-
任意: 自分が所有しているテストを他のSwarmユーザも使用できるようにするには、[他のユーザと共有済み]チェックボックスを選択します。
ヒントテストが正しく機能することが確認できない場合は、このチェックボックスを選択しないでください。 このチェックボックスを選択するまで、自分が所有するテストを他のSwarmユーザが使用することはできません。 テストに問題がないことを確認してからこのチェックボックスを選択して、他のユーザとテストを共有してください。
-
テストを要求するURLを入力します。このURLを[URL]テキストボックスに入力すると、テストスイートが実行されます。
Swarmの詳細情報をテストスイートに渡すための特殊な引数を指定することもできます。詳細については、特殊な引数をテストスイートに渡すを参照してください。
注意Jenkins向けHelixプラグイン 1.10.11以降の場合: POST要求として、ビルド用のパラメータをSwarmからJenkinsに送信する必要があります。 これを行うには、[本文]でパラメータを入力して[URLエンコード]を選択します。
- 任意: [タイムアウト(秒)]の値を整数で指定します。 このタイムアウト値は、Swarmがテストスイートに接続する際に使用されます。
- 任意: テストスイートで必要なパラメータをテスト要求の[本文]で指定し、以下のラジオボタンを使用してエンコード方法を選択します。
- [URLエンコード]を指定すると、POSTパラメータが「名前=値」のペアとして解析されます。 これがデフォルトの設定です。
- [JSONエンコード]を選択すると、指定したパラメータがそのままの状態でPOST本文に渡されます。
- [XMLエンコード]を選択すると、パラメータがXML形式でPOST本文に渡されます。
- ヘッダ
- ヘッダ領域で[]をクリックします。
- 空の[ヘッダ]ボックスと[値]ボックスに「名前=値」のペアを入力します。
- テストページで[保存]をクリックします。これにより、新しいヘッダがテストに保存されます。
- [ヘッダ]ボックスと[値]ボックスで「名前=値」のペアを編集します。
- テストページで[保存]をクリックします。これにより、ヘッダの編集内容が保存されます。
-
[保存]をクリックします。
注意いずれかの必須フィールドに値が入力されていない場合は、[保存]ボタンが無効になります。
Swarmの詳細情報をテストスイートに渡すための特殊な引数を指定することもできます。詳細については、特殊な引数をテストスイートに渡すを参照してください。
任意: テストスイートに渡す「名前=値」のペアを指定します。
[保存]ボタンをクリックした場合にのみ、ヘッダがテストに保存されます。
ヘッダの「名前=値」のペアを追加する場合:
ヘッダの「名前=値」のペアを編集する場合:
ヘッダの「名前=値」のペアを削除する場合:
テストから削除するヘッダの横に表示されている[削除]ボタン()をクリックします。
ヘッダはすぐに削除されます。確認画面は表示されません。 ヘッダの削除を完了するには、テストを保存する必要があります。
特殊な引数をテストスイートに渡す
テスト要求のURLと本文で特殊な引数を指定し、テストスイートに対してテストの実行をトリガした変更に関する情報をSwarmに渡すことができます。 Swarmはテストを呼び出す際に、これらの引数を、関連するSwarm情報で置き換えます。
中括弧{}は引数の一部であるため、必ず指定する必要があります。
- {change}: 変更番号。
- {status}: 保留状態の変更のステータス(shelvedまたはcommitted)。
- {review}: レビューID。
- {version}: レビューのバージョン。
- {reviewStatus}: レビューのSwarmステータス(needsReview、needsRevision、archived、rejected、approved、approved:commit)。
- {description}: テストがトリガされた原因となった変更の説明。 {description}をURL内で使用することはできません。使用できるのは、テスト要求の本文内だけです。
- {test}: テストの名前。
- {testRunId}: テストの実行ID。
- {projects}: レビューに関係するプロジェクトのID。レビューに関係するプロジェクトが存在しない場合はNULLになります。 複数のプロジェクトがレビューに関係している場合は、各プロジェクトがカンマで区切られます。
- {projectNames}: レビューに関係するプロジェクトの名前。レビューに関係するプロジェクトが存在しない場合はNULLになります。 複数のプロジェクトがレビューに関係している場合は、各プロジェクトがカンマで区切られます。
- {branches}: レビューに関係するブランチのID。 プロジェクトに関係するブランチの場合、ブランチIDの先頭にプロジェクトIDが付加されます(デフォルト設定の場合、プロジェクトIDとブランチIDの間にコロン(:)が挿入されます)。ブランチに関係するプロジェクトが存在しない場合はNULLになります。 複数のプロジェクトがブランチに関係している場合は、各プロジェクトがカンマで区切られます。
- {update}: 更新処理用のコールバックURL。 更新処理用のコールバックURLを呼び出してテスト実行を更新する際に、テストステータス、メッセージ、URLのいずれかを(またはこれらすべてを)、該当するCIシステムにリンクするPOSTリクエストの本文内に含めることができます。 これらのメッセージは、POSTリクエストの本文内でJSON形式になっている必要があります。 テストステータスの有効な値は、running、pass、failです。 最大10件のメッセージを渡すことができます。10件を超えるメッセージを指定した場合は、最初に指定した10件のメッセージだけが保存されます。 各メッセージには、最大80文字を含めることができます。80文字を超えるメッセージは自動的に切り捨てられます。{update}は、Swarm 2019.3以降の推奨オプションです。 詳細については、以下の「注」を参照してください。
- {pass}: テストにパスした場合のコールバックURL。 Swarm 2019.3以降では、{update}を使用することをお勧めします。 詳細については、以下の「注」を参照してください。
- {fail}: テストにパスしなかった場合のコールバックURL。 Swarm 2019.3以降では、{update}を使用することをお勧めします。 詳細については、以下の「注」を参照してください。
- Swarm 2019.3以降の場合も、{pass}と{fail}は引き続きサポートされていますが、{update}を使用することをお勧めします。{update}を使用すると、テストステータスにメッセージを含めることができます。
- {update}、{pass}、{fail}は、Swarmによって自動的に設定され、Swarmの専用レビュー認証トークンが挿入されます。
一部のCIシステムでは(Jenkinsなど)、テスト要求が失敗する原因となるデフォルトのコロン文字(:)をエスケープする必要があります。 CIシステムで別の区切り文字を使用する必要がある場合は、Swarmでその区切り文字を使用するようにSwarmのadmin ユーザに依頼してください。
一部の文字については、テストを呼び出す際にエラーが発生する可能性があるため、区切り文字を指定する場合は注意が必要です。 例えば、URLの呼び出しで「#」という文字を使用すると、ブランチがアンカーとして処理され、JSON本文のエンコーディングで使用されている「%」という文字がエスケープされます。 どちらの場合も、テスト要求が失敗します。
区切り文字の設定方法については、project_and_branch_separatorを参照してください。