본문 바로가기

etc

테스트의 질

반응형
테스트의 질을 측정하는 방법
 - 명령문 커버리지 statement coverage (  tool: JProbe)
 - defect insertion (tool: Jester)
 

전체 커버리지 : 테스팅이 필요한 경우의 (로직의 복잡도)수/프로그램의 서로 다른 경우를 테스트하는 테스트수


테스트 커버리지를 향상시키는 방법
  - 많은 테스트 작성 (전문 테스터가 작성하는 테스트 코드 수와 테스트 주도 개발자가 작성하는 테스트코드 수는 엄청난 차이가 있다 65:6)
  - 테스트의 수는 그대로 두면서 프로그램의 로직을 단순화하는 것. (리펙토링)

"모든 입력의 경우 (가능한 모든 경우를 효율적으로 줄인 샘플)를 따져서 테스트 커버리지를 높이는 대신에, 우리는 테스트는 그대로 두고 코드를 줄여서 동일한 테스트가 다양한 경우를 다루게 한다"



테스트의 종류
기능테스트
성능 테스트
스트레스 테스트
사용성 테스트

 TDD 의 주기 
  * 작은 테스트를 추가한다.
 * 모든 테스트를 실행하고, 실패하는 것을 확인한다.
 * 코드에 변화를 준다.
 * 모든 테스트를 실행하고, 성공하는 것을 확인한다.
 * 중복을 제거하기 위해 리펙토링한다.

리펙토링당 수정(메서드나 클래스 정의 바꾸는 것) 회수는   Fat tail, leptokurtotic profile 을 따름. 벨 커브와 유사하지만 종형 곡선이 예상하는 것보다 좀 더 극단적인 변화가 있음



 * 테스트를 확실히 돌아가게 만드는 세 가지 접근법 : 가짜로 구현하기, 삼각측량법, 명백하게 구현하기
 * 설계를 주도하기 위한 방법으로 테스트 코드와 실제 코드 사이의 중복을 제거하기.
 *  길이 미끄러우면 속도를 줄이고 상황이 좋으면 속도를 높이는 식으로 테스트 사이의 간격을 조절할 수 있는 능력.

 테스트 프레임워크에 대한 할일 목록 

* 테스트 메서드 호출하기
 * 먼저 Setup 호출하기
 * 나중에 tearDown 호출하기
 * 테스트 메서드가 실패하더라도  tearDown 호출하기
 - 여러개의 테스트 실행하기
 * 수집된 결과를 출력하기


개발자가 스트레스를 많이 받으면 테스트를 점점 더 뜸하게 한다.  positive feedback loop
rinse and repeat   에러가 많아지면 더 많은 스트레스를 받게된다. 그러므로 씻어내고 다시 반복하라.

자동화된 테스트 구축



















 
반응형

'etc' 카테고리의 다른 글

JS tpl 템플릿 추가하기  (0) 2011.10.24
테스트 패턴  (0) 2011.10.19
JS  (0) 2011.10.06
memoize  (0) 2011.10.05
Adding event handlers  (0) 2011.10.05