API をテストするためだけに RestAssured で無限の繰り返しコードを記述することにうんざりしているのは、あなただけではありません。 API テストは面倒に感じるべきではありませんが、REST Assured を使用するとプロセスが退屈で不必要に時間がかかる可能性があることを認めましょう。でも、その苦労を忘れることができたらどうなるでしょうか?
このガイドでは、API をテストするためのよりスマートなゼロコード方法である Keploy に切り替える方法を説明します。 API テストをより速く、より簡単に、そしてあえて言えば楽しいものにしましょう。アップグレードの準備はできましたか?
REST Assured は、RESTful Web サービスのテストに使用される人気のある Java ライブラリです。テストを作成するためのドメイン固有言語 (DSL) を提供し、開発者が API からの応答を効果的に検証できるようにします。次のような機能があります:
JUnit や TestNG などのテスト フレームワークとの簡単な統合。
さまざまな HTTP メソッド (GET、POST、PUT、DELETE) のサポート。
しかし、API がより複雑になり、テストの要求が増えると、REST Assured に依存することが非常に困難になる可能性があります。正直に言います:
手動でのテスト作成は繰り返しが多く、時間がかかります。
テスト メンテナンスは、特に API が進化すると悪夢です。
カバレッジレポートは組み込まれていないため、Jacoco.
複雑なセットアップは開発時間を食いつぶし、エンジニアの集中力を主要なタスクから逸らします。
ここで、Keploy が介入します。Keploy はテスト プロセスを自動化し、エンジニアリングの労力を少なくとも 20% 削減し、チームは高品質のソフトウェアの提供という重要なことに集中できるようになります。
Keploy は、API インタラクションをキャプチャして後で再生することで API テストを自動化するように設計されたオープンソース ツールです。その主な機能には次のようなものがあります:
データ モッキングの自動生成: Keploy は、マイクロサービスやデータベースなどのさまざまな依存関係との対話に基づいてモックを自動的に生成できるため、手動でモックを作成する必要性が減ります。
低コストの実行: Keploy は、専用の複雑なテスト環境のセットアップを必要としません。これにより、並列環境の管理におけるオーバーヘッドが軽減され、インフラストラクチャに関連するコストが削減されます。
ゼロコード テスト: 開発者がすべてのテストを手動で記述する必要がある RestAssured とは異なり、Keploy は API インタラクションをキャプチャしてテストを自動的に生成することにより、ゼロコード アプローチを提供します。
簡単な統合: CI/CD パイプラインや、JUnit、TestNG、GitHub Action などの他のテスト ツールと適切に統合します。
包括的なテスト カバレッジ: Keploy は、エッジ ケースを含む現実世界の API インタラクションをキャプチャするため、RestAssured で手動で作成されたテストと比較して、より広範で現実的なテスト カバレッジを確保するのに役立ちます。
このガイドでは、Postgres をデータベースとして使用し、Java で単純な従業員管理アプリケーションを実行します。
移行する前に、既存の RestAssured テスト スイートの包括的な評価を実施してください:
既存のテスト ケースの特定: 既存のテスト ケースとその機能をすべて文書化します。
依存関係に注意してください: 移行プロセスに影響を与える可能性のある依存関係を特定します。
テストケースを実行して、すべてが正常に動作しているかどうかを確認してみましょう
mvn test
すべてのテスト ケースが合格したことを確認します。jacoco がインストールされているので、カバレッジも確認できます。
テスト スイートは約 68% をカバーしています。
ケプロイと移行プロセスのセットアップに進みましょう。
Keploy のインストール: Keploy GitHub リポジトリのインストール手順に従って、Keploy をセットアップできます。
ターミナルでコマンド Keploy を実行することでインストールを確認できます。以下の出力が表示されるはずです。
既存の REST Assured テスト ケースを移行するプロセスを開始しましょう。
@BeforeEach public void setUp() { RestAssured.baseURI = "http://localhost"; RestAssured.port = 8080; // Clean up repository to ensure fresh data for each test employeeRepository.deleteAll(); // Create and save test employee testEmployee = new Employee(); testEmployee.setFirstName("John"); testEmployee.setLastName("Doe"); testEmployee.setEmail("[email protected]"); employeeRepository.save(testEmployee); // save to generate ID }
アプリケーションはポート 8080 でローカルに実行されるため、RestAssured.port も 8080 で実行されるように構成しました。これにより、Keploy が API インタラクションをキャプチャし、REST Assured TestSuite の実行時に新しいテスト スイートを作成できるようになります。
mvn clean install -Dmaven.test.skip=true.
を実行して、アプリケーションの jar ファイルを作成しましょう。Jar ファイルの準備ができたら、記録モードで keploy を開始してテスト ケースをキャプチャしましょう。ここで、docker-compose up postgres を使用してデータベースを起動して実行します: -
新しいターミナルで、keploy Record -c "java -jar target/springbootapp-0.0.1-SNAPSHOT.jar": -
を実行してみましょう。これで、テスト スイートを移行するための準備とセットアップがすべて完了しました。既存の REST Assured テスト スイートを実行します。この実行により、Keploy は API リクエストとレスポンスをキャプチャできるようになります。
keploy によって生成された各テスト ケースは REST Assured テスト ケースです: -
@Test public void testGetEmployeeById() { get("/api/employees/" testEmployee.getId()) .then() .statusCode(200) .body("id", equalTo((int) testEmployee.getId())) // Ensure correct ID .body("firstName", equalTo("John")) .body("lastName", equalTo("Doe")) .body("email", equalTo("[email protected]")); } @Test public void testUpdateEmployee() { String updatedEmployeeJson = "{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"email\":\"[email protected]\"}"; given() .contentType(ContentType.JSON) .body(updatedEmployeeJson) .when() .put("/api/employees/" testEmployee.getId()) .then() .statusCode(200) .body("firstName", equalTo("Jane")) .body("lastName", equalTo("Doe")) .body("email", equalTo("[email protected]")); } @Test public void testDeleteEmployee() { delete("/api/employees/" testEmployee.getId()) .then() .statusCode(200); // Verify that employee no longer exists get("/api/employees/" testEmployee.getId()) .then() .statusCode(404); }
REST Assured テスト ケースを keploy テスト スイートに正常に移行しました。以下は、そのような keploy テスト ケースの 1 つです: -
それでは、-keploy test -c "java -jar target/springbootapp-0.0.1-SNAPSHOT.jar" --lay 10: -
を実行して、keploy テスト スイートを実行しましょう。ノイズがあるため、1 つのテストが失敗しましたが、keploy では約 70.5% のカバレッジが得られました。
REST Assured から Keploy への移行により、ゼロコード テスト、リアルタイム フィードバック、合理化された CI/CD 統合など、さまざまな利点が得られました。このガイドで概説されている手順に従うことで、API テストのニーズに対して Keploy の利点を最大限に活用しながら、スムーズな移行を確保できます。
Keploy を採用することで、開発チームはエンジニアリングの労力を削減して高品質のソフトウェアを提供することにさらに集中でき、最終的には生産性とソフトウェアの品質の向上につながります。
参考文献:免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3