Mantis, SVN & Team Presentation #4 Team 2 201111344 김재엽 201111339 김민우 201211386 최하나
Contents Chapter 1 - Mantis Chapter 2 - Subversion Chapter 3 -
Chapter 1 Mantis
Mantis - 프로젝트단위로이슈관리 What is Mantis? - 이슈는분류, 중요도, 우선순위, 첨부파일등의정보를가짐 - 사용자에게공지할뉴스를등록하여공지 - 사용자관리 ( 설정, 권한등 ) - E-mail 알림기능 - Wiki 와연동 - 이슈번호로소스버전관리시스템이랑연동 4
Mantis Overview 뉴스 /RSS 프로젝트사용자관리관리 상태 ( 개발, 배포, 안정, 구버전 ) 프로젝트별이슈분류관리사용자별접근레벨관리 서브프로젝트 이슈 /RSS 접근레벨프로젝트접근권한 권한설정상태 Workflow 와접근레벨설정 E-mail 알림설정 5
Mantis Access Level 보기가능 - 보고자에게이슈를재오픈할수있도록한다. - 핸들러할당에대한상태를설정한다. - 사용자가자기이슈를수정할수있도록한다. - 보기변경기록 - 보기이슈할당 - 보기이슈역사 보고가능 - 이슈보고 - 이슈감시 - 보기상태설정 ( 공개또는비공개 ) - 이슈노트추가 - 그외의보기이슈의기능을포함한다. 6
Mantis Access Level(cont.) 갱신가능 - 이슈갱신 - 보기상태바꾸기 ( 공개또는비공개 ) - 그외엔보고가능의기능을포함한다. 개발자 - 이슈다루기 - 이슈할당 - 이슈이동 - 이슈삭제 - 이슈재발생 - 이슈상태갱신 - 비공개이슈보기 매니저 - 읽기전용이슈갱신 - 그외의개발자의기능을포함한다. 관리자 - 모든기능을관리할수있는최고관리자 7
Mantis Access Level(cont.) 8
Mantis Mantis with Testing Team - http://dev.viskit.co.kr:20080/mantis 9
Mantis Create Project - Mantis administrator 로그인 - 관리 -> 프로젝트관리 -> 새로운프로젝트생성 10
Mantis Project 프로젝트상태 - 개발버전 - 릴리즈버전 - 안정버전 - 구버전 서브프로젝트 - 메인프로젝트에서여러개의하위프로젝트를생성할수있다. - 하위프로젝트에관리자는물론이며익명의사용자가보는것까지설정할수있다. 11
Mantis Project(cont.) 프로젝트분류 - 이슈를등록할때해당이슈에대한분류를지정할수있다. 프로젝트버전 - 이슈를해당버전에넣어서관리한다. - 어떤이슈가어느버전에서생기고, 어느버전에서고쳐지고어느버전을목표등으로사용될수있다. 12
Mantis - 이슈에관련된정보를간략하게보여준다. My Page 13
Mantis Issue - Mantis 에등록된프로젝트가여러개일경우 - 이슈를등록할프로젝트를선택 - 이슈보고를하기위해필요한빈칸을채워주면된다. 14
Mantis Issue(cont.) - 버전관리를한다면다음과같이입력한다. - 로드맵에서진행상황을볼수있다. - 해당이슈를특정개발자에게할당할수있음 15
Mantis - 현재등록된이슈들을볼수있다. Issue(cont.) 16
Mantis Issue(cont.) - 자신이찾는이슈를필터링하여화면에출력할수있다. 17
Mantis Issue(cont.) - 이슈를선택하면올라와있는이슈를자세히볼수있다. 원하면모니터링하여상태를볼수있다. - 모니터링을하면다음과같이 내페이지 에서요약된항목들중 내가모니터링중 부분에서내가모니터링을선택한이슈들을보여준다. 18
Mantis Issue(cont.) - 나에게할당된이슈가있다면첫페이지에할당된이슈를보여주고, 선택을한다면그이슈들을출력해준다. 19
Mantis Roadmap - 이슈보고할때버전선택에서목표버전을설정하면해당버전까지이슈가등록되고버전완료에대한이슈를보여준다. 20
Mantis with Subversion - Mantis 와 Subversion 을연동하여이슈메모에커밋내용을등록할수있음 - 해당이슈를해결할수있음 - 해당이슈에대해메모를할수있음 21
Mantis with Subversion(cont.) - 특정이슈에다음과같은커밋메시지를작성해주면노트로올라간다. ( 작성가능 ) issue # 번호 ( 커밋내용 ) 22
Chapter 2 Subversion
Subversion - 소스코드의버전관리시스템 - 과거의어떤시점으로돌아갈수있다. - 파일을누가수정했는지추적할수있다. What is SVN? - 파일의특정부분이왜그렇게쓰여졌는지의미를추적할수있다. - Branch 로프로젝트에영향을최소화하며새로운부분을개발할수있다. 24
Subversion What is SVN? - 서버와클라이언트로구성 - 서버내부의프로젝트마다 Repository 존재 - 각각의클라이언트는하나의 Repository 에접근하여소스를읽거나갱신 25
Subversion What is SVN Repository? - Trunk 프로젝트의중심이되는폴더실제개발은이곳에서진행 - Branches Trunk 에서뻗어나온또하나의프로젝트로메인프로젝트에서분기하여따로개발 - Tags 버전업이나특정시점에서프로젝트전체를복사하여관리 26
Subversion Subversion in Eclipse - help->eclipse Marketplace->svn 검색 - Subversive -> SVN Team Provider 선택후설치 - eclipse 재시작후 SVN kit 1.3.8 선택후설치 27
Subversion Checkout in Eclipse - File -> Import -> SVN -> Project from SVN 28
Subversion Checkout in Eclipse(cont.) - URL 에 svn://dev.viskit.co.kr:23867/2014sv 입력 - 소프트웨어검증팀에게사용자계정및패스워드를발급받아입력 29
Subversion Commit / Update - Project 우클릭 -> Team -> Commit / Update 30
Subversion Commit / Update(cont.) - Update 저장소의소스폴더와비교하여변경된부분을검사하고최신버전으로동기화를맞춤 - Commit 소스를변경한후저장소에반영 Commit 할때마다버전이증가하여변경사항이기록 31
Subversion Commit / Update(cont.) - 먼저작업을끝낸개발자가 Commit 하게되면, 이후에 Commit 하는작업자들은 Commit 실패 - Commit 실패한개발자들이 Update 하게되면최신버전의소스코드와자신의소스코드를 Merge - Update 하게되면그소스파일의버전이바뀜 32
Subversion SVN 개발흐름도 33
Chapter 3
What is? What is Unit? - Java 프로그래밍을할때 Unit Test 를쉽게해주는 Framework 이다. - Unit 단위는하나의메소드로간주된다. - 결과값과기대값이같은지를판단하여성공과실패를결정한다. 35
What is Unit? Install Eclipse 2.1 버전이상에서는 을기본적으로사용. 메뉴에서 File->New->Other 에서 Junit 을입력하여확인할수있다. 36
Annotation What is Unit? @Test @Test(timeout) @Test(expected) Unit test 대상 method 를정의 테스트시간을예측할때사용시간보다길게진행될시 Fail 예외를지정할때사용예외가발생하지않을시 Fail @Ignore @After @Before @AfterClass @BeforeClass 테스트하지않을 method 앞에작성. 이후에오는테스트를무시한다. 각단위테스트 method 의실행앞, 뒤에서초기화및자원정리 각단위테스트 class 수행전, 후에초기화및자원정리 37
Annotation(Cont.) What is Unit? @RunWith @SuiteClasses @Parameters 사용자가지정한러너를통해특정클래스를실행 테스트하고자하는다수의클래스를지정 다수의 parameter 값을테스트하려고할때자동으로테스트를실행 38
What is Unit? Method assertequals ( 타입 expected, 타입 result) assertequals (String Message, 타입 expected, 타입 result) asserttrue (boolean condition) assertfalse (boolean condition) 예상값과결과값을매개변수로지정하고두값이같을경우에성공. 타입에는 int, long 등의기본자료형과 String, Object 가사용가능 위에 assertequals 에서예상값과결과값이같지않을경우첫번째매개변수인 Message 값을리턴 condition 이 true 이면성공, false 이면실패로처리한다 condition 이 true 이면실패, false 이면성공으로처리한다 39
Method(Cont.) What is Unit? assertnotnull (Object obj) assertnull (Object obj) assertsame (Object expected, Object result) assertnotsame (Object expected, Object result) Fail() 관련 method 객체가 null 이아니면성공 객체가 null 이면성공 객체가동일하면성공, 다르면실패 객체가다르면성공, 같으면실패 테스트가실패일경우를쉽게처리하는것과관련된 method 40
What is Unit? Example1 File New Other.. 을 Click 검색 - Test Case 선택 41
What Example1(Cont.) is Unit? Test 할 Source code 경로 setup() : 테스트대상클래스의객체를생성하거나네트워크연결, DB 연결작업등을수행. teardown() : setup 과정반대의기능. 객체의제거, 네트워크종료, DB 연결종료등을수행 beforeclass() : 클래스의시작혹은끝나고실행되는 method Test 할 Case 42
What Example1(Cont.) is Unit? Method 선택 43
What Example1(Cont.) is Unit? 44
What Example1(Cont.) is Unit? Run as -> Junit Test 45
What Example1(Cont.) is Unit? 실패시화면 성공시화면 46
What is Unit? Example2 BeforeClass 는 Test 내에서가장먼저 1 회실행된다. Before 는 Unit Test 앞부분에서 Test 마다 1 회실행된다. 47
What Example2(Cont.) is Unit? After 는 Unit Test 뒷부분에서 Test 마다 1 회실행된다. AfterClass 는 Test 내에서가장마지막에 1 회실행된다. 48
What Example2(Cont.) is Unit? 각각의 Annotation 에대한실행수와실행순서를 Print 문을통해확인할수있다. @Test Annotation 을제외한다른 Annotation 의경우 Testing 은이뤄지지않는다. 49