Victor Ionascu氏によると、ソフトウェアテストの複雑さの増大に対応するため、QAプロフェッショナルがAIを活用する傾向が高まっている。AI駆動型自動化はテストカバレッジの向上、テストサイクルタイムの短縮、結果精度の向上を可能とし、より高品質なソフトウェアをより速くリリースできるようにする。
Victor Ionascu氏はQA Challenge AcceptedでソフトウェアテストにおけるAIの役割について語った。
現在の主な課題の1つは包括的なテストカバレッジを確保することだ、とIonascu氏は述べた。複雑なシステムを扱う場合、特に銀行や物流などのセキュアで多段階データトランザクションを扱う分野では全てのエッジケースを人力でカバーすることはほぼ不可能に近い。影響力あるワークフローの重要部分を見逃すリスクは複雑さが増すにつれ高まる。Ionascu氏が説明するようにその葛藤は時間的制約を損なうことなくカバレッジを確保することにある:
アプリケーションが複雑化するにつれ、コーナーケースを特定し、実行可能なテストケースに変換することはますます難しくなっています。これによりテストカバレッジにおける潜在的なギャップが生じ、見落とし問題につながる可能性があります。
自動化テストは価値があるものの、堅牢なテスト開発に必要な時間や、実世界の動的シナリオへの適応能力が限られているという課題に直面することが多い、とIonascu氏は言う。自動化テストの課題は、自動化フレームワークのセットアップやスクリプトの作成だけでなく、システムの成長に合わせてそれらを維持・進化させることでもある。
Ionascu氏は、実世界の動的シナリオに対応できる堅牢なテストを開発するのに必要な時間がテストにとって大きな問題であると述べた。多くの自動化テストは脆弱で、安定した環境ではうまく機能するが、予期せぬ変更やエッジケースに直面すると破綻する、と彼は付け加えた。
彼は日々の業務で人工知能を使って手動テストと自動化テストの両方を強化している。彼は例を挙げた:
私はAmazon CodeWhispererやChatGPTのようなAI駆動テスト生成ツールを使って自動化テストケースの作成を支援し、複雑なスクリプトを書く時間を短縮しています。これらのツールは、動的データの生成、エッジ・ケース・シナリオの作成、さらには私が見逃していたかもしれないセキュリティ脆弱性の提案もしてくれます。
AIツールは手動テストと自動化テストの両方のワークフローを強化することができる、とIonascu氏は言う。これらのツールはテストケースの生成やバグのトリアージなどの反復作業を自動化するのに役立ち、QAチームが探索的テストや品質戦略のようなより価値の高い活動に集中できるようにする、と彼は付け加えた。
自動化によって反復タスクがスピードアップする一方で、複雑なワークフローを処理するには、多くの場合、手作業による監視とメンテナンスが必要になる、特にテストスクリプトの初期開発段階で予測困難な可変条件が含まれる場合において、とIonascu氏は言った:
その価値にもかかわらず、テスト自動化は動的で複雑なシステムに対する特効薬ではありません。
InfoQはテスト自動化とソフトウェアテストにおけるAI利用について、Victor Ionascu氏にインタビューした。
InfoQ: 自動化されたソフトウェアテストでどのような課題に直面されましたか?
Victor Ionascu氏: 私たちのプロジェクトの一つで、銀行や政府機関など複数の組織間で安全なファイル転送を行うアプリケーションをテストする必要がありました。このフローには多層暗号化(AESとRSA)が含まれており、暗号化/復号化プロセス全体を検証する必要があります。最初のうち、標準的なシナリオに対して私たちが開発した自動化テストケースはうまく機能していました。私たちはこのようにフローをスクリプト化しました:
特定のアルゴリズムを使用してファイルを暗号化
中央システムに転送
受信側での復号化を確認
しかし、予期せぬネットワーク遅延や異なるファイル形式のような現実世界のシナリオが現れた時、自動化は失敗しました。テストはこのようなダイナミックな変化に対応できなかったため、頻繁に人間の介入やスクリプトの書き換え、調整を行う必要がありました。新しい暗号化アルゴリズムの導入や予期せぬデータ量の急増といった小さなシステム変更でさえ自動化テストは破綻しました。これは複雑で進化する環境に適応する上での現在の自動化ツールの限界を示すものでした。
InfoQ: ソフトウェアテスターとして日々の業務でAIをどのように活用されていますか?
Victor Ionascu氏: あるパフォーマンステストケースで、私たちは最大10,000人の同時ユーザーを処理するセキュアなファイル転送システムの負荷テストをシミュレートする必要がありました。当初はユーザーリクエスト用データを直接記載した静的テストスクリプトを書く手動プロセスで行いましたが、システム規模が拡大するにつれ非効率になりました。
CodeWhispererのようなAIツールを使うことでユーザー負荷を動的に生成できるようになった。AIは固定のユーザー負荷でテストする代わりに、スケーリング・メカニズムを実装することも提案した。これによりサーバーのパフォーマンスによりユーザー負荷を動的に調整できるようになり、ピーク負荷処理能力とレスポンスタイムの両方をより効果的に把握できるようになった。