반응형

출처 : http://egloos.zum.com/choungjae/v/470630

 

너무 정리를 잘해놓으신 사이트가 있어서, 사라지기 전 얼른 펌 합니다.

귀한 지식 정리 감사합니다.

 

LoadRunner(로드런너) 사용법

http://choungjae.egloos.com/470630

오늘은 성능테스트 및 로드런너에 대해 포스팅 하고자 합니다. ^^

 

저도 아직 얕은 지식이기 때문에, 네이버에서 도움을 얻고자 검색을 해봤는데..

로드런너에 대한 정보가 너무 없더라고요.. OTL..

그래서 저처럼 로드런너의 기능 및 사용법에 대해 궁금한데, 검색이 안돼는 분들을 위해서!!

로드런너에 대해 정보를 공유하고자 작성해 봅니다.

 

회사에서 점심시간에 틈틈히 짬내서 작성하다 보니.. 엄청 오래 걸렸네요. ㅠㅠ

각설하고!! 시작하겠습니다!! ㅎㅎ

 

아시다시피 로드런너는 HP에서 제공하는 값 비싼?? 성능테스트 툴 입니다.

QA나 테스터가 성능테스트를 성공적으로 수행하기 위해서는, 우선 성능테스트에 대한 전반적인 지식이 있어야 한다고 생각하기에 간략한 설명부터 시작해 보도록 하겠습니다.

 

성능테스트에서 성능은 시스템의 처리량, 속도, 메모리 사용량 등이 주어진 환경에서 명시된 기능에 대해 정상적으로 수행하는 것을 말합니다.

사용자 요청을 처리하기 위해 소요된 응답시간은 클라이언트에서 측정하고, 단위 시간당 시스템에서 처리되고 있는 처리량은 서버에서 측정합니다. 보통 웹기반 시스템에서는 성능 측정의 기준을 TPS(Transaction Per Second - 단위시간당 처리건수)로 합니다.

 

성능테스트의 목적을 다음과 같이 간략하게 정리해 볼 수 있습니다.

1. 안정적인 서비스를 위해 안정성 확보

2. 다수의 사용자에 의하여 발생할 수 있는 부하에 대한 예방

3. 서버의 최적화를 위해 서버환경 검사

4. 병목 구간을 파악하여 수정

 

그리고, 목적에 따라 다음과 같은 3개의 유형으로 분류할 수 있습니다.

1. 단위테스트 - 단위 별 업무의 최대한의 성능을 측정하는 단계

2. 통합테스트 - 목표를 정해놓고 계산된 부하를 발생시켜 측정하는 단계

3. 임계테스트 - 정해놓은 목표없이 도출할 수 있는 최대 성능을 측정하는 단계

 

아래는 성능테스트의 주요 용어인데요. 꼭 읽어보시기 바랍니다.

1. Concurrent Users (동시사용자) - 해당 시스템을 사용하기 위한 사용자로서, Active Users와 Inactive Users로 분류할 수 있습니다.

Active Users는 Request를 수행한 후, 응답을 기다리고 있는 사용자이며, Inactive Users는 Request를 수행하지 않고 대기중인 사용자 입니다.

2. Load (부하) - 사용자들이 테스트하고자 하는 시스템을 단위시간당 몇 건으로 호출 하고 있는지에 대한 빈도

3. Think Time (대기시간) - 사용자가 다음 요청을 전송하기 전까지의 시간

4. Response Time (응답시간) - 사용자 요청을 처리하는데 소요되는 총 시간

5. Request Interval (호출 간격) - 호출간격 = Response Time + Think Time

6. Throughput (처리량) - 대상 웹 서버가 부하발생 클라이언트에게 송신한 데이타량

7. Vuser (Virtual user) - 시스템에 부하를 주기 위한 가상 사용자

8. Transaction (작업단위) - 하나의 작업이 시작하여 완료되는 시점을 하나의 트랜잭션으로 정의

9. TPS (단위시간당 처리건수) - 단위 시간에 처리 가능한 트랜잭션의 수(TPS = ConcurrentUser/Request Interval)

