キーポイント
-
2023年とその先の数年間は、ソフトウェアテスト業界に大なり小なり影響を与える大きな変化が訪れるだろう。テストプロセスの改善、AIベースのセキュリティツールの活用、ビッグデータを活用したリスクベーステストなどの導入において、AIやMLをどのように活用できるかの調査を始める必要がある
-
ソフトウェアテストの動向 - パンデミック時にリモートワーク/リビングに対応するため、ビジネスモデルを迅速に改革して、新しい機能を追加する必要があった。開発者は需要が高く供給不足となり、テストを行うためのプログラミングの専門知識が必要になり、そのプログラミングスキルの競争が激しくなるという逆説的な結果となった
-
機械学習が変えるソフトウェアテスト - ユーザーが機能の追加やビジネスプロセスの更新を望むため、ソフトウェアアプリケーションは常に変化している。しかし、この機能追加変更によって自動テストが正しく動作しなくなることがしばしば見られる。機械学習は、現在の自動テストをより弾力的で安定させるために用いられるようになっている
-
AIがセキュリティテストをどう変えるか - AIはサイバーセキュリティ業界を多方面から変革する態勢にあり、現在、AIがシステムをターゲットにしてプローブし、弱点や脆弱性を積極的に見つけるために初めて使用されているのを目にしている
-
新しい役割とキャリア - AIが主流になるにつれて、まだ発明されていないまったく新しいキャリア分野が生まれる可能性がある
多くの意味で、2022年はソフトウェアにとって分水嶺となる年だった。パンデミックの最悪の被害が去ったことで、時間的な変化と、どの変化が構造的になったかが見えてきたのである。その結果、パンデミック以前の現状を打破し、持続可能な長期的ビジネスを構築するためにソフトウェアを利用した企業が繁栄した。しかし同時に、単なる一時的な流行にすぎなかったものは、歴史のゴミ箱に追いやられることになる。
働き方が変化し、ソフトウェアやITの存在感がますます増していく中、ソフトウェアテスト業界でも品質工学の実践や自動化が進んでいる。同時に、機械学習や人工知能、それらを可能にする大規模なニューラルネットワークの著しい進歩も見られる。これらの新しいテクノロジーは、ソフトウェアの開発とテストの方法をかつてないほど変えていくだろう。この記事では、今後数年間に見られるであろうトレンドについて説明する。
ソフトウェアテストの動向
パンデミック以前から、ソフトウェアテストは、テストプロセスのあらゆるレベルにおいて自動化が進み、変革が進んでいた。しかし、パンデミック時には、ビジネスモデルを急速に改革したり、リモートワーク/リビングに対応するための新しい機能を追加したりする必要があったため、開発者は需要が高く、供給不足に陥った。その結果、テストを行うためのプログラミングの専門知識がより必要となり、そのプログラミングのスキルを求めて競争が激化するという逆説的な事態に陥った。
その結果の1つが、アプリケーションの構築とテストのための"ローコード"または"ノーコード"ツール、プラットフォーム、およびフレームワークへの移行だった。テスト側では、SeleniumやCypressのようなコードを多用するテストフレームワークが、ビジネスユーザーができるローコードの代替品との競合を意味するようになった。さらにSalesforce、Dynamics、Oracle、SAPなどの一部のERPやCRMプラットフォームでは、テストツール自体がテスト対象のアプリケーションをより深く理解する必要を意味するようになったのだ。
機械学習が変えるソフトウェアテスト
機械学習(ML)がテストに使われるようになった最初の段階では、現在の自動テストをより弾力的で脆い(原文ママ)ものにするような使われ方が見受けられた。ソフトウェアテストの弱点の1つは、メンテナンスである。これは主に、個別のモジュール(ユニットテストと呼ばれる)ではなく、アプリケーションやユーザーインターフェイス全体をテストする場合によく当てはまる。
例えば、ログインボタンの位置や形、場所が変われば、以前に記録したテストが壊れるかもしれない。ページの読み込み速度のような単純な変更でも、自動テストが失敗する可能性がある。皮肉なことに、人間は、アプリケーションを見て、どのボタンが間違った場所にあるのか、何かが正しく表示されていないのか、すぐに分かるので、コンピュータよりもずっと直感的でテストに優れている。これはもちろん、ほとんどのアプリケーションが人間が使うことを前提に作られているからだ。他のコンピュータが使えるように作られたソフトウェアシステムの部分(APIと呼ばれる)は、自動化を使ってテストするのがずっと簡単である!
このような制約を回避するために、新しいローコードソフトウェアテストツールでは、MLを使って、テスト対象のアプリケーションを複数の方法で、何度も繰り返しスキャンさせ、どの範囲の結果が "正しい" か、どの範囲の結果が "正しくない" かを学習できるようになっている。つまり、システムの変更で最初に記録した内容と少しずれたときに、そのずれが予想通り(テストが合格)なのか、予想外(テストが失敗)なのかを自動的に判断できるようになる。もちろん、私たちはまだこれらのツールの初期段階にあり、実質よりも誇大広告が多いのも事実である。それでも、2023年に入ると、ソフトウェアテストにおけるMLの実際の使用例が、特に複雑なビジネスアプリケーションや変化の激しいクラウドネイティブアプリケーションで見られるようになっているのだ。
ML技術の他の応用方法は、品質工学の分析と報告である。例えば、ソフトウェアテストにおける長年の課題は、テストのリソースと労力をどこに集中させるべきかを知ることだ。リスクベースド・テストという新しい分野は、システムの中でもっともリスクが高い部分にソフトウェアのテスト活動を集中させることを目的としている。テストによって、全体的なリスクを減らすことができれば、リソースを配分するための定量的な方法を得ることができる。リスクを測定する方法の1つは、特定の事象の確率と影響を調べ、事前データを使って、これらの値がシステムの各部分にとってどの程度重要であるかを理解することである。そうすれば、重要と思われる部分に的を絞ってテストを行うことができ、これはMLのほぼ完璧なユースケースだ。モデルは、過去の開発、テスト、リリース活動を分析し、欠陥が見つかった場所、コードが変更された場所、以前問題が発生した場所を知ることができる。
AIはセキュリティテストをどう変えるか
MLがソフトウェアテスト業界を変えているとすれば、AIはサイバーセキュリティ業界を多面的に変革する態勢にある。例えば、多くのアンチウイルスや侵入検知システムがAIを利用して、サイバー攻撃の兆候となりうる異常なパターンや行動を探していることはすでに喧伝されている。しかし、私たちは今、AIがシステムをターゲットにしてプローブし、弱点や脆弱性を能動的に見つけるために初めて使用されているのを目にしている。
例えば、人気の高いOpenAI ChatGPTチャットボットは、あるシステムにアクセスするためのソフトウェアコードを作成し、そのシステムを使用しているユーザーに送信する、偽だがリアルなフィッシングテキストを生成するように求められた。スピアフィッシングのもっとも一般的な手法の1つに、何らかのソーシャルエンジニアリングとなりすましが使われていることから、これはサイバーセキュリティの新境地と言えるだろう。チャットボットが、被害者からリアルタイムで受け取った応答に基づいて、動作するコードとリアルな自然言語を同時に作成できるため、AIはダイナミックなリアルタイム攻撃力を生み出すことができる。
もしあなたが騙されるとは思っていないなら、ここでクイズをしてみよう。この記事の段落の1つはChatGPTによって書かれ、本文にそのまま貼り付けられたものだ。どれがそうなのかわかるだろうか?
AIやMLシステムのテストやチェックはどのように行うのか?
AIやMLを使ったシステムやアプリケーションを展開する際のもう一つの課題は、「どうやってテストするか」である。従来のソフトウェアシステムでは、人間が要件を書き、システムを開発し、他の人間がコンピュータの助けを借りてテストして、結果が一致することを確認していた。
多くの場合、システムがどのようにして特定の答えを導き出したかは不明だが、その答えが提供されたデータセットの証拠と一致することだけは確かである。これは、AI/MLシステムがこれまで人間が知らなかった新しい手法を生み出し、独自の相関関係やブレークスルーを見つけうることを意味する。とはいえ、証明されているわけではないので、もしかしたら限られたデータセットと同程度のものでしかないかもしれない。これらのモデルを本番システムに使い始めて、予期せぬ、予測不可能な振る舞いをするリスクさえある。
したがって、テスターやシステムオーナーは、ビジネス要件、ユースケース、境界条件(または制約)を明確に把握する必要がある。例えば、採用するデータセットの限界や、モデルの学習対象となる特定のユースケースを定義することで、モデルが、元のデータセットが代表する活動をサポートするためにのみ使用されることを保証できる。さらに、モデルによって予測された結果を人間が独立してチェックすることも重要である。
AIはコンピュータのハードウェアをどう変えるのか?
AI開発者が直面する物理的な課題の1つは、現世代のハードウェアの限界だ。使用されるデータセットの中にはペタバイト規模のものもあり、データセンターではこれらのモデルを実行するのに十分なRAM容量がないため、困難を極めている。そのため、データセンターでは、数百ギガバイトのRAMを搭載した500以上のGPUを使用して、データセット全体を処理しなければならない。処理側でも問題は同様で、現在の電気的なCPUやGPUは大量の熱を発生させて膨大な電力を消費し、並列処理のスピードは電気抵抗によって制約を受ける。これらの制約を解決する方法として考えられるのが、光コンピューティングの利用である。
光コンピューティングとは、レーザーや光検出器などの光を利用した技術で計算や情報処理を行うコンピューティングの一種である。光コンピューティングを人工知能(AI)に応用する研究は行われているが、まだ広く普及しているとは言えない。光コンピューティングをAIに応用するためには、多くのAIアルゴリズムが高精度の数値計算を必要とするため、光技術では困難であるなどの課題がある。
しかし、光コンピューティングをAIに応用することで、いくつかの利点が生まれる可能性がある。例えば、光コンピューティングシステムは非常に高速に動作する能力を秘めているので、大量のデータをリアルタイムで処理しなければならない特定のAIアプリケーションに活用できるかもしれない。また、多くのAIシステムの主要な構成要素である人工ニューラルネットワークの実装に、光学の一分野であるフォトニクスの利用を検討している研究者もいる。
私たちはどんな新しい役割やキャリアを持つことになるのだろうか?
AIが主流になるにつれ、私たちがまだ発明していない全く新しいキャリア分野が生まれる可能性がある。例えば、ChatGBT(原文ママ)のようなチャットボットを使ってみると、全く不正確な情報であっても、もっともらしい情報を大量に書き込めることがわかる。人間のファクトチェッカーと人間のソフトウェアテスターのチームを単に雇用するだけでなく、ソフトウェアテストにおける倫理の新たな役割もありそうだ。
有名な技術の中には、入力されたデータセットからバイアスを学習し、識別アルゴリズムを開発したものがある。例えば、有色人種に長い刑期を与える判決システム「コンパス」や、特定の人種にだけ有効な顔認識技術などだ。ソフトウェアテスターの役割には、このようなモデルのバイアスを理解し、システムが本番稼働する前に評価できるようになることが含まれる。
また、これとは逆に、AIの学習に影響を与えようとすることも、魅力的なキャリア分野と言えるだろう。例えば、デジタルマーケティングの分野では、チャットボットが検索エンジンの使用を部分的に置き換える可能性がある。チャットボットが1つのパラグラフで(潜在的に)正しい答えを教えてくれたり、読み上げてくれたりするのに、なぜ何ページものリンクをクリックして答えを探すのか?この場合、検索エンジン最適化(SEO)の分野は、チャットボット最適化(CBO)という新たな分野に取って代わられるかもしれない。Webサイトやその他の情報資源の所有者は、Web開発者が今日、検索エンジンにインデックスされやすいWebサイトを作ろうとするのと同じように、チャットボットがコンテンツをより消化しやすくすることを目指すだろう。
ChatGBT(原文ママ)はどのパラグラフを書いたのだろうか?
想像がついただろうか?正解は、"AIはコンピュータのハードウェアをどう変えるのか?"のセクションの最後の段落だ。
まとめ
結論として、2023年とその先の数年間は、ソフトウェアテスト業界に大なり小なり影響を与えるような大きな変化が訪れると考えられる。その結果、テストプロセスの改善、AIベースのセキュリティツールの活用、ビッグデータの知見を活用できるリスクベースドテストなどの手法の導入に、AIやMLをどのように活用できるかの調査を開始する必要があるのだ。