테스트 설계 기법 부분은
크게 정적테스트와 동적테스트(구조 기반 테스트, 명세 기반 테스트)로 나뉜다.
1. 정적 테스트
- 리뷰 : 전문가가 모여 프로그램/산출물 등을 검토하여 결함 검출. 수작업 중심의 방법
ex) 관리 리뷰, 기술 리뷰, 인스펙션, 워크쓰루, 감사 - 정적 분석 : 자동화된 도구 지원을 받아 테스트 수행
ex) 코딩 표준, 코드 복잡도 분석, 자료 흐름 분석
리뷰 프로세스
- 경영진 준비 : 필요한 자원 제공하고 표준 및 관련 정책의 요구에 따른 리뷰 수행 보장
- 리뷰 계획 : 리뷰 리더가 팀을 구성하고 책임을 할당하며 리뷰에 필요한 자료/일정 제공
- 리뷰 절차 개요 설명 : 리뷰 리더의 요청이 있을 때 수행. 리뷰 목적과 리뷰 절차 설명. 자격있는 사람이 수행(꼭 리더일 필요 X)
- 작업물 개요 설명 : 리뷰 리더 요청 있을 때 수행. 리뷰 참가자들이 작업물 사전 이해도를 높이기 위함
- 개별 준비 : 팀 멤버들이 개별적으로 작업물/프로세스 검토. 문제 있을 시 리뷰 리더에게 보고
- 그룹 검토 : 모든 팀 멤버들이 참여하는 회의를 통해 작업물 상태에 관해 합의 도출
- 재작업 : 검출된 문제를 개발자와 책임자에게 전달
- 후속작업 : 리뷰 리더는 모든 조치 항목을 완료하였는지 확인
관리 리뷰
- 진행 상황을 모니터하고 계획과 현재 일정을 평가하여 필요시 자원, 일정, 범위 등을 변경
- 위의 리뷰 프로세스를 따르지만 4번(작업물 개요 설명)은 수행 X
기술 리뷰
- 적절하게 구현되었는지, 계획/법규/표준/명세를 지켰는지, 의도된 사용에 적합한지 등 기술적 상태를 확인
- 대표 엔지니어가 주재하며 경우에 따라 관리자도 참가
- 다른 리뷰와 다르게 관리자가 팀 멤버로 참여 가능
인스펙션 (기술적 리스크)
- 리뷰 중 가장 형식화된 대표적인 방식
- 동료 검토. 비슷한 수준/역할 가진 사람들이 코드/산출물을 검토
- 가능한 개발 초기에 검사해야함
- 장점
- 품질 투입 비용 감소하여 개발 기간 단축
- 코딩 전까지 일반적인 개발보다 소요 인력이 더 많이 필요.
- 초기 프로젝트 비용 증가하지만 개발 단계의 재작업과 투입 인력 감소
- 참가자의 역할
- 주재자 : 검사할 작업물을 기반으로 인스펙션 참가자를 선정하고 계획. 인스펙션 회의를 주재. 회의 후 보고서를 개발자에게 전달하고 프로세스 개선 위해 데이터를 수집. 보통 주재자는 퍼실리테이터가 담당.
- 작성자 : 회의에 필요한 자료를 제출하고 회의 후 검출된 결함에 대해 재작업해야함
- 낭독자 : 회의에서 작업물에 대해 설명하고 이끄는 역할 수행
- 기록자 : 회의의 모든 내용 기록하여 문서화. 회의에서 검토자 입장에서 참가.
- 검토자 : 자료에서 결함을 찾고 기록
- 과정 : 리뷰 계획 → 인스펙션 절차 개요 설명 → 인스펙션 작업물에 대한 개요 설명 → 준비 → 검토 회의 → 재작업 → 후속작업
- 리뷰 계획 : 리뷰 리더인 주재자가 팀 구성 후 리뷰 일정/필요한 자료 준비
- 인스펙션 절차 개요 설명 : 참가자 역할 할당하고 최소 준비시간, 원하는 인스펙션 수행률 등을 전달
- 인스펙션 작업물에 대한 개요 설명 : 작성자가 검토자들에게 작업물 설명.
- 준비 : 리뷰 회의 전 팀원들은 작업물 검토하고 문제 있을시 주재자에게 전달. 중재자는 검출된 문제를 작성자에게 전달
- 검토 회의 : 작업물의 개별 검토가 완료되면 회의 시작. 낭독자가 참가자들에게 작업물 설명. 작성자는 검토자의 질문을 답함.
- 재작업 : 검출된 문제를 작성자에게 전달하면 작성자는 실제 작업물에서 문제를 해결하는 작업 수행(ex. 코드/설계 변경)
- 후속작업 : 주재자는 모든 문제에 대해 재작업이 충분히 이루었는지 확인
워크쓰루 (사업적 리스크)
- 비형식적인 결함 검출 방법
- 작성자가 작업물을 따라 돌아다니면서(Walkthroughs) 설명도 하고 결함에 대한 권고 조치사항도 기록하며 후속단계도 확인.
- 검출 뿐만 아니라 교육 및 지식 공유를 위해서도 수행
- 작성자 본인이 회의를 주재하며 기록자 역할도 담당하지만 인스펙션과 동일하게 관리자는 팀 멤버로 참여 불가능.
감사
- SW/프로세스가 규제/표준/계획/절차를 준수하는지 독립적으로 평가
- 비준수 사항 사례를 식별하고 교정 활동을 요구하는 보고서 산출
정적 분석
- 코딩 표준 : 개발자가 코드 작성시 지켜야 하는 규약
- 코드 복잡도 분석 : SW는 복잡도가 높지 않아야함. 순환 복잡도 이용하여 분석
- 자료 흐름 분석 : 자료 흐름에 이상이 있는지 분석 (ex. 변수가 정의되었는가?)
- 자료 흐름 이상 패턴
- d : defined
- k : killed
- u : used
- ~x : 모든 선행 행위가 x(d,k,u)와 관련 없음
- x~ : x 이후 행위들이 x 와 관련 없음
- 자료 흐름 이상 패턴
2. 구조 기반 테스트
- 프로그램 제어 흐름 or 자료 흐름 정보를 이용하여 TC 설계
- 구조 기반 테스트 = 화이트 박스 테스트 = 글래스 박스 테스트
- 가장 이상 적인 구조 기반 테스트 : 프로그램 모든 경로를 최소 1번씩 실행
- but 한계가 있어 일부 경로만 테스트
ex) 문장 테스트, 분기 테스트, 조건 테스트, 다중 조건 테스트, MCDC 등- 문장 테스트 : 프로그램의 모든 문장을 최소한 한 번은 실행
- 문장 커버리지 : 실행된 문장 수 / 전체 실행 가능한 문장 수 * 100
- 결정 테스트 : 프로그램의 모든 결정문의 참/거짓되는 경우를 최소한 한 번은 실행
- 결정 커버리지 : 실행된 결정문의 결과 수 / 전체 결정문의 결과 수 * 100
※ 분기 테스트 : 분기들이 최소한 한 번은 실행
- 결정 커버리지 : 실행된 결정문의 결과 수 / 전체 결정문의 결과 수 * 100
- 조건 테스트 : 기본 조건식의 결과값 참/거짓을 적어도 한 번 이상 실행 (결정 테스트와 서로 포용X)
- 다중 조건 테스트 : 테스트 강도가 가장 높으며, 기본 조건식의 가능한 논리 조합이 적어도 한 번 이상 실행
- 결정 조건 테스트 : 각 기본 조건식 및 전체 조건식의 결과값 참/거짓 적어도 한 번 이상 실행
- 변형된 조건/결정 테스트 (MCDC) : 조건 테스트와 결정 테스트 모두 만족
- 기본 경로 테스트 : 프로그램 경로 중 기본 경로를 테스트
- 문장 테스트 : 프로그램의 모든 문장을 최소한 한 번은 실행
제어 흐름 그래프
- 프로그램 구조를 효과적으로 나타냄
- 순환 복잡도 = 분기문 수 + 1
3. 명세 기반 테스트
- 명세 기반으로 TC 개발 (명세 기반 테스트 = 블랙박스 테스트)
- 테스트 전 레벨에서 사용 가능
- 코드 내부 구조를 모르는 사람이 하는게 좋으나 XP에서는 개발자가 할 수 있음
- 장점 : 규모가 큰 시스템도 효과적으로 적용 가능, 구현 관련 지식이 없어도 수행 가능, 사용자 관점에서 수행해서 효과적으로 결함 검출 가능, 코드가 구현될 때까지 기다릴 필요 X
동등 분할
- 프로그램 입력 or 출력을 몇 개 영역(=동등 클래스)으로 분할하여 각 클래스에서 임의로 하나의 값을 선택하여 TC로 이용
- 분할된 동등 클래스의 합집합은 입력 영역 그 자체고 동등 클래스들은 서로 공통된 값이 없어야함
분류 트리 기법
- 테스트 대상 프로그램 행위에 영향을 줄 수 있는 특성들을 도메인 지식, 경험, 명세 등을 이용하여 식별 → 이에 따라 입력, 출력 등 관심 영역을 여러 클래스로 분할
경곗값 분석
- 입력 영역 경계 근처에 있는 값들 통해 TC 설계
- 동등 분할과 마찬가지로 입력/출력 영역을 여러 클래스로 분할하지만 경곗값 분석은 클래스의 경계 or 경계 근처에 있는 값을 사용
조합 테스트
- 테스트 대상 프로그램 내 여러 클래스의 각 입력 인자를 동등 분할이나 BVA 등의 방법으로 여러 클래스/값으로 분할하였을 때 이들을 조합하여 TC를 구성하는 방식
- 종류
- Each choice 테스트 : 각 입력 인자의 분할된 클래스에서 최소한 하나의 입력값이 TC에 포함
- 페어와이즈 테스트 : 각 인자의 값(or 클래스)과 다른 인자의 값(or 클래스)을 최소한 한 번은 조합을 하여 테스트
- All combinations 테스트 : 모든 입력 인자의 모든 가능한 클래스 조합이 TC들에 포함
- Base choice 테스트 : 기반이 되는 테스트 조합을 미리 선정하고 선정된 기반 테스트에서 하나의 인자에만 변경을 주며 나머지는 기반 테스트 값으로 고정하여 TC 생성
결정표 테스트
- 결정표를 이용하여 TC를 설계
- 논리적으로 의존적인, 가능한 모든 조건의 조합을 생성하여 누락된 요구사항을 검사하고자 할 때 효과적임
상태 전이 테스트
- 시스템을 상태 전이도로 모델링한 후 TC들을 상태 전이도에서 체계적으로 선정하는 방법
- 상태 전이도 : 시스템 외부에서 들어오는 일련의 이벤트들에 대해 시스템 상태가 어떻게 전이되고 어떤 식으로 반응하는가 나타냄
- 종류
- 상태 테스팅 : 상태 전이도의 모든 상태를 최소한 한 번은 방문
- 단일 전이 테스트 (0-switch) : 상태 전이도의 모든 유효한 전이들을 최소한 한 번은 방문
- 다중 전이 테스트 (N-switch) : 상태 전이도에 있는 N+1개의 전이 시퀀스들을 최소한 한 번은 방문
- All transitions 테스트 : 유효한 전이를 포함하여 유효하지 않은 전이들도 최소한 한 번은 방문
시나리오 테스트
- 기존의 요구사항 명세서에서 각 개별 기능에 대한 상세한 내용이 시나리오 형태로 기술하여 기능 테스트 수행
반응형
'💻 개발IT > 기타' 카테고리의 다른 글
[AdMob] 전면/리워드 광고 캐싱 적용 후기 (0) | 2024.03.11 |
---|---|
느슨해진 1인개발자에 동기 부여/정보를 주는 사이트 모음 (2) | 2024.01.26 |
[RevenueCat] There is an issue with your configuration (0) | 2023.09.20 |
CSTS 요약 3 - 테스트 프로세스 (0) | 2023.06.13 |
CSTS 요약 1 - 테스트 개요 (0) | 2023.06.12 |
[gitlab-ci.yaml] config contains unknown keys: rules (0) | 2023.03.21 |
[Python] 위키피디아(한국어) 데이터 가져오기 (1) | 2023.02.08 |
[FastText] 단어 유사도 구현하기 (0) | 2023.02.07 |