[論文レビュー] Morest: Model-based RESTful API Testing with Execution Feedback
Morest は、実行フィードバックを統合することで動的に更新される RESTful サービスプロパティグラフ (RPG) を用いてテスト生成をガイドする、RESTful API のモデルベースのブラックボックステリング手法である。RPG に実行フィードバックを統合することで、Morest はコールシーケンス生成を改善し、最先端の手法と比較して 152.66%〜232.45% の API 操作を追加で実行し、26.16%〜103.24% のコードカバレッジ向上、40.64%〜215.94% のバグ検出増加を達成した。
RESTful APIs are arguably the most popular endpoints for accessing Web services. Blackbox testing is one of the emerging techniques for ensuring the reliability of RESTful APIs. The major challenge in testing RESTful APIs is the need for correct sequences of API operation calls for in-depth testing. To build meaningful operation call sequences, researchers have proposed techniques to learn and utilize the API dependencies based on OpenAPI specifications. However, these techniques either lack the overall awareness of how all the APIs are connected or the flexibility of adaptively fixing the learned knowledge. In this paper, we propose Morest, a model-based RESTful API testing technique that builds and maintains a dynamically updating RESTful-service Property Graph (RPG) to model the behaviors of RESTful-services and guide the call sequence generation. We empirically evaluated Morest and the results demonstrate that Morest can successfully request an average of 152.66%-232.45% more API operations, cover 26.16%-103.24% more lines of code, and detect 40.64%-215.94% more bugs than state-of-the-art techniques. In total, we applied Morest to 6 real-world projects and found 44 bugs (13 of them cannot be detected by existing approaches). Specifically, 2 of the confirmed bugs are from Bitbucket, a famous code management service with more than 6 million users.
研究の動機と目的
- ブラックボックステスティングにおける RESTful サービスの正しい、意味のある API コールシーケンスの生成という課題に対処すること。
- Restler や Resttestgen のような既存手法の限界(例えば、グローバルな依存関係の認識不足、静的仕様への過剰依存)を克服し、動的モデルの精錬を可能にすること。
- 高レベルのモデルガイドラインと実際の API 実行からの適応的フィードバックを組み合わせることで、テストの有効性を向上させること。
- 実世界の RESTful サービスにおいて、より包括的なコードカバレッジと高いバグ検出率を達成すること。
- ソースコードやインストルメンテーションの必要なしに、実用的でスケーラブルな生産環境向けウェブサービスのテストを可能にすること。
提案手法
- Morest は OpenAPI 仕様から RESTful サービスプロパティグラフ (RPG) を構築し、スキーマとオペレーションレベルの依存関係をエンコードする。
- RPG では API オペレーションをノードとして、プロダーコンシューマーなどの依存関係をエッジとしてモデル化し、構造的なコールシーケンス生成を可能にする。
- Morest は RPG 上でのグラフ走査を用いて、有効で意味的に正しい API コールシーケンスを生成する。
- 実際の API コールからの実行フィードバックを用いて、テスト中に RPG を動的に精錬・更新し、不完全または誤った仕様による不正確さを是正する。
- フィードバックを統合することで、テスト生成の優先順位を設定・適応させ、時間の経過とともにカバレッジと障害検出能力を向上させる。
- Morest はモデルベースのガイドラインとフィードバック駆動の適応を組み合わせ、トップダウンの構造とボトムアップの柔軟性のバランスを実現する。
実験結果
リサーチクエスチョン
- RQ1動的に更新されるモデルは、静的または完全にヒューリスティックな手法と比較して、ブラックボックステスティングにおける RESTful API の有効性を向上させることができるか?
- RQ2実行フィードバックは、OpenAPI 仕様の不正確さを是正するためにどの程度モデルを精錬できるか?
- RQ3API 操作カバレッジと障害検出の観点で、Morest のアプローチは最先端の手法と比べてどの程度優れているか?
- RQ4Morest は、既存のツールが見逃していたバグ、特に実世界の生産環境サービスにおいて検出できるか?
- RQ5フィードバックをプロパティグラフモデルに統合することで、より効率的かつ効果的なテスト生成が可能になるか?
主な発見
- Morest は、最先端の手法と比較して、平均して 152.66%〜232.45% の追加 API 操作を実行した。
- 評価されたサービス全体で、既存の手法と比較して 26.16%〜103.24% の高いコードカバレッジを達成した。
- ベースラインツールと比較して、40.64%〜215.94% のバグを多く検出しており、その中には 13 つの以前に発見されていなかったバグも含まれていた。
- 合計で 6 つの実世界プロジェクトにおいて 44 個のバグが発見され、その中には広く使われているコード管理サービスである Bitbucket に 2 つの確認済み深刻なバグも含まれていた。
- 動的なフィードバックメカニズムにより、特に OpenAPI 仕様が不十分に書かれたサービスにおいて、モデルの正確性とテストの有効性が顕著に向上した。
- Morest は、下位から構築する Restler や、上位から設計する Resttestgen と比較して、高レベルのガイドラインと実行結果からの適応的学習を組み合わせることで、優れた性能を発揮した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。