UiPath Test ManagerとRedmineを連携させてみた。

# はじめに

UiPath製品の中でテスト自動化に関連する製品である **Test Manager** をRedmineと連携する手順をご紹介します。

Test ManagerはOrchestratorと連携することも可能ですが、当検証の内容では触れておりません。
Test ManagerとRedmine連携部分のみにフォーカスした内容です。

公式ドキュメントはこちらです。
https://docs.uipath.com/ja/test-suite/automation-cloud/latest/user-guide/redmine-integration

### 概要図
当検証で実現する構成を抽象化した概要図です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/470081c6-d65f-e007-3041-b3564887daab.png)
#### 概要図の説明：
1. Redmine上でテストの「要件」チケットを起票します。Test Managerに連携されます。
2. Test Managerにテスト結果を入力します。
3. テスト結果の失敗に対しTest Managerで不具合作成の操作をします。Redmine上に「不具合」チケットが起票されます。

:::note
検証に使用した環境やバージョンなどの概要は以下です。
- Test Managerはクラウド（Automation Cloud）
- RedmineはAzure上のWindows Server環境。
- Redmine v5.0.5、Ruby(+Devkit)v2.7.8
:::


# １．Test Managerの設定
:::note
Redmineの設定がまだの場合は「２．Redmineの設定」を先に実施する必要があります。
:::


対象のプロジェクトを開きます。
**プロジェクト設定　＞　連携　＞　新しい接続**　を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/ebc4f877-3e59-d5c9-edec-b6e51ee168d5.png)

一覧の中から **Redmine** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/808dc2d5-e85f-5eb0-0b0b-43c3b8773221.png)

#### Redmine接続の設定例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/0d14fd9b-3cad-b18d-2557-83b1e8c49757.png)
OCのTest ManagerがRedmineへ接続が可能な状態となったら、
上図のように **Redmineのトラッカー(③)を認識した状態** となります。

上図①②③④がRedmineのどの設定に紐付いているか、以降 **「２．Redmineの設定」** で触れていきます。

:::note
不具合のトラッカー(③)は１つ、要件のトラッカー(④)は複数設定可能です。
:::

# ２．Redmineの設定

:::note
本検証ではAzureに構築したサーバーにRedmineを設定し、デフォルト（ポート：3000）で稼働させています。
ご利用環境によってはポート開放等の手順が必要な可能性がありますが、当検証手順では触れていません。
:::

当手順では新規に構築したRemine環境を使用しています。
この章では **Test ManagerとRedmineを連携する** という目的において、
必要な **Redmine上の手順** をまとめています。

## １）プロジェクトを作成する。

**Myプロジェクト** という名称でプロジェクトを作成しました。名称は任意のもので良いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/ab6c583b-ed48-dd7f-df23-336480a2524a.png)

識別子を **「my」** とした点をご確認ください。

:::note
※ Test Managerの連携設定の①と紐付いています。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/c93f5a09-ba71-76fa-a291-4d0348e738c9.png)

## ２）ユーザーを作成する。
**「user1」** というユーザーを作成しました。

:::note
※ Test Managerの連携設定の②と紐付いています。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/c5d4619b-e5ef-5d2e-3e85-9a29a2c9ccfa.png)

:::note warn
管理者権限を持たないユーザーを作成することをおすすめします。
管理者権限ではどんな操作も可能であることで、例えば一般ユーザー用のロール設定に不備があった場合に気づきにくいです。
:::

## ３）トラッカーを作成する。
**「要件」、「不具合」** というトラッカーを定義しました。

:::note
※ Test Managerの連携設定の③④と紐付いています。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/86a499c0-b6a3-9bea-0191-93dc0b0a4435.png)

「不具合」トラッカーの設定の例です。初期のままとしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/c4cdb1f2-f431-468a-802b-df465d84e7d9.png)

