性能测试】接口性能测试怎么做

2021-03-04 18:01发布

4条回答
水默
2楼 · 2021-03-05 15:34

对于接口测试,首先测试人员要懂代码,你只需要知道接口的作用是什么就可以了,其次,自己去读开发的代码。

然后,根据该接口功能及代码写测试用例:根据该接口参数,构造不同的用例,测试接口在参数合法及非法情况下能否达到预期效果,根据该接口中的逻辑,测试该接口实现代码的逻辑,进行容错及健壮性测试,静态检测代码,看是否有内存泄露、或永远走不到的分支、代码规范及逻辑是否合理,对于一些接口,需要进行多线程测试。

接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统。

主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。接口测试在淘宝的应用是一个自下而上的发展过程。


靓猴一枚
3楼 · 2021-03-07 10:50

1.接口性能测试流程

1-5是性能流程

1.接到需求,先把接口功能调通 参数化(常用的参数化方法),关联(正则表达式),检查点(我们要检查哪些),看需不需要集合,如果这个接口依赖上一个接口,那么这个需要用到参数的传递,看接口

需不需要用到cookie session等,请求头等

2.设置并发数和循环次数,线程组和循环控制器都有循环次数,可以用时间来控制,报错怎么处理,并发数太多了,如果PC机性能不够好,分布式部署(负载均衡)

3.查询接口的测试,要考虑db中表的数据量,一般保证10W左右数据量,造10W数据的目的是看这个查询sql语句有没有性能问题,插入数据使用存储过程造数据

4.我们性能测试最重要的是看聚合报告,聚合报告有很多参数,我最主要的是关注平均响应时间

5.结果分析(聚合报告,图形报告),分析的是报告,要看哪些指标

6-9属于性能分析,看哪些指标,怎么分析

6.看报告的同时我们还有看服务器的硬件资源使用情况,cpu 内存,磁盘读写,网络 nmon(收集服务器的资源使用情况) 

top free (实时查看的命令,使用这个命令要边压测边看)

如果超过85%,要分析是哪一进程占用资源比较多,把进程名给开发,告诉开发占用资源(具体是哪一个资源)很高,改完之后我们要再压测一次

7.并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存都没上去(说明服务器资源很空闲,

代表我们的请求在排队,说明的的连接数太少了,(3种情况:1.db连接数,2.httpd连接数太少(apache中间件),3.你的请求没有发送到服务器,这个

原因要么是你的pc性能不行,网络带宽不够))。响应时间长,可能是db连接池过小,导致线程等待时间长。

8.并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存/磁盘读写很大,很高,性能瓶颈出现在服务器硬件问题

要看哪一个进程使用硬件资源比较大,把进程名给开发,告诉开发占用资源(具体是哪一个资源)很高,开发分析下,如果开发分析不出来了,并发数往下调

看硬件资源使用率在合理的范围之内后,我们的并发数和响应时间是多少,如果客户一定要求200并发,开发也尽力了,经过多天的技术攻克,都搞不定了

只能和老板,或者客户说加硬件资源

9.并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存都没上去,查看过了,连接数都没问题(1.db连接数,2.httpd连接数)

排除PC机,网络,服务器资源都没问题,最终的可能,就是代码问题


不吃鱼的猫
4楼 · 2021-03-16 10:33

设置并发数和循环次数,线程组和循环控制器都有循环次数,可以用时间来控制,报错怎么处理,并发数太多了,如果PC机性能不够好,分布式部署。

征戰撩四汸
5楼 · 2021-10-22 16:27

1 提出性能测试需求

性能测试需求由业务部门或者研发部门提出,包括但是不限于:

a 性能测试的范围: 服务器数量,需要测试的业务流程,

web端需要测试网页的数 量,接口的数量

b 性能测试的对象: 服务器,接口,页面加载速度,APP启动速度 等等

服务器 :提供服务器地址

接口: 文档 ,测试接口list,接口request header 和 body

页面:测试账号,URL

APP: 性能测试的测试安装包,和需要测试的APP响应范围:具体到页面

c 性能测试的达标参数:在多少并发量下,响应时间

比如:

服务器: 10万并发量/分钟,服务器的CPU和内存占用率不超过80%

接口: 10万并发量/分钟,API 最大的响应时间不超过2s

页面: 10万并发量/分钟,页面的刷新速度不过5s

APP: APP页面启动速度,不超过 2s


2 准备测试环境

性能测试环境由测试人员维护,测试环境的系统配置和生产环境等比相关

