블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2012. 11. 9. 16:23 Testing, TDD/Tools, FitNesse

간단하게 특정 URL에 대한 성능 측정을 Command Line에서 수행하고 결과를 얻을 수 있는 툴로 Apache Benchmark가 있다. 손쉽게 사용해 보자


  • 테스트 url의 결과값을 확인해 보자 : curl <URL> 
  • 성능을 측정해 보자 : ab <Options> <URL>


* 참조 : ab 사용법




posted by 윤영식
2012. 10. 26. 21:46 Testing, TDD/Tools, FitNesse

JMeter를 통하여 검색인자에 대하여 동적인 값을 넣어주고 싶을 경우 부하를 어떻게 주는지 보도록 하자. 동적인 인자 값을 txt로 설정하고 불러와서 자동으로 인자값을 바꾸어 준다.



▶ search.txt에서 인자값을 읽어서 동적으로 search 파라미터를 바꾸어서 부하주기 

  1. CSV Data Set Config를 추가 한다

  2. 동작으로 넣어줄 search.txt 파일을 만든다 (각 인자값은 \r\n)


  3. 만든 search.txt 파일 경로를 CSV Data Set Config 에 절대경로 위치를 설정한다

  4. "Google Search"에서 레코딩한 "/search" 의 HTTP Request의 Parameters 값으로 static하게 설정된 "beethoven"을 ${search_name}이라 설정한다
     
  5. Response Assertion에도 beethoven으로 설정된 값을 동일하게 ${search_name} 이라 고쳐준다

  6. 결과 값을 보기위하여 Debug Sampler를 추가한다. 그리고 하위로 View Results Tree 를 추가하여 결과 내역을 상세히 본다


  7. View Results Tree의 상세 내역을 보면 HTTP Response data로 search_name=Morzart 등등 변경되어 인자값이 전달된 것을 볼 수 있다

  8. Run/start를 수행하면 7번과 같은 결과를 볼 수 있다

JMeter의 왼쪽 Tree Menu는 위에서 부터 아래로 순차적으로 수행이 된다. 따라서 각 Tree Node를 마우스 Drag&Drop으로 원하는 위치로 이동을 할 수 있다. Add를 잘 못 하였더라도 위치조정을 하면 된다

BeanShell을 이용하게 되면 프로그래밍적인 Controller를 추가할 수 있고, 트리메뉴의 순서를 변경하면 순차적으로 수행을 한다. BeanShell 사용은 다음에 살펴보자.


posted by 윤영식
2012. 10. 26. 19:46 Testing, TDD/Tools, FitNesse

JMeter에 Thread Group을 "Google Search"로 설정하고, WorkBeanch에서 레코딩 작업을 "Goolge Search"에 해준후 부하를 어떻게 쏘고 결과를 보는지 알아보자 



▶ 부하 주기 

  1. Assertion을 설치하여 결과값이 제대로 레코딩된 것인지 확인 할 수 있다 ([Add] 버튼 클릭후 입력값 beethoven 넣음)



  2. 결과를 Graph Result로 보기위하여 추가한다

  3. Thread Group의 user 수를 100으로 한다


  4. 상단의 메뉴 Run/Start를 수행한다


  5. Graph Results 를 통하여 결과 성능을 볼 수 있다. (X축 : 동시 접속자수, Y축 : 응답시간)
    성능그래프는 어차피 x축 동접수 대비 y축의 최대 응답시간의 직교점을 찾으면 된다.

  6. Summary Report를 통하여 에러와 결과값을 수치로 확인한다



가장 간단하게 성능 테스트 하는 것을 보았는데, 예전에 사용한 MS Stress Test Tool과 유사하다. 하지만 Thread Group의 Add 항목에 있는 기능들을 보면 스크립트를(BeanShell) 이용하여 동적인 아규먼트를 주거나 다양한 프로토콜 (FTP, TCP, LDAP 등등) 을 지원한다. 따라서 사용수준의 사용법을 익히 알고 있는 엔지니어라면 -예로 LoadRunner- JMeter를 사용하는데 큰 어려움을 없을 것으로 생각된다. 


posted by 윤영식
2012. 10. 26. 11:37 Testing, TDD/Tools, FitNesse

JMeter를 순수 Java 기반의 성능 테스트 툴이다. 아파치의 설명을 보자 


