본문 바로가기

knowledge/CSTS

[CSTS] 내용정리 및 암기법 5. 동적 테스팅 (17문제)

 

 

 

 

※ 초록색 글씨는 암기법입니다 :)

본인이 만들어서 외워주시는게 가장 좋지만

어려운 분들을 위해 제가 외웠던 방법을 공유해드립니당 😉 ※

 


 

*동적테스팅 개요*

테스트 대상을 실행하여 결함을 검출하는 방법.

테스트 케이스(TC)를 결정해야 한다.

=> 동명구경 (동적테스트에는 명세기반, 구조기반, 경험기반이 있음)

 

 


*명세기반 테스팅*

 

- 소스코드를 참고하지 않고 TC를 결정. (Black Box test)

: 코드를 전혀 모르는 사람이 T를 수행하는게 좋을 수 있음.

- 적용대상에 제한 없음, 컴통시인 전 과정에서 사용가능

- T주도 개발(XP) 에서는 개발자가 먼저 TC작성 후 코드를 구현.

- 장점 : 규모가 큰 단위에서 효과적, 구현에 관한 지식 없어도 T가능, 사용자 관점이라 결함검출에 효과적.

- 명세기반은 위의 표를 그냥 외워주는게 짱인거같다... 문제가 보통 저 분류로 많이 나오는거같아서

시험 시작할 때 저 표를 어딘가 한구석에 그려두고 문제를 풀면 아주 편해요~~~~

- 동등분할과 경곗값 분석 문제는 아래처럼 직선을 그려놓고 문제에 나오는 범위를 표시하면 편하다.

 

 

💎동등분할

- 동등분할 방식으로 설계하여 TC를 선택한다고 하는 문제에서는, 

문제에서 요구하는 각 영역마다 해당하는 값의 개수가 똑같이 있는 보기를 선택하면 된다.

ex) 문제에서 요구하는 영역이 [10세미만, 10대, 20대, 30대, 40세 이상] 이라고 한다면

보기에서 { 5, 12, 24, 31, 58} 인걸 고르면 정답 

 

 

💎 경곗값 분석

- 경곗값 분석으로 설계하여 TC를 선택한다고 하는 문제에서는,

문제에서 요구하는 각 영역 경계 근처에 있는 값들이 있는 보기를 선택하면 된다.

ex) 문제에서 요구하는 영역이 [20세 미만, 20세~40세 미만, 40세~60세 미만, 60세 이상] 이라고 한다면

보기에서 {19, 21, 39, 41, 59, 61} 을 고르면 정답

 


*구조기반 테스팅*

- 소스코드를 참고해서 TC를 결정. (= White box test, Structural test)

- 프로그램에 존재하는 일부 경로만 테스트함. 

=> 변기문다결조 (변기 문이 다 걸어잠겨서 구조가 필요해 ㅋㅋ)

: 형 조건/결정T, 본경로T, 장T, 중조건T, 정T, 건T, 결정/조건T

- 책의 exercise 문제들과 예제에 나오는 문제들을 잘 풀어보시고 꼭 이해해보세요! 

 

💎 형 조건/결정 테스트 (MCDC)

- 결정을 구성하는 각 조건이 독립적으로 결정의 결과에 영향을 미쳐야 함. 

- x에 대한 ~ = x 빼고 나머지 값 고정 (x 만 true, false 경우 나눔)

 

💎 본경로 테스트

- 여러 경로중 가장 기본 경로를 테스트. (Basis path)

 

 💎 장 테스트

- 프로그램의 모든 실행가능한 문장을 최소 한번은 행하는 것.

ex) int x=1 ;  <----- 이런게 '문장'

- 제어흐름 그래프를 작성할 수 있어야 함.

 

💎 중조건 테스트

- 모든 조건의 조합을 테스트할 수 있는 입력데이터들을 집합으로 선정.

- 문장T, 결정T, 조건T, 결정조건T 를 포용함.

 

💎 정 테스트

- 결정문 기준. 모든 결정문의 결과가 참이되는 경우와 거짓이 되는 경우를 최소 한번 실행.

ex) if ( x>10 || y >0) <------ 이런게 '결정문'

- 각각의 결정문에서 결과가 true와 false가 되게 경우의 수를 구함.

- 결정T는 문장T를 포용한다. (= 결정T만족하면 문장T만족) 

 

💎 건 테스트

- 모든 조건문의 조건이  true가 되는 경우와 false가 되는 경우를 모두 발생시키는 경우의 수 구함.

ex) if ( x>10 || y >0) 에서 x>10, y>0 각각이 조건

- 조건T와 결정T는 서로 포용하지 않음

 

💎 결정/조건 테스트

- 결정T와 조건T를 모두 만족하는 TC집합.

 


⚡커버리지

: 얼마나 충분한 테스트를 하는지 보여주는 정량적인 지표.

 

- 문장 커버리지 = TC집합에 의해 실행된 문장의 수 / 전체 실행가능한 프로그램 문장수 x 100

- 결정 커버리지 = 실행된 결정문의 결과 수 / 전체 프로그램의 결정문의 결과수 x 100

- 조건 커버리지 = 실행 된 개별 조건의 결과 수 / 전체 프로그램 개별 조건의 결과수 x 100

- 결정/조건 커버리지 = 실행된 결정문과 개별 조건의 결과 수 / 전체 프로그램 결정문과 개별조건의 결과수 x100

- 다중조건 커버리지 = 실행된 조건들의 조합 수 / 전체 프로그램 개별 조건들의 조합 수 x 100

- MCDC 커버리지 = MCDC를 만족하는 조건의 개수 / 총 조건의 개수 x 100

 

 


 

 

*경험기반 테스팅*

- 기존 테스트 경험, 테스트하는 시스템이나 도메인에 대한 경험등을 바탕으로 수행.

 

💎 오류추정 

- 개발자가 범할 수 있는 실수를 먼저 나열해보고 그 결함을 노출하는 TC를 설계하고 수행.

- 테스터의 경험과 직관을 바탕으로 하기 때문에 매우 직관적.

- 명세기반T 와 함께 사용될 수 있다. '

 

💎 탐색적 테스트

- T대상에 대한 이해를 바탕으로 즉석에서 TC결정 후 T수행. (이해, 설계, 실행을 병행)

- 테스터의 지식에 의존.