JMeter를 프리젠 테이션 및 스크립트 생산 및 테스트

JMeter를 소개

JMeter를 웹 기반 스트레스 테스트 (압력 시험), 점차 파일을 FTP로 전송, 대용량 데이터베이스 (JDBC 모드), 스크립트의 적용의 범위를 확대 (CGI에 대한 초기, 아파치 재단, 자카르타에서 순수 자바 오픈 소스 프로젝트입니다 펄 등), 웹 서비스, 자바 응용 프로그램 및 기타 시험의 측면. JMeter를 자체는 주로 시스템 압력으로, 성능 테스트에 사용. 또한, 기능 테스트 및 응용 프로그램의 회귀 테스트, 시스템을 할 JMeter를 할 수는 사용자가 원하는 결과를 반환 한 후 주장과 함께 스크립트의 사용을 통해 확인 할 수있다. 응용 프로그램의 유연성 도구를 높이기 위해 JMeter를 정규 표현식의 사용이 주장을 만들 수 있습니다. 때문에 유연성과 확장 성, JMeter가 인기 오픈 소스 테스팅 도구가되고있다.

JMeter를 특징 :

  • 테스트를 위해 여러 서비스 유형에 대한 지원;
  • 녹화 \ 재생 모드로 테스트 스크립트에 대한 지원;
  • 높은 이동성, Java 프로그램 100 %;
  • 멀티 스레드 프레임은 별도의 스레드가 동시에 다수의 스레드를 허용하고, 샘플링 그룹은 서로 다른 기능을 샘플링하는 동안;
  • GUI 사용자 지원 고속 동작과 정확한 타이밍을 잘 설계;
  • 분석 \ 재생 테스트 결과는 캐싱 및 오프라인 모드 지원;
  • 확장 성이 뛰어난 L은 HTTP, JAVA 요청, JMS, EJB, WebService를, JDBC, FTP, LDAP, SMTP 때 JUnit, 메일, MongoDB를 등 지원

로드 러너와 JMeter를 대비 :
1, 인터페이스, 설치, 프로토콜 지원, 도서관, 비용, 오픈 소스
2, 상대적으로로드 러너 더 강력한, 말하기, 분산 부하를 달성 할 수있다
, 3 부하 발전기 윈도우와 리눅스 환경을 지원 . 콘솔 측면, JMeter를 크로스 플랫폼이 아니라로드 러너보다
현재 JMeter를하지 않으면 서 네,로드 러너는 동시 사용자의 다른 번호를 실행하는 각 부하 발생기를 지정할 수 있습니다
(5) 외부하여 JMeter 테스트 계획의 데이터 파일이로드를 생성하기 위해 함께 전송되지 않습니다 ,로드 러너 파일 포접로드 러너를 선택하여 원격 관리와 함께 전송 될 수있는 반면

JMeter를 설치

JMeter를 순수 자바 개발이다, JMeter를 같은 일반적으로 실행할 수있는 Java 프로그램을 실행할 수있는 시스템 : 윈도우, 리눅스, 맥 등을. 다음과 같이 Windows 설치 단계에서 :
1 단계 : JDK, 버전 1.8을 권장 위의 필수의 JDK1.7 설치
이동 JMeter를 다운로드 얼굴 : 2 단계를 http://jmeter.apache.org/download_jmeter.cgi 같은 적절한 설치 패키지를 다운로드 : apache-jmeter-3.0.zip
세 번째 단계 예 : C : 다음 영어 이름 디렉토리에 설치를 추출 : 
4 단계 : 구성 환경 변수 : 새로운 JMETER_HOME : C : \ 아파치 JMeter를 -3.0 클래스 경로 수정 : 플러스 : % JMETER_HOME % \ LIB \ EXT \ ApacheJMeter_core.jar를; % JMETER_HOME % \ LIB \ jorphan 병; % JMETER_HOME % \ LIB \ logkit-2.0.jar ;.
단계 5 : 입력 C : \ 아파치 JMeter를-3.0 \ BIN, bin 디렉토리를 두 번 클릭 동작에서는 jmeter.bat를 입력 한 후, 때 닫을 수 없습니다 명령 창, JMeter를 명령 창 및 JMeter를 그래픽 사용자 인터페이스, 두 개의 창을 열 수있을 것입니다.

테스트하여 JMeter의 주요 구성 요소

