brunch

You can make anything
by writing

C.S.Lewis

by 이지원 Oct 01. 2022

05화 Test Levels 단위-통합-시스템-인수

소프트웨어 테스팅

테스트 레벨에 대해 알아보겠습니다. 소프트웨어 개발 수명 주기에서 폭포수 모델의 확장 형태인 V 모델에 대해 알아보았습니다. V 모델은 개발 주기의 모든 단계에 대응하는 단위, 통합, 시스템, 인수 테스트 단계가 있는 것이 큰 특징인데요. 4가지 주요 테스트 레벨을 살펴보겠습니다.



단위 테스팅(Unit Testing)

소스 코드의 특정 모듈이 정확히 작동하는지 검증하는 레벨입니다. 함수와 메소드에 대한 테스트 케이스를 작성하고 실행합니다. 단위 테스팅은 프로그램을 작은 단위로 쪼개어 각 단위가 정확히 동작하는지 검증하고 이를 통해 문제가 발견되면 UI 테스트 전에 코드 레벨에서 수정이 가능합니다.



따라서 UI 테스트 전에 이러한 절차를 거친다면 초기에는 개발 비용이 높아지겠지만 개발 기간 중 대부분을 차지하는 디버깅 시간을 전체적으로 단축시킬 수 있어서 중요한 테스트 레벨 중 하나입니다.



통합 테스팅(Integration Testing)

통합 테스팅은 단위 테스팅이 끝난 항목들을 통합해가며 검증하는 방식입니다. 앞서 단위 테스팅이 끝난 모듈이 여러 개 있다면 그것들을 좀 더 큰 단위의 집합으로 통합 구성 후 검증하게 됩니다. 기능과 요구사항이 의도한 대로 잘 구현되고 있는지를 검증하는 것이 목적입니다.



실무를 하다 보면 예정된 업데이트 스펙 중에 일부분만 반영된 빌드를 전달받아 테스트 진행하는 경우가 있습니다. 전체 업데이트 기능이 10개라 가정하면 그중 2~3개 정도 완료되는 시점에 빌드에 반영시켜 기획 의도와 기능 동작에 문제가 없는지 검증합니다.



시스템 테스팅(System Testing)

일반적으로 시스템 테스팅부터 회귀(리그레션) 테스트가 진행됩니다. 통합 테스팅에서도 회귀 테스트가 가능하지만 비효율적입니다. 속된 말로 했던 거 또 하는 상황이 펼쳐집니다. 또한 개발자 입장에서는 아직까지 보완해야 할 로직이 있을 수 있습니다. 이러한 이유로 통합 테스팅부터 회귀 테스팅을 진행하면 BTS 버그 분포의 신뢰도가 낮아집니다. 시스템 테스팅 레벨부터 회귀 검증을 진행하는 것이 전체 테스트 비용을 줄일 수 있다 생각합니다. 테스트 비용에는 테스트 실행 비용뿐 아니라 커뮤니케이션 및 버그 추적 관리 등의 리소스도 포함되기 때문입니다.



단위와 통합 테스팅이 구현 예정인 기능에 대해 일부분 혹은 추가 및 변경될 기능만 검증했다면 시스템 테스팅은 새롭게 추가되는 기능뿐 아니라 기존에 있던 기능들 모두 검증하게 됩니다. 통합된 각 모듈들이 기존에 잘 동작 중인 기능들과 문제가 없는지, 의도한 대로 동작하는지, 요구사항 어긋나는 실제 결과는 없는지 등을 검증합니다. 즉 본격적인 테스트가 진행되는 시기이고, 가능한 많은 수의 버그를 찾고자 노력하는 시기입니다.



시스템 테스팅에서 중요한 것은 테스트 환경을 실제 환경과 유사한 환경에서 진행하는 것입니다. 와이파이에서도 테스트를 해봐야 할 것이고 LTE에서도 테스트가 필요합니다. 특정 기기 점유율이 높다면 해당 기기를 사용하는 고객을 위해 중점적으로 테스트되어야 합니다. 상황에 따라 기능 테스트뿐 아니라 비기능 테스트도 진행됩니다.



인수 테스팅(Acceptance Testing)

출시 전 제품에 대한 확신을 가지는 시점입니다. 시스템 테스트와 유사해 보이지만 그렇지 않습니다. 시스템 테스팅은 가능한 한 많은 버그를 찾으려 노력했다면 인수 테스팅은 소프트웨어가 요구사항대로 올바르게 작동하는지 한번 더 확인하여 품질에 확신을 가지는 시기입니다.



만약 해당 기간이 다가왔음에도 불구하고 메이저 이상의 크리티컬 한 버그가 남아있다면 유관부서와 협의하여 업데이트 스펙에서 제외 후 '다음 차수 수정할 것인지, 운영(OP) 환경에서 버그 발생 리스크가 높다 하더라도 감안하고 출시할 것인지', 등의 협의를 거치는 단계입니다.



시간적으로 여유롭다면 BTS 분석을 통해 심각도와 우선순위별로 Close 된 이슈들에 대한 사이드 이펙트를 최종적으로 체크하면 좋습니다. 만약 놓친 부분이 있다면 시스템 테스팅 레벨에서 발견될 수 있도록 테스트 케이스 업데이트가 필요합니다. 또한 탐색적 테스팅처럼 테스트 케이스로 발견하기 어려운 버그를 조기에 발견할 수 있도록 경험 기반 기법과 방법론을 테스트 프로세스에 도입하여 테스트 활동에 대한 보완이 필요합니다.

매거진의 이전글 04화 Test Process 분석-디자인-실행-완료
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari