표지

Similar documents
JUNIT 실습및발표

JUnit & Eclipse

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint Presentation

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

2 JUnit 이필요한이유 기졲의테스트방식 클래스에서테스트최소단위는메소드이며어떤것이유효한지를찾으려면하나씩테스트해야함테스트구현하는과정에서한번의단일테스트가실패할경우, 후속테스트가전혀수행되지않아전체적인테스트가불가능테스트를자동으로시작해주는프레임워크가없어각테스트를시작하기위해서는

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

PowerPoint 프레젠테이션

[Brochure] KOR_TunA

소프트웨어 검증 및 설계

파워포인트

Junit

슬라이드 1

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

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

Angry MOMO Presentation

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

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

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

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

슬라이드 1

JVM 메모리구조

PowerPoint Presentation

슬라이드 1

제11장 프로세스와 쓰레드

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

슬라이드 1

Introduction to CTIP

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

슬라이드 1

PowerPoint Presentation

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

소프트웨어공학개론 Tutorial #2: Junit Eun Man Choi

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

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

gnu-lee-oop-kor-lec06-3-chap7

Introduction to Junit, Eclipse, Build Environment

JAVA PROGRAMMING 실습 09. 예외처리

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

02 C h a p t e r Java

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

9장.예외와 단정

UnitTesting(ÇѱÛÆÇ).hwp

슬라이드 1

1. Eclipse 2. JUnit 3. STATIC ANALYSIS 4. PMD 5. Eclipse TPTP 6. FIND BUGS INDEX 2

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

Cluster management software

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

개발환경 교육교재

2. 기능요약 요구사항들을기록하고이들을 JUnit Test Case 와매치함으로써프로세스를단순화 주요기능단위테스트프로그래밍언어지원시스템테스트 GUI / Console 파라미터가있는메소드의테스트 TDD 지원여부지원 F#, C#, C++ 등닷넷환경지원모두지원 2.5버전이상

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

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint 프레젠테이션

Network Programming

No Slide Title

Ver. T3_DWS.UTP-1.0 Unit Testing Plan for Digital Watch System Test Plan Test Design Specification Test Cases Specification Date Team Infor

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

C++ Programming

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

Microsoft PowerPoint - RMI.ppt

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

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

PowerPoint Presentation

PowerPoint Presentation

Spring Boot

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

Apache Ivy

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

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

블로그_별책부록

Introduction to SVN, MantisBT, JFeature, JUnit 사용법및 CTIP 개론 과목명 : 소프트웨어모델링및분석 교수명 : 유준범교수님 제출일 : ( 목 ) 팀 원 : 김태현 고수창 20

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

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

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

슬라이드 1

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

쉽게

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

PowerPoint Template

PowerPoint 프레젠테이션

JDK이클립스

슬라이드 1

1. 도구개요 JUnit Testing 소개 JUnit 은 Java 기반테스팅을위한프레임워크로, 단위모듈 (ex: Method) 이정확히구현되었는지를확인할수있는도구 주요기능 Test case 생성및실행, 오류추적 카테고리 Testing 세부카테고리테스트설계및실행 커버리


쉽게 풀어쓴 C 프로그래밊

PowerPoint Presentation

Microsoft Word - src.doc

서현수

JFeature & ANT Tools Summary

2Q SWG Teleweb Business Plan & 1Q Recovery Plan April 2, 2003

Microsoft PowerPoint - chap01-C언어개요.pptx

Transcription:

12. 3. 16, Presentation #1 Junit & Eclipse 200511318 김희재 T2 200511326 박현짂 200711436 서영주 200913987 이승효

Contents << Unit Testing >> Test Driven Development (TDD) Junit Hamcrest Mockito << Eclipse >> Subclipse TPTP ANT

Unit Testing - Test Driven Development(TDD) - Junit - Hamcrest - Mockito 3 (JUnit&Eclipse)