The Apache JMeter™ desktop application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.



▶ JMeter를 사용해 보자 


  1. JMeter 사이트에서 최신 버전을 다운로드 받는다 ( http://jmeter.apache.org/download_jmeter.cgi )
  2. 로컬에 압축 파일을 풀고, D:\apache-jmeter-2.8\bin\jmeter.bat 를 실행한다

  3. 사용자(=Thread) Group를 생성한다 : 이것은 요청하는 사용자의 요청 방법을 설정한다 (명칭을 Google Search 로 수정)
    1. Number of Thread : 동시 사용자 수
    2. Ramp-Up Period : 사용자가 하나씩 들어갈 때 시간 간격
    3. Loop Count : 테스트 시나리오를 몇 번 실행할 것인지



  4. WorkBench에서 Http Proxy Server를 선택한다

  5. 브라우져에서 웹사이트를 Recording할 때 사용하는 로컬 프락시 임의 포트를 9090으로 설정하고 Thread Group으로 설정한 Google Search를 선택한다

  6. 이제 Recording을 위하여 FireFox 브라우져를 설치하고, FireFox에 Proxy 사용 및 Port를 9090으로 설정한다 



  7. 불여우창에서(ㅋㅋ) 구글 사이트로 들어가서 임의 검색어를 넣고 검색을 하기전에 위 5번 화면의 하단 [Start] 버튼을 클릭한다. [Start] 버튼을 클릭후 불여우창에서 보는 모든 웹요청은 JMeter로 Recording이 된다

  8. 원하는 웹요청을 다 하였다면 JMeter창에서 [Stop] 버튼을 클릭하여 Recording을 멈춘다 

  9. Recording이 끝나면 다음과 같이 레코딩된 내역을 볼 수 있다
  10. 다음에 부하를 준다. (다음 블로그에서...)


posted by 윤영식
2012. 10. 24. 21:14 Testing, TDD/Tools, FitNesse

▶ Fit으로 테스트 했던 CalculateDiscount를 FitNesse Wiki에 넣어 보자 


  1. CalculateDiscount wiki 페이지를 만들어준다

  2. Excel을 이용하여  CalculateDiscount  표를 작성한다 (상단의 명칭은 java 클래스 명칭과 동일하게 작성한다)
 

  3. CalculateDiscount wiki 페이지에 excel 표를 Copy&Paste하고 [SpreadSheet to FitNesse] 포멧으로 바꾸고 [Save] 한다

  4. 기존에 만들어 두었던  CalculateDiscount java 컴파일 내역을 fitnesse.jar 파일 있는 곳에 복사한다

  5. [Test] 버튼을 클릭하여 테스트를 수행한다

  6. 결과를 확인한다



▶ Fit 과 FitNesse 응용하기 


  - Fit 방식을 이용하여 Maven에서 자동화 테스트 구현을 한다. 결과 result.html을 웹서버로 서비스하게 만들어 준다

  - FitNesse는 고객이 FrontPage로 들어와서 위키페이지 마다 [Test]를 클릭하여 결과를 직접 확인 하는 방법도 있다. 

posted by 윤영식
2012. 10. 24. 20:52 Testing, TDD/Tools, FitNesse

▶ FitNesse 를 설치하고 웹상에서 테스트하기 


  1. http://www.fitnesse.org/  로 들어가서 fitnesse.jar 파일을 다운로드 받는다

  2. 특정 디렉토리에 복사를하고 classpath 환경변수에 잡아준다. (안 잡을 경우 java -classpath에서 잡아줌)

  3. listen port를 지정하고 fitnesse 서버를 기동시킨다

  4. 브라우져에서 확인한다. FitNesse는 Wiki Web Server 이다. 여기에 Fit 테스트를 결합 시켰다.


  5. Main 페이지에서 왼쪽 메뉴에서 [Edit] 를 클릭한다
 

  6. Editing 페이지 하단에 >TestSample 이라고 입력하고 Save한다

  7. 화면의 하단의 TestSample[?] 에서 링크된 ? 를 클릭한
.
  8. TestSample Wiki 페이지가 나온다. 

  9. Excel을 이용하여 StressTest Column Fixture를 만든다.  (상단의 명칭은 java 클래스 명칭과 동일하게 작성한다) 

  10. TestSample Wiki 페이지 왼쪽 메뉴 [Edit] 클릭하여 들어간다. 
  11. 편집모드에서 상단에 fitnesse.jar 파일이 있는 위치정보를 넣어주고, Excel표는 Copy하여 Paste 한후에 [SpreadSheet to FitNesse] 버튼을 클릭한다. 그러면 Excel 포멧이 FitNesse 포멧으로 변경된다. 그리고 [Save] 한다. 


  12. 저장한 화면이 다음과 같이 나온다
 

  13. 왼쪽 메뉴 [Properties]에서 Test 속성을 체크하고 [Save] 한다


  14. StressTest.java 파일을 작성한다

  15. StressTest.java파일은 fitnesses.jar 파일이 있는 곳에서 컴파일 한다 

  16. 이제 모든 준비가 끝났다. 

    - 샘플 wiki 페이지를 만듦

    - 샘플 wiki 내용에 인수 테이블 포멧 Copy&Paste from Excel

    - Java Fixture를 만들어서 Fitnesse.jar 파일위치에서 컴파일

  17. 다음에 TestSample 페이지의 [Test] 버튼을 클릭한다

  18. 결과값이 자동으로 출력된다


한번의 스텝이 돌았다. 이제 FrontPage 메인에 또 다른 테스트 케이스를 > 를 이용하여 넣고서 첨부 할 수 있다. 

'Testing, TDD > Tools, FitNesse' 카테고리의 다른 글

[JMeter] 성능 테스트툴 간단 사용기-1  (0) 2012.10.26
[테스트 실습-3] FitNesse-2  (0) 2012.10.24
[테스트 실습-2] Fit-3  (0) 2012.10.23
[테스트 실습-2] Fit-2  (0) 2012.10.23
[테스트 실습-2] Fit-1  (1) 2012.10.23
posted by 윤영식
2012. 10. 23. 22:20 Testing, TDD/Tools, FitNesse

▶ Batch나 업무 프로세스를 타고 Fit Testing  (Action Fixture)

  - start   : 실행 fixture를 자동화할 클래스 명칭을 얻고 테스트를 시작한다

  - check : 메소드를 수행하여 값을 검증한다

  - enter  : 어떤 테스트도 하지 않고 void 메소드를 수행한다

  - press : 메소드를 수행하고 인수(argument)를 전달한다


  1. word로 위에서 부터 아래로 쭉 실행할 내역을 적는다 (start : BuyActions 란 명칭으로 주고 java파일도 동일하게 작성)

  2. java 파일을 하기와 같이 작성한다  

  3. java 파일 컴파일 하고, java fit.FileRunner TestBuyItems.htm result.html 수행한다

  4. 결과 result.html 을 열어본

▶ Action Fixture를 이용한 Chat Server 테스트 

  

  1. word에서 html 파일 만들기



  2. java로 Fixture 개발 (Fixture-ChatServerActions, 업무 모듈-ChatRoom, User, Room) 

  3. java 파일 컴파일하고, java fix.FileRunner TestChatServer.htm result.html 명령 수행하기 

  4. 결과  result.html 열어보기
 

▶ 예제 파일


TestCase-4.zip


TestCase-5.zip



▶ 참고 

  - Fit 의 Fixture 를 wiki에서 사용하는 방법 및 코드 

  - eclipse에서 Fit을 자동화 테스트 하고 싶을 경우 (luxoft)

  - eclipse FitRunner plug-ins 테스트 하기 


'Testing, TDD > Tools, FitNesse' 카테고리의 다른 글

[JMeter] 성능 테스트툴 간단 사용기-1  (0) 2012.10.26
[테스트 실습-3] FitNesse-2  (0) 2012.10.24
[테스트 실습-3] FitNesse-1  (0) 2012.10.24
[테스트 실습-2] Fit-2  (0) 2012.10.23
[테스트 실습-2] Fit-1  (1) 2012.10.23
posted by 윤영식
2012. 10. 23. 21:58 Testing, TDD/Tools, FitNesse

▶ 다수 인수에 대한 Fit Testing (Column Fixture)


  1. word에서 다음과 같이 fixture를 만들어 본다


  2. java 파일을 코딩한다 



  3. javac *.java 명령으로 컴파일 한다 

  4. java fit.FileRunner CalculateCredit.htm result.html 명령을 수행한다 

  5. result.html 파일을 열어본다 


▶ 인수값 열거형 Fit Testing (Column Fixture)


  1. word에서 열거를 위하여 콤마(,)를 사용한다. TestFirstPhone.htm으로 저장한다 

  2. java 코딩을 하기와 같이 한다


  3. java파일을 컴파일 한다

  4. java fit.FileRunner TestFirstPhone.htm result.html 수행한다 

  5. 결과를 열어본다


열거형등 다양한 타입에 대한 테스트를 수행해 볼 수 있겠다. 


▶ 예제 파일


'Testing, TDD > Tools, FitNesse' 카테고리의 다른 글

[JMeter] 성능 테스트툴 간단 사용기-1  (0) 2012.10.26
[테스트 실습-3] FitNesse-2  (0) 2012.10.24
[테스트 실습-3] FitNesse-1  (0) 2012.10.24
[테스트 실습-2] Fit-3  (0) 2012.10.23
[테스트 실습-2] Fit-1  (1) 2012.10.23
posted by 윤영식
2012. 10. 23. 20:55 Testing, TDD/Tools, FitNesse
▶ Test Framework 갖추기  

  - 형상관리 -> CI (빌드) -> 테스트 서버로 애플리케이션이 배포된 후 애플리케이션에 대한 자동화 테스트 수행

  - 테스트 서버에서 자동 테스트를 위한 Test Framework이 필요

    + DB schema의 최기화/원복 : DBA 하지 말고, DDL 가지고 테이블 관리 

    + 입력 파라미터 공급

    + 테스트 케이스에 대한 오류를 개발자 포털에 자동 등록 및 메일링 : 개발자 feedback 필요 (jira 자동 등록)

    + 테스트 서버 = HW/DB + Real Framework + Test Framework + 애플리케이션 + 테스트 코드 + 테스트 실행 stack이 필요함 


대부분 형상관리서버+빌드시스템까지는 구축하지만 적절한 Test Framework을 갖추는 것이 핵심이다. 



▶ 참조사이트

Using Fit Open Source Framework

Test Frameworks

Fitness


▶ Fit Test 하기 

  1. PC Local에 JDK 설치한다. 

  2. JDK bin 디렉토리는 환경변수 path에 설정한다. 

  3. Fitness를 다운로드한다. :  http://fit.c2.com/wiki.cgi?DownloadNow  -> JavaPlatform

  4. fit-java-1.1.zip파일 압축을 풀면 폴더안에 : fit.jar 파일이 있다. 

  5. fit.jar 파일을 환경변수에 classpath = .;<directory>\fit.jar  설정을 한다. (설정하지 않으면 java 수행시 -classpath를 늘 잡아준다)

  6. word를 열어서 다음과 같이 표를 만들어 .htm으로 저장한다 

  7. java 파일을 하기와 같이 만든다. (주의:htm파일 내역중 fixture명칭 CalculateDiscount 명칭과 java파일 명칭과 일치해야함)

  8. eclipse에 만든 *.java 파일을 TestDiscount.htm 파일이 있는 곳에 위치 시킨다. 예) d:/Test_framework/fit_testing/TestCase-1

  9. d:/Test_framework/fit_testing/TestCase-1 > javac *.java  명령으로 java 파일을 컴파일 한다. 
  10. d:/Test_framework/fit_testing/TestCase-1 > java fit.FileRunner TestDiscount.htm result.htm 명령을 수행한다.



  11. 결과 result.htm 파일을 열어본다. 

  12. 1000에서 결과값을 0.00 으로 기대했지만 50.0 값이 나왔고, 밑에도 50.51을 기대했지만 50.5가 나와서 amount라는 인수값을 discount()라는 메소드에 대입하였을 때 인수 테스트 2개에 오류 (2 wrong)가 있었음을 result.htm 결과 화면에 표현해 준다. 


▶ 결과 파일 


'Testing, TDD > Tools, FitNesse' 카테고리의 다른 글

[JMeter] 성능 테스트툴 간단 사용기-1  (0) 2012.10.26
[테스트 실습-3] FitNesse-2  (0) 2012.10.24
[테스트 실습-3] FitNesse-1  (0) 2012.10.24
[테스트 실습-2] Fit-3  (0) 2012.10.23
[테스트 실습-2] Fit-2  (0) 2012.10.23
posted by 윤영식
prev 1 next