10. Test Script - 시스템의 성능에 대해 확인하기 위해서 레코딩한 소스

11. Test Scenario - 어떤 방식으로 시스템에 부하를 줄 것인지 정하는 방식

12. 병목현상 - 부하가 많이 걸려 전체 시스템에 영향을 주는 현상

 

성능테스트 프로세스는 각 회사마다 다르지만 저는 다음의 4단계로 분류해 봤습니다.

기획 및 분석 > 설계 및 구현 > 테스트 실행 > 결과 분석 및 평가

1. 기획 및 분석 - 요구사항에 대해 검토한 후, 계획 수립

2. 설계 및 구현 - 성능 목표를 설정하여 테스트 시나리오를 설계하고 테스트 환경을 구축한다.

3. 테스트 실행 - 성능 테스트를 실행하여 모니터링 한 후, 해당 결과가 초반에 설정한 성능 목표에 충족하는지 확인한다.

4. 결과 분석 및 평가 - 결과 데이터를 병합하고 유관부서와 공유하여 함께 분석한다.

 

이것으로 성능테스트에 대한 간략한 설명을 마치고...

로드런너 사용방법에 대해 말씀 드리겠습니다.

로드런너는 크게 3가지 방법으로 분류할 수 있습니다.

1. 스크립트 작성

2. 시나리오 작성

3. 실행 및 결과분석

 

아주 간단하죠??

 

자 이제 1번인 스크립트 작성부터 시작하겠습니다.

 

시작 > Mercury LoadRunndr > Applications > Virtual User Generator 선택하여 Vugen 실행

New 클릭하여 Web (HTTP/HTML)을 선택

 

 

 

URL Address에 레코딩 하고자 하는 주소를 입력 합니다.

Record into Action

- Init: 시작하면서 한번만 실행되는 영역

- Action: 반복적으로 실행되는 영역

- End: 종료되면서 한번만 실행되는 영역

 


 

Start Recording 에서 Options을 선택하여 설정을 몇가지 변경해줘야 합니다.

Options > Recording > HTML AdvancedAdvaced > 아래의 스샷과 같이 설정

- HTML-based script: browser application

- URL-based script: non-browser application

- A script describing user actions: 사용자 액션을 설명하는 스크립트

- A script containing explict URLs only: 명시적인 URL만 포함하는 스크립트

 

 

 

Options > Advanced > Support charset > UTF-8 선택하여 OK클릭

- UTF-8: UTF-8 인코딩 지원

 

참고로, Recording Options은 한번만 설정해 놓으면 이후부터는 똑같이 적용이 됩니다.

 

설정 완료 후, Start Recording 창에서 OK 버튼을 클릭하면, 설정해 놓은 URL Address 페이지를 열어 레코딩을 시작합니다.

Recording bar의 events가 count되면 정상적으로 동작하는 것 입니다.

 

 

 

측정하고자 하는 페이지가 완전히 열린 것을 확인하고 STOP 버튼을 클릭하여 레코딩을 종료합니다.

 

 

 

레코딩을 종료한 후, 측정한 스크립트를 저장합니다.

 

 

 

트랜잭션이 시작되는 부분을 마우스로 클릭한 후, Insert Start Transaction 버튼을 클릭하여 Transaction Name을 입력합니다.

 

 

 

트랜잭션이 끝나는 부분도 마찬가지로 마우스로 클릭한 후, Insert End Transaction 버튼을 클릭하여 Transaction Name을 입력합니다.

시작할때 입력한 이름이 나오므로, OK버튼만 클릭하면 됩니다.

 

 

 

이제 해당 스크립트를 측정하기 위해, 상단의 Run버튼을 클릭하여 스크립트를 실행합니다.

스크립트가 정상적으로 실행돼면 하단 Replay log에 Pass가 출력될 것 입니다.

 

 

 

이제 작성된 스크립트가 정상적으로 동작하는지 검증하는 단계 입니다.

