1 SOFTWARE VERIFICATION 2015.04.17 TEAM 4 [ 정적분석도구 & 시스템테스트도구 ] 컴퓨터공학부 200911393 박현규 Presenter 201010768 최정한 201111339 김민우 201211389 함진아
CONTENTS 2 PART 1 Purpose 3 PART 3 System testing Tool 8 58 PART 4 Make up for CTIP 83 PART 5 Summary 93 References 95
3 PART 1 Purpose
PART 1 Purpose 4 What is Static analysis? 정적분석 (Static analysis) 은프로그램을실행하지않고진행하는분석이다. 예상되는문제를미리발견하고해결할수있으며, 실제로실행하기어려운분야에적용되기도한다. 대상은소스코드외에도개발전반에걸쳐할수있다. 예 ) code convention 오류, overflow, divide by zero 등을미리알수있다. Halting Problem
PART 1 Purpose 5 Static analysis tools 주요목적 툴이름 코딩표준 Checkstyle 코드중복 PMD 의존성분석 Jdepend 버그패턴 Findbugs
PART 1 Purpose 6 What is System testing? V&V 모델의 validation에속하며, 명시된요구사항을만족하는지확인하기위해통합된시스템을테스트하는절차이다. 통합된시스템의각부분이요구사항에맞게수행되는지평가를하게된다. System testing tool
7 PART 2 Static analysis Tools
8 What is Checkstyle? CheckStyle은코딩표준에맞게소스코드를작성하도록도와주는도구이다. 개발자들이잘지키지는않지만중요한것들을지적해준다 (ex : private 설정 ) 협업시에코딩스타일을맞출수있고, 잠재적인결함발견도가능하다. 팀의코딩규칙을문서로정리해서지키기로하면, 규칙이많아질수록어기기쉽다. 라이선스 : Eclipse Public License 1.0 주요분석목적 : 코딩표준준수
9 Eclipse : Checkstyle plugin 1. Checkstyle plugin 다운 Help market place checkstyle 검색 Checkstyle Plug-in 6.5.0 Install
10 Eclipse : Checkstyle plugin 2. Checkstyle 환경설정 window prefrences checkstyle sun check (eclipse) 선택 Sun_check_eclipse.xml은 check rule에대한 xml 파일로, Check하고자하는기능및조건과 Checkstyle tool에대한환경설정내용이들어있는기본파일이다.
11 Eclipse : Checkstyle plugin 3. Checkstyle 실행 프로젝트에서우클릭 Checkstyle Active Checkstyle 코드왼쪽에 guild line 생성
12 Ant : Checkstyle setting 1. Checkstyle 다운 http://sourceforge.net/projects/checkstyle/files/checkstyle/6.5/checkstyle-6.5-bin.zip/download Checkstyle 6.5 버전을다운받아서압축해제
13 Ant : Checkstyle setting 2. build.xml 파일설정 1) checkstyle 설치경로를 checkstyle.home 으로설정 2) Target 작성을위해참조할 classpath 를, 다운받은 checkstyle 내의.jar 파일로지정 3) 실행시킬파일 (checkstyle-6.5-all.jar) 을 available file 로지정 4) checkstyle 태그를이용해서 checkstyle 을 run 하는부분작성 config : checkstyle_checks.xml( 이클립스에서지정한 sun_checks.xml 과같은것 ) formatter : 결과저장형태및저장경로와이름 / fileset : 분석할파일지정
14 Ant : Checkstyle setting 3. build 시에러해결 Checkstyle_check.xml 에서오류 : ${checkstyle.suppressions.file} 이지정되지않음 그래서 checkstyle_check.xml 내부확인 ${checkstyle.suppressions.file} 이 xml 파일내부에정의되어있지않는데, suppressionfilter 부분에서사용하고있다는것확인 해결 실제 checkstyle 폴더내부에있는 suppressions.xml 폴더의절대경로로수정
15 Ant : Checkstyle setting 3. build 시에러해결 마찬가지이유로, {Checkstyle설치경로}/config 내 3가지파일에대한 xml 부분을모두절대경로로수정
16 Ant : Checkstyle setting 4. build 완료및 checkstyle 수행 Checkstyle 수행문구와함께 build 성공 지정한경로에지정한이름으로결과 xml 파일저장된것확인가능.
17 Ant : Checkstyle setting 4. build 완료및 checkstyle 수행 결과 xml 내부
18 Jenkins : Checkstyle plugin 1. checkstyle plugin 설치및 build 설정 jenkins 설정 플러그인관리 설치가능 checkstyle plugin & Analysis Collector Plugin 체크및설치 (Static Code Analysis Plug-ins가자동설치된다.) Jenkins job 구성 Build Invoke Ant 의 Target ant 설정에서 checkstyle 수행을위해 build.xml 에추가한 target 을입력 빌드후조치 Publish checkstyle analysis results 추출된 checkstyle 결과 xml
19 Jenkins : Checkstyle plugin 2. 빌드후결과확인 Ant 에서의 Checkstyle 수행메시지 Checkstyle plugin 을통해결과 xml 을가져와서 dashboard 로뿌려주기위한작업 빌드후결과화면에서 checkstyle analysis 결과추가
20 Jenkins : Checkstyle plugin 3. jenkins dashboard 에서 checkstyle 의결과확인 프로젝트의왼쪽메뉴에 Checkstyle Warning 가추가되고, 클릭하면 dashboard 형태로결과확인
21 Jenkins : Checkstyle plugin 3. jenkins dashboard 에서 checkstyle 의결과확인 프로젝트의메인화면에서 build # 에따른 warning 의경향을그래프로확인할수있다.
22 What is PMD? Program May Dependable 의약자 정해진규칙에따라소스코드를검사해서위반사항을찾아낼수있다. 규칙기반소스코드검사 ( 코드최적화, 데드코드등 ) 중복코드검색 (Cut & Paste Detector) Eclipse plugin 으로사용할수있으며, 별도로커맨드라인에서사용가능하다. 대상은 java, javascript, XML 등이있다. 라이선스는 BSD-style 주요분석목적 : 규칙준수 & Cut & Paste 체크
23 Eclipse : PMD plugin 1. PMD plugin 다운 http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/ Help Install new Saftware PMD for Eclipse 다운로드
24 Eclipse : PMD plugin 2. PMD 환경설정 Project properties Rule source : PMD 에서검사할 rule 을정할수있다.
25 Eclipse : PMD plugin 3. PMD 중복검사수행 프로젝트우클릭 -> PMD -> Find Suspect Cut & Paste CPD View 창에결과가보고된다.
26 1. PMD 다운로드 Ant : PMD setting http://pmd.sourceforge.net 5.3.0 버전다운로드후압축해제
27 Ant : PMD setting 2. build.xml 파일설정 1) pmd.home : pmd 설치경로설정 2) 결과폴더지정 3) Pmd 수행을위한 Classpath 지정 4) pmd 수행을위한 target 지정 5) 실제 pmd 수행태그 <pmd> rulesetfiles : pmd 수행을위한 ruleset이정의된 xml 파일이필요! formatter : 결과파일경로및이름 fileset : 분석할파일경로지정
28 Ant : PMD setting 3. Eclipse 를이용하여 PMD 분석을위한 Ruleset 이정의된 xml 파일추출 Eclipse Windows Preferences PMD Rule Configuration 원하는 Rule 을선택하여 Apply 한뒤오른쪽 Export 버튼클릭후 {Pmd 설치경로 }/rulesets 폴더를만들어서그안에저장한다. 여기서추출된 ruleset xml 파일을 build.xml 에서사용한다!
29 Ant : PMD setting 3. Eclipse 를이용하여 PMD 분석을위한 Ruleset 이정의된 xml 파일추출 추출된 xml 파일에서 Eclipse 에서선택한 rule 들이추가되어있는모습을확인할수있다.
30 Jenkins : PMD plugin 1. PMD plugin 설치및 build 설정 jenkins 설정 플러그인관리 설치가능 PMD Plugin 체크및설치 Jenkins job 구성 Build Invoke Ant 의 Target ant 설정에서 PMD 수행을위해 build.xml 에추가한 target 을입력 빌드후조치 Publish PMD analysis results 추출된 PMD 결과 xml
31 Jenkins : PMD plugin 2. 빌드후결과확인 Ant 에서의 PMD 수행메시지 PMD plugin 을통해결과 xml 을가져와서 dashboard 로뿌려주기위한작업
32 Jenkins : PMD plugin 3. jenkins dashboard 에서 PMD 의결과확인 프로젝트의왼쪽메뉴에 PMD Warnings 가추가되고, 클릭하면 dashboard 형태로결과확인 checkstyle 과마찬가지로, 프로젝트메인화면에서그래프형태로 build # 에따른 PMD warnings 의경향을살펴볼수있다.
33 What is JDepend? 패키지의존성과관련된설계품질을관리 / 분석할수있다. 클래스파일들을읽어서분석을한다. 각패키지별로의존성측정이가능하며, 수치화, 그래프로표현이가능하다. 개발과정중에도아키텍쳐품질을평가할수있다. XML 형식으로도저장가능하다. 주요분석목적 : 아키텍쳐품질검사 ( 의존성분석 )
34 Eclipse : JDepend plugin 1. JDepend Plugin 다운 Help Install new Saftware http://andrei.gmxhome.de/eclipse/
35 Eclipse : JDepend plugin 2. JDepend 실행및결과 프로젝트우클릭 run jdepend analysis
36 Eclipse : JDepend plugin 결과가가지는의미 CC AC Ca Ce A D Concrete Class Abstract Class 추상클래스나인터페이스의개수. 확정성의척도 Afferent Couplings 현재패키지에종속성을갖는패키지개수. Efferent Couplings 현재패키지가종속하고있는패키지개수. 추상화정도. 0은완전구체적패키지. 1은추상적패키지. Main Sequence 로부터의거리. Main Sequence 란추상적이면서안정적이거나, 완전구체적이면서불완정한패키지. 0일수록가깝고 1일수록멀다.
37 Eclipse : JDepend plugin 결과가가지는의미 D 값이낮을수록인터페이스기반의개발. Coupling 이적음 1에가까울수록다른클래스들이의존해야될클래스이고 0에가까울수록다른클래스에의존성을가져야한다.
38 Why Dependency? 큰규모의개발을쉽게하기위해서덩어리기반으로쪼개어개발을하게된다. 쪼개어개발함으로써개발과유지보수에도움이된다. Dependency 구조가꼬여서 cyclic 구조가생기게되면, 쪼개놓은것이하나로합쳐지는것이된다.
39 Ant : JDepend setting 1. JDepend 다운 http://www.softpedia.com/dynpostdownload.php/c2597537e5026e84c0c4180697e22b64/552fab3e/2de28/0/1 JDepend 2.9.1 버전을다운받아서압축해제
40 Ant : JDepend setting 2. Ant library 에 JDepend 추가 Eclipse ant plugin 폴더안에다운받은 jdepend-2.9.1.jar를복사해넣는다. Jdepend의경우, Classpath를따로설정하지않아도 build.xml에서 jdepend 실행을위한 jdepend target을지정할수있다.(ant에서제공 ) 그러나 ant는태그에대한 format만정의해줄뿐, 실제 jdepend 실행을위한.jar 파일은제공하지않고있어서직접적으로 ant의 library 폴더안에 jdepend.jar을복사해주어야한다.
41 Ant : JDepend setting 3. build.xml 파일설정 1) 실제 jdepend가실행되는 <jdepend> 태그지정 2) Format / outputfile : 결과파일 xml 경로및이름지정 3) Classpath location : 태그를위한참조영역이아닌검사를수행할파일들의경로! 4) 결과를 html 형태로추출이가능하다.
42 Ant : JDepend setting 4. build 완료및 jdepend 수행 지정한경로에지정한이름으로결과 xml, html 파일저장된것확인가능.
43 Ant : JDepend setting 4. build 완료및 jdepend 수행 xml 파일로부터추출된결과 html 화면
44 Jenkins : JDepend plugin 1. JDepend plugin 설치및 build 설정 jenkins 설정 플러그인관리 설치가능 JDepend plugin 체크및설치 Jenkins job 구성 Build Invoke Ant 의 Target ant 설정에서 JDepend 수행을위해 build.xml 에추가한 target 을입력 빌드후조치 Report JDepend 추출된 JDepend 결과 xml
45 Jenkins : JDepend plugin 2. jenkins dashboard 에서 JDepend 의결과확인 프로젝트의왼쪽메뉴에 JDepend 가추가되고, 클릭하면 dashboard 형태로결과확인
46 What is Findbugs? 자바프로그램분석도구로, 메릴랜드대학에서개발했다. data flow, control flow 분석등을이용한다. 버그패턴을자동으로찾아서알려준다 ( ex : race condition, null Pointer exception 등 ) source code( *.java 파일 ) 보다는 byte code( *.class 파일 ) 를기반으로분석을진행한다. 주요분석목적 : 버그패턴분석
47 Eclipse : Findbugs plugin 1. Findbugs Plugin 다운 Help Install new Saftware http://findbugs.cs.umd.edu/eclipse/ 2. Findbugs 실행 프로젝트우클릭 findbugs findbugs
48 Eclipse : Findbugs plugin 3. Findbugs 결과확인 Windows Show view Others findbugs 관련결과확인가능
49 Eclipse : Findbugs plugin 3. Findbugs 결과확인 프로젝트우클릭 findbugs open analysis result in editor Save XML을통해결과를 xml로저장가능
50 Ant : Findbugs setting 1. Findbugs 다운 http://sourceforge.net/projects/findbugs/files/findbugs/3.0.1/findbugs-3.0.1.zip/download Findbugs 3.0.1 버전을다운받아서압축해제
51 Ant : Findbugs setting 2. build.xml 파일설정 1) Findbugs.home : findbugs 설치경로지정 2) classpath : findbugs 설치경로내의 library 폴더지정 3) 실제 findbugs 가수행되는 <findbugs> 태그 output, outputfile : 결과 xml 파일경로및이름지정 class location : 분석할.class 파일들이있는경로폴더 4) 결과 xml 파일을 html 형태로저장
52 Ant : Findbugs setting 3. build 완료및 findbugs 수행 지정한경로에지정한이름으로결과 xml, html 파일저장된것확인가능.
53 Ant : Findbugs setting 3. build 완료및 findbugs 수행 결과 xml 및 html 화면
54 Jenkins : Findbugs plugin 1. Findbugs plugin 설치및 build 설정 jenkins 설정 플러그인관리 설치가능 Findbugs plugin 체크및설치 Jenkins job 구성 Build Invoke Ant 의 Target ant 설정에서 Findbugs 수행을위해 build.xml 에추가한 target 을입력 빌드후조치 Publish findbugs analysis results 추출된 findbugs 결과 xml
55 Jenkins : Findbugs plugin 2. jenkins dashboard 에서 Findbugs 의결과확인 프로젝트의왼쪽메뉴에 Findbugs Warnings 가추가되고, 클릭하면 dashboard 형태로결과확인
56 Jenkins : Findbugs plugin 2. jenkins dashboard 에서 Findbugs 의결과확인 프로젝트의메인화면에서 build # 에따른 findbugs warnings 의경향확인가능
57 PART 3 System analysis Tool
PART 3 System analysis Tool 58 What is TestLink? 요구사항으로부터테스트케이스를유도해내서관리할수있는시스템통합도구다. 테스트도구는아니고, 테스트프로세스를관리할수있다. 웹에서사용하기때문에, os 구분은없고 apm 환경이필요하다. 주요분석목적 : 테스트플랜 & 케이스관리, 문서작성
PART 3 System analysis Tool 59 What is TestLink?
PART 3 System analysis Tool 60 Redmine : Issue tracker Issue tracker 와연동할수있다. 레드마인이설치된상태기때문에 redmine 의 url 을등록한다.
PART 3 System analysis Tool 61 How to use Testlink 1. 프로젝트생성 이름, Prefix, 추가항목, 이슈트래커설정가능
PART 3 System analysis Tool 62 How to use Testlink 2. 요구사항만들기 type 도설정가능
PART 3 System analysis Tool 63 How to use Testlink 3. 요구사항에대한 operation 만들기
PART 3 System analysis Tool 64 How to use Testlink 4. Test suite 만들기
PART 3 System analysis Tool 65 How to use Testlink 5. Specification 테스트케이스만들기. 스텝밟을수있다.
PART 3 System analysis Tool 66 6. Test Plan How to use Testlink 실제테스트 excecution 을계획할수있다. 단위별로, 버전별로도가능하며, 일정조율도가능할듯하다.
PART 3 System analysis Tool 67 6. Test Plan How to use Testlink Plan 에할당하기
PART 3 System analysis Tool 68 6. Test Plan Plan 생성 How to use Testlink
PART 3 System analysis Tool 69 6. Test Plan Plan 생성 How to use Testlink
PART 3 System analysis Tool 70 7. Test 실행 How to use Testlink
PART 3 System analysis Tool 71 7. Test 실행 How to use Testlink 할당받은일을 Tester 가진행.
PART 3 System analysis Tool 72 8. 이슈등록 How to use Testlink
PART 3 System analysis Tool 73 How to use Testlink 9. Metric Dashboard
PART 3 System analysis Tool 74 How to use Testlink 10. Test 결과보고
PART 3 System analysis Tool 75 How to use Testlink 11. 요구사항문서
PART 3 System analysis Tool 76 How to install Testlink 홈페이지에서 testlink-1.9.13.tar.gz 다운로드 apps 폴더에 testlink 생성. 그안에 conf 와 htdocs 생성. Htdocs 에압축해제 Conf 폴더에 testlink.conf 파일생성 Bitnami->redmine->apache2->conf-> httpd.conf 파일변경 startredmine 에서 mysql 실행 -> table 생성 -> 권한부여 Config.inc.php 파일변경 Testlink 설치
PART 3 System analysis Tool 77 How to install Testlink
PART 3 System analysis Tool 78 How to install Testlink 따라서작성한다.
PART 3 System analysis Tool 79 How to install Testlink Mysql 설정
PART 3 System analysis Tool 80 How to install Testlink Mysql 설정 table 생성 아이디, 권한생성
PART 3 System analysis Tool 81 How to install Testlink Htdocs 폴더 config.inc.php 수정
82 PART 4 Make up for CTIP
PART 4 Make up for CTIP 83 Jenkins : Mail setting jenkins 서버관리자 email 설정 smtp 설정을통해사용자 mail 환경구축
PART 4 Make up for CTIP 84 Jenkins : Mail setting 프로젝트관리 설정 빌드후조치 E-mail Notification 빌드에오류가난경우, 또는오류가해결된경우 등록된메일로빌드내용발송
PART 4 Make up for CTIP 85 Redmine : Mail setting Bitnami 로 redmine 설치시관리자계정의 email 설정을할수있다. SMTP 설정 gmail 선택후 ID/PW 입력
PART 4 Make up for CTIP 86 Redmine : Mail setting User 가입시에, email 을작성하도록되어있어모든 user 가 email 계정을등록한다.
PART 4 Make up for CTIP 87 Redmine : Mail setting 관리자 setting email modifications 일감등록이있을때마다 email 발송
PART 4 Make up for CTIP 88 Redmine : Mail setting 일감등록시에담당자로특정 user 를지목할경우, 해당 user 에게 email 발송
PART 4 Make up for CTIP 89 Jenkins : Redmine plugin 1. Redmine plugin 설치 Jenkins setting plugin manager 설치가능 redmine plugin 체크및설치 2. Redmine 주소설정 Jenkins setting Redmine 이름, url 및 version 입력
PART 4 Make up for CTIP 90 Jenkins : Redmine plugin 3. 프로젝트와 Redmine 연결 프로젝트 구성 assign redmine project 체크 등록한 redmine 선택 redmine에등록되어있는프로젝트의이름입력
PART 4 Make up for CTIP 91 Jenkins : Redmine plugin 3. 프로젝트와 Redmine 연결 프로젝트메뉴에 redmine T4 생성 클릭하면단순히 redmine 링크로넘어감. 사실상연동되는부분은없다고판단! 메일설정으로빌드이슈관리결정 빌드실패시 jenkins 관리자에게메일발송 메일확인후 redmine 에이슈등록 지정된담당자에게메일발송
92 PART 5 Summary
PART 5 Summary 93 Total Environment 이름 버전 운영체제 Windows 7 (64bit) JAVA JDK 1.8.0_40 개발도구 Eclipse 4.4.2 (Luna) 유닛테스트도구 Junit 4.0 빌드도구 Ant 1.9.2 빌드서버 Jenkins 1.609 버전관리 Visual SVN Server 3.3.1 이슈트래커 Redmine 3.0.1 Checkstyle 6.5 정적분석도구 PMD 5.3.0 JDepend 2.9.1 Findbugs 3.0.1 시스템테스트도구 TestLink 1.9.13
References 94 Downloads findbugs : http://sourceforge.net/projects/findbugs/files/findbugs/3.0.1/findbugs-3.0.1.zip/download pmd plugin : http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/ http://sourceforge.net/projects/pmd/files/pmd/5.3.0/pmd-bin-5.3.0.zip/download testlink : http://sourceforge.net/projects/testlink/files/testlink%201.9/testlink%201.9.13/testlink-1.9.13.tar.gz/download jdepend eclipse plugin : http://andrei.gmxhome.de/eclipse/ References http://skyul.tistory.com/336 // find bugs http://science.slc.edu/~jmarshall/courses/2002/fall/cs30/lectures/week08/computation.html //turing machine http://blog.daum.net/darkandy/129 //jdepend http://kitle.tistory.com/51 //testlink 설치 http://www.treselle.com/blog/static-code-analysis-jenkins/ // jenkins 정적분석툴연동
95 THANK YOU ANY QUESTIONS?