## ４）ロールを作成する。
**「一般ユーザー」** というロールを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/662e9818-7feb-84ae-ae51-8837d0f67c64.png)
このロール作成の手順はRedmineの操作の仕様上、必要な手順です。
ユーザーに対して、ロールを割り当てる必要があります。
（プロジェクトごとにユーザーのロールを変えることも可能です）

作成したロールでチケットを起票するので、チケット関連の権限を適当に付与します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/6d413fcb-41f2-f893-ed9f-7954b975ae92.png)

:::note
ロール設定の下部に「チケットトラッキング」という **トラッカーごとの権限設定** もあるので注意が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/eec9e255-5d12-8698-b623-1b5feb45e6ac.png)
:::

## ５）チケットのステータスを作成する。
下図の定義を作成しました。
連携の確認のみが目的の場合は、最低限の入力でも良い内容です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/36baa2f0-68fd-679f-6b38-91fce2ca3ec9.png)
（運用で「あったら良いな…」を考えながら適当に入力しました）



## ６）ワークフローを定義する。
- **ワークフロー** は、チケットの各ステータスが **どのステータスに遷移可能であるか** 。
- 各ステータスでのチケットのどの入力項目の編集を求めるか。
…の設定です。当検証では最低限の定義があれば良い内容です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/2c54fc2c-ed03-29ed-6c74-e1a0b78ac2b8.png)
上図のステータスを、編集画面でそれぞれ遷移可能とするステータスにチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/a9044ed3-50d1-f312-76ac-27aba9180d1e.png)

## ７）プロジェクトにユーザーを割り当てる。
対象のプロジェクトを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/892b0f58-9f7f-0b44-c06d-cd0c3bdabe9d.png)

**設定　＞　メンバー　＞　「新しいメンバー」** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/0f31d85c-7b24-af39-07c0-3685bc34071d.png)

プロジェクトに追加するユーザーと、ユーザーに割り当てるロールを選択します
図では **「user1（たろう テスト）」** ユーザーに  **「一般ユーザー」** ロールを割り当てて追加しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/daf2bbd3-a6fa-6b06-027a-33ba45acd71d.png)


## ８）プロジェクトにトラッカーを割り当てる。

**設定　＞　チケットトラッキング　＞　トラッカー**　で、
対象とするトラッカーにチェックを入れ保存します。
図では「不具合」と「要件」トラッカーを割り当てています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/97effc3a-3c8c-acfa-01bb-a79fca372df1.png)


## ９）「選択肢の値」（優先度の値）を設定する。
今回利用した **Redmine v5.0** では、チケットを新規に起票時に **「優先度」プルダウンの入力が必須** です。
プルダウン項目なので、この値を事前に定義しておく必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/eab0f1b0-8914-2b10-39e2-894db85fa782.png)
また、いずれかの値を **デフォルト値** と設定します。

:::note warn
今回利用した **Redmine v5.0では優先度が必須入力** ですが、
 **Test Managerから連携される「不具合」には優先度が設定されない** ため「デフォルト値」の設定が必要です。
この手順が漏れるとRedmine側で **「エラーコード422：Unprocessable Entity」** （期待する書式/データでない場合に発生するエラーコード）が発生します。
:::

## 10）Redmineの動作を確認する。

作成したユーザーでログインしなおし対象のプロジェクトを選択し、
**「チケット」タブ　＞　「新しいチケット」** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/4ac6c531-6097-425d-39f0-c839ce4a8375.png)

下図のように、「トラッカー」や「優先度」の項目が設定した通りになっていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/6d2c403e-b78d-5da5-24e8-1dc12e6bb420.png)






# ３．Test ManagerとRedmineの連携を確認します。

## １）「要件」の連携を確認します。

#### 手順概要：
Redmineで要件を起票し、Test Managerに自動連係されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/35b45ec4-81e7-2dbf-c33e-a3f37e061886.png)

Redmineに **「要件」** を起票しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/235f3e95-b67d-7012-918d-f41ec3b79fa6.png)

### Test Manager側に自動的に「要件」が取り込まれました！

しばらく待ってから、Test Managerを確認すると…、
Redmineの要件が自動的に取り込まれたことが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/3abb7b8c-a04c-db84-dce4-42a7bae139e6.png)

