//구글콘솔 광고 추가가
728x90
반응형
들어가기 전 알아둬야 할 5.1 용어 설명
: 이해 중심! 부족하면 용어 설명 글 참고.
테스트 프로세스 : 테스트 계획, 테스트 모니터링 및 제어, 테스트 분석, 테스트 설계, 테스트 구현, 테스트 실행, 테스트 완료로 상호 연관되어 구성된 활동들의 집합.

제품 백로그 : 제품을 개발하기 위해 수행할 작업의 목록과 우선순위. 제품 소유자가 관리하며 고객의 언어로 기록된다.

스모크 테스트 : 소프트웨어가 기본적인 기능을 수행할 수 있는지, 즉 연기를 내지 않는지 확인하는 테스트를 의미.

메트릭 : 측정을 위해 사용되는 측정 척도 및 방법.

테스트 피라미드 : 레벨별 테스트 양의 관계를 나타내는 시각적 모델로, 테스트 양은 상단보다 하단에 더 많이 분표 돼 있음.
입도 : 세분화된 수준, 상세화 수준.

테스팅 사분면 : 특정 이해관계자 대상으로 하는 등의 여러기준에 따라 테스트 레벨과 테스트 유형을 그룹화한다.

 

5.1 테스트 계획
- 5.1.1 테스트 계획서의 목적과 내용
테스트 계획서란?
: 테스트 프로젝트의 목적, 자원, 프로세스를 설명한다.

< 테스트 계획서의 목적 >
- 테스트 목적 달성을 위한 방법과 일정을 문서화한다.
- 수행한 테스트 활동이 정해진 기준을 충족하는 데 도움을 준다.
- 팀원과 기타 이해관계자의 의사소통 수단으로 사용된다.
- 테스팅이 수립한 테스트 정책 및 전략을 준수함을 보여준다.( or 테스팅이 그것을 준수하지 않는 이유를 설명.)

테스트 계획 활동은 테스터가 리스크, 일정, 인력, 도구, 비용, 노력 등 향후 문제를 고민하도록 함.
테스트 계획서를 준비하는 과정은 테스트 프로젝트의 목적을 달성하는 데 필요한 노력을 추론하는 유용한 방법이다.

< 테스트 계획서의 내용 >
내용 예시
테스트 정황. ex. 범위, 테스트 목적, 제약 사항, 테스트 베이시스.
테스트 프로젝트의 가정 및 제약 사항.  
이해관계자. ex. 역할, 책임, 테스팅 관련성, 채용 및 훈련 요구사항.
의사소통. ex. 의사소통 방법 및 빈도, 문서 양식.
리스크 목록. ex. 제품 리스크, 프로젝트 리스크.
테스트 접근법. ex. 테스트 레벨, 테스트 유형, 테스트 기법, 테스트 산출물, 시작 조건 및 완료 조건, 테스팅의 독립성, 수집할 메트릭, 테스트 데이터 요구사항, 테스트 환경 요구사항, 조직의 테스트 정책 및 테스트 전략과의 편차.
예산 및 일정.  

 

5.1.2 반복 주기와 릴리스 계획에 대한 테스터의 기여
반복적 소프트웨어 개발수명주기에서의 두가지 계획
릴리스 계획 제품 릴리스를 계획하는 단계.

>> 제품 백로그를 (재)정의하며, 큰 사용자 스토리를 작은 사용자 스토리들로 세분화하는 작업을 포함할 수 있다.
>> 개별 반복 주기의 테스트 접근법과 테스트 계획을 위한 기반이 된다.
릴리스 계획에 참여하는 테스터는 
1. 테스트 가능한 사용자 스토리와 인수 조건이 작성되도록 함.
2. 프로젝트 및 품질 리스크 분석에 참여.
3. 사용자 스토리와 관련된 테스트 노력을 추정.
4. 테스트 접근법을 결정.
5. 릴리스를 위한 테스팅을 계획.
반복 주기 계획 개별 반복 주기를 계획하는 것.

>> 반복 주기 백로그와 관련이 있다.
반복 주기 계획에 참여하는 테스터는
1. 사용자 스토리의 구체적인 리스크 분석에 참여.
2. 사용자 스토리의 테스트 용이성을 판단.
3. 사용자 스토리를 업무(특히 테스팅 업무) 단위로 분류.
4. 각 테스팅 업무에 필요한 테스트 노력을 추정.
5. 테스트 대상의 기능 및 비기능적 측면을 식별하고 구체화.

 

5.1.3 시작 조건과 완료 조건

 

시작 조건과 완료 조건은 각 테스트 레벨에 대해 정의해야 하며 테스트 목적에 따라 달라진다.
시작 조건( == 준비의 정의) 어떤 활동을 수행하기 위한 전제 조건을 정의한다.
가장 많이 사용하는 시작 조건
1. 자원의 가용성.(ex. 인력, 도구, 환경, 테스트 데이터, 예산, 시간)
2. 테스트웨어 가용성.(ex. 테스트 베이시스, 테스트 가능한 요구사항, 사용자 스토리, 테스트 케이스)
3. 테스트 대상의 초기 품질 수준.(ex. 모든 스모크 테스트가 합격함)
완료 조건( == 완료의 정의) 특정 활동의 종료를 선언하기 위해 달성해야 하는 사항을 정의한다.
널리 활용하는 완료 조건
1. 충분함에 대한 측정.(ex. 달성한 커버리지 수준, 해결되지 않은 결함 수, 결함 밀도, 실패한 테스트 케이스 수)
2. 종료 기준.(ex. 계획한 모든 테스트 실행, 정적 테스트 수행, 발견한 모든 결함 보고, 모든 리그레션 테스트 자동화 완료)
3. 시간 및 예산의 소진 : 이때 이해관계자들이 추가 테스트 없이 배포하는 리스크를 검토하고 수용했다면, 다른 완료 조건이 충족되지 않더라도 테스트를 종료할 수 있다.

 

5.1.4 추정 기법
테스트 노력 추정은 테스트 프로젝트의 목적을 달성하는 데 필요한 테스트 관련 작업량을 예측하는 것이다.
추정에는 항상 오류가 있을 수 있다는 점을 이해관계자가 명확히 이해하도록 하는 것이 중요하다.

보통은 규모가 큰 작업보다 작은 작업에 대한 추정치가 정확.
따라서 큰 작업에 대해 추정할 때는 우선 여러개의 작은 작업으로 나눈 다음 추정.
< 4가지 추정 기법 > 
메트릭 기반 기법 비율 기반 추정 조직에서 수행한 이전 프로젝트 수치를 수집해 유사 프로젝트를 위한 "표준" 비율을 도출.
보통, 조직에서 직접 수행한 프로젝트에서 수집한 비율이 추정 과정에 사용하기 가장 좋은 자료로 이런 표준 비율을 가지고 새로운 프로젝트에 필요한 테스트 노력을 추정할 수 있다.
ex. 이전 프로젝트에서 개발 노력 대 테스트 노력의 비율이 3:2였고, 현재 프로젝트에서 개발 노력을 600MD로 예상한다면, 테스트 노력은 400MD로 추정할 수있음.
외삽법 현재 프로젝트에서 데이터 수집을 위해 가능한 빨리 측정을 수행.
관찰 결과가 충분히 쌓이면 이 데이터를 가지고 외삽법을 적용해 남은 작업에 필요한 노력의 근사치를 추정할 수 있다.
이 방법은 반복적 소프트웨어 개발수명주기에 매우 적합.
ex. 팀이 지난 세번의 반복 주기에 들인 평균 노력으로 다음 반복 주기의 테스트 노력을 추정할 수 있다.
반복적, 전문가 기반 기법 와이드밴드 델파이 반복적, 전문가 기반 기법으로 전문가의 경험을 기반으로 추정한다.
각 전문가는 독립적으로 노력을 추정. 결과를 수집해서 합의된 범위를 벗어난 편차가 있다면 전문가들이 각자의 추정치에 대해 논의한다. 그 다음 각 전문가에게 논의 결과를 바탕으로 다시 한번 새로운 추정치를 제시하도록 한다.
합의에 도달할 때까지 이과정을 반복한다.
ex. 플래닝 포커는 애자일 소프트웨어 개발에서 많이 사용하는 와이드밴드 델파이의 변형이다. 플래닝 포커는 보통 노력의 규모를 나타내는 숫자가 적힌 카드를 사용해 추정한다.
전문가 기반 기법 3점 추정 전문가가 세개의 추정치를 도출한다.
추정치는 가장 낙관적인 추정치(a), 확률적으로 가장 높은 추정치(m), 가장 비관적인 추정치(b)이며 최종 추정치(E)는 이들의 가중 산출 평균이 된다.
>> 계산식 : E = (a + 4*m + b)/6
     표준 편차(SD) 계산식 : SD = (b-a)/6 
