JMeterのプレゼンテーションとスクリプトの生産とテスト

JMeterのご紹介

JMeterのが最初のWebベースのストレステスト(圧力試験)のためには、Apache財団、ジャカルタからの純粋なJavaのオープンソースプロジェクトで、その後徐々にFTPへのファイル転送の適用範囲を拡大し、大規模なデータベース(JDBCモード)、スクリプト(CGI Perlの、など)、Webサービス、Javaアプリケーションや他のテストの側面。JMeterの自体は、主に、システム圧力として、性能試験に使用しました。加えて、アプリケーションの機能テストおよび回帰テストを行うために、のJMeterができ、システムはアサーションとスクリプトの使用を介して確認した後、ユーザ所望の結果に戻すことができます。アプリケーションの柔軟性ツールを高めるためには、JMeterは、正規表現の使用はアサーションを作成することができます。理由は、その柔軟性と拡張性のため、JMeterは人気のあるオープンソースのテストツールになりつつあります。

JMeterは特徴:

  • テストのための複数のサービスタイプのサポート。
  • \再生モードを記録することにより、テストスクリプトのサポート。
  • 高い移植性、Javaプログラムを100%と;
  • 異なる機能をサンプリングしながら、マルチスレッドフレームは、別のスレッド、サンプリンググループにより同時に複数のスレッドを可能にします。
  • うまく設計されたGUIのユーザをサポート高速動作と正確なタイミング。
  • 分析\再生テスト結果はキャッシュし、オフラインモードをサポート。
  • 拡張性の高いLはHTTP、JAVAリクエスト、JMS、EJB、Webサービス、JDBC、FTP、LDAP、SMTP、JUnitの、メール、MongoDBのなどをサポートするために

JMeter LoadRunnerのとは対照的:
1、インターフェース、インストール、プロトコルサポート、ライブラリ、コスト、オープンソース
2、分布荷重を達成することができ、相対的に言って、より強力なLoadRunnerの
3は、負荷ジェネレータWindowsおよびLinux環境をサポート。コンソールの側面、JMeterのクロスプラットフォームではなく、LoadRunnerは
、現在のJMeterないながら4、LoadRunnerのは、同時ユーザーの異なる数を実行するために、各ロード・ジェネレータを指定することができます
外のJMeterテスト計画の5、データファイルは、負荷を生成するために一緒に送信されることはありません、LoadRunnerのファイルは、封入のLoadRunnerを選択することにより、リモート管理に一緒に送信されてもよいです

JMeterのインストール

JMeterのは、純粋なJava開発で、JMeterのような一般的な、実行できるJavaプログラムを実行することができるシステム:WindowsやLinux、Macとようにします。次のように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:\ apacheの-のJMeter -3.0 CLASSPATHを変更する:プラス: %JMETER_HOME%\ LIB \ EXT \ ApacheJMeter_core.jar;%JMETER_HOME%\ LIB \ jorphanジャー;%JMETER_HOME%\ LIB \ logkit-2.0.jar ;.
ステップ5:Cを入力:\のApache-のJMeter-3.0 \ binに、 binディレクトリを入力した後、ダブルクリック操作のjmeter.bat 2開閉可能な窓、JMeterのコマンドウィンドウとJMeterのグラフィカル・ユーザー・インターフェースがあるだろうと、ではなく、閉じることができ、コマンドウィンドウ。

試験の主要な構成要素のJMeter

JMeterのテストの主なコンポーネントは以下のとおりであります:

  1. JMeterのテストプランを使用して、他のJMeterテスト要素のための容器で試験するための出発点です。
  2. スレッド群が同時ユーザーの特定の数を表し、送信要求の同時ユーザーをシミュレートするために使用することができます。スレッドグループ備えている実際の要求サンプラー、で定義された事項。
  3. また、テスト結果を収集しますが、責任リスナーは、道の結果が表示されていることを言われました。
  4. コントローラ・ロジックは、サンプラーと組み合わせて使用​​される複雑な要求シーケンスをシミュレートすることができ、送信要求ロジックのJMeterの動作をカスタマイズすることができます。
  5. アサーションは、結果要求応答は次のようにユーザが所望するかどうかを決定するために使用することができます。前提の適切な機能を確保するために、分離株問題領域、ストレステストのすなわち実装に使用することができます。効果的なテストのための制限は非常に便利です。
  6. サンプラ構成要素は、構成情報を維持し、実際のニーズに応じて要求の内容を変更する必要がありました。
  7. プリプロセッサとポストプロセッサは、前と作業が完了した後にリクエストを生成する責任があります。プリプロセッサは、しばしば要求、多くの場合、応答データを処理するために使用されるポストプロセッサを設定変更するために使用されます。
  8. 定義する責任要求タイマー間の遅延間隔。
    9.サンプラー(サンプラー)は、パフォーマンス・テスト・サーバーにあるが、そのようなHTTPリクエストサンプラー、FTP要求サンプル、などの情報、最小記録単位の応答時間、JMeterのネイティブサポート、さまざまなサンプラー、記録することに応答して、リクエストを送信する TCP要求サンプル、JDBCを要求サンプラーなど、サンプラーの各異なるタイプは、設定されたパラメータに応じてサーバにリクエストの異なるタイプを放出することができます。
    10.試験配列(試験フラグメント)試験要素は、それがテストツリーのスレッドグループレベルコントローラ上のスレッドグループの特別な種類の断片です。それが実行されないので、それはコントローラであるか、またはモジュールと、コントローラに参照されていない限り実行され、スレッドグループと異なっています。
    11.表:使用されるHTTPプロトコル・スクリプトを記録する場合、記録時にエージェントを設定した後、元の下で、プロキシサーバーを作成することができ、設定サーバ監視、テストのパフォーマンスを監視サーバは、それが推奨されていない、JMeterのであろうJMeterの情報を表示することができます;テストをするときの衝撃が発生しますが、元のステージング領域として使用することができたときに、バックアップスクリプトは、スクリプトがデバッグ。

