본문 바로가기

자격증/CSTS

Part02. 테스트 설계기법(제8장 정적 테스트)

제8장 정적 테스트

8.1 개요

리뷰의 종류

- 관리 리뷰

- 기술 리뷰

- 인스펙션

- 워크쓰루

- 감사


8.2 리뷰 프로세스

1. 경영진 준비

2. 리뷰 계획

3. 리뷰 절차 개요 설명

4. 작업물 개요 설명

5. 개별 준비

6. 그룹 검토

7. 재작업

8. 후속작업


8.3 관리 리뷰

- 관리 리뷰 : 진행 상황을 모니터하고 계회고가 현재 일정 상태를 평가하여 필요하다면 자원, 일정이나 프로젝트 범위 등을 변경하는 것

  • 설치 계획
  • 백업 및 회복 계획
  • 안정성 계획
  • 재난 계획
  • 비상 대책 계획
  • 진행 보고서
  • 테스트 결과

8.4 기술 리뷰

- 기술 리뷰 : 유능한 인력으로 구성된 팀이 다음과 같은 작업을 수행하여 프로젝트의 기술적 상태를 확이하는 증거로 관리자에게 제공

  • 대상 작업물이 의도된 사용에 적합한지
  • 대상 작업물이 계획, 법규, 표준이나 명세를 충실히 지키는지 평가
  • 변경 사항이 적절하게 구현되었는지를 평가하고 변경 명세에 식별된 영역에만 해당 변경이 영향을 미치는지 평가
  • 여러 대안을 추천하거나 대안들을 검토

8.5 인스펙션

- 인스펙션 : 리뷰 종류 중에서 가장 형식화된 대표적인 리뷰 방식 (=동료 검토. 비슷한 수준이나 역할을 가진 사람들이 검토)

 

8.5.1 인스펙션 참가자의 역할

[주재자]

  • 참가자들을 선정하고 계획.
  • 참가자들에게 미리 검토할 자료 전달.
  • 회의를 주재하는 역할을 담당
  • 회의에서 기록된 모든 자료를 보고서 형식으로 만들어 개발자에게 전달
  • 전문적으로 훈련된 퍼실리테이터가 담당
  • 기록자 역할도 수행할 수 있음

[작성자]

  • 필요한 자료를 제출
  • 자료 내용에 관한 설명을 하거나 질문데 대답
  • 방어적인 자세로 회의 참여X
  • 검출된 결함 내용에 관하여 재작업
  • 작업물 개요 설명도 작성자가 수행
  • 인스펙션 주재자가 될 수 없다.
  • 기록자가 될 수 없다.

[낭독자]

  • 작업물에 대한 자신의 이해 및 해석을 바탕으로 작업물에 대해 회의 참가자들에게 설명하여 인스펙션 회의를 이끄는 역할

[기록자]

  • 인스펙션 회의에서 논쟁, 모든 질문 및 답변 등을 기록
  • 기록된 사항들을 정리하여 문서화
  • 검토자 입장에서 참가

[검토자]

  • 인스펙션 회의를 위해서 전달받은 자료를 검토하고 회의 준비
  • 주어진 자료에서 결함을 찾아내고 기록
  • 간단히 의견만 제시
  • 객관적인 관점에서 회의에 참여
  • 관리자 직책을 담당하는 사람은 팀멤버로 참여하는 것 금지
  • 팀 구성원 모두 검토자 역할을 수행

8.5.2 인스펙션 과정

  1. 리뷰 계획
  2. 인스펙션 절차 개요 설명
  3. 인스펙션 작업물에 대한 개요 설명
  4. 준비
  5. 검토 회의
  6. 재작업
  7. 후속작업

8.6 워크쓰루

- 워크쓰루 : 결함을 검출할 뿐만 아니라 참가자들의 교육이나 지식 공유를 위해 수행. 작성자 본인 보통 회의 주재하며 기록자 역할도 담당


8.7 감사

- 감사 : 소프트웨어 제품 및 프로세스가 규제, 표준, 가이드라인, 계획, 절차를 준수하고 있는지를 독립적으로 평가하는 것

- 역할 : 대표 감사자, 감사자, 기록자 또는 개시자


8.8 정적 분석

- 정적 분석 : 도구의 지원을 받아 정적 테스트를 수행하는 것

 

8.8.1 코딩 표준

- 코딩 표준 : 개발자가 프로그램을 작성할 때 지켜야 하는 규약(=코딩 지침)

BSD K&R GNU
if ( . . . )
{
            doSomething(); 
}
if ( . . . ){
   doSomething(); 
}
if ( . . . )
      {
            doSomething(); 
       }

 

8.8.2 복잡도 분석

- 필요 이상으로 복잡도가 높지 않도록 해야함.

- 순환 복잡도 = E(제어 흐름 그래프에 있는 간선들의 개수) - N(노드들의 개수) +2

- 순환 복잡도 = 닫힌 영역의 개수 + 1

- 순환 복잡도 = 분기 노드들의 개수 + 1

 

8.8.3 자료 흐름 분석

- 프로그램의 자료 흐름에 이상이 있는 분석하는 것

패턴 설명
~d 처음 정의됨 문제없음
du define-use 문제없음, 정상적인 경우
dk define-kill 잠재적 결함, 전혀 자료가 사용되지 않음
~u 처음 사용됨 잠재적 결함, 자료가 정의되지 않고 바로 사용됨
ud Use-define 문제없음
uk use-kill 잠재적 결함, 자료가 정의되지 않고 바로 무효화됨
~k 처음으로 무효화 심각한 결함. 무효화되었는데 사용
ku kill-use 문제없음. 무효화된 후에 다시 정의가 됨
kd kill-define 잠재적 결함. 두 번 연이어 정의됨
dd define-define 잠재적 결함. 두 번 연이어 정의됨
uu use-use 문제없음. 정상적인 경우
kk kill-kill 잠재적 결함
d~ 제일 나중에 발생한 정의 잠재적 결함
u~ 제일 나중에 발생한 참조 문제없음
k~ 제일 나중에 발생한 무효화 문제없음. 정상적인 경우