JMeter가 테스트의 주요 구성 요소는 다음과 같이 요약된다 :

  1. JMeter를 테스트 계획을 사용하면 다른 JMeter를 테스트 요소에 대한 컨테이너 테스트,의 시작 지점입니다.
  2. 스레드 그룹은 동시 사용자의 특정 번호를 나타내고, 송신 요구의 동시 사용자를 시뮬레이션하기 위해 사용될 수있다. 스레드 그룹에 포함되는 실제 요청 샘플러에 정의 된 사항.
  3. 또한 테스트 결과를 수집,하지만에 대한 책임 청취자는 방식의 결과가 표시되는 것을 들었다.
  4. 제어부 로직은 샘플러와 함께 사용 복잡한 요청 시퀀스를 시뮬레이션 할 수있는 송신 요구 JMeter를 로직의 동작을 정의 할 수있다.
  5. 어설 결과 요청 응답은 다음과 같이 사용자가 원하는 것인지 결정하는데 사용될 수있다. 전제의 적절한 기능을 보장하기 위해 분리 문제 영역, 스트레스 테스트, 즉 구현하는 데 사용할 수 있습니다. 효과적인 테스트에 대한 제한은 매우 유용합니다.
  6. 샘플러 구성 요소는 구성 정보를 유지하고, 실제의 요구에 따라 요구의 내용을 변경할 필요가 있었다.
  7. 프리 프로세서와 포스트 프로세서 전과 작업이 완료된 후 요청을 생성하는 책임이있다. 전처리는 흔히 설정 요구 종종 응답 데이터를 처리하는 데 사용되는 후 처리기를 수정하는 데 사용된다.
  8. 정의에 대한 책임을 요구 타이머 사이의 지연 간격.
    제 샘플러 (샘플러) 성능 테스트 서버에 인은 HTTP 요청 샘플러, FTP 요청 샘플과 같은 정보, 최소 기록 단위 반응 시간은 JMeter를 기본 지원 다양한 샘플러 기록에 응답하여 요청을 전송 TCP 요청 샘플 JDBC를 요청 샘플러와 같은는 샘플러의 각각의 상이한 유형의 설정 파라미터들에 따라 서버로 요청의 종류를 방출 할 수있다.
    10. 테스트 시퀀스 (시험 단편) 시험 소자는 상기 제어기에 스레드 그룹의 특별한 종류의 단편이고, 상기 테스트 트리 스레드 그룹 수준이다. 그것이 실행되지 않기 때문에,이 제어기 또는 모듈이 때 컨트롤러 언급되지 않는 한 실행된다 스레드 그룹과 상이하다.
    11. 테이블 : HTTP 프로토콜 스크립트 사용 기록 할 때, 녹음 중에 에이전트를 설정 한 후, 원본에서 프록시 서버를 만들 수 있습니다 서버 테스트 성능을 모니터링, 서버 모니터링을 설정하지 않는 것이 좋습니다, JMeter가 될 것입니다 JMeter를 정보를 표시 할 수 있습니다; 테스트 할 때 충격이 발생하면 원래의 준비 영역으로 사용할 수있을 때 백업 스크립트, 스크립트 디버깅.

요소 범위 및 실행 순서하여 JMeter

스코프 소자 :
구성 요소 (구성 요소)는 작업 요소의 범위 내의 모든 요소에 영향을 미친다.
동작의 범위 내에서 각 요소 전에 수행 샘플러 요소 : 절차 (당 프로세서)는 사전 - 처리하는 단계를 포함한다.
타이머 (타이머)의 범위 내에서의 능동 소자의 각 샘플러
후 처리 (포스트 프로세서) 동작의 범위 내에서 각 요소의 샘플러 요소를 수행 한 후.
어설 션 (어설) 소자 수행 샘플러의 범위 내에서 각 요소의 검사 결과를 행한다.
수신기 (수신기) 샘플러 요소 및 렌더링의 각각에 대해 수집 한 정보 범위 소자. 요약 : 계층 구조의 각 요소에 대한 각 요소의 범위를 분석

실행 시퀀스 요소 :
구성 요소 -> 전처리 과정 -> 타이머 -> 샘플러 -> 사후 처리 프로그램 (리턴 결과 비우 샘플러 않는 수득) -> 어설 (샘플러 않는 수득 반환 결과가 null)입니다 -> 리스너 (샘플러는 반환에게 null 값을 얻을하지 않는 한)

: 실행 순서에서 두 주 사물있다
전처리 및 후 처리 주장 샘플러에 잘 작용할 수있는 요소, 및 본 발명의 범위 내에 시료가 없을 경우, 따라서,이 실행되지 않는다.
동일한 범위의 범위 내에서 동일한 타입의 복수의 요소가있는 경우, 이들 요소는 테스트 계획에서의 수직 순서로 수행되면.

JMeter를 운영 원리