测试环境的系统由测试人员维护,根据本次测试需求,部署相关代码

测试环境检查

服务器 :测试环境服务器可访问

接口: 测试接口list中,根据接口文档中各个接口request header 和 body,能

页面:测试账号可用,URL可访问

APP:测试安装包可以安装,并且安装包的服务器是性能测试服务器,需要测试的页面均可以访问


3 测试脚本开发以及调试

API 测试

 测试工具 : JDK8 /Jmeter5.1.1 /JMeter Plugins Manager

调试并且并且开发测试

 设置变量: 

header管理:

查看结果树

4 测试报告
测试概述:测试环境配置,测试服务器信息,接口信息 ,app信息
简述 测试方法
测试用例 list
测试结果
测试结果分析
Bug List
改进意见

相关问题推荐

  • 回答 9

    在测试前,应该对测试结果有一个初步的估计。比如,性能(IO/CPU)应该是提升,还是降低,大概幅度会有多少。这样当测试结果与预估偏差极远时,很可能测试的过程或者方法是有问题的。1) 如果是已有模块,可以参考改模块历史的测试数据。看变化是否合理。2)...

  • 回答 17
    已采纳

    响应时间、并发用户数、TPS、吞吐量、CPU利用率、内存使用率、在线并发用户数等

  • 回答 20
    已采纳

    性能测试是基于功能、接口完整的情况下,对服务端进行压力测试、负载测试、疲劳测试、并发测试,来发现性能瓶颈。一、负载测试。负载测试的目的主要是为了测试软件系统是否达到需求文档设计的目标;例如一款软件在一定时期内,最大支持多少并发用户数,软件请...

  • 回答 7
    已采纳

    测试模型V模型测试阶段:单元测试集成测试系统测试瀑布模型瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了...

  • 回答 4

    一、准备工作在什么阶段开展性能测试工作?一般情况下,是在被测系统已完成功能测试、系统趋于稳定的情况下,才会进行性能测试。1. 组建测试团队根据被测系统的实际情况,组建一个性能测试团队,团队成员包括:开发人员、运维人员、DBA和测试人员等。2. 性能需...

  • 回答 2

    性能测试针对场景来讲的,在不同的场景,得出性能指标值。这些场景是真实环境有可能出现的。常见场景——压力测试,是否能长期提供服务

  • 回答 4

    上面看,运行结果没有任何提示,也不知道运行到什么程度,相当不友好,那我们来美化一下吧!等等!这是个死循环,通过脚本运行自己,所以会永远运行下去。我的天,幸好发现得早。现在 更换authTest.sh,原因是这个是要运行eaidkAuth文件的,因此需要更改,否...

  • 回答 5

    Http接口是互联网各系统之间对接的重要方式之一,使用http接口,开发和调用都很方便,也是被大量采用的方式,它可以让不同系统之间实现数据的交换和共享,但由于http接口开放在互联网上,那么我们就需要有一定的安全措施来保证不能是随随便便就可以调用;目前...

  • 回答 15

    java里最常用的是关键字,这些关键字可以说是程序中的关键,我都帮你整理出来哈关键字含义abstract表明类或者成员方法具有抽象属性assert断言,用来进行程序调试boolean基本数据类型之一,声明布尔类型的关键字break提前跳出一个块byte基本数据类型之一,字节...

  • 回答 15

    一、抽象类: (关键字abstract)java抽象类定义  在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。  抽象类除了不能实例化对...

  • 回答 14

    1、利于代码的规范这样做的目的一方面是为了给开发人员一个清晰的指示,告诉他们哪些业务需要实现;同时也能防止由于开发人员随意命名而导致的命名不清晰和代码混乱,影响开发效率。2、有利于对代码进行维护可以一开始定义一个接口,把功能菜单放在接口里,然...

  • 回答 6
    已采纳

    1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。3、接...

  • 回答 7

    第一步我们首先需要知道java中的接口指的是抽象方法的集合,一个抽象类型,一般以interface来声明,需要注意的是接口不是类第二步我们可以看一下接口声明的格式,接口中的抽象方法都是隐式的,所以声明不需要abstract关键字,接口中的变量只能是 public stati...

  • 回答 9

    1、定义接口的重要性:在Java编程,abstract class 和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才使得Java成为面向对象的编程语言。2、定义接口有利于代码的规范:对于一个大型项目而言,架构师往往会对一些主要的接口来进行定义,...

没有解决我的问题,去提问