16
단단 단단단 단단단 단단단단 - 단단단 단단 단단단단단 단단단단 단단단 단단단 단단단 단단 SDS 단단단단단단단 /SI Eng. 단단 단단단 단단 2009 단단 SW 단단단단 단단 2 KSAS COEX 단단단 단 . 2009.7.9~10 nd

Tr#3 5) 임성현 책임

Embed Size (px)

Citation preview

Page 1: Tr#3 5) 임성현 책임

단위 테스트 자동화 지원도구 - 사례를 통한 단위테스트 자동화의 현실적 수준과 시사점

삼성 SDS생산성혁신본부 /SI Eng. 그룹

임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

Page 2: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

Page 2

목차

1. 들어가는 말- 단위테스트 ?

- 단위테스트 확산의 어려움- 일반적 접근

2. 자동화 지원도구 소개

3. 현실적 수준- 사례 환경 인터뷰- 접근 1 : 자동화 수준- 접근 2 : 모니터링- 접근 3 : 현장의 눈높이

4. 나오는 말- 시사점 / 지향점

요구정의

분석 / 아키텍처

개발 단위테스트

통합테스트설계

시스템테스트

인수테스트

Page 3: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

1. 들어가는 말 – 단위테스트란 ?

개발자가 의도한 대로 특정 코드 조각 (unit) 이 동작하는지 증명하기 위해 수행하는 테스트

단위테스트란 단위기능에 대한 정합성 , 결함여부 , 기능성 등을 테스트하여 요구사항에 맞는 지를 검증

- 수행주체 : 개발자- 수행시기 : 개발단계- 수행대상 : 독립된 클래스나 모듈- 수행목적 : 코드가 원래 의도한 대로 작성되었는지 검증하기 위해- 수행내용 : 단일 객체의 내부 로직에 집중하여 테스트

Page 4: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

1. 들어가는 말 - 단위테스트 확산의 어려움

사실 , 개발자의 코딩 부담은 증가한다 .게다가 , 오류가 줄어드는 것을 확인하는 것은 한참 이후이다 .그럼에도 단위테스트를 수행한 효과는 매우 높다

Realizing quality improvement through test driven development: results and experiences of four industrial teams

개발공수 증가

에러 감소

Page 5: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

1. 들어가는 말 - Unit Test 에 대한 일반적 접근

지금까지 우리는… 했습니다 .

1. 단위테스트를 하지 않고 개발 했습니다 .- 소스가 개발됨에 따라 숨겨진 오류도 함께 생산- 통합테스트 , 시스템 오픈 이후에야 오류 발견 프로젝트 품질저하 , 납기지연 , 처리비용 증가

2. UI 기반으로 테스트 했습니다 .- 개발자가 개발 PC 에서 무작위 테스트 수행- 단발적 / 제한적 테스트 수행 ( 변경 후 회귀테스트는 못함 ) 동일수준의 수작업 테스트 반복 , 시간 소요

3. Junit 테스트케이스를 만들려고 노력 했습니다 .- 프로젝트 구성원의 수준에 따른 한계점 존재- 신규 구성원에게 교육의 부담 , 반발 개발 전역에 단위테스트를 적용하는 목표 미달

Page 6: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

2. 자동화 지원도구 소개 I

Testopia( = Test + Utopia)

- 단위 테스트 코드 / 데이터 생성을 수월하게 하여

- SI 프로젝트에서

- 개발자가 단위테스트를 생활화 하고 ,

- 테스트 결과로 테스트 커버리지를 정량적으로 관리할 수 있게 지원하는

- 오픈소스 기반 단위테스트 지원도구

- 대상언어 : Java

Page 7: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

테스트 계획 수립 테스트 수행 테스트 결과 검증

2. 자동화 지원도구 소개 II

Testopia 적용 범위

테스트 대상 클래스 선정 테스트 클래스 생성

테스트 리소스 / 환경로딩

테스트 데이터 생성

단위테스트 실행

테스트 커버리지

테스트 결과 보고서

테스트 원칙 / 정책수립

Page 8: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

Testopia 적용 모델 (CTIP 연계 )

CTIP

?

개발자 PC

빌드 서버

개발서버

형상관리 빌드 관리

테스트 코드 생성/ 테스트

테스트 성공시소스 배포

패키징

배포

테스트

컴파일개발자 WAS

Eclipse테스트 성공시

소스 + 테스트 코드 형상 관리

* CTIP: Continuous Test and Integration Platform

2. 자동화 지원도구 소개 III

2

13

WAS

개발 프로세스

4

5

6

Page 9: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

3. 현실적 수준 - 사례 환경 인터뷰

최근 프로젝트의 단위테스트 요구사항 : 각기 달라요 !

1. A Project (UI 없는 Java 시스템 )

- 우리는 단위테스트를 직접 수행할 열의가 있습니다 . 그런데 , 가장 최적의 테스트 생성 표준 방안과 실행환경은 무엇일까요 ?

