개발환경 교육교재

Similar documents
PowerPoint 프레젠테이션

슬라이드 1

개발환경 교육교재

슬라이드 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

Software Verification Team 오준 임국현 주영진 김슬기

슬라이드 1

슬라이드 1

Microsoft PowerPoint - 2번째발표(최종).pptx

Introduction to CTIP

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

슬라이드 1

PowerPoint Presentation

블로그_별책부록

슬라이드 1

Spring Boot

Apache Ivy

JUNIT 실습및발표

소프트웨어 검증 및 설계

슬라이드 1

파워포인트

PowerPoint Presentation

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

JUnit & Eclipse

Interstage5 SOAP서비스 설정 가이드

JFeature & ANT Tools Summary

슬라이드 1

Microsoft PowerPoint - jfeature장범석서재원박동현.pptm

슬라이드 1

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Introduction to Junit, Eclipse, Build Environment

슬라이드 1

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

문서의 제목 나눔명조R, 40pt

Google SVN 계정만들기 Site : 1. 사이트접속후프로젝트호스팅선택 2. 오픈소스프로젝트검색선택

문서의 제목 나눔고딕B, 54pt

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Spring Boot/JDBC JdbcTemplate/CRUD 예제

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

표지

ThisJava ..

슬라이드 1

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

4S 1차년도 평가 발표자료

슬라이드 1

ISP and CodeVisionAVR C Compiler.hwp

슬라이드 1

문서의 제목 나눔고딕B, 54pt

Angry MOMO Presentation

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

저장소 (Repository) 의디렉토리배치 저장소에바로소스를넣어프로젝트를진행할수있으나, 버전관리시스템에서권 장하는디렉토리배치방법이있다. sample branches dav-mirror --- src --- doc +--- Makefile

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

ppt.glzy8.com提供海量PPT模板免费下载!

목차 Ⅰ. 개요 Ⅱ. 추진배경 Ⅲ. 개발환경구축 ( 도구연계 ) Ⅳ. 도구연계성과 page 2

UnitTesting(ÇѱÛÆÇ).hwp

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Windows 8에서 BioStar 1 설치하기

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

윈도우시스템프로그래밍

미친놈과 정상인

Dialog Box 실행파일을 Web에 포함시키는 방법

문서의 제목 나눔고딕B, 54pt

슬라이드 1

PowerPoint 프레젠테이션

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

슬라이드 1

2. 기능요약 Parallel 빌드지원등빌드자동화기능을지원하며다양한도구 ( 형상관리도구, Issue Tracker, Test 도구, IDE) 와의연동을지원함. 주요기능 Parallel 빌드지원 ( 다수프로젝트동시빌드 ) 분산빌드웹기반관리 알림형상관리도구지원

PowerPoint 프레젠테이션

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

NTD36HD Manual

PowerPoint 프레젠테이션

DocsPin_Korean.pages

[Brochure] KOR_TunA

Microsoft PowerPoint - 3조-최종발표.pptx

Web Scraper in 30 Minutes 강철

DE1-SoC Board

PowerPoint 프레젠테이션

문서의 제목 나눔고딕B, 54pt

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Social Media and Social Computing

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

ETL_project_best_practice1.ppt

Effective Software Project Collaboration using Eclipse

목차 I. CI 정의 II. CI 필요성 III. CI 기능및특징 IV. CI 제품 V. Hudson VI. 적용방안 VII. 결론 - 1 -

Microsoft PowerPoint - CSharp-10-예외처리

02 C h a p t e r Java

임베디드시스템의개발환경구축사례

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

No Slide Title

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

Microsoft Word - Armjtag_문서1.doc

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

Transcription:

1. 테스트 (1/2) 1. 테스트도구 테스트 (Test) 테스트대상에입력값을넣었을때그결과가성공혹은실패의결과를내는것이다. 성공 입력 대상 결과 실패 수동테스트 vs. 자동테스트 Here! Here! Page l 3 3