사람이 직접 테스트를 진행할 때는, 육안으로 확인이 가능하지만, 로드런너 같은 툴을 사용할때는 로그와 같은 결과 값으로 검증할 수 있습니다.

사용자가 서버에 Request를 보내면 Response가 오는데요.

서버에서 오는 Response를 잡아서 해당 문자를 한가지 정해서 검증해 보도록 하겠습니다.

여기서는 네이버 홈페이지의 "회원가입"이란 문자를 검증하겠습니다.

 

 

 

상단메뉴 우측의 Run-time Settings를 클릭하여, Log를 선택하고 아래와 같이 설정합니다.

- Extendeed log: 데이터 검증용이므로 디버그 시에만 사용

- Parameter substitution: 수행 시, 적용되는 파라미터 값을 log에 출력

- Data returned by server: Server에서 Response되는 값을 log에 출력

 

 

 

설정을 완료한 후, 상단의 Run을 클릭하여 스크립트를 실행합니다.

스크립트 실행이 완료돼면 Replay Log를 클릭한 후, 검증할 단어를 찾습니다.

여기서는 "회원가입" 이란 단어를 검증할 문자로 선택해 보겠습니다.

회원가입 문자를 찾은 후, 해당 문자(Replay Log:회원가입)를 더블클릭 합니다.

