テスト自動化ツール『T-DASH』がRPAに!?、面倒なルーティンワークをやっつけられるか!!!?

# 1. はじめに

１年ぶりにやってきました、アドベントカレンダーの季節です。
あっという間の年末ですねぇ・・・今年もお世話になりました。

と、挨拶をしに来たのではなく、記事を書きに来たのでした。

ということで、バルテス社が2021年秋にリリースした **テスト自動化ツールの『T-DASH』** を、今回も使ってみたいと思います。

↓↓↓ 昨年度のエントリーです ↓↓↓

https://qiita.com/ksj555/items/5efae1264c1c6852181b

https://qiita.com/ksj555/items/b6f67c26f40484627f0a

## 1-1. 自己紹介

私は普段、IT関連企業で企画系の業務を行っています。開発はもう何年もやっていませんが、企画業務にあたっては最近の開発事情も多少は知っておく必要がありますし、もちろんテストに関しても同様です。

今回も、T-DASHでテスト自動化ツールの使い勝手を確認していきたいと思います。今回のテーマは「活用方法・事例」になりますが、残念ながら事例は持っていないので、新たに課題を設定し実際に使ってみることでひとつの「活用事例」としてまとめてみたいと思います。

# 2. T-DASHとは

T-DASHは、[公式サイト](https://service.valtes.co.jp/t-dash/)で次のように説明されています。

> 誰でもカンタンにテスト自動化ができる時代　テスト自動化ツール　T-DASH

また、特徴として以下の３点があげられています。

1. **日本語**で書いたテストケースがスクリプトになる
2. **すぐに使えて操作が簡単**
3. **月額3,960円**で開発スピードを高速化

因みに、昨年確認した際は以下の４つでした。

1. 見やすいダッシュボード
2. テストの回数無制限
3. 無料でも利用可能 ※機能制限や広告あり
4. プロジェクト別で管理

昨年は、プロジェクトやコストに関する事項が主なポイントとしてあげられていましたが、現在は**使い勝手やローカライズによる強み、加えてコスト**が前面に出ています。果たして、より使いやすいツールになっているのか！？、早速使っていきましょう。

# 3. 今回の課題設定

最近の困りごとがひとつあります、それは**家族全員が使っている近所の図書館への返却日チェック**です。

我が家は４人家族ですが、４人全員が図書館を利用しているうえに、「**在住自治体**」と並行して「**隣接自治体**」の図書館も利用しています（それぞれ扱っている図書が違うため）。図書の返却日はいずれも図書館のHPで確認できるのですが、**１アカウントずつログインして利用状況を確認すると、８アカウント分を順番に見なければいけないため、とにかく面倒くさいのです！**

家族が自分で見てくれればよいのですが、私以外は基本的に忘れがちです・・・。**他の利用者さんにご不便をかけないためにもチェック業務はとても重要**です。本を読んでくれるのは嬉しいのですが、これは何とかしたいですよね。

**そこで登場、T-DASHです。**

もちろんテストツールであることは認識しているのですが、**ブラウザ特化版のRPA的な使い方ができるんじゃないか！？** なんてことをひらめいちゃったわけですよ。

そんなこんなで、やりたいことは次の通りです。

+ **ステップ１**：在住自治体の図書館サイトで「利用者認証」（ログイン）を行う
+ **ステップ２**：「利用状況」のページに遷移し「返却日」を確認する
  + 返却日が近づいている（あるいは過ぎている）こと確認する。
  + 返却3日前から認識できるとベター。
+ **ステップ３**：上記を家族４人分、繰り返す。
+ **ステップ４**：「隣接自治体」でも同様の処理を行う。

夢が拡がってきました、それではスタートです。

# 4. 準備

## 4-1. 登録申請

登録申請は昨年度に済ませていましたので、久方ぶりのログインです。お邪魔しまーす。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/7db454bb-01c2-cbac-48c4-fae43da779ec.png)

