애플리케이션테스트케이스설계
- 개발하고자 하는 응용 소프트웨어의 특성을 반영한 테스트 방식, 대상과 범위를 결정하여 테스트 케이스를 작성
- 테스트 방식, 대상과 범위가 적용된 시나리오를 정의
- 테스트 데이터, 테스트 시작 및 종료 조건 등을 준비
소프트웨어 테스트의 개념
- 구현된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능의 동작과 성능, 사용성, 안정성 등을 만족하는지 확인하기 위하여 소프트웨어의 결함을 찾아내는 행동
소프트웨어 테스트의 필요성
- 오류 발견 관점
- 프로그램에 잠재된 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발하는 활동
- 오류 예방 관점
- 프로그램 실행 전에 코드 리뷰, 동료 검토, 인스펙션 등을 통해 오류를 사전에 발견하는 예방 차원의 활동
- 품질 향상 관점
- 사용자의 요구사항 및 기대 수준을 만족하도록 반복적인 테스트를 거쳐 제품의 신뢰도를 향상하는 품질보증활동
소프트웨어 테스트의 기본 원칙
- 테스팅은 결함이 존재함을 밝히는 활동
- 완벽한 테스팅은 불가능
- 개발 초기에 시작
- 결함 집중
- 살충제 패러독스
- 주기적으로 테스트 케이스를 리뷰하고 개선
- 테스팅은 정황에 의존식
- 테스트 대상에 따라 테스트를 다르게 수행
- 오류-부재의 궤변
- 사용자 요구사항을 만족하지 못하는 결함을 찾고 수정하는 것은 무의미
소프트웨어 테스트의 프로세스
- 테스트 프로세스 유형은 테스트 계획 수립 단계와 수행 단계, 결과 보고 단계에 따라 테스트 프로세스 유형이 다름
소프트웨어 테스트 산출물
- 테스트 계획서
- 목적과 범위 정의
- 대상 시스템 구조 파악
- 테스트 수행 절차
- 테스트 일정
- 조직의 역할 및 책임 정의
- 종료 조건 정의
- 테스트 케이스
- 설계 산출물
- 명세서
- 입력값
- 실행 조건
- 기대 결과
- 테스트 시나리오
- 테스트 케이스의 집합
- 절차를 명세한 문서
- 테스트 결과서
- 테스트 프로세스를 리뷰
- 테스트 결과물 평가하고 리포팅하는 문서
소프트웨어테스트 분류
정적 테스트 : 프로그램 실행 없이 테스트
- 코드를 실행하지 않고 여러 참가자가 모여 소프트웨어 개발 중에 생성되는 모든 명세나 코드를 검토
- 정적 테스트
- 기술적 검토기법
- 개별 검토
- 동료 검토
- 검토 회의
- 관리적 검토기법
- 검사
- 감사
- 기술적 검토기법
동적 테스트 : 테스트 데이터를 이용해 프로그램 실행 테스트
- 명세 기반 테스트(블랙박스 테스트)
- 코드를 열어 오류를 찾지 않고 입력값에 대한 예상값을 정해 놓고 그대로 결과가 나오는지 확인
- 방법
- 신택스
- 동등분할
- 경계값분석
- 원인-결과 그래프
- 의사결정 테이블
- 페어와이즈
- 구조 기반 테스트(화이트박스 테스트)
- 프로그램을 보면서 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인
- 방법
- 구문 기반
- 결정 기반
- 조건 기반
- 조건결정 기반
- 변경조건 결정 기반
- 멀티 조건 기반 커버리지 테스트
테스트 케이스 개념
- 명세 기반 테스트 설계 산출물
- 특정한 요구사항을 준수하는지 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서
테스트 케이스 작성 절차
- 테스트 계획 검토 및 자료 확보
- 시스템 요구사항
- 기능 명세서 검토
- 위험평가 및 우선순위 결정
- 상대적 중요성과 테스트의 초점 결정
- 테스트 요구사항 정의
- 시스템 요구사항
- 테스트 대상 재검토
- 테스트 할 특성, 조건, 기능
- 테스트 구조 설계 및 테스트 방법 결정
- 테스트 절차, 장비, 도구, 문서화 방법
- 테스트 케이스 정의
- 테스트 케이스
- 입력 값
- 실행 조건
- 예상 결과
- 테스트 케이스
- 테스트 케이스 타당성 확인 및 유지보수
- 유용성 검토
테스트 오라클의 개념
- 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법
유형
- 참 오라클
- 모든 입력 값에 대하여 기대하는 결과를 생성
- 샘플링 오라클
- 특정한 몇 개의 입력 값에 대해서
- 휴리스틱 오라클
- 특정 입력 값에 대해 올바른 결과를 제공하고 나머지 값들에 대해 추정으로 처리
- 일관성 검사
- 애플리케이션 변경이 있을 때, 수행 전과 후의 결과 값이 동일한지 확인
V모델과 테스트 단계
테스트 단계별 기능 검증 사항
- 단위 테스트
- 프로그램의 기본 단위인 모듈(함수, 서브루틴, 컴포넌트)의 기능 수행 여부를 판정하고 내부에 논리적 오류 검출
- 통합 테스트
- 모듈 간의 인터페이스 연계를 검증
- 모듈 간의 인터페이스 오류를 확인
- 상호 작용 및 연계 동작 여부 판정하는 방안 파악
- 시스템 테스트
- 시스템 전체가 정상적으로 동작하는지 기능적, 비기능적 명세를 확인
- 인수 테스트
- 사용자가 요구분석 명세서에 명시된 사항을 모두 충족하는지 판정
- 시스템이 예상대로 동작하고 있는지 점검