JMeter를 가상 머신은 JVM에서 실행하여 JMeter는 테스트를 실행하는 스레드 방법입니다 수 있도록, 각 프로세스의 비용은 자바 지원 멀티 스레딩은 비교적 큰합니다.
스레드 그룹에 의해 JMeter를 사용하면 명령 줄을 사용하여, 하나 개 이상의 쓰레드 그룹은 JMeter를 실행 장면은 GUI 모드에서 수행 할 수없는 각 시스템의 부하를 실행할 수 있습니다 시작 부하 테스트 서버에 대한 테스트 스크립트를 실행하는 여러 스레드를 구동하고 명령하기 실행하는 방법 라인은 부하 기계의 자원 소비에 대한 작은 것입니다.
기계 제어 : 하나 개 이상의 머신 JMeter를 부하 성능 테스트를 사용하는 경우, 기계가 관리되는 시스템 제어 시스템을 불리는, 기계가 스크립트를 실행할 수 있습니다,뿐만 아니라 관리 작업을 원격으로 실행 기계를로드하기위한, 그리고 수집 선정되었다 테스트 결과.
로드 기계 : 서버 개시하는 테스트 시스템 부하 제어, 부하 테스트 시스템에 스크립트를 보낼 수있는 기회, 당신은 테스트 스크립트 매개 변수 파일과 항아리 패키지 의존성을 실행할 때, 제어 유닛은 보낼 수 없습니다, 필요 수동 로컬 시스템 부하에 복사합니다.

다음 동작 과정은 다음과
제어부를 연결하는 리모트 부하 기계 시작될 기다린
원격 부하 장치에 연결된 제어 유닛,
제어 명령 (스크립트 및 시작 명령) 송신 스레드를 시작하는 단계;
; 동력계 스크립트 리턴 테스트 데이터를 실행하는
컴퓨터가 검색 결과를 수집하여 제어를 표시

JMeter를 스크립트 생산

JMeter를 스크립트 생산은 일반적으로 두 가지 방법으로 구성되어
스크립트, 스크립트 매뉴얼을 기록하는 도구를 사용하여

HTTP 프록시 모드 촬영 :이 기능의 원리는, HTTP 응답 및 계약의 HTTP의 방법으로 다른 객체 요청의 HTTP로 패키지 구문 분석 네트워크 패킷에 있습니다
타사 도구가 BADBOY을 기록 : BADBOY 간단한 브라우저 시뮬레이션 도구를 기록하고있다 그리고, 또한 디버깅 기능을 재생.

일반적으로 피들러 캡처 또는 개발 설계 문서에 의해 손으로 작성된 스크립트도 같이 생성하는 패킷으로 포장 쓰기 자바 코드 항아리에 사용할 수있는 스크립트 생성 작업 JMeter를 GUI 인터페이스에 대한 인터페이스의 형태를 제공했다.

BADBOY 설명 :
그래픽 결과 분석을 제공하면서 BADBOY는, 화면 녹화 및 재생 기능 강력한을 가지고 C ++ 개발을위한 동적 응용 프로그램 테스트 도구이다.
기록 BADBOY 스크립트 .jmx 접미사 형식으로 내보낼 수 있습니다, 그것은 JMeter를 스크립트 형식을 JMX 저장되며, 그 본질은 XML 형식의 파일입니다.
BADBOY 두 가지 방식으로 기록 하나가 요청하고, 하나의 모음 'N'버튼을 전환하여, 탐색 모드이다 요청을 아날로그 형태의 브라우저 정보를 서버로 전송하고, 각각의 요청 자원으로서 ; 탐색 모드는 마우스 움직임의 사용자의 작업을 기록하는 것입니다 재생 아날로그 인터페이스의 UI와 유사한은 테스트 자동화 도구 셀레늄 동안 클릭합니다.
JMeter를 인해 스크립트의 필요성, 방법은 우리가 요청 기록 형식은 생성 된 스크립트를 JMX를 사용합니다.

설치 BADBOY :
BADBOY 설치를 완료하기 위해 exe 파일을 두 번 클릭, 다른 Windows 응용 프로그램 설치와 같은 설치되어 있어야합니다.

(예를 들어, LR 예 사이트) BADBOY 인터페이스 사항

Badboy使用:
1、在地址栏输入被测网站地址,回车、F5或者点击 ;
2、左边显示script(脚本)的目录结构;
3、Test Suite1:脚本的根节点,类似Jmeter的测试计划节点;
4、Test1:测试场景根节点,类似一个业务功能的脚本存放在此目录下;
5、Step1:测试活动的步骤,如果一个业务操作过长,比如:订票业务它分为登 录、进入订票界面、订票等步骤,可以把它分为几个Step,也可以录制成一个 Step,导入Jmeter后再根据业务进行拆分;
6、录制完测试脚本后,通过点击File→Export to JMeter...→另存为".jmx"→保存;
7、启动jmeter,点击文件→打开→选中“
.jmx”→打开, 添加"查看结束树"和"聚合报告",右击Thread Group→添加→监听器→查看结果树, ,右击Thread Group→添加→监听器→聚合报告;
8、启动脚本运行完毕后"查看结果树",验证脚本的正确性

