性能测试工具 性能测试过程中如何来体现数据有效性

路闲 · 2022年05月18日 · 最后由 SagacitySea 回复于 2022年05月27日 · 6581 次阅读

甲方需要提供数据有效性指标;在性能测试过程只是进行来接口断言,并没去验数据库中的数据有效性;
如果通过数据库断言,这个不会加大数据库的资源消耗,从而影响到整个性能测试结果吗;
有什么参考借鉴的吗

共收到 5 条回复 时间 点赞

没太明白,这里的数据有效性指的是测试出来的性能结果有效性(背后涉及设计出来的性能测试模型是否和实际场景一致、测试环境模拟度是否足够等),还是啥的有效性?你说的这个数据库断言,我理解是功能的正确性(即服务端返回成功的话,数据库确定是写入成功的,不会是假的成功),不像是有效性。

如果做数据库断言,理论上是会增大数据库的读压力的,但会影响多大这个不好评估,得看实际情况,比如这个查询复不复杂,是否命中索引、查询频率有多高等。

应该要明确一下,你表达的 “接口断言” 和 “数据库断言” 在这个上下文里具体是指什么?

我自己理解,帖主问的问题是:性能测试过程中每个请求是否需要看落库结果,来确保性能测试的逻辑正确性。

我的理解是:

  1. 性能测试可以做结果断言,但不需要在测试过程中做,而是在性能测试结束后统一做断言。举个例子,电商抢购性能测试,最后通过日志和数据等对账完成断言,判断没有不符预期的情况,没必要在发生抢购的过程你还要浪费性能去做额外的事情。
  2. 性能测试断言结果其实是次要的,因为性能和功能相对独立,很多时候只要功能测试是正常的,性能理论上就不出现逻辑问题(不过极端场景下,尤其是系统有复杂的上下游依赖,这个时候确实会出现功能不正确的表现)。所以一般来说功能测试通过了,性能测试基本都不关注 “结果是否正确”,因为功能测试已经给了结论。不过甲方爸爸要求给,那还是得给……
3楼 已删除

性能测试断言结果其实是次要的,因为性能和功能相对独立,很多时候只要功能测试是正常的,性能理论上就不出现逻辑问题。所以一般来说功能测试通过了,性能测试基本都不关注 “结果是否正确”,因为功能测试已经给了结论。

同意楼上。

1、做性能测试过程中,要判断数据有效性,需要做两点:
1)如果接口失败返回的响应码与正常的响应码不一样,那么只要判断响应码是否与当时录制的一样即可。
2)如果接口失败返回的响响码与正常的一样,那么可以判断响应长度( 这种方式节省资源)
或判断内容(这种方式就比较消耗资源),sql 返查询等

其实你没理解提问者的意思。比如脚本中有一个事务,想测试系统允许最大:事务成功数/秒,也就是事务无异常的情况,每秒平均可以处理多少个(最大值,平均值,最小值)。这指标就是系统的事务处理能力。事务中是包含很多的请求,这些请求全部处理成功,那么这个事务就是成功的。问题来了,如判断事务中的请求都是成功的呢?对于大部分的性能测试功工具,你需要对事务中的每个请求增加检查点(也叫断言),否则性能工具无法判断这个请求是成功还是失败。LR 和 Jmeter 需要手工加内容判断的断言。奇林性能测试工具(kylinPET),响应码可以自动判断(如果事务中的请求失败时返回与录制的响应码不一样),这种情况下就不需要增加检查点,工具本身可以自动判断,否则根据需要可以增加:长度检测查、SQL 内容检测查、或响应内容检查等,这些根据你的需要增加。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册