반응형

jMeter plugin webDriver 설치 및 사용방법

 

 

성능 테스트를 하기 위해 jMeter 를 설치하고 http request sampler 를 이용하여

 

테스트를 하고 있었는데 dynamic script 를 호출하여 CGI 프로그램을 실행해야하는 부분이 존재하였다.

 

웹페이지 안에 dynamic script 가 정상적으로 호출되지 않아

 

CGI 프로그램의 response 를 정상적으로 받지 못하는 상황이 발생.

 

어떻게 해야 정상적으로 프로그램을 짤 수 있을까 찾아보던 도중

 

jMeter plugin 중 webDriver 라는것이 존재한다는 사실을 확인하였다.

 

webDriver 를 사용하게 되면 기존에 http request Sampler 를 사용했던 것과는 달리

 

sampler 를 추가 했을 때 빈화면이 나와서 당황스러울수도 있다.

 

직접 소스코딩을 하라는 얘기인데 강력한 기능에는 강력한 권한이 부여되니 너무 걱정하지 않아도 된다.

 

사용해보고 어떻게 사용하는지 설치 및 사용방법에 대해 간단하게 정리해놓기로 한다.

 

jMeter 는 정상적으로 설치되었다는 가정하에 시작.

 

 

1. Options 메뉴의 Plugins Manager 선택

 

 

2. webdriver 라고 검색하면 selenium/WebDriver Support 항목을 체크 후  Apply Changes and Restart JMeter 버튼을 클릭한다.

 

 

플러그인이 정상적으로 설치되며, jmeter 가 재시작되게 된다.

 

 

3. Chrome Driver Config 및 WebDriver Sampler

 

이제 Thread Group 내 Chrome Driver Config 와 WebDriver Sampler 를 사용할 수 있게 되었다.

 

 

Chrome Driver Config

 

 

 

WebDriver Sampler

 

4. ChromeWebDriver 를 다운로드 받는다.

 

chromedriver.chromium.org/downloads

 

위 경로에 들어가서 받을 수 있다.

 

chrome web driver

 

현재 자신이 사용하고 있는 chrome browser 의 버전과 동일한 web driver 를 다운받아야 정상적으로 테스트를 할 수 있다. ( 그렇지 않으면 스크립트 오류가 발생하는 것을 확인함 )

 

 

 

 

다운 받은 chromedriver 의 exe 파일은 Chrome Driver Config 쪽에 등록해주면 기본적인 세팅은 끝

 

Chrome Driver Config 에서는 Use Chrome headless mode 를 사용할 수 있다.

 

headless mode 는 jMeter 를 run 시키면 크롬 브라우저가 실행되면서

 

내가 직접 작성한 내용이 브라우저에서 그대로 실행되는데

 

headless mode 를 체크 후 실행하면 back ground 에서 실행되게되니 부하기의 리소스를 덜 먹게 된다.

 

5. webDriver Sampler 소스를 입력

 

 

var pkg = JavaImporter(org.openqa.selenium);
var ui=JavaImporter(org.openqa.selenium.support.ui) 
var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait);

WDS.sampleResult.sampleStart()
WDS.browser.get("http://localhost:8080/index.aspx/?Param=aaa");

var wait = new support_ui.WebDriverWait(WDS.browser, 500);
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.id('login_id')))    
WDS.browser.findElement(pkg.By.xpath("//div[@id='login_btn']/div[3]/div/img")).click();

wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.className('ui-menu')))
WDS.browser.findElement(pkg.By.linkText("new report")).click();
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.name('menu-01')));
WDS.browser.findElement(pkg.By.id("FDOI5LBN053KNK39")).click();

var action = new org.openqa.selenium.interactions.Actions(WDS.browser)
action.moveToElement(WDS.browser.findElement(pkg.By.id("FDOI5LBN053KNK39"))).doubleClick().build().perform()
WDS.browser.findElement(pkg.By.id("execute")).click();


WDS.sampleResult.sampleEnd()

 

로컬에 설치해놓은 서버에 접근해서 화면을 조회하는 화면이다.

 

기본적인 개념은 webDriver 를 사용하면 브라우저가 해당 object 를 rendering 하는 시간이 소요되게 되는데

 

rendering 전에 object 를 찾으려고 하면 찾을 수 없으니 object 가 화면에 그려진 후 다음 작업을 진행되도록 처리하였다.

 

object 를 찾는 것은 xpath, id, name, class, linkText 를 이용하여 객체를 찾을 수 있다.

 

좀 더 스크립트를 쉽게 개발하기 위해서는

 

chrome 의 확장프로그램을 이용하여 recording 을 할 수 있는 Katalon Recorder 가 있지만

 

recorder 를 100% 믿을 수는 없는 것이 no such element: Unable to locate element 오류를 만날 수 있기 때문이다.

 

해결 방법은 위에 적어놓음.

 

다음에 다시 load test 를 하는 날에 다시 읽어볼 날이 오겠지~~

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,