TSE 2006(Meeting Requirements through Acceptance and Stress Testing)
Acceptance Tests
Formalized 요구사항
시스템 테스트(완성한 시스템에 대한 테스트)를 할 때 보통 한다.
보통 수동으로 한다.(반복하기 힘들기 때문에)
Fit/FitNesse
목적 : 고객이 인수 테스트를 작성하도록 만든다. <= XP의 목표가 되었다. 근데 이걸 어떻게 할 건가?
HTML을 input으로 사용한다.
간단한 형식
여러 도구로 사용가능(Ms Office)
테스트와 문서(요구사항에 대한..)를 섞어 둘 수 있다.
테스트 만드는 방법
public 필드 사용
errors() 메소드 구현
@Configurable 사용
스프링 아키텍처가 Fit 테스트를 간단하게 해준다.
서비스들이 유즈케이스나 비즈니스 로직을 나타낸다.
따라서 요구사항 테스트로 사용할 수 이쓴ㄴ 부분이 정의되어 있는 것이다.
도메인 객체는 파라미터로 사용할 수 있다.
시스템 테스트와 관계없이 비즈니스 요구사항에 대한 구현에서 에러를 찾아 볼 수 있다.
쉽게 자동화 할 수 있다.
사용자는 GUI가 보이지 않더라도 테스트가 수행됐다는 것을 믿을 수 있다.
사용 방법
서비스 클래스 마다 Fit 테스트를 작성하라.
public 속성을 도메인 객체로 변환해주는 어댑터를 만들어라.
서비스를 호출하라
그냥 서비스를 Fit으로 Export 할 순 없을까?
비즈니스 계층은 별다른 노력 없이 FIt으로 테스트 가능하다.
할 수 있다. Generic Fit Exporter를 만들어야 한다. 이게 바로 Spring-FitNesse 프로젝트 목표다.
스프링 Bean에 접근할 수 있어야한다.
이 후는 FitNesse 구현에 대한 여러 고민이 이어집니다. 이럴까 저럴까..이렇게 했다.
PropertyEditor와 BeanWrapperImpl 사용해서 구현함.
그 결과..
도메인 객체를 자동으로 만들고 제공합니다.
도메인 객체를 파라미터로 서비스들을 호출합니다.
그 결과를 확인합니다.
주요 클래스
SpringColumnFixture
SpringActionFixture
결론
Fit을 쉽게 사용할 수 있으며
Generic 어댑터를 사용할 수 있다.
완성된 시스템이 없더라도 요구사항을 테스트 할 수 있다.
https://spring-fitnesse.dev.java.net
Stress Tests
성능을 측정하는 방법
JMeter
원하는 것
계층 마다 측정하기
JAMon
모니터링 프레임워크
결과를 웹 페이지에 보여준다.
스프링은 JAMon 인터셉터를 제공해 준다.
JAMon
웹 계층
JAMonFilter
HTTP Request/Response
뷰와 컨트롤러까지 처리에 걸리는 시간을 계산해서 전체 시간에서 뺀준다.
다른 계층
포인트컷을 조정하면 된다.
SQL 까지 프로파일 할 수 있다.
왜 JAMon을 사용해야 하나?
기존의 포인트컷과 Spring AOP 프록시들을 재사용할 수 있다.
오버헤드가 적다.
모든 계층을 조사할 수 있다.
스프링이 묶어 줄 것이다.
결론
DI
환경에 독립적
통합 테스트용 클레스
스프링 아키텍처가 Fit에 가져다 주는 장점
도메인 객체를 데이터 컨터이너로 사용할 수 있다.
JMeter, JAMon 그리고 Spring AOP는 성능 측정을 쉽게 해준다.