단순히 API를 테스트하기 위해 RestAssured에서 끝없는 반복 코드 라인을 작성하는 데 지치셨다면 여러분은 혼자가 아닙니다. API 테스트는 까다롭게 느껴져서는 안 되지만, 현실을 직시하면 REST Assured는 프로세스를 지루하고 불필요하게 시간 소모적으로 만들 수 있습니다. 하지만 그 힘든 일을 뒤로 하고 떠날 수 있다면 어떨까요?
이 가이드에서는 API를 테스트하는 더 스마트한 제로 코드 방법인 Keploy로 전환하는 방법을 보여 드리겠습니다. API 테스트를 더 빠르고 쉽게, 감히 말하자면 재미있게 만들어 보겠습니다! 업그레이드할 준비가 되셨나요?
REST Assured는 RESTful 웹 서비스를 테스트하는 데 사용되는 인기 있는 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 설치: 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 테스트 사례 중 하나입니다. -
그러므로 다음을 실행하여 keploy 테스트 스위트를 실행해 보겠습니다. - keploy test -c "java -jar target/springbootapp-0.0.1-SNAPSHOT.jar" --delay 10: -
노이즈가 있어서 한 번의 테스트가 실패했고 keploy로 약 70.5%의 커버리지를 얻었습니다.
REST Assured에서 Keploy로 마이그레이션하면 제로 코드 테스트, 실시간 피드백, 간소화된 CI/CD 통합과 같은 다양한 이점이 제공되었습니다. 이 가이드에 설명된 단계를 따르면 API 테스트 요구 사항에 맞게 Keploy의 이점을 극대화하면서 원활한 전환을 보장할 수 있습니다.
Keploy를 채택함으로써 개발팀은 엔지니어링 노력을 줄이면서 고품질 소프트웨어를 제공하는 데 더 집중할 수 있으며 궁극적으로 생산성과 소프트웨어 품질이 향상됩니다.
CI/CD - https://keploy.io/docs/ci-cd/jenkins/
Cloud 평가판 다운로드 - https://keploy.io/docs/keploy-cloud/cloud-installation/
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3