Jmeter的Http代理方式录制:
1、浏览器配置代理:
打开IE浏览器,进入工具--Internet选项-连接--局域网设置,如下图设置:

备注:如果有本地使用了8080端口,为了避免端口冲突,可以换成其它的

2、Jmeter配置控制器:
打开Jmeter,新增一个线程组,然后在其下面新增一个控制器(录制控制器、简单控 制器)。

3、Jmeter中配置代理:
在Jmeter中,右击控制台--添加--非测试原件--HTTP代理服务器,然后排除模式添加一 个设置: .*.(bmp|css|js|gif|ico|jp?g|png|swf|woff),然后勾选Regex matching(正则 匹配)

4、启动Jmeter代理服务器并开始录制:
拖动Jmeter代理服务器界面的滚动条到最下面,点击启动按钮。然后直接在IE浏览器下 操作即可,此时可以看见操作过程中会在录制控制器下生成请求。由于在排除模式添 加了正则表达式。可以排除一些图片等的请求。

手工脚本制作:
在Jmeter手工制作脚本之前,先要获取HTTP请求的相关信息,如请求地址、 请求参数、请求类型等,一般情况下,有两种方法获取这些相关信息:
1、根据开发提供的接口设计规范文档;
2、使用第三方抓包工具如Fiddler、Charles等抓包,然后从中提取信息。 HTTP请求添加方法:线程组 -->右键添加 -->Sampler -->HTTP请求。如下图界面

HTTP请求界面说明:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号,默认值为80 。
Timeouts:指定超时时间,单位是毫秒,Connect指定连接超时时间,Response指定 响应超时时间。
Implementation:实现方式,有三个选择项,默认值为Jmeter属性:jemter.
httpsampler,其中HttpClient可以高效的访问HTTP协议的资源,可以看成是一个没 有界面的浏览器。Java选项,使用JDK提供的net包中的工具类来访问。一般建议使用
HttpClient4。 协议:向目标服务器发送HTTP请求时的协议,可以是HTTP或者是HTTPS ,默认值 为http 。
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、 TRACE、DELETE等。
Content encoding :内容的编码方式,默认值为iso8859,如果不确定可以向开发团 队确定,大多数会指定为utf-8格式。

路径:目标URL路径(不包括服务器地址和端口)
自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
跟随重定向:Http Request 取样器的默认选项,当响应Code是3**时,自动跳转到目标地址。与自动重定向不同的是,Jmeter会记录重定向过程中的所有的请求响应,在 查看结果树时可以看到服务器返回的内容。
Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式 进行HTTP通信,默认选中。
Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用Use
multipart/from-data方法发送,默认不选中。比如可以用它来做文件上传。
Browser-compatible headers:浏览器兼容模式,如果使用Use multipart/from-data for HTTP POST,建议勾选此项。
Parameters 同请求一起发送参数 :可以把要发送的参数与值填如此域。
Body Data:同请求一起发送的数据信息,这里可以支持多种数据格式,json、xml等
Files Upload:同请求一起发送的文件。MIME类型有STRICT、RFC6532、
BROWSER_COMPATTIBLE等,如不知道MIME类型,可以使用抓包工具获取。
Proxy Server:当测试时网络使用了网络代理就需要在此配置代理服务器。

请求头设置:
http请求头设置在Jmeter中需要使用到HTTP信息头管理器。该属性管理器用 于定制Sampler发出的HTTP请求的请求头的内容。不同的浏览器发出的HTTP请求 具有不同的Agent,访问某些有防盗链的页面时需要正确的Refer...这些情况下都需 要通过HTTP信息头管理器来保证发送的HTTP请求是正确的。

https请求配置: 要发送https的请求,需要在http请求或者http请求默认值做如下配置:

发送带参数的post请求:

发送带Json串的post请求:
第一步:需要在HTTP信息头管理器添加一条名称为 Content-Type,值为 application/json
第二步:如下图操作,把json数据放入到Body Data中

Jmeter脚本调试

调试与调优:
调试:当开发的代码或者编写的脚本出现功能不能实现的时候,去修改代码,让
功能实现的过程称为调试。
调优:当开发的代码功能没有问题,效率或者可读性不佳的时候,去改进代码效
率或可读性的过程称为调优。

