ソフトウェアテスティングへAIがもたらす変革

IT業界ではAI(人工知能)ML(機械学習)が注目を浴びています。垂直市場に浸透していますし、私たちの日常生活の質にも影響を与えています。具体的には、Netflixに表示されるおすすめの映画、Amazonのおすすめ製品、ホームオートメーション、さらには自動運転車などが挙げられますね。ソフトウェア業界に目を向けると、AIはソフトウェアのテスティングにどのような変革をもたらしているのかQAテスターの間で議論されています。

「簡単に説明すると、AIは、手作業で行われてきた作業を自動化するだけでなく、変化を学習して自動的に順応することでソフトウェアテスティングを革新しています。工数やコストの削減に役立っているのです。さらに、マネージャーがデータを基により良く意思決定するためにも貢献しています。」

この分野の専門家であるRaj Subramanianによると、「人工知能」とは「考える」ことができる機械を構築するコンピューター科学の研究分野の1つなのだそうです。「機械学習」はAIの一種で、コンピュータに指示しなくても学習できる能力を与えるものです。そして最後に、「深層学習」は機械学習の1つの領域で、人間の脳のニューロンに基づいた技術です。ニューロン同士がお互いから学習し、神経回路網全体で反応します。

たとえば、たくさんのニューロンが協力して「嗅覚」を学習した場合を想像してみましょう。ある匂いを嗅いだ時、それと関連した思い出が頭に思い浮かぶことはありませんか?ニューロンがネットワークとして作用しているとイメージできますね。


AIはソフトウェアテストにどのように役立つの?

UIは絶えず変化しますから、UIテストは手間がかかります。さらに、テストスクリプトも作成しなければならず、自動化ツールがあった方が明らかに便利です。また、素早くアジャイルなライフサイクルで開発しているDevOpsチームが多いため、回帰テストがボトルネックにならないことが重要です。製品の実装リリースが遅れてしまっては困りますよね。

変化が絶えない環境ではリグレッションテストを続けていくのが課題ですし、特に大規模な環境では大変です。

この課題を解消するには簡単にテストできる必要があります。では、どうすれば簡単にテストできるのでしょうか?AutifyなどのAIベースの自動化テストソフトウェアを利用すれば良いのです。Autifyなら、QAテスターはテストケースシナリオを記録するだけで、ソフトウェアがそれを自動的にスクリプトに変換してくれます。UIに変更があった場合に自動化エンジンが自動で検出し、それに合わせてテストシナリオを適応できます。

回帰テストとは?

リグレッションテストとは?

回帰テストでは、新しく追加されたコードと実装を再テストしつつ、古いコードと実装が引き続き動作することを確認し、既存のコードときちんと動作することをチェックします。変更内容が原因で意図しない不具合が発生していないか確認するために回帰テストは必要不可欠なのです。上のイラストが示す通り、回帰テストは3つの原則に分けることができます。

  1. すべて再テストする。
    時間とリソースが一番かかる方法です。結果的に工数も掛かる場合があります。テストキューのすべてのテストを再テストする必要があるからです。
  2. 回帰テストを選択する。
    テストキュー全体を再テストする代わりに、テストを選んで実行する方法です。「再利用できるテストケース」と「廃止されたテストケース」の2種類あります。前者はテストスクリプトを再利用できますが、後者は再利用できません。
  3. テストケースの優先順位付け。
    文字通りですね。ビジネスユースケースで優先順位が高いものからテストしていきます。

回帰テストの利点は?

回帰テストの最大の利点は、正しく行えば安定した製品や新機能を迅速にリリースできることです。

さらに、工数やコストを削減できるため、組織にも利益があります。上で説明した3つのテスト原則を思い出してください。アプリケーション全体を再テストするのではなく、QAマネージャーがテストキューまたはスイートからテストしたい部分を選択できるので、より素早く、より安価にテスティングできます。

回帰テストし続けるのが難しい理由は?

UIや実装を頻繁に変更したり、大規模な変更が合った場合、回帰テストを続けるのは難しくなってきます。また、ソフトウェア開発で最も時間とリソースを要する作業になってしまうこともあります。

現在のウェブUI技術では、「id」などの識別子や「class」などの属性はデザインや機能などによって簡単に変更できますが、変更するとテストスクリプトが破損してしまいます。これがなぜ問題なのか詳しいガイドがありますのでご覧ください。DevOpsチームが手作業で介入すると、かなりのコストがかかってしまいます。AIと自動化ツールが必要不可欠であり、ソフトウェアテスティングに変革をもたらしているのはそのためです。

AIテストでできることは?

人間が同じ作業を繰り返すのは面倒ですが、AIテストなら疲れることなく何度でも作業できます。しかし一番注目したいのはUIの変化を検出できる機械学習アルゴリズムです。このアルゴリズムは「テストが失敗しました」で終わるのではなく、失敗を認識して回復できるので完了にこぎつけることができます。

また、発見した変更が通知されるのでQAマネージャーはデータを基にした意思決定を行えます。

まとめ

現在の市場には、AIベースの回帰テストSaaSがいくつかあります。そのようなテストツールを選ぶ際には、メンテナンスが簡単で、自動テストにAIを活用しているか吟味しましょう。安定した品質の実相を迅速にリリースすることで、時間を短縮し、テスト関連のコストを削減することが最終的な目標ですね。
 
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。