接口测试流程与性能调优

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机,网络,服务器资源都没问题,最终的可能,就是代码问题


把线程池从10~50,改成100~200后,响应时间缩短一半,在高并发的时候


1.做第一次压测 要保存报告
2.做性能调优(肯定是出了问题,才做调优) 比以前的报告的数据要好,服务器资源没有问题,在合理范围,就可以了
3.并发数,看你们公司业务使用情况,一般一个单个接口做80-100个并发足够了 响应时间快的0.几秒就返回,慢一点的是1.几秒


服务器都有两台的,注意:上面所述的硬件资源使用情况都需要看两台服务器的
APP服务器,数据库服务器
APP要调用数据库服务器,app要调用,数据库服务器肯定提供了通道,这个通道就叫做连接池
查看连接池mysql sql语句:
SELECT ds.session_id, 
ds.status, 
Db_name(dr.database_id) AS database_name, 
ds.login_name, 
ds.login_time, 
ds.host_name, 
dc.client_net_address, 
dc.client_tcp_port, 
ds.program_name, 
dr.cpu_time, 
dr.reads, 
dr.writes, 
dc.num_reads, 
dc.num_writes, 
ds.client_interface_name, 
ds.last_request_start_time, 
ds.last_request_end_time, 
dc.connect_time, 
dc.net_transport, 
dc.net_packet_size, 
dr.start_time, 
dr.status, 
dr.command, 
dr.blocking_session_id, 
dr.wait_type, 
dr.wait_time, 
dr.last_wait_type, 
dr.wait_resource, 
dr.open_transaction_count, 
dr.percent_complete, 
dr.granted_query_memory 
FROM Sys.dm_exec_requests dr WITH(nolock) 
RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock) 
ON dr.session_id = ds.session_id 
RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock) 
ON ds.session_id = dc.session_id 
WHERE ds.session_id > 50 
ORDER BY ds.program_name 
----用户连接数 
SELECT login_name, 
Count(0) user_count 
FROM Sys.dm_exec_requests dr WITH(nolock) 
RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock) 
ON dr.session_id = ds.session_id 
RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock) 
ON ds.session_id = dc.session_id 
WHERE ds.session_id > 50 
GROUP BY login_name 
ORDER BY user_count DESC

你可能感兴趣的:(深圳市程序猿教育科技有限公司)