PTS支持哪些压测模型?
PTS目前支持并发模式、TPS模式、摸高模式、浪涌模式、震荡模式和梯度6种压测模型,您创建场景-施压配置页面选择您想使用的压测模型。
支持哪些方式引用参数,如何引用?
支持通过响应提取、参数文件、系统变量和系统函数4种方式引用参数,您可在压测的url、header和body中输入$,在弹出的对话框中选择相应参数。
如何把前一个API的输出作后一个API的输入?
您可以通过响应提取把前一个API的输出提取出来,赋值给一个变量,然后将变量作为后一个API的输入参数,具体使用请参见“响应提取”。
参数文件大小限制是多少?
默认参数文件列数最多为20列,单个参数文件大小为100MB,所有参数文件大小最大为2GB。
如何使用参数化模拟多用户注册或登录?
若您在压测时需要模拟多用户注册的场景,可以通过在压测场景中导入包含用户名和密码的参数文件,构造压测API时关联导入的参数来实现。
为什么文件参数上传会失败?
可能是文件格式不对,文件要求是.csv格式的,建议先下载好模板,在模板上添加内容。保存时要求是UTF-8格式的,可以在windows系统上用记事本打开-另存为-选择utf-8保存。
如何给域名配置host?
您可以通过以下2种方法实现:
方法一:PTS支持域名绑定,您可以指定某个域名对应的IP地址,压测时压测流量将直接访问绑定的IP地址,实现对目标服务的压测。详情请见“域名绑定”。
方法二:在压测url直接配置IP地址,并在header定义中添加Host头,header的值设置为域名。
并发模式,服务端收到的请求为什么会大于最大并发量?
并发量VU为虚拟用户数,一个用户每秒能发几个请求取决于服务端的响应时间,如果服务端的响应时间小于1秒,则发起总请求会大于最大并发数。
是否支持从其他工具导入压测配置?
当前可支持Postman脚本导入和使用Chrome浏览器录制的脚步导入,脚本导入后PTS将自动读取脚本中的url及请求信息并生成场景。Postman脚本导入请参见“导入场景”,Chrome浏览器录制请参见“流量录制”。
PTS是否可以压测微信小程序?
PTS支持压测微信小程序。PTS支持HTTP/HTTPS协议的压测,无论客户端是自研的App、移动端网页、PC端网页、微信小程序,还是C/S结构的软件,只要协议是HTTP/HTTPS,PTS就能支持压测。
是否支持设置定时开始压测?
创建场景并保存后,在场景列表中选择“更多-定时启动”,即可设置开始压测的时间点,到开始时间后平台会自动发起压测。
正在压测如何查看压测指标?
启动压测后,在场景列表中点击状态列的“压测中”进入实时压测报告页面,在界面中可查看实时压测的指标。
如何保护被压端服务,防止被压端服务异常影响业务可用性?
当被压端服务异常时,通过实时测试报表,您可以看到请求 RT 变高,甚至出现请求失败。
为了防止服务异常,您可以在测试场景中,设置被压服务 SLA(服务可用性指标),例如:限制响应时间<100ms,成功率>9.99%。当压测指标触发被压服务 SLA 水位线时,自动停止压测任务。
SLA支持哪些规则和通知机制呢?
PTS的SLA支持的规则包括:响应时间、成功率和TPS,并支持三种级别的敏感度配置。触发SLA规则后可支持立即停止压测,目前暂未支持通知机制。
测试报告会在控制台保存多久?
默认保留30天,30天后将自动清理过期数据。在过期前,用户可下载测试报告,在本地进行保存。
哪些资源会占用PTS的存储空间?
PTS的测试报告文件(包含离线报告文件和tcp抓包文件)、参数文件和form-data文件都会占用用户的存储空间额度,默认每个用户总存储空间为5GB,如果存储空间被占满,则需要适当删除一些资源才能继续压测。
请求成功率和业务成功率有什么区别?
请求成功率是请求发送并成功返回http状态码的数量除以总请求数,业务成功率是断言结果为成功的数量除以总请求数。
为什么服务端是正常的,但压测过程中还是有很多超时失败呢?
当并发数逐渐增加,请求量增大时,服务器的响应处理速度会越来越慢,当请求响应时长大于配置的超时时间时,请求会主动断开,并认定为请求超时。超时时间的配置请参见“基本请求信息”。
多个接口应该放在同一个任务还是不同任务压测?
在同一任务下可添加多个压测请求,同任务下的请求是按顺序串行执行的,前一个请求的输出可以作为后一个请求的输入(具体可参见“响应提取”);而不同任务间的压测请求是相对独立的,不是按顺序执行的,故暂不可相互传递参数,但不同任务可通过并发权重比例来控制每个任务的最大并发量,从而达到控制各个请求的最大并发量,而同任务下的请求可发起最大并发量是相同的。
什么是99、95、90、75和50分位RT(ms)?
xx分位RT(ms)是指在一段时间内,网络请求的平均延迟中,超过xx%的数据点所处的延迟值。它反映了网络延迟的分布情况,可以用来衡量网络性能的稳定性和可靠性。
在实际应用中,可以通过对请求延迟数据进行排序,然后找到xx%的数据点所处的位置,得到xx分位 RT(ms)值,这个值可以用来衡量网络性能的稳定性和可靠性,以便更好地进行性能优化和故障排除。
参数替换的时候,是否会自动识别参数值的类型是字符串还是整型?
系统不会自动识别替换的参数值到底是字符串类型还是数字整型,参数替换只是进行文本的替换,比如上图中name的值为1,替换后为{“Name”: “1”};如果替换前是{"Name": ${name}},那么替换后为{"Name": 1}。
body定义中的Content-Type中,什么是x-www-form-urlencoded?
答:x-www-form-urlencoded是一种编码方式,用于将表单数据编码为URL格式,以便在HTTP请求中传递数据。
在HTTP请求中,如果需要传递表单数据,通常使用POST方法,并将数据编码为x-www-form-urlencoded格式。这种编码方式将表单数据中的每个字段名称和值用=和&符号连接起来,形成一个字符串。例如,假设有一个表单数据如下:
name=John&age=30&email=john@example.com
使用x-www-form-urlencoded编码后,这个表单数据将被编码为:
name=John&age=30&email=john%40example.com
在HTTP响应中,如果服务器需要解析这个编码的字符串,可以使用相同的方式将其解码成表单数据。
x-www-form-urlencoded是一种广泛使用的编码方式,适用于HTTP请求中的表单数据传递。
如何判断压测中的接口业务是否正常,以及统计异常数?
如果您的接口可以依据返回值判断业务是否正常,可以使用检查点功能来判断本次请求是否正常。检查点功能支持检查响应body、响应header、响应状态码和变量,在业务配置了检查点之后,在压测中页面以及压测报告页面可以查看业务的成功率和异常数。具体使用请参见“检查点(断言)”。
为什么在API的Header定义页,不能编辑Content-Type的值?
Header定义页中的Content-Type的值由Body定义页决定,不能直接在Header定义页编辑,您可以在Body定义页中选择PTS支持的Content-Type类型或者自定义输入。具体使用请参见“Body配置”。
压测报告详情有错误信息,为什么在采样日志中没看到对应的错误日志?
日志采样是按照设置的采样率来采集的,如果您设置采样率不是100%,并且该类错误占比较小的话,可能会没有采集到对应的日志,所以在采样日志列表中看不到。
压测报告中的发送和接收的流量是如何统计的?
PTS中的发送流量、接收流量的具体的计算方式如下:
发送流量:发送的实际的HTTP请求体大小。
接收流量:HTTP响应头字节数+Content-Length(没有该值则计算响应的Body的实际字节数)。
基于上述发送和接收流量的计算方式,那么PTS压测报告中统计的每秒发送和接收的流量值的计算逻辑如下:
PTS统计的每秒发送流量值为多台施压机压测过程中每秒发送流量之和。
PTS统计的每秒接收流量值为多台施压机压测过程中每秒接收流量之和。
为什么调试和压测时Body中JSON的格式和设置的不同(如空格、回车)?
通常在请求体编辑的时候,为了可读性会将JSON进行适当地换行、缩进,如下图所示。
而PTS实际在处理请求构建时会去除键和值以外的空白、换行字符。调试的请求详情展示的是实际请求的报文内容。
状态码9xx是什么错误?
9xx是PTS自定义的错误码,主要是压测端与被压测服务间网络原因导致的错误,具体如下:
RequestParseErr = 900 //解析错误(请求成功,但包解析失败)
RequestErrOther = 901 //其他错误(除了以下情况的请求失败)
RequestErrConnectionRefused = 903 //连接拒绝 (如服务端的服务没起来)
RequestErrNoSuchHost = 904 //no such host(如无效IP或域名)
RequestErrEOF = 906 //EOF错误
RequestConnectReset = 907 //connection reset by peer 错误
RequestErrTimeout = 920 //超时(包含所有阶段的超时)
RequestErrDnsTimeout = 921 //dns解析超时
RequestErrTcpConnectionTimeout = 922 //tcp连接超时
RequestErrTlsHandshakeTimeout = 923 //tls握手超时
RequestErrGetConnectionTimeout = 924 //建立连接超时
RequestErrWroteHeadersTimeout = 925 //发送包头超时
RequestErrWroteRequestTimeout = 926 //发送body超时
RequestErrGotFirstRespByteTimeout = 927 //接收第一个响应数据超时
RequestErrContentTransferTimeout = 928 //接收响应数据超时