Introduction to CTIP 김의섭 2019-03-08
목차 CI & CTIP CTIP 장단점 CTIP 구성도 Tools Team Projects 2
CI - Continuous Integration Continuous Integration 소프트웨어개발에서 Build(Test-CTIP) 의프로세스를지속적으로수행하는것. 지속적으로개발된 Unit 코드에대한 Integration 작업을수행하여, 항상최신의상태를유지. Agile 개발방법론 / 프로세스중의하나인 XP(eXtream Programming) 의 Practice 중의하나. 팀을기반으로한협동적인개발 반례 ) 고전적인소프트웨어개발방법론인폭포수모델과나선모형 지속적인통합 (Continuous Integration) 은 팀의구성원들이자신들의작업한내용을자주통합하는개발지침를말한다. ( 적어도하루에한번 ) 마틴파울러 (Martin Fowler) 3
기존문제점 기존문제점 1. 개발막바지에이르러통합작업수행 개발자간잘못된의사전달로인해수많은오류발생 각종오류를한꺼번에처리해야만하는 Integration Hell 현상발생 통합시점에이미소스코드가방대해져오류의원인파악및해결을위해많은시간할애 [ 출처 ] C 환경에서의 CI( 지속적통합 ) 구축사례 / JAVA 환경에서의 CI( 지속적통합 ) 구축사례 4
기존문제점 기존문제점 2. 통합오류에대한빠른대처부족 통합빌드오류를통합담당자가각개발자에게직접전달 개발자가해당소스코드를개발한후많은시간이흘러통합오류확인 통합오류에대하여신속한대응체계를갖추지못함 [ 출처 ] C 환경에서의 CI( 지속적통합 ) 구축사례 / JAVA 환경에서의 CI( 지속적통합 ) 구축사례 5
기존문제점 기존문제점 3. 수작업에의한테스트수행 개별단위테스트는수행되지만테스트케이스가보존되지않음 별도의테스트커버리지를측정하지않아테스트수행정도를가늠하기어려움 회귀테스트 * 수행시테스트케이스를새로작성해야하기때문에막대한공수를필요로함 * 회귀테스트 : 개발과테스트를완료한모듈에서오류제거및수정과같은변경이일어날경우, 이러한변경에의해유입된오류가없는지를확인하는일종의반복시험 [ 출처 ] C 환경에서의 CI( 지속적통합 ) 구축사례 / JAVA 환경에서의 CI( 지속적통합 ) 구축사례 6
CTIP Continuous Test & Integration Platform Continuous Integration + Continuous Test CI (Continuous Integration) 개발기간동안개별개발된모듈에대한빌드를지속적으로수행하기위해 XP(eXtream Programming) 에서도입한빌드자동화개념 CTIP (Continuous Test & Integration Platform) CI 개념에테스트자동화개념을더함빌드도구, 테스트도구및기타개발시유용한도구들이유기적으로동작하도록묶은도구집합 (Tool Chain) 환경 7
CTIP 장단점? 통합소요시간감소 개발자간코드충돌조기발견 통합후오류발생률감소 초기환경구축의어려움 Well-developed test-suite 이필요 ( 테스 팅품질향상을위해 ) 지속적인통합을통해문제의조기발견 수동적인반복작업감소 빌드결과의배포및관련자에게통보 (Feedback) 테스트케이스재사용으로인한개발시간단축 테스트코드커버리지증가 품질도구들을통한코드품질검토 ( 테스트및정적분석 ) 유지보수성증가 ( 기능변경, 결함수정에대한공수감소 ) 8
CTIP 장단점? [ 출처 ] JAVA 환경에서의 CI( 지속적통합 ) 구축사례 9
CTIP 구성도예 9 이슈관리시스템 (with Mantics) 8 Build Script (with Ant) CTIP Tool Chain 4 스테이징서버 1 개별서버 5 Unit Test (with JUnit) 형상관리 Repository (with SVN) 2 3 Build Scheduling (with CruiseControl) 6 7 Test Coverage Analysis (with Clover) Package Dependency Analysis (with JDepend) Unit Test Report Test Coverage Report JDepend Report 1 소스코드개발및관리 6 빌드시커버리지분석자동수행 2 최신소스코드자동체크아웃 ( 업데이트 ) 7 빌드시의존성분석자동수행 3 정해진스케쥴링에따라빌드요청 8 빌드후문제점확인및등록 ( 통합담당자 ) 4 빌드자동수행및배포 9 등록된오류확인및해결 ( 개발자 ) 5 빌드시단위테스트자동수행 10
CTIP 구성도예 라이언즈프트솔루션 - OPEN ALM [ 출처 ] http://www.lionssoft.co.kr/open-alm/ 11
정적분석시스템테스팅 (+ testing) CI CTIP CI 도구 (CI Server) - 전체 Build 프로세스를관리 - Ex) Jenkins 버전관리시스템 (SCM) - 항상동일한최신의베이스라인코드를가지고작업필요. - Ex) Git, SVN 빌드도구 (Build Tool) - 개발된코드를컴파일과정을거쳐서서비스가능한형태로만드는빌드과정을수행할도구 - Ex) Maven, Ant 테스트도구 (Test Tool) - 단위테스트, 통합테스트, 사용자테스트, 회귀테스트등을자동으로수행할수있는도구 - Ex) Junit 12
정적분석시스템테스팅 (+ testing) CI CTIP CI 도구 (CI Server) - 전체 Build 프로세스를관리 - Ex) Jenkins 버전관리시스템 (SCM) - 항상동일한최신의베이스라인코드를가지고작업필요. - Ex) Git, SVN 빌드도구 (Build Tool) - 개발된코드를컴파일과정을거쳐서서비스가능한형태로만드는빌드과정을수행할도구 - Ex) Maven, Ant 테스트도구 (Test Tool) - 단위테스트, 통합테스트, 사용자테스트, 회귀테스트등을자동으로수행할수있는도구 - Ex) Junit 13
Tools? Niapa: https://www.swbank.kr/helper/tool/toolmain.do 14
2019 Software Verification 15
Team Projects 2019 Software Verification 3 학년 " 소프트웨어모델링및분석 " 수업과연동해서진행합니다. 3학년수업의개발결과물에대해서시스템테스팅수행후결과를 Issue Tracking System (ex, Redmine, Mantis) 을이용하여공유합니다. 3학년수업에서단위테스팅및관련분석을수행할수있도록 CTIP 환경을제공합니다. 테스팅결과에대한의견교환은 Issue Tracking System 을사용합니다. 테스팅을위한소스코드는 Configuration Management System (ex, Git, Svn) 을통해공유합니다. NIPA SW 뱅크에서제공하는다양한도구를사용할수있습니다. NIPA SW : https://www.swbank.kr/helper/tool/toolmain.do E-mail: atang34@naver.com 메일제목양식 : [2019SV][TP(#)]T(#) 16