3장. 정적 테스팅 목차
정적 테스팅의 기초
- 정적 테스팅으로 검토할 수 있는 작업 산출물
- 정적 테스팅의 효과
- 정적 테스팅과 동적 테스팅의 차이
리뷰 프로세스
- 작업 산출물 리뷰 프로세스
- 공식 리뷰에서의 역할과 책임
- 리뷰 유형
- 리뷰 기법 적용
- 리뷰의 성공 요소
정적 테스팅의 기초
개발된 프로그램을 돌려보지 않고, 명세서나 코드만을 보고 테스트를 하는 방법이다. 말 그대로 정적인 테스트이다.
정적테스트 안에서 크게 화이트 박스, 블랙박스 테스트로 나눌 수 있다.
정적 테스팅으로 검토할 수 있는 작업 산출물
대부분의 작업 산출물은 정적 테스팅(리뷰나 정적 분석)으로 검사할 수 있다.
- 비즈니스 요구사항, 기능 요구사항, 보안 요구사항과 같은 명세
- 에픽(epic), 사용자 스토리, 인수 기준
- 아키텍처 및 설계 명세
- 코드
- 테스트 계획, 테스트 케이스, 테스트 프로시저, 자동화 테스트 스크립트와 같은 테스트웨어
- 사용자 가이드
- 웹 페이지
- 계약, 프로젝트 계획, 일정, 예산 기획
- 형상(configuration) 및 인프라(infrastructure) 셋업
- 액티비티 다이어그램과 같은 모델 기반 테스팅에 사용되는 모델
정적 테스팅의 효과
- 동적 테스트 실행 전, 효율적으로 결함을 발견하고 수정 혹은 제거
- 동적 테스팅으로 발견이 쉽지 않은 결함 식별(코딩 등....)
- 요구사항 불일치, 애매모호함, 모순, 누락, 부정확, 중복 등을 식별해서 설계나 코딩의 결함 예방
- 개발 생산성 향상 (예: 설계 개선, 향상된 코드 유지보수성)
- 개발 비용 및 기간 단축
- 테스팅 비용 및 기간 단축
- 수명주기 후반 또는 출시 후 운영 과정에서 발견되는 장애 감소로 소프트웨어 수명주기 전반에 걸친 총 품질 비용 감소
- 리뷰에 참여하는 팀원 간의 의사소통 개선
정적 테스팅과 동적 테스팅의 차이
- 공통점
- 작업 산출물의 품질을 평가하고 가능한 빨리 결함을 식별하는 것이며 정적 테스팅과 동적 테스팅은 발견하는 유형의 결함이 서로 달라 상호 보완적이다.
- 차이점
- 정적 테스팅은 소프트웨어를 실행해 결함으로 발생하는 장애를 찾기보다 산출물에서 직접 결함을 발견하는 것이다.
- 정적 테스팅은 작업 산출물의 일관성과 내부 품질을 향상하기 위해 사용하는 반면, 동적 테스팅은 일반적으로 외부에 보이는 동작에 초첨을 맞추고 있는 것이다.
- 정적 테스팅으로 발견하기 쉬운 결함 유형
- 요구사항 결함 (예: 불일치, 모호함, 모순, 누락, 부정확, 중복 등)
- 설계 결함 (예: 비효율적인 알고리즘이나 데이터베이스 구조, 높은 결합도(coupling), 낮은 응집도(cohesion))
- 코딩 결함 (예: 불필요한 변수 또는 잘못된 값이 있는 변수, 도달할 수 없는 코드, 중복 코드 등)
- 표준과의 차이 (예: 코딩 표준 미준수 등)
- 잘못된 인터페이스 명세 (예: 호출하는 시스템과 호출되는 시스템이 서로 다른 측정 단위 사용)
- 보안 취약점 (예: 버퍼 오버플로우에 대한 취약성)
- 테스트 베이시스 추적성이나 불충분한 커버리지 또는 부정확성 (예: 특정 인수 조건에 대한 테스트 누락)
리뷰 프로세스
리뷰 유형은 공식 리뷰에서 비공식 리뷰까지 다양하다.
비공식 리뷰의 특징은 정의된 프로세스를 따르지 않고, 리뷰 결과를 공식적으로 문서화하여 제공하지 않는다는 점이다.
공식 리뷰의 특징은 팀 참여, 문서화된 리뷰 결과, 문서화된 리뷰 진행 절차 등이 있다.
리뷰 프로세스의 형식은 소프트웨어 개발 수명주기 모델, 개발 프로세스의 성숙도, 리뷰 대상 작업 산출물의 복잡도, 다양한 법적 또는 규정 요구사항이나 감사 추정의 필요성과 같은 요소와 관련이 있다.
리뷰의 중점은 합의된 리뷰 목적에 따라 결정된다.
작업 산출물 리뷰 프로세스
주요 활동 | 설명 |
계획 |
|
리뷰 착수 |
|
개발 리뷰 |
|
이슈 논의 및 분석 |
|
수정 및 보고 |
|
공식 리뷰에서의 역할과 책임
리뷰 유형에 따라 한 사람이 두 개 이상의 역할을 수행할 수 있으며, 각 역할과 관련된 활동 역시 리뷰 유형에 따라 달라질 수 있다. 또한, 리뷰 프로세스를 지원하는 도구, 특히, 결함, 쟁점 및 의사 결정의 기록을 지원하는 도구로 인해 서기가 필요하지 않은 경우가 많다.
담당자 | 책임 |
저자 |
|
관리자 |
|
촉진자 |
|
리뷰 리더 |
|
검토자 |
|
서기 |
|
리뷰 유형
리뷰를 다양한 목적으로 활용할 수 있지만, 주된 목적 중 하나는 결함 발견이다. 모든 리뷰 유형은 결함 발견에 도움이 될 수 있으며, 프로젝트 요구사항, 가용 자원, 제품 유형과 리스크, 비즈니스 도메인, 조직의 문화 등에 따라 적절한 리뷰 유형을 선택해야 한다.
다음은 가장 일반적인 4 가지 리뷰 유형과 각각의 특성을 나열한 것이다.
비공식 리뷰(버디 체크, 페어링, 짝 리뷰)
- 주요 목적: 잠재적 결함 발견
- 기타 목적: 새로운 아이디어나 해결책 도출, 소소한 문제의 빠른 해결
- 공식 (문서화된) 프로세스를 기반으로 하지 않음
- 리뷰 회의를 진행하지 않을 수 있음
- 저자의 동료 (버디 체크) 또는 다른 사람이 수행할 수 있음
- 결과는 문서로 기록할 수 있음
- 검토자에 따라 성과가 달라짐
- 체크리스트 사용 여부는 상황에 맞게 판단
- 애자일 개발에서 매우 일반적으로 사용됨
워크쓰루
- 주요 목적: 결함 발견, 소프트웨어 제품 개선, 다른 구현 방법 고려, 표준이나 규정 준수 평가
- 기타 목적: 다양한 기술이나 스타일에 대한 아이디어 교환, 참여자 교육, 합의 도출
- 리뷰 회의 전 개별 준비는 필요에 따라 수행
- 리뷰 회의는 일반적으로 작업 산출물의 저자가 주도
- 서기 참여 필수
- 체크리스트 사용 여부는 상황에 맞게 판단
- 시나리오, 드라이 런(dry run), 시뮬레이션의 형태로 수행할 수 있음
- 잠재 결함 로그와 리뷰 보고서 작성
- 실무에서는 비공식적인 형식에서 매우 공식적인 형식까지 다양할 수 있음
기술 리뷰
- 주요 목적: 합의 도출, 잠재적 결함 발견
- 기타 목적: 작업 산출물의 품질 평가 및 자신감 획득, 새로운 아이디어 도출, 저자가 미래의 작업 산출물을 개선하도록 지원하고 동기를 부여, 다른 구현 방법 고려
- 검토자는 저자의 기술 동료이면서, 동일 분야 또는 다른 분야의 기술 전문가여야 함
- 리뷰 회의 전 개별 준비 필요
- 리뷰 회의는 선택 사항이며, 이상적으로는 훈련된 촉진자(일반적으로 저자가 아닌)가 주도
- 서기는 반드시 있어야 하며, 이상적으로는 저자가 아닌 사람이 수행
- 체크리스트 사용 여부는 상황에 맞게 판단
- 잠재 결함 로그와 리뷰 보고서 작성
인스펙션
- 주요 목적: 잠재적 결함 발견하고 작업 산출물의 품질 평가 및 자신감 획득한다. 또한 저자 학습과 근본 원인 분석을 통하여 유사 결함의 발생 예방
- 기타 목적: 저자가 앞으로의 작업 산출물과 소프트웨어 개발 프로세스를 개선하고 합의를 이끌어 내도록 동기를 부여
- 규칙 및 체크리스틀 기반으로 공식 문서 산출물을 작성하는 정의된 프로세스를 수행
- 명확하게 정의된 역할 참여, 낭독자의 참여 가능
- 리뷰 회의 전 개별 준비 필요
- 검토자는 저자의 동료 또는 작업 산출물과 연관된 분야의 전문가
- 명시된 시작 및 종료 조건을 사용
- 서기 참여 필수
- 리뷰 회의는 훈련받은 촉진자(저자가 아닌 사람)가 주도
- 저자는 리뷰 리더, 글을 읽는 사람 또는 서기가 될 수 없음
- 잠재적인 결함 로그 및 리뷰 보고서 작성
- 인스펙션 프로세스 포함 전체 소프트웨어 개발 프로세스를 개선하기 위해 메트릭을 수집하고 사용
리뷰 기법 적용
리뷰 기법 | 설명 |
애드혹 | 검토자에게 리뷰 수행 방법에 대해 안내가 거의 또는 전혀 제공되지 않은 상태에서 리뷰를 진행하며 검토자의 능력에 크게 의존한다. |
체크리스트 기반 | 체계적인 기법으로 체크리스트 기반으로 이슈를 식별한다. |
시나리오 및 드라이 런 | 유스케이스와 같은 적절한 형식으로 문서화된 경우 작업 산출물의 예상되는 용도를 기반으로 드라이런을 수행할 수 있도록 검토자를 지원하며 이런 경우 단순한 체크리스트 항목보다 결함 유형을 식별하는 방법에 대해 좀 더 나은 지침을 제공한다. * 드라이 런: 프로그램이 실행되는 논리적 과정을 검사하는 작업 |
관점 기반 | 검토자가 개별 리뷰 중 다양한 이해관계자의 관점을 사용하게 된다. 서로 다른 관계자의 관점을 사용하면 중복되는 이슈가 줄어들고 개별리뷰가 좀 더 깊이 있게 진행된다. |
역할 기반 | 검토자가 작업 산출물을 개별 이해관계자 역할의 관점에서 평가하는 기법이다. |
리뷰의 성공 요소
조직 차원에서의 성공 요소
- 명확한 목적이 있어야 한다.
- 정확한 리뷰 유형을 적용해야 한다.
- 결함을 효과적으로 식별하기에 적합해야 한다.
- 가장 최신의 정보를 반영해야한다.
- 저자에게 결함에 대한 피드백을 조기에 그리고 빈번하게 제공함으로 품질 관리를 수행
- 충분한 준비 시간과 여유를 가지고 일정 수립
- 경영진은 리뷰 프로세스를 지원한다.(활동을 위한 충분한 시간)
사람 차원에서의 성공 요소
- 적절한 사람들이 참여한다.
- 테스터는 작업 산출물을 미리 학습하여 효과적인 테스트를 준비한다.
- 참여자는 세부사항에 충분한 시간과 주의를 기울여야 한다.
- 집중력을 잃으면 안 된다.
- 식별된 결함은 승인하고 평가하고, 객관적으로 처리해야 한다.
- 리뷰 시간이 가치 있도록 인지 시켜야 한다.
- 모든 참가자가 신뢰하는 분위기가 형성되어야 한다.
- 적대감을 나타내는 행동과 말투를 피해야 한다.
'자격증 > CTFL' 카테고리의 다른 글
[ISTQB] 6장 테스트 관리 (0) | 2022.12.30 |
---|---|
[ISTQB] 5장 테스트 관리 (0) | 2022.12.30 |
[ISTQB] 4장 테스팅 기법 (0) | 2022.12.30 |
[ISTQB] 2장 소프트웨어 개발 수명주기와 테스팅 (0) | 2022.12.29 |
[ISTQB] 1장 테스팅의 기초 요약 (0) | 2022.12.29 |