'2008/07'에 해당되는 글 2건
- 2008/07/17 TDD 인하우스 툴, Eclipse Ganymede 잡담.
- 2008/07/12 테스트와 장인 - 9
TDD할때 쓰는 인하우스 툴입니다. 취향대로 쓸려다보니 적당한게 없어서 만들어쓰게 되는군요.
이전 수필들에 쓴것과 같이, system, component, integration, package, class, unit, chain-unit 같은 단위로 테스트 되고 테스트간 dependency 설정이 테스트 진행에 영향을 미칩니다. 로그와 테스트 콜 스택같은걸 보여줘서 복잡하고 커다란 테스트에 어느정도 도움이 되는군요.
아직 dependency graph 시각화 몇 편집 같은 plug-in은 만들지 못했지만, 일이 어느정도 마무리 되면 추가할 생각입니다.
Eclispe Ganymede에 UML 2.0 플러그인이 있더군요. 매우 쓸만해 보입니다.
StarUML을 써왓는데, 이걸로 갈아타봐야겠습니다. 일단 관계 연결 선 결합이 매우 깔끔하게 되는게 마음에 듭니다. 더써봐야알겠지만요 =)
'개발 > 낙서' 카테고리의 다른 글
| TDD 인하우스 툴, Eclipse Ganymede 잡담. (0) | 2008/07/17 |
|---|---|
| 객체간 소통에 관한 낙서 (2) | 2008/05/19 |
| "다수의 프레임워크를 합성하기"에 관한 낙서 (0) | 2008/04/03 |
| 표준 레이어에 관한 낙서 (0) | 2008/03/29 |
작성자: yagur Rev : 1
테스트 측정(Test Measurements)
나는 어림짐작은 안 한다네. 그건 논리적인 사고력을 파괴하는 끔찍한 습관이지
- 셜록 홈즈(아서 코난 도일)
테스트는 제품의 품질을 개선하거나 일부 항목을 검증하는 행위이다. Steve McConnell은 소프트웨어의 경우 외적으론 정확성correctness, 유용성usability, 효율성efficiency, 신뢰성reliability, 무결성integrity, 적응성adaptability, 정밀성accuracy, 견고성robustness에 영향을 미치며 내적으로는 유지 보수성maintainability, 유연성flexibility, 이식성portability, 재사용성reusability, 가독성readability등에 영향을 미친다고 한다. 아쉽게도 이 모든 사항이 어떤 측정 단위로 눈에 보여지는것은 아니다.
실세계의 제품은 테스트시 누구나 납득할만한 측정 단위로 테스트의 결과가 표현되며, 제품의 성능을 홍보할때도 많이 활용된다. 예를 들면 Bugatti Veyron은 세계에서 가장 빠른차라고 그들의 차를 홍보하며 제로백을 2.8초 최대속도 407km라고 소개한다.
위의 동영상은 부가티 베이론을 독일에 위치한 60마일 정도 되는 테스팅 트랙에서 테스트한 결과이다. 속도 변화를 보여주는데 그들은 km/h 단위로 측정하고 있다. 그들은 차량을 테스트 하며 목표 속도나 시간을 단위로 해 시스템 테스트를 진행하고 개선해 나갈것이다.
컴퓨터 부품인 Nvidia사의 GForce 9600 GT도 아래와 같은 성능을 내걸고 홍보한다.
Memory Bandwidth (GB/sec) 57.6
Texture Fill Rate (billion/sec) 20.8
Texture Fill Rate (billion/sec) 20.8
하드웨어의 경우 동력 대비 성능과 같은 효율성 측정이 있다. 예를 들자면 인텔 CPU는 풀 로드와 대기 상태의 전력소비량을 내세워 광고하고있다. 소프트웨어라면 어떠할까? 메모리 사용량과 실행 시간 같은 요소을 명세에 맞춰 효율성을 측정할수 있다. 하지만 이들은 물리적 효율성을 측정한것이다. 구조적 효율성의 변화를 테스트를 통해 개선해 나간다면 다른 단위가 필요하다. 이에 관해 Robert C. Martin은 몇가지 측량법metric을 소개한다.
1. 클래스의 숫자와 인터페이스의 숫자
추상 객체, 구체적 객체, 인터페이스의 숫자는 확장성의 지표가 될수 있다.
2. 결합도의 수입성數入性 - Ca 다른 클래스(측정 대상외의것)가 측정 대상의 클래스에 얼마나 의존하는가를 수치로 나타낸것은, 측정 대상의 책임성의 지표가 될수 있다.
3. 결합도의 수출성輸出性 - Ce 측정 대상의 클래스가 다른 클래스(측정 대상 외의 것)에 얼마나 의존하는가를 수치로 나타낸것은, 측정 대상의 독립성의 지표가 될수 있다.
4. 추상성Abstractness - A측정 혹은 분석 대상의 추상객체 혹은 인터페이스의 비율을 나타낸다. 범위는 0과 1사이이다.
5. 불안전성Instability - I 결합도의 수출성과 총 결합도의 비율을 나타낸다. I = Ce/(Ce+Ca). 이 측정값은 변경으로 부터의 복원성의 지표가 될수 있다.
테스트를 거듭하여 변경된 구조의 상태를 위의 측량법으로 측정하는 것이 추측에서 벗어난 방법, 즉 객관적이 되는데 도움이 될것이다. 물론 저들로 효율성을 전체를 판단할순 없지만, 측정기준이 없는것 보다 낫다.
예를들어 0.3 A를 가진 테스트 대상 컴포넌트나 패키지는 추상적인 객체나 인터페이스로 접근성을 높혀준다. 또한 대상(0.3 A를 가진 테스트 대상)과 결합하는 응용 프로그램의 결합도 수출성(Ce)이 높다 하더라도, 결합 대상들의 추상성(A)이 적당하다면 불안전성(I)을 완화 해줄 확률이 높아진다.
때때로 우리는 테스트를 통해 성능이나 안전성 외의 것을 생각해봐야한다. 어떤 구조개선을 이루고 있는것인지 직감에만 의존하는것은 아닐까.
마지막으로 맥코넬이 제시했던 요소들간의 영향력 차트이다.
위로된 화살표는 긍정적인 영향을 미치며, 아래로된 화살표는 부정적인 영향을 미친다.(CodeComplete 2nd)
'개발 > 수필' 카테고리의 다른 글
| 테스트와 장인 - 10 (0) | 2008/09/30 |
|---|---|
| 테스트와 장인 - 9 (0) | 2008/07/12 |
| 객체 지향 소프트웨어 일주 - 5 (0) | 2008/05/18 |
| 객체 지향 소프트웨어 일주 - 4 (0) | 2008/05/08 |
| 객체 지향 소프트웨어 일주 - 3 (0) | 2008/03/28 |
| 테스트와 장인 - 8 (0) | 2008/03/19 |





Recent Comment