UiPathのRPAをテストでも活用! 「UiPath Test Suite」
UiPathはRPAを軸として次々と製品ラインナップを拡張しており、今回はその中からテスト自動化にフォーカスを当てる。UiPathにおけるテスト関連ソリューションの総称は「UiPath Test Suite(以下、Test Suite)」だ。
UiPathのテスト関連機能の特徴について、同社の八波博和氏は「業務自動化で培った技術(開発のしやすさや、対象をつかむ技術も含む)を自動テストの領域にフル活用しています」と説明する。なおUiPathはガートナー社の2023年RPA部門のMagic Quadrantレポートにおいて、5年連続でリーダーの1社に位置づけられている。

テスト自動化の領域にソフトウェアロボットを展開する場合、対象はユーザーインターフェースやAPIとなる。フロントエンドだとTest Suiteは、実際に対象となるアプリケーションの何らかのオブジェクトに対して、Web・デスクトップ・モバイルアプリケーション操作、 ファイル操作、Excel操作、メール操作などを行う。バックエンドだと、API処理の結果判定、DB更新の結果判定、サーバーの応答確認などの操作や検証を行うことができる。
または検証の合否判定やエビデンス記録も行う。複数の環境における同時実行も可能だ。テストでは、多岐にわたるデバイス(モバイル含む)やブラウザで同じテストを実施しなくてはならないのが手間がかかるところだが、UiPathには自動化などテスト作業の効率化を実現する機能がそろっている。
今回デモと解説を担当する津田義史氏はMicrosoftでテストエンジニアを経験するなど、外資系ソフトウェアベンダーの経験が豊富な人物だ。

まずはUiPathの基本的な使い方から。テストエンジニアはUiPathの開発環境となるUiPath Studio(以下、Studio)で、ワークフロー上にアクティビティと呼ばれる部品を貼り付けて自動化を作成していく。変数は変数パネルで作成し、代入アクティビティで値を代入するなどしてデータを操作していく。変数や条件式はC#またはVisual Basicが使える。StudioではGUIで作成するものの、内部的にはXML形式のテキストファイルなのでGitと統合する事が可能で、ワークフローのバージョン管理も簡単に行える。
なおStudioはMicrosoftのWindows Workflow Foundation(WWF)と呼ばれる開発基盤でできているため、見た目はMicrosoftのVisual Studioとよく似ている。特にワークフローを作成する部分は、ツールボックスからアクティビティを選んで配置するなど全く同じと言ってもいい。なぜここまで似ているかというと、かつてMicrosoftに在籍していたダニエル・ディネス氏がWWFからUiPath Studioを作成し、UiPathを創業したという経緯があるためだ。
UiPath Studioで自動化を作成してみよう
UiPath Test Suiteのコアプロダクトは3つある。まずは開発環境となるStudio。ここで作成した自動化されたテストケースをOrchestratorにパブリッシュする。このOrchestratorがテストケースの実行をRobotに指示することで、テストが実行される。

