前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高级性能测试系列《8.脚本写法》

高级性能测试系列《8.脚本写法》

作者头像
清菡
发布2022-06-21 15:33:13
6720
发布2022-06-21 15:33:13
举报
文章被收录于专栏:清菡软件测试清菡软件测试

一、jmeter工具介绍

gui界面

  • 一切都在右键掌握之中。
  • 测试计划:工作中测试计划:什么时间什么人做什么事情。
    • 线程组:接口、自动化测试时,基本不会去改动。
    • 配置元件
    • 监听器
    • 取样器:根据不同的协议,使用不同的取样器编写脚本
    • 逻辑控制器。
    • 前置处理器:
    • 后置处理器:对取样器进行控制。
    • 定时器。
    • 性能测试,这个是用于进行性能场景设计的。
    • 线程组:进行性能场景设计。
    • setup线程组。
    • teardown线程组。
    • 优先级是最高的,正式干活时,急先锋。
    • 最先被执行的配置元件是:用户定义变量
    • 对性能结果进行监控,展示结果数据。
    • 不同的元件,是从不同的角度,展示结果数据。
    • 重点关注:用户参数
    • jmeter里面的测试计划是脚本的根文件。
    • 元件

二、jmeter写脚本

  • 特别注意事项:
    • Accept:在请求头里面可加可不加,因为这个东西是开发所控制的,我们是无法修改的。
    • 请求行
    • 请求头
    • 空一行
    • 请求体
    • 请求方法,请求地址URI。
    • Content-Type
    • cookie
    • User-Agent
    • 参数类型:表单。
    • 消息体数据类型:jsonxml
    • 当你的接口请求参数为json格式时,一定要写请求头,请求头中一定要有 Content-Type:application/json(如果没有这个信息,100%报错,不局限于jmeter)。
    • 衍生:http请求包括哪些部分?
  • json格式:
    • {"key":"value","key1":1}
  • 开发人员接口中定义的返回码code,和http中的response_code不一样。
    • 3xx:重定向相关。301
    • 4xx:请求URL地址有问题。400、404
    • 5xx:服务器内部异常。500、502bad gatway
    • http中的response_code
    • 开发人员在接口中定义的code,是响应代码。

每家公司定义的code的含都不一样的,是为了方便定位某些问题的(一个code值代表某一种意思而已)。

  • 写脚本
    • 测试计划上右键, 添加线程组
    • 线程组上右键,添加取样器-->http请求(http协议簇)。
    • 线程组上右键,添加监听器-->查看结果树

一个最简单的jmeter脚本,包括:线程组、取样器、监听器。

线程组:性能测试中用于场景设计的,写脚本阶段不用改动。

取样器:根据不同的协议,编写不同的脚本。

监听器:调试脚本时使用,性能测试执行时禁用监听器。

不管哪种监听器,都是对结果数据进行不同维度的展示。

这些展示是需要消耗本地资源的,从而导致资源不能足够得分配到性能测试中去。

8080端口,是tomcat的默认端口。

http协议的默认端口:80

https协议默认端口: 443

jmeter的默认保存路径,jmeter的bin文件夹。

性能测试中,这种非必传的参数,我们也写上:

把这些非必传的参数都传了,代码对这些参数都进行了计算。

这样做性能测试,测试出的结果基本就是跟实际情况最接近的。

请注意:

1、当请求体为json, 一定要有请求头 Content-Type:application/json

2、json格式有问题。

3、协议:当协议为http时,可以不写。如果是https,那就必须写。

4、服务器名称或IP:不能带有/

注意:浏览器的url地址里面只能执行get方法,不能执行post方法。

5、路径:不要带域名、ip和端口。

路径开头:用/

不要带有空格,带有空格的请求的URL会出现urlencoded的编码:%20

URI:资源地址。

URL:带domain。带有域名去访问资源的地址。

6、内容编码:utf8。

请求内容出现乱码处理方法:

1)内容编码:utf8。

2)请求头的Content-Type的值中加上:charset=utf-8

3)请求体为参数类型:勾选参数“编码”,编码:urlencoded编码。

在参数值为非字符(汉字、特殊符号) ,都需要勾选编码。

给大家的建议:不管什么类型的参数值,都建议勾选编码。

响应内容出现乱码处理方法:

不是简单的设置为utf8gbkgb2312big5,需求修改jmeter.properties中的sampler.result.encoding

同一个接口,用postman请求,响应是正常的。用jmeter请求,响应就有中文乱码?

原因是:jmeter的编码是根据操作系统编码来的。

在国内,中文windows系统的字符集编码是gbk936maclinux系统中文编码utf8

在写这个系统的代码的时候,给它设置的字符集为utf-8,而我的系统是gbk,出现编码不一致的问题,就出现乱码。

唯独在中文的windows系统中出现响应乱码的问题。

7、参数、消息体数据类型选择

当我们的请求接口文档中说,请求体为json格式,那么我们就选择用消息体数据来写json

soap=http+xmlxml也是写在消息体里面。

参数: 请求体是form-data Content-Type: application/x-www-form-urlencoded 、不指明请求体类型、请求的方法是get,就用参数。

8、自动重定向:不会显示中间重定向过程,无法从过程中,提取信息。

跟随重定向: 会自动显示重定向过程,能从过程中提取想要的信息,用于后面的接口请求,这叫做关联。

使用keepAlive:保持连接, 长连接。

因为现在用http协议版本为1.1,长连接的开关默认是打开的。

所以,默认勾选keepAlive,但是在性能测试中,我们会根据需要,去掉这个勾。

做性能测试时,请求量是非常大的。大量的人一直在请求,一直保持着连接不放。

发过去一个请求,本地要消耗一个端口的,一个端口对应一个连接池。

需要及时的释放,不然这大量的人,不能灵活得用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、jmeter工具介绍
    • gui界面
    • 二、jmeter写脚本
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档