性能测试中思考时间和持续时间有什么区别?
性能测试服务里面会涉及到2个时间的概念:
- 思考时间(单位为ms):是指您在执行两个连续操作期间的等待时间。
- 压测时长(单位为min):即测试任务阶段的持续时间,压测执行的时间。
思考时间并不会影响并发总的时长,它只会影响到您并发请求的个数。下面以一个例子来解释说明。
思考时间设置为1000ms,压测时长为10min,并发用户为10个。并发请求个数的计算公式为:压测时长并发用户/思考时间,根据公式得到的并发请求数为6000个(600s10/1s),那么此压测任务并发的总时长是10min,向服务端发送6000次查询请求。
说明有的时候测试结果会发现并发请求数不到6000,会有一些小差距,这样也是正确的。因为请求过程中消息的响应如果不是立即的,则会有0.1秒的等待回执时间。
并发用户数是什么?
压测是需要模拟用户实际业务操作的真实使用场景,并发用户数是模拟一定数量用户操作的一个配置。
例如,游戏网站某个时间点进行竞技活动,那么这个时候对设备的要求肯定是最高的。并发用户数就是模拟成千上万的用户在同一个时间点进行各种操作的配置数。
将并发用户数,同时结合并发时间和思考时间来进行计算并发请求的数量,压测出服务器最终饱和数据是多少,结合期望的最大值是多少来进行判断是否满足客户的需求。
报文如何填写?
报文通俗的解释就是用户在网站界面上的所有单击操作。每个单击操作通过编辑成满足协议规范带有用户请求内容格式的码流传送给不同的第三方,最后得到一个正确或者失败响应的一个过程。得到正确的响应,这个单击动作会操作成功;得到错误的响应,界面会提示一些错误信息指导用户怎么修正。
性能测试支持报文的请求类型分为GET、POST、PATCH、PUT和DELETE,那么报文如何填写呢?
- 首先在压测前需要确认请求接口是一个什么动作。
以查询为列,查询消息就是一个GET请求,在配置时选择GET方式即可。
- 如果请求消息中有涉及输入参数的情况怎么办?
如果一个请求涉及到用户各种信息的输入,可以通过在操作时按“F12”,或抓包工具(例如wireshark)查看报文是怎么请求的,报文体是什么样的格式,如何传送到第三方接口。然后根据实际业务在压测的报文中填写。
一般情况这类请求方式会是一个POST,选择POST方式后,会有联动的选项展示出来。
报文内容
标准的HTTP/HTTPS格式,报文的头域依照抓包的内容填写;报文体就是具体请求的内容,根据被测服务业务来判断,可以是游戏的登录请求,可以是银行的开户请求等等,只要满足HTTP/HTTPS的协议都可以编辑报文进行压测。
说明PATCH、PUT和DELETE的原理和POST是一样的。首先确认被测应用的协议类型、请求方式和请求链接,其次确认具体请求的内容。
为什么事务调试总是失败?
在使用调试功能前,要先确认如下两点:
- 确保资源组为运行状态。
- 确保资源组的调试节点和被压测的应用之间网络互通。
-
登录弹性云主机控制台。
-
在弹性云主机中分别找到调试机和执行机的节点并登录。
-
curl对应应用的URL查看网络是否连通。满足以上两点后,对事务进行调试,单击“结果”页签查看返回内容是否正确。
若调试功能返回内容报错,这就是使用调试功能的主要目的,需要去检查自己传入参数是否正确,检查报文配置的内容是否正确。
-
HTTP报文请求中,哪些头域是必填的?
性能测试服务没有必填头域,只负责透传您定义的头域,在HTTP的行为上来看哪些头域必须携带取决于被测服务器是否会校验或者使用到这些头域。请根据压测服务器需要校验或者使用的头域来添加相关头域及内容。
压测任务执行机CPU占用率一直较高的原因?
性能测试服务比较特殊,对处理时延要求很高,可能您发送的报文服务器响应时间很短,因此需要不断轮询以减小时延偏差,所以压测任务在运行时会出现高CPU占用。由于用于压测资源组的节点是独占的,所以不会对您的应用产生影响,也不会影响性能测试服务本身的性能。
全局变量和响应提取变量的区别
全局变量可在整个测试工程中使用,当前支持枚举类型、整数类型、文本类型和文件类型。响应提取的变量为局部变量,只支持在当前事务中或者本用例中,该请求后续的请求可使用,不支持跨事务或者跨用例使用。
云性能测试服务测试的时候申请的带宽大小对测试的影响是什么?
用户压测的请求和响应的模型不一样,所需带宽也不一样。比如说5000TPS,每个请求包大小是1KB,那么总的上行带宽是5000KB,下行带宽也是一样的估算方式。对于带宽的限制是限制上行带宽,因此POST/PUT等带Body的请求会比较消耗带宽资源。
压测时如果带宽不足的情况下会出现网络丢包,在测试报告中的体现就是时延增大,甚至出现超时。
如何进行并发测试?
通过创建测试工程,根据需求构建事务模型之后,添加对应的测试任务便可进行并发测试。并发用户数即为并发数,不仅对单任务可以进行并发操作,也可以勾选多个测试任务同时进行并发操作。
JMeter测试工程和性能测试测试工程的区别?
JMeter测试工程支持直接导入JMeter脚本,使用JMeter原生引擎发起性能测试。
性能测试测试工程支持导入CPTS脚本和JMeter脚本,导入的JMeter脚本会自动转换为CPTS脚本进行性能测试,同时也支持直接手动按照实际压测场景,进行测试任务编辑,开展相应的性能测试。
怎样确定压测任务顺序读取全局变量的值?
如果您想确认压测任务是否会顺序读取全局变量的值,可以通过以下步骤测试:
- 设置全局变量,取值数量建议在10个以内(例如设置取值为6、5、4、3、2、1),方便快速测试。
- 设置一个用例,在此用例报文的body体中引用1中设置的全局变量,执行阶段设为按次数方式,并发为1、并发次数为10,启动此用例。
- 在性能报告中的“各项测试指标”中,单击操作图标“”,单击“下载请求日志”,查看请求体中全局变量的取值是否和设置的顺序一致。
通过日志可确认后续的取值是否顺序读取,当读取到最后一个值时,返回读取第一个值。