初めての方は事前に[T-DASHのサービスサイト](https://service.valtes.co.jp/t-dash/)から申込をしてくださいね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/f4760ab2-0c6f-6aa4-d9d9-adb761e3dcc8.png)

以前のトップ画面と比べると、かっちょよくなってます。今のデザインの方が好きです。

申込後はQUINTEEというサービスサイトを使うことになります。

## 4-2. ライセンスキー発行

利用にはライセンスキーが必要になります。
QUINTEEのライセンス管理画面から取得できますので、準備しておきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/ce7452e8-6782-1114-fd6b-843e05b41d94.png)

あれ、よく見るとライセンスキーの横に「クリックでコピーできます」というガイド文言が・・・。これはまさに**私が昨年指摘させていただいたところ**じゃないですか！（コピー機能があるの分かりにくい、という指摘）
**しっかり改善されていますね、ありがとうございます！！**（かなり遅）

## 4-3. アプリダウンロード＆インストール

QUINTEEの画面上部に「T-DASHアプリをダウンロード」があります。
ここからZipファイルをダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/ecffad1d-54b3-361f-29ba-f430193d004d.png)

ダウンロードしたZipを解凍し、exeファイルからT-DASHをインストールします。
インストール完了後、T-DASHを起動するとライセンス認証画面が表示されます。
昨年の味気ないダイアログからきれいなUIに変わってますね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/898f77f2-88dc-e065-aaac-8328f43a18af.png)

先ほどのライセンスキーを貼り付けて「認証」を押下すると、起動処理が走ってT-DASHのポータル画面に遷移します。昨年はここで画面が一度閉じられ、どうしていいかわからない瞬間がありましたが、現在は分かりやすい遷移になっていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/90a72d0a-d6be-df5b-34dd-d9a97be64e70.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/1133329a-2689-a9e9-65ed-eaca9f528edc.png)

全然関係ない話ですが、T-DASHってBボタンでダッシュする方のB-DASHのオマージュですよね、きっと。私くらいの世代になるとファミコンは当然ながら、B-DASHっていうパンクバンドを思い出しちゃいましてね。当時はハイスタだなんだと、そりゃもう盛り上がりまくったわけですよ。でも**天邪鬼だった私はメタル／ハードコアに傾倒**しちゃいましてね・・・って、長くなるのでやめときましょう。

# 5. プロジェクトの作成

ここからプロジェクトを作成していきます。

前回は**プロジェクト保存先を設定**するところから始めたのですが、**今回は変更することができないようになっていました**、なぜでしょう。レポートなどが保存されるフォルダなのでアクセスや使い勝手の良いフォルダを設定したいと思ったのですが、どうなんでしょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/3db4c001-9982-c301-5127-3b280cf27148.png)

気を取り直してプロジェクトを作成していきます。
「プロジェクトを作成」ボタンを押下した後、キーとプロジェクト名を入力し「作成」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/ba061936-6f28-b929-0564-edbd66b4d716.png)


プロジェクトができました。（サンプルプロジェクトは元から作成されているもので、シナリオ作りの参考になります）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/377b86fa-8df9-0408-8924-49772d493232.png)

プロジェクト名をクリックするとダッシュボード画面に遷移します。これでプロジェクトの作成は完了です。**ここまでの操作は昨年と変わりない**ですが、**UIやボタン押下時の挙動などが改善されていました**。わずかな差ですが、**ユーザビリティは高まっている**ように感じます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/5dac0408-498d-3dc9-0db3-741e92ece444.png)

# 6. テストシナリオ作成＆検証

## ステップ１：在住自治体の図書館サイトで利用者認証（ログイン）を行う

まずはステップ１から始めます。

利用者認証を行う画面にはURLで直接遷移できますので、該当画面の画面定義を作成していきます。

今回は利用方法を説明したいわけではないため、細かい手順は省略していきますが、**久しぶりに触った「画面定義」機能も、迷わず操作できました**。やはり**UIが秀逸**なのだと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/6f80eb4a-7773-7fc1-30df-28e1bef3e2e5.png)

続いて、ログインのテストケースを作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/40030b3f-5117-103d-8a61-2d976763b8de.png)

できました・・・というかこの画面、**昨年よりとっても使いやすくなってるんですけど！！**

