テスト自動化におけるAI活用の状況

テスト自動化におけるAI活用の状況

テスト自動化は、ソフトウエアの開発において非常に重要なステップで、単体テスト、結合テスト、シナリオテスト、UIテストの各工程でもテストを自動化していくことは、バグの発見や予防のみならず、ソフトウエア自身の品質を担保する意味で非常に有効です。


テスト自動化を達成するためのツールは、コードレベルで実行可能な、JUnit、NUnit、PyUnit等、それらを統括するTest suite。シナリオテスト単位では、ソフトウエアのビルド、テスト、サーバへのデプロイまで一連のステップを自動化するJenkins。GUIのテスト自動化として有名なSelenium等、多岐に渡ります。テスト自動化に関しては、日々新しい手法やツールが開発されています。


その中でも、最近、テスト自動化にAI(機械学習)を活用していこうという取り組みも盛んになってきています。本記事では、AIがどのようにテスト自動化に使われていて、それによって何が可能になるかについて紹介をさせて頂きたいと思います。

検証・テストに関するお問合せはこちら

従来のテスト自動化の弱点に関して

従来のテスト自動化の弱点に関して

テスト自動化にAIをどのように活用していくかという話に進んでいく前に、従来のテスト自動化の弱点について少し解説をしておきたいと思います。前述の通り、バグの早期発見や、ソフトウエアの品質を高めるためにはテスト自動化対応は必須とも言えますが、テスト自動化の一番のボトルネックは自動化のためのコード自身の管理そのものにあると考えられます。


数十年以上機能に変化が無い基幹システムに対してテスト自動化をする場合は、仕様に大きな変化は起こらないので、自動化コードのメンテナンスは必要にはならないのですが、最近流行りのアジャイルプロジェクトのように、適宜仕様が柔軟に変わっていくプロジェクトに関しては仕様の変更に伴って、自動化コードもアップデートが必要になります。また、場合によってはせっかく実装した自動化コードが無駄になってしまったり、追加で新しい自動化コードを実装しなければならない場面も発生します。


また、自動化コードそのものに視点を移すと、テストコードの実装には幾つか決まったパターンがある事が多く、テストコードの実装自体が冗長に感じる側面もあり、それがエンジニアのモチベーションの低下に繋がる側面もあります。


上に上げさせて頂いたようなテスト自動化の弱点について、AIの活用で何が変わるかについても合わせて本記事中でご紹介させて頂きます。

AIによるテスト自動化の動向

AIによるテスト自動化の動向

それでは本記事の本題である、AIによるテスト自動化の活用事例について紹介していこうと思います。全体的な傾向としては、GUIテストの自動化。自動化テストの自動メンテナンス。テストデータの自動生成等の用途でAIが活用されている傾向があります。

AIによる自動化コード自体の自動生成

ChatGPTという対話型のAIの存在は、2022年11月にアメリカのOpenAI社がリリースしてから、世界で話題を呼び、ユーザー登録数はわずか2か月で一億人を突破しており、皆様も触ったことがあるかもしれません。ChatGPTは会話が行えるだけでなく、ソースコードも書いてくれます。こういったAIを文章生成AIというのですが、そういったAIの機能を利用してテストコードをAIに書かせてしまうという斬新的な取り組みです。


これが上手く機能すれば、従来のテスト自動化の項目で弱点として紹介していた、冗長なテストコードを実装しなければならない問題が解決し、テストエンジニアにとっても非常にありがたい機能かと思います。


しかしながら、このテストコード自動生成の弱点は、AIが生成するコードは必ずしもテスターが望むコードにはなっていないことが多く、それがノイズになってしまうこともあります。AIが生成するテストコードは、典型的なコードである事が多いので、それだけでテストコードを実装する必要が無くなる域にはまだ達していません。

AIによるGUIのテストの自動化の達成

GUIテストの自動化の達成は、AIによるテスト自動化の中でも最もホットなトピックという事ができます。従来のテスト自動化の弱点の項目でもお伝えした通り、テスト自動化の中でもGUIのテストはトラブルが多く、また実装の難易度も高い事が多いので、ここにAIが活用できると大きなブレイクスルーに繋がります。


それでは、どのようにAIがGUIテストの自動化を達成するかというと、AIがHTMLの要素を解析し、それぞれのGUIの要素を自動的に把握します。またその際に合わせて画像認識の技術が用いられる事があります。それを動的にトラックする事で自動的にGUIの自動化コードを作成します。こちらと同じテクニックはRPAでも多く用いられており、GUIテストの自動化だけでなく、応用範囲は非常に広いです。


