어플리케이션 테스트
- 잠재적 결함 찾는 과정
어플리케이션 테스트 원리
- 완전한 테스트는 없음
- 결함 집중 : 20% 코드에 80% 결함 집중(파레토 법칙)
- context 정황 의존
- 살충제 패러독스 : 동일한 테스트 케이스 반복시 에러 안남 -> 테스트 케이스 개선 필요
- 오류 부재의 궤변 : 오류가 없더라도 요구사항 불만족은 좋은 콛 ㅡ아님
테스트 실행 여부에 따른 분류
1. 정적 테스트
- 실행 없이 하는 테스트
- 워크 스루 : 개발자 작업 전문가가 검토
- 인스팩션 : 소프트웨어 개발 결과물 개선 방법 제안
2. 동적 테스트
- 소프트웨어 실행을 통한 테스트
- 화이트 박스 테스트, 블랙 박스 테스트
테스트 형태에 따른 분류
1. 명세 기반 테스트
- 명세서를 이용한 테스트 케이스로 검사
- 동치 분할 검사, 경계값 검사
2. 구조 기반 테스트
- 논리적 흐름에 따라 테스트 케이스로 검사
- 구문 기반, 조건 기반 등
3. 경험 기반 테스트
- 테스트의 경험 이용
- 체크리스트, 에러 추정
시각에 따른 테스트
- 검증 vertification 테스트 : 개발자 관점에서 테스트
- 확인 validation 테스트 : 사용자 시점에서 테스트
화이트 박스 테스트
- 소스 코드의 로직을 따라 검사
- 기초 경로 검사 : 논리적 복잡도 측정
- 제어 구조 검사 : 조건 검사, 루프 검사, 데이터 흐름 검사
블랙 박스 테스트
- 기능 수행 여부를 확인
- 동치 분할 검사 : 타당한 입력과 잘못된 입력을 동일한 비율로 만들어 검사
- 경계값 분석 : 입력 조건의 경계값 이용
- 원입-효과 그래프 : 입력에 대한 출력을 분석하여 검사
개발 단계에 따른 테스트 과정
1. 단위 테스트 : 컴포넌트별 검사
2. 통합 테스트 : 컴포넌트 통합 과정에서의 테스트
3. .시스템 테스트 : 사용 환경에서 점검 테스트
4. 인수 테스트 : 사용자 요구사항 충족 여부 테스트
- 사용자 인수 테스트 : 사용자가 적절성 테스트
- 운영상 인수 테스트 : 관리 운영 관련 기능 테스트
- 계약 인수 테스트 : 계약 잘지켰는지 테스트
- 알파 테스트 : 사용자가 개발자 앞에서 테스트
- 베타 테스트 : 일부 사용자 선정하여 테스트
테스트 과정
1. 테스트 계획
2. 테스트 분석
3. 테스트 케이스, 시나리오 작성
4. 테스트 수행
5. 결과 평가
6. 결함 추적, 관리
테스트 과정 결과물
- 테스트 계획서 : 테스트 계획 관련 문서
- 테스트 케이스 : 테스트 입력값, 예상 출력 값 등 관련 명세
- 테스트 시나리오 : 여러 테스트 케이스 동작 순서 기술
- 테스트 결과서 : 테스트 결과 분석
테스트 케이스 작성 순서
1. 테스트 계획
2. 우선순위 판단
3. 테스트 요구사항 정의
4. 테스트 구조 설계, 방법 결정
5. 테스트 케이스 정의
6. 테스트 케이스 타당성 확인
테스트 오라클
- 테스트 결과가 올바른지 확인하기위한 방법
- 참 오라클 : 모든 테스트 케이스 입력값에 대해 결과 제공하여 모든 오류 검출
- 샘플 오라클 : 일부 테스트 케이스 입력값에 대한 결과로 오류 검출
- 추정 오라클 : 일부 테스트 케이스 입력과 나머지 추정 입력을 사용
- 일관성 오라클 : 어플리케이션 변경 후에도 결과 값이 동일한지 확인
테스트 자동화 도구
- 정적 분석 도구 : 실행없이 코드 결함 분석
- 테스트 실행 도구 : 스크립트 언어를 이용하여 실행하는 테스트
- 성능 테스트 도구 : 처리량, 응답시간, 자원 사용률 등 성능 테스트
- 테스트 통제 도구 : 테스트 형상, 결함 추적
- 테스트 하네스 도구 : 테스트 환경 시뮬레이션하여모듈 동작
결함 추적
- 결함 등록
- 결함 검토
- 결함 할당
- 결함 수정
- 결함 조치 보류
- 결함 종료
- 결함 해제
성능 지표
- 처리량 : 처리하는 양
- 응답 시간 : 응답 도착할때 시간
- 경과 시간 : 처리 완료까지 시간
- 자원 사용률 : cpu, 메모리 사용량 등