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 를 사용할 수 있게 되었다.
4. ChromeWebDriver 를 다운로드 받는다.
chromedriver.chromium.org/downloads
위 경로에 들어가서 받을 수 있다.
현재 자신이 사용하고 있는 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 > JAVA JSP' 카테고리의 다른 글
spring mybatis mysql 과 oracle 설정 방법 (0) | 2022.04.07 |
---|---|
jmeter webdriver selenium 내 iframe 인식/조작하는 방법 (0) | 2021.03.08 |
Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver' 오류 해결 (0) | 2020.03.30 |
jquery 로 iframe form submit ( sample 포함 ) (0) | 2018.07.04 |
AES 암호화 방식을 통한 DBCP 암호화 (2) | 2018.07.02 |