接口性能测试面试常见问题
1、性能测试时,为什么要对数据做参数化?
参考答案:
1)业务限制唯一性:
- 比如注册账号功能,通常相同用户名的不允许重复注册,如需要验证正常注册用户的性能,模拟真实场景,就需要对用户名进行参数化;
- 再比如登录功能,某些场景下,会要求用户同一时期只能在一处登录,即用户用账号A在Android设备登录App后,再在其他设备用账号A登录,将提示:“A用户已在其他设备登录”等信息,此时也需要对用户名进行参数化。
2)业务数据缓存:
我们知道,应用服务器(如JVM)、数据库服务器(如MySQL)都会有缓存机制,有时候还会增加Redis等内存数据库作为数据缓存,以用户下订单流程为例,下单前先从Redis缓存查询商品信息,如果存在相应的商品信息,就不会去访问MySQL数据库,如果Redis中查询不到相应的商品信息,才会访问MySQL数据库,如果压测时,商品不做参数化,那始终查询的是同一个商品信息,Redis缓存100%命中,就不会对MySQL有任何压力,无法验证系统是否存在性能瓶颈,另外,做参数化需要结合实际业务,计算实际需要参数化的数据量,参数过多,对系统的压力就会大,参数过少,不符合真实场景中的数据量,则无法测试出系统真实的性能。
2、参数化的数据怎么来?
参考答案:
1)重用性
参数化的数据根据是否可重用,可分为三类:
- 可重用:无限制,线程间可重复使用
- 部分可重用:线程内可重复使用,线程间不可重用
- 不可重用:线程间不可重用,每次迭代也不可重用
2)参数化数据来源
有了上述的分类以后,重点针对部分可重用和不可重用的数据进行参数化,参数化数据的来源可分为如下两类:
- 数据库中已存在的数据:用户输入的数据在数据库中已经存在,如登录,登录的用户是已经存在于数据库中的,这类数据需要查询数据库,然后再参数化到工具中。
- 数据库中不存在的数据:用户输入的数据在数据库中不存在,如发帖或修改帖子,这个数据会Insert或Update到数据库表中,这类数据需要通过压力工具做参数化,如“固定名称前缀+随机值”的方式生成等。
3、tps压不上去,可能有哪些方面原因?
参考答案:
1)硬件资源
- 应用服务器、数据库服务器、缓存服务器等的CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)等占用率较高,服务器处理能力饱和,将导致部分请求无法响应
- 还有网络带宽,也是比较容易忽略的一个因素,因为机房服务器之间的网络至少是千兆光纤连接,一般不会存在网络传输瓶颈,但如果应用存在跨机房调用,或压测机与被测应用不在同一机房,就可能达到网络节点的传输瓶颈
实际业务场景中,因为硬件资源本身导致的tps出现瓶颈的例子相对占比较低,通常情况都是,服务器CPU、内存、网络带宽、磁盘I/O等硬件资源利用率都远低于80%的资源利用率警戒线,
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
测试岗高薪必备-接口测试之代码实例21讲 文章被收录于专栏
<p> 本专刊共五章 21 篇正文及 5 个对应的 GitHub 项目,主要介绍了接口测试基础知识及测试用例设计方法,认证鉴权、加密验签,自动化测试,安全性测试,性能测试等内容,每一章节都有代码实例来剖析其原理,并提供了一个完整电商系统的代码,可以直接实操演练,让你知其然知其所以然,轻松搞定接口测试。加入专刊,你就加入了一大群志同道合的优质测试人圈子,同时还有和作者及作者的朋友们互动交流的机会。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>