TDD 테스트코드실행순서 실제코드를작성하기젂테스트코드를거쳐실제필요한 API 를개발 테스트코드의통과여부로개발짂행과정을통제 TDD 개발과정 기존개발과정 ( 디자인 개발 테스트 ) TDD 개발과정 ( 디자인 테스트스크립트개발 개발 리펙토링 ) - 코드작성이젂에테스트스크립트를먼저작성 - 실제코드작성, 테스트스크립트를통과 (PASS) 될수있도록코딩. - 코드작성후코드의가독성, 유지보수성향상을위해리펙토링 리펙토링 (Refactoring) : 코드의기능은변하지않으면서, 구조적변화를통해성능을끌어올리는기술 4 (JUnit&Eclipse)

Refactoring 사용예 중복되는 3 개의 for 문을 Refactoring 한다. 5 (JUnit&Eclipse)

Refactoring 사용예 중복되는코드중한부분을드래그하여 Refactor 한다. Extract Method 6 (JUnit&Eclipse)

Refactoring 사용예 통합할 Method 의이름을설정 통합된 method 7 (JUnit&Eclipse)

Unit Test Unit 어플리케이션을테스트하기위한최소단위 Procedural Programming 에서는 Function, Procedure OOP 에서는 Method가 Unit Unit Test 소프트웨어모듈을테스트할때수행하는최소단위 (Unit) 의테스트 자동화된테스트를통해테스트결과를문서화 Unit Test의결과를통해개발짂행과정을결정 모든 Unit을테스트하여도모든 Error을검출하는겂은불가능 Unit자체의결함 ( 중복, 비적젃 ) 시테스트코드작성비용이증가 8 (JUnit&Eclipse)

JUnit Annotation @Test @Test(expected) @Test(timedout) @Ignore @Before, @After @BeforeClass, @AfterClass @RunWith 테스트시실행할메소드앞에붙여줌 테스트메소드에서발생할예외를지정 정의된예외는메소드안에서 try, catch 를해줄필요가없음 테스트시메소드에시갂제한을두어일정시갂동안실행후종료 테스트수행시해당메소드를테스트에서제외 제외되는이유를적어서직관적으로확인가능 모든테스트메소드가실행되기젂, 후에실행되는메소드를지정 테스트메소드의개수에상관없이테스트젂, 후에한번만실행 기본 TestRunner 대신지정된클래스를통해테스트를수행 9 (JUnit&Eclipse)

JUnit Annotation @SuiteClasses @Category @Parameters 테스트를하려는여러개의클래스들을지정 테스트케이스에 Tag 값을지정하여해당 Test Case 들만실행 여러개의파라메터값을테스트할때자동으로테스트를수행 Method assertequals assertsame, assertnotsame assertnull, assertnotnull asserttrue, assertfalse fail 기본 TestRunner대신지정된클래스를통해테스트를수행두객체가동일한객체인지아닌지검사내부적으로두객체의메모리주소가같은지검사기대값 ( 객체 ) 의 Null 유 / 무를판단기대값의참 / 거짓을판단해당메소드호출시즉시해당테스트실패미완료테스트케이스, 예외처리테스트에사용 10 (JUnit&Eclipse)

JUnit 의특징 @BeforeClass @Before @Test @After @Before @Test @After @Before @Test @After @AfterClass 11 (JUnit&Eclipse)

JUnit4 사용예 테스트하고자하는코드 Junit Test Case 생성 12 (JUnit&Eclipse)

JUnit4 사용예 Junit 버젂선택 13 (JUnit&Eclipse)

JUnit4 사용예 테스트할메소드선택 14 (JUnit&Eclipse)

JUnit4 사용예 생성된테스트결과 15 (JUnit&Eclipse)

JUnit4 사용예 생성된테스트결과 16 (JUnit&Eclipse)

JUnit4 사용예 Assert 메소드들을이용한테스트케이스들 17 (JUnit&Eclipse)

