期待のテスト自動化ソリューション「UiPath Test Suite」まとめて見た！

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5cc7f914-4dc7-e024-1d3d-106da33af611.png)

# はじめに

みなさん、こんにちわ！

RPAを使ってアプリケーションのテストも自動化できるのではと思う人も多いのではないでしょうか。
テスト自動化ツールから誕生したRPA製品もあり、そう考えるのは自然ですよね。
テスト自動化の歴史は２０年以上もあると言われており、テスト自動化の歴史と現状を紐解きながら、奥深いところもお話したいとところですが、まずは、序章？UiPathユーザーがとっつき易いところで、Test Suiteで何ができるのか、その機能を簡単に紹介したいと思います。

# Test Suiteとは

Test Suiteは、***「アプリケーションテスト」*** ***「RPAテスト」***を目的にしたソリューションです。
簡単に説明すると、例えば、下記の様な用途です。

- アプリケーションテストは、開発したアプリケーションの品質を確認するためにテストを自動化するもの
- RPAテストは、開発したRPAの品質を確認するためにテストを自動化するもの

そのための、コンポーネントが用意されています。

# Test Suiteのコンポーネント

Test Suiteのコンポーネントは下記の様なものがあり、複数のコンポーネントを統合して使用します。
更に、Test SuiteはUiPath製品以外の製品とも統合できる様にサポートされています。

|コンポーネント|説明|
|:----------|:-------|
| Test Manager|テストを管理するツール|
| Studio Pro|テストするためのワークフローを開発するツール|
| Orchestrator Test|Test Robotへ実行指示、結果を監視するツール|
| Test Robots|テストを実行するロボット|

※Test Manager以外はUiPath Community Editionでもお試しできます。
　製品トライアル版のEnterprise Serverでは、Test Managerも試使用可能になってます。

従来のテストに関わる登場人物を当てはめ、おおざっぱですが、イメージ的には、下記の様に表現できます。

|コンポーネント|人の役割に当てはめ|
|:----------|:-------|
| Test Manager|テスト管理者が行っているテストケースの管理や進捗の管理など|
| Studio Pro|テストデータやテスト項目作成者が行っているテスト設計|
| Orchestrator Test|テスト管理者が行っている実施したいテスト項目・テスターへの割り振り及びテスト実施の指示とテスト結果の監視|
| Test Robots|テスターが行うテスト実施|

Test Robotを増やすことにより、空いているロボットにテスト項目も、どんどん自動的に割り振って行くこともできるのでテスト期間の短縮になりますね。
ALMとTest Managerの統合やCI/CD統合としてJenkinsとOrchestrator Testを連携させたりして、テスト自動化の仕組みの拡張が可能ですが、まず、ベースの紹介が先なので、こちらは別の機会になります。

それでは、UiPath Studio Pro Community Edition 2020.6でも試せる範囲でTest Suiteで何ができるのか説明します。
ただし、機能的には、これから、まだまだ充実して行くと聞いてます。

# UiPath Studio Proの機能

### （１）データバリエーションをバインドして実行するワークフローが作成できる

テストするデータバリエーションが格納されたExcel（表形式）をバインドすると実行時、引数にデータが投入され、ワークフローが繰り返し実行されます。
バインドするには、下図のメニューにある「テストデータを追加」を選択することで行います。
ワークフローファイルのアイコンが他と異なりますが、これがテストケース用のワークフローと理解頂ければよとしいかと思います。
尚、メニューの「「パブリッシュ可能」として設定する」を選択するとアイコンがグレーから青に変わり、パブリッシュ対象となります。
作成途中のテストケースは、パブリッシュ対象外にできるのも、今までと少し違いますね。
尚、パブリッシュするNugetファイルにはバインドしたデータバリエーションも含まれており、バインド時にjsonファイルに変換されてます。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/78f9ae89-9507-eeab-3280-d86f58a1cf10.png)


「データバリエーションを指定してファイルを実行」を選択し実行すると、テストするデータを選択して、繰り返し実行がきます。
Test Suiteならではの実行方法ですね。
ちなみに、ロボット実行時は、この選択はできないのでご注意を。

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5f16aa82-da75-17f3-db19-02c0c623936c.png)


### （２）検証アクティビティで判定結果をOrchestratorに通知できる

検証アクティビティは今のところ下記の３つとなります。
検証する機能ではないので、この辺りは今後の充実に期待したいところです。

※2020.6から、成功時にもスクリーンショットをOrchestratorにアップロード指定できる様になりました。
　でも、アップロードしすぎるとサーバー容量の圧迫が危惧されるのでご注意を。

