AIを利用したテスト工程の効率化
開発しているサービスやアプリケーションの品質を上げるためにはテストが欠かせません。しかし、多くのプロジェクトにおいてテスト工数を適切に確保するのは大変なことです。特にスマートフォンアプリのようにUI/UXが絡むものは、感覚的な要素まで含まれるためにテストが容易ではありません。
そこで今回はテストを楽にしてくれるソリューションをカテゴリーごとに紹介します。
テストの自動化
スマートフォンアプリのUIテストを行う際に広く採用されているのが、Appiumです。
UI要素を特定して入力操作などを行い、自動操作した結果の画面項目を確認してテストの可否を判定します。
しかし、Appiumが非常に便利なツールである一方で、テストの作成は煩雑で時間がかかることが問題です。初学者にとっては画面項目の確認が難しいだけでなく、ささいなUIの変更だけでテストが失敗する可能性があります。
そこで、AIを活用して画面項目の洗い出しをサポートし、さらにはマイナーなUIの変更を吸収するのが、MagicPodです。MagicPodの詳細については、私たちが以前に書いたレビュー記事をご覧ください。
テストコードの生成
UIよりも少しテストを書きやすいのがユニットテストです。
関数やクラスについてテストを書くことで、その動作を保証できるようになります。このユニットテストでは、良くあるコードを何度も書くことがあります。たとえばメールアドレスの入力チェックや、数字などのチェックです。
そうした時にGitHub Copilot Xが役立つと思われます。GitHub Copilot Xは、コードを選択してテストを生成してくれる機能をもち、GitHub Copilotのパワーアップ版サービスと言えます。これにより、時間と労力を大幅に節約することが可能となります
この機能を活用することで、関数やクラスのメソッドに対するテストコードの作成が効率化されます。手間を感じてしまうテスト作成作業を省き、テスト漏れの発生を防止することが可能になります。
セキュリティテスト
セキュリティに関しては、アプリケーションよりもサーバー側が重要である場合が多いです。AIを用いて攻撃者が模倣する可能性のあるネットワークアクセスを生成することが可能です。API定義ファイルを利用することで、不正なアクセスを偽装することができます。
さらに、既存のデータを分析することで、不正アクセスや疑わしいパターンの発見が可能になります。これは既にシステムが稼働している場合に特に有効ですが、これらの手法を組み合わせることで、よりセキュアな環境を実現することが可能となります。
パフォーマンステスト
パフォーマンステストでは、どの程度の負荷を、どれぐらい並列に実行するかが重要な課題となります。ここで機械学習を使用すると、実行するテストの数や規模を適切に見積もることができます。
特にアプリケーションの場合、多数の同時アクセスが予想されるため、テストの並列度を適切に設計することが必要です。さらに、ユーザビリティなどの非機能要件もパフォーマンステストに含まれるため、AIを用いて客観的な基準を定義することが推奨されます。
テストデータの生成
本番データベースにあるデータをテストに使ってしまって、情 報漏洩につながったという話は良くあります。反対に、全てのデータを手作業で生成することは、その規模が大きい場合には困難です。
このような場合、AIによるテストデータ生成が有用です。
MOSTLY AIは、提供されたサンプルデータに基づいてテストデータを生成します。
一方、DATPROFは、既存のデータをマスキングし、顧客データを保護しつつテストデータを生成します。
画像などを使用する場合には、実在しない人物の写真を生成するサービスの利用が推奨されます。これにより、不意の肖像権侵害を防ぐことが可能です。
まとめ
テストの重要性は認識しているものの、実際の工程では後回しにされがちです。十分なテスト工数が確保できるプロジェクトは少ないのが現状です。このため、テストプロセスの自動化は積極的に進めるべきです。
全てを完璧にするのではなく、まずは自動化が可能でかつ工数が多く必要となる部分から始めていきましょう。これによりプロジェクト全体の工数が削減され、開発に余裕が生まれることでしょう。