정보처리기사 (필기)/2. 소프트웨어 개발
[정보처리기사] 2-5. 애플리케이션 테스트
원혜강
2022. 4. 21. 23:14
1. 애플리케이션 테스트
- 잠재되어있는 결함을 찾아내는 행위, 절차
- 검증(Verification, 개발자 입장)
- 확인 (Validation, 사용자 입장)
2. 애플리케이션 테스트의 기본원리
- 완벽한 테스팅 불가, 결함을 없애는건 불가능, 결함을 줄이기 위함임
- 결함은 대부분 특정 모듈에 집중되어있음 / 20% 모듈에 80% 결함 존재 → 파레토 법칙! (pareto)
- 테스트케이스를 지속적으로 보완 및 개선
- 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그 찾지 못함 → 살충제 패러독스!
- 정황에 따라 테스트 다르게 진행 → 테스팅은 정황에 의존적!
- 테스트와 위험은 반비례
- 사용자의 요구사항을 만족시키지 못하면 품질이 높다고 말할 수 없음 → 오류-부재의 궤변!
- 테스트는 작은 부분에서 점점 확대하며 진행
- 개발자와 관계없는 별도의 팀에서 테스트 진행
3. 애플리케이션 테스트의 분류
3-1) 프로그램 실행 여부에 따른 테스트
▶ 정적 테스트
- 프로그램을 실행하지 않고 명세서나 코드를 대상으로 분석하는 테스트
- 개발 초기의 결함 발견 가능, 개발 비용 낮음
- 워크스루, 인스펙션, 코드검사 등
▶ 동적 테스트
- 프로그램을 실행하여 오류를 찾는 테스트
- 소프트웨어 개발의 모든 단계에서 진행 가능
- 블랙박스, 화이트박스
3-2) 테스트 기반(Test Based)에 따른 테스트
- 명세 기반 테스트 : 명세를 빠짐없이 테스트 케이스로 만들어 구현하였는지 확인하는 테스트 / 동등분할, 경계값 분석 등
- 구조 기반 테스트 : 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 / 구문 기반, 결정 기반, 조건 기반
- 경험 기반 테스트 : 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트, 시간 제약있을때 수행하면 효과적 / 에러 추정, 체크리스트, 탐색적 테스팅
3-3) 시각에 따른 테스트
- 검증 테스트 (verification : 개발자 중심) : 개발자의 시각에서 테스트, 명세대로 완성 됐는지
- 확인 테스트 (Validation : 사용자 중심) : 사용자 시각에서 테스트, 요구사항 대로 완성 됐는지
3-4) 목적에 따른 테스트
- 회복 테스트 : 시스템에 여러 결함을 주어 실패하도록 한 후 올바르게 복구되는지 확인
- 안전 테스트 : 시스템 보호 도구가 불법적인 침입으로부터 시스템 보호하는지 확인
- 강도 테스트 : 시스템에 과도한 정보량이나 빈도등을 부과해 과부하시 소프트웨어가 정상적으로 실행되는지 확인
- 성능 테스트 : 소프트웨어의 실시간 성능이나 전체적인 효율 진단, 응답시간, 처리량 등 테스트
- 구조 테스트 : 소프트웨어의 논리적 경로 , 소스코드의 복잡도 평가
- 회귀 테스트 : 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 혹인
- 병행 테스트 : 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력해 결과를 비교
4. 화이트박스 테스트
- 모듈 안의 내용을 직접 볼 수 있음
- 내부의 논리적인 모든 경로를 직접 테스트해 테스트 케이스를 설계
- 소스코드 (Source Code) 의 모든 문장을 한번 이상 수행함으로써 진행
- 논리적 경로 점검
▶ 테스트 종류
- 기초 경로 검사 (Base Path Testing) : 대표적인 화이트박스 테스트, 실행 경로의 기초를 정의하는 지침으로 사용
- 제어 구조 검사 : 조건검사 - 루프검사 - 데이터 흐름 검사
5. 블랙박스 테스트
- 모듈 안에서 어떤 일이 일어나는지 알 수 없음
- 소프트웨어가 수행할 특정 기능을 알기 위해 이 기능이 완전히 작동되는 것을 입증하는 테스트로 기능 테스트라고 함
- 소프트웨어 인터페이스에서 실시되는 테스트
▶ 테스트 종류
- 동치 분할 검사 : 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게, 맞게 출력되는지 확인
- 경계값 분석 : 경계값에서 오류가 발생될 확률이 높다는 점을 이용
- 원인-효과 그래프 검사 : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효율성이 높은 테스트 케이스를 선정해 검사하는 기법
- 비교검사 : 동일한 테스트 자료를 제공해 동일한 결과가 출력되는지 테스트하는 기법
- 오류 예측 검사 : 다른 블랙박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법 (데이터 확인 검사)