제 3장 정적 테스팅
제 3장 정적 테스팅 (Static Testing)
3.1 정적 테스팅 기초
테스트하고 있는 소프트웨어 실행이 필요한 동적 테스팅과 달리 정적 테스팅은 작업 산출물을 수동(리뷰) 검사하거나 다른 작업 산출물을 도구를 기반으로 평가(정적 분석)하는 방법에 의존. 두 가지 유형모두 실제로 실행하지 않고 평가
보안 테스팅에서 정적 분석은 매우 중요한 부분이며, 애자일 개발, 지속적 인도-배포 등과 같은 자동화된 소프트웨어 빌드나 배포 도구에 통합되는 경우가 많다.
3.1.1 정적 테스팅을 활용할 수 있는 작업 산출물
비즈니스, 기능, 보안 요구사항 명세
에픽, 사용자 스토리, 인수 기준
아키텍처, 설계 명세, 코드
테스트웨어 (계획, 케이스, 프로시저, 스크립트)
사용자 가이드, 웹, 계약, 계획, 일정, 기획
형상 및 인프라 셋업
액티비티 다이어그램 등 모델 기반 테스팅에 사용되는 모델
요구사항과 같은 자연어로 작성된 작업 산출물을 평가하는 도구로 작용
3.1.2 정적 테스팅의 효과
소프트웨어 개발 수명주기 초반에 적용 시 동적 테스팅을 실행 전 결함의 조기 발견을 가능하게 한다. 정적 테스팅 기법을 사용해 결함 발견 후 즉시 수정은 동적 테스팅보다 적은 비용이 든다.
동적 테스트 실행 전 효율적으로 결함 발견 후 수정
동적 테스팅으로 발견 못하는 결함 발견
요구사항 불일치, 모순, 누락, 중복 등 식별
개발 생산성 향상, 비용 및 기간 단축
리뷰 참여 팀원 간 의사소통 개선
3.1.3 정적 테스팅과 동적 테스팅의 차이
두 테스팅의 목적은 작업 산출물의 품질을 평가하고 결함을 식별하는 것이다. 두 테스팅이 발견하는 유형의 결함이 서로 달라 상호 보완적이다.
가장 중요한 차이점은, 정적 테스팅은 소프트웨어를 실행해 결함으로 발생하는 장애를 찾기보다 작업 산출물에서 직접 결함을 발견하는 것이다. 동적보다 정적은 훨씬 적은 노력으로 결함을 발견할 수 있다. 또한 정적 테스팅은 작업 산출물의 일관성과 내부 품질 향상을 위해 사용하는 반면, 동적은 일반적으로 외부에 보이는 동작에 초점을 맞추고 있다.
동적 테스팅과 비교해 정적 테스팅으로 발견하기 쉬운 결함은 다음과 같다.
요구사항 결함, 설계 결함, 코딩 결함, 표준 차이, 잘못된 인터페이스 명세, 보안 취약점, 테스트 베이시스 추적성 및 불충분한 커버리지
대부분의 유지보수성 결함은 정적 테스팅으로만 발견할 수 있다.
3.2 리뷰 프로세스
리뷰 유형은 공식부터 비공식까지 다양하다. 비공식 리뷰의 특징은 정의된 프로세스를 따르지 않고 리뷰 결과를 공식 문서화하여 제공하지 않는다는 점이다. 공식 리뷰의 특징은 팀 참여, 문서화된 리뷰, 진행 절차등이 있다. 이는 개발 수명주기 모델, 개발 프로세스 성숙도, 산출물 복잡도, 다양한 규정 요구사항과 관련 있다.
3.2.1. 작업 산출물 리뷰 프로세스
(1) 계획
리뷰 목적, 평가할 품질 특성 범위의 정의
노력과 기간 추정
리뷰 유형에 따라 결정되는 역할
인스펙션과 같은 보다 공식적인 리뷰엔 시작 및 종료조건 정의
시작조건이 충족되는 지 확인
(2) 리뷰 착수
작업 산출물과 이슈 기록, 체크리스트 관련 작업
참가자에게 설명
(3) 개별 리뷰
작업 산출물 전체 혹은 부분 리뷰
잠재 결함, 권고사항, 질문 기록
(4) 이슈 논의 및 분석
식별한 잠재 결함 전달
담당자 및 상태 할당
품질 특성 평가 및 문서화
종료 조건 기준 리뷰 결과를 평가하여 리뷰 결과 결정
(5) 수정 및 보고
작업 산출물에 대한 수정을 요하는 잠재 결함에 대한 결함 보고서 작성
리뷰한 작업 산출물에서 발견한 결함 수정
팀과 공유, 업데이트
메트릭 수집 (공식적 리뷰인 경우)
종료 조건 충족 여부 확인 및 인수
3.2.2 공식 리뷰에서의 역할과 책임
저자 (리뷰 대상 작업 산출물 작성 및 결함 수정)
관리자 (리뷰 계획, 실행, 인력-예산-시간 할당, 모니터링)
촉진자, 리뷰리더, 검토자, 서기
3.2.3 리뷰 유형
주된 목적은 결함 발견이다. 적절한 리뷰 유형을 선택해야 하며, 단일 작업 산출물의 경우 여러 유형의 리뷰 대상이 될 수 있다. 리뷰에서 발견되는 결함은 리뷰 중인 작업 산출물에 따라 다르다.
다음은 가장 일반적인 4가지 리뷰 유형과 각 특성이다.
(1) 비공식 리뷰 (informal review)
잠재적 결함 발견, 새로운 아이디어나 해결 도출, 소소한 문제 빠른 해결
공식 프로세스 기반으로 하지 않음
리뷰 회의 진행하지 않아도 괜찮음
저자의 동료 또는 다른 사람이 수행 가능
결과는 문서로 기록 가능, 검토자에 따라 성과가 달라짐
애자일 개발에서 매우 일반적으로 수행
(2) 워크쓰루
결함 발견, 소프트웨어 제품 개선, 다른 구현 방법 고려, 표준이나 규정 준수 평가
리뷰 회의 전 개별 준비는 필요에 따라 수행
작업 산출물의 저자가 주도, 서기 참여 필수
체잠재 결함 로그와 리뷰 보고서 작성
비공식적인 형식에서 공식까지 다양한 형식 활용
(3) 기술 리뷰
합의 도출, 잠재적 결함 발견, 자신감 획득, 새로운 아이디어 도출
검토자는 저자의 기술 동료거나 분야의 기술 전문가
리뷰 회의 전 개별 준비 필요
리뷰 회의는 선택 사항이며 훈련된 촉진자(저자가 아닌)가 주도
서기 필요
잠재 결함 로그와 리뷰 보고서 작성
(4) 인스펙션
잠재적 결함 발견, 작업 산출물 품질 평가, 자신감 획득
규칙 및 페크리스트 기반으로 공식 문서 산출물을 작성하는 정의된 프로세스 수행
명확히 정의된 역할 참여, 낭동자 참여 가능
리뷰 회의 전 개별 준비 필요
명시된 시작 및 종료 조건 사용
서기 참여 필수
저자는 리뷰 리더, 글을 읽는 사람 또는 서기가 될 수 없음
잠재적 결함 로그 및 리뷰 보고서 작성
메트릭 수집하고 사용
3.2.4 리뷰 기법 적용
개별 리뷰 활동 중 결함 발견하기 위해 사용할 수 있는 리뷰 기법
위의 모든 리뷰 유형(4가지)에서 사용할 수 있다.
여러 리뷰 유형에서 사용하는 개별 리뷰 기법은 다음과 같다.
(1) 애드혹 (ad hoc)
검토자에게 리뷰 수행 방법에 대한 안내가 거의 또는 전혀 제공되지 안흔ㄴ다. 작업 산출물을 순차적으로 읽어 이슈를 식별하고 기록한다. 특별한 준비 없이 일반적으로 사용
(2) 체크리스트 기반
체계적인 기법으로 리뷰 시작 지점 배포된 체크리스트를 기반으로 이슈 식별. 잠재 결함 식별을 위한 경험에서 도출된 일련의 질문으로 구성. 체계적인 커버리지를 갖는 다는 장점. 개별 리뷰 수행 시 단순히 실행하는 게 아니라 체크리스트로 식별할 수 없는 결함도 찾기 위해 특별히 주의를 기울여야.
(3) 시나리오 및 드라이런
시나리오 기반 리뷰에선 작업자가 구조화된 지침을 받는다. 작업 산출물의 예상 용도에 따라 드라이런을 수행할 수 있도록 검토자를 지원한다.
(4) 관점 기반
다양한 이해관계자 관점을 사용하게 된다. 중복되는 이슈가 줄어들고 개별리뷰가 좀 더 깊이있게 진행된다. 이해관계자의 관점을 기반으로 하는 산출물을 작성해야한다. 관점 기반 읽기가 요구사항 및 산출물 리뷰에 가장 효과적인 기법이다. 리스크 기반으로 관점을 적절히 포함시키고 평가하는 것
(5) 역할 기반
작업 산출물을 개별 이해관계자 관점에서 평가하는 기법. 일반적인 역할에는 최종 사용자 유형(아동, 노인)과 조직 내 특정 역할(관리자, 테스터)가 있다.
3.2.5 리뷰의 성공 요소
조직차원에서 성공 요인은 다음과 같다.
각 리뷰는 명확한 목적이 있어야 한다. 목적은 리뷰 계획 시 정의하며 측정 가능한 종료 조건으로 사용된다.
목적 달성 적합하고, 산출물 및 참여자 유형 수준에 맞는 리뷰 유형을 적용한다.
모든 리뷰 기법은 리뷰 대상 작업 산출물 결함을 효과적으로 식별하기 적합해야한다.
체크리스트는 주요 리스크 식별 커버하고 최신 정보 반영해야한다.
규모가 큰 문서는 작은 단위로 작성하고 리뷰 수행해 저자에게 결함에 대한 피드백을 제공한다.
참여자는 충분한 준비 시간을 갖는다.
충분한 여유를 가지고 리뷰 일정을 수립한다.
경영진은 리뷰 프로세스를 지원한다.
리뷰는 기업 품질 및 테스트 정책에 통합한다.
사람과 관련된 성공 요인은 다음과 같다.
리뷰 목적 달성을 위해 적절한 사람이 참여한다.
테스터는 리뷰에 기여하는 중요한 검토자로 간주.
참여자는 세부사항에 충분한 시간과 주의를 기울인다.
작은 단위로 리뷰 진행해 개별 리뷰 중 검토자 집중력을 유지시킨다.
식별 결함은 승인, 평가, 객관적으로 처리한다.
서로 신뢰하는 분위기, 적절한 교육 필요(인스펙션과 같은 공식적인 리뷰에서)