1. 도구개요 소개 자동화된테스팅을위한프레임워크인 Fit (Framework for Integrated Tests) 을기반으로하여테스트를수행하고, Fit 의테이블구조를통한웹상에서테스트결과를관리하고보고 주요기능 컴파일된파일 (.Class) 을바탕으로테스트수행 테스트관리및보고 카테고리 세부카테고리 테스트관리도구 커버리지 도구난이도 중 라이선스형태 / 비용 CPL / 무료 사전설치도구 JDK 운영체제 Windows, Linux, Mac OS X, UNIX 도구버전 20111026 (2012. 10) 특징 자동화된테스팅을위한강력한프레임워크 테이블기반웹리포팅 테스트실행및결과관리 ( 롤백, 백업등 ) 및보고 - Regression Test - Acceptance - Function 적용회사 / 프로젝트 - 관련도구 Fit, SLIM 제작사 Robert C. Martin, Micah D. Martin, Patrick Wilson-Welsh( 제작자 ) 공식홈페이지 http://.source forge.net 1
2. 기능요약 자동화된테스팅을위한프레임워크인 Fit (Framework for Integrated Tests) 을기반으로하여테스트를수행하고, Fit 의테이블구조를통한웹상에서테스트결과를관리하고보고 주요기능 지원내용 Wiki Page 지원 ( 기본페이지 ) Regression Test 지원 (Test suite 지원 ) Eclipse Plug-in 외부 Client 접근 / 테스트 테스트결과웹보고 일부지원 ( 구버전지원 ) 지원 ( 웹에서테스트수행가능 ) 지원 1
3. 도구실행환경 JAVA 환경에서설치및구현이가능 다양한 OS 를지원 Windows : Windows XP / Windows 7 (32, 64-bit 모두지원 ) Linux : 32, 64-bit 지원 Mac OS X : 32, 64-bit 지원 UNIX : 32, 64-bit 지원 JDK 필요 JDK java -jar 명령으로실행가능, 실행시웹서버환경은자체적으로구성 WAS (Tomcat) JDK (Java development kit) Windows / UNIX / Linux / Mac OS 1
4. 도구설치방법 세부목차 4.1 다운받기 4.2 실행하기 4.3 실행결과 1
4. 도구설치방법 4.1 다운받기 (1/2) http://www.fitnesse.org/ 에서 다운 Download FitNesse and Plugins 링크를클릭하여다운로드페이지로이동 2
4. 도구설치방법 4.1 다운받기 (2/2) fitnesse.jar 를클릭하여원하는위치에다운로드 저장위치및사용방법에따라설치방법이달라짐 3
4. 도구설치방법 4.2 실행하기 (1/2) FitNesse Classpath 설정 시스템 (Ctrl+Break) 시스템속성 고급탭홖경변수 CLASSPATH 항목 설치위치지정 4
4. 도구설치방법 4.2 실행하기 (2/2) FitNess 서버실행 Java jar fitnesse.jar -p 8080 명령어입력 가동상태확인 5
4. 도구설치방법 4.3 실행결과 웹사이트접속 : http://localhost:8080/ FitNesse 초기접속화면확인가능 6
5. 도구기능소개 세부목차 5.1 Fit과 5.2 Fit Table의이점 5.3 FitNesse 메인페이지 5.4 FitNesse 기능소개 5.5 의상세기능 1
5. 도구기능소개 5.1 Fit 과 Fit(Framework for integrated) 이란? 자동화테스팅프레임워크 테스트들을보여주고테스트들의자동체킹결과를보고하기위한테이블들의사용 비즈니스관점에서테스팅으로조화 테이블로보여주는것은프로그래밍에대한배경지식없이테스트를사용할수있도록함» 이로인해전반적으로필요한시스템개발을이끌어주는효과를가짐 범용으로사용하기위한개방적인프레임워크로, 여러가지방법으로보여주기위한확장제공 FitNesse 자동화테스팅프레임워크 Fit을손쉽게사용할수있도록구현한것 FitNesse의장점 개발커뮤니케이션향상에용이 ( 개발팀에게손쉽게재현요청처리가능 ) 테스트케이스추가작업이용이 Suite로써 Regression Test가가능 2
5. 도구기능소개 5.2 Fit Table 의이점 Communication : 필요한것에대하여토롞및의사소통할수있는구체적인방법제공 개발된소프트웨어의목적및필요성, 가능성에대한이해를도움 현실적인예제를기반으로구체적인테스트를함으로써개발요구사항의공감을가져옴 Agility : 요구변경및피드백제공 자동화된테스트들은변경되는사항모두정의하는것을도와주며소프트웨어의변경에대해서도이전에만족했던요구들이잘못되지않도록함 Fit 테스트는가장최근의문제와솔루션의이해에따라가장유용한피드백을제공 Balance : 초기문제해소및변경에의한문제재발방지를위한균형유지에용이 Fit 테스트들은변경을할필요가있으나균형을잃은소프트웨어제품에도도입될수있음 3
5. 도구기능소개 5.3 FitNesse 메인페이지 FitNess 메인페이지 Edit Properties Where Used Search Files Versions Recent Change User Guide Test History 4
5. 도구기능소개 5.4 FitNesse 기능소개 (1/8) FitNesse 기능소개 : Edit 첫페이지 (Wiki) 페이지를편집하고, 새로운테스트페이지를생성 >Test 를입력 Save 5
5. 도구기능소개 5.4 FitNesse 기능소개 (2/8) FitNesse 기능소개 : Properties 페이지설정화면, 각테스트의 Type, Action 및기타홖경설정 6
5. 도구기능소개 5.4 FitNesse 기능소개 (3/8) FitNesse 기능소개 : Search 제목별, 내용별, property 별검색가능 7
5. 도구기능소개 5.4 FitNesse 기능소개 (4/8) FitNesse 기능소개 : Files FitNesse 폴더에대해파일탐색및업로드 / 다운로드가능 8
5. 도구기능소개 5.4 FitNesse 기능소개 (5/8) FitNesse 기능소개 : Versions 테스트및페이지수정등에대해이전버전 ( 연 / 월 / 일 / 시 ) 선택가능 9
5. 도구기능소개 5.4 FitNesse 기능소개 (6/8) FitNesse 기능소개 : RecentChanges FitNesse 내부변화로그출력 10
5. 도구기능소개 5.4 FitNesse 기능소개 (7/8) FitNesse 기능소개 : User Guide FitNesse 의매뉴얼페이지 11
5. 도구기능소개 5.4 FitNesse 기능소개 (8/8) FitNesse 기능소개 : Test History 시갂별로테스트수행내역을테이블을바탕으로하여출력 12
6. 도구활용예제 세부목차 6.1 예제소개 6.2 테스트페이지생성 6.3 FIT Table 설계 6.4 Fixtur 생성 6.5 클래스파일연결 6.6 예제테스트 1
6. 도구활용예제 6.1 예제소개 예제시스템 : 텍스트출력 비교적갂단한자바코드와소켓통신을통한문자출력 // send data to the server System.out.println("Sending message : " + message); out.println(message); out.flush(); out.println("bye"); out.flush(); // receive data from the server while (true) { String str = in.readline(); System.out.println("Recv Message : " + str); if (str!= null && message.equals(str)) { return "SUCCESS"; } else { return "FAIL"; } 2
6. 도구활용예제 6.2 테스트페이지생성 Edit 를눌러새로운테스트페이지를 Wiki 페이지에추가 Edit 클릭 테스트명 (>EchoTestFixture) 입력 Save 3
6. 도구활용예제 6.3 FIT Table 설계 (1/3) 추가된 Wiki 페이지에서테스트페이지로이동 추가된 EchoTestFixture 에서? 를클릭 4
6. 도구활용예제 6.3 FIT Table 설계 (2/3) FIT Table 생성 엑셀에서작성하여복사 Spreadsheet to FitNesse 클릭 Save 5
6. 도구활용예제 6.3 FIT Table 설계 (3/3) FIT Table 생성결과 엑셀에서작성된테이블이적용된모습 6
6. 도구활용예제 6.4 Fixtur 생성 (1/2) EchoTestFixture.java 생성 (1/2) 테스트대상이될코드작성 import java.io.bufferedreader; import java.io.inputstreamreader; import java.io.outputstreamwriter; import java.io.printwriter; import java.net.socket; /** * * @author ESG_SUNG */ public class EchoTestFixture extends fit.columnfixture { public String ip; public int port; public String message; public String strexception; public String sendmessage() { try { Socket socket = new Socket(ip, port); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); 7
6. 도구활용예제 6.4 Fixtur 생성 (2/2) EchoTestFixture.java 생성 (2/2) 작성한코드를컴파일 // send data to the server System.out.println("Sending message : " + message); out.println(message); out.flush(); out.println("bye"); out.flush(); // receive data from the server while (true) { String str = in.readline(); System.out.println("Recv Message : " + str); if (str!= null && message.equals(str)) { return "SUCCESS"; } else { return "FAIL"; } } } } } catch (Exception e) { strexception = e.getmessage(); return "FAIL"; } 8
6. 도구활용예제 6.5 클래스파일연결 테스트할클래스위치연결 (EchoTestFixture.class) 클래스파일이사용한라이브러리 (!path fitnesse.jar) 와클래스 (!path!path C:\FitNesse\test) 추가 9
6. 도구활용예제 6.6 예제테스트 (1/2) Test 를눌러테스트를수행 노란삼각형을클릭하여정보확인및디버깅가능 10
6. 도구활용예제 6.6 예제테스트 (2/2) 테스트케이스추가 특수기호, 긴메시지등여러가지형태로테스트수행한결과 11
7. FAQ 질문 1) 를사용하려면꼭설치를해야하나요? 답변 1 : 는정확히웹서비스형태로테스트환경을제공합니다. 그렇기때문에, 서버환경구현이완료되면, 웹을통해서올릴수있으며, 별도의환경구축없이테스트역시수행할수있습니다. 1
8. 도구평가 홗용성 쉽고빠른설치, 테스트페이지의수정이쉽고, 자동화되어있어사용하기에용이 범용성 상호확인및피드백이용이, 설치제약적음 호홖성 JDK 가설치될수있는홖경이면어떠한홖경에서도실행가능 성능 가볍고간단한웹서비스구현, Local상에서는빠른페이지전홖및테스트결과도출 기타 개별계정이나개인적인접근이불가하여광범위한프로젝트에사용하기에는부적절 도구평가의견 간단히 Jar 파일을실행하는것으로웹서버의구현까지지원 단순한표구조로이해가빠름 Eclipse 플러그인버전도존재 1
9. 용어정리 본매뉴얼에서사용하고있는용어의정리 Tomcat Test Suite Wiki ApacheSW Foundation 에서개발한 application server 로 Java Servlet Container, Java Server Pages Engine 과 HTTP connector 기능을가짐 테스트의대상이되는컴포넌트나시스템에사용되는여러 TestCase 들의집합 Wiki( 위키 ) 란모두가함께만들어가며누구나자유롭게쓸수있고배타적인저작권을가지고있지않아사용에제약을받지않는웹페이지를말함. 또한누구나함께글을써내려갈수있고여럿이써내려간하이퍼텍스트글과같은것을말함. 위키는어떤주제에대해설명하다가다른개념이나오면그곳에링크가생겨나그에대한설명을담은페이지로넘어갈수있음. 따라서다양한주제들을링크로연결시켜거대한지식의저장고로만들기에적합한형태를가지고있음. 1