機械学習を活かしたソフトウェアテストツールで勝つ
ソフトウェア開発のライフサイクルにテストは欠かせません。高品質の製品を提供するには機械学習を活用したソフトウェアテストが非常に重要になってきます。
この調査によると、全世界のAIソフトウェアの年間収益は、2018年から2025年にかけて101億円から1260億円に増加すると予想されています(1,248%増)。専門家の推定ではAIは世界経済に16兆円近い経済効果を与えるそうです。AIを活用すると労働力を大幅に増強できるため、生産性も変わってくるでしょう。このような変化に伴い、ソフトウェアの安定性を確保するテストも進化していく必要があります。
「機械学習(ML)と人工知能(AI)は、ソフトウェアのQAを進化させています。より迅速なバグの発見、膨大な量のデータ処理、開発コストの削減、人為ミスの防止、予知・予測によるデータ主導型の意思決定などを実現できるのです。」
ソフトウェアテスト業界が日々進歩を遂げる中、この記事ではQAテスターが直面する重要な話題について探って行きます。
機械学習とは?
機械学習は、膨大な量のデータからパターンを発見させ、計算論的学習をさせることです。訓練が完了すると、機械学習エンジンは指示がなくても学習できます。機械学習の方法はいくつかありますが、ハッカーヌーンによると、主な種類は3つあるそうです。
- 教師あり学習:アルゴリズムに正しいデータを与えて訓練すること。
- 教師なし学習:アルゴリズムに大量のデータを与えて分析させ、機械が何を学習したかテストすること。
- 強化学習:「良い」行動は報酬し、「悪い」行動は修正するようにアルゴリズムを訓練することで学習を強化する仕組みです。機械は報酬を最も多く得られるように学習します。
機械学習の具体例
問題を解決するために機械学習をソフトウェアに活用している実例はたくさんあります。例えば、Airbnbは写真の分類に機械学習を活用しています。Airbnbの最大の課題は、宿泊施設の写真が何億枚もあったことでした。ユーザーが写真の内容を正しく入力しなかったため、間違ったラベルが写真に付いていることもありました。どうすれば良いのでしょうか?
ユーザーにお願いして手作業で写真をタグ付けしてもらうこともできますが、写真はあまりにもたくさんあるのでかなり時間が掛かってしまいます。数週間、数か月かかるかもしれません。そこでAirbnbの開発チームは機械学習モデルを訓練することにしました。その結果、わずか数日で数億枚の写真を処理できたのです。
もう1つの課題は、写真に何が映っているか機械が見極められるかということでした。電気式暖炉と壁掛けテレビを見極めるのは困難です。
これまでは「宿泊施設にどんな家具がありますか」と質問してユーザーに入力してもらっていましたが、今後リリースされるアプリでは機械が写真から家具を検出できるようになるでしょう。結果的に、特定の家具があるAirbnbを探しているユーザーは希望通りの場所を検索できるようになるはずです。
ソフトウェアテストに機械学習を応用
ソフトウェアテストを自動化するAutifyは機械学習を活用し、回帰テストでUIの変更点の検出を自動化することができます。
レコーディングしたテストを実行中、AIエンジンは「UIにどんな要素があるか」学習します。特定のステップで期待された結果が出なかった場合、AIエンジンは変更された要素を検出・記録し、テストを続行します。テストそのものが失敗し、停止してしまうことはありません。
ソフトウェアのQAテスターの最大の悩みは、頻繁にUIが変わることでテストが失敗・停止してしまうことですね。失敗の原因を調査し、テストスクリプトを作成し直して再実行する必要があるため、工数やコストもかかってしまいます。
機械学習とAIが機会を生み出す主な産業とは
機械学習と人工知能は以下のような産業で活躍することが期待されています。
- 医療
- 自動車
- 金融
- 小売り
- 技術
- 製造
- エネルギー
- 交通
たとえば医療では、データ主導で診断できるようになるでしょう。ただし、プライバシー侵害への懸念、機密性の高い医療データの管理、そして人体の複雑さなどの課題があります。
より正確に呼吸器疾患を診断するためにケニア・ナイロビの医師がTumbuaというアプリを使った事例があります。それまでは聴診器を使って心臓の異常を聴診する必要があったのですが、人間の耳はすべての周波数を聞くことはできません。誤診に繋がる可能性があるのが課題でした。
そこで、膨大な量の呼吸データを用意して、音声分析アルゴリズムを訓練することになりました。「バリバリ」、「ヒューヒュー」などといった異常呼吸音のパターンを機械に学習させ、より正確に呼吸器疾患を診断できるようにしたのです。
ソフトウェアテストに機械学習が重要な理由
ソフトウェア開発で品質保証が重要なのは言うまでもありません。さらに、品質だけでなく素早くリリースしていく必要もあります。しかし、開発サイクルが速いと、人為ミスが増えてしまう可能性があります。そこで機械学習を活用すれば、人為ミスを削減でき、ミスを完全に撲滅できるかもしれません。AIと機械学習がソフトウェアテストを変革しているのは、手動テストにかける時間を削減しているからです。これにより、コスト、つまりTCOを削減しているのです。
品質保証の仕事が危険にさらされるのでは?
最近の調査では、「AIの普及に合わせて職員はスキルセットを見直す必要がある」と答えた人は全体の84%に上りました。
「100%自動化」する日はそう遠くないと思うQAエンジニアもいると思います。しかし、ほとんどのテスターは「手動テストはこれからもある程度の役割を担っていくだろう」と合意しています。手動テストを全く行わなくなるわけではないのです。「機械学習を使用するならテスターは必要ない」というのではなく、機械学習はデータ主導型の意思決定を支援するツールなのです。
QAテスターは業界の変化に適応していく必要がありますが、機械学習とAIをうまく使いこなすことで、開発テストで解決が難しい課題に取り組んでいけるようになります。
たとえば、テスターが自動化テストで直面する大きな課題として、「アプリケーションの機能が頻繁に変わること」が挙げられます。アプリが頻繁に変更されると、それに合わせてテストスクリプトを変更する必要があり、時間とコストがかかってしまいます。機械学習を活用すれば、AIテストエンジンが変更を学習し、文書化し、自動的に調整するように訓練できます。テストのそういった部分を自動化することで、開発やテストを効率化できるわけです。
まとめ
高品質の製品を開発していくために、機械学習はE2Eテストで大きな役割を果たしていくと思います。特に、素早く、かつ大規模なリリースが求められている場合、機械学習は必要不可欠です。ビッグデータを処理し、人的ミスを削減し、データ主導の意思決定を行うために役立つ予知的予測データを提供できるものなのです。
手動テストの課題を軽減したい!機械学習を備えたテスト自動化ツールが欲しい!そんな方はAutifyをお試しください。Autifyの魅力の1つは、テストスクリプトを書かなくてもノーコードでテストを自動化できることです。例えば、マウスを動かしたり、キー入力をしたりなどと言った単純な動作は、ブラウザを直接操作するだけでテストスクリプトを作成できます。また、UIや機能に変更があってもテストスクリプトは壊れません。AutifyのAIが変更を学習して自動で調整するので、スムーズにテストを続行でき、スクリプト修正に時間を取られません。UIの変更が検出された場合、ダッシュボードにまとめて表示されるので、テスターは容易に確認することができます。
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。