1. 테스트 (2/2) 1. 테스트도구 장점 쉽다. 간편하다. 수동테스트 테스트불가능한상황이별로없다. 자동테스트 언제든지같은테스트를여러번수행가능 기존테스트는새테스트를작성하는발판이된다. ( 지식축적 ) 빠르므로자주돌려볼수있다. 개발자가코드개선활동을수행할때에도회귀테스트 (Regression Test) 를자주할수있다. 단점 휘발성 테스트항목이늘어난다면? 다른사람에게테스트내용을설명하기어려움 재현하기어려움 코드로작성해야한다. 기술, 노하우가필요하다 코드로테스트를작성할수없는상황이있다. ( 수동테스트와공조 ) 테스트도관리대상이다. 모듈화가잘되어있어야한다. 디자인의개선필요 Legacy Code의어려움 Page l 4 4

2. 개요 (1/2) 1. 테스트도구 테스트도구는 Unit Test, Mock, DB Test Framework 을통해 TestCase 작성을지원하고, Test Automation, Test Coverage, Test Reporting 등의기능을제공함 구현도구 TestCase 작성 테스트도구 Test 수행 작성 테스트클래스 실행 OOServiceTest Unit Test Framework 테스트대상모듈 MockDao 분석 Test Coverage OOService OODao 작성 <<Dataset>> DaoTest Mock Framework DB Test Framework 자동화 Test Automation 리포팅 DB DB Test Reporting 결과리포트 Page l 5 5

2. 개요 (2/2) 1. 테스트도구 테스트도구사용프로세스 write TestCases run TestCases analyze Test Coverage run automatically TestCases report Test results Page l 6 6

5. Unit Test (1/3) 1. 테스트도구 Unit Test 란대상코드에대해테스트하고자개발자가작성한코드로서, 주로특정메소드를실행해서 그결과가기대값과일치하는지확인하는형태이며, Unit Test 는서로독립적으로수행되어야함. 효과 작성한코드의설계개선작업시, 코드품질에대한확신 코드수정시버그를쉽게찾을수있게해줌 자동화된회귀테스트 (Regression Test) 를가능하게해주는 Source가됨 작성범위 주요흐름에대한테스트 (the happy path) 또다른주요흐름에대한테스트 (the main alternative path) 경계조건에대한테스트 (null 인자체크등 ) Exception 테스트 (Exception 발생하는조건에대한테스트 ) Page l 7 7