ex. 추정치(MH)가 a=6, m=9, b=18인 경우, E = (6 + 4*9 +18) / 6 =10,
SD = (18 - 6) / 6 = 2 이므로 최종 추정치는 10±2(즉 8과 12 사이의 맨아워)가 됨.

 

5.1.5 테스트 케이스 우선순위지정
테스트 케이스와 테스트 절차를 도출해서 테스트 스위트로 조립하고 나면 테스트 스위트를 테스트 일정으로 구성할 수 있다. 테스트 일정은 테스트 실행 순서를 정의한다.
< 많이 사용하는 테스트 케이스 우선순위지정법 3가지 >
리스크 기반 우선순위지정 리스크 분석 결과에 따라 테스트 실행 순서를 결정.
가장 중요한 리스크를 다루는 테스트 케이스를 먼저 실행.
커버리지 기반 우선순위지정 테스트 실행 순서를 커버리지에 따라 결정.
가장 높은 커버리지를 달성하는 테스트 케이스를 먼저 실행.
"추가 커버리지 우선순위지정"이라는 다른 변형에서는, 가장 높은 커버리지를 달성하는 테스트 케이스가 먼저 실행된다. 이후에 실행하는 각각의 테스트 케이스는 가장 높은 추가 커버리지를 달성하는 것이다.
요구사항 기반 우선순위지정 테스트 실행 순서를 해당 테스트 케이스의 기반이 되는 요구사항의 우선순위에 따라 결정.
요구사항의 우선순위는 이해관계자가 정의.
가장 중요한 요구사항 관련 테스트 케이스를 먼저 실행.
>> 위에서 언급한 3가지 중 하나, 또는 여러 전략을 사용해 우선순위를 지정해서 테스트 케이스 실행 순서를 도출하는 것이 이상적이다. But, 테스트 케이스 또는 테스트 대상 기능이 종속성을 가진 경우 그렇게 하기 힘들 수 있다.

테스트 실행 순서에는 자원의 가용성도 고려해야 한다.
ex. 필요한 테스트 도구, 테스트 환경, 인력이 가용한 시기가 따로 있을 수 있다.

 

5.1.6 테스트 피라미드

< 테스트 피라미드 >
- 테스트에 따라 입도가 다를 수 있다는 것을 보여주는 모델.
- 테스트 피라미들 모델 : 테스트 자동화 수준에 따라 지원하는 목표가 다를 수 있다는 것을 보여줌으로써 팀의 테스트 자동화와 테스트 노력 할당을 도와준다.
- 피라미드 각 층은 하나의 테스트 그룹을 나타냄. 층이 올라갈 수록 테스트 입도가 낮고, 테스트 격리가 어려워지며, 테스트 실행 시간도 길어진다.

아래층 아래층에 있는 테스트는 규모가 작고, 독립적이며, 빠르고, 대상이 되는 기능이 작기 때문에 적절한 커버리지를 달성하기 위해 많은 테스트가 필요한 경우가 많다.
높은 층 복잡하고 상위 수준의 엔드-투-엔드 테스트를 대변한다. 이런 상위 수준 테스트는 보통 하위층의 테스트보다 속도가 느리며, 큰 규모의 기능을 확인하기 때문에 적은 수로 적절한 커버리지를 달성할 수 있다.
층의 수와 각 층의 명칭은 다를 수 있다.
ex. 최초의 테스트 피라미드 모델은 "단위 테스트", "서비스 테스트", "UI 테스트"라는 세 개의 층을 정의했다. 단위(컴포넌트) 테스트, 통합(컴포넌트 통합) 테스트, 엔드-투-엔드 테스트로 정의하는 모델도 많이 알려져 있다. 

 

5.1.7 테스팅 사분면

1 사분면 (기술, 팀) 컴포넌트 및 컴포넌트 통합 테스트를 포함.
이런 테스트는 자동화해야 하며, 지속적인 통합 프로세스에 포함돼야 함.
2 사분면 (비즈니스, 팀) 기능 테스트, 예제, 사용자 스토리 테스트, 사용자 경험 프로토타입, API 테스팅, 시뮬레이션 등 포함.
이런 테스트는 인수 조건을 확인하며, 수동으로 실행하거나 자동화할 수 있다. 
3 사분면 (비즈니스, 제품 평가) 탐색적 테스팅, 사용성 테스팅, 사용자 인수 테스팅을 포함.
이런 테스트는 사용자를 중심으로 이루어지며, 수동으로 실행하는 경우가 많다.
4 사분면 (기술, 제품 평가) 스모크 테스트, 비기능 테스트(사용성 테스트 제외)를 포함.
이런 테스트는 자동화되는 경우가 많다.

 


테스팅 사분면은 반드시 나올 테니 꼭 외워야 함.

나의 경우 1기팀자컴, 2비팀자수기능사용자스토리, 3비제수탐색인수, 4기제자스모크비기능으로 외웠다.

기술 측면인지 비즈니스 측면인지, 팀지원인지 제품 평가인지, 자동화인지 수동인지, 예시로 무슨 테스팅이 들어가는지 찾을 수 있어야 한다. 그냥 간단하게 저 4분면을 그릴 수 있게 외우면 만사가 해결된다. 외울게 많은 5장이다. 잘 알아두자.

 

 

728x90
반응형
728x90
반응형
용어 정리
: 실러 버스 용어 정리. 들어가기 전에 한번 읽어보자.
▼ 혹시나 더 찾아보고 싶은 단어가 있다면 여기로 가서 찾아보기 ▼
++ https://glossary.istqb.org/ko_KR/
결함 관리 : 결함을 인식 및 기록, 분류, 조사, 해결, 처리하는 프로세스.

결함 보고서 : 결함의 발생, 유형, 상태에 대한 문서.

시작 조건 : 정의된 과업을 공식적으로 시작하기 위한 조건의 집합.

완료 조건 : 정의된 과업을 공식적으로 완료하기 위한 조건들의 집합.

제품 리스크 : 제품의 품질에 영향을 미치는 리스크.
프로젝트 리스크 : 프로젝트 성광에 영향을 미치는 리스크.

리스크 : 미래에 부정적인 결과를 초래할 수 있는 요소.

리스크 분석 : 리스크 식별 및 리스크 평가에 대한 전반적인 프로세스.

리스크 평가 : 식별된 리스크를 조사해서 리스크 수준을 결정하는 과정.

리스크 식별 : 리스크를 식별, 인식, 설명하는 프로세스.

리스크 수준 : 영향 및 가능석에 의해 정의된 리스크의 질적, 양적 측정치.

리스크 관리 : 리스크를 처리하는 프로세스.

리스크 기반 테스팅 : 연관된 리스크 유형과 리스크 수준을 기반으로 테스트 활동 및 리소스의 이용, 관리, 선택, 우선순위 등을 다루는 테스팅.

테스트 접근법 : 특정 프로젝트에 대한 테스트 전략을 구현한 것.

테스트 완료 보고서 : 종료 기준 대비 해당 테스트 항목의 평가를 제공하는 종료 마일스톤 때 생성되는 테스트 보고서 유형.

테스트 제어 : 테스트 프로젝트가 계획을 벗어났을 때 예정대로 진행되도록 시정 조치를 개발하고 적용하는 활동.

테스트 모니터링 : 테스트 활동의 상태를 확인하고 계획 또는 예상과의 차이를 식별하고 이해관계자에게 상태를 보고하는 활동. 

테스트 계획서 : 테스팅 활동 조정에 사용되며, 달성할 테스트 목표와 그것을 달성하기 위한 방법과 일정을 설명하는 문서.

테스트 계획 : 테스트 계획서의 수립 또는 수정 활동.

테스트 완료 보고서 : 종료 기준 대비 해당 테스트 항목의 평가를 제공하는 종료 마일스톤 때 생성되는 테스트 보고서 유형.

테스트 피라미드 : 레벨별 테스트 양의 관계를 나타내는 시각적 모델로, 테스트 양은 상단보다 하단에 더 많이 분표 돼 있음.

애자일 테스팅 사분면 : 4분면으로 구성된 테스트 유형/ 레벨 분류 모델로, 테스트 목표의 두 가지 차원(팀 지원 대 제품 비평, 기술 대면 대 비즈니스 대면) 

형상 관리 : 형상 항목의 기능적/ 물리적 특성을 식별/ 문서화하고, 해당 특성을 제어하며, 변경 처리 및 구현 상황을 기록/ 보고하고, 명시된 요구사항을 준수하는지 검증하기 위해 기술적, 행적적 지시와 감독을 적용하는 원칙.

 

 

728x90
반응형
728x90
반응형
들어가기 전 알아둬야 할 4.4 용어 설명, 4.5 용어 설명
: 이해에 중점. 부족하면 용어설명 글 참고.
체크리스트 기반 리뷰 : 질문 목록이나 확인해야 하는 특성을 기반으로 수행하는 리뷰 기법.
체크리스트 기반 테스팅 : 경험, 점검, 기억에 의한 목록 또는 제품 검증 기준 맟 규칙을 상위 수준으로 나열한 목록을 숙련된 테스터가 사용하는 경험 기반 테스트 기법.

사용자 스토리 : 일상 또는 비즈니스 언어로 사용자가 필요로 하는 기능, 그것의 이유, 비기능 조건, 인구 조건 등을 포착하는 한 문장으로 구성된 사용자 또는 비즈니스 요구사항.

인수 조건 : 사용자, 고객, 기타 권한을 지닌 사람이 제품을 인수하기 위해 컴포넌트나 시스템이 만족시켜야 하는 기준.
시나리오 기반 리뷰 : 특정 시나리오를 처리할 수 있는 능력을 판단하기 위해 작업 산출물을 평가하는 리뷰 기법.
인수 테스트 주도 개발 : 팀과 고객이 고객 고유의 도메인 언어를 사용하여 컴포넌트 또는 시스템을 테스트하기 위한 베이시스를 형성하는 고객 요구사항을 이해하는 개발에 대한 협업적 접근 방식.

 

4.4 경험 기반 테스트 기법 
: 널리 사용하는 경험 기반 테스트 기법 3가지
  • 오류 추정
  • 탐색적 테스팅
  • 체크리스트 기반 테스팅
4.4.1 오류 추정
< 오류 추정 >
: 테스터의 지식을 기본으로 오류, 결함, 발생을 예측하는 데 사용하는 기법.

>> 테스터의 지식
- 애플리케이션의 과거 동작.
- 개발자가 범하기 쉬운 오류 유형과 이런 오류로 인해 발생하는 결함 유형.
- 다른 유사 애플리케이션에서 발생한 장애 유형.

일반적으로 오류, 결함, 장애는 입력, 출력, 논리, 계산, 인터페이스, 데이터와 관련이 있을 수 있다.

결함 공격 - 오류 추정을 구현하는 체계적인 접근법.
: 테스터가 발생 가능한 오류, 결함, 장애 목록을 만들거나 획득해서 오류와 관련된 결함을 식별 및 노출하거나, 장애를 유발하는 테스트를 설계하도록 한다.
ex. 목록 : 올바른 입력 허용 X, 잘못된 입력 허용 O. 출력형식 올바르지 않음. / 테스터가 이 목록으로 테스팅하는 경우 결함 공격 테스트 기법 사용.

 

4.4.2 탐색적 테스팅
: 테스터가 가지고 있는 경험, 지식, 그리고 호기심, 창의성들이 높으면 테스팅이 효과적!
< 탐색적 테스팅 >
- 테스터가 테스트 대상에 대해 배워가면서 테스트의 설계, 실행, 평가를 동시에 하게 된다.
- 테스트 대상에 대해 더 배우고, 집중하고 있는 테스트는 더 깊이 탐색하고, 테스트되지 않은 영역에 대한 테스트를 만들기 위해 사용.
- 테스트를 체계적으로 수행하기 위해 세션 기반 테스팅을 사용하기도 함.

▶ 탐색적 테스팅은
- 명세가 부족하거나 부적합할 경우, 테스트에 시간적 압박이 심할 때 유용!
- 다른 공식 테스트 기법을 보완하기에도 유용!
- 테스터가 풍부한 경험과 도메인 지식을 가지고 있고 높은 수준의 분석 기술, 호기심, 창의성 등 필요 기술을 갖춘 경우 더욱 효과적일 수 있다.

 

4.4.3 체크리스트 기반 테스팅
: 자동화 항목은 포함하면 x
< 체크리스트 기반 테스팅 >
- 테스터는 체크리스트를 활용해 테스트 컨디션을 확인하는 테스트를 설계, 구현, 실행한다.
- 자동으로 점검할 수 있는 항목, 시작/ 종료 조건으로 더 적합한 항목, 너무 일반적인 항목은 체크리스트에 포함해서는 안된다.
- 체크리스트 항목을 질문 형식으로 표현하는 경우가 많음. 각 항목은 개별적이면서 직접적으로 확인할 수 있어야 한다. 이런 항목은 요구사항, 그래픽 인터페이스 속성, 품질 특성 또는 기타 유형의 테스트 컨디션일 수 있다.
- 시간이 지남에 따라 개발자가 같은 오류를 범하지 않게 됨으로 일부 체크리스트 항목은 점차 효과가 떨어질 수 있음. 결함 분석을 기반으로 정기적으로 업데이트 해야 함!!
- 구체적인 테스트 케이스가 없는 경우에 체크리스트 기반 테스팅은 일관성을 제공할 수 있다.
- 체크리스트가 상위 수준으로 작성된 경우 실제 테스트는 조금씩 달라질 수 있으며, 결국 커버리지는 높아지지만 재현 가능성은 떨어질 수 있다.

 

4.5 협업 기반 테스트 접근법
: 협업과 커뮤니케이션을 통한 결함 예방에 초점.

4.5.1 협업 기반 사용자 스토리 작성
  • 사용자 스토리는 시스템이나 소프트웨어의 사용자 또는 구매자에게 가치를 제공하는 기능을 나타낸다.
사용자 스토리의 3가지 중요 요소(== '3C')
카드(Card) 사용자 스토리를 설명하는 매체(ex. 인덱스 카드, 전자 게시판 항목)
대화(Conversation) 소프트웨어 사용 방법에 대한 설명(문서 또는 구두로)
확인(Confirmation) 인수 조건
사용자 스토리의 가장 일반적인 형식:
"[역할]로서 [목표]를 달성해 [역할이 얻게 될 비즈니스 가치]를 얻기 원한다." 이며 이후 인수 조건이 뒤따르는 형식이다.
  • 협업 기반 사용자 스토리 작성은 브레인스토밍, 마인드 매핑과 같은 기법을 사용. 협업을 통해 팀원들은 비즈니스, 개발, 테스팅의 세 가지 관점을 고려해 만들어서 전달할 것에 대한 공유된 비전을 얻을 수 있다.
  • 좋은 사용자 스토리는 독립적이고 협상가능하고, 가치 있고, 추정 가능하고, 테스트 가능해야 한다.
4.5.2 인수 조건
사용자 스토리의 인수 조건은 사용자 스토리 구현 결과를 이해관계자가 승인하기 위해 충족되어야 하는 조건.
이런 관점에서 인수 조건을 테스트해야 하는 테스트 컨디션으로 볼 수 있다.

인수 조건은 보통 3C중 대화를 통해 결정된다.
인수 조건은 다음을 위해 사용된다.
1. 사용자 스토리 범위 정의.
2. 이해관계자 간 합의 도출.
3. 긍정과 부정 시나리오 설명.
4. 사용자 스토리 인수 테스팅의 베이시스 제공.
5. 정확한 계획 및 추정.
인수 조건 작성법 두가지
시나리오 기반 행위 주도 개발에서 사용하는 Given/ When/ Then.
규칙 기반 베리피케이션이 필요한 목록 또는 표로 표현된 입력-출력 매핑.
- 대부분의 인수조건은 이 두 가지 형식 중 하나로 문서화할 수 있다.

 

4.5.3 인수 테스트 주도 개발(ATTD)
: 테스트 우선 접근법.
테스트 케이스는 사용자 스토리 구현 전에 만들어진다. 고객, 개발자, 테스터 등 서로 다른 관점을 가진 팀원들이 테스트 케이스를 만든다.

첫 번째 단계 : 명세 워크숍으로 팀원들은 여기서 사용자 스토리와 인수조건을 분석하고 토론해서 작성. 이 과정에서 사용자 스토리의 불완전성, 모호성, 결함을 해결하게 된다.
두 번째 단계 : 테스트 케이스를 만드는 것. 이 작업은 팀 전체가 수행하거나 테스터가 개별적으로 수행할 수 있다. 테스트 케이스는 인수 조건을 기반으로 하며, 소프트웨어가 어떻게 작동하는지에 대한 예제로 볼 수 있다. 이는 팀이 사용자 스토리를 올바르게 구현하는데 도움을 준다.

일반적으로 첫 번째 테스트 케이스는 예외나 오류 조건 없이 올바른 동작을 확인하고 모든 것이 예상대로 진행될 경우 실행되는 일련의 활동으로 구성된 긍정/유효 테스트 케이스이다.
유효 테스트 케이스를 끝내고 나면 팀은 비유효/부정 테스트를 수행해야 한다.
마지막으로 팀은 비기능 품질 특성도 다뤄야 한다. 테스트 케이스는 이해관계자가 이해할 수 있는 방식으로 표현되어야 하며, 일반적으로 테스트 케이스는 필요한 전제 조건, 입력값, 사후 조건을 포함하며 자연어 문장으로 구성한다.
테스트 케이스는 사용자 스토리의 모든 특성을 다뤄야 하며 스토리를 벗어나면 안 된다. 또한 두 개 이상의 테스트 케이스가 사용자 스토리의 같은 특성을 설명해서는 안된다.
테스트 자동화 프레임 워크가 지원하는 형식으로 작성하면 개발자는 사용자 스토리에서 설명하는 기능을 구현할 때 필요한 코드를 작성해 테스트 케이스를 자동화할 수 있다. 그러면 인수 테스트가 실행 가능한 요구사항이 된다.

 

728x90
반응형
728x90
반응형
들어가기 전 알아둬야 할 4.2 용어 설명, 4.3 용어 설명
: 이해에 중점. 부족하면 용어설명 글 참고.
동등분할 테스트 정의 및 원리 :
- 테스트 항목의 입력과 출력이 여러 개의 독립된 영역으로 구분되는 경우에 적용.
- 동일한 영억 내에서는 어떠한 값을 선택해도 결과가 항상 같다는 원리 이용.
- 모든 영역에서 최소 하나 이상의 (대표) 값을 선택해 테스트.
ex> 배터리 용량 테스트, 성적 학점 결과 60점 밑 F, 70점 밑 D,... C, B, A.

경계값 분석 : 2개 선택, 3개 선택이 있음.
- 2 value일 경우 최댓값과 최솟값의 바로 밖(1,10이면 0.9, 1, 10, 10.1).
- 3 value일 경우 최대값과 최소값의 안, 밖(1, 10이면 0.9, 1, 1.1, 9.9, 10, 10.1)

결정 테스트는 모순되는 규칙을 찾을 수 있어야 함.

구문 테스팅 : 테스트 케이스가 구문을 실행하도록 설계하는 화이트박스 테스트 설계 기법.
결정 테스팅 : 테스트 케이스가 결정 결과값을 실행하도록 설계하는 화이트박스 테스트 기법.
* 결정 테이블 테스팅은 블랙박스 설계 기법(테스트 케이스가 결정 테이블에 표시된 조건과 결과 행위 조합을 실행하도록 설계)
다중 조건 테스팅 : 테스트 케이스가 원자 조건의 결과 조합을 실행하도록 설계된 화이트박스 테스트 기법.
조건 테스팅 : 테스트 케이스가 원자 조건의 결과를 실행하도록 설계된 화이트박스 테스트 기법.

분기 테스팅 : 프로그램을 제어 흐름 그래프로 변환했을 때 제어 흐름 그래프의 모든 간선을 최소한 한 번은 실행하는 테스트 케이스가 테스트 케이스 집합에 포함되도록 요구. 분기 커버리지를 만족하면 문장 커버리지를 만족함(반대로는 안돼.) - 모든 간선 실행 시 모든 노드를 실행하기 때문.

슈도 코드(== 의사 코드) : 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어.
개념 : 프로그램 코드를 작성할 때 사용하기 위해, 프로그램의 진행 과정을 단계별로 기록해 놓은 것. 알고리즘이 수행될 내용을 인간의 언어로 간략하게 설명해 놓은 것을 말한다. (pseudo(가짜의, 유사) + code)

 

4.2 블랙박스 테스트 기법
많이 사용되는 블랙박스 테스트 기법 4가지
  • 동등 분할
  • 경계값 분석
  • 결정 테이블 테스팅
  • 상태 전이 테스팅
4.2.1 동등 분할
동등 분할 : 
- 테스트 대상이 하나의 분할(== 동등 분할)에 포함된 모든 요소를 동일한 방식으로 처리할 것이라는 가정하에 데이터를 분할 단위로 나눈다.
근거 이론: 동등 분할에 속한 특정 값을 테스트하는 테스트 케이스로 결함을 식별할 수 있다면, 같은 동등 분할의 다른 어떤 값을 테스트하는 테스트 케이스라도 해당 결함을 식별할 수 있어야 한다는 것.
>> 따라서 각 분할에 대해 하나의 테스트만 수행하면 충분하다.
- 입력, 출력, 형상 항목, 내부 값, 시간 관련 값, 인터페이스 매개변수 등 테스트 대상과 관련된 모든 데어터 요소에 대해 식별할 수 있다. 분할은 연속적이거나, 연속적이지 않을 수도 있으며, 정렬돼 있거나, 유한 또는 무한일 수도 있다. 분할은 서로 겹치지 않아야 하며, 값이 없는 공집합일 수는 없다.
- 테스트 대상이 단순하다면 동등 분할을 적용하기가 쉬울 수도 있지만 실제로는 테스트 대상이 다양한 값을 어떻게 처리하는지 이해하기 어려울 때가 많아서 분할 식별은 신중하게 해야 한다.

유효 분할 : 유효한 값을 포함하는 분할.
비유효 분할 : 유효하지 않은 값을 포함하는 분할.
!! 유효한 값과 유효하지 않은 값의 정의는 팀과 조직마다 다를 수 있다. !!
>> 테스트 대상이 처리해야 하는 값 또는 명세에 처리가 정의된 값을 유효값으로 해석가능. 비유효 값은 테스트 대상이 무시하거나 거부해야 하는 값, 또는 테스트 대상 명세에 처리 방법이 정의되어 있지 않은 값으로 해석할 수 있음.

동등 분할에서 커버리지 항목은 각 분할이 된다!
>> 이 기법으로 100% 커버리지를 달성하려면 테스트 케이스로 각 분할을 최소 한 번씩 다뤄서 식별한 모든 분할(비유효 분할 포함)이 실행되도록 해야 함.
>> 커버리지는 하나 이상의 테스트 케이스로 실행한 분할 수를, 식별한 총 분할 수로 나눈 값으로 측정하며 백분율로 표시함.

대부분의 테스트 대상은 여러 분할 집합을 가지고 있기 때문에 하나의 테스트 케이스는 여러 분할 집합에 속한 분할을 다루게 된다. 분할 집합이 다수인 경우 가장 간단한 커버리지 기준을 이치 초이스 커버리라고 한다.
이치 초이스 커버리지는 테스트 케이스가 모든 분할 집합의 각 분할을 최소 한 번은 실행할 것을 요구하며, 분할의 조합을 고려하지 않는다.

 

4.2.2 경계값 분석
경계값 분석 : 동등 분할의 경계 실행을 기반으로 하는 기법. 정렬된 분할에만 사용가능. 분할의 최솟값과 최댓값이 경계값이 됨. 경계값 분석에서 두 값이 같은 분할에 속하는 경우, 둘 사이의 모든 값도 해당 분할에 속해야 함.

분할의 경계에 있는 값을 개발자가 다룰 때 오류를 범할 가능성이 높기 때문에 경계값 분석은 분할의 경계에 있는 값에 초점을 두게 됨.
>> 경계값 분석으로 많이 찾는 결함 : 구현된 경계가 의도한 위치보다 위나 아래에 잘못 배치됐거나 아예 누락된 결함.

실러버스에서 다루는 경계값 분석 2가지 유형 - 두 개 선택(2-value), 세 개 선택(3-value) 경계값 분석.
>> 100% 커버리지 달성을 위해 실행해야 하는 경계별 커버리지 항목의 수에서 차이가 남.
두 개 선택 경계값 분석 - 각 경계값에 대해 두 개의 커버리지 항목을 도출.
- 경계값과 인접 분할에 속한 가장 가까운 값이 커버리지 항목.
- 100% 커버리지를 달성하려면, 테스트 케이스로 모든 커버리지 항목, 즉 식별한 모든 경계값을 실행해야 한다.
- 커버리지는 실행한 경계값의 수를 식별한 경계값의 총수로 나눈 값으로 백분율로 표시한다.
세 개 선택 경계값 분석 - 각 경계값에 대해 세 개의 커버리지 항목을 도출.
- 경계값과 이웃한 양쪽의 값 모두가 커버리지 항목.
>> 세 개 선택 경계값 분석에서는 경계값이 아닌 커버리지 항목도 있을 수 있음.
- 100% 커버리지를 달성하려면, 테스트 케이스로 모든 커버리지 항목, 즉 식별한 경계값과 그 이웃 값을 실행해야 한다.
- 커버리지는 실행한 경계값과 이웃한 값의 수를, 식별한 경계값과 이웃 값의 총수로 나눈 값으로 측정하며 백분율로 표시한다.
세 개 선택 경계값 분석은 두개 선택 경계값 분석으로 발견하지 못한 결함을 식별할 수 있으므로 두개 선택 경계값 분석보다 더 엄격하다고 할 수 있다.

 

4.2.3 결정 테이블 테스팅
결정 테이블 : 다중 조건 조합으로 달라지는 결과를 나타내는 시스템 요구사항이 제대로 구현되었는지 테스트하는 데 사용. 비즈니스 규칙과 같은 복잡한 논리를 기록하는 효과적인 방법.

결정 테이블을 만들 때 조건들과 그에 따른 시스템의 동작 결과를 정의하며 이것이 테이블의 행을 구성한다. 열은 각각 하나의 결정 규칙을 나타내며, 어떤 고유한 조건 조합을 연관 동작과 함께 정의한다.

제한-입력 결정 테이블 : 모든 조건과 동작 결괏값(관련 없거나 실행 불가능한 값 제외)을 부울값으로 표시.
확장-입력 결정 테이블 : 조건 및 동작 결괏값의 일부 또는 전부가 복수의 값(ex> 숫자 범위, 동등 분할, 불연속 값)을 취할 수 있다.

< 조건의 표기법 >
▶ T : 참- 조건이 충족 O. 
▶ F : 거짓- 조건 충족 X.
▶ - : 조건값이 결과에 영향 X.
▶ N/A : 해당 규칙에서 조건이 실행 불가능함을 의미.
< 결과 동작 >
▶ X : 동작이 발생해야 함을 의미.
▶ 공백 : 동작이 발생하지 않아야 함을 의미.

전체 결정 테이블에는 모든 조건 조합을 포함할 수 있는 충분한 열이 있다. 실현 불가능한 조건 조합열을 삭제해 테이블을 더 단순화할 수 있다. 일부 조건이 결과에 영향을 미치지 않는 열들을 하나로 병합해 테이블을 최소화할 수 있다.
결정 테이블 테스팅에서 커버리지 항목은 실현 가능한 조건 조합을 가진 열이 된다. 이 기법으로 100% 커버리지를 달성하려면, 테스트 케이스가 이런 열을 모두 실행해야 한다.
커버리지는 실행된 열의 수를 실행 가능한 열의 총수로 나눈 값으로 측정하며 백분율로 표시한다.

결정 테이블 테스팅의 강점 :
>> 간과했을 수도 있는 조합을 포함한 모든 조건 조합을 식별하는 체계적인 방법을 제공한다는 점.
>> 누락되거나 모순되는 요구사항을 찾는 데 도움.
결정 테이블 테스팅의 단점 :
>> 조건의 수에 따라 규칙의 수는 기하급수적으로 늘어나기 때문에, 조건이 많으면 모든 결정 규칙을 실행하는 데 오랜 시간이 걸릴 수 있음.
>> 보완 : 실행해야 하는 규칙의 수를 줄이기 위해 결정 테이블을 최소화하거나, 리스크 기반 접근법을 사용. 

 

4.2.4 상태 전이 테스팅
상태 전이 테스팅 : 가능한 상태와 유효한 상태 전이를 표시해 시스템 동작을 모델링.
전이는 하나의 이벤트에 의해 발생, 별도의 가드 조건이 있을 수 있다. 즉각적인 것으로 간주되며 가끔 소프트웨어의 어떤 동작으로 연결되기도 함.
< 전이를 표시하는 형식 >
: "이벤트 [가드 조건] /동작". 가드 조건과 동작이 없거나 테스터와 관련 없는 경우 생략 가능.

상태 테이블은 상태 전이 다이어그램을 다르게 표현한 모델.
- 행은 상태를 나타내고, 열은 이벤트(가드 조건이 있다면 함께)를 나타낸다. 테이블의 각 항목은 전이를 나타내며, 목표 상태는 물론 가드 조건, 정의된 경우에는 결과 동작도 포함된다.
- 상태 테이블은 유효하지 않은 전이를 빈 항목으로 명확하게 보여준다.

상태 전이 다이어그램이나 상태 테이블을 기반으로 하는 테스트 케이스는 보통 일련의 이벤트 순서와 그 결과로 생기는 상태 변화로 표현된다. 하나의 테스트 케이스는 대부분의 경우 여러 개의 상태 전이를 포함.

< 상태 전이 테스팅의 세 가지 커버리지 측정 기준 >
모든 상태 커버리지 커버리지 항목 : 상태들.
- 100% 달성하려면 테스트 케이스로 모든 상태를 확인해야 함.
- 커버리지는 확인한 상태 수를 상태 총수로 나눈 값으로 측정하고 백분율 표시.
유효 전이 커버리지
(가장 널리 사용하는 커버리지 조건)
커버리지 항목 : 유효 전이.
- 100% 달성하려면 테스트 케이스가 모든 유효 전이를 실행해야 함.
- 커버리지는 실행된 유효 전이 수를 총 유효전이 수로 나눈 값으로 측정하고 백분율로 표시.
모든 전이 커버리지 커버리지 항목 : 상태 테이블에 표시된 모든 전이들.
- 100%를 달성하려면 테스트 케이스로 모든 유효 전이를 실행하고, 유효하지 않은 비 유효 전이의 실행도 시도해야 함.
- 커버리지는 실행된 테스트 케이스로 수행하거나, 커버하려고 시도한 유효 및 비 유효 전이 수를 총 유효 및 비유효 전이 수로 나눈 값으로 측정하고 백분율로 표시.
모든 상태 커버리지는 일반적으로 모든 전이를 실행하지 않고도 달성할 수 있기 때문에, 유효 전이 커버리지보다 약하다.
모든 전이 커버리지를 100% 달성하면, 모든 상태 커버리지와 유효 전이 커버리지도 모두 보장된다.

 

4.3 화이트박스 테스트 기법
: 간단하면서 널리 사용되는 화이트박스 테스트 기법 2가지.
  • 구문 테스팅
  • 분기 테스팅
4.3.1 구문 테스팅과 구문 커버리지
< 구문 테스팅 > 
- 커버리지 항목: 실행 가능한 구문.
- 목적: 코드 구문을 실행하는 테스트 케이스를 설계해서 허용할 수 있는 수준의 커버리지를 달성하는 것.
- 커버리지는 테스트 케이스가 실행한 구문 수를 코드의 실행 가능한 구문 총수로 나누어 계산하며 백분율로 표시.

100% 구문 커버리지를 달성하면 코드의 모든 실행 가능한 구문을 적어도 한 번은 실행했다는 것이 보장.
But, 테스트 케이스로 구문을 실행했다고 해서 결함이 반드시 식별되는 것은 X.
ex. 데이터에 종속적인 결함(예: 분모를 0으로 설정한 경우에만 실패하는 나눗셈)은 식별하지 못할 수 있음.
100% 구문 커버리지가 모든 결정 논리를 테스트했다고 보장하는 것도 X.
ex. 코드의 모든 분기가 실행되지 않았을 수도 있음.

 

4.3.2 분기 테스팅과 분기 커버리지
< 분기 테스팅 >
- 커버리지 항목 : 분기.
- 목적 : 코드의 분기를 실행하는 테스트 케이스를 설계해서 허용할 수 있는 수준의 커버리지를 달성하는 것.
- 커버리지는 테스트 케이스가 실행한 분기 수를 분기 총수로 나눈 값으로 측정하며 백분율로 표시.

100% 분기 커버리지를 달성하면 코드의 모든 분기를 테스트 케이스로 실행하게 됨.
But, 테스트 케이스로 분기를 실행한다고 해서 반드시 결함을 식별할 수 있는 것은 X.
ex. 코드의 특정 경로를 실행해야 하는 결함은 감지하지 못할 수 있음.

분기 커버리지는 구문 커버리지를 포함한다. 
100% 분기 커버리지를 달성하는 테스트 케이스 집합은 100% 구문 커버리지도 달성. 그 반대는 성립 X.

 

4.3.3 화이트박스 테스팅의 가치
화이트박스 테스팅의 강점 테스트 중 전체 소프트웨어 구현을 고려하므로 소프트웨어 명세가 모호하거나 뒤떨어지고 불완전한 경우에도 결함을 쉽게 감지할 수 있음.
화이트박스 테스팅의 단점 소프트웨어가 하나 이상의 요구사항을 구현하지 않는 경우, 화이트박스 테스팅은 그것이 누락됐다는 결함을 식별하지 못할 수 있음.
화이트박스 기법은 정적 테스팅에 사용할 수 있다.
아직 실행할 준비가 되지 않은 코드 외에도 슈도 코드 또는 제어 흐름 그래프로 모델링할 수 있는 기타 상위 수준 및 하향식 논리를 검토하는 데 적합.

블랙박스 테스팅만 수행해서 실제 코드 커버리지 측정치를 얻을 수 없다. 
화이트박스 커버리지 측정치는 객관적인 커버리지 측정값을 제공하고 커버리지를 높이기 위해 추가로 필요한 테스트를 만들기 위해 필요한 정보를 제공해서 결국 코드 신뢰도를 높일 수 있게 해 줌.

 

 

 

728x90
반응형
728x90
반응형
들어가기 전 알아둬야 할 4.1 용어 설명
: 이해에 중점. 부족하면 용어설명 글 참고.
블랙박스 테스트 기법 : 개발자 입장이 아닌 사용자 입장에서 바라본 제품의 요구사항이 일치하는지 확인하는 테스트 기법. 명세 기반 기법.
화이트박스 테스트 기법 : 개발자 입장에서 바라본 로직에 대한 설계로 구현이 제대로 되었는지 확인하는 테스트 기법. 구조 기반 기법.
경험 기반 테스트 기법 : 탐색적 테스팅.
테스트 케이스 : 테스트 베이시스를 토대로 만들어짐. 블랙박스와 경험기반 테스트의 주요 차이점은 테스트 베이시스가 다른 거야. 블랙박스는 명세, 경험기반은 탐색.

 

4.1 테스트 기법 개요
:테스트 설계와 분석에 적용할 활동들을 공부해보자고!
테스트 기법이란?
- 테스터의 테스트 분석(무엇을 테스트할지)과 테스트 설계(어떻게 테스트할지) 작업을 지원.
- 적은 수이지만 충분한 테스트 케이스를 체계적인 방식으로 개발할 수 있도록 해줌.
- 테스터가 테스트 분석과 설계에서 테스트 컨디션을 정의하고, 커버리지 항목과 테스트 데이터를 식별하는데 도움을 줌.
< 실러버스에서 분류하는 테스트 기법 3가지 >
블랙박스 테스트 기법
(==명세 기반 기법)
내부 구조를 참조하지 않음(외부문서O). 테스트 대상의 명시된 동작에 대한 분석을 기반. 
>> 테스트 케이스는 소프트웨어 구현 방식에 의존하지 않는다. 구현이 바뀌더라도 필요한 동작이 동일하다면, 테스트 케이스는 여전히 유효함.
ex> 경계값 분석 기법, 동등 분할 기법, 결정 테이블 테스팅, 상태 전이 테스팅, 유즈 케이스 테스팅 기법
화이트박스 테스트 기법
(==구조 기반 기법)
테스트 대상이 내부 구조와 처리에 대한 분석을 기반.
>> 테스트 케이스는 소프트웨어, 설계 방식에 의존하기 때문에 테스트 대상의 설계나 구현이 끝난 후에 만들 수 있다.
ex> 구문테스팅, 결정테스팅, 제어 흐름 테스팅 기법
경험 기반 테스트 기법 테스터의 지식과 경험을 테스트 케이스의 설계 및 구현에 효과적으로 활용. 
이런 기법의 효과성은 테스터의 능력에 따라 크게 달라짐!
경험 기반 테스트 기법은 블랙박스와 화이트박스 테스트 기법으로는 식별하지 못할 수 있는 결함을 찾을 수 있게 해줌. >> 블랙박스 및 화이트박스 테스트 기법을 보완함.

 

 

 

728x90
반응형
728x90
반응형
용어 정리
: 용어부터 정리해 두고 봐야 이해가 쉬움.
▼ 혹시나 더 찾아보고 싶은 단어가 있다면 여기로 가서 찾아보기 ▼
++ https://glossary.istqb.org/ko_KR/
인수 조건 : 사용자, 고객, 기타 권한을 지닌 사람이 제품을 인수하기 위해 컴포넌트나 시스템이 만족시켜야 하는 기준.
인수 테스트 주도 개발 : 팀과 고객이 고객 고유의 도메인 언어를 사용하여 컴포넌트 또는 시스템을 테스트하기 위한 베이시스를 형성하는 고객 요구사항을 이해하는 개발에 대한 협업적 접근 방식.

경계값 분석 : 경계값을 기반으로 테스트 케이스를 설계하는 블랙박스 테스트 기법.

분기 커버리지 : ==결정 커버리지. 결정된 결과값에 대한 커버리지. 

체크리스트 기반 테스팅 : 경험, 점검, 기억에 의한 목록 또는 제품 검증 기준 및 규칙을 상위 수준으로 나열한 목록을 숙련된 테스터가 사용하는 경험 기반 테스트 기법.

커버리지 : 커버리지 항목이 식별되거나 테스트 스위트에 의해 수행된 정도를 백분율로 표시한 것.
커버리지 항목 : 테스트 실행의 완전성을 측정할 수있는 테스트 기법을 사용해 하나 이상의 테스트 컨디션에서 도출하는 속성 또는 속성들의 결합체.

결정 테이블 테스팅 : 테스트 케이스가 결정 테이블에 표시된 조건과 결과 행위 조합을 실행하도록 설계하는 블랙박스 설계 기법.

동등 분할 : 명세에 따라 모든 값이 동일하게 취급될 것으로 예상되는 컴포넌트 또는 시스템 내의 변수 값 도메인의 하위 집합.

오류 추정 : 과거 장애에 대한 테스터의 지식이나 장애 형태에 대한 일반적인 지식에 기초하여 테스트 케이스를 도출하는 테스트 기법.

탐색적 테스팅 : 테스터가 자신의 지식, 테스트 항목에 대한 탐색과 이전 테스트 결과를 기반으로 테스트를 동적으로 설계하고 실행하는 테스트 접근 방식.
상태 전이 테스팅 : 테스트 케이스가 상태 전이 모델의 개별 요소를 실행하도록 설계된 블랙박스 테스트 기법.

구문 커버리지 : 실행 가능한 구문에 대한 커버리지.

테스트 기법 : 테스트 조건을 정의하고, 테스트 케이스를 설계하고, 테스트 데이터를 지정하는 데 사용되는 절차.

블랙박스 테스트 기법 : 컴포넌트나 시스템의 명세에 대한 분석을 기반으로 하는 테스트 기법.

화이트박스 테스트 기법 : 컴포넌트 또는 시스템의 내부 구조에만 기반을 둔 테스트 기법.

경험 기반 테스트 기법 : 테스터의 경험, 지식, 직관에만 기반을 둔 테스트 기법.

4장의 내용은 엄청 많으면서 엄청 중요한 내용이다. 테스트 기법에 대해서도 알아야 되고 분석 문제도 풀 줄 알아야 된다.

샘플문제도 많이 풀어보고 발품팔아 구글링이랑 네이버 블로그 뒤적거려서 문제도 많이 찾아보고 풀어보는 게 좋다.