Jmeter脚本调试即调整修改脚本让其完成录制时的业务功能。

Jmeter脚本调试的过程如下:
录制脚本-->回放-->处理关联(如果需要) -->再次回放-->验证脚本的正确性

Jmeter关联的概念:
在脚本回放过程中,客户端发出请求,通过Jmeter中的正 则表达式提取器所
定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相
应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这
种动态获得服务器响应内容的方法称作关联。通俗点说,就是把脚本中某些写死
的(hard-coded) 数据,转变成撷取自服务器所送的、动态的、每次都不一样的
数据。

关联的应用场合:
当客户端的某个请求是随着服务器端的响应而动态变化的时候,我们就需要 用到关联。
举例一:登录过程
客户端发出获得登录页面的请求, 服务器端得到该请求后,返回登录页面, 同时动态生成一个Session Id;当用户输入用户名密码,请求登录时,该Session Id同时被发送到服务器端;如果该Session Id在当前会话中有效,那么返回登录 成功的页面,如果不正确则登录失败。
在第一次录制过程中Jmeter把这个值记录了下来,写到了脚本中,但再次回 放时,客户端发出同样的请求,而服务器端再一次动态的生成了Session Id,此 时客户端发出的请求就是错误的,为了获得这个动态的Session Id我们就要用到关联技术。
针对Jmeter实际操作来讲,就是使用正则表达式提取器从上一个请求的返回值中取出需要关联的数据做成Jmeter参数,把这个Jmeter参数提供给下面接口 使用的过程。
举例二:随机发帖过程
一个论坛系统,我们录制脚本指定版块发帖后,之后的脚本都会只对这个版块发帖,假设这个版块不存在,或者要做随机发帖的时候,那明显一个固定的版块不满足实际的业务需求,此时也可以使用关联来解决此问题。

Jmeter关联实现:
在需要获得数据的请求上右击添加一个后置处理器-->正则表达式提取器,界面
如下:

名称:随意设置,最好具有业务上的意义,方便区分
注释:随意设置,一般不填写
Apply to:应用范围,包含4个选项。
Main sample and sub-samples:匹配范围包括当前父取样器并覆盖子取样器。 Main sample only:匹配范围是当前父取样器(一般默认选择这个)。

Sub-samples only:仅匹配子取样器。
Jmeter Variable:支持对Jmeter变量值进行匹配。
要检查的响应字段:针对响应数据的不同部分进行匹配,共七个选项。
主体:响应数据的主体部分,排除Header部分;Http协议返回请求的主体部分就是 Body。(一般默认选择这个)
Body(unescaped):针对替换了转义码的Body部分。
Body as a Document:返回内容作为一个文档进行匹配。
信息头:只匹配信息头部分的内容。
URL:只匹配URL链接。
响应代码:匹配响应代码,比如状态码200代表成功等。
响应信息:匹配响应信息,比如”成功” “OK”等。
引用名称:即下一个请求要引用的参数名称,如填写sessionid,则可用${sessionid} 引用它。
正则表达式:正则表达式提取器根据该处的设置进行信息匹配
模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$1$,$2$ 等等,表示解析到的第几个值给sessionid,$1$表示第一个模板,$0$表示全文匹配。
匹配数字:用正则表达式匹配的时候,可能出现多个值的情况,为正数用来确定取 一组值中的第几个,为0表示随机取匹配值,负数取所有值。
默认值:如果没有匹配到可以指定一个默认值。

正则表达式使用:
1、提取单个字符串:
假如想匹配Web页面的如下部分:id = "kw" name = "wd">并提取wd。一个合适 的正则表达式:id = "kw" name = "(.+?)">
2、提取多个字符串:
假如想匹配Web页面的如下部分:id = "kw" name = "wd">并提取kw和wd。一个 合适的正则表达式:id = "(.+?)" name = "(.+?)"。这样就会创建2个组,分别用于$1$ 和$2$
比如:
引用名称:Data
模板:$1$$2$
如下变量的值将会被设定:
Data: kwwd
Data_g0: id = "kw" name = "wd"
Data_g1: kw
Data_g2: wd
在需要引用地方可以通过:${Data}, ${Data_g1}进行使用。
其中:.代表任意字符,+表示一次或多次,代表出现任意次,?表示懒惰模式, 必须跟在或者+后边用

为了查看正则表达式提取器的取值,我们可以添加一个Debug Sampler,添加后, 运行脚本,然后可以在察看结果树中查看正则表达式提取器的取值。如下图所示:

추천

출처www.cnblogs.com/TD1900/p/12050969.html