Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tr#3 5) 임성현 책임

433 views

Published on

  • Be the first to comment

Tr#3 5) 임성현 책임

  1. 1. 단위 테스트 자동화 지원도구-사례를 통한 단위테스트 자동화의 현실적 수준과 시사점<br />삼성SDS<br />생산성혁신본부/SI Eng. 그룹<br />임성현 책임<br />nd<br />2009 한국SW아키텍트 대회 2 KSAS<br />COEX 장보고 홀. 2009.7.9~10<br />
  2. 2. Page 2<br />목차<br />1. 들어가는 말<br /><ul><li>단위테스트?
  3. 3. 단위테스트 확산의 어려움
  4. 4. 일반적 접근</li></ul>2. 자동화 지원도구 소개<br />3. 현실적 수준<br /><ul><li>사례 환경 인터뷰
  5. 5. 접근1 : 자동화 수준
  6. 6. 접근2 : 모니터링
  7. 7. 접근3 : 현장의 눈높이</li></ul>4. 나오는 말<br /><ul><li>시사점/ 지향점</li></ul>요구정의<br />인수테스트<br />분석/아키텍처<br />시스템테스트<br />통합테스트<br />설계<br />개발<br />단위테스트<br />
  8. 8. 1. 들어가는 말 – 단위테스트란?<br /><ul><li>개발자가 의도한 대로 특정 코드 조각(unit)이 동작하는지 증명하기 위해 수행하는 테스트
  9. 9. 단위테스트란 단위기능에 대한 정합성, 결함여부, 기능성 등을 테스트하여 요구사항에 맞는 지를 검증
  10. 10. 수행주체 : 개발자
  11. 11. 수행시기 : 개발단계
  12. 12. 수행대상 : 독립된 클래스나 모듈
  13. 13. 수행목적 : 코드가 원래 의도한 대로 작성되었는지 검증하기 위해
  14. 14. 수행내용 : 단일 객체의 내부 로직에 집중하여 테스트</li></li></ul><li>1. 들어가는 말 - 단위테스트 확산의 어려움<br />개발공수 증가<br />에러 감소<br />사실, 개발자의 코딩 부담은 증가한다.<br />게다가, 오류가 줄어드는 것을 확인하는 것은 한참 이후이다.<br />그럼에도 단위테스트를 수행한 효과는 매우 높다 <br />Realizing quality improvement through test driven development: <br /> results and experiences of four industrial teams<br />
  15. 15. 1. 들어가는 말- Unit Test에 대한 일반적 접근<br />지금까지 우리는… 했습니다.<br />단위테스트를 하지 않고 개발 했습니다.<br />소스가 개발됨에 따라 숨겨진 오류도 함께 생산<br />통합테스트, 시스템 오픈 이후에야 오류 발견<br /><ul><li> 프로젝트 품질저하, 납기지연, 처리비용 증가</li></ul>UI 기반으로 테스트 했습니다.<br />개발자가 개발PC에서 무작위 테스트 수행<br />단발적/제한적 테스트 수행(변경 후 회귀테스트는 못함)<br /><ul><li> 동일수준의 수작업 테스트 반복, 시간 소요</li></ul>Junit 테스트케이스를 만들려고 노력 했습니다.<br />프로젝트 구성원의 수준에 따른 한계점 존재<br />신규 구성원에게 교육의 부담, 반발<br /><ul><li> 개발 전역에 단위테스트를 적용하는 목표 미달</li></li></ul><li>2. 자동화 지원도구 소개 I<br />Testopia( = Test + Utopia)<br />단위 테스트 코드 / 데이터 생성을 수월하게 하여 <br />SI 프로젝트에서 <br />개발자가 단위테스트를 생활화 하고, <br />테스트 결과로 테스트 커버리지를 정량적으로 관리할 수 있게 지원하는 <br />오픈소스 기반 단위테스트 지원도구<br />대상언어: Java<br />
  16. 16. Testopia적용 범위<br />테스트 계획 수립<br />테스트 수행<br />테스트 결과 검증<br />2. 자동화 지원도구 소개 II<br />테스트 대상 클래스 <br />선정<br />테스트 클래스 생성<br />테스트 데이터 생성<br />테스트 결과 보고서<br />테스트 원칙/정책<br />수립<br />테스트 리소스/환경<br />로딩<br />테스트 커버리지<br />단위테스트 실행<br />
  17. 17. ?<br />테스트<br />Testopia적용 모델(CTIP 연계)<br />CTIP<br />개발 프로세스<br />개발자 PC<br />개발서버<br />컴파일<br />2<br />테스트 코드 생성<br />/ 테스트<br />개발자 WAS<br />WAS<br />패키징<br />1<br />3<br />Eclipse<br />테스트 성공시<br />소스 + 테스트 코드 형상 관리<br />6<br />빌드서버<br />5<br />테스트 성공시<br />소스 배포<br />형상관리<br />2. 자동화 지원도구 소개 III<br />4<br />빌드 관리<br />배포<br />* CTIP: Continuous Test and Integration Platform<br />
  18. 18. 3. 현실적 수준 - 사례 환경 인터뷰 <br />최근 프로젝트의 단위테스트 요구사항 : 각기 달라요!<br />A Project (UI 없는 Java 시스템)<br />우리는 단위테스트를 직접 수행할 열의가 있습니다. 그런데, 가장 최적의 테스트 생성 표준 방안과 실행환경은 무엇일까요? <br />B Project (RIA UI/Spring Framework 기반 웹 시스템)<br />우리는 400여 화면을 개발해야 하고(더 증가할 수도 있습니다), 한 화면당 수십 가지 경우의 수가 존재 합니다. 이런 경우 어떻게 단위테스트를 해야 하나요?<br />C Project (RIA UI/ 개발기간은 3개월인 웹 시스템)<br />우리는 엄청난 속도로 모든 개발을 완료해야 합니다. 이전 프로젝트에서 일부 개발자가 경험했던 방식으로 직접 테스트 케이스를 만들도록 시키려는데, 반발이 예상됩니다. 더 좋은 방식이 있을까요?<br />
  19. 19. 3. 현실적 수준 - 접근1 : 자동화 수준<br />각 요소별 자동화 대상과 지원 범위<br />테스트 케이스 생성<br />Eclipse 개발환경에서 4Click으로 jUnit 실행 클래스 생성<br />Ant로 테스트 대상에 대해서 일괄적 생성 <br />Method Signature에 따른 템플릿 기반 테스트케이스 생성<br />테스트 데이터 생성<br />Properties의 기본값 활용<br />VOFactory, Excel기반으로 다양한 테스트케이스 관리<br />개발자의 UI 테스트 케이스 재사용 (송/수신 로그 활용)<br />자동화 테스트 실행 및 점검<br />CTIP 환경에서 주기적으로 실행, 결과 보고서 생성<br />
  20. 20. 3. 현실적 수준 - 접근2 : 모니터링<br />반복 테스트 Feedback(테스트 품질 관리)<br />테스트 결과 보고<br />테스트 커버리지<br />기타 Software Metric 지표 측정<br />
  21. 21. 3. 현실적 수준 - 접근3 : 현장의 눈높이 I<br />해당 프로젝트의 수준에 따른 단계적 접근<br />단위테스트 자동화 적용 모델(예시)<br />개발자 밀착 1:1 지원<br />개발한 소스로 직접 테스트 생성/구동<br />생성된 소스에 사용방법도 함께 포함<br />Level 5<br /><ul><li> 테스트 코드 재사용
  22. 22. 자동화된 통합 테스트
  23. 23. 테스트 자동화 시스템 구축</li></ul>Level 4<br /><ul><li>테스트커버리지를통한테스트케이스강화
  24. 24. 통합테스트코드작성
  25. 25. 고객테스트데이터사용</li></ul>Level 3<br /><ul><li>단위테스트코드작성
  26. 26. 단위테스트에대한테스트커버리지도입
  27. 27. 도메인테스트데이터사용</li></ul>적용목표<br />Level 2<br /><ul><li> 테스트 코드 자동 생성
  28. 28. CTIP 연동</li></ul>Level 1<br /><ul><li> CTIP 적용
  29. 29. 단위테스트 중요성 인식
  30. 30. 테스트 자동화 고려</li></ul>현수준<br />
  31. 31. 3. 현실적 수준 - 접근3 : 현장의 눈높이 II<br />해당 프로젝트의 수준에 따른 단계적 접근<br />위험기반 단위테스트 전략 기반으로 테스트 우선순위 선정<br />단위테스트<br />코드 작성<br />Example<br />테스트가 가능한 영역<br />테스트가 수행되어야 하는 영역<br />현재 자원으로 테스트 가능한 영역<br />Cost and Quality Trade-off<br />
  32. 32. 4. 나오는 말<br />시사점<br />시작점의 고민 <br />누구에게 어떤 기능을 제공할 Tool 인가?<br />누가 어떤 용도로 사용할 Tool 인가?<br />세상에 기여할 욕심으로 <br />프로젝트 수준에 맞는 단계적 확산 전략<br />지속적 모니터링, 밀착 지원을 통해 도구 사용 습관화<br />적응에 시간이 걸리는 훌륭한 제품 보다는 편하게 조금씩 개선하도록 지원<br />개발자는 또 다른 툴의 Beta Tester가 되기를 원하지 않는다.<br />현장에서 배운다<br />자동화 요구수준, 기능/범위의 유연성 지원<br />
  33. 33. 4. 나오는 말<br />Testopia지향점 : 누구를 위한 Utopia인가?<br />개발자 : 내가 짜야하는 단위테스트 코드를 쉽고 간단하게<br />SA : 단위테스트 코드 작성을 별 고민 없이 도입!!<br />QA : 테스트 강화를 통한 품질 확보<br />PM : 납기 준수, 믿을만한 개발/테스트 진척도<br />Test Engineer : 비즈니스 테스트때 단순 오류 이상의 테스트 가능<br />테스트 코드 작성은 테스트의 재 사용성을 높여주고 테스트에 대한 정량적 측정이 가능해지기 때문에 궁극적으로는 품질향상과 결함률 감소효과를 가져온다.<br />
  34. 34. 감사합니다.<br />

×