728x90
반응형
728x90
반응형
들어가기 전 알아둬야 할 3.1 용어, 3.2 용어 설명.
: 사전적으로 설명정리한 건 바로 앞에 적어둔 블로그 용어 설명ㄱㄱ
사용자 스토리 : 일상 또는 비즈니스 언어로 사용자가 필요로 하는 기능, 그것의 이유, 비기능 조건, 인구 조건 등을 포착하는 한 문장으로 구성된 사용자 또는 비즈니스 요구사항.
백로그 :  프로젝트 관리, 소프트웨어 개발, 업무 관리 등 다양한 분야에서 사용되는 용어로, 완료되지 않은 작업 항목들의 리스트나 목록을 가리킴.

공식 리뷰
 : 공식 산출물로 정의된 프로세스를 따르는 리뷰 유형.
리뷰어 : == 검토자. 작업 산출물의 이슈를 식별하는 리뷰 작업 참여자.

워크스루 : 검토 자료를 회의 전에 배포해서 사전검토한 후 짧은 시간 동안 회의 진행.(비형식적인 검토기법.)
인스펙션 : 다른 전문가 또는 팀이 검사하여 문제를 식별하고 문제 해결.(형식적 검토기법.)

퍼실리테이션 : 직역- 용이성,편리성. 집단의 공동의 목적을 쉽게 달성할 수 있도록 도구와 기법을 활용하여 절차를 설계하고 중립적인 태도로 진행 과정을 돕는 활동을 일컬음.

 

3.1 정적 테스팅의 기초
정적 테스팅테스트 대상 소프트웨어를 실행하지 않아도 된다.
테스팅의 목표 품질 개선, 결함 식별, 또한 가독성/완전성/정확성/테스트 용이성/일관성과 같은 특성을 평가하는 것이며 베리피케이션과 밸리데이션 모두에 적용할 수 있다. 
사용자 스토리가 완전하고 이해하기 쉬우며, 테스트 가능한 인수 조건을 가지고 있는지 확인하기 위해 리뷰 기법을 적용할 수 있다. 적절한 질문을 통해 테스터는 제안된 사용자 스토리를 탐색하고, 문제를 제기하며 개선하는 데 도움을 준다.
정적 분석테스트 케이스가 필요 없고, 도구를 사용하는 경우가 많기 때문에 상대적으로 적은 노력으로 동적 테스팅 전에 문제를 식별할 수 있다.
정적 분석주로 구체적인 코드 결함을 식별하는 데 사용하지만, 유지보수성과 보안을 평가하는 데도 사용된다.
맞춤법 검사기나 가독성 도구로 정적 분석 도구의 예라 할 수 있다.

 

3.1.1 정적 테스팅으로 검사 가능한 작업 산출물
  • 정적 테스트를 사용해 거의 모든 작업 산출물을 검토할 수 있다. ex> 요구사항 명세서, 소스 코드, 테스트 계획서, 테스트 케이스, 제품 백로그 항목, 테스트 차터, 프로젝트 문서, 계약서, 모델 등이 그 대상이 될 수 있다.
  • 읽고 이해할 수 있는 모든 작업 산출물은 리뷰 대상이 될 수 있다. But, 정적 분석의 경우, 작업 산출물을 검토할 수 있는 기준이 되는 어떤 구조가 필요하다. ex> 모델, 공식 문법이 정해진 코드나 텍스트.
  • 사람이 해석하기 어려운 것과 도구로 분석해서는 안 되는 작업 산출물(ex> 법적으로 문제가 되는 타사의 실행 코드)은 정적 테스트에 적합하지 않은 작업 산출물이다.
3.1.2 정적 테스팅의 가치
  1. 소프트웨어 개발수명주기 초기 단계에서 결함을 식별하기 때문에 조기 테스팅 원리를 지킬수 있게 한다.
  2. 동적 테스팅으로 식별할 수 없는 결함(ex> 도달 불가능한 코드)을 찾을 수도 있다.
  3. 작업 산출물의 품질을 평가하고 신뢰를 쌓을 방법을 제공한다.
  4. 문서화된 요구사항을 확인함으로써 이해관계자는 요구사항이 실제로 자기가 필요한 것을 묘사하고 있는지 확인할 수 있다.
  5. 소프트웨어 개발수명주기 초기에 수행할 수 있으므로 관련된 이해관계자 간 공통된 이해를 형성할 수 있다. 관련된 이해관계자 간의 의사소통도 개선된다. 때문에 정적 테스팅에 다양한 이해관계자가 참여하는 것이 권장됨.
  6. 리뷰를 구축하는 비용은 클수 있지만, 프로젝트 후반에 결함을 수정하는 시간과 노력이 줄어들어 리뷰를 수행하지 않을 때보다 전체 프로젝트 비용이 훨씬 낮아지는 경우가 많다.
  7. 동적 테스팅 보다 효율적으로 코드 결함을 식별할 수 있으며, 대부분의 경우 결과적으로 코드 결함이 줄고, 전반적인 개발 노력도 감소한다.

 

3.1.3 정적 테스팅과 동적 테스팅의 차이
: 정적 테스팅과 동적 테스팅은 서로를 보완한다.
< 정적 테스팅과 동적 테스팅의 차이 >
- 모두 결함을 식별한다는 것은 같지만, 정적 테스팅이나 동적 테스팅 중 한 가지로만 식별할 수 있는 결함 유형도 있다.
정적 테스팅 동적 테스팅
- 결함을 직접 식별한다. - 장애를 일으킨 후 연관된 결함을 후속 분석을 통해 찾아낸다.
- 거의 실행되지 않거나 동적 테스팅으로 도달하기 어려운 코드 경로에 있는 결함을 더 쉽게 발견할 수 있다.  
- 비 - 실행 작업 산출물에도 적용할수 있다. - 실행 가능한 작업 산출물에만 적용할 수있다.
- 코드 실행에 의존하지 않는 품질 특성(ex>유지보수성)을 측정할 수있다. - 코드 실행에 의존적인 품질 특셩(ex> 성능 효율성)을 측정할 수 있다.

 

< 정적테스팅을 통해 더 쉽게, 적은 비용으로 식별할 수 있는 대표적인 결함 >
- 요구사항 결함(ex> 불일치, 모호성, 모순, 누락, 부정확성, 중복)
- 설계 결함(ex> 비효율적인 데이터 베이스 구조, 모듈화 불량)
- 특정 유형의 코딩 결함(ex> 정의되지 않은 값을 가진 변수, 선언되지 않은 변수, 도달할 수 없거나 중복된 코드, 과도한 코드 복잡성)
- 표준위반(ex> 코딩 표준 명명 규칙을 준수하지 않는 경우)
- 잘못된 인터페이스 명세(ex> 매개변수의 개수, 유형, 순서 불일치)
- 특정 유형의 보안 취약성(ex> 버퍼 오버플로우)
- 테스트 베이시스 커버리지의 차이 또는 부정확성(ex> 인수 조건 하나에 대한 테스트 누락)

 

3.2 피드백과 리뷰 프로세스
- 3.2.1 이해관계자 피드백을 조기에 받을 때의 이점
1. 잠재적인 품질 문제를 조기에 파악할 수 있음.
2. 요구사항에 대한 오해를 방지하고 요구사항 변경을 조기에 이해하고 구현할 수 있음. 이를 통해 개발팀은 구현 중인 제품에 대한 이해도를 높일 수 있다. And 이해 관계자에게 가장 중요하고, 식별한 리스크에 가장 긍정적인 영향을 미치는 기능에 집중할 수 있음.

 

