JMeter(连载3)

7. CSV Data Set Config

这个组件用于测试流程的参数化,参数化文件采用类似于CSV文件。如图16所示。通过菜单“Add->Config Element->CSVData Set Config”添加。

图16 CSV Data Set Config

lFilename:为参数化的文件名。

lFile encoding:文件的编码格式,通常情况下请输入utf-8。

lVariable Name(comma-delimited) :变量名称,输入分割符号,分割符号需要与Delimiter保持一致。

lIgnore first line (only using if Variable Name is not empty) :是否忽略第一行。

lDelimiter (use ‘\t’ for tab) :分隔符(‘\t’博阿斯TAB键)

lAllow quoted data? :允许引号数据吗?

lRecycle on EOF:到了文件尾处,是否循环读取参数。因为CSV Data Set Config一次读入一行,分割后存入若干变量交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入。

lStop thread on EOF:到了文件尾处,是否停止线程。

lSharing mode:共享模式,包括

Ø All threads:所有线程。

Ø Current thread group:当前线程组。

Ø Current thread:当前线程。

下面对Sharing mode做以下更详细介绍。如果测试计划中有线程组A、线程组B,A组内有线程A1、A2… An,线程组B内有线程B1、B2…Bn,CSV Data Set Config放在线程组A的下级组织树,不管怎么设置Sharingmode,都只针对线程组A且取之情况一样:线程A1取第一行,线程A2取第二行。CSV Data Set Config放在测试计划下级组织树(与线程组并列),情况如下 :

lAll threads:测试计划中所有线程,线程组A、线程组B共用一个CSV文件,所取数据与线程实际执行顺序有关(先执行先取)。补充一点:线程组之间是并行执行,各线程实际执行时间根据Ramp-UP Period而来。若线程A、线程B均设置Ramp-Up Period:2,取之情况是:线程A1取第1行,线程B1取第2行,线程A2取第3行,线程B2取第4行。

lCurrent thread group:取之情况是:线程A1取第1行,线程A2取第2行,线程B1取第1行,线程B2取第2行。(线程组之间互不影响)

lCurrent thread:当前线程。A1取第一行、A2取第一行;B1取第一行,B2取第一行(均取第一行)

下面是一个csv配置文件,文件内容为用户登录的用户名和密码参数文件,通过,隔开。

linda,uuubbg

cindy,123456

jerry,654321

susan,qwert

peter,zxcvb

设置完毕参数,在JMeter中获得参数的方法是${参数名},返回参数当前的值。

8. Response Assertion

发送完毕HTTP请求,接下来就是接受HTTP响应了,通过接受HTTP响应可以判断测试的结果是否正确。

在JMeter中,断言分为以下十三种,它们分别是。

1、ResponseAssertion:响应断言(判断返回内容中的内容)。

2、JSONAssertion:检查json请求的断言。

3、SizeAssertion:判断返回内容大小。

4、JSR223 Assertion:对sampler中的JSR223 sampler而使用的断言。

5、XPATHAssertion:用来确定XML文档中某部分位置的语言,对返回信息为XPATH的数据类型进行断言。

6、CompareAssertion:比较断言,针对断言进行字符串更换。

7、DurationAssertion(持续时间断言):判断服务器响应时间。

8、HTMLAssertion:检查返回内容的格式是否符合。

9、MD5hexAssertion:针对参数类型为MD5加密的进行判断,MD5是一种消息摘要算法。

10、SMIMEAssertion:针对使用多用途网际邮件扩充协议的信息进行断言。

11、XML Assertion:判断返回结果是否和xml的格式即<></>成对出现。

12、XMl SchemaAssertion:xml概要断言。

13、BeanshellAssertion:针对sampler中的Bean Shell sampler而使用的断言 。

其中Response Assertion是一个比较重要的断言,通过菜单“Add->Assertion->ResponseAssertion”添加。图17显示的即为Response Assertion界面。

图17 Response Assertion

l 在Apply to部分中。

ØMain sample and sub-sample:作用于主main sample和子sub-sample。

ØMain sample only:只作用于main sample。

ØSub-samples only:只作用于sub-sample。

ØJMeter Variable:作用于JMeter变量。

l 在Field部分中。

ØText Response:包含服务器的响应文本(body),不包括HTTP头。

ØResponse Code:响应码,如200。

ØResponse Message:响应短语,如OK。

ØResponse Headers:响应头。

ØRequest Headers:请求头。

ØURL Sampled:URL。

ØDocument(text):通过Apache Tika追踪的各种各种类型文档的文本,比如PDF、JPG,由于自身消耗资源比较大,一般不使用。

ØIgnore Status: JMeter忽略Response Code和Response Message。

ØRequest Data:包含请求的文本(body),不包含HTTP头。

l 匹配模式包括。

ØContains:包含,如果文本包含正则表达式模式,则返回TRUE(大小写不敏感)。

