* 이 글은 개발자도 알아야할 소프트웨어 테스팅 실무 제3판을 토대로 작성되었습니다.
* 책에 실린 내용 외 추가적인 정의가 있으며 교재 목차와 순서가 다소 다를 수 있습니다.
* 2차 가공 및 재배포는 금지합니다.
* 잘못된 개념 혹은 오탈자는 댓글로 알려주세요.
1. 테스트 설계 및 구현 프로세스
[ 테스트 명세서 종류 ]
* 테스트 설계 명세서
- 설계 명세서 식별자, 테스트 대상 특성, 세부 접근 방법, 테스트 식별 및 특성의 성공/실패 기준
* 테스트 케이스 명세서
- 식별한 테스트 케이스를 정의하는 문서
* 테스트 프로시저 명세서
- 테스트 케이스 실행을 위한 단계를 명시하고 있는 문서
[ 테스트 설계 구현 프로세스 ]
* 우선 순위 선정 및 배치
- 테스트 프로시저 명세서를 만듦
* 테스트 실행 스케줄 구성
- 작성된 테스트 프로시저와 자동화된 테스트 스크립트를 언제 누가 수행할 것인지에 대해 구성
* 테스트 케이스 작성
- 테스트 수행 절차를 얼마나 상세하게 작성할지를 결정해야 함
2. 테스트 설계 기법의 종류
[ 소프트웨어(시스템) 내부 구조(코드) 참조 여부에 따른 구분 ]
* 블랙박스 테스팅 ( Black-Box Testing )
- 기능 테스팅, 사용자 관점에서의 테스트 방법
- 명세 기반 기법과 경험 기반 기법 포함
- 작동 원리를 모르는 상태에서 동작을 검사하는 방식
- 기능이 오류없이 작동하고 명세에 맞게 작동하는지 시험하는데 사용
* 화이트박스 테스팅 ( White-Box Testing )
- 구조 기반 기법, 개발자 관점에서의 단위 테스팅 기법
- 소프트웨어 내부 소스 코드를 보면서 필요한 정보들을 사용
- 컴포넌트(단위) 또는 소프트웨어의 구조를 중심으로 테스트 케이스를 도출
[ 테스트 설계의 근원을 기준으로 구분 ]
* 명세 기반 기법
- 주어진 명세를 빠뜨리지 않고 테스트 케이스화하는 것
- 커버리지 측정이 가능하나 구조 기반 기법의 커버리지에 비해 제한적
* 구조 기반 기법
- 소프트웨어 코드나 설계 등 구조를 보여주는 정보로부터 테스트 케이스를 도출
- 커버리지를 높이기 위해 테스트 케이스를 시스템적으로 도출 추가 가능
* 경험 기반 기법
- 테스터, 개발자, 사용자 등의 지식이나 경험으로 테스트 케이스 도출
3. 기본, 고급 설계 기법
[ 명세 기반 기법 기본 ( Specification-based technique ) ]
* 명세 기반 기법 ( Specification technique )
- 시스템에서 제공하는 기능 및 메뉴 등 명세를 기반으로 테스트 케이스를 설계하는 기법
* 동등 분할 ( Equivalence partitioning )
- 동일한 영역 내에서는 어떠한 값을 선택해도 항상 같은 결과를 기대
예) 성적 등급 계산 범위, 휴대폰 배터리 잔량 표시 (입력값)
- 0 ≤ 점수 ≤ 49 (30) | 50 ≤ 점수 ≤ 69 (60) | 70 ≤ 점수 ≤ 89 (80) | 90 ≤ 점수 ≤ 100 (95)
- 같은 범위안에서는 어떠한 입력값을 입력하더라도 동일한 결과가 나옴
* 경계값 분석 ( Boundary value analysis )
- 입력 조건의 중간 값보다 경계값에서 에러가 발생될 확률이 높다는 점을 이용하여 테스트 케이스 생성
예) 위의 예시 이어서
- two-value : ( -1, 0 ), ( 49, 50 ), ( 69, 70 ), ( 89, 90 ), ( 100, 101 )
- three-value : ( -1, 0, 1 ), ( 48, 49, 50, 51 ), ( 68, 69, 70, 71 ), ( 88, 89, 90, 91 ), ( 99, 100, 101 )
- 동등 분할에서 데이터 선택은 특성상 테스트 결과가 달라질 수 있음
- 테스터의 오류가 아닌 기법에서 제한적 테스트를 하기 때문
- 경계값 분석에서 데이터 선택은 파티션의 최대/최소 값을 선택하는 경우 누가 선택해도 같은 값이 나오게 됨
* 결정 테이블 테스팅 ( Decision table testing )
- 요구사항의 논리와 발생 조건에 따라서 생성될 수 있는 결과를 테이블의 형태로 나열한 것
- 조건과 처리를 논리적 관계로 표현할 수 있는 모델에 적용
- 조건은 원인, 처리는 결과로 참과 거짓으로 표현
예) 휴대폰에 탑재되는 은행 업무 소프트웨어의 접속 부분
- 칩 유효성, 유효한 비밀번호, 정상 계좌, 은행 업무의 메뉴를 이용 등
- 장점 : 요구사항 등 테스트 베이시스의 문제점을 발견하는데 효과적인 테스트 케이스 생성 가능
- 단점 : 작성에 많은 노력과 시간이 소요될 수 있음
* 상태 전이 테스팅 ( State transition testing )
- 시스템에 반영되는 이전의 상태가 무엇인지, 상태간의 전이, 상태를 변화시키는 이벤트와 입력값을 파악
- 상태 전이 다이어그램 사용
예) MP3 동작 테스트, 음료 자판기 동작 테스트 등
* 유즈케이스 테스팅 ( Use case testing )
- 실제 시스템의 동작을 사용자 입장에서 표현한 시나리오
- 시스템에 관련한 요구사항을 알아내는 과정
[ 명세 기반 기법 고급 ]
* 분류 트리 기법 ( Classification Tree Method - CTM )
- 소프트웨어의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하는 기법
- 트리 구조를 시각화하여 테스트 케이스를 설계하므로 불필요한 중복 및 누락을 회피할 수 있음
예) 모바일 뱅킹의 계좌 이체 : 이체 앱 → 비밀번호 | 입금계좌 | 이체금액 | 의뢰인 등
* 페어와이즈 조합 테스팅 ( Pairwise testing )
- 대부분의 결함은 많아야 두 개 요소의 상호 작용에 의해 야기된다는 관찰에 기반하고 있는 기법
- 장점 : 모든 조합에 비해 상대적으로 적은 양의 테스트 세트 구성 가능
- Flat 조합 : 테스트 데이터 개수가 가장 많은 변수를 기준으로 단순 조합한 것
- A) 1, 2, 3 | B) 4, 5
- Flat) (1,4), (2,5), (3,4) | Pairwise (1,4), (1,5), (2,4), (2,5), (3,4), (3,5)
* 직교 배열 테스팅 ( Orthogonal array testing )
- 잠재된 조합의 거대한 양을 처리하기 위한 테스트 케이스를 선정하는데 도움을 주는 통계적 테스팅 기법
- 어느 행의 조합도 서로 다른 행의 조합과 서로 다르고, 어느 열의 조합도 서로 다른 열의 조합과 서로 다름
[ 구조 기반 기법 기본 ]
* 구조 기반 기법 ( Structure-based technique )
- 코드와 개발 설계 등의 소프트웨어 구현 정보를 기반으로 테스트 케이스를 설계하는 기법
* 구문 테스팅과 커버리지 ( Statement testing and coverage )
- 프로그램 내의 모든 문장들을 한 번 이상 수행하도록 테스트 케이스를 설계하는 기법
* 결정 테스팅과 커버리지 ( Decision testing and coverage )
- 프로그램 내의 각 분기들을 한 번 이상 수행하도록 테스트 케이스를 설계하는 기법
- 전체 조건식이 최소한 참이 한 번 그리고 거짓이 한 번 선택되었는지 측정하여 퍼센트로 표현
* 조건 테스팅과 커버리지 ( Condition testing and coverage )
- 조건들이 참이 되는 경우와 거짓이 되는 경우를 모두 수행하도록 테스트 케이스를 설계하는 기법
- 전체 조건식의 결과와 관계없이 각 개별 조건식이 참 한번, 거짓 한 번을 모두 갖도록 함
* 다중 조건 커버리지 ( Multiple condition coverage )
- 프로그램 내의 모든 개별 조건식의 모든 가능한 논리적 조합을 고려한 강력한 커버리지
- 출시 전에 반드시 100% 결함을 제거해야 하는 제품 테스트에서 주로 사용
* 변형 조건/결정 커버리지 ( Modified Condition/Decision Coverage )
- 각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 독립적으로 영향을 줌
[ 구조 기반 기법 고급 ]
* 분할 ( Splitting ) 방법으로 접근한 조건/결정 커버리지
- 분할 ( Splitting ) : 생성한 모든 논리적 조합을 분할하여 테스트 케이스를 작성하는 방식
결함의 원인 판단은 빠르지만 테스트 케이스 수가 크게 증가하게 됨
* 포함 ( Including ) : 생성한 조합 중 단 하나만 선택하여 하나의 논리적 테스트 케이스를 작성
결함의 원인 판단이 느리지만 적당한 커버리지 만족과 테스트 케이스 수를 가짐
[ 경험 기반 기법 기본 ]
* 경험 기반 기법 ( Experience-based technique )
- 테스터, 개발자, 사용자 등의 지식이나 경험으로 테스트 케이스 도출
- 공식적인 기법으로 다루기 어려운 특별한 케이스를 찾아 실행
* 탐색적 테스팅 ( Exploratory testing )
- 테스트 디자인, 수행, 기록, 학습이 동시에 진행
- 테스트 목적을 담고 있는 테스트 차터를 기반으로 제한 시간 내에 수행하는 것
- 테스트 케이스를 먼저 설계하지 않고, 테스트 대상 제품을 실행과 동시에 테스트 케이스 작성 및 수행
테스트 케이스 기반 테스팅 | 탐색적 테스팅 |
테스트가 먼저 설계됨 | 테스트가 설계됨과 동시에 수행 |
테스트 실행 관리 | 테스트 설계 향상 |
실행 전 테스트 케이스 작성 | 프로젝트 기반 내내 테스트 계획, 설계, 실행 반복 |
한 번에 완벽한 테스팅 수행 | 점진적이고 주기적으로 테스팅 수행 |
* 오류 추정 ( Error Guessing )
- 테스터가 테스트 대상 시스템을 완전히 이해하고 있다는 전제로 진행함 ( 테스트 마지막 단계에서 수행 )
- 가능한 결함을 나열하고 결함이나 오류를 추정에 의해 검출 및 수정
- 유용성 : 참고 명세가 거의 없거나 불충분할 경우, 시간적 압박이 심한 경우 등
* 체크 리스트 ( Checklists )
- 테스트하고 평가해야 할 내용과 경험을 분류하여 나열해 놓은 체크리스트를 기반으로 테스트 수행
테스트 케이스 | 체크 리스트 |
입력값, 예상 결과 등의 집합 | 테스트 항목을 예/아니오로 답할 수 있게 나열할 목록 |
동적 테스팅의 주요 도구 | 정적 테스팅 기법의 주요 도구 |
예시 | |
사전 조사 / 실행 절차 / 기대 결과 / 실행 결과 | 이러한 기능이 있는가? (예/아니오) 등록이 되는가? (예/아니오) |
4. 기법 선택 및 특성에 따른 테스팅
[ 테스트 기법의 선택 ]
* 고려되어야 할 요인
- 시스템 유형
- 고객 또는 계약상의 요구사항
- 리스크 수준 및 유형
- 테스터의 지식 수준
- 시간과 예산
- 유즈케이스, 상태 다이어그램 등 모델 존재 유무
* 테스트 기법은 여러가지가 동시에 복합적으로 선택되어 사용됨
[ 소프트웨어 특성에 따른 테스팅 ]
* 기능성
- 요구되는 기능 및 성능을 만족시키는 능력
- 기능 하나 하나에 대해 테스트 케이스 작성
- 부특성 : 적합성, 정확성, 상호운영성, 보안성, 준수성(기능성 관련 표준, 규정, 관례 등을 따르는 능력)
예) 메신저나 어플리케이션의 조건이 기대한 결과가 나오는지
* 신뢰성
- 규정된 시스템 환경에서 결함없이 의도한 기능 및 작업을 수행하는 소프트웨어 능력
- 여러 상황의 조합 또는 예외 상황의 처리 능력을 확인하는 절차를 테스트 케이스로 작성
- 부특성 : 성숙성(사용자의 오류를 피하는 능력), 오류 허용성, 회복성, 준수성
예) 사용자가 로그인 화면에 암호를 입력할 때 최대 입력 길이가 되는 20자 이상 입력시 경고음 나오는 것
* 사용성
- 사용자가 이해하고 배우기 쉬운 정도
- 부특성 : 이해성, 학습성, 운용성, 친밀성, 준수성
예) 윈도우 기본 글꼴 정해놓기 ( 통일 )
* 효율성
- 자원의 적절한 사용 및 적정한 반응시간
- 부특성 : 시간의 효율성, 자원 효율성, 준수성
예) 메신저 동시 접속자 수 혹은 목록 검색 시 3초 이내로 DB 목록이 검색되는 것
* 유지보수성
- 소프트웨어의 수정 및 변경의 용이성
- 부특성 : 분석성, 변경성, 안정성, 시험성, 준수성
예) 메신저 서버 장애 시 문제 상황을 로그 파일에 기록하는 것
* 이식성
- 지원하는 다양한 운영환경에서 운영될 수 있는 소프트웨어의 능력
- 부특성 : 적응성, 설치성, 대체성, 공존성, 준수성
예) 윈도우 영문버전이 설치되면 정상적으로 영어가 나오는지, 서로 다른 메신저끼리 충돌이 일어나지 않는 것
'IT 자격증 > ISTQB' 카테고리의 다른 글
ISTQB) Part5 테스트 관리 (0) | 2020.12.29 |
---|---|
ISTQB) Part3 정적 기법 (0) | 2020.12.23 |
ISTQB) Part2. 소프트웨어 수명주기와 테스팅 (0) | 2020.12.23 |
ISTQB) Part 1. 소프트웨어 테스팅의 기초 (0) | 2020.12.23 |
댓글