:::note
取り込みの頻度は「ポーリング間隔(秒)」で設定されています。
初期値は120秒です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/7e489c73-e5af-500d-e81d-20174c378cf0.png)
:::


## ２）「不具合」の連携を確認します。

#### 手順概要：　
- Test Managerでテストの "失敗" の結果を入力し「不具合」を作成し、Redmine側に不具合が自動連係されることを確認します。
- 事前準備として、Test Manager上にテストセットとテストケースの作成が必要です。
（連携の設定とは少し逸れるため、４章に補足として記載しています）

以降、手順の詳細です。

**対象のテストセットを開き　＞　右端の三点リーダー　＞　手動で実行** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/f7b4dba7-ee76-bd8b-8a1f-b0280814c80d.png)


テスト結果を入力するウィンドウが開きます。
テスト結果やコメントを入力します。今回は **「セットが不合格」** を選択しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/fd6dd527-edd7-e5ee-b06f-1c14340bea0c.png)

**左ペイン　＞　テスト結果** でテスト結果を参照できます。
入力した結果は下図のような表示になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/e99f60fb-bf31-ccd7-deb1-812169a17d54.png)

## テスト結果に対し「不具合」を起票していく手順を実施します。
対象の「テスト結果」を開きます。
表示されているテストケースの結果リンク（青字部分）をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/7126062e-7584-7ba0-1cca-cd483afcae18.png)

**右上の「タスク」　＞　「不具合を作成」** を選択します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/262ee298-5e97-d407-06db-c32db5e52de2.png)

**「不具合を作成しています。」** のメッセージが表示され、
再表示をすると不具合のリンクが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/2a064475-8ad7-7455-80d4-6f45a5f0703d.png)

**数字のリンク** をクリックするとRedmineのチケットに遷移します。
### Redmineに自動的に「不具合」チケットが起票されています！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/815da60e-a37b-d1e5-c1fb-e4ea222b3545.png)

:::note warn
**「不具合を作成しています。」の後に何も起こらない場合：**
Redmine側でエラーが発生している可能性があります。
Redmine側のエラーコードを元に原因を推定するような作業が必要になります。
:::


# ４．補足情報
## Test Managerのテストケースとテストセットの作成手順。

テストケースの結果を入力するまでには以下の手順が必要です。
1. テストケースを作成する。
1. テストセットを作成する。
1. テストセットにテストケースを割り当てる。

以降、概要をご紹介します。

#### 1．テストケースを作成する。
左ペインから「テストケース」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/77480eeb-3365-bd11-09ba-17e0fba76485.png)

「＋テストケースを作成」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/6b40ca08-0041-d0f5-1e26-7edbce504c52.png)

必要な情報を入力し、「作成」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/707ef791-2d4e-f56a-2d3c-99a7b333bd51.png)

#### 2．テストセットを作成する。
左ペインから「テストセット」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/bb5c30da-8af2-f978-f91d-9c3f660ada5a.png)

「＋テストセットを作成」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/64961523-cab0-c2e8-4b91-cdca63c38049.png)

必要な情報を入力し、「作成」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/43c8153d-18de-2074-5000-27073fb0175e.png)

#### 3．テストセットにテストケースを割り当てる。
対象のテストセットを開きます。
**右上の「タスク」　＞　「テストケースを割り当て」** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/4e6db19e-91bb-1ed5-1f07-fbf271c21ee1.png)

テストケースの一覧が表示されるので、対象としたいテストケースにチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3302589/a82184b7-fc15-9148-ed8d-74f650598a52.png)

以上の手順で、テストケース、テストセットの定義が作成できます。

:::note
Orchestratorの実行結果と連携することも可能ですが、当検証の内容からは割愛しています。
:::

# まとめ

Test ManagerとRedmineを連携する手順のみにフォーカスした内容をまとめました。
今後はこの設定を前提とする形で、活用アイデアなどもまとめていきたいと思います。