AI migrated legacy COBOL programs to Java, bugs included
개요
레거시 COBOL 프로그램을 Java로 마이그레이션하는 과정에서 발생하는 버그를 해결하기 위한 새로운 에이전트 기반 테스트 합성 방법론인 "Locksmith Loop"가 제안되었습니다. 이 방법론은 테스트 데이터 부족과 모든 코너 케이스 검증의 어려움을 극복하는 데 중점을 둡니다.
주요 내용
- COBOL 소스 프로그램과 생성된 Java 타겟 프로그램을 각각 계측(instrumented)하여 독립적인 런타임 환경을 준비합니다.
- 에이전트 루프는 입력 모의(input mocks)에 대한 Witness Search를 수행하여 프로그램 분기를 탐색하고, 이후 패리티 보존적 변형(parity-preserving mutations)을 적용합니다.
- 탐색이 더 이상 진행되지 못하는 조건인 "Locked Paragraph"를 분석기가 식별하여 이를 해결합니다.
- 세 가지 COBOL-Java 사례 연구(오픈소스 2개, 실제 운영 환경과 유사한 COBOL 프로그램 1개, 430~4,114 라인)에서 Locksmith Loop는 기존의 입력 검색 방식으로는 도달하지 못한 높은 코드 커버리지를 달성했으며, 특히 오픈소스 프로그램에서는 거의 완벽한 커버리지를, 내부 프로그램에서는 91.90%의 브랜치 커버리지를 기록했습니다.
- 생성된 Java 코드는 결정론적 패리티 검사(deterministic parity checks)를 통해 COBOL 참조 코드와 모든 테스트 케이스에서 일치함을 확인했습니다.
시사점
본 연구는 에이전트 기반 코딩 결과물의 유효성을 결정론적 오라클을 사용하여 검증하는 새로운 접근 방식을 제시하며, 레거시 시스템 마이그레이션 프로젝트에서 코드 품질과 기능적 정확성을 보장하는 데 기여할 수 있습니다.
원문을 불러오는 중...
댓글
GitHub Discussions