1、压测宝的并发用户数有限制吗?
理论上,压测宝的并发用户数无上限。默认单场景最大支持10000并发,可以满足90%的系统并发要求。若有更高并发需求,可以将您的需求反馈给我们的技术支持人员,技术支持人员将通过动态扩展压测集群来满足您的需求。
2、测试脚本如何选择请求类型?
目前,压测宝支持的请求类型包括GET、POST、PUT、DELETE、HEAD和OPTIONS。其中,GET和POST是HTTP协议中最常用的两个方法。
GET:请求服务器发送某个资源
POST:将客户端数据发送到一个服务器网关程序
PUT:将来自客户端的数据存储到服务器资源中去
DELETE:请服务器删除请求URL所指定的资源
HEAD:请求服务器发送某个资源但服务器在响应中只返回HTTP首部
OPTIONS:请求Web服务器告知其支持的各种功能
GET请求一般用于从指定的资源请求数据,查询串(query string)是在GET请求的URL中发送的;POST请求一般用于向指定的资源提交要被处理的数据。两者的区别可以参考以下列表。
GET | POST | |
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 | 可收藏为书签 | 不可收藏为书签 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded或 multipart/form-data。为二进制数据使用多重编码。 |
历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 有限制。当发送数据时,GET方法向URL添加数据;URL的长度是受限制的(最大长度是2048个字符)。 | 无限制。 |
对数据类型的限制 | 只允许ASCII 字符。 | 没有限制,也允许二进制数据。 |
安全性 | 与 POST 相比,GET 的安全性较差,因为所发送的数据是URL的一部分。 在发送密码或其他敏感信息时绝不要使用GET! | POST比GET更安全,因为参数不会被保存在浏览器历史或Web服务器日志中。 |
可见性 | 数据在URL中对所有人都是可见的。 | 数据不会显示在URL中。 |
压测时到底应该使用GET还是POST,取决于服务端的处理方式,有些服务器对于表单处理同时支持GET和POST类型的提交,有些可能只支持其中的一种方式,所以您需要根据自己服务器的处理机制来选择到底是使用GET还是POST。
3、压测宝支持哪些协议?
目前压测宝只支持HTTP和HTTPs协议,暂时不支持其他协议。后续我们会考虑支持更多的协议,例如TCP/UDP等。
4、为什么变量名一定要以$打头?
这是压测宝目前的变量定义规则,也是很多产品通用的做法。
5、目标URL能使用初始化变量吗?表单参数呢?
目标URL暂不支持使用初始化变量。现在支持参数化的有:URL参数、HTTP头、Basic Auth认证、form参数、x-www-form-urlencoded参数。URL和其他类型的参数都不支持。
6、添加请求时,链接只能逐个手动添加吗?
不是的,除手动添加外,目前我们还支持Postman脚本导入和Jmeter脚本导入功能。后续会增加脚本录制功能。
7、初始化变量怎么用?
目前,定义变量后可以在以下三种情况中下使用:
提取变量值时使用,可以将提取到的值赋给初始化变量,供后续请求使用。
需要为测试脚本关联测试数据时使用,作为测试数据文件中的同名变量。
作为默认值,在既没有提取变量又没有测试数据的情况下,可以使用初始化变量的默认值。
8、压测宝如何管理Cookie的?
压测宝暂时使用变量提取的方式管理Cookie,后续会通过Cookie管理器管理。
9、目标URL支持IP访问吗?
支持IP访问,但如果是内网IP,您还需要执行以下操作:
将您要测试的服务器开放到公网访问,也就是说将它配置成您在家里就能访问的地址,这样我们的压测点就能正常访问您的地址了。
10、测试任务的准备时间是恒定的吗?为什么至少30分钟后才执行?
不是,您可以手动修改测试任务的开始时间。但是目前只支持最快30分钟后执行测试任务,而不是随时执行。因为需要在这段时间内准备压测资源,启动机器。
后续会上线尽快开始执行测试任务的功能,这样就不存在30分钟的限制了。
11、发一次请求,在响应头中获取2个参数值并分别赋给2个变量,支持吗?
支持。
12、为什么两个时间点的事务数都不一样?事务数是怎么计算的?
统计每分钟事务数时,即使两分钟的当前用户数相同,但受服务器性能以及网络的影响,事务数还是会有差别的。可以参考两分钟的事务响应时间变化来观察。
13、默认多少秒算作请求超时,是否可以设置?能看详细的错误信息吗?
单个请求超过30s,压测宝会认为是请求超时,暂不支持设置,后续会增加该功能。
不能查看详细的错误信息,目前只支持查看错误状态码。
14、压测宝中自定义的错误类型有哪些?
除了常见的400、502等常见的HTTP错误类型,压测宝还自定义了部分错误类型,包括:
600:connection连接异常
601:Socket异常
603:其他错误
604:响应解析错误
700:超过最大打开文件数限制
701:所有的Socket都被占用
15、601 Socket异常是发起请求方的问题,还是服务方的问题呢?
服务方和发起方都有可能产生Socket异常。目前,我们配置发起方的单机并发量不大,服务方的可能性更大。
16、如何设置压力曲线?
在进行压测时一般会按照梯度施压即不断增压的方式来设置压力曲线,以此观察系统在不同压力下的性能。设置坡度后,最好在坡度的最高点平行一段时间,即坡度模式与平行模式交替。
不建议在没有预估的情况下,一次加压大量用户,这样会导致系统失败率高响应时间长,最终得到的测试结果也没有太大意义。
17、压测宝中的VUH是怎么计算的?
VUH是压测基本计费单位,指每小时虚拟用户数。
VUH = VU(并发用户数峰值)*1H(按小时粒度,不满1小时按1小时计算)
总消耗VUH = 测试任务每小时VUH之和
例如,设置如下图所示的压力曲线:
VUH的计算方法如下:
第一个小时段 VUH:1800*1 = 1800
第二个小时段 VUH:3200*1 = 3200
第三个小时段 VUH:4500*1 = 4500(实际为0.8小时,不满1小时按1小时计算)
总消耗VUH =1800+3200+4500 = 9000
18、如何从返回数据里面提取token值并存入变量?
首先,需要自定义一个初始化变量(例如变量a),用来存储token值。然后在“变量”中提取变量值,将token值赋给变量a即可。
这样就可以在后续请求中使用该token值进行测试了。
19、怎么模拟真实用户访问?
基于开发提供的API请求来模拟一个用户操作的流程即可。
20、怎么测试“用户登录→浏览网站→下订单”的整个流程?
这个是典型的业务场景,首先您需要了解业务对应的后端API请求,然后在压测宝的测试脚本创建页面按照业务顺序配置每个步骤的请求,如果请求之间有数据传递,还需要设置变量。
如果需要登录的话,要提前准备一些测试数据,因为登录需要用户名和密码。需要传递参数时,还要设置对应的URL参数。
21、测试脚本中的变量是必须填写的吗?
不是必须填写,如果没有就不用填写。
22、测试过程中如果想停止,从发出停止请求到结束要多长时间?
需要等到当前正在执行的事务执行完毕。也就是说,如果脚本有三个请求,每次事务会执行三个请求,那么已经开始的事务,会把三个请求执行完,此时任务才会真正结束,不再有新的请求。准确时间取决于事务中尚在执行的剩余请求量。
23、设置测试脚本时不进行域名验证,被别人利用怎么办?
压测宝只允许用户以本公司应用的性能测试为目的进行使用,任何出于其它目的,利用压测宝对第三方应用施压而导致对方应用宕机或产生业务损失的,云智慧保留进一步追责的权利。