テスト自動化の理想と現実、生成AIが理想と現実のギャップを埋めていく

# はじめに

テスト自動化の理想と、これまでの現実。そして生成AIを搭載したテストツールの登場で、これからのテスト自動化は、どう変わっていくのか。私自身、これまでの成功・失敗体験から得たノウハウはあるものの、この既成概念にとらわれず、これからのテスト自動化の変革と更なる普及に期待したい思いで書いてみました。

テスト自動化に興味がある人はもちろん、検討したけど見送った、やったことがあるが今はやってない、やっているが現状に満足していない人のご参考になれば幸いです。

# 多くの人が最初に思い描くテスト自動化への期待

「魔法の杖」、「銀の弾丸」の様な物を期待する。

+ 上流の品質も向上させる。
+ 的確なテストケースを自動で抽出する。
+ テストコードを自動生成し、テスト実行できる。そして不具合を自動で検出する。
+ 品質が向上し、コストも激減し、納期も短縮する。すぐにQCD全てに対して効果のあるのが自動テストだw
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/193d4b52-9f26-75cf-3e06-4fdcf972a7a5.png)

# 現実のテスト自動化 
テスト自動化の8原則　引用元：[テスト自動化研究会](https://sites.google.com/site/testautomationresearch/test_automation_principle)

1. 手動テストはなくならない
1. 手動でおこなって効果のないテストを自動化しても無駄である
1. 自動テストは書いたことしかテストしない
1. テスト自動化の効用はコスト削減だけではない
1. 自動テストシステムの開発は継続的におこなうものである
1. 自動化検討はプロジェクト初期から
1. 自動テストで新種のバグが見つかることは稀である
1. テスト結果分析という新たなタスクが生まれる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/a50e9eab-f9a5-45e6-b10e-8046cdf1da52.png)


# 現実のテスト自動化の使いどころ

近年、ツールの進化で盛り上がる兆しはあるものの、基本的な効用は20年以上変わっていない。

+ 未知のバグを検出し、品質が向上されると言う物ではなく、品質を担保するためのデグレ確認、セーフティネットの効用が主流。
+ テストを自動化すると、すぐにコスト削減に繋がると言ったのものではない。損益分岐点までテスト実施を繰り返すことにより、コストに対するベネフィットが釣り合う。
+ 変更容易性において品質を担保するためのデグレ確認で最もベネフィットが得られる活用として、アジャイル型やCI/CDパイプライン上のテスト自動化の活用が推し進められてきた。

::: note warn
***日本特有の課題もある***
1. 日本では、米国と違いソフトウェア開発を外注に出す企業が多い。
1. 一括請負するプロセスでは、現実としてアジャイル型より、ウォーターフォール型がまだ圧倒的に多い。
1. 発注側と請負側でテストが分断されるケースでは、自動化するコストに対するベネフィットが双方得られにくい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/50677443-7982-2a58-27dd-02797ef91e21.png)

**日本でテスト自動化が遅れている一因にもなっている**
:::

# 結局のところ
先陣が切り開いたノウハウのお陰でテスト自動化導入の勝ちパターンが広く知られ、上手く使えば効果を発揮することは間違いない。自動テストがない状態には戻れない、止めることができない長く使い続ける自動テストも多く存在する。一方で、現実のテスト自動化の使いどころに適合させるため、前述の効果の出る開発プロセスに変革させるとか、ベネフィットが得られやすい契約に変えるとか、高いハードルはいくつも存在し、なかな踏み出せないプロジェクトが多いのも、また事実である。
そもそも、理想を否定し、旧来のテスト自動化のテクノロジーを用いて、現実の使いどころを説いたとて、この延長線上には最初に思い描く理想は存在しない。

# 生成AIが理想と現実のギャップを埋めていく

2024年7月に正式リリースされたUiPath Autopilot for Testersと出会い、半ば諦めていた理想を思い起こすきっかけをくれた。これまでも私自身がテスト自動化の真の価値とは？勘所など、下記のブログの様な発信もしていが、今後、レガシーになり、改めることになりそうだ。

https://qiita.com/Jun96427231/items/39ba38b0209af0b83b6b

## ❶UiPath Autopilot for Testersとは

テストコードの自動生成は勿論、ベテランのQAエンジニアが行っている様々な観点での要件の品質チェックや、テストケースの検討・抽出・作成、そして洞察（テスト結果の分析）にまでフォーカスした革新的なツールになっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/7ffec68a-5025-09dd-e318-012707df70b7.png)

### AIがしてくれること

+ AIの頭脳を借りて要件の品質をスピーディに評価（抜け漏れチェック）し、改善点の提案
+ AIの頭脳がテストケースをスピーディに自動抽出し、テスト手順や期待する結果も生成 
+ 生成されたテストケースからAIがスピーディにテストコードを生成
+ 大量に蓄積されたテスト結果をAIが洞察と提案

::: note info
人間であれば暗黙的に判定できる検証作業も、生成AIによって模倣できる様になる日も近いと思われる。
:::

もう少し具体的なところは、下記のブログに記載しています。

https://qiita.com/Jun96427231/items/8edc9fcc754396dbe2fb

## ❷これからのテスト自動化（テスト作業）の新しいカタチ
下図のセーフティネットだけが従来のテスト自動化の使いどころで、それ以外は全て新しい使いどころです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/2334d49e-9f6b-3b0f-5014-85da1b3bd1fb.png)

### メリットは？

+ 上流工程における品質の向上
+ テスト設計の省力化
+ テスト漏れの軽減
+ 抽出されたテストをその場で実行することで、未知の不具合も検出
+ 要件から抽出したテストの実行で実装側の不一致も検出
+ リグレッションテストでデグレ確認（従来の自動化メリット）

アジャイル型でも、ウォーターフォール型でも、テストライフサイクルのあらゆる段階で使えるので、テスト作業全般で加速化、省力化、品質向上のベネフィットが得られやすくなる。例えば開発ベンダーとユーザー企業でテストが分断されたとて、開発ベンダーは新規開発時のシフトレフトや、ユーザー企業は要件品質のチェックや受入れテスト等で、それぞれの効用が得られやすくなる。

# おわりに
最後に多くの人が最初に思い描くテスト自動化への期待を、もう一度振り返る。
+ 上流の品質も向上させる。
+ 的確なテストケースを自動で抽出する。
+ テストコードを自動生成し、テスト実行できる。そして不具合を自動で検出する。
+ 品質が向上し、コストも激減し、納期も短縮する。すぐにQCD全てに対して効果のあるのが自動テストだw

どこまでと言ったことはあるとは思うが、方向性としては、最初に思い描くテスト自動化への期待に近づいてきたのではないだろうか。従来のテスト自動化の常識が、レガシーと呼ばれる日も、近いかも知れない。
共感頂いた人は、いいねを頂けると励みになります。

最後にAutopilot for Testersの公式ガイドを案内しておきます。

https://docs.uipath.com/ja/autopilot/other/latest/user-guide/autopilot-for-testers