![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/2205e310-13c5-ce46-d1e8-1227643721ee.png)

|アクティビティ|説明|
|:----------|:-------|
| コントロールの属性を検証|アクティビティの出力値との比較で検証します|
| 式を検証|与えられた式の真理値を検証します|
| 式を演算子で検証|演算子を使用して、指定された式に関連して検証します|


### （３）テストデータ用のアクティビティを利用できる

2020.6から、新たに追加されたアクティビティですね。
テストデータ作成の時間短縮のために用意された様です。
氏名など、今後、日本用に改良される可能性はありますね。

![アクティビティ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/64a1ff4a-663d-b333-5cc6-c46f2d57bb91.png)

|アクティビティ|説明|
|:----------|:-------|
| Given Name|ファーストネームを出力|
| Last Name|ラストネームを出力|
| Random Date|指定した期間のランダムな日付を出力|
| Random Number|ランダムな数値を出力|
| Random String|ランダムな文字列を出力|
| Random Value|csvファイルからランダムで行のデータを出力|

### （４）ワークフローのテスト（RPAテスト）ではアクティビティカバレッジを確認できる。
こちらは、アプリケーションテストではなく、RPAテスト特有の機能です。
実行時のアクティビティカバレッジを確認することができます。
すべてのパスを視覚化されているため、カバーされていないシーケンスを特定できます。

テストしたいワークフローファイルを選択し、テストケースを作成します。
![RPA1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/a7793792-98fd-c911-0699-38adc507b766.png)
テストケースの雛型ワークフローが作成されます。ここから実行を開始することにより、カバレッジが機能します。
![RPA2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/d71b4110-a9ba-c5d9-c2f1-787afef505cf.png)
実行すると、下図の様にカバレッジが表示されます。カバレッジされたアクティビティは視覚化され確認できます。
ワークフローを呼び出している場合は、ワークフロー単位のカバレッジが表示されます。
![RPA3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/95964b58-28f9-1ce4-dfe9-abc0b220d187.png)

データドリブンでのテストと併用することもできます。
カバレッジが視覚化されているので、テストの際、カバーできていないシーケンスを発見することも容易になりますね。

# Orchestrator Testの機能

### （１）パブリッシュされている複数のテストケースを自由に組み合わせてテストセットを作成できる。
再テストを実施する際、NGだったテストケースを選んでテストセットを作成することも出来ますね。
ただし、投入するテストバリエーションまでは、指定できないのでご注意を。

![47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/fe7e6457-28f5-7fd0-e331-4b3321956831.png)


### （２）テストセットで、手動もしくはスケジュール実行できる。
RPAの手動実行、スケジュール実行と同様に可能です。

![51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5e7f314f-b9d0-874f-5624-a88b01ef5070.png)


### （３）テストの実行結果は、テストバリエーション単位でも確認できる。
どのデータを投入した時に失敗したのかわかる様になってます。

![44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/c04ab2ad-3488-f4eb-0f2d-6e7204dc1bcc.png)


### （４）失敗したアサーションのスクリーンショットをOrchestratorで確認できる。
検証アクティビティで成功したアサーション、失敗したアサーションが確認できます。
検証アクティビティのプロパティでスクリーンショットが有効の場合は、下図の様にOrchestratorで確認可能で、更に検証アクティビティのプロパティで失敗した時に処理を続行を指定した場合は、１つのテストケースで複数件記録されて行きます。
下記の例ではアサーションが２件記録されてますね。

![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/904e139b-93e3-3fd6-e179-5c8e1e803aa4.png)


# Test Suiteには、まだ機能があります

- モバイルテスト自動化
アプリケーションテストには、モバイルテストもあり、Android端末やiOSの端末をAppiumと組み合わせ、これを実現します。余談ですがモバイルの自動化も、この構成で可能となりますね。Androidの方は比較的簡単に構築できます。

- APIテスト自動化
APIへのテスト呼び出しを実行するためのソフトウェア開発ツールであるPostmanとの統合により、API Test Automationプロジェクトをサポートしています。

# 終わりに

この記事で省略したモバイルテスト、APIテスト自動化、Test Manager、ALMとの統合、CI/CD構成などもあり、Test Suiteは、非常に盛沢山のソリューションですね:grin:
そして、極めつけはテスト自動化の歴史と現状を紐解きながら、UiPathで、この領域での新たな最適解を導き出すことが出来るのか:laughing:
この件についても、いつか情報発信できればと思います！

UiPath Test Suiteによるアプリケーションテスト自動化については、下記コラムもご参考に！

https://www.fsi.co.jp/blog/5942/

https://www.fsi.co.jp/blog/5963/