ØMatches:匹配,如果整个文本与正则表达式匹配,则返回TRUE(大小写不敏感)。

ØEquals:相等,如果整个文本与指定的字符串相等,则返回TRUE(不支持正则表达式且大小写敏感)。

ØSubString:如果文本包含指定的字符串,则返回TRUE(不支持正则表达式且大小写敏感)。

ØNot:用来反转检查结果,即不包含,不匹配返回TRUE。

ØOr:或,当多个条件的时候,条件之间的关系是“或”,默认情况为“与”的关系。

9. 察看结果树

作为接口测试,做完设置操作以后,可以通过“察看结果树”和“Debug Sample”两个组件来进行调试。察看结果树通过菜单“Add->Listener->ViewResult Tree”添加。如图18所示。

图18察看结果树

在结果树中。

l Sample result:返回结果的基本信息,下面以一个例子。

Thread Name: Thread Group 1-1

Sample Start: 2019-06-25 16:55:15 CST

Load time: 71

Connect Time: 0

Latency: 71

Size in bytes: 367

Sent bytes:0

Headers size in bytes: 367

Body size in bytes: 0

Sample Count: 1

Error Count: 0

Data type("text"|"bin"|""): text

Response code: 302

Response message: Found

HTTPSampleResult fields:

ContentType: text/html; charset=utf-8

DataEncoding: utf-8

l Request分别显示的是发送头信息和发送主体信息。下面也是一个例子。

Ø发送主体。

GET http://127.0.0.1:8000/goods_view/

GET data:

Cookie Data:

csrftoken=NoLikcUB7LtIOp78giYXAGWXWqQBoKLWgxGrp7J7efSDfqdfxv8hSGhbrd3q8Dso;sessionid=s8blkr5y2ld82f9bqs9lpc4iwnmnkeh4

Ø发送头。

Accept: image/gif, image/jpeg, image/pjpeg,application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*

User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64;Trident/7.0; rv:11.0) like Gecko

Connection: keep-alive

Accept-Language: zh-Hans-CN,zh-Hans;q=0.5

l ResponseData中显示的是响应头和响应体。响应体即为返回的HTTP代码或JSON代码。下面是一个响应头的例子。

HTTP/1.1 200 OK

Date: Tue, 25 Jun 2019 08:55:16 GMT

Server: WSGIServer/0.2 CPython/3.7.1

Content-Type: text/html; charset=utf-8

X-Frame-Options: SAMEORIGIN

Vary: Cookie

Content-Length: 5405

Set-Cookie:csrftoken=NoLikcUB7LtIOp78giYXAGWXWqQBoKLWgxGrp7J7efSDfqdfxv8hSGhbrd3q8Dso;expires=Tue, 23 Jun 2020 08:55:16 GMT; Max-Age=31449600; Path=/; SameSite=Lax

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

本文分享自微信公众号 - 软件测试培训(iTestTrain),作者:顾翔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JMeter(连载2)

    接下来就可以用JMeter修改录制和脚本了,在修改之前,介绍一下一些最基本的组件功能。由于JMeter功能非常强大并且支持很多控件,所以介绍所有的组件是不可能的...

    小老鼠
  • Jmeter之接口测试使用流程

      采样器:较常用HTTP请求、JDBC Request、SOAP/XML -RPC RRequest

    小老鼠
  • JMeter(连载4)

    在Debug Sample中可以查看测试产生数据的值。通过菜单“Add->Sample->Debug Sample”添加。如图19所示。

    小老鼠
  • 第37节:多线程安全问题

    创建线程的方法 继承类Thread并重写run(),run()称为线程体;用这种方法定义的类不能再继承其他类。

    达达前端
  • Netty中的线程处理EventLoop

    运行任务处理的在编程上的构造通常称作事件循环,Netty使用EventLoop来描述。一个EventLoop将由一个永远不会变的Thread驱动,它可以被指派给...

    爬蜥
  • java中线程池的几种实现方式

    多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.

    海仔
  • Java 多线程编程(聊聊线程池)

    线程是一种昂贵的系统资源,其“昂贵”不仅在于创建线程所需要的资源开销,还在于使用过程中带来的资源消耗。一个系统能够支持同时运行的线程总数受限于该系统所拥有的处理...

    叶志陈
  • 编程体系结构(05):Java多线程并发

    线程是操作系统能够进行运算调度的最小单位,包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程...

    知了一笑
  • 新手一看就懂的线程池

    线程池是帮助我们管理线程的工具,它维护了多个线程,可以降低资源的消耗,提高系统的性能。

    好好学java
  • Java中线程池的参数有几个?

    在使用线程池时,为了获取最佳的性能,常常需要手动指定线程池的参数,ThreadPoolExecutor是最常用的线程池执行器,它有四个构造方法,参数最多的构造方...

    小诸葛

扫码关注云+社区

领取腾讯云代金券