3.2.2 리뷰 프로세스 활동
  • 계획 : 계획 단계에서 목적, 리뷰 대상 작업 산출물, 평가할 품질 특성, 집중할 영역, 완료 조건, 표준과 같은 추가 정보, 공수, 리뷰 일정 등으로 구성되는 리뷰의 범위를 정의해야 함.
  • 리뷰 착수 : 리뷰 착수의 목표는 관련된 모든 사람과 사항이 리뷰를 시작할 준비가 되었는지 확인하는 것. 여기엔 모든 참여자가 리뷰 중인 작업 산출물에 접근할 수 있는지, 자신의 역할과 책임을 이해하고 있는지, 리뷰를 수행하는 데 필요한 것들을 받았는지 확인하는 과정이 포함됨.
  • 개별 리뷰 : 모든 검토자(리뷰어)는 하나 이상의 리뷰 기법(ex> 체크리스트 기반 리뷰, 시나리오 기반 리뷰)을 적용해 리뷰 중인 작업 산출물의 품질을 평가하고, 이상 사항, 권장 사항, 의문 사항을 식별하기 위해 개별 기뷰를 수행함. 검토자(리뷰어)는 식별한 모든 이상 사항, 권장 사항, 의문 사항을 기록.
  • 논의 및 분석 : 리뷰 중에 확인한 이상 사항이 반드시 결함은 아니므로 모든 이상 사항에 대해 분석하고 논의할 필요가 있음. 각 이상 사항의 상태, 담당자, 필요 조치를 판단해야 함. 일반적으로 리뷰 회의에서 이루어지며, 회의에 참가자들은 리뷰한 작업 산출물의 품질 수준과 필요한 후속 조치도 결정. 조치를 완료하기 위해 후속 리뷰가 필요할 수 있음.
  • 수정 및 보고 : 모든 결함에 대한 결함 보고서를 작성해 후속 조치가 추적 가능하도록 함. 완료 조건을 충족하면 작업 결과물을 승인할 수 있으며 리뷰 결과를 보고 한다.
3.2.3 리뷰에서의 역할과 책임
리뷰에는 다양한 이해관계자가 참여하며, 한명이 여러 역할을 동시에 맡을 수도 있다.
주요 역할 책임
관리자 리뷰할 내용을 결정, 리뷰에 필요한 사람과 시간 등 자원을 제공.
저자 리뷰 대상 작업 산출물을 작성하고 수정.
중재자(==퍼실리테이터) 중재, 시간 관리, 모든 사람이 자유롭게 발언할 수 있는 안전한 리뷰 환경 조성 등 리뷰 회의의 효과적인 운영을 담당.
서기(==기록자) 리뷰어로부터 이상 사항을 수집하고, 결정 사항이나 리뷰 회의 중에 발견한 새로운 이상 사항 등 리뷰 정보를 기록.
리뷰어(==검토자) 리뷰를 수행한다. 리뷰어는 프로젝트에 참여하는 사람 또는 주제 전문가, 기타 이해관계자가 될 수 있음.
리뷰 리더 리뷰에 참여할 사람을 결정하고, 리뷰 시간과 장소를 협의하는 등 리뷰에 대한 전반적인 책임을 짐.

 

3.2.4 리뷰 유형
비공식 리뷰부터 공식 리뷰까지 다양한 리뷰 유형이 있다.
필요한 리뷰 목적을 달성하려면 적절한 리뷰 유형을 선택하는 것이 중요!
< 많이 사용하는 4가지 리뷰 유형 >
리뷰 유형  특징 KeyWord
비공식 리뷰 정의된 프로세스를 따르지 않으며, 공식적인 결과 문서도 요구하지 않음.
주요 목적 : 이상 사항을 식별하는 것.
 문서작성X
워크쓰루  저자가 리더가 되는 워크쓰루를 통해 품질 평가 및 작업 산출물에 대한 신뢰 구축, 리뷰어 교육, 합의 도출, 새로운 아이디어 창출, 저자가 개선할 수 있도록 동기 부여 및 지원, 이상 사항 발견 등 여러가지 목적을 달성할 수있음. 
리뷰어는 워크쓰루 전에 개별 리뷰를 수행할 수도 있지만, 반드시 해야하는 것은 아님.
저자가 리더, 
리뷰어 훈련
기술 리뷰  기술적인 자격을 갖춘 리뷰어가 수행하고 중재자가 리더가 됨.
주요 목적 : 기술 문제에 대한 합의를 도출하고 결정을 내리며, 이상 사항 식별, 품질 평가 및 작업 산출물에 대한 신뢰 구축, 새로운 아이디어 창출, 저자가 개선할 수 있도록 동기를 부여하고 지원하는 것.
중재자가 리더,
저자의 개선의지 향상
인스펙션 가장 공식적인 리뷰 유형. 
보편적으로 프로세스를 철저히 따라야 함. 
주요 목적 : 이상 사항을 최대한 많이 찾는 것.
기타 목적 : 품질 평가, 작업 산출물에 대한 신뢰 구축, 저자가 개선할 수있도록 동기 부여 및 지원.
메트릭을 수집해 리뷰 프로세스를 포함한 전체 소프트웨어 개발수명주기를 개선하는 데 사용. +잠재적 결함 식별.
저자가 리뷰 리더나 서기가 될수 없음 
저자가 리뷰리더나 서기가 될 수 없음,
프로세스 개선에 사용

 

3.2.5 리뷰의 성공 요소
  • 명확한 목표와 측정 가능한 완료 조건을 정의. 참가자의 평가나 목적이 되어서는 절대 X.
  • 주어진 목표를 달성할 수 있으면서 작업 산출물 유형, 리뷰 참여자, 프로젝트 요구사항 및 정황에 맞는 리뷰 유형 선택.
  • 리뷰어가 개별 리뷰 또는 리뷰 회의에서 집중력을 잃지 않도록 작은 단위로 리뷰 진행.
  • 이해관계자와 저자에게 리뷰 피드백 제공 >> 제품 및 활동을 개선할 수 있도록 함.
  • 참가자가 리뷰를 준비할 수 있는 충분한 시간 제공.
  • 리뷰 프로세스를 관리층이 지원.
  • 학습 및 프로세스 개선 촉진을 위해 리뷰가 조직 문화의 일부가 되도록 한다.
  • 모든 참가자가 자신의 역할을 어떻게 충족해야 하는지 알수 있도록 적절한 교육 제공.
  • 회의에 퍼실리테이션을 적용.

여기서는 정적 테스팅과 동적테스팅의 차이를 알아야 되며, 리뷰 역할과 책임, 리뷰 유형, 리뷰 성공 요소는 꼭 알아둬야 한다. 샘플 문제에서도 이 부분들의 문제는 하나씩 꼭 등장함!

728x90
반응형
728x90
반응형
용어 정리
: 용어부터 정리해 두고 먼저 읽어봐야 이해가 쉬움.
▼ 혹시나 더 찾아보고 싶은 단어가 있다면 여기로 가서 찾아보기 ▼
++ https://glossary.istqb.org/ko_KR/
이상 사항 : ==이상 현상. 요구사항 명세서, 설계 문서, 사용자 문서, 표준 또는 누군가의 인식이나 경험 등에 기반한 기댓값에서 벗어난 상태를 말한다. 이상 현상은 리뷰, 테스팅, 분석, 비교, 혹은 소프트웨어 제품이나 해당 문서의 사용 도중에 발견할 수 있지만, 이에 국한되지는 않음.

동적 테스팅 : 테스팅 항목의 실행과 관련된 테스트.

공식 리뷰 : 공식 산출물로 정의된 프로세스를 따르는 리뷰 유형.
비공식 리뷰 : 정의된 프로세스를 따르지 않고 문서화된 공식 결과가 없는 리뷰 유형.

인스펙션 : 작업 산출물의 이슈를 식별하기 위한 공식리뷰 유형. 리뷰 프로세스와 소프트웨어 개발 프로세스를 개선하는 데 필요한 정보를 제공.

리뷰 : 결함을 발견하거나 개선 사항을 제공하기 위해 한 명 이상의 개인이 작업 산출물 또는 프로세스를 평가하는 정적 테스팅 유형.

정적 분석 : 형식이나 구조, 내용, 문서를 기반으로, 컴포넌트나 시스템을 실행하지 않으면서 평가하는 프로세스.

정적 테스팅 : 테스트 항목의 실행을 수반하지 않는 테스팅.

기술 리뷰 : 작업 산출물의 품질을 검사하고 명세 및 표준과의 불일치를 식별하는 기술 전문가의 공식 리뷰.

위크 쓰루 : == 워크스루. 작성자가 작업 산출물에 대한 리뷰를 주도하고, 참가자들은 발생 가능 이슈에 대한 질문과 의견을 제시하는 리뷰 유형.


3장은 공부시간이 80분으로  6장 테스트 지원도구(20분) 외에 가장 짧은 시간이 필요하다. 읽어보면서 이해하고 넘어가야 80분의 시간 안에 끝낼 수 있다. 아무 생각 없이 읽기만 반복한다면 뫼비우스의 띠처럼 글씨, 글씨, 글씨로 시간이 줄줄이 흘러가 버려지는 시간이 늘어날 수 있다. 도저히 집중이 안된다 싶다면 문제를 풀어보면서 해설을 읽으며 공부해도 좋은 구역이다.

728x90
반응형

+ Recent posts