소프트웨어 검사 (테스트)
개발 단계의 마지막 단계
오류를 찾아 내는 것
잠재적 오류 : 오류는 있지만 발견되지 않으면서 존재하는 오류
성공적인 검사 : 오류를 많이 찾아내는 검사
요구사항 검토 방법
동료 검토
워크 스루
인스펙션
소프트웨어 품질 보증 - 정형 기술 검토의 지침 사항
논쟁과 반박 제한
의제를 제한하되, 충분히 받아들인다.
제품의 검토에 집중
참가자 수 제한
테스트 원칙
완벽한 테스트는 불가능
개발자가 테스트 x
결함을 밝히는 활동
계획 단계부터 해야한다.
파레토 법칙 : 오류의 80%는 전체 모듈의 20% 내에 발견
낚시의 법칙 : 특정 기능, 모듈, 라이브러리에서 결함이 많이 발견
Defect Clustering 결함 집중 : 대부분 소수의 특정한 모듈에 집중
Absence of Errors Fallacy 오류-부재 궤변
사용자 요구사항 만족 못한다면, 품질이 높다고 말할 수 없다.
오류를 100% 없애는 것이 목적이 아니라, 일정 수준 이하로 줄이는 것
Pesticide Paradox 살충제 패러독스 : 주기적으로 테스트 케이스 점검하고 개선
테스트 프로세스
테스트 계획
분석 및 디자인
테스트 케이스 및 시나리오 작성
...
테스트 기법 분류
분석 기법, 설계 기법, 실행 기법, 자동화 기법
테스트 설계 기법
구조기반 설계, 명세기반, 경험기반
명세 기반
결정 테이블, 정형 명세 기반, 유한 상태 기반
동적 테스트 : 화이트 박스, 블랙 박스
정적 테스트 : 인스펙션, 코드 테스트, Walk-Through
화이트 박스 테스트
가장 기본적인 방법
소스코드 모든 문장 한 번 이상 수행
제어 구조 따라 선택, 반복 등 , 논리적 경로 점검
종류
기초 경로 테스트 Base Path Testing
데이터 흐름 테스트 Data Flow Testing
루프 조건 테스트
찾을 수 있는 오류
세부적, 논리 구조상
반복문, 수행 경로
블랙박스 테스트
종류
동등\균등 분할
경계값
오류예측
원인 결과 그래프
비교 그래프
찾을 수 있는 오류
부정확
인터페이스
자료 구조상
성능
시작 종결상
기초 경로 테스트
MaCave Cyclomatic
복잡도 = E - V + 2
모듈의 크기는 제한 하고 있다.
인접 행렬 복잡도
( 0 1 0 1 1 0 3 - 1
0 0 0 0 1 0 1 - 1
1 0 1 1 0 0 3 - 1
0 1 0 0 1 0 2 - 1 = 5 + 1 = 6
단위 테스트
코드 테스트
모듈 테스트
프로그램 설계 테스트