본문 바로가기

Study/정보처리기사 실기

[정보처리기사 실기] 애플리케이션 테스트 관리 _ 애플리케이션 테스트 설계

애플리케이션 테스트 개념

- 애플리케이션에 내재된 결함 발견하는 일련의 과정

- 고객 요구사항 확인 (Validation)하고 기능 정상 수행하는지 검증 (Verification) 하는 것

 

애플리케이션 테스트 기본 원리

원리 설명
완벽한 테스팅 불가능 결함 줄일 수 있으나 결함 없다고 증명할 수 없음
파레토 법칙 20%% 모듈에서 80% 결함 발견
살충제 패러독스 - 동일한 테스트 케이스에 의한 반복적 테스트로는 더 이상 결함 발견하지 못함
- 동일한 테스트 케이스로 동일한 테스트 반복하면 더 이상 결함 발견되지 않는 현상
테스팅은 정황에 의존적 소프트웨어 정황 (환경, 성격)에 맞게 테스트 실시
오류 - 부재의 궤변 결함 없다해도 요구사항 충족하지 못하면 품질 높다고 할 수 없음
테스트와 위험 반비례 테스트 많이 할수록 위험 감소
테스트팀 운영 테스트는 개발자와 관계없는 별도 팀에서 수행

애플리케이션 테스트 분류

프로그램 실행 여부, 테스트 기반, 테스트 관점, 테스트 목적에 따라 분류 가능

 

프로그램 실행 여부에 따른 분류

 

1) 정적 테스트

- 프로그램을 실행하지 않고 명세서나 소스코드 분석하는 테스트

- 테스트 방법 : 리뷰, 정적 분석

 

리뷰 (review)

동료 검토 요구사항 명세서 작성자가 내용 직접 설명, 동료들이 이를 들으면서 결함 발견
워크 스루 검토 회의 전 요구사항 명세서를 미리 배포해 사전 검토 회의 통해 결함 발견
 인스펙션 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 결함 발견

정적 분석

자동화된 도구 이용해 산풀물 결함 검출하거나 복잡도 측정

코딩 표준 - 코딩 표준 및 코딩 지침에 대한 준수 여부 검사
- 대표적 도구 : LDRA, PRQA, Parasoft
복잡도 측정 - 프로그램 복잡성 측정 및 분석 검사
- MaCabe 순환 복잡도
자료흐름 분석 프로그램 자료 흐름에 이상 존재하는지 분석 검토

2) 동적 테스트

- 프로그램 코드 실행하여 오류 찾는 테스트

- 테스트 방법 : 화이트박스 테스트, 블랙박스 테스트

구분 화이트박스 테스트 블랙박스 테스트
정의 - 제품 내부 논리구조 검사
- 원시코드 (소스 코드) 필요
- 제품 외부 기능, 오류 검사
- 원시 코드 (소스 코드) 불필요
특징 제어 흐름에 초점 둔 구조 검사 정보 영역에 초점 둔 기능 검사
시험 방법 - 원시 코드 모든 문장을 한번 이상 수행
- 모듈 안 작동 직접 관찰
- 기능별 입력에 대한 출력 정확성 검사
- 부정확하거나 잘못된 기능, 누락된 기능 검사
시점 검사단계 전반부 검사단계 후반부
종류 - 기초경로 검사
- 조건 검사
- 루프 검사
- 데이터 흐름 검사
[ 동, 경, 원, 오, 비]
- 동치 분할 검사
- 경계값 검사
- 원인 - 효과 그래프
- 오류 예측 검사
- 비교 검사

테스트 프로세스

개발된 소프트웨어 사용자 요구 사항 반영 여부, 결함 여부 등 테스트하는 절차

 

진행순서

테스트 계획 프로젝트 계획서, 요구 명세서 등 기반으로 테스트 목표 정의하고 테스트 대상 및 범위 결정
테스트 분석 및 디자인 테스트 목적과 원칙 검토하고 사용자 요구 사항 분석
테스트 케이스 및 시나리오 작성 테스트 케이스 설계기번에 따라 테스트 케이스 작성, 검토 및 확인 후 테스트 시나리오 작성
테스트 수행 - 테스트 환경 구축 후 테스트 수행
- 테스트 실행 결과 측정, 기록
테스트 결과 평가 및 리포팅 테스트 결과 비교, 분석하여 테스트 결과서 작성
결함 추적 및 관리 테스트 수행 후 결함 발생 부분과 종류 추적, 관리

테스트 수행 요소

1) 테스트 케이스

- 구현된 소프트웨어가 사용자 요구사항을 정확하게 준수했는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과

등으로 구성된 테스트 항목에 대한 명세서

- 명세 기반 테스트 설계 산출물에 해당

- 테스트 케이스 미리 설계 시 오류 방지와 인력, 시간 낭비 감소 효과

 

테스트 케이스 구성 항목

테스트 ID 작성 테스트 케이스를 고유하게 식별하기 위한 ID 작성
테스트 목적 작성 테스트 시 고려해야 할 중점 사항이나 테스트 케이스 목적 작성
테스트 기능 요약 애플리케이션 테스트할 기능 간략하게 작성
입력 데이터 작성 테스트 실행 시 입력할 데이터 (입력 값, 선택 버튼, 체크리스트 값 등) 작성
기대 결과 작성 테스트 실행 후 기대되는 결과 데이터 (출력 데이터, 결과 화면, 기대 동작 등) 작성
테스트 환경 설정 테스트 시 사용할 물리적, 논리적 테스트 환경, 사용할 데이터, 결과 기록 서버 등 내용 작성
전제 조건 설정 테스트 간 종속성, 테스트 수행 전 실행되어야 할 고려 사항 등 작성
성공 / 실패 기준 설정 테스트 거친 애플리케이션 기능의 성공 / 실패 판단 조건 명확히 작성
기타 요소 식별, 설정 사용자의 테스트 요구사항 중 특별히 고려해야 할 내용 간략히 기술