**昨年に指摘した機能がバリバリ盛り込まれてます**。このあたりは細かく確認していきたいので、別の記事でレビューしたいと思います。

そんなこんなで、あっという間にログインのテストケースが出来上がりましたので、実際に動かしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/823a7ced-3d1d-5a58-4939-d07f20a9b6e5.png)

バッチリ、ログイン完了です。
レポートも見てみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/9fcda975-104f-5d2a-09f0-f73eb136f897.png)

なるほど、バッチリです。

## ステップ２：利用状況のページに遷移し返却日を確認する

続けて「返却日」を確認していきます。

ログイン後は「マイメニュー」の画面に遷移します。この画面にある「利用状況確認」のリンクを押下すると、貸出中の書籍リストを含む画面に遷移します。このリストにある「返却日」の項目が確認したい要素になります。

テストケースは画面ごとの３段階で作成し、「返却日」を確認していくことにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/08266b20-43e8-ac5b-07f3-0a35131343d4.png)

ここでひとつめのツマヅキです。
返却日の検証を行うには「テキスト検証」機能を使うことになります。しかし、使えるのはテキストの一致や正規表現でのマッチングであり、**日付の範囲でチェックすることができない**ようなのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/ec2df9e1-72d3-3f62-3699-3ee61023321b.png)

思い起こせば、**日付に関する検証はシステム日付などの設定をガチガチに固めてやるもの**でした。テストってそういうもんだよね、なんてことを思い出しつつ、もっとなんとんかならんかなー、と思ってみたりします。

自動化という観点で見れば現在の機能で十分なのだとは思いますが、今回のようなRPA的な使い方をしようとすると、要素指定でテキストを抜き出して後でまとめて確認できるようにするなど、**もっと違った機能が必要になる**のだと思います。

見方を変えれば、**こうした機能を追加するだけで、もっと違った使い方ができる**のではないか、とも思うわけです。テスト自動化は、「業務自動化」というマーケット・セグメントの一領域になりますが、その中での**隣接領域（例えばRPAなど）を意識することで、もっとパワフルなツールになる可能性がある**ようにも思います。
バルテスさんいかがでしょうか！？（なんて言ってますけど）

脱線しましたが、別の方法を考えていきます。

ステップ２の要求としては、以下の２点をあげていました。

+ 返却日が近づいている（あるいは過ぎている）ことを知りたい。
+ 返却3日前から認識できるとベター。

これを厳密に自動化することは無理なようなので、**要求を次のように緩和します**。

+ **利用状況をまとめて確認できること。**

つまり、「返却日は目視で確認するから、そのエビデンスちょうだい」ってことです。この要件であれば **「特殊操作」にある「スクリーンショットを保存する」を使えば良さそう**です。

早速試してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/85dd523a-0bdf-1e4d-7245-54e8f4baa446.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/55c393fa-b51b-7ee4-e055-bc8f63264cb1.png)

できました！

・・・・いや、できてないぞこれ。

小さくてわかりにくいですが、**スクリーンショットの画面がスクロールしていないので一部しかキャプチャできていません**。エビデンスだからスクロールキャプチャを自動でやってくれると思い込んでました（そんなわけない）。

テスト機能をざっと見る限りスクロール機能はありません。Formなどをタグで指定する場合、画面のスクロールなどは関係ないため不要な機能なのかもしれません。

マウス操作で代替できるでしょうか？
やってみます。

![5-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/c4610ed3-add9-17a9-4eaa-84f88948dad0.png)

できない。

トラッキングでスクロールバーを指定しようと試みましたが、Form全体をキャプチャしようとしたまま、そこから動きません。残念ですが私が見る限り、他に使えそうなコントロールはなさそうです。

万事休すかと思いきや、よくよく画面を見ると**１件目の返却期限はギリギリでキャプチャに入っていました**。そういえば、この画面は**最初に借りた本が一番上に表示される仕様**でした。ということは、この日付だけ確認できれば最短の返却日は分かるということになります。**命拾いしたなT-DASHよ・・・。**

今回は、このキャプチャで問題なしとして続行します。