開発環境(Studio)のローカルパネルでは、実行時に変数の値を確認または編集できる。デバッグ機能を使えばステップ実行したり、ブレイクポイントを設定したり、プロファイラーで実行時間の詳細を調べたりもできる。
すでに多くのアクティビティが用意されており、独自のカスタムアクティビティもライブラリプロジェクトから簡単に作ることができる。また.NETのクラスライブラリを直接呼び出すことも可能だ。津田氏は「開発者のみなさんはUiPathが持つ能力をすぐに引き出せるかと思います」と言う。
コーディングのスキルや経験があると、UiPathのビジュアルなスクリプティングに抵抗を持つ人もいるかもしれないが、そこは「大丈夫!」と津田氏は言う。現在はまだプレビュー版であるものの、近々自動化ワークフローをC#でコーディングできる予定だ。これで将来、生成AIに自動化ワークフローを作成してもらうことも現実的になりそうだ。
実際にどこまでできるか見てみよう。まずはブラウザでの自動化から。例としてブラウザを起動して、特定のリンクをクリックし、テキストを読み取る処理だとする。
この自動化を作成するには、ブラウザを使用するアクティビティを配置し、操作するウィンドウを指定する。次にクリックするアクティビティを配置し、クリックしたい場所を指定する。さらにテキストを読み取るアクティビティを配置し、同様に読み取る部分を指定する。
ここで読み取ったものをメッセージボックスで確認できるようにしてみよう。まず読み取ったテキストを格納する変数を作成し、この変数に読み取ったテキストを代入。そして、この中身をメッセージボックスで表示する。
今度はExcelでの自動化も試してみよう。ここではあらかじめ用意したExcelファイルで特定の範囲の表データ(名前をつけておくこと)を1行ずつ読み取り、表示し、また書き込むといった処理とする。
この自動化を作成するには、先ほどと同様にアクティビティと対象を指定していけばいい。まずExcelファイルを使用するアクティビティを配置して、先のExcelファイルを指定する。続いて繰り返しのアクティビティを配置し、操作範囲対象として(あらかじめ名前をつけておいた)範囲の名前を選択する。さらにメッセージボックスを配置し、現在の行の列を表示し、最後に処理結果という列に「成功」と書き込むことにする。Excel以外にも、多くのアプリケーションにて高速かつ安定的に操作できる。
生成AIも組み合わせて、UiPathでテスト自動化を実施してみる
ここからはテスト自動化の実践に話題を移そう。厳密には、テストにはいろんな段階があるものの、ここではシンプルにテストケースの設計と作成、そしてテストケースの実行について見ていく。
例として、Windowsの電卓をテストする。早速テストケースを作成してみよう。今回は話題のChatGPTにテストケースを作ってもらうことにする。ChatGPTを開きプロンプトに「Windowsの電卓をテストするためのテストケースを作ってください。手順は不要なので、入力データの組み合わせだけを標識で整理してください」と入力すると、表形式のテストケース(入力データと出力の期待値の組み合わせ)が出力される。
今ではこうしてAIにテストケースを書いてもらうことが現実的になってきている。ただし津田氏は「テストケースの設計・作成を完全に自動化するのはまだ難しいと思う。テストケースに十分な網羅性があるか、確認してから使う必要がある」と話す。なお現状UiPathではChatGPTとの連携に向けて投資しており、そのうち何らかの成果が期待できそうだ。
ここからはすでにUiPathで利用可能な機能を見ていく。ここでは電卓向けのテストケースはあらかじめExcelで用意しておいた(なおテストデータを自動生成するというメニューもあるが、まだ実験的な機能なのでここでは使わない)。
このテストケースを自動実行するには、まずワークフローにインポートする。ファイルを選択してExcelファイルを開き、インポートするデータの範囲を選択してインポートすると、テストデータがテストエクスプローラーに表示されるようになる。このテストデータはワークフローに引数として渡され、テストの自動化がなされる。
またテストケースは膨大かつ煩雑になりがちだが、Orchestratorで管理できる。数百台のRobotで同時にチェックすることも可能だ。「そんなに大量のパソコンないよ」と思うかもしれないが、ここも津田氏が「大丈夫!」と言う。UiPathにはAutomation Cloud Robotsというのがあり、クラウドからオンデマンドでセットアップ済みのRobot PCをレンタルすることが可能だ。
実際にテスト結果を電卓に入力して、確認してみよう。これまでと同様に電卓を起動するアクティビティを配置し、操作対象のウィンドウを指定。入力アクティビティを配置し、引数で受け取ったデータを電卓に入力していく。電卓の回答結果を読み取り、変数に格納して、最後にテスト結果を検証するアクティビティを配置し、テストケースにある期待する結果と同じであれば「成功」と判断する。という具合でテストケースの実装が完了する。
今回はテスト自動化のためのTest Suiteから、Studioをメインに解説した。これまで主に自動化ワークフローの作成に使われてきたが、自動テストの作成においても十分な機能を備えている。Test Suiteには先述した通りStudioのほかにOrchestratorやRobotsがあり、またテストを管理するTest Managerもある。このTest Suiteは進化を続けており、生成AI系モデルをビルトインして、例えば自然言語でテストコードを作るなど、さらなる進化が期待できる。
