ソフトウェア開発の絶え間なく進化する世界において、高い製品品質とタイムリーな提供を確保するためには、テストプロセスを継続的に改善することが不可欠です。このブログでは、当社の品質保証(QA)チームがテスト戦略を最適化することで、クライアントへのチャットボットソリューションの提供をどのように改善したかを示すケーススタディを詳しく掘り下げます。自動化ソリューションの導入とAI技術の活用により、QAチームは効率性を向上させ、厳格な品質基準を維持しただけでなく、テスト作業の大幅な削減も達成しました。
プロジェクト概要
本プロジェクトの中心となるクライアントは、地方自治体や住民が効率的かつ効果的なコミュニケーションと市民の変化のために利用する、AI搭載チャットボットソリューションの主要プロバイダーです。その事業は、道路の陥没、交通信号、破損した舗装などの一般的な問題に関する住民からの苦情を処理するために、様々な郡や都市にチャットボットを展開することに焦点を当てています。この特定のプロジェクトは、自動ウェブチャット、テキストチャット、テキストアラートなどのAI機能を統合することにより、クライアントのチャットボットソリューションを実装し、強化することを目的としていました。
特定された課題
主な課題は、チャットボットの数が増加する中で、デプロイメントプロセスを合理化し、一貫した品質を確保することでした。当初、QAチームは新しいチャットボットの実装には手動テストに依存し、回帰テストには自動テストを予約していました。しかし、プロジェクトが進み、チャットボットの量が増加し、新しいチャットボットバージョンが展開されるにつれて、タイムリーな提供と高品質な結果の維持とのバランスを取ることがますます困難になりました。
これらの問題に対処するため、SourceFuse QAチームは潜在的なボトルネックの特定と分析を開始しました。その結果、再評価と戦略調整が必要な領域がいくつか見つかりました。それには以下が含まれます。
テストデータ設定の問題:
チャットボットテストのための現実的なユーザークエリを特定することの課題は、自動化フレームワーク上でのデータ設定の形式化に影響を与え、新しいチャットボットテストに影響を及ぼしました。クライアントは「pothole(陥没)」や「mosquitoes(蚊)」などの特定の課題に関連するキーワードのリストを提供しましたが、QAチームは多様なユーザークエリを生成するのに苦労しました。これは、ユーザーが要求を様々な方法で表現することが多く、効果的なテストデータの作成を複雑にしていたためです。
例えば、「pothole(陥没)」というキーワードに対する潜在的なクエリには、次のようなバリエーションが含まれる可能性があります。「 陥没の問題を報告したい 」、「 陥没 」、「 大きな陥没 」、「 道路の大きな陥没を報告する必要がある 」。チャットボットが認識する必要があるこれほど多くのバリエーションがあるため、有効な応答を提供するためには適切にテストする必要がありました。
QAチームは、郡のポータルで広範な調査を実施し、Google検索を行って住民の苦情をレビューし、以前のチャットボット構成からのテストデータを分析して、様々なユーザークエリを考案しました。この徹底したプロセスは、ユーザークエリを特定するために不可欠でしたが、同時に労働集約的であり、手動エラーが発生しやすいものでした。
テストケース作成:
QAチームは、各オンボーディングユーザーシナリオに対して数百ものテストケースを手動で作成することに課題を抱えていました。多くの場合、類似するケース間でのバリエーションは最小限でした。ほとんどのチャットボットは、チャットボットのタイトル、挨拶メッセージ、サービスリクエスト応答、クエリ応答、カラーコード、メッセージボタン機能、ハイパーリンク、多言語サポートなど、わずかなバリエーションのみで共通の機能実装を共有しています。様々なユーザークエリに対するチャットボットの応答を検証するためのテストケースも同様に反復的であり、異なるチャットボットの要件を満たすために特定の微調整が必要でした。
当初、QAチームはこれらのテストケースを新しいチャットボットの要件ごとに手動で調整または作成していました。しかし、この方法は反復的な性質のため、非効率的で時間のかかるものであることが判明しました。
類似テストケースの手動実行: 自動化フレームワークが導入されているにもかかわらず、反復的なテスト慣行は、特に手動実行のために非効率性をもたらしました。典型的なオンボーディングチケットの場合、クライアントは25〜40個のキーワードを提供し、それぞれが約10〜15個の関連クエリを生成しました。QAチームは従来のアプローチに従い、新しいチャットボットごとに約450〜500個のクエリを実行して、各チャットボットを手動で認定していました。
手動テストケースを正常に通過した後、彼らは自動化のための回帰スイートの準備に移行しました。このプロセスは時間と手間がかかり、非効率的であり、テスト作業を合理化するために自動化フレームワークを最適化する必要性を浮き彫りにしました。
自動化フレームワークの問題:
回帰テストのみに使用されていた自動化スイートは、実行に時間がかかり、時折不安定な結果を生成していたため、さらなる最適化が必要でした。
テストアプローチの変革
継続的な改善へのコミットメントの一環として、QAチームは以下の目標を掲げ、テスト戦略の改善に注力しました。
- テスト作業の削減:手動および自動テストプロセスの両方を合理化し、高品質を維持しながら作業を最小限に抑える。
- 品質の維持:テスト作業の削減にもかかわらず、厳格な品質基準が維持されることを保証する。
- 効率と有効性の向上:テスト全体の効率と有効性を高める実践を導入する。
これらの目標を達成し、特定された課題に対処するため、SourceFuse QAチームは刷新されたテストアプローチを開発しました。
類似テストケース用テストケースレプリケーター:
- チームはExcelでテストケースレプリケーターツールを実装しました。これは、保存されたテンプレート値に基づいて、様々なチャットボットの応答やその他の共通機能を検証するための類似テストケースをワンクリックで効率的に作成するものです。このツールにより、類似テストケースの生成にかかる手動作業が大幅に削減されました。
- このビデオでは、テストレプリケーターツールが、シンプルな変数とテンプレートを使用して、類似テストケースをいかに効率的に生成したかを示しています。
改善されたテストデータ:
- テストデータに関連する主要な問題を解決し、自動化フレームワークを強化するため、QAチームはチャットボット機能の徹底的な分析を実施しました。クライアントと協力して、重要なキーワードのリストをまとめ、ChatGPTを活用して多様なユーザークエリを生成しました。このアプローチにより、チームはエンドユーザーがチャットボットに問い合わせる様々な方法を表現できるようになり、堅牢なテストデータシートの形式化にさらに役立ちました。
- このビデオは、クライアントがチャットボットの応答のために「Pothole(陥没)」、「Missed Trash Pickup(ゴミ収集漏れ)」、「Dead Animal Pickup(死骸回収)」のようなキーワードをどのように提供したかを説明しています。そしてQAチームは、これらのキーワードの組み合わせに基づいて、ChatGPTとGemini AIを使用して関連するテストデータを生成しました。
自動化スイートの効果的な活用:
QAチームは、改善されたテストデータシートとテストケースレプリケーターツールを使用して、新しいチャットボットを自動化経由で直接テストできるよう、自動化フレームワークを強化しました。テストデータシートは、新しいボットの開発段階でChatGPTの助けを借りて準備されました。強化されたフレームワークは、テストレプリケーターツールを使用してテストケースを迅速に作成し、これらのデータシートを活用して、いくつかの設定変更を行うことで、新しくデプロイされたボットを即座にテストしました。 ボット開発期間をテストケースとそのデータの準備に活用し、このデータを使用して自動化経由でボットを直接テストすることで、効率が向上し、実行時間が短縮されました。
- 並行実行:QAチームは、反復的なタスクには自動化を活用し、より複雑なシナリオには手動テストを実施しました。
- 自動化テスト:テストケースレプリケーターツールとテストデータシートは、確定されたキーワードに関連する様々な発話、多言語シナリオ、およびネガティブ検証におけるチャットボット応答のカバレッジに焦点を当てました。
- 手動テスト:UI検証(チャットボットログ、カラーコード、メッセージアバター、オーディオジャック)、ハッピーパスシナリオ、および複雑なケースなど、必須のテストケースに限定されました。
自動化スクリプトの最適化:
- コードのリファクタリング:長期にわたる問題に対処するため、自動化チームはスクリプトの堅牢性を高め、信頼性の高い結果を生成するためにコードをリファクタリングしました。
- 回帰テストの削減:回帰テストの範囲を最適化し、冗長なチェックを排除することで、自動化スクリプトの実行時間を短縮しました。
- Jenkins構成:Jenkinsを最適化されたローカル実行用に構成し、それによって他のタスクのためにローカルリソースを解放しました。
達成された結果
- デリバリー指標と速度の向上:
チームは新しいオンボーディングユーザーシナリオの認定プロセスを合理化し、新しいチャットボットの検証時間を3〜4営業日からわずか1.5〜2営業日に短縮しました。これにより、ビジネス向け新しいチャットボットの展開が大幅に加速され、QAチームはスプリントあたりの出力デリバリーを3〜4チャットボットから最大6〜8チャットボットに増加させ、クライアントへのデリバリーを強化しました。さらに、チームのユーザーシナリオの取得と提供能力が倍増し、新規およびレガシーチャットボットテストの両方をより効率的に管理できるようになりました。
- クライアントの信頼向上:
以前はレガシーV1作業のみに焦点を当てていたため、チームは新しいV2チャットボットバージョンでの進展に苦労していました。しかし、テストケースレプリケーターツールの導入、テストデータテンプレートの活用、自動化フレームワークの改善により、手動作業が50%削減されました。これにより、チームは追加の新しいチャットボットバージョン(V2)テストを引き受けることができ、最終的にクライアントの信頼をより高めることができました。
- クエリ解決指標の改善:
クライアントとの緊密な連携と、最初からエンドユーザーのクエリを形式化することで、チームは以前の曖昧なチャットボットアンケートから生じる問題を効果的に最小限に抑えました。この積極的なアプローチは、クライアントの懸念を軽減しただけでなく、チームがユーザーのクエリにより迅速に対処することを可能にしました。
- 欠陥検出と解決の改善:
自動化フレームワークを使用した早期テストの再定義されたアプローチを採用し、手動テストと自動化テストを並行して使用することで、チームは欠陥検出を大幅に改善しました。自動化スイートは現在、応答の不正確さなどの問題をわずか1〜2時間以内に特定できるようになり、検出に最大2日、解決にもう1日かかっていた以前のプロセスからの大きな改善です。この変化により、ソフトウェア全体の品質が著しく向上しました。
- 時間節約とリソース効率:
自動化スクリプトのリファクタリングにより、自動化スクリプト全体の実行時間が50%削減されました。また、自動化によるテストカバレッジの増加により、テストリソースは探索的テストと複雑なシナリオへの対応に重点を置くように再配分され、テスト全体の有効性が向上しました。
- テストプラクティスの強化:
テストデータ設定とテストケース管理におけるQAプロセスの改善により、より構造化されたテストプラクティスが確立され、テスト全体の成果が向上しました。
結論
本プロジェクト全体でのテストアプローチの戦略的な見直しにより、高品質を維持しながらテスト作業の大幅な削減が実現しました。適切なツールを採用し、その使用を最適化することで、プロジェクトは効率と生産性の両方で大きな成果を達成しました。このケーススタディは、継続的な改善を確保し、ソフトウェア品質を維持するために、テスト戦略を継続的に評価し、適応させることの重要性を強調しています。