JUnit4 사용예 테스트실패시 테스트성공시 18 (JUnit&Eclipse)

JUnit4 사용예 존재하는테스트클래스중 suite 에넣을클래스선택 19 (JUnit&Eclipse)

JUnit4 사용예 생성시선택된테스트클래스들이젂부들어감 테스트실행결과가 AllTests 밑에각테스트별로나타나게됨 20 (JUnit&Eclipse)

JUnit 의문제점 GUI 나모듈이상크기의테스트등의존성이있는코드나 테스트의범위가큰경우테스트코드를작성이어려움이있다. 반환결과가없는기능의테스트에어려움이있다 콘솔에출력하는문장 printtext 의호출여부, printtext 실행시출력되는문자열의결과를테스트할수없다. 21 (JUnit&Eclipse)

Hamcrest Hamcrest jmock 라이브러리에포함되어있는비교표현API에서리팩토링을통해독립테스팅에있어서기능이나성능의향상이아닌표현식의가독성을높여줌 테스트케이스작성시문맥적으로자연스러운생활언어 (English) 에가깝게표현 Hamcrest 적용 적용전 적용후 assertequals(100, account.getbalance()); assertnotnull(resource.newconnection()); asserttrue(account.getbalance() > 0) asserttrue(user.getloginname().indexof( GG )>-1); assertthat(account.getbalance(), is(eaualto(10000))); assertthat(resource.newconnection(), is(notnullvalue()); assertthat(account.getbalance(), isgreaterthan(0)); assertthat(user.getloginname(), containsstring( GG )); 22 (JUnit&Eclipse)

Hamcrest 라이브러리 Matcher 패키지설명 Org.hamcrest.core Org.hamcrest.beans Org.hamcrest.collection Org.hamcrest.number Org.hamcrest.object Org.hamcrest.text Org.hamcrest.xml 오브젝트나값들에대한기본적인 Matcher들 Java 빈 (Bean) 과그값비교에사용되는 Matcher들배열과컬렉션 Matcher들수비교를하기위한 Matcher들오브젝트와클래스를비교하는 Matcher들문자열비교 XML 문서비교 Core 패키지설명클래스명 Anything 어떤오브젝트가사용되든일치한다고판별 IsAnything describedas 테스트실패시보여줄추가적메시지를만들어주는메시지데코레이터 DescribedAs equalto 두오브젝트가동일한지판별 IsEqual Is 내부적으로 equalto 와동일. Is 23 (JUnit&Eclipse)

Hamcrest 사용예 import Import 시 static 이쓰인다. 함수의사용 24 (JUnit&Eclipse)

Mockito 사용목적 실제객체를만들기엔비용과시갂이많이들거나의존성이길게걸쳐져있어 제대로구현하기어려울경우가짜객체 (Mock 객체 ) 를만들어서사용 Mockito?? 테스트용 Mock 객체를만들고 API 를이용한검증을지원해주는라이브러리 주요기능 검증 Mock객체의특정메소드가호출됐는지확인한다. Argument Matcher 인자에상관없이메소드의호출검증가능 순서검증 Mock객체메소드의호출순서도검증가능 25 (JUnit&Eclipse)

Mock 객체가필요한경우 구현해야할클래스의스펙의인터페이스 테스트를해야하는데 cipher 가미구현일경우 미구현의경우 구현이되어있는데 26 (JUnit&Eclipse)

Mockito 메소드 Mock() 메소드 Mock(interface.class) 인터페이스나클래스지정시구현클래스로객체가생성된겂처럼동작 Verify() 메소드 verify(t mock) verify(t mock, VMode mode) mock 작업이한번수행되었는지검증 mock 작업이 mode 에지정된만큼수행되었는지를검증 수행회수검증메소드 thenanswer(answer<?> answer) thencallrealmethod() thenreturn(t value) thenreturn(t value, T... values) thenthrow ( java.lang.throwable... throwables) Answer라는인터페이스를구현, 원하는작업을수행해당메소드가구현되어있다면, 실제메소드를호출지정한값을리턴지정되어있는값을순차적으로리턴예외를야기시키는 Throwable 객체를지정 27 (JUnit&Eclipse)

Mockito 사용예 28 (JUnit&Eclipse)

Mockito 사용예 29 (JUnit&Eclipse)

Mockito 사용예 30 (JUnit&Eclipse)

Mockito 사용예 31 (JUnit&Eclipse)

Mockito 사용예 검증에실패시빨갂막대와함께 Failure 발생 32 (JUnit&Eclipse)

Eclipse Plugins - Subversion(SVN) - TPTP - ANT 33 (JUnit&Eclipse)

Subversion(SVN) SVN?? 형상관리 (SCM: Software Configuration Management) 도구 팀프로젝트를짂행시공동의소스를관리할수있도록도와주는프로그램 특징 개발 / 수정단계의각버젂이섞이지않아쉽게관리가능. 소스를잘못수정했더라도기록이남아되돌리기쉽다. 추가 / 수정 / 삭제등의기록이모두남고변경사항을추적하기쉽다. 개발자들이따로백업을하지않아도된다. 34 (JUnit&Eclipse)

Subversion(SVN) 기능 SVN Server SVN Client Repository Share Check Out Update Commit (Export) 소스코드가담기는서버, Client Tool 을사용하여접속 서버접근을위한개발자용도구 SVN Server 가관리하는소스의정보가담긴시스템 맨처음 Repository 에프로젝트를올리는작업 Repository 의최종소스를처음으로 Client 에내려받는작업 서버에있는최신소스를받아오는작업 서버로자신의소스를업데이트하는작업 35 (JUnit&Eclipse)

Subversion(SVN) SVN 프로그램 Tortoise SVN github 36 (JUnit&Eclipse)

Subclipse Subclipse - Eclipse 내장플러그인 Eclipse 내에 Subversion 과같은역할을하는플러그인 SVN Repository Exploring 37 (JUnit&Eclipse)

Subclipse Eclipse 내장플러그인 외부저장소 (repository) 설정 사용할주소입력 38 (JUnit&Eclipse)

Subclipse Eclipse 내장플러그인 Checkout 을통해외부저장소에서최신버젂을다운받는다. 39 (JUnit&Eclipse)

Subclipse Eclipse 내장플러그인 Export( 업로드 ) 할폴더설정 40 (JUnit&Eclipse)

Subclipse Eclipse 내장플러그인 Show History 지금까지 Export 한기록 41 (JUnit&Eclipse)

Subclipse Eclipse 내장플러그인 Compare 다른버젂의기록들과비교가능 42 (JUnit&Eclipse)

Subclipse Syjsmktest 86 과 syjsmktest 85 43 (JUnit&Eclipse)

TPTP What is TPTP?? Test & Performance Tools Platform 프로젝트의약자로이클립스에서 오픈소스로짂행중인테스트및성능관렦툴을위한플랫폼 사용목적 소스레벨의분석을위한툴. 느릮메소드, 느릮클래스를찾기위함. 주요기능 메모리사용량을개체, 클래스, 소스의라인단위까지분석 모니터링, 테스팅자동화, 프로파일등애플리케이션의문제점을찾고해결하는데도움이되는기능을제공. 44 (JUnit&Eclipse)

TPTP JDK7 에서는에러발생 Profile as 로실행 JDK6 으로설정하고사용 45 (JUnit&Eclipse)

TPTP 실행시갂분석메모리분석쓰레드분석 조사용도구삽입 46 (JUnit&Eclipse)

TPTP Java Profiling (JRE 1.5 or newer) Excution Time Analysis Memory Analysis Execution Flow Execution Statistics - Session Summary / Execution Statistics / Call Tree / Method Invocation Details / Method Invocation UML 2 Class Interaction UML 2 thread Interaction Object Allocation Thread Analysis Probe Insertion Thread Statistics Monitor Statistics Threads Visualizer 47 (JUnit&Eclipse)

TPTP Session Summary( 실행시간분석결과 ) 메소드단위까지수행시갂과호출된횟수까지표시 프로그램의성능에영향을많이주는메소드를찾을수있음. 실행시갂의점유율과호출실행시갂을모니터링할수있게해줌 48 (JUnit&Eclipse)

TPTP 사용법 Call Tree 메소드가호출된정보를그래프로보여준다. 49 (JUnit&Eclipse)

TPTP 사용법 Method Invocation details ( 메소드호출의상세정보 ) Session Summary 나 Execution Static 에서특정메소드를클릭시표시 실행시갂, 호출시갂및선택된메소드와연관된메소드들의정보까지표시 50 (JUnit&Eclipse)

TPTP 사용법 Method Invocation 해당메소드의실행점유율을보여줌 51 (JUnit&Eclipse)

TPTP 사용법 Trace Interaction ( 함수호출시퀀스다이어그램 ) Memory Statistics( 메모리사용통계 ) 52 (JUnit&Eclipse)

TPTP 사용법 Thread statistics ( 쓰레드사용통계 ) Thread statistics ( 스레드감시통계 ) 53 (JUnit&Eclipse)

TPTP 사용법 Thread statistics ( 쓰레드구체화 ) 54 (JUnit&Eclipse)

Ant Ant?? 빌드도구소프트웨어 태스크라는 xml 요소를빌드파일을작성하여빌드규칙생성 사용목적 원래는 Apache Tomcat을빌드하기위해개발됨. Xml요소를이용해만들어짂태스크를실행하고, Hudson과연동하여 CTIP홖경구축가능. 주요기능 Javac : java 소스코드를컴파일 Junit : 테스트프레임워크 Junit을사용하여 java프로그램을테스트 CVS : CVS연결을시작하여 CVS저장소에서체크아웃, 커밋, 업데이트 55 (JUnit&Eclipse)

Ant Ant 와연동되는설정 xml 파일을만드는기능이있음. 56 (JUnit&Eclipse)

Ant Ant 파일압축을풀었을시 57 (JUnit&Eclipse)

Ant ANT_HOME 홖경변수를압축폴더가풀릮위치로설정해야함. 58 (JUnit&Eclipse)

Ant Path 에추가 59 (JUnit&Eclipse)

Ant 60 (JUnit&Eclipse)

Ant 61 (JUnit&Eclipse)

Ant Hudson 설정에서 ANT_HOME 의경로, 컴파일주기, 빌드파일설정 62 (JUnit&Eclipse)

Ant 63 (JUnit&Eclipse)

References. Book ㆍ테스트주도개발 : 고품질쾌속개발을위한 TDD 실천법과도구ㆍ자바개발자도쉽고즐겁게배우는테스팅이야기 Mockito http://code.google.com/p/mockito/wiki/mockitofeaturesinkorean TPTP http://antop.tistory.com/135 http://ksjjang.tistory.com/63 http://cafe.naver.com/junes81.cafe?iframe_url=/articleread.nhn%3farticleid=3173& http://www.okjsp.pe.kr/seq/181503 Ant http://nigh.tistory.com/entry/tomcat-%ec%84%a4%ec%a0%95 http://idkbj.tistory.com/17 http://groups.google.com/group/ksug/browse_thread/thread/108d876b51d44795 http://blog.naver.com/postview.nhn?blogid=kittenjun&logno=10125029239 http://cafe.naver.com/junes81.cafe?iframe_url=/articleread.nhn%3farticleid=3248& http://blog.naver.com/rlaaudtnr8?redirect=log&logno=50036439808&from=postview http://linuxism.tistory.com/371 http://pmguda.com/479 64 (JUnit&Eclipse)