1) 애플리케이션 테스트케이스 설계하기
- 애플리케이션 테스트 케이스 작성
- 소프트웨어 테스트 : 소프트웨어의 결함을 적극적으로 찾아내는 활동
-> 테스트 : 알려지지 않은 에러의 발견, 시스템 내부 관련자, 외부의 제3자
-> 디버깅 : 이미 알고 있는 에러의 수정, 에러의 정확한 위치 파악, 에러 타입 식별, 에러 수정 -> 시스템 내부 관련자
- 소프트웨어 테스트 필요성
- 오류 발견 관점
- 오류 예방 관점
- 품질 향상 관점
* V모델
- 소프트웨어 테스트의 기본 원칙
- 테스팅은 개발 초기에 시작 : 소프트웨어 개발 생명 주기의 각 단계에 맞춰 전략적으로 접근하는 것을 고려하라는 의미
- 테스팅은 결함이 존재함을 밝히는 활동 : 결함이 발견 되지 않아도 결함이 없다고 증명할 수 없음
- 완벽한 테스팅은 불가능
- 결함 집중 : 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재(파레토의 법칙)
- 살충제 패러독스 : 동일한 테스트 케이스로 반복 실행하면 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 리뷰하고 개선해야 함
- 테스팅은 정황에 의존
- 오류-부재의 궤변 : 오류를 발견하고 그 오류를 제거하였다 해도 해당 애플리케이션의 품질이 높다고 말할 수 없음
- 소프트웨어 테스트 프로세스
- 소프트웨어 테스트 산출물
- 테스트 계획서
- 테스트 케이스
- 테스트 시나리오
- 테스트 결과서
- 소프트웨어 테스트의 유형
- 프로그램 실행 여부에 따른 실행
- 정적 테스트 : 프로그램의 실행 없이 소스코드의 구조를 분석하여 논리적으로 검증하는 테스트
- 동적 테스트 : 프로그램의 실행을 요구하는 테스트로 화이트박스, 블랙박스 테스트가 있음
- 테스트 기법에 따른 유형
- 화이트박스 테스트 : 프로그램의 내부 로직(수행 경로 구조, 루프 등)을 보면서 테스트를 수행
- 문장 커버리지 : 프로그램을 구성하는 문장들이 최소한 한번은 실행 될 수 있는 입력 값을 테스트 케이스로 선정
- 분기/결정 커버리지 : 프로그램에 있는 분기를 최소한 한번은 실행하게 하는 테스팅 방법
- MC/DC : 조건 커버리지와 분기 커버리지를 보완해서 만든 커버리지, 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 함, 다른 상태들의 변동이 없으며 자신의 상태가 변경 되었을 때 결과 값에 영향을 미치는 경우 해당 상태는 MC/DC를 만족한다 할 수 있음
- 다중 조건 : 전체 조건식의 조건을 검사하는 테스트 케이스를 만드는 방법
- 기본 경로 테스트 : 프로그램의 제어 구조를 플로우 그래프로 표현 -> 순환 복잡도를 통해 독립적인 경로의 수를 찾아 테스트 케이스를 추출하는 기법
* 순환복잡도 : 프로그램 복잡도를 측정하는데 이용, 컴포넌트를 통한 경오릐 수를 측정하며 조건부 분기의 수와 복장성에 의해 결정
- V(G) = E-N+2 = R = P+1
- V(G) : 순환복잡도
- E : 엣지의 수
- N : 노드의 수
- R : 화살표와 노드로 둘러싸인 구역
- P : 분기의 수
- 블랙박스 테스트 : 프로그램의 외부 사용자 요구사항 명세를 보면서, 주로 구현된 기능을 테스트 -> 명세 기반 기법
동등 분할 클래스 : 입력값의 범위를 유사한 특징을 갖는 동등 그룹으로 나누고 각 그룹마다 대표값을 선정하여 테스트 케이스를 생성하는 방식
경계값 분석 : 경계값에 기반하여 테스트 케이스를 설계, 등가 분할된 경계의 유효한 값과 경계에서 가장 가까운 유효하지 않은 값을 테스트 데이터로 선택하여 컴포넌트나 시스템을 테스트 하는 기법
-> 개발자가 분할된 경계값을 처리하면서 개발 상의 실수 가능성이 높다는 것에 착안
도메인 테스트 : 입력 변수들 간에 상관관계가 존재하는 경우 그 관계에 따라 영역을 분할하고 테스트 케이스를 도출하는 방법
- ON 포인트 : 경계에 있는 값
- OFF 포인트 : 경계에 있지 않은 경계에 가까운 값
- IN 포인트 : 경계에 있지 않은 경계 조건을 만족하는 값
- OUT 포인트 : 경계에 있지 않은 경계조건을 만족하지 않는 값
Pairwise 테스트 : 대부분의 결함이 2개 이상 요소의 상호작용에 기인한다는 것에 착안
-> 테스트의 필요한 각 요소의 값들이 다른 값들과 최소한 한번씩은 조합을 이루게 함
상태 전이 테스트 : 테스트 대상 시스템이나 객체의 상태를 구분
-> 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 테스트 케이스로 구성
결정 테이블 기반 테스트 : 입출력값이 True, False로 결정될 수 있는 모든 경우의 수를 확인해볼 수 있는 방법
- 그레이박스 테스트 : 소프트웨어의 내부 구조의 일부만 알고 수행하는 테스트로 블랙박스 시험과 화이트 박스 시험이 혼합된 방식의 시험 형태
- 테스트에 대한 시각에 따른 유형
- 검증(Verification) : 제품의 생산과정을 테스트 -> 올바른 제품을 생산하고 있는지
- 확인(Validation) : 생산된 제품의 결과를 테스트 -> 생산된 제품이 정상적으로 동작하는지
- 테스트 목적에 따른 유형
- 회복테스트 : 시스템에 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는지
- 안전테스트 : 소스코드 내의 보안적인 결함을 미리 점검하는 테스트
- 강도테스트 : 과다 정보량을 부과하여 과부하시에도 시스템이 정상적으로 작동되는지 점검
- 성능테스트 : 시스템이 응답하는 시간, 측정시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등
- 구조테스트 : 내부 논리 경로, 소스코드의 복잡도를 평가
- 회귀테스트 : 변경 또는 수정된 코드에 대하여 새로운 결함 발견 여부를 평가
- 병행테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교
- 테스트 종류에 따른 유형
- 명세 기반 테스트 : 주어진 명세를 빠짐 없이 테스트케이스로 구현하고 있는지
- 구조 기반 테스트 : 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 있는지
- 경험 기반 테스트 : 유사 소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 함, 직관과 기술 능력을 기반
- 테스트 케이스와 테스트 오라클의 이해
- 테스트 케이스의 개념 : 명세 기반 테스트의 설계 산출물
-> 설계된 입력 값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서
-> 테스트 계획 검토 및 자료확보 -> 위험 평가 및 우선순위 결정 -> 테스트 요구사항 정의 -> 테스트 구조 설계 및 테스트 방법 결정 -> 테스트 케이스 정의 -> 테스트 케이스 타당성 확인 및 유지보수
- 테스트 오라클 : 테스트의 결과가 참인지 거짓인지 판단하기 위해 사전에 정의된 참 값을 입력하여 비교하는 기법 및 활동
- 참 오라클 : 모든 입력 값에 대하여 기대하는 결과를 생성함 -> 발생된 오류를 모두 검출
- 샘플링 오라클 : 특정한 몇개의 입력 값에 대해서만 기대하는 결과를 제공
- 휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클 -> 특정 입력 값외 나머지 값들에 대해서는 휴리스틱(추정)으로 처리
- 일관성 검사 오라클 : 애플리케이션 변경이 있을 때, 수행 전과 후의 결과 값이 동일 한지
- 애플리케이션 테스트 시나리오 작성
- 테스트 시나리오 : 테스트 수행을 위한 여러 텥스트 케이스의 집합
-> 테스트 케이스의 동작 순서를 기술한 문서, 테스트를 위한 절차를 명세한 문서
-> 유의점 : 테스트 항목을 하나의 시나리오에 모두 작성하지 않고 시스템별, 모듈별, 항목별 테스트 시나리오를 분리하여 작성 -> 식별자 번호, 문서 번호, 테스트 데이터, 테스트 케이스, 예상 결과, 확인 등의 항목을 포함
- 테스트 환경 구축 : 실제 운영 시스템과 동일 또는 유사한 사양의 하드웨어, 소프트웨어, 네트워크 등의 시설을 구축하는 활동
- 테스트 데이터 : 프로그램의 기능을 하나씩 순번에 따라 확실하게 테스트 할 수 있도록 조건을 갖춘 데이터 -> 테스트를 효율적, 데이터 기밀 유지, 신뢰 및 예측 가능한 테스트
-> 테스트 데이터 유형
- 실제 데이터 : 선행된 연산에 의해 얻어진 것
- 가상의 데이터
'전공 > 정보처리기사 실기' 카테고리의 다른 글
정보처리기사 실기 - 6. 애플리케이션 테스트 관리(3) /성능분석도구/코드리팩토링 (0) | 2021.04.25 |
---|---|
정보처리기사 실기 - 6. 애플리케이션 테스트 관리(2) /통합테스트/테스트자동화/결함관리 (0) | 2021.04.24 |
정보처리기사 실기 - 5. 화면 설계(2) /흐름설계/스토리보드/고객여정지도/HTML5 (0) | 2021.04.23 |
정보처리기사 실기 - 5. 화면 설계(1) /스타일가이드/프로토타입 (0) | 2021.04.18 |
정보처리기사 실기 - 4. 서버 프로그램 구현(3) /알고리즘 (0) | 2021.04.15 |