ただし、この手法も完璧という訳ではなく、全てのブラウザで動作保証があるわけで無いので、そこは課題となりますが、HTMLのパースの構成はだいたい共通しているので、汎用性は期待できます。そのため、AIによるGUIのテストの自動化の達成は最も注目度の高い技術です。

APIテストの変更の検知

PaaS、SaaS等、クラウドベースのサービスが多く提供されている現在において、APIのテスト自動化は外せない項目になっています。但し、クラウドサービスの特性から、APIの仕様変更等は頻繁に発生し、そのためにテストコードが壊れる事になります。前述の通り、仕様変更はテスト自動化における最大の弱点です。


それではこの部分にAIはどのように活用されているかというと、流石に動的にAPIの仕様変更に合わせてテストコードを書き換える事は難しいものの、APIの種類を自動的に学習し、それに合わせた最適なテストコードのパラメータをサジェストしたり、API仕様変更の予兆を検知したり等、補佐的な役割を行ってくれます。これにより、APIテスト実装の敷居を下げてくれますが、当然万能ではなく、まだまだ初期段階の機能です。

自動化テストのAIによる自動メンテナンス

冒頭でもお話をした通り、仕様変更等、色々な要因で自動化テストは動かなくなってしまうことがあります。これがテスト自動化の最も厄介な側面という事ができ、この部分を改善する事で大きな改善が期待できます。


AIを自動化コードのメンテナンスに使用するユースケースも増えてきています。前述のAPIテストの例ではAPIのパラメータ、GUIテストの場合は、GUIの画面の要素・・・等といったように、自動化テストの失敗の原因を自動的に分析して、どうすればテストが動くようになるかを推論する機能です。この部分は今後AIに大きな期待を寄せられています。

AIによるテストデータの生成

AIによるアバターの生成や、AIが書いたアート、chatGPTによるその驚異的な文章生成能力・・・等の話題には事欠かないかと思いますが、テスト自動化においてもテストデータの生成という部分でAIは大いに活用されています。


画像のテストであれば、本物と見分けのつかないような画像、文章のテストであれば、本物のニュースと遜色の無い内容の記事等は、AIによって非常に簡単に生成できてしまうため、わざわざ人間がテストデータを1から用意する必要はありません。


AIによるテストデータの生成は既に実用段階に入っており、その活用方法はテストデータ作成のみに留まらず、AI自体を訓練するためのトレーニングデータを自動生成する場面等にも使用されているので、近年非常に注目されている分野です。

まとめ

AIの活用事例として、今回はテスト自動化について紹介をさせて頂きました。
まずは現在のテスト自動化の課題について解説し、特にその中で元の製品の仕様変更によってテストコードが動かなくなってしまう問題について説明しました。それを元にAIによるテスト自動化がどのようにこの問題に有効か解説を行いました。


その中でも特に、GUIテストの自動化。自動化テストの自動メンテナンス。テストデータの自動生成等が成果をあげている分野であり、将来より多くの効果が期待できます。


テストコード自体をAIが全自動で生成して、勝手にメンテしてくれる・・・という理想にはまだ遠い状態ですが、AIの介入によりテスト自動化の達成に必要な労力が大幅に軽減されてきているので、今後も変わらず動向を見守って行きたい分野です。

クロス・コミュニケーションの
検証・テストソリューションについてはこちら

お問い合わせはこちら

執筆者

江口 天

EGUCHI TAKASHI 江口 天

執行役員

株式会社クロス・コミュニケーション

東京大学大学院修了後、NTT研究所で暗号アルゴリズムの研究開発に従事。
その後、ヨーロッパに渡り、ドイツ及び日本のマイクロソフトで自然言語処理エンジニアとして活動。その後、カナダのスタートアップに関わり、日本語の音声認識のアプリケーションを開発。日本に帰国後、主に国内の大企業に対するDXコンサルティング・アドバイザリーサービスを提供する株式会社MDIUを設立。同社で人材マッチングを自動化するAI、Lichtの開発を行う。
2022年12月よりクロス・マーケティング・グループに加わり、DX・AI領域における高度な知見を基に、グループの事業全体のDX化の推進やAIを活用したビジネスモデルの変革について牽引。