web application testing patterns

8
테스트 주도 개발 방법론 강의 자료 2003.7.19 XP 웹 애플리케이션 테스트 패턴 김창준 ([email protected] ) 강규영 ([email protected] )

Upload: june-kim

Post on 24-May-2015

1.071 views

Category:

Documents


2 download

DESCRIPTION

2003년 김창준, 강규영의 테스트 주도 개발 강연 자료

TRANSCRIPT

테스트 주도 개발 방법론 강의 자료2003.7.19

XP

웹 애플리케이션 테스트 패턴 김창준 ([email protected] )

강규영 ([email protected])

테스트 주도 개발 방법론 (김창준, 강규영) xper.org2

뒷 문 Back-door

• 정문을 통해 테스트하기 어려울 경우 안쪽으로 연결된 테스트용 뒷문을 사용할 수 있다 .– 뒷문에는 XML-RPC 등을 사용하여 접근할 수 있다 .– 뒷문을 통해 인터액티브 쉘을 제공할 수 있다 . 내시경처럼 .– 런타임 중에 시스템의 행동을 관찰하고 바꿀 수 있다 .

• 테스트 가능성이 높아진다면 좋은 게 아닐까 ?

테스트 주도 개발 방법론 (김창준, 강규영) xper.org3

흉내내기 Mocking

• 다른 부분에 의존하는 코드를 테스트하고 싶은 경우 그 주위를 가짜로 바꿔 치기 해 테스트 한다 .– HttpRequest, HttpResponse를 Mock* 로 바꿔 친다 .– 가짜를 만들기 어렵다면 설계에 문제가 있을 수 있다 . 디미터 법칙

(Law of Demeter)– 혹은 너무 진짜 같은 가짜를 만들려 하는 것은 아닌가 ? 흉내내는 코드는 가벼워야 한다 .– 의존하는 코드가 아직 구현이 안된 경우에도 그 코드를 흉내내는 가짜를 만들어 속인다 .

• 가짜는 진짜 같아야 한다 ?!

테스트 주도 개발 방법론 (김창준, 강규영) xper.org4

테스트가능층 삽입 Insert Testable Layer• 테스트하기 어려운 부분에 의존하는 모듈이 있을 때 그 사이에 얇은 테스트가능층을 삽입해 넣는다 .

– 테스트하기 어려운 부분의 지식은 철저히 감추어진다 .– 덕분에 테스트가능층 아래의 모듈을 다른 모듈로 바꿔 치기 쉬워진다 .– 테스트가능층은 얇은 것이 좋다 . 초판막 GUI. Humble Dialog

Box.

• 아예 테스트가능층 아래의 구현을 뒤로 미룰 수 있다 . ( 모델 우선 접근법 )

테스트 주도 개발 방법론 (김창준, 강규영) xper.org5

컨테이너 속 테스트 In-Container Test

• 컨테이너 속에 들어가 있는 코드를 테스트하기 어려운 경우 테스트를 컨테이너 속으로 집어 넣는다 .– 테스트 프록시 (Proxy)– 밖에서는 마치 테스트를 직접 돌리는 듯한 착각을 하게 된다 .– 테스트를 컨테이너 속으로 매번 집어넣기가 불편하다면 자동화하라 .– 실행을 위한 설정이 복잡한 시스템일 경우에도 사용한다 .

테스트 주도 개발 방법론 (김창준, 강규영) xper.org6

웹 에이전트 Web Agent

• 웹 서버에 대해 블랙박스 테스트를 하고 싶은 경우 웹 브라우저를 흉내내는 웹 에이전트를 사용한다 .– 일반적인 웹 에이전트의 기능을 구현한 라이브러리가 있다 .

HttpUnit, jWebUnit.– 특정 시스템만을 위해서 좀 더 추상화 된 웹 에이전트를 만들어 사용할 수 있다 . 게시물 등록하기 .– 필요에 따라 뒷문을 이용해서 시스템의 상태를 손쉽게 변경할 수 있다 .

테스트 주도 개발 방법론 (김창준, 강규영) xper.org7

브라우저 자동화 Browser Automation

• 때로는 더 바깥쪽의 테스트가 필요한 경우가 있다 . 자바 스크립트 ,웹 브라우저 호환성 테스트 등 . 이 경우에도 자동화를 시도하라 .– 소프트웨어가 자동화를 지원할 경우 그 기능을 사용한다 . 아니면 직접

OS 수준에서 자동화를 할 수도 있다 . 이벤트 호출 .– 역시 각 단위 동작을 좀 더 추상화 할 수 있다 .– 그러나 속도가 느리므로 대량 테스트는 어렵다 . 기본 단위 기능들을 위주로 테스트하라 .

테스트 주도 개발 방법론 (김창준, 강규영) xper.org8

참고자료• 서적

– Test Driven Development by Example, Kent Beck– Practical Test Driven Development, Dave Astels– Unit Testing in Java, Johannes Link– Extreme Programming Installed ( 번역서 ), Ron Jeffries et al.– Testing Extreme Programming, Lisa Crispin et al.– Lessons Learned in Software Testing, Cem Kaner et al.– Java Extreme Programming Cookbook, Eric M. Burke et al.– Java Tools for Extreme Programming, Richard Hightower et al.

• 웹사이트– 한국 XP 사용자 모임 http://xper.org