3. 정적 기법
3.1 정적 기법과 테스트 프로세스
3.1.1 리뷰의 이점과 목적(benefits and objectives of review)
정적 기법은 sw를 실행하지 않고 테스팅하는 기법으로 리뷰와 같은 수동적(manual) 기법과 정적 분석 자동화 도구를 활용한 정적 분석이 있다.
리뷰의 이점
조기 결함 발견 및 수정, 개발 생산성 향상, 개발 기간 단축, 테스팅 비용 감소 및 시간 단축, 개발 수명주기 전체에 걸친 비용 감소, 결함 감소(품질 향상), 커뮤니케이션 향상
동적 테스팅에서 발견하기 어려운 개발 산출물(요구사항 명세 등)의 누락(omissions)과 같은 결함을 발견할 수 있다.
정적은 동적과 달리 장애 자체 보다는 장애(failure)의 원인(결함)을 발견한다.
동적 테스팅보다 리뷰를 통해 발견하기 쉬운 결함의 종류
표준 위반, 요구사항 결함, 개발 설계(design) 결함, 불충분한 유지보수성(insufficient maintainability), 부정확한 인터페이스 명세
3.1.2 리뷰와 테스팅
조기 테스트 설계는 추후 테스트 실행 시 시간을 절약할 수 있다.
예) 요구사항 분석서를 통해 생성한 테스트케이스는 시스템 또는 인수 테스팅 수행 시 활용할 수 있다.
but, 시스템 명세는 자주 변경 소지 있으므로, 개발 단계 전에 모든 tc를 생성하는 것은 현명치 못한 방법이 될 수 있다.
리스크가 높거나 핵심 모듈(중요한 기능)에 한해서 tc를 도출하면서 문서를 테스트할 수 있다.
3.2 리뷰 프로세스
리뷰는 공식적, 비공식적인 것까지 다양한 형태를 갖는다.
리뷰의 성과 객관화하고 체계화하여 정리한 일례
페이건(Fagan) 인스펙션
개발 초기에 요구사항 정의 분석 및 설계 인력이 소수 투입되다가 코딩 시작되면서 투입 인력 수요가 급증하게 된다. 투입 인력 규모가 테스팅 단계에서 절정에 이르게 되며 테스팅이 끝나게 되면 개발 조직이 소수의 유지보수 인력만 남기고 해제된다.
인스펙션을 도입 경우, 초기 프로젝트 비용이 증가하지만 코딩 단계에서 투입 인력이 줄어 개발 기간을 단축할 수 있다.
3.2.1 공식적 리뷰의 단계(phase of a formal review)
정적 테스트 프로세스는 정적 테스트 준비 단계, 리뷰 분석 단계, 후속 처리 확인 단계 3단계로 구성된다.
static test preparation -> reivew/analyze -> static test follow up
비공식적인 리뷰의 경우, 절차의 많은 부분을 생략할 수 있지만 기본 골격을 따르는 게 바람직하다.
계획 활동, 후속 처리 확인은 강제화해도 좋은 절차이다.
공식적인 리뷰 절차
계획 활동 : 공식적 리뷰에서는 시작 및 종료 기준(entry and exit criteria)을 정의한다.
시작(kick off) : 문서를 배포, 리뷰의 목표, 절차 및 문서를 참석자에게 설명한다.
개별 준비
리뷰 미팅 : 상세 회의록(minutes) 를 작성
재작업(rework)
후속 처리 확인(follow up)
3.2.2 역할과 책임(roles and responsibilities)
관리자 manager
리뷰의 실행여부를 결정, 프로젝트 일정에 리뷰 시간 할당, 리뷰 목적 달성 여부 확인& 승인
중재자 moderator
문서의 리뷰를 리드. 리뷰 계획, 미팅 진행, 미팅 후속 조치 처리 여부 추적 및 관리, 리뷰 중재자 교육 반드시 받도록 한다.
저자 author
리뷰 대상 문서의 작성자 또는 책임자
검토자 reviewer
해당 분야의 기술적 또는 비즈니스적 배경을 갖춘 사람, 필요한 준비 단계를 거친 후 리뷰 대상에서 인시던트를 발견하고 기술하는 사람, 검사자 또는 인스펙터(inspectors) 라고도 불린다.
다양한 관점과 역할을 대표하도록 선발되어야 하고, 특정 리뷰 미팅에 제한적 참여보단 모든 형태의 리뷰에 참석해야 한다.
기록자 scribe and recorder
리뷰 미팅에서 발견된 모든 이슈, 문제점, 미해결점 등을 기록하고 문서화한다.
3.2.3 리뷰의 유형
비공식적 리뷰
절차x, 페어 프로그래밍에 의한 리뷰이거나 기술 선임자가 설계와 코드를 리뷰하는 것일 수 있음
주요 목적 : 저렴한 방법으로 일정 수준의 성과 달성
기술적 리뷰
저자가 아닌 중재자가 미팅을 주도함
워크쓰루
저자에 의해 진행 및 제어
주요 목적 : 학습, 시스템에 대한 이해 향상, 결함 발견
인스펙션
훈련된 중재자에 의한 진행 및 제어, 공식적인 경우가 많으며, 적용 사례와 연구결과가 발표되어 있다.
공식적인 리뷰 프로세스를 따르며, 프로세스 개선 단계가 인스펙션 미팅과 재작업 단계 사이에 존재한다.
검토자와는 별도로 테스터의 역할 두고 있다.
주요 목적 : 결함 발견
대상 : 모든 개발 산출물과 테스트 산출물
절차 : 분량(capacity) 계획 -> 인스펙션 수행 -> 분석 및 평가
한가지 이상의 리뷰 방식이 사용된다면 리뷰의 순서는 다양할 수 있다.
비공식적 리뷰는 기술적 리뷰 이전에 수행될 수 있고, 인스펙션은 고객과의 워크쓰루 이전에 요구사항 명세를 가지고 수행될 수 있다.
3.2.4 리뷰의 성공 요소(success factors of reviews)
사람관련 이슈(people issues) 와 심리적인 측면이 고려되어야 함
코드 또는 문서의 저자가 리뷰를 통해 긍정적인 경험을 해야 지속적인 효과를 기대할 수 있음
3.3 도구에 의한 정적 분석(static analysis by tools)
정적 분석 목적 : sw의 소스코드와 모델에서 결함을 발견하는 것이다.
정적 분석은 조사 대상 sw를 실제적으로 실행하지 않는 상태에서 도구의 지원으로 수행하는 것이다.
정적 분석 특징
동적 테스팅으로 찾기 힘든 결함을 발견함
장애보다는 결함 defects를 발견함
정적 분석 도구는 프로그램 코드를 분석(제어 흐름이나 데이터 흐름 분석 등) 하는 것은 물론 HTML 이나 SML 과 같이 생성된 결과물도 분석함
정적 분석의 가치
발견하기 어려운 결함 발견
동적으로 발견하기 어려운 결함 발견
SW 모델상의 의존도와 불일치성(dependencies and inconsistencies) 발견
발견되는 전형적인 결함
정의되지 않은 값으로 변수 참조
모듈과 컴포넌트 간에 일관되지 않은 IF
사용되지 않는 변수, 코드
코딩 표준 위반, 보안 취약성, 코드와 소프트웨어 모델의 구문 규칙 위반
전체 개발 초기에 적용되는 정적기법 경우, 단기적으로 리소스가 투입되지만 장기적으로는 조기에 결함을 예방할 수 있게 됨
'ISTQB CTFL' 카테고리의 다른 글
개발자도 알아야 할 소프트웨어 테스팅 실무 요약 4-2 (0) | 2023.01.11 |
---|---|
개발자도 알아야 할 소프트웨어 테스팅 실무 요약 4-1 (0) | 2023.01.09 |
개발자도 알아야 할 소프트웨어 테스팅 실무 요약2 (1) | 2023.01.08 |
개발자도 알아야할 소프트웨어 테스팅 실무 요약1 (0) | 2023.01.07 |
ISTQB Foundation level Study1 (10) | 2022.12.18 |