2) 테스트 시나리오

- 테스트 케이스 적용 순서 따라 여러 테스트 케이스를 묶은 집합

- 테스트 케이스들 적용하는 구체적 절차 명세한 문서

- 테스트 순서에 대한 구체적 절차, 사전 조건, 입력 데이터 등 설정됨


3) 테스트 오라클

- 테스트 결과의 올바른 판단 위해 사전에 정의된 참 값 대입해 비교하는 기법 및 활동

- 결과 판단 위해 테스트 케이스에 대한 예상 결과를 계산하거나 확인

 

테스트 오라클 특징

- 제한된 검증 : 테스트 오라클을 모든 테스트 케이스에 적용할 수 없음

- 수학적 기법 : 테스트 오라클 값을 수학적 기법 이용해 산출

- 자동화 가능 : 테스트 대상 프로그램 실행, 결과 비교, 커버리지 측정 등을 자동화할 수 있음


테스트 오라클 종류

참 (True) 오라클 - 모든 테스트 케이스 입력값에 대해 기대하는 결과 제공하는 오라클
- 발생된 모든 오류 검출 가능
- 치명적 업무 (Mission Critical)에 주로 사용
샘플링 (Sampling) 오라클 특정 몇몇 테스트 케이스 입력값에 대해서만 기대하는 결과 제공하는 오라클
추정 (Heuristic) 오라클 - 샘플링 오라클 개선한 오라클
- 특정 테스트 케이스 입력값에 대해 기대하는 결과 제공하고 나머지 입력 값들에 대해
추정으로 처리하는 오라클
일관성 검사 (Consistent) 오라클 애플리케이션 변경 발생 시, 테스트 케이스 수행 전후 결과 값 동일한지 확인하는 오라클

테스트 검증 기준 (Coverage)

- 소프트웨어 테스트 수행 정도 나타내는 값

- 주어진 테스트 케이스에 의해 수행되는 소프트웨어 테스트범위 측정하는 테스트 품질 측정 기준

- 테스트 정확성과 신뢰성 향상 시키는 역할 수행

- 모든 경로 테스트는 불가능하기 때문에 100% 커버 불가능

 

1) 화이트박스 테스트 커버리지 (Coverage)

문장 커버리지
(Statement Coverage)
- 소스 코드 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설계
- 최소 한번은 수행
분기 커버리지
(Branch Coverage)
- 소스 코드 모든 조건식이 한 번 이상 수행되도록 테스트 케이스 설계 (= 결정 커버리지)
- 결정 검증 기준이라고도 함
- 조건이 True / False일 때 수행
조건 커버리지
(Condition Coverage)
- 소스 코드 개별 조건식이 적어도 한번은 참 (T)과 거짓 (F)의 결과 나오도록
테스트 케이스 설계

- 전체 조건식에 상관없이 개별 조건식의 True / False에 대해 수행
분기 / 조건 커버리지
(Branch / Condition Coverage)
소스 코드 모든 조건문과 각 조건문에 포함된 개별 조건식 결과가 참 (T)과 거짓 (F)인 경우가 한 번 이상 수행되도록 테스트 케이스 설계

 

논리 흐름도

 

문장 커버리지

- 각 라인이 적어도 한 번 실행되는지 검증

- Test Case1 : A = 2, B = 0, X = 4

 

분기 커버리지

- IF 문에는 True 와 False 두 가지 검증

- Test Case1 : A = 1.5, B = 0, X = 3

- Test Case2 : A = 1, B = 1, X = -4


2) 순환 복잡도 (Cyclomatic Complexity)

- 소프트웨어 논리적인 복잡도 측정하기 위한 척도

- 제어 흐름도 G에서 순한 복잡도 V(G)는 다음 방법으로 계산 가능

  • 방법 1) 순환 복잡도는 제어 흐름도의 영역 수와 일치하므로 영역 수 계산
  • 방법 2) V(G) = E - N + 2 : E는 화살표 수, N은 노드 수

복잡도 V(G) = 내부영역 + 외부영역 = 2 + 1 = 3

복잡도 V(G) = 화살표 (E) - 노드 수 (N) + 2 = 8 - 7 + 2 = 3


3) 블랙 박스 테스트 케이스

블랙박스 테이스 종류

[ 동, 경, 원, 오, 비]

동치분할검사
(Equivalence Partitioning Testing)
- 입력 데이터 영역 유사한 도메인별로 유효 / 무효값 그룹핑해 대표값 테스트 케이스
만들어 검사 하는 방법, 동등분할 기법이라고도 함

- <평가 점수표> 미리 정해 놓은 후 각 영역에 해당하는 입력값 넣고, 예상되는 출력값 나오는지 실제 값과 비교하는 명세 기반 테스트 기법
계값 분석 입력 조건 경계값 테스트 케이스로 선정해 검사하는 기법 m - 1 < m < m + 1
원인 - 효과 그래프 검사 입력 데이터 간 관계와 출력에 영향 미치는 상황을 체계적으로 분석한 후 효용성 높은 테스트 케이스 선정해 검사하는 기법
류 예측 검사  과거 경험이나 확인자 감각으로 테스트하는 기법
교 검사 여러 버전 프로그램에 동일한 테스트 자료 제공해 동일한 결과 출력되는지 점검하는 테스트 기법