P. 1
[EMMA]Manual

[EMMA]Manual

|Views: 518|Likes:
Published by Taehyun Park

More info:

Published by: Taehyun Park on Feb 19, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/05/2012

pdf

text

original

EMMA

1 도구개요
2 도구설치방법
3 도구기능소개
4 도구활용예제
5 FAQ
6 도구평가
7 용어집
2
시험도구
E
M
M
A
목차
• 1. 도구 개요
• 2. 도구 설치 방법
− 2.1 JDK 다운받기
− 2.2 Eclipse 다운받기
− 2.3 Junit 설치하기
− 2.4 EMMA 설치하기
• 3. 도구 기능 소개
− 3.1 Code Coverage란
− 3.2 EMMA란
− 3.3 EclEMMA란
− 3.4 Launching
− 3.5 Analysis
− 3.6 Export
− 3.7 Import
• 4. 도구 활용
− 4.1 예제 설명
− 4.2 어플리케이션 구현
− 4.3 Coverage Test
• 5. FAQ
• 6. 도구 평가
• 7. 용어집
1. 도구개요
4
시험도구
E
M
M
A
1. 도구개요
소개 EclEMMA는 Eclipse기반으로 동작하는 Java code coverage 툴입니다.
주요기능 module 별, code 라인변 Coverage 가능
카테고리(용도) Coverage Test 세부카테고리
커버리지 도구난이도 중
License 형태/ 비용
Eclipse Public License Version 1.0
("EPL“)
사전설치도구 JDK, Eclipse, JUNIT
사용환경/ 개발상태
운영체제 Windows XP
Eclipse 환경 Eclipse 3.0 이상
특징
• 단위 테스트 툴을 이용한 빠른 Coverage 분석
• 라인별 Coverage 범위 표시
• coverage 결과를 html로 변환
적용회사/ 프로젝트 - 모든 JAVA 기반 개발 프로젝트
관련도구 Eclispe, JUNIT
제작사 Mountainminds GmbH & Co. KG
공식홈페이지 http://www.eclemma.org/
개발자
2. 도구 설치 방법
6
시험도구
E
M
M
A
2. 도구 설치 방법
• 2.1 JDK 다운받기
• 2.2 Eclipse 다운 및 실행하기
• 2.3 Junit 설치하기
• 2.4 EMMA 설치하기
세부 목차
7
시험도구
E
M
M
A
2. 도구 설치 방법
• 다음의사이트에서 JDK를다운 받습니다.
− http://www.oracle.com/technetwork/java/javase/downloads/index.html
− Download JDK를 클릭하여 다운받고 설치합니다.
2.1 JDK 다운받기
8
시험도구
E
M
M
A
2. 도구 설치 방법
• 다음의사이트에서 Eclipse를다운 받습니다.
− http://www.eclipse.org/downloads/
− Eclipse는 실행 될 OS에 따라 다른 버전을 제공합니다.
2.2 Eclipse 다운받기
9
시험도구
E
M
M
A
2. 도구 설치 방법
• Eclipse를실행한 첫 화면입니다.
2.2 Eclipse 다운받기
10
시험도구
E
M
M
A
2. 도구 설치 방법
• Junit plug-in은Eclipse에기본적으로포함되어 있습니다.
• Window>Preference를통해 해당 Eclipse에서작업하는 모든 프로젝트에Junit library를포함 시
킬 수 있습니다.
2.3 Junit 설치하기
11
시험도구
E
M
M
A
2. 도구 설치 방법
2.3 Junit 설치하기
1
2
1 : 메뉴 트리에서 “Installed
JREs“를 선택합니다.
2 : Add를 눌러 library 추가 팝업
을 띄웁니다.
12
시험도구
E
M
M
A
2. 도구 설치 방법
2.3 Junit 설치하기
1
1 : “Add External JARs…”를 선택하
여 Junit.jar를 추가시킵니다.
Junit.jar 파일은 Eclipse의 plugin 폴
더에 있습니다.
2 : 추가된 library 리스트에 Junit.jar
이 존재하는지 확인합니다.
3 : Finish를 선택하여 추가를 완료합
니다.
2
3
13
시험도구
E
M
M
A
2. 도구 설치 방법
2.3 Junit 설치하기
1
2
1 : 메뉴 트리에서 “Junit“을 선택
합니다.
2 : launch configuration을 통해
어플을 테스트 할 때 인자 값으로
‘-ea’가 추가되도록 선택해 줍니
다.
3 : OK를 클릭해 설정을 마칩니
다.
3
14
시험도구
E
M
M
A
2. 도구 설치 방법
• Eclipse의Install New Software를선택하여 설치를 시작합니다.
2.4 EMMA 설치하기
15
시험도구
E
M
M
A
2. 도구 설치 방법
• Update Site : http://update.eclemma.org/
2.4 EMMA 설치하기
1 : add 버튼을 눌러 사이트 입력 팝업
을 띄웁니다.
2 : name와 location에 해당 사이트를
지칭할 명칭과 주소를 적고 OK 버튼을
선택합니다.
1
2
16
시험도구
E
M
M
A
2. 도구 설치 방법
2.4 EMMA 설치하기
1
3
1 : 추가한 EMMA 사이트를 선택합니다.
2 : 해당 update site가 가진 plug-in 리스
트를 보여줍니다. 만약 해당 site가 여러
버전을 가지고 있다면 버전 리스트가 출
력됩니다.
3 : Next 버튼을 선택하여 다음 과정으로
넘어갑니다.
2
17
시험도구
E
M
M
A
2. 도구 설치 방법
• 사용자가선택한 설치할 요소를 확인한 후 Next를누릅니다.
2.4 EMMA 설치하기
18
시험도구
E
M
M
A
2. 도구 설치 방법
• 약관에동의하고 Finish를눌러 완료합니다.
2.4 EMMA 설치하기
19
시험도구
E
M
M
A
2. 도구 설치 방법
• EMMA 설치 요소를 download합니다.
• 설치가완료되면 Eclipse를다시 실행합니다.
2.4 EMMA 설치하기
20
시험도구
E
M
M
A
2. 도구 설치 방법
• 설치가완료되면 단축 아이콘에다음과 같은 아이콘이 생깁니다.
2.4 EMMA 설치하기
3. 도구 기능 소개
22
시험도구
E
M
M
A
3. 도구 기능 소개
• 3.1 Code Coverage란
• 3.2 EMMA란
• 3.3 EclEMMA란
• 3.4 Launching
• 3.5 Analysis
• 3.6 Export
• 3.7 Import
세부 목차
23
시험도구
E
M
M
A
3. 도구 기능 소개
• Code Coverage
− 단위 테스트나 통합 테스트와 같은 일련의 테스트 작업을 수행했을 때, 이 테스트가 전체 중 몇%를 테스트
했는지 판단해야 합니다.
− 예를 들어, 20가지의 기능을 가지고 있는 어플리케이션이 있을 때, 몇 가지 기능에 대해서 테스트를 했는가
와 같이, 수행한 테스트가 얼마나 커버했는지를 나타내는 것이 Test Coverage 입니다.
− 좀더 작은 범위의 테스트인 단위 테스트의 경우는 개개의 class나 논리적인 단위의 component 각각을 테스
트하기 때문에, 테스트에 대한 커버 범위를 각각의 class 또는 source code의 각 라인을 척도로 삼을 수 있
는데, 테스트 전체 source code 중 얼마나 커버했는지를 나타내는 것이 Code Coverage 입니다.
3.1 Code Coverage란
24
시험도구
E
M
M
A
3. 도구 기능 소개
• Code Coverage 툴의 원리
− Code Coverage 툴의 주요 기능은 실행 중에 대항 code 라인이 수행되었는지를 검증하는 것입니다.
이를 위해서 Coverage 툴은 class의 각 실행 라인에 Code Coverage 툴로 log-in하는 logic을 추가하는 것
이 기본 원리입니다.
− 기존의 class에 Coverage 분석을 위한 code를 추가하는 작업을 Instrument라고합니다.
3.1 Code Coverage란
public class HelloWorld(){
public void HelloKorea(){
System.out.println(“Hello Korea”);
}
public void HelloSeoul(){
System.out.println(“Hello Seoul”);
}
}
public class HelloWorld(){
public void HelloKorea(){
CoverageTools.log(“class 및 라인 관련 정보1”);
System.out.println(“Hello Korea”);
CoverageTools.log(“class 및 라인 관련 정보2”);
}
public void HelloSeoul(){
CoverageTools.log(“class 및 라인 관련 정보3”);
System.out.println(“Hello Seoul”);
CoverageTools.log(“class 및 라인 관련 정보4”);
}
}
Coverage
Tool
25
시험도구
E
M
M
A
3. 도구 기능 소개
• Instrument
− 정적 기법 : 어플리케이션이 수행되기 이전에 source code나 compile이 완료되어 있는 class 파일을
Instrument하여Instrumented class들을 만든 후 그것을 수행하는 방식입니다.
− 동적 기법 : 원본 Class를 가지고 어플리케이션을 수행하여 runtime시에 class가 loading되는 순간에 class
에 Instrumentation을하는 방식입니다.
− 동적 기법은 runtime에서 Code Instrumentation을하는 부하가 발생하기 때문에, Instrumentation양이
압도적으로 많은 Code Coverage 툴의 경우에는 정적 Instrumentation방식이좀 더 유리합니다.
− EMMA는 동적, 정적 Instrumentation을모두 지원합니다.
− 유사한 Coverage Tool인 Cobertura는정적 Instrumentation만지원합니다.
3.1 Code Coverage란
26
시험도구
E
M
M
A
3. 도구 기능 소개
• EMMA는Java의coverage를측정하기 위한 툴입니다. 이 툴은 사용되지않는 dead code를감지하
고 실제로 테스트 및 interactive 사용으로 거치게 되는 source code를확인하는데필수적입니다.
• EMMA의디자인 목표
− 성능이 훌륭한 Coverage 분석 데이터를 제공하지만, 이를 위한 build 시간이나 실행 시간의 over head를
발생 시키지 않도록 합니다.
− 동시에 여러 독립적인 module 별 개발을 진행하는 팀 단위 개발 환경에 적합합니다.
− 빠른 개발 속도로 소규모 Java 어플리케이션을 테스트 가능 할 뿐 아니라 대규모 Enterprise SW를 테스트
하는 것 또한 가능합니다.
• EMMA는JVM Profiler Interface(JVMPI) 방식을 기본으로 합니다. 작은 규모의 어플리케이션테스트
에서는좋은 성능을발휘하지만규모가 큰 SW를runtime으로JVMPI를활성화 시키게 되면 심각한
over head가발생하여 매우 느린 실행 속도를 유발 할 수 있습니다.
• 규모가큰 SW의 Coverage 분석은 source code instrument에기초하는 방식을 일반적으로
사용합니다. 이를 위해서는 Full source code를다시 build 해야 하는데, 규모가 클수록 build 시간
은 늘어나고, 팀의 모든 개발자들이각자 자신의 module의Coverage를확인해야 합니다.
• EMMA는module별단위테스트단위의 Coverage 분석을 기본으로 하기 때문에 module 별 사용자
가 일일이확인할 필요가 없도록 module Coverage를UI적으로제공합니다.
3.2 EMMA란
27
시험도구
E
M
M
A
3. 도구 기능 소개
• EclEMMA는Eclipse기반으로동작하는 Java code coverage 툴입니다.
• EMMA의기본 구조에 기반을 두며 EMMA가추구하고자하는 3가지 목표를 지향합니다.
− 빠른 개발/테스트 과정 : Junit 같은 단위 테스트 툴을 이용한 결과를 사용하기 때문에 빠르게 code
Coverage 분석이 가능합니다.
− 효과적인 Coverage 분석 : Coverage 결과를 기반으로 하여 Editor의 code에 라인 별로 컬러를 다르게
표시해줍니다. 사용자는 이러한 컬러를 통해 해당 code가 Coverage에 포함되는지 확인 할 수 있습니다.
− Non-invasive : EclEMMA는 code의 수정이나 추가적인 과정없이 Coverage 분석이 가능합니다.
3.3 EclEMMA란
28
시험도구
E
M
M
A
3. 도구 기능 소개
• Eclipse의Run/Debug처럼실행 가능한 “Coverage launch mode”기능을가지고 있습니다.
• 이러한“Launch”는상단의 단축 아이콘과 package explore view에서실행 가능합니다.
• Coverage 정보를 수집하기위해 사용자의어플리케이션이나Unit 테스트를간단하게 실행시킵니다
. EclEMMA가지원하는실행 타입은 다음과같습니다.
− Local Java application
− Eclipse/RCP application
− Equinox OSGi framework
− JUnit test
− TestNG test
− JUnit plug-in test
− JUnit RAP test
− SWTBot test
3.4 Launching
29
시험도구
E
M
M
A
3. 도구 기능 소개
• Coverage Configuration
− Eclipse의 Launch Configuration과유사한 실행 환경 설정 기능을 제공합니다.
3.4 Launching
1
1 : Java Application이나 Junit (테스트
class가 준비되었다면)에 엔트리를 추가
합니다.
2 : Browse를 선택하여 project explore
가 가지고 있는 프로젝트 리스트 중 실행
할 프로젝트를 선택합니다.
3 : OK 버튼을 눌러 선택을 완료합니다.
2
3
30
시험도구
E
M
M
A
3. 도구 기능 소개
• Launch configuration
3.4 Launching
1
1 : Browse를 선택하여 프로젝트가 가진
시작 가능한 class를 선택합니다.
2 : OK 버튼을 눌러 선택을 완료합니다.
2
31
시험도구
E
M
M
A
3. 도구 기능 소개
• Launch configuration
− Coverage Tab에서 Coverage 측정의 대상을 source 폴더 단위로 선택 할 수 있습니다.
이때 source 폴더 단위는 Binary class가 모여있는 하나의 폴더를 의미하는 것입니다.
− Eclipse는 package의 구성에 따라 Binary가 위치하는 폴더를 지정하는 것이 기본입니다.
3.4 Launching
1 : Configuration의 두번째 텝 인
Coverage를 선택합니다.
2 : 해당 리스트에서 coverage 테스트를
원하는 directory를 선택합니다.
3 : Coverage 버튼을 선택하여 사용자가
설정한 환경으로 해당 프로젝트에 대한
Coverage 테스트를 진행합니다.
1
2
3
32
시험도구
E
M
M
A
3. 도구 기능 소개
• 사용자가어플리케이션이나Unit 테스트를 대상으로Coverage 실행을 마치고 나면 EclEMMA는
자동으로결과를 보여주는 view를실행합니다.
• 실행하면Coverage view가자동으로실행되며 Coverage 결과를 출력해줍니다.
• Coverage Overview
− 실행된 어플리케이션은 총 1120의 instrument를 가지고 있고 그 중 테스트가 된 것은 481개, 테스트 되지
않은 부분은 639개라는 것을 보여줍니다.
− EclEMMA는전체 프로젝트의 Coverage 결과를 보여줄 뿐 아니라 각 파일의 Coverage결과도 제공합니다.
3.5 Analysis
33
시험도구
E
M
M
A
3. 도구 기능 소개
• Source highlighting
− 각 파일의 Coverage 결과를 자세히 보기 위해서 해당 source 파일을 선택하면 다음 그림과 같이 3가지 색으
로 code가 구분되어 있는 것을 확인 할 수 있습니다.
− 빨간색 : 전혀 테스트 안됨
− 노랑색 : 일부만 테스트 됨
− 초록색 : 테스트 완료됨
3.5 Analysis
34
시험도구
E
M
M
A
3. 도구 기능 소개
• EclEMMA는Coverage 테스트 결과를 외부에서 사용 할 수 있도록 Export를제공합니다.
3.6 Export
35
시험도구
E
M
M
A
3. 도구 기능 소개
• EclEMMA는Coverage 결과를 html 형식으로 Export 할 수 있습니다.
3.6 Export
36
시험도구
E
M
M
A
3. 도구 기능 소개
• html형식으로Export된Coverage 결과는 프로젝트 전체에 대한 html문서와각 파일에 대한 다수
html 문서로 구성됩니다.
• 파일에대한 결과 문서는 EclEMMA에서볼 수 있었던 code별테스트 결과(라인별컬러)도포함됩니
다.
3.6 Export
37
시험도구
E
M
M
A
3. 도구 기능 소개
• EclEMMA는Coverage 결과를 ‘EMMA Session File”로Export 할 수 있습니다.
− Session file로 Export한 결과에 대해서는 EclEMMA는 import를 진행 할 수 있습니다. (html, xml 불가능)
3.6 Export
38
시험도구
E
M
M
A
3. 도구 기능 소개
• EclEMMA는외부에서취합된 Coverage 테스트 결과를 볼 수 있도록 Import 기능을 제공합니다.
− EMMA Session file로 Export된 Coverage 결과에 대해서만 Import가가능 합니다.
3.7 Import
39
시험도구
E
M
M
A
3. 도구 기능 소개
3.7 Import
1
1 : Browse 버튼을 선택하여 Import 할
EMMA Session File을 선택합니다.
2 : 선택한 es 파일이 가지고 있는
coverage 결과 리스트를 볼 수 있습니다.
사용자는 이 리스트에서 원하는 부분의
Coverage 결과를 선택하는 것이 가능합
니다.
2
4. 도구 활용 예제
41
시험도구
E
M
M
A
4. 도구 활용
• 4.1 예제 설명
• 4.2 어플리케이션구현
• 4.3 Coverage Test
세부 목차
42
시험도구
E
M
M
A
4. 도구 활용
• 1~50까지의합을 구합니다.
• 1~50까지의소수의 합을 구합니다.
• 3*3 형식의 구구단을 출력합니다.
• 해당어플리케이션을EclEMMA로Coverage 테스트하여결과를살펴봅니다.
4.1 예제 설명
43
시험도구
E
M
M
A
4. 도구 활용
• 새로운Java Project를생성합니다.
− EX) project name : Cal
4.2 어플리케이션 구현
44
시험도구
E
M
M
A
4. 도구 활용
• 3가지기능을 담당할 Cal class를생성합니다.
4.2 어플리케이션 구현
public class Cal {
public int plus(int in_data){
int re_value=0;
for(int i=1 ; i <= in_data ; i++) {
re_value = re_value + i;
}
return re_value;
}
public int sosuPlus(int in_data) {
int re_value=0;
int flag =0;
int i, j;
for(i=2 ; i < in_data ; i++) {
for(j=2 ; j < 10 ; j++) {
if((i != j)&&(i%j == 0)) flag++;
}
if(flag == 0) re_value = re_value + i;
flag = 0;
}
return re_value;
}
public void gugudanPrint() {
int i, j, k;
for(i=1 ; i <= 9 ; i=i+3) {
for(j=1 ; j <= 9 ; j++) {
for(k=0 ; k < 3 ; k++) {
System.out.print(i+k+"*"+j+"="+((i+k)*j)+" ");
}
System.out.println("");
}
System.out.println("");
}
}
}
0
45
시험도구
E
M
M
A
4. 도구 활용
• 생성한Cal class를실행해줄 main을포함한 class를생성합니다.
4.2 어플리케이션 구현
class Work1
{
public static void main(String args[])
{
Cal cal = new Cal();
System.out.println("1 ~ 50까지의 합 : " + cal.plus(50));
System.out.println("1 ~ 50까지의 소수의 합 : " + cal.sosuPlus(50));
cal.gugudanPrint(); //구구단 3*3으로 출력
}
}
46
시험도구
E
M
M
A
4. 도구 활용
• Coverage 테스트를 실행합니다.
4.3 Coverage Test
47
시험도구
E
M
M
A
4. 도구 활용
• 어플리케이션실행 결과와 Coverage 테스트 결과
4.3 Coverage Test
5. FAQ
49
시험도구
E
M
M
A
5. FAQ
답1) EclEMMA는EMMA 프로젝트를Eclipse에서사용할수 있도록plug-in으로만든프로젝트입니다.
만약사용자가Eclipse를사용하지않고EMMA를사용하고싶다면, 따로 EMMA 프로젝트를설치하여
해당JAVAcode를테스트하면됩니다.
질문1) EMMA와EclEMMA는다른것입니까?
질문2) EclEMMA를확장하여새로운프로젝트를개발할 수 있습니까?
답2) 네, 가능합니다. 개발자가EclEMMA의기능을이용하여추가적인plug-in을개발하면가능합니다.
6. 도구 평가
51
시험도구
E
M
M
A
6. 도구 평가
• EclEMMA는module별로Coverage 결과를보여주기때문에개발자는어떤module의Coverage가높고낮음을
확인할 수 있습니다.
•EclEMMA는단위테스트한 결과를대상으로Coverage를진행합니다. 해당단위테스트가전체code 중 어느정도
를커버하는지를확인시켜줌으로써단위테스트에대한신뢰도를알 수 있습니다.
7. 용어집
53
시험도구
E
M
M
A
7. 용어집
• 본 매뉴얼에서사용하고 있는 용어가 정리되어있습니다.
용어 설명
JUNIT
개발된 JAVA code를 단위 테스트 하기 위한 Framework입니다. 이와 비슷한 프로
젝트로 C/C++를 단위 테스트 하기 위한 CUNIT이 있습니다.
RCP App
Rich Client Platform의 약어로 Eclipse Platform을 이용하여 새로운 어플리케이션
을 개발 할 수 있는 프로젝트 종류입니다.

시험도구

목차
• 1. 도구 개요 • 2. 도구 설치 방법
− − − − 2.1 2.2 2.3 2.4 JDK 다운받기 Eclipse 다운받기 Junit 설치하기 EMMA 설치하기

EMMA

• 5. FAQ • 6. 도구 평가 • 7. 용어집

• 3. 도구 기능 소개
− − − − − − − 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Code Coverage란 EMMA란 EclEMMA란 Launching Analysis Export Import

• 4. 도구 활용
− 4.1 예제 설명 − 4.2 어플리케이션 구현 − 4.3 Coverage Test
2

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->