## ステップ３：上記を家族４人分、繰り返す

ここまでくれば、あとは難しくありません。キャプチャを取ったらログアウトして、別アカウントで同じ動作を繰り返せばよさそうですのでやってみます。

ここでひとつ**困ったことが起きました**。
「ログアウト」ボタンの要素を取得するためにトラッキングを行ったのですが、**ログアウトボタンをクリックすると、画面がログアウト後の画面に遷移してしまいました**。
他の要素では、**ボタン押下の判定にはならずに要素情報を取得できる**のですが、このボタンはなぜかそうはなりません。**うっかり画面遷移後の状態で画面定義の「保存」を押下すると、遷移後画面のURLで上書きされてしまう**ため、いちいち元の画面まで遷移しなおしてから保存しなければなりません。

原因がどこにあるかはわかりませんでしたが、**URLが毎回上書き保存される仕様は見直してもよい（選択できるようにする）** かもしれません。

さて、テストケースの作成が終わりました。今度は一人分ずつテストケースを作成しました。（諸事情により３人分でやってます）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/d2aa671d-20de-c390-ec3c-365ebc20dae3.png)

中身はアカウント情報だけ違いますが、それ以外は全て同じ手順です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/fdfc2bc1-5548-b8bd-1a47-aa1f8a569e21.png)

いざ実行してみると・・・うまくいきました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/159c917a-70dd-ca7a-b7b3-dea365956de6.png)

ここで想定外だったのは、テストケースごとに新しいブラウザ（ウィンドウ）が立ち上がることです。てっきりログアウト後に同じウィンドウで立ち上がると思っていました。

しかし改めてテストケースを確認すると、こちらの設定ミスであることがわかりました。操作として「現在のブラウザでURLにアクセスする」というものがあるので、こちらを選択すべきでしたね。ちょっとした違いですが、テストケース作成時にはこういったところに注意が必要だと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/0f8f2d23-efae-3d04-45a6-3c9232b9da62.png)

それではレポートを見てみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/e43a047e-fd00-f0f3-3ba8-4d31575eca2d.png)

サムネイルが小さくてわかりにくいですが、各利用者の利用状況が確認できており、「返却日」もばっちり入っています。**ひとりずつログインして確認するより断然楽になりました**。**RPA的に使えなくはない**ですね。

## ステップ４：「隣接自治体」でも同様の処理を行う。

最後のステップです。
今度は隣接自治体サイトの「返却日確認」を追加していきます。

先ほどのシナリオに隣接自治体の確認ケース４名分を追加しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/bd1b40c5-a361-7947-5331-d07e999bd0ad.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/1bdf374f-4e4e-c13c-69b1-5185283973db.png)

実行してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/cd8b8f60-a385-3989-25cc-9938e4b48851.png)

結果は、**まさかの失敗**です。

隣接自治体の図書館サイトの処理途中で止まってしまいました。
状況としては、**ログイン画面で「ログイン」ボタンが押下できずに立往生**しています。どうやら**ログインボタンの要素ＩＤが可変になっている**ため、2度目のログイン以降はIDが変わり、**ボタンIDが見つからずにタイムアウト**となっているようでした。

例えば一般的なRPAであれば、ボタンの画像を頼りにマウス操作をすることができますが、このようなテストツールの場合は、**IDが変わってしまうと困った事態になる**ことが分かりました。サイトの仕様がわかっていれば手の打ちようはありそうですが、どのようにIDが設定されるかの、**ルールがイマイチ分かりません**でした。

あきらめかけた時にふと思い出しました。
**画面キャプチャのトラッキング機能に、もうひとつの項目があった**ことを。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/cc17abe2-1424-d0a5-2c3a-d6af52fdaf9e.png)

そうです、IDだけではなくXMLをフルパス指定することもできたのです。
フルパス指定は不安定なため、ID指定よりも不安ですが、とにかくやってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/70302af8-51af-d3a1-5fbf-fd360831093e.png)

成功しました！
レポートも確認しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/e5b1d498-7fca-b8fd-d639-8b49dc84d495.png)

返却日がひととおり確認できるキャプチャが取得できていました！！