그럼 본문의 web_url(www.naver.com, 로 자동으로 이동합니다.

 

 

 

이제, 검증할 문자인 "회원가입"을 web_url(www.naver.com, 앞에 커서를 클릭하여 입력합니다.

처음에 진행했던 Insert Start Transaction 부분과 비슷하지만, 여기서는 상단의 Insert > New Step > Service > Web_reg_find >회원가입 > OK 클릭 순서로 진행합니다.

- web_reg_find: 실제 결과 페이지가 사용자에게 보여졌는지를 확인하기 위해 사용되는 함수

 

  

 

그럼 본문에 web_reg_find("Text=회원가입", LAST); 문구가 입력됩니다.

 

 

 

이제 상단의 Run 버튼을 클릭하여 스크립트 실행이 완료된 후, 하단의 Replay Log를 선택하여 검증하고자 하는 문자가 체크 되었는지 web_reg_find를 입력하여 확인해 보면 됩니다.

첫번째 나오는 web_reg_find 함수는 테스트조건이 정상적으로 등록되었다는 표시이므로, 무시하면 됩니다.

 

 

 

두번째 나오는 web_reg_find 함수가 검증하기로 했던 문자입니다.

즉, web_reg_find successful for "Text=회원가입" (count=2) 라고 출력돼야 해당 문자가 정상적으로 검증된 것 입니다.

 

 

 

문자 검증 완료 후, 상단 메뉴에서 View > Test Results를 클릭하여 해당 테스트 결과를 확인할 수 있습니다.

드디어 1단계 스크립트 작성 단계가 끝났네요. ㅎㅎ

여기까지 오시느라 수고 많으셨습니다.

 

 

이제, 2단계인 시나리오 작성에 대해 시작하겠습니다. :D

 

시작 > Mecury LoadRunner > Applications > Controller 클릭하여 실행

New Scenario 에서 스크립트 선택하여 Add 한 후, OK버튼 클릭합니다.

 

 

 

OK버튼을 클릭하면, Scenario Schedule 페이지가 출력됩니다.

해당 페이지에서 시나리오 설정을 하면 됩니다.

 

 

 

제일 먼저, Running설정 부분입니다.

Vusers를 설정하면 돼는데요. 딱히 특별한건 없습니다.

AddVuser을 사용해서 Vuser을 늘리거나, Details을 사용해서  해당 스크립트를 변경 및 조회할 수 있습니다.

 

 

 

 

 

이제 Scheduler 설정하는 방법입니다.

Edit Schedule를 클릭하여 Schedule Builder을 불러낸 후, 아래와 같이 설정하면 되는데요.

우선, Slow Ramp Up 부분에 대해서 설정하겠습니다.

- Vuser를 2분마다 2명씩 유입시키는 내용

 

 

 

- Run until completion: Iteration 횟수만큼 진행

- Run for 10분 after the ramp up has been completed: 주어진 시간(10분)만큼 진행

- Run indefinitely: 무한정 진행

 

 

 

- Stop all Vusers simultaneously: 모든 Vuser을 일제히 정지

- Stop 5 Vusers every 30: Vuser를 30초마다 5명씩 정지

 

 

 

위에서 Slow Ramp Up 부분에 대해서 각각 설정했는데요.

Schedule Name 콤보박스에서 Ramp Up을 선택한 후, Slow Ramp Up와 같이 설정을 다시 한번 해줍니다.

물론, 설정은 약간 다른방식으로 아래처럼 해줘야 합니다.

-Ramp Up: Start 2 Vusers every 00:00:15

-Duration: Run for 000:05:00

-Ramp Down: Stop all Vusers simultaneously

 

 Scheduler을 사용하는 이유는 정해진 스케쥴에 따라 load가 입력되므로 결과분석 시, 결과 값을 추출하는 것이 용이하기 때문 입니다.

 

이번에는 Generators를 사용해서 부하발생기의 상태를 확인하도록 하겠습니다.

상태가 Ready가 아닌 경우에는 Connect해서 연결하면 되며, 반대로 사용하고 싶지 않은 경우에는 Disconnect 하면 됩니다.

드디어!! 2단계인 시나리오 작성까지 완료하였습니다. ㅎㅎ

 

 

 

 

마지막 3단계인 실행 및 결과분석!! 단계 입니다. :D

 

하단의 Run탭을 선택한 후, Start Scenario 버튼을 클릭하여 실행합니다.

 

 

 

그럼, 아래와 같이 Running 표시가 뜨는데요.

스크립트를 시나리오대로 정상적으로 진행하고 있다는 표시 입니다.

중간중간 돋보기를 클릭하여 해당 내용에 대해 확인해 볼 수도 있습니다.

그리고, 왼쪽의 Available Graphs의 항목을 더블클릭하면 해당 도표를 그래프로 중앙에서 상세하게 보여줍니다.

테스트가 완료돼면 자동으로 테스트가 종료됩니다. 물론, Stop버튼을 클릭하여 임의로 종료할 수도 있고요.

 

 

 

자, 이제 모든 테스트가 종료됐습니다.

But!! 결과를 분석할 줄 모른다면 테스트를 한 의미가 없겠죠?

 

지금부터 Analysis Tool을 사용해서 결과를 분석해 보도록 하겠습니다.

메뉴탭에서 Results > Analyze Results 클릭하면 저장된 결과 *.lra 파일을 자동 분석해서 아래와 같은 창이 하나 출력됩니다.

왼쪽의 메뉴가 분석한 항목들이며, 해당 항목을 클릭하면 중앙에 해당 항목의 그래프가 보여집니다.

 

 

 

 

Merge라는 기능으로 여러 그래프를 한번에 보여줄 수도 있습니다.

우선, 하나의 그래프를 클릭해서 연 다음에 해당 그래프 에서 마우스 우측 버튼을 클릭하여 Merge를 클릭하고, 추가하고자 하는 항목을 선택하면 됩니다.

 

 

 

 

 

필터링 기능을 통해 좀 더 자세하게 확인해 보고 싶은 구간을 필터링 해서 볼 수도 있습니다.

Set Global Filter > Scenario Elapsed Time > Set Range 설정 > OK 클릭

 

 

 

 

 

이제 테스트 된 결과에 대해 Reports 할 시간입니다.

LoadRunner Analysis는 친절하게도 일반PC에서도 볼 수 있도록 HTML or Word로 작성이 가능합니다.

해당 목록을 클릭하는 순간 자동으로 결과문서가 작성 완료되므로, 확인하시면 됩니다.

 

 

 

아, 드디어 LoadRunner 테스트가 완료됐습니다. ㅎㅎ

주요 기능에 대해 빼먹은 부분도 있고, 미흡한 부분도 있는데요.

나중에 좀 더 공부해서 추가하도록 하겠습니다. ㅎㅎ

반응형

+ Recent posts