」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 想要從 REST Assured 遷移到 Keploy?

想要從 REST Assured 遷移到 Keploy?

發佈於2024-11-03
瀏覽:527

Looking to migrate from REST Assured to Keploy?

如果您厌倦了在 RestAssured 中编写无数行重复代码只是为了测试您的 API,那么您并不孤单。 API 测试不应该感觉像是拔牙,但让我们面对现实 — REST Assured 会让这个过程变得无聊并且不必要地耗时。但如果你能把那些苦差事抛在脑后呢?

在本指南中,我们将向您展示如何切换到 Keploy,这是一种更智能的零代码测试 API 的方法。让我们让您的 API 测试更快、更轻松,而且,我们敢说,还很有趣!准备好升级了吗?

放心休息概述

REST Assured 是一个流行的 Java 库,用于测试 RESTful Web 服务。它提供了用于编写测试的领域特定语言 (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 中手动编写的测试相比,它有助于确保更广泛、更现实的测试覆盖范围。

从 REST Assured 迁移到 Keploy 的步骤

我们将使用 Java 运行一个简单的员工经理应用程序,并使用 Postgres 作为本指南的数据库。

第 1 步:评估您当前的测试套件

迁移之前,对您现有的 RestAssured 测试套件进行全面评估:

  • 识别现有测试用例:记录所有现有测试用例及其功能。

  • 注意依赖关系:确定可能影响迁移过程的任何依赖关系。

让我们运行测试用例并检查一切是否正常

mvn test

我们将观察到我们所有的测试用例都已通过,并且由于我们安装了jacoco,我们还可以找出覆盖率。

Looking to migrate from REST Assured to Keploy?

我们的测试套件覆盖率约为 68%。

Looking to migrate from REST Assured to Keploy?

让我们继续设置 keploy 和我们的迁移流程。

第 2 步:在您的环境中设置 Keploy

  1. 安装 Keploy:您可以按照 Keploy GitHub 存储库上的安装说明来设置 Keploy。

  2. 您可以通过在终端上运行命令 Keploy 来验证安装,我们应该能够看到以下输出:

    Looking to migrate from REST Assured to Keploy?

步骤 3:迁移测试用例

让我们开始迁移现有的 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 时创建新的测试套件。

  1. 让我们通过运行 mvn clean install -Dmaven.test.skip=true 为我们的应用程序创建一个 jar 文件。

    Looking to migrate from REST Assured to Keploy?

  2. Jar 文件准备好后,让我们以记录模式启动 keploy 来捕获测试用例。现在是时候使用 docker-compose up postgres 启动并运行我们的数据库了:-

    Looking to migrate from REST Assured to Keploy?

  3. 在新终端上,运行 keploy record -c "java -jar target/springbootapp-0.0.1-SNAPSHOT.jar": -

    Looking to migrate from REST Assured to Keploy?

  4. 现在,我们已准备好一切并准备好迁移我们的测试套件。是时候运行我们现有的 REST Assured 测试套件了。此执行将允许 Keploy 捕获 API 请求和响应。

    Looking to migrate from REST Assured to Keploy?

    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);
    }

第 4 步:后续步骤

我们已成功将 REST Assured 测试用例迁移到 keploy 测试套件。以下是此类 keploy 测试用例之一:-

Looking to migrate from REST Assured to Keploy?

因此,让我们通过运行 - keploy test -c "java -jar target/springbootapp-0.0.1-SNAPSHOT.jar" --delay 10: -

来运行我们的 keploy 测试套件

Looking to migrate from REST Assured to Keploy?

由于我们有噪音,这就是一次测试失败的原因,我们使用 keploy 获得了大约 70.5% 的覆盖率。

结论

从 REST Assured 迁移到 Keploy 提供了各种优势,例如零代码测试、实时反馈和简化的 CI/CD 集成。通过遵循本指南中概述的步骤,您可以确保平稳过渡,同时最大限度地发挥 Keploy 的优势来满足您的 API 测试需求。

通过采用 Keploy,您的开发团队可以更加专注于交付高质量的软件,同时减少工程工作量,最终提高生产力和软件质量。

参考:

  1. CI/CD - https://keploy.io/docs/ci-cd/jenkins/

  2. 获取云试用版 - https://keploy.io/docs/keploy-cloud/cloud-installation/

版本聲明 本文轉載於:https://dev.to/keploy/looking-to-migrate-from-rest-assured-to-keploy-l31?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3