본문 바로가기

1. QA/1.1 Syllabus

3.1 Static techniques and the test process (정적 기법과 테스트 프로세스)

Terms 

Dynamic testing, static testing, static technique.


Background

Unlike dynamic testing, which requires the execution of software, static testing techniques rely on the manual examination (reviews) and automated analysis (static analysis) of the code or other project documentation.


Reviews are a way of testing, which requires the execution of software, static testing techniques rely on the manual examination (reviews) and automated analytics (static analysis) of the code or other project documentation.


A review could be done entirely as a manual activity, but there is also tool support. The main manual activity is to examine a work product and make comments about it. Any software work product can be reviewed, includeing requirements specifications, design specifications, code, test plans, test specifications, test cases, test script, user guides or web pages.


Benefits of reviews include early defect detection and correction, development productivity improvements, reduced development timescales, reduced testing cost and time, lifetime cost reductions, fewer defects and improved communication. Reviews can find omissions, for example, in requirements, which are unlikely to be found in dynamic testing.


Reviews, static analysis and dynamic testing have the same objective - identifying defects. They are complementary: the different techniques can find different types of defects effectively and efficiently. Compared to dynamic testing, static techniques find causes of failures (defects) rather than the failures themselves.


Typical defects that are easier to find in reviews than in dynamic testing are: deviations from standards, requirement defects, design defects, insufficient maintainability and incorrect interface speficifations.




소프트웨어의 실행이 필요한 동적 테스팅과는 달리, 정적 테스팅 기법은 소프트웨어를 실행하지 않고 테스팅하는 기법으로 리뷰와 같은 수동적(Manual) 기법이나 정적 분석과 같은 자동화 기법이 있다.


리뷰는 코드를 포함하여 소프트웨어 개발 중간산출물 검토하고 테스팅하는 한가지 방법이며, 동적 테스팅을 실행하기 전에 적절하게 수행될 수 있다. 개발 공정 초기에 리뷰를 통해 발견하는 결함의 수정 비용은 동적 테스팅을 통해 발견하는 결함의 수정 비용에 비교하지 못할 정도로 낮은 경우가 대부분이다. (예, 요구사항에서 발견한 결함)


리뷰는 완전히 수동으로 진행될 수 있지만 툴의 도움을 받을 수도 있다. 주로 수동으로 진행하는 활동은 개발 중간산출물을 검사하고 코멘트를 작성하는 것이다. 요구사항 명세, 설계(디자인) 명세, 코드, 테스트 계획, 테스트 명세, 테스트 케이스, 테스트 스크립트, 사용자 가이드나 웹페이지 등 모든 소프트웨어 개발 산출물은 리뷰의 대상이 될 수 있다.


리뷰의 이점은 조기 결함 발견 및 수정, 개발 생산성 향상, 개발 기간 단축, 테스팅 비용 감소 및 시간 단축, 개발 공정 전체에 걸친 비용 감소, 보다 적은 결함(품질 향상), 커뮤니케이션 향상을 포함한다. 리뷰는 동적 테스팅에서 발견하기 어려운 개발 중간 산출물(요구사항 명세 등)의 누락(omissions)과 같은 결함을 발견할 수 있다.


리뷰와 정적 분석, 동적 테스팅은 모두 결함발견이라는 동일한 목적을 가지고 있다. 이들은 상호 보완적이어서 각각의 기법은 서로 다른 종류의 결함들을 효과적이고 효율적으로 발견할 수 있다. 정적 기법은 동적 테스팅과는 달리 장애(Failgure) 자체 보다는 장애의 원인(결함)을 발견한다.


동적 테스팅보다 리뷰를 통해 발견하기 용이한 결함의 종류는 다음과 같다. 표준 윕ㄴ, 요구사항 결함, 개발 설계(디자인) 결함, 불충분한 유지보수성(Insufficient maintainability), 부정확한 인터페이스