5. Unit Test (2/3) 구성 테스트프레임웍을사용하는 Class 공용으로사용하는테스트데이터 (test fixture) 테스트데이터준비 (Setup of test data) 테스트메소드 (testxxx) ( 테스트별준비 ) 테스트대상메소드실행 assert 문을이용한결과확인 (asserttrue, assertequals etc.) ( 내부메소드 ) 성공입력대상결과실패 1. 테스트도구 1: public class UserAdminTest { 2: 3: 4: /* Class under test */ private UserAdmin useradmin; 5: 6: 7: /* A simple test user */ private User user; // Test Data (Fixture) 8: /* An administrator role */ // 9: private Role adminrole; // 10: 11: 12: 13: 14: /** * Initializes the test fixture. */ @Before 15: 16: 17: public void setup() throws Exception { useradmin = new UserAdmin(); user = new User("John", "Doe"); // Test Data Setup 18: adminrole = new Role("Administrator"); // 19: } 20: 21: 22: 23: 24: 25: 26: /** * Test for method with... */ @Test public void testadduser() { user.setage(18); // Extra Test Setup 27: useradmin.adduser("jdoe", user, adminrole); // Use 28: Test Data 29: 30: 31: 32: User result = useradmin.getuser("jdoe"); assertequals("john", result.getfirstname()); assertequals("doe", result.getlastname()); 33: } 34: } Page l 8 8

5. Unit Test (3/3) JUnit 1. 테스트도구 JUnit 은자바프로그래밍언어를위한 Unit Test Framework 로, Unit Test 코드를작성하고자동화된 테스트를수행할수있는기능을제공함 Page l 9 9

6. Mock (1/3) 1. 테스트도구 Mock 객체는 Unit Test 의독립성 (isolation) 을높여주기위해사용하며, 테스트하고자코드와관련이 있는객체 (collaborator) 를흉내내어 Unit Test 를수행할수있도록도와주는객체임 Mock 객체를사용하는경우 진짜객체를준비, 설정하기어렵다 진짜객체가느리다. 진짜객체가사용자인터페이스를갖거나그자체이다. 진짜객체가아직없다. Mock 사용종류 이미구현된 Mock 객체사용 : Spring test (web, jndi), mockrunner EasyMock, JMock, Mockito 등의 Mock 라이브러리사용 Mock으로사용할가짜클래스직접구현 10 Page l 10

6. Mock (3/3) 1. 테스트도구 Easymock + Unitils 샘플 1: @RunWith(UnitilsJUnit4TestClassRunner.class) 2: public class EgovControllerTest { 3: 4: @Mock 5: @InjectIntoByType 6: private EgovService mockservice; 7: 8: @TestedObject 9: private EgovController egovcontroller = new EgovController(); 10: 11: @Test 12: public void testselectlist() throws Exception { 13: assertnotnull(egovcontroller); 14: expect(mockservice.selectlist()).andreturn( 15: Arrays.asList(new Message(101), new Message(102))); 16: EasyMockUnitils.replay(); 17: 18: List<Message> resultlist = egovcontroller.selectlist(); 19: assertnotnull(resultlist); 20: assertequals(2, resultlist.size()); 21: } 22: 23: @Test 24: public void testinsert() throws Exception { 25: mockservice.insert(makevo()); 26: EasyMockUnitils.replay(); 27: 28: SessionStatus status = new SimpleSessionStatus(); 29: String view = egovcontroller.add(makevo(), status); 30: } 31: } Mock 으로생성할인터페이스에대한정의한뒤, 테스트대상클래스에 Mock 으로정의한클래스를세팅한다. 리턴값을갖는메소드를 Mock 클래스에정의하고리턴값을설정한뒤, 진짜객체처럼사용한다. 리턴하지않는메소드를 Mock 객체에정의후진짜객체처럼사용한다. 11 Page l 11

7. Batch Job Test 1. 테스트도구 배치테스트도구를통해기개발된일괄처리모듈에대한 Junit 테스트파일생성및테스트수행과 함께, 기존에생성한 Junit 테스트파일을재실행할수있는기능을제공 배치테스트절차 1 Job 정보선택 2 Job Launcher 정보선택 3 Job Parameter 정보선택 ( 선택사항 ) 1 배치 Job 정보를선택한다. 2 Job Launcher 정보를선택한다. 3 필요시 Job Parameter 정보를선택한다. 4 Generate Batch Test File 버튼을클릭하여배치테스트파일을생성한다. 4 배치테스트파일생성 5 Test 버튼을눌러배치테스트를수행한다. 5 배치테스트수행 12 Page l 12

8. DB Test 1. 테스트도구 DB Test는 DAO와 DB 모두를통틀어 Persistence layer를테스트하는것을말하며, 테스트DB와테스트데이터를준비하여실제로 DB를이용한단위테스트를수행함 DB Test Framework DbUnit DbUnit 기능 DB 데이터를 XML 파일형태로 import/export DB 연결, DB 초기화 DB의데이터가기대값과같은지확인 빌드도구를통한테스트자동화기능제공 효율적인 DB Test를위해 DB 구조만갖고있는단위테스트용 DB 준비 각개발자마다별도의단위테스트용 DB 공간 Unitils, Spring Test 활용 13 Page l 13

9. Test Automation (1/2) 1. 테스트도구 작성된다수의 TestCase 를자동으로수행하여소스단위의품질을높이고자함. CI 서버와연계될때, 주기적인테스트수행으로인해목표시스템의품질을향상할수있음 Test Suite TestCase 모음 1. Test Suite Class 작성 Test Suite 설정방법 Test Suite Class 작성 빌드도구의 batchtest 묶음 @RunWith(Suite.class) @SuiteClasses( { HttpRequestMockTest.class, SessionMockTest.class, FileUploadMockTest.class, EmailMockTest.class, JDBCMockTest.class }) public class MockTestSuite { } 2. batchtest 로묶음 <junit...> <batchtest fork="yes" todir="${testreports.dir}"> <fileset dir="${testbuild.dir}"> <include name="**/*test.class" /> <exclude name="**/abstract*test.class" /> </fileset> </batchtest> </junit> 14 Page l 14

10. Test Reporting - HTML (1/4) 1. 테스트도구 Ant (build.xml) Maven (pom.xml) <!-- Junit Test Result Report --> <target name="junitreport" depends="tests"> <junitreport todir="${testhtml.dir}"> <fileset dir="${testreports.dir}"> <include name="test-*.xml" /> </fileset> <report format="frames" todir="${testhtml.dir}" /> </junitreport> </target> <reporting> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-surefire-report-plugin</artifactid> <version>2.4.2</version> </plugin> </plugins> </reporting> 15 Page l 15

10. Test Reporting - Excel (2/4) 1. 테스트도구 Ant Default 로사용한예 <path id="egov.lib"> <path refid="master-classpath" /> <path location="${antlib.dir}/egovtest/egovframework-dev-tst-ant.jar" /> </path> Excel Reporting Ant Task 설정 <taskdef resource="egovtest.properties classpathref="egov.lib /> <!-- JUnit Excel Report --> <target name="egovtest" depends="tests"> <egov-junitreport todir="${testxls.dir}"> <fileset dir="${testreports.dir}" includes="**/test-*.xml" /> </egov-junitreport> </target> Default 사용예 Ant 템플릿엑셀파일을별도로사용한예 <target name="egovtest-full" depends="tests"> <egov-junitreport todir="${testxls.dir}" outputname="egovtest-junit-full.xls" templatepath="${basedir}/build/template-kr.xls" summary="0,b,6" packages="0,b,11" lists="1,a,5"> <fileset dir="${testreports.dir}" includes="**/test-*.xml" /> </egov-junitreport> </target> 16 Page l 16

10. Test Reporting - Excel (4/4) 1. 테스트도구 Maven (goal : egovtest:junit-xls) <build> <plugins> <!-- Egovframework JUnit Excel Reporting --> <plugin> <groupid>egovframework.dev</groupid> <artifactid>egovtest-maven-plugin</artifactid> <version>1.0.0-snapshot</version> </plugin> </plugins> </build> 17 Page l 17

1. 개요 2. 형상관리 소스버전관리도구는시스템형상요소 ( 소스및데이터 ) 를문서화하고변경을소스버전관리절차에따라관리하고, 효율적으로처리하기위한통제환경을의미 소스버전관리도구의특징및기능 형상요소 ( 소스및데이터 ) 에대한변경사항을관리 버전관리를수행하고, 배포도구를통해변경사항을배포 일정주기에백업도구를통해백업을수행 소스버전관리도구의구성요소및관계도 프로젝트팀소스관리도구배포도구 개발자 PL Check in/out Configuration Management 배포 백업 저장소 CMO 19 Page l 19

2. Subversion 개요 (1/4) 2. 형상관리 Subversion(SVN) 의배경 CVS 의단점을개선하고 CVS 를대체할목적으로개발되었음 오픈소스기반의소스버전관리도구 (http://subversion.tigris.org) CVS 대비 Subversion의특장점 CVS와거의동일한사용법. CVS 사용자는누구나쉽게사용할수있음 Commit 단위 : CVS는개별파일별로리비전관리, SVN은변경이발생하는체인지셋 (Change Set) 별로리비전관리 Atomic Commit: 여러파일커밋시, 어느하나의파일에서커밋이실패할경우, CVS는해당파일앞의경우는커밋되고, 뒷파일은그대로남아있지만, SVN은모두이전상태로롤백 트리별, 파일별접근제어리스트지원 파일에대한이름변경 / 이동, 디렉터리버전관리도지원 CVS에비해빠른동작속도 (Update/Branching/Tagging Time) 20 Page l 20

2. Subversion 개요 (2/4) 2. 형상관리 SVN 클라이언트 - Eclipse 플러그인 Subversive Polarion 커뮤니티그룹에서개발 Eclipse Ganymede 버전부터 SVN 클라이언트로공식채택 빠른 update, 안정적인동작 공식웹페이지 : http://www.eclipse.org/subversive/ Subclipse Tigris 커뮤니티그룹 (Subversion 개발커뮤니티 ) 에서개발 Subversion 초창기폭넓은사용자확보 Subversive 대비느린 update, 다수의버그로불안정 공식웹페이지 : http://subclipse.tigris.org/ 21 Page l 21

2. Subversion 개요 (3/4) 2. 형상관리 저장소 (Repository) 모든프로젝트의프로그램소스들과소스에대한변경사항이저장됨 네트워크를통해서여러사람이접근 SVN에서는 Berkeley DB(Default) 또는파일시스템 (Optional) 을저장소로사용 저장소접근 1 Eclipse 메뉴, Window > Open Perspective > Other... > SVN Repository Exploring 2 Eclipse 메뉴, File > New > Repository Location 3 마법사에서, URL 과 Authentication 항목을입력 22 Page l 22

2. Subversion 개요 (4/4) 2. 형상관리 Revisions 소스파일등을수정하여커밋하게되면일정한규칙에의해숫자가증가 저장소에저장된각각의파일버전이라할수있음 SVN의경우파일별로리비전이매겨지지않고변경발생단위로전체리비전이매겨짐 리비전을보고프로젝트진행상황을알수있음 저장소를통해본리비전이해 커밋의단위 전체리비전번호증가 저장소의파일시스템 2 1 1 1 1 2 2 3 1 1 1 1 3 2 3 3 개별소스들의리비전 23 Page l 23

3. 소스공유 (1/2) 2. 형상관리 프로젝트공유 새로운프로젝트를저장소에추가 1 Eclipse 패키지 / 네비게이션뷰, 프로젝트오른쪽클릭 > Team > Share Project... 2 Share Project 마법사, SVN 선택 3 Share Project 마법사, 저장소위치선택 > Finish 24 Page l 24

3. 소스공유 (2/2) 2. 형상관리 소스단위공유 공유중인프로젝트내에서해당소스를저장소에추가 2 팝업창에서내용확인 > OK 1 Eclipse 패키지 / 네비게이션뷰, 대상소스오른쪽클릭 > Team > Add to Version Control... 25 Page l 25

4. Checkout 초기 checkout 2. 형상관리 저장소에서전체소스의최종리비전을받아오는것 저장소인증정책에따라 ID, Password 입력여부가결정 3 패키지 / 네비게이션뷰에서체크아웃한프로젝트소스확인 2 SVN Repositories 뷰, 저장소를확장하여 trunk 아래의프로젝트선택 > Check Out 1 Eclipse 메뉴, Window > Open Perspective > Other... > SVN Repository Exploring 26 Page l 26

5. Update 2. 형상관리 저장소에소스업데이트 체크아웃을한이후의타인에의한소스변경사항을확인 저장소에있는소스중로컬과비교하여변경된항목의최신버전의소스를가져옴 변경된항목의최신버전은로컬본에통합됨 Eclipse 패키지 / 네비게이션뷰, 업데이트대상소스들 / 패키지 / 프로젝트에서오른쪽클릭 > Team > Update 27 Page l 27

6. Commit 2. 형상관리 Commit 로컬에체크아웃한소스를수정, 파일추가, 삭제등을한뒤저장소에저장하여갱신하는것 커밋을하면전체리비전이 1 증가 (CVS 의경우수정한각각파일의리비전이증가 ) 2 팝업창에서반영내용확인및 Comment 입력 1 Eclipse 패키지 / 네비게이션뷰, 커밋대상소스들 / 패키지 / 프로젝트에서오른쪽클릭 > Team > Commit... 28 Page l 28

7. History 조회 2. 형상관리 History SVN에의해관리되는특정소스와관련된과거모든리비전의내역 History 조회 Eclipse의기본카테고리인 Team 의 History 뷰를통해조회할수있음 리비전로그목록 1 Eclipse 패키지 / 네비게이션뷰, 대상소스오른쪽클릭 > Team > Show History 선택된리비전의 Comment 선택된리비전의구조와변경파일들 2 History 뷰에서대상소스의 History 목록과리비전상세내역조회 29 Page l 29

8. 충돌해결 (1/2) 2. 형상관리 충돌 (Conflict) 로컬에체크아웃이후수정한소스를저장소에커밋할때, 저장소의리비전이더높을경우충돌발생 ( 타인에 의해수정되고커밋된상태 ) 충돌발생상황예 : 로컬리비전 = 597 < 저장소리비전 = 634 충돌해결방안 postpone: 즉시반영없이, 소스코드를계속수정. 수정이완료된시점에다시시도 ( 충돌해결안함 ) diff: 충돌된상황을비교. 로컬과저장소의소스의차이를비교 edit: 로컬의파일을다시열어수정 mine-full: 저장소의리비전내용을무시하고, 로컬의내용으로커밋. theirs-full: 로컬의수정내역을무시하고, 저장소의리비전으로대체하여업데이트 30 Page l 30

8. 충돌해결 (2/2) 2. 형상관리 충돌해결방안예 diff/edit: 로컬과저장소의소스를모두열어비교 / 편집 mine-full: 충돌이발생한파일에서오른쪽클릭 > Override and Commit... 선택 theirs-full: 충돌이발생한파일에서오른쪽클릭 > Override and Update... 선택 31 Page l 31

1. CI(Continuous Integration) 정의 3.CI 서버 여러명으로구성된팀이작업한것을자주 - 각팀원이하루에한번이상, 매일여러번 - 통합하는것을가 리키는소프트웨어개발 Practice 로, 개발자, 버전관리저장소, 통합빌드머신등으로구성됨 Notice Feedback Mechanism Build Failed Code Commit Source Code Build Developer Watch & Polling Unit Tests Code Commit Version Control Server (SVN) Deploy CI Server Code Inspection Developer Build Success Test Coverage Analysis Development Server 33 Page l 33

2. CI(Continuous Integration) 효과와특징 3.CI 서버 효과 흔히발생하는일반적인위험을줄여준다. 에러를초기에발견할수있다. 자주통합할수록에러가발생하는범위가좁아에러를잡는것이수월해진다. 잘동작하고에러가거의없는 S/W를유지할수있다. 언제어느때라도배포할수있는 S/W를생성해낸다. 반복적인수작업을줄여준다. 프로젝트가시성을좋게해준다. 개발팀이 S/W 제품에대해보다큰자신감을갖게해준다. 특징 -소스코드일관성유지 : 소스관리시스템이필요하다. -자동빌드 : 빌드는 CI 툴에의해자동으로이루어져야한다. -자동테스트 : 소스검증과함께기능 / 비기능테스팅을매번검증함으로써코드의품질을높일수있다. -일일체크아웃과빌드 : 빌드주기가길어질수록개발자소스의오류발생확률이높아지고그만큼시간을낭비하게된다. 34 Page l 34

3. Hudson 개요 3.CI 서버 Hudson 은오픈소스 CI 서버로소스빌드스크립트를사용한자동빌드및빌드결과를개발자에게피 드백하는메커니즘을제공함 초기화면 : 프로젝트리스트와빌드상태및빌드성공여부를보여줌 35 Page l 35

4. Hudson 특징및주요기능 3.CI 서버 Hudson 특징 쉬운 Installation : hudson.war형태로 servlet container에배포 웹기반 UI를통한쉬운설정및즉각적인피드백 플러그인기반의확장성제공 깔끔하고잘정의된문서및 API Hudson 주요기능 소프트웨어자동빌드 빌드주기에따른일일빌드또는주간빌드기능제공 지속적이고자동화된빌드검증 SCM 폴링 (polling) 기능을통한최신코드기반의빌드수행 지속적이고자동화된빌드테스트 태스트슈트실행을통한코드품질검증 빌드후속절차자동화 컴파일된코드의패키징및테스트리포팅기능제공 36 Page l 36

5. Hudson 대시보드 (dashboard) 3.CI 서버 Hudson 은빌드결과및테스트결과등을보여주는대시보드기능을제공함 37 Page l 37

6. Hudson 프로젝트메뉴 3.CI 서버 Hudson 은등록된프로젝트의소스코드변경내용추적을위한메뉴와수동빌드메뉴그리고프로젝 트빌드상태를보여주는메뉴등을제공함 기본메뉴 Changes : 빌드버전별로 SCM 에서지난버전에비해서변경된내용에대해변경자와커밋시에개발자가추가한 comment 를확인할수있음 Workspace : 프로젝트의빌드디렉터리로브라우저를통해빌드에사용된파일등을확인할수있음 Build Now : 스케줄에상관없이지금강제적으로빌드 Build History : 빌드수행시기와빌드상태및성공여부를보여줌 38 Page l 38

7. Hudson JUnit 테스트연동 3.CI 서버 Hudson 은 JUnit 테스트리포트를출력해주는기능을제공하며테스트의 Progress 누적그래프를프 로젝트초기화면에출력함 JUnit 테스트리포트 테스트 Progress 누적그래프 프로젝트의단위테스트결과및테스트소요시간등에관한리포트를보여줌 프로젝트빌드에따른 JUnit 테스트누적그래프로빌드번호화테스트 method 개수로빌드결과를보여줌 39 Page l 39