2. B Project (RIA UI/ Spring Framework 기반 웹 시스템 )

- 우리는 400 여 화면을 개발해야 하고 ( 더 증가할 수도 있습니다 ), 한 화면당 수십 가지 경우의 수가 존재 합니다 . 이런 경우 어떻게 단위테스트를 해야 하나요 ?

3. C Project (RIA UI/ 개발기간은 3 개월인 웹 시스템 )

- 우리는 엄청난 속도로 모든 개발을 완료해야 합니다 . 이전 프로젝트에서 일부 개발자가 경험했던 방식으로 직접 테스트 케이스를 만들도록 시키려는데 , 반발이 예상됩니다 . 더 좋은 방식이 있을까요 ?

Page 10: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

3. 현실적 수준 - 접근 1 : 자동화 수준

각 요소별 자동화 대상과 지원 범위

1. 테스트 케이스 생성- Eclipse 개발환경에서 4Click 으로 jUnit 실행 클래스 생성

- Ant 로 테스트 대상에 대해서 일괄적 생성

- Method Signature 에 따른 템플릿 기반 테스트케이스 생성

2. 테스트 데이터 생성- Properties 의 기본값 활용

- VOFactory, Excel 기반으로 다양한 테스트케이스 관리

- 개발자의 UI 테스트 케이스 재사용 ( 송 / 수신 로그 활용 )

3. 자동화 테스트 실행 및 점검- CTIP 환경에서 주기적으로 실행 , 결과 보고서 생성

Page 11: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

3. 현실적 수준 - 접근 2 : 모니터링

반복 테스트 Feedback( 테스트 품질 관리 )1. 테스트 결과 보고

2. 테스트 커버리지

3. 기타 Software Metric 지표 측정

Page 12: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

3. 현실적 수준 - 접근 3 : 현장의 눈높이 I

해당 프로젝트의 수준에 따른 단계적 접근1. 단위테스트 자동화 적용 모델 ( 예시 )

2. 개발자 밀착 1:1 지원- 개발한 소스로 직접 테스트 생성 / 구동- 생성된 소스에 사용방법도 함께 포함

현수준

적용목표

Level 5• 테스트 코드 재사용• 자동화된 통합 테스트• 테스트 자동화 시스템 구축

Level 4• 테스트 커버리지를 통한 테스트 케이스 강화• 통합 테스트 코드 작성• 고객 테스트 데이터 사용

Level 3• 단위 테스트 코드 작성• 단위 테스트에 대한 테스트 커버리지 도입• 도메인 테스트 데이터 사용

Level 2• 테스트 코드 자동 생성• CTIP 연동

Level 1• CTIP 적용• 단위테스트 중요성 인식• 테스트 자동화 고려

Page 13: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

3. 현실적 수준 - 접근 3 : 현장의 눈높이 II

해당 프로젝트의 수준에 따른 단계적 접근3. 위험기반 단위테스트 전략 기반으로 테스트 우선순위 선정

단위테스트코드 작성

Example

테스트가 가능한 영역

테스트가 수행되어야 하는 영역

현재 자원으로 테스트 가능한 영역 Cost

and Quality Trade-

off

Page 14: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

4. 나오는 말

시사점

1. 시작점의 고민 - 누구에게 어떤 기능을 제공할 Tool 인가 ?

- 누가 어떤 용도로 사용할 Tool 인가 ?

2. 세상에 기여할 욕심으로- 프로젝트 수준에 맞는 단계적 확산 전략

3. 지속적 모니터링 , 밀착 지원을 통해 도구 사용 습관화

- 적응에 시간이 걸리는 훌륭한 제품 보다는 편하게 조금씩 개선하도록 지원

- 개발자는 또 다른 툴의 Beta Tester 가 되기를 원하지 않는다 .

4. 현장에서 배운다

- 자동화 요구수준 , 기능 / 범위의 유연성 지원

Page 15: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

4. 나오는 말

Testopia 지향점 : 누구를 위한 Utopia 인가 ?- 개발자 : 내가 짜야하는 단위테스트 코드를 쉽고 간단하게

- SA : 단위테스트 코드 작성을 별 고민 없이 도입 !!

- QA : 테스트 강화를 통한 품질 확보

- PM : 납기 준수 , 믿을만한 개발 / 테스트 진척도

- Test Engineer : 비즈니스 테스트때 단순 오류 이상의 테스트 가능

테스트 코드 작성은 테스트의 재 사용성을 높여주고 테스트에 대한 정량적 측정이 가능해지기 때문에 궁극적으로는 품질향상과 결함률 감소효과를 가져온다 .

Page 16: Tr#3 5) 임성현 책임

2009 한국 SW 아키텍트 대회 2 KSAS COEX 장보고 홀 . 2009.7.9~10nd

단위 테스트 자동화 지원도구 : 임성현

감사합니다 .