2016년 3월 22일 화요일

SW유지보수 기간 중 신뢰성 보장을 위한 회귀테스트(Regression Test)의 적용

운영 중인 소프트웨어는 기능 수정 및 오류 조치를 위해 유지보수를 하게 된다.
최종 개발 서비스 운영 중인 소프트웨어라고 할지라도 요구사항의 변경 및 사용자 만족도를 높이기 위해서는  SW 프로그램의 수정이 불가피하다.
그러나 이 수정에 따라 정상적으로 작동하던 서비스가 수정 패치 이후 정상 작동하지 않는 경우가 발생할 수 있는데, 이를 예방하기 위해 회귀테스트를 사용하게 된다. 또한, 대형 소프트웨어에 대해 전체 테스트를 반복하는 것은 시간과 금전적인 측면에서 상당한 부담일 수 밖에 없다. 이 경우에 있어서도 회귀 테스트는 수정이 의도하지 않은 결과를 초래하지 않는다는 것을 검증하기 위해 사용되게 되는데, 이는 SW프로그램의 유지보수에 있어서 매우 중요한 역할을 하게 된다.

SBI저축은행의 금융여신시스템 개발 및 관리 프로젝트를 맡고 있는 박주형 과장을 통해 수정에 따른 SW의 신뢰성을 높이기 위한 회귀테스트 방식과 기법들을 들어봤다.

< SBI저축은행 정보시스템실 박주형과장 >
1. 회귀테스트란?
2. 회귀테스트 진행 상의 애로사항
3. 효과적인 회귀테스트가 되기 위해 고려할 점

Q.  ‘회귀테스트’란 구체적으로 어떤 테스트 방식인가요?

 회귀 테스트는 “수정(Modification)이 기대하지 않은 결과를 발생시키지 않는다는 것을 증명하기 위한 시스템이나 컴포넌트에 대한 선택적 재테스트” [IEEE610.12-90] 라고 정의되어있습니다.
즉, SW의 수정된 모듈에 의해 정상적인 기능들이 문제가 있어서는 안된다는 겁니다.

저도 금융 전산 시스템을 관리하면서 수많은 현업의 요구사항의 변화와 지속적으로 발견되는 개선사항들로 인해 프로그램을 수시로 변경하고 있는데요. 신속한 요구사항을 반영을 원하는 환경에서 소수의 프로그램을 수정하고 retest All 하기는 사실상 어렵습니다. 관련성 있는 모듈과 이전 테스트 케이스를 활용하여 검증을 해야 하죠. 이럴 때 필요한 테스트 기법이 ‘회귀테스트’입니다.

Q.   회귀테스트는 어떤 방식으로 하는건가요?


간단히 말해서 오류를 발견하여 수정하고, 다시 원래 문제를 일으켰던 것을 테스트 확인하고, 수정한 부분이 계획했던 대로 수정되었는지 확인, 그리고 수정된 부분이 다른 부분에 영향을 주어 예상하지 않은 오류를 발생시키지 않는지 확인하는 절차를 거치게 됩니다.

<그림 1> 회귀테스트 진행 방식


첫째, 테스트 수행 전 확인 사항을 먼저 체크 합니다. (Smoke test를 함께 진행할 수도 있습니다.) 프로그램 변경 후 단위 기능 테스트의 수행이 완료 되어야 하고, 변경된 각 모듈의 통합 , 배포 수정까지 빌드를 실시합니다.

두 번째로, Test Case Library 같은 도구로 회귀 테스트를 진행합니다.
단위 기능 중심의 이전 기능과 통합 기능의 시나리오 기반의 테스트를 실시하고, 반복 및 제약 부하 환경에서의 성능 테스트를 실시합니다.

마지막으로, 결과 기록 및 사후 검증을 진행합니다.
테스트 수행 결과를 기록하고 성공 여부를 점검한 뒤, 테스트 성공 이후 기존 단위 테스트의 회귀 테스트를 Repository 에 저장합니다. 그리고 변경된 기능 및 시나리오를 감안한 테스트 절차를 최신화 실시(재사용) 합니다.

인터뷰 더 보기 >>>

댓글 없음 :

댓글 쓰기