【UiPath Test Suite】テスト消化を加速化するために、Cloudロボット-サーバーレス活用を考えてみた！

# はじめに

E2Eテストの多くは、自動化と言えど、人のオペレーションを模倣して実際にシステムのUIを操作しながらテストを行っているため、結果のフィードバックが得られるまでに時間が掛かるのは仕方のないことです。時間短縮したい場合は、テストの並列実行が有効な手段ですが、数十、数百とかなると実行するマシンなどのインフラ面の課題や、同時実行するためのライセンス数が課題になることも多いのではないでしょうか。
UiPathでは、ユーザーがコンテナー、仮想マシン、物理サーバーを扱う必要なく、そして同時実行数＝ライセンス数ではなく、実行時間消費型のライセンスで、ロボットを並列実行させる等が可能なAutomation Cloudロボット-サーバーレスが提供されてます。下記は50本のテストケース（ジョブ）を同時に並列実行させたて見た動画です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/15PFgmiHAkg?si=4E9WvnO9PVFAhdUV" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


本ブログでは、Automation Cloudロボット-サーバーレスの特徴と制限事項・考慮点をまとめてみました。そしてUiPath Community版でも体験できるので、その使い方も解説して行きたいと思います。

# Automation Cloudロボット-サーバーレスの特徴
Automation Cloudロボットには、Automation Cloud上でUnattended Robotの仮想端末を構築できるVMのサービスもありますが、それとは別に、並列実行が可能な実行時間消費型のサービスがあり、それがサーバーレスです。特徴については、下記の様なものがあります。

1. Automation Cloud上の設定で利用できる様になります。ロボットのインフラや管理も不要です。
1. テナントのVPNゲートウェイを作成すると、ファイアウォールの背後にあるオンプレミスのリソースにアクセスすることもできます。
1. 利用するにはCloud Robot Unitsライセンスが必要になります。処理の実行時間に応じてCloud Robot Units(RU)のライセンスが消費されます。1分当たりでRU数を消費しますが、テスト実行では、RPAの運用で実行する場合の半分の消費量です。

https://docs.uipath.com/ja/orchestrator/automation-cloud/latest/user-guide/automation-cloud-robots-serverless#machine-sizes-and-costs

# 制限事項と考慮する点
サーバーレスには、制限事項があり、採用するには考慮すべき点がいくつか存在します。
1. Studioで作成されたクロスプラットフォームのプロセスのみ実行できます。Studio Webも実行はサーバーレスですが、テストオートメーションプロジェクトは作成できません。（2023.10時点）
1. クロスプラットフォームなので利用できるアクティビティが制限されます。デスクトップアプリやローカルファイルなどにアクセスするアクティビティは使えず、利用できるのは主に下記になります。
❶Chromiumブラウザを使用したブラウザベースの自動化
❷API ベースの自動化
❸Integration Serviceアクティビティの利用
❹テストデータはData Serviceやテストデータキュー等から取得
1. 1つのテストケースの最大実行時間は15分です。15分経過すると処理が終了されます。
1. テストケースが同時実行できるのはテナント内で最大50個です。残りのテストケースは保留状態になっているだけなので、空きが出れば残りも順次実行されます。
1. 購入したRU総数/12ヶ月のRU数が当月利用可能です。次月への持ち越しできないため、月末に残ったRU数は消滅します。
 
::: note warn
Windowsプロジェクトからクロスプラットフォームに変換する機能はサポートされてません。つまり、Windowsプロジェクトで作成した既存のテストケースは変換できないため、サーバーレスで動作させるには作り直しが発生します。
:::

::: note info
考察
1. 最大実行時間を15分超過するテストケースになった場合でも、実行環境をサーバーレスから変更すれば、この制限は受けません。
2. アクティビティの制限に課題が発生した場合は、プロジェクトをクロスプラットフォームからWindowsに変換、実行環境もサーバーレスから切り替えると言った選択肢もあります。ですので、サーバーレスのみを運用するのではなく、Unattended Robot-Testライセンスでの実行環境も併用することをお勧めします。
4. 当月のRUがなくなった場合は、Unattended Robot-Testライセンスでの実行環境に切り替えて、テスト実行が継続できる様にしておくと良いでしょう。
3. 50本を超えるテストケースを同時実行させたい場合は、テナントを分けて実行させると言う手段もあります。（利用するテナントにはRUの割り当てが必要）
6. 実際に利用する際はVPNを構成することが多いので、解説のリンクを案内しておきます。
https://docs.uipath.com/ja/orchestrator/automation-cloud/latest/user-guide/configuring-vpn-for-cloud-robots


