피드로 돌아가기
Dev.toDevOps
원문 읽기
Glue Code 제거를 위한 JPMS 기반 Plugin 아키텍처의 테스트 프레임워크 설계
Azertio: API and Database Testing Without the Glue Code
AI 요약
Context
Cucumber와 RestAssured 조합의 BDD 테스트 시 Step Definition 클래스와 ScenarioContext 등 과도한 Glue Code 유지보수 비용 발생. 테스트 시나리오와 실제 구현 코드 간의 강한 결합도로 인해 팀별 중복 인프라 코드 생성 및 pom.xml 의존성 관리 복잡도 증가.
Technical Solution
- JPMS(Java Platform Module System) 기반의 Module Layer 설계를 통한 Plugin 격리 및 Classpath Pollution 방지
- Maven Central 기반 런타임 의존성 로드 방식을 도입하여 pom.xml 없는 YAML 설정 중심의 환경 구성
- Gherkin Parser, REST, DB 기능을 개별 Plugin으로 모듈화하여 필요한 기능만 동적으로 로드하는 구조 설계
- 변수 보간(Variable Interpolation) 기능을 1급 객체로 처리하여 Step 간 상태 전달을 위한 별도 Context 클래스 제거
- StepProvider 인터페이스와 @StepExpression 어노테이션을 통한 표준화된 커스텀 Plugin 확장 모델 제공
실천 포인트
1. 테스트 프레임워크 설계 시 비즈니스 로직과 테스트 인프라 코드를 분리하여 Glue Code 최소화 여부 검토
2. 라이브러리 간 버전 충돌 방지를 위해 JPMS와 같은 모듈 시스템을 통한 의존성 격리 적용 고려
3. 반복되는 테스트 스텝을 표준 Plugin으로 모듈화하여 조직 내 재사용성 확보 전략 수립