애플리케이션 테스트
•
애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차
기본 원리
파레토 법칙(20% → 80%)
살충제 패러독스(동일 테스트케이스 → 동일 오류만 검출)
오류-부재의 궤변(오류가 없다고 품질이 높은 것은 아니다)
프로그램 실행 여부에 따른 테스트 구분
정적 테스트(워크스루, 인스펙션, 코드 검사)
동적 테스트
•
블랙박스
◦
각 기능이 완전히 작동되는 것을 입증하는 테스트
◦
종류
▪
동치 분할 검사
•
입력 조건에 타당한 입력자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 입력에 따른 결과가 정상적으로 출력되는지 확인
▪
경계값 분석
•
입력 조건의 경계값을 테스트 케이스로 선정
▪
원인-효과 그래프 검사
•
입력 데이터와 출력 간의 관계를 파악하여 효용성이 높은 테스트 케이스를 선정
▪
오류 예측 검사
•
과거의 경험이나 확인자의 감각으로 테스트하는 기법
▪
비교 검사
•
여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 확인하는 기법
•
화이트박스
◦
원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계
◦
종류
▪
기초 경로 검사
▪
제어 구조 검사
•
조건 검사
•
루프 검사
•
데이터 흐름 검사
◦
검증 기준
▪
문장 검증 기준
•
모든 구문이 한 번 이상 수행
▪
결정 검증 기준
•
모든 1차 조건식의 결과가 True, False 각각 한 번 이상 수행
▪
조건 검증 기준
•
개별 조건식의 결과가 True, False 각각 한 번 이상 수행
▪
조건/결정 검증 기준
•
조건, 결정 검증 기준을 모두 만족하는 설계
▪
변경 조건/결정 검증 기준
•
개별 조건식이 다른 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 테스트 케이스를 설계
▪
다중 조건 검증 기준
•
모든 개별 조건식의 모든 조합을 고려하도록 테스트 케이스를 설계
시각에 따른 테스트 구분
검증 테스트
확인 테스트
목적에 따른 테스트
회복 테스트
안전 테스트
강도 테스트
성능 테스트
구조 테스트
회귀 테스트
병행 테스트
개발 단계에 따른 애플리케이션 테스트
단위 테스트(모듈이나 컴포넌트에 초점을 맞춰 테스트)
통합 테스트(단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성하는 과정에서의 테스트)
•
비점진적 통합 방식
◦
빅뱅 통합 테스트 방식
•
점진적 통합 방식
◦
하향식 통합 테스트
▪
상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법, 스텁 사용
◦
상향식 통합 테스트
▪
하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법, 테스트 드라이버 사용
◦
혼합식 통합 테스트
시스템 테스트(개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 실행되는지 점검하는 테스트)
인수 테스트(알파, 베타 테스트)
회귀 테스트(통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트)
테스트 오라클(테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법)
참 오라클(모든 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클)
샘플링 오라클(특정한 몇몇 케이스에 대해 기대하는 결과를 제공하는 오라클)
추정 오라클(특정 케이스의 입력 값에 대해 기대하는 결과를 제공하고 나머지는 추정으로 처리하는 오라클)
일관성 검사 오라클(애플리케이션에 변경이 있을 때 수행 전과 후의 결과 값이 동일한지 확인하는 오라클)
테스트 자동화 도구
정적 분석 도구
테스트 케이스 생성 도구
•
자료 흐름도
•
기능 테스트
•
입력 도메인 분석
•
랜덤 테스트