::: 

# 利用手順
UiPath Community版で、どなたでも、無料体験できます。

::: note info
Communityアカウントで利用できる上限
1. 最大3つのテストケースの同時実行が可能です。
2. サーバーレス用に300RU/月が利用可能です。
:::

## 1．ロボットアカウントを追加
初心者向けに、ロボット作成から解説します。
❶Automation Cloudポータル>[管理]>[アカウントとグループ]>[ロボット アカウント]>[+ロボット アカウントを追加]をクリックする。
❷[名前]を入力し、[Automation User]をチェックして[追加]>[閉じる]をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/c0cf24dd-9866-e27d-0225-55220e5f42f1.png)

## 2.ロボットアカウントにロールを割り当て
❶Orchestratorに遷移し、[アクセス権を管理]>[ロールを割り当て]>[ロボット アカウント]をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/c5d8370d-75bb-192a-b522-a6884feeb154.png)

❷[ロボットアカウントを検索]で追加したロボットアカウントを検索し選択する。[ロール]に[Robot]をチェックする。混合ロールは、今後非推奨になりそうですが一旦です。[次へ]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6346d7fb-ce7c-b480-ae14-f536b1f0f628.png)

❸[仮想マシンの事前設定済みの資格情報]が選択されていることを確認の上、[スキップして割り当て]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/2fee6b10-e485-5e45-db13-970a7e508fe7.png)

## 3.マシンを追加
❶[マシン]>[マシンを追加]>[Cloudロボット-サーバーレス]をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6f0a72a6-ed81-c96c-2baa-7f9498dad684.png)

❷[テンプレート名]を入力して[プロビジョニング]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/a84304a2-301c-d278-cb90-f146e631424b.png)

## 4.実行するフォルダにアカウントを割り当て
❶[フォルダ]>実行するフォルダを選択>[アカウントとグループ]>[アカウント/グループ/外部アプリを割り当て]をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/463c6d3f-2d25-4259-8b7f-e0e57593590d.png)

❷[ロボット、グループ、または外部アプリ]でロボットアカウントを検索し選択する。[上で選択したアカウントのロール]に[Robot]をチェックする。混合ロールは、今後非推奨になりそうですが一旦です。[割り当て]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/c748dfbc-ad16-9c3c-e035-0f220962a5a8.png)

## 5.フォルダにマシンを設定
❶[マシン]>[フォルダーのマシンを管理]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/29edd601-15af-c7d4-aa37-6c2779cf4dd7.png)
❷一覧から該当マシンをチェックし、[更新]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/aa3a8ca9-09e3-5e65-2503-8b5189c16e80.png)

## 6.テストオートメーションプロジェクトをパブリッシュ
❶テストオートメーションプロジェクトで、いくつかテストケースを作成し、パブリッシュする。尚、プロジェクトはクロスプラットフォームで作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/208436a9-7e20-98dc-92e8-b0997fd474af.png)


## 7.テストセットを作成
❶Orchestratorで、実行するフォルダを選択し、[テスト]>[テストセット]>[テストセットを追加]をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/27cfdde3-5022-7f81-a7f3-231de65658c6.png)

❷[名前]を入力>[プロジェクト]を選択>[次へ]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/e11255f5-2a1e-1820-d666-c726d6aebb5a.png)
❸実行する[テストケース]を選択し、[作成]をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/8a73e4c6-ebdd-8670-cfa0-f427b4c68979.png)

## 8.実行
❶作成したテストセットを実行する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/092760dc-53f8-f401-408f-1cb8a762aabd.png)
❷Community版では3つのテストケースが並列実行する。残り2つのテストケースは保留。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/13ba975a-f7ec-4342-6b5d-b2824346f783.png)



❸3つのテストケースが終わると、順次残り2つのテストケースも実行。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/4550668c-367e-327c-8763-e51482e1f603.png)


❹完了！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/dbab3e2e-b896-e53e-f959-37ea54f82069.png)

# おわりに
毎月利用できるRU数が決まっていますが、例えば、毎月ソフトウェアリリースがあり、月中の短いテスト期間で一時的にテスト消化を加速化し、早くフィードバックを得たいと言ったケースも少なくありません。考慮すべき点もありますが、サーバーレスで実行するテストケースと実行時間、実施タイミングを上手く計画立てれば有効な手段となりそうです。