要素のスコープと実行順序のJMeter

スコープ要素:
構成要素(設定要素)要素は、その作用範囲内のすべての要素に影響を与えます。
前処理手順(単位プロセッサ):サンプラー要素は、その作用範囲内の各要素の前に行います。
タイマ(タイマ)の範囲内で、その能動素子のそれぞれのサンプラー
後処理(ポストプロセッサ):その作用範囲内の各要素にサンプラ要素を実行した後。
アサート(表明):要素が実行サンプラーの範囲内の各要素のそのチェック結果を行います。
聴取者(リスナー):サンプラー要素とレンダリングのそれぞれについて収集情報にスコープ要素。要約:階層内の各素子からの各要素の範囲を分析

実行シーケンス要素:
構成要素- >前処理プログラム- >タイマ- >サンプラー- >ポスト処理プログラムは(リターン結果が空サンプラーない限り入手) - >アサート(サンプラーない限り、得られましたリターン結果がnull)である- >リスナー(サンプラーを返しますヌルの値を取得していない限り)

:実行の順序で、2つのノートへの事があり
、プリプロセッサ、およびポストプロセッサアサーションはサンプラーでうまく作用することができる要素、およびその範囲にはサンプルがない場合ので、それは実行されません。
同じスコープの範囲内で同じタイプの複数の要素が存在する場合、これらの要素は、試験計画の垂直順序で実行された後。

JMeterの動作原理

JVM上で実行されているJMeterの仮想マシンのJMeterはテストを実行するスレッドの方法であるので、各プロセスのコストは、比較的大きく、およびJavaのサポートマルチスレッドです。
スレッドグループによってJMeterのテストサーバーが開始され、より多くのスレッド群よりも各マシンの負荷で実行することができ、JMeterを実行しているシーンがGUIモードで行うことができるだけでなく、負荷のためのテストスクリプトを実行するために、複数のスレッドを駆動するために、あなたはまた、コマンドラインを使用することができ、およびコマンド実行への道ラインは負荷機械のリソース消費のために小さくなります。
機械制御:複数のマシンにJMeter負荷性能試験を使用した場合、マシンは管理対象のコンピュータ制御マシンと呼ばれるように、マシンがスクリプトを実行することができ、また、管理タスクをリモートで実行しているマシンをロードするために、そして収集選ばれましたテスト結果。
ロードマシン:あなたは、テスト・スクリプト・パラメータ・ファイルとjarパッケージの依存関係を実行すると、サーバーが開始負荷テストマシンにスクリプトを送信するための試験機の負荷制御のチャンスは、制御ユニットは、手動でローカルマシンの負荷にコピーする必要性を送信することはできません。

:演算処理は以下の通りである
。制御ユニットの遠隔負荷機械が起動し、待機に接続され
、リモートロード部に接続された制御ユニット
スレッドを開始する(スクリプト、コマンドを開始)制御コマンドを送信し、
スクリプト、戻り検査データを実行ダイナモメータ、
制御機は結果を収集しますそして、表示

JMeterのスクリプトの生成

JMeterのスクリプトの生成は、一般的に二つの方法に分けられます。
スクリプト、スクリプトのマニュアルを記録するためのツールを使用して

HTTPプロキシモード記録:この機能の原則は、HTTP契約の仕方によって要求、HTTP応答およびその他のオブジェクトのHttpにパッケージ化解析ネットワークパケットにある
バッドボーイを記録するサードパーティのツール:バッドボーイは、シンプルなブラウザシミュレーションツールで記録していますそして、、だけでなく、デバッグするための機能を再生します。

通常シオマネキキャプチャまたは開発設計文書によって、手で書かれたスクリプトは、スクリプト生成操作のJMeter GUIインターフェイスのインターフェイスの形式は次のように生成するパケットにパッケージ書き込みJavaコードジャーにも使用することができました。

バッドボーイ説明:
バッドボーイは、グラフィカル結果の分析を提供しながら、強力な画面記録及び再生機能を有しているC ++開発のためのツールをテスト動的アプリケーションです。
記録バッドボーイスクリプトが.jmx接尾辞形式にエクスポートすることができますが、それはJMeterのスクリプト形式をJMX保存され、その本質は、XML形式のファイルです。
バッドボーイは、2つの方法で記録された:一つはリクエストされ、一方は、ツールバー「N」ボタンを切り替えることにより、ナビゲーションモードである要求を、アナログ形式のブラウザはサーバに情報を送信し、各要求リソースとして、ナビゲーションモードは、マウスの動きのユーザの操作を記録することである再生アナログインターフェース、UIと同様、テスト自動化ツールセレン中にクリックします。
JMeterは原因スクリプトの必要性、方法は、我々は要求記録フォーマットは、生成されたスクリプトをJMX使用しています。

インストールバッドボーイ:
バッドボーイは、インストールを完了するためにexeファイルをダブルクリックして、他のWindowsアプリケーションのインストールと同様にインストールされています。

バッドボーイ(例えばLR例のサイトに、)インタフェース・プレゼンテーション:

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