ppt.glzy8.com 海量 PPT 模板免费下载 소프트웨어검증발표 #1 junit, Eclipse, 정적분석도구 T5 201013759 근량 201013760 기세파
contents 1 2 3 4 JUnit Eclipse jdepend colver
JUnit 이란? Junit 는가장많이사용되는 Java 단위테스트프레임워크. 콘솔환경에서명령행으로도실행가능. Eclipse 에는기본도구로되어있음. wikipedia LOGO
Junit 의필요한예 예 1 제가만든각종연산하는프로그램이있습니다. 문제는이상은없는것같은데결과가이상합니다. 그래서테스트를시작합니다. 덧셈부분이잘못됬다고치고, 일단차례대로메소드들은테스트할것입니다. 그런데잘못된덧셈을하기전각각의메소드들을모두테스트해야하고잘못된선택으로취소가됬다면다시처음부터테스트를해야합니다. 예 2 DB 와관련된클래스입니다. 임시적으로테스트를위해 DB 접속을위한암호를넣고테스트후남겨뒀다고하면, 이정보는심각한보안상문제를일으킬수있습니다.
JUnit 의장점 메소드정확히구현되었는지를확인 원하는모듈만순서대로테스트가능 단위테스팅으로통합테스트시의회귀결함을감소 단위테스팅으로통해코드품질을보장 添加内容 添加内容
Junit 사용예 Eclipse 에서는 JUnit 을기본적으로사용.
Test building JUnit 3 와 4 를선택 Source code 경로 Test Fixture
Main class public class Calcuator { public double add(double n1, double n2) { 더하기연산자 return n1 + n2; // Integer Return Method } }
test1 import junit.framework.testcase; public class TestCalcuator extends TestCase { public void testadd(){ Calcuator calcuator=new Calcuator(); double result=calcuator.add(1,2); assertequals(3,result,0); // 기대값 (expected) 과실제값 (actual) 이같은지비교 assertequals 를이용한테스팅성공시초록색으로표시 } }
test2 import junit.framework.testcase; public class TestCalcuator2 extends TestCase { public void testadd(){ Calcuator calcuator=new Calcuator(); double result=calcuator.add(1,2); assertequals(5,result,0); // 기대값 (expected) 과실제값 (actual) 이같은지비교 } } assertequals 로테스팅실패시빨간색으로나타내고해당 Unit 표시.
All test import junit.framework.testsuite; import junit.framework.test; import junit.textui.testrunner; public class TestAll extends TestSuite { public static Test suite() { TestSuite suite = new TestSuite("TestSuite Test"); suite.addtestsuite(testcalcuator.class); suite.addtestsuite(testcalcuator2.class); return suite; } public static void main(string args[]){ TestRunner.run(suite()); } addtestsuite 테스트클래스추가 ( 클래스명.class ) 여러개의 Test 클래스들을모아실행할때쓰인다.
@Before Test method 가실행되기전에실행되는 method @Before Class Test 를시작하기전에한번만실행한다. @After Test method 가실행되고난후에실행되는 method @After Class Test 를마친후에한번만실행한다 @Test Test 를실행할 method 앞에붙임 expected 발생할것으로예상되는예외를지정. 예외가생기지않으면실패. timeout 테스트가끝나는시간을예측. 시간보다길게끝나면실패. @Ignore 테스트실행주석 테스트를하지않을 method 앞에붙임
Eclipse 자바로작성된자유소프트웨어 (EPL License) 다양한언어를지원하는통합 다운로드 http://www.eclipse.org/downloads/index.php 에서다운받은후설치
Eclipse 초기화면
Project 생성
Class 생성
Eclipse - 실행
JDepend 패키지의존성과설계품질의객체지향식측정을통해, 패키지를분석하고관리할수있도록지원해주는도구.
특징 패키지별로의존성측정가능 jdepend 패키지의존성과관련된데이터품질을수치화하여표현 수치화된의존성정보를텍스트형태로제공 LOGO 수치화된데이터품질을그래프로표현
설치방법 step1: Help -> Install New Software 44
설치방법 step2 : Add 클릭 Location : http://andrei.gmxhome.de/eclipse/
설치방법 step3: name 중의 ecilpse 3.6-4.3 plugins 체크 Next 버튼을클릭.
설치방법 step4: 이어서 next finish 버튼을클릭아래화면이나옵니다.
설치방법 step5: 원하는패키지에다가 Run Jdepend analysis 를클릭.
Packages Metrics Dependencies
Packages 패키지의존성정보를확인할수있음
Dependencies View 선택한패키지의의존성정보를수치화하여표현
Dependencies View 수치에대한정의 CC : Interface, Abstract Class 를제외한 Concrete class 의갯수. AC : 추상클래스나 Interface 의갯수. 확장성의척도. Ca : 현재패키지의클래스에의존하고있는패키지의수. 책임의척도가됨. Ce: 현재패키지의클래스들이의존하고있는패키지의수. 독립성의척도가됨. A : 추상화정도를나타내며, 0~1 사이의값을가짐. 0 은완전구체적인패키지,1 은추상적인패키지를나타낸다. I: 변화에대한안정성을나타내며, 0~1 사이의값을가짐. 0 은외부변화에도끄떡없는패키지이며, 0 은작은변화에도쉽게흔들릴수있는패키지를나타낸다. D: Main Sequence 로부터의거리를나타내며, 0 은 Main Sequence 와가깝고, 1 은먼상태. Cycle: 패키지들상호간에의존성을가지고있을때발생안좋은상황이기때문에경고아이콘으로보여짐
Metrics View Dependencies 에서수치화된정보를그래프로보여줌
Abstractness Very High Stability Interface Packages Instability 이상적인 Package 로추상화가잘이루어져있으며안정적인 Package 를의미한다.
Dependencies 에서수치화된정보를 Console 에서텍스트로확인가능
Depend 알게된것 현재패키지의의존성문제점을찾기쉽다. 개발중에도문제점을체크할수있다.
Clover Clover필요하는이유 테스트에의해프로그램이어떻게작동하는지확인 전체테스트부분중얼만큼완료됐는지판단 결과에따라테스트기능개량가능 검사항목, 기능추가여부결정
Clover 설치방법 step1 Eclipse 에서 help->install new software 선택주소 : http://update.atlassian.com/eclipse/clover
Clover 설치방법 step2 next
Clover 설치방법 step3 finish Click
Eclipse menu 에서 Window->Show View->Other Clover 폴더에있는모든 Clover Interface 를선택하고아래와같이생기면 OK..!
Coverage explorer UnitTest 를시작한다. 그럼아래와같이테스트코드가얼마나 Cover 됐는지 Percentage 로나타난다.
Coverage Test Coverage 의비율에대한정보 Test Results 테스트결과에대한정보 Most Complex Packages 가장복잡성을가진 Package 를보여준다 Most Complex Classes 가장복잡성을가진 Class 를보여준다 Top Project Risks 가장복잡하고적은 Test Coverage 를가진 Class 를보여준다 Least Tested Methods 가장낮은 Test Coverage 의 Methods 을보여준다 Coverage Dashboard
Java Editor 초록색 Test 를합격하거나 Main Method 처럼외부 Test 를하는라인노란색실패한 Test Coverage 빨간색 Coverage 가없는 Code 회색제외된코드
Package 별로출력을해준다. 각사각형의크기는 complexity 함을보여줌 클래스의 label 을출력하지않는다. Coverage Treemap Report
Coverage Treemap Report 복잡성과Coverage된 Project 또는 Package를쉽게볼수있다. Package(labeled) 로나누고그안에class(unlabeled) 로보여준다. Package 또는Class의크기는복잡성을나타낸다. 색깔로codecoverage의정도를나타낸다.
Thank you! The end