|
2. 커버리지 분석과 코드 인스펙션이란 무엇인지 각각 설명하고, 교재에서 소개한 CI 도구 9가지를 작성하고 각각 내용을 설명하시오. 또한 학습자가 생각하는 CI의 장점은 무엇인지 한 가지 작성하고 내용을 설명하시오.
1. 커버리지 분석에 대해 설명하시오.
- 커버리지 분석은 테스트의 대상 주엥 테스트에 해당하는 부분 중에 어느 부분이 테스트가 수행되었는지를 체크하는 과정이다. 개발 과정에서의 테스트 커버리지 분석은 일반적으로 코드 커버리지로 분석한다. 코드 커버리지란 테스트가 전체 소스 코드 중 어느 부분을 수행했는지를 검토하는 것이다. 코드 커버리지를 측정할 때 가장 중요한 것은 목표 커버리지율을 결정하는 것이다. 코드 100%를 테스트하는 것이 좋겠지만, Exception, If 문에 대해서 100% 테스트가 불가능하다. 또한, Setter와 Getter만 있는 ValueObject의 경우 테스트를 작성하기도 쉽게 테스트 자체가 의미가 없나 커버리지율은 많이 올릴 수 있다. 만약 커버리지율을 강제적으로 높이고자 하면 개발팀에서 VO 등 테스트가 필요하지 않고 테스트가 쉬운 곳에만 테스트를 집중할 수 있기 때문에 컴포넌트의 우선순위를 정해서 중요한 컴포넌트에 대해서 커버리지를 관리하는 것이 필요하다. 커버리지율을 잘 만든 테스트라도 50~70% 내외이고, 고 가용성 시스템도 80%를 넘기기 어려우므로 컴포넌터의 중요도별로 목표 커버리지율을 융통성이 있게 결정하는 것이 필요하다. 대표적인 오픈소스 도구로는 EMMA와 Cobertura 등이 있고, 상용도구로는 아틀란시아안사의 Clover 등이 있다.
2. 코드 인스펙션에 대해 설명하시오.
- 코드 인스펙션이란 완성된 코드에 대한 검토를 통해서 코드 상에 존재하는 잠재적인 문제를 발견하는 과정이다. 흔히 '정적 분석' 이라는 이름으로도 불리는데, 이 과정에서 Deadlock에 대한 검출, Lock Contention과 같은 병목 구간에 대한 검출, Memory Leak이나 Connection Leak과 같은 자원 누수에 대한 검출과 코딩 스타일(변수명이나 메서드명 규칙 등)에 대한 가이드를 수행한다. 보통 이런 도구들은 규칙 세트를 추가하여 Inspection을 각 팀의 스타일에 맞춰서 커스터마이징할 수 있으며 대표적인 오픈소스 도구로는 PMD, FindBugs 등이 있다.
3. 교재에서 소개한 CI 도구 9가지를 작성하고 각각 내용을 설명하시오.
- 체크아웃, 컴파일, 배포, 테스트 수행, 커버리지 분석, 코드 인스펙션, 소스 태깅, 릴리즈(옵셥), 결과 분석
1) 체크 아웃 : CI 도구는 정해진 시간이나 소스가 커밋이 되었을 때 등 정책에 따라서 빌드를 시작한다. 먼저 소스 코드를 체크 아웃 받는다.
2) 컴파일 : 체크아웃 반은 코드에 내장된 빌드 스크립트를 기동하여 컴파일을 수행한다.
3) 배포 : 컴파일이 완료된 코드를 테스트 서버에 배포한다.
4) 테스트 수행 : 체크아웃 받은 코드 내에 있는 테스트 코드들을 수행하고 리포팅을 한다.
5) 커버리지 분석 : 테스트 과정 중에 코드 커버리지를 수행한다.
6) 코드 인스펙션 : 다음으로 코드 인스펙션을 수행하고 리포트를 생성한다.
7) 소스 태깅 : 1)~6) 과정이 정상적으로 수행되었을 때, 현재 소스 관리 시스템에 저장된 버전을 안정적인 버전으로 판단하고 소스 관리 시스템에 현재 버전에 대한 이미지를 저장하기 위해 태깅(Tagging)을 수행하여 혀냊 버전을 저장해놓는다.
8) 릴리즈(옵션) : 만약에 빌드나 테스트가 실패하였을 때는 이전에 성공한 빌드 버전으로 소스를 롤백하고, 실패의 원인을 파악한 후에 다시 커밋한다.
9) 결과 분석 : 빌드와 테스트가 완료된 후에 테스트 결과를 통해서 문제가 있는 테스트를 개발자가 수정하도록 하고, 코드 인스팩션 결과를 PM이 검토하여 담당 개발자가 수정하도록 한다. 다음으로, 커버리지 분석 결과를 통해서 테스트가 부족한 부분은 PM이 담당 개발자에게 지시하여 테스트를 보강하도록 한다.
4. 학습자가 생각하는 CI의 장점은 무엇인지 한가지 작성하고 내용을 설명하시오.
내가 생각하는 CI의 장점은 자동화된 빌드를 꼽을 수 있다. 정기적으로 자동 빌드 스크립트를 통해 이해관계자가 협의한 일정에 자동 빌드, 메일 안내가 장점이다.
1. 커버리지 분석에 대해 설명하시오.
: 커버리지 분석은 테스트의 대상 중, 테스트에 해당하는 부분 중에 어느 부분이 테스트가 수행되었는지를 체크하는 과정이다. 개발 과정에서의 테스트 커버리지 분석은 일반적으로 코드 커버리지로 분석한다. 코드 커버리지란 테스트가 전체 소스 코드 중 어느 부분을 수행했는지를 검토하는 것이다.
코드 커버리지를 측정할 때 가장 중요한 것은 목표 커버리지율을 결정하는 것이다. 코드 100%를 테스트하는 것이 좋겠지만, Exception, If 문에 대해서 100% 테스트가 불가능하다. 또한 Setter와 Getter만 있는 ValueObject의 경우 테스트를 작성하기도 쉽고 테스트 자체가 의미가 없으나 커버리지율은 많이 올릴 수 있다. 만약 커버리지율을 강제적으로 높이고자 하면 개발팀에서 VO 등 테스트가 필요하지 않고 테스트가 쉬운 곳에만 테스트를 집중할 수 있기 때문에 컴포넌트의 우선순위를 정해서 중요한 컴포넌트에 대해서 커버리지를 관리하는 것이 필요하다.
커버리지율은 잘 만든 테스트라도 50~70% 내외이고, 고 가용성 시스템도 80%를 넘기 어려우므로 컴포넌트의 중요도별로 목표 커버리지율을 융통성 있게 결정하는 것이 필요하다. 대표적인 오픈소스 도구로는 EMMA와 Cobertura 등이 있고, 상용 도구로는 아틀라시안사의 Clover 등이 있다.
2. 코드 인스펙션에 대해 설명하시오.
: 코드 인스펙션이란 완성된 코드에 대한 검토를 통해서 코드 상에 존재하는 잠재적인 문제를 발견하는 과정이다. 흔히 '정적 분석'이라는 이름으로도 불리는데, 이 과정에서 Deadlock에 대한 검출, Lock Contention과 같은 병목 구간에 대한 검출, Memory Leak이나 Connection Leak과 같은 자원 누수에 대한 검출과 코딩 스타일에 대한 가이드를 수행한다.
보통 이런 도구들은 규칙 세트를 추가하여 Inspection을 각 팀의 스타일에 맞춰서 커스터마이징할 수 있으며 대표적인 오픈소스 도구로는 PMD, FindBugs 등이 있다.
3. 교재에서 소개한 CI 도구 9가지를 작성하고 각각 내용을 설명하시오.
CI 도구
)체크아웃 : CI 도구는 정해진 시간이나 소스가 커밋이 되었을 때 등 정책에 따라서 빌드를 시작한다. 먼저 소스코드를 체크아웃 받는다.
2)컴파일 : 체크아웃 받은 코드에 내장된 빌드 스크립트를 기동하여 컴파일을 수행한다.
3)배포 : 컴파일이 완료된 코드를 테스트 서버에 배포한다.
4)테스트 수행 : 체크아웃 받은 코드 내에 있는 테스트 코드들을 수행하고 리포팅을 한다.
5)커버리지 분석 : 테스트 과정 중에 코드 커버리지를 수행한다. 커버리지의 기본 원리는 커버리지 분석 대상이 되는 코드 내에 커버리지 분석 코드를 삽입하는 과정을 Code Instrument라고 한다. Instrumented 된 코드는 커버리지 분석 기능으로 말마암아서 성능 저하를 유발할 수 있기 때문에 만약에 테스트 가정에 성능이나 응답 시간에 관련된 테스트가 있을 때는 커버리지 분석을 위해서 테스트를 마친 후에 Instrument를 다시 하여 배포와 테스트 수행 과정을 다시 거쳐서 커버리지 분석을 해야 테스트 과정에서 성능에 대한 요소를 올바르게 추출할 수 있다.
6)코드 인스펙션 : 다음으로 코드 인스텍션을 수행하고 리포트를 생성한다.
7)소스 태깅 : 1~6 과정이 정상적으로 수행되었을 때, 현재 소스 관리 시스템에 저장된 버전을 안정적인 버전으로 판단하고 소스 관리 시스템에 현재 버전에 대한 이미지를 저장하기 위해서 태깅을 수행하여 현재 버전을 저장해 놓는다.
8)릴리즈 : 만약에 빌드나 테스트가 실패하였을 때는 이전에 성공한 빌드 버전으로 소스를 롤백하고, 실패의 원인을 파악한 후에 다시 커밋한다. 이것은 소스 관리 시스템에 저장된 소스는 문제가 없는 소스를 항상 유지하여 개발자들이 문제가 없는 소스로 작업할 수 있게 보장해주며, 릴리즈가 필요한 시기에 언제든지 릴리즈가 가능하도록 지원해준다.
9)결과 분석 : 빌드와 테스트가 완료된 후에 테스트 결과를 통해서 문제가 있는 테스트를 개발자가 수정하도록 하고, 코드 인스펙션 결과를 PM이 검토하여 담당 개발자가 수정하도록 한다. 다음으로, 커버리지 분석 결과를 통해서 테스트가 부족한 부분은 PM이 담당 개발자에게 지시하여 테스트를 보강하도록 한다.
품질이 낮은 소프트웨어는 이용자에게 불편을 주는 것은 물론, 막대한 재산상의 피해를 입히고, 나아가서는 인명 및 국가 안보에까지도 지대한 영향을 끼칠 수 있기 때문에 보다 완벽한 테스팅이 요구되고 있습니다.
'테스트 관련 서적' 카테고리의 다른 글
경영자에서 개발자까지 꼭 알아야 할 소프트웨어 개발의 모든 것 - risk (0) | 2018.09.23 |
---|---|
경영자에서 개발자까지 꼭 알아야 할 소프트웨어 개발의 모든 것 - 폭포수 모델 (0) | 2018.09.22 |
소프트웨어 실무 가이드 - 필요한 이유, 총괄 테스트 계획 (0) | 2018.09.20 |
소프트웨어 개발과 테스트 - 조대협의 서버 사이드 - 도커 (0) | 2018.09.19 |
소프트웨어 테스트 실무 가이드 - 단위간 상호 연동 검증 (0) | 2018.09.18 |