Whiteship's Note


TSE 2006(Meeting Requirements through Acceptance and Stress Testing)

Spring/TSE 2006 : 2007. 12. 11. 23:26


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

Non functional Requirement
성능을 측정하는 방법
    JMeter

원하는 것

    계층 마다 측정하기
    JAMon
       모니터링 프레임워크
       결과를 웹 페이지에 보여준다.
       스프링은 JAMon 인터셉터를 제공해 준다.

JAMon
   
    웹 계층
       JAMonFilter
          HTTP Request/Response
          뷰와 컨트롤러까지 처리에 걸리는 시간을 계산해서 전체 시간에서 뺀준다.
    다른 계층
       포인트컷을 조정하면 된다.
    SQL 까지 프로파일 할 수 있다.
   
왜 JAMon을 사용해야 하나?

    기존의 포인트컷과 Spring AOP 프록시들을 재사용할 수 있다.
    오버헤드가 적다.
    모든 계층을 조사할 수 있다.
    스프링이 묶어 줄 것이다.

결론

    테스트와 관련된 스프링의 다양한 기능
       DI
       환경에 독립적
       통합 테스트용 클레스
    스프링 아키텍처가 Fit에 가져다 주는 장점
       도메인 객체를 데이터 컨터이너로 사용할 수 있다.
       JMeter, JAMon 그리고 Spring AOP는 성능 측정을 쉽게 해준다.


top

Write a comment.


JMeter 다운로드 & 사용해보기

View/JSP : 2007. 6. 29. 13:30


1. 바이너리 압축 파일을 다운로드 : http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
하고 압축을 풀고 bin 디렉토리에서 jmeter.bat를 실행합니다.
사용자 삽입 이미지
AWT를 사용하여 만든 것 같습니다.

2. Test Plan에 Thread Group을 생성합니다.
사용자 삽입 이미지

3. Thread Group을 설정합니다.
사용자 삽입 이미지
20명의 사용자가 동시에(0) 접근하는 것을 10번 반복하여 테스트하겠다고 선언합니다. 샘플러가 에러가 나도 계속(countinue)작업하기로 합니다.

4. 이제 요청을 만듭니다.
사용자 삽입 이미지

5. request를 설정합니다.
사용자 삽입 이미지

6. 결과를 살펴볼 Listener들 중에서 Graph Result를 추가합니다.
사용자 삽입 이미지

7. 테스트를 실행합니다.
사용자 삽입 이미지

8. 그럼 결과가 나타납니다.
사용자 삽입 이미지

아 근데 이게 뭘 나타내는지 모르겠군요.ㅋㅋㅋ

그나마 View In Table은 좀 알아 볼 수 있겠네요.
사용자 삽입 이미지
동시 접속자 20명일 때를 10번 테스트 해본 결과 페이지 로딩하는데 평균 144 밀리세컨이 걸리는군요.

참조 : http://wiki.javajigi.net/display/IDE/JMeter

'View > JSP' 카테고리의 다른 글

태그 파일 중복 제거 예제  (0) 2008.09.17
태그 파일 배포하기  (0) 2008.09.14
태그 파일 활용 예제  (0) 2008.02.18
태그 파일  (2) 2008.02.18
JavaServer Pages Standard Tag Library  (5) 2008.02.18
JMeter 다운로드 & 사용해보기  (0) 2007.06.29
9. Testing Techniques  (2) 2007.06.26
6. The Decorating Filter Pattern  (0) 2007.06.20
5. Development Using Patterns  (0) 2007.06.06
4. Role Separation with Custom Tags  (0) 2007.06.01
3. Role Separation with JavaBeans  (0) 2007.05.29
top

Write a comment.