# 7. まとめ＆振り返り

**テストツールをRPAのように使ってみるというアイデアは、要求を変更することで成功にこぎつけました**。

私のスキルはもはや素人レベルですが、それでも実現できたのは **「誰でも簡単に」というコンセプトの通り**だと感じます。

ここで冒頭のコンセプトをベースに、ツールの使い勝手を振り返りってみます。

## 1.**日本語**で書いたテストケースがスクリプトになる

**日本語で記述できるのは本当にありがたい**です。

当然ですが日本人は日本語に慣れ親しんでいますので、テストケースの可読性がとても高まります。実際、ケースを作る中ではFormIDやXpahなどの具体的な値を意識することは一度もありませんでした。

こういった**ややこしい情報は、ツールがいい感じに隠ぺいしてくれています**。

## 2.**すぐに使えて操作が簡単**

今回は**1年ぶり2回目の利用**でした。

前回はチュートリアル動画をいくつか見た後に取り掛かったので、基本操作は問題なくできていました。

あれから1年が経過し、操作をほとんど忘れていたにも関わらず、**ほぼ迷わず操作できた**のは **「すぐに使えて操作が簡単」というコンセプトのとおり**だと思います。

## 3.**月額3,960円**で開発スピードを高速化

コストは使用するチームの規模によりますが、**10人で約4万円/月、50人で約20万円/月、100人で約40万円/月**です。ランニングコストになるため、年間では×12になります。通常は一部のプロジェクトで正式採用されるとスキルの都合により、横並び展開されるたります。なので、**100人規模では480万円/年**となります。

テスター単価80万円と仮定すると6人月分となります。100人規模のプロジェクトで6人月分のコストを掛けたツールを使って、操作が簡単にできると考えると**お安いように感じます**。

もちろん初期教育は必要ですし、テストケースを作り込む工数（特に初回は時間がかかる）も忘れてはいけませんが、一度ケースを組んでしまえば**自動化が進みますし、レグレッションテストは俄然楽になるため、導入するメリットは大きい**と思います。

## 他にも気になる機能が！

今回は無料版で試行したため機能制限がありましたが、[データドリブン機能](https://service.valtes.co.jp/t-dash/function/tutorial/%e3%83%87%e3%83%bc%e3%82%bf%e3%83%89%e3%83%aa%e3%83%96%e3%83%b3%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%97%e3%82%88%e3%81%86)を利用すると、同じテストケースでデータを変えて実行することができるようになるそうです。
今回のケースですと、４名のアカウントで同じことをしていますので、ひとつのテストケースでデータを４種類セットしておけば、あとは繰り返し実行してくれるのだろうと思います。

そしてもうひとつは[カスタム機能の開発](https://service.valtes.co.jp/t-dash/function/tutorial/%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e5%8b%95%e4%bd%9c%e3%82%92%e4%bd%9c%e6%88%90%e3%81%97%e3%82%88%e3%81%86-robot-framework%e3%81%a7%e4%bd%9c%e6%88%90)です。Python Robot Frameworkを使って新しい動作を追加できるようです。Pythonでの動作の追加は「誰でも簡単に」とはいかないと思いますが、実装できる人が作ったのものを配布して利用することはできますので、これで利用の幅がググッと拡がると思います。

# 8. さいごに

あらゆる業界で人材不足が加速する中、自動化の市場が伸びているという話を聞きます。

人材が不足するならば、作業を減らすか効率化するしかありません。
そして効率化のための施策のひとつが、まさにこの「自動化」となるわけです。

最近は開発の現場作業から遠ざかってしまっていますが、**ビジネス戦略を検討するうえでは「現場の感触」を忘れてしまってはいけません**。今回のトライアルでは昔のことを色々と思い出しましたし、ツールの進化を確認することもできましたのでとてもよい機会だったと思います。今後もこうした機会があればいろいろトライしてみたいものです。

そうそう、今回作成したケースは今後しばらく使ってみようと思います。
予約した本の到着確認のケースも追加で組み込んでみたいところです。

以上です。今年も楽しめました、ありがとう！