一.基础信息
系统名称:核心系统、ESB、手机银行、某中台等;
系统类型:新建,迭代优化,重构等;
测试目的:进行性能测试的目的:容量规划,性能验证或其它原因;
测试范围:单系统全链路系统,单系统是否涉及外呼等;
测试计划:编写此次性能测试的计划,即不同阶段达成以什么为结束标志,比如测试方案,环境准备,测试实施等,以及人员与机器等资源分配;
影响因素:要实施此次性能测试,有哪些潜在的问题,影响因素;
系统架构图/网络拓扑图:通过系统架构图/网络拓扑图,可以了解到系统的结构,数据流、交易路径等;
部署方式/部署层级:集群,分布式,微服务/web,ap,db层等;
性能测试环境:性能,UAT,SIT不同环境对测试结果的影响不同;
被测系统环境的软硬件配置:比如服务器是几核几G,有多少台;数据库是几核几G,有多少台,比如8C32G12台等;
关键参数:线程池,最大连接数,消费者数量,内存分配等;
网络:负载机和被测系统的网段,防火墙策略,带宽,CDN等,除了进行线上性能测试,单独的性能测试环境应在局域网进行;
业务模型:比如账务类业务,支付类业务,批量审核或提交,秒杀库存业务,查询业务等;
业务场景:什么时间什么用户做什么操作;
协议/接口:http,socket,tuxedo...;
连接方式:长连接,短连接;
通信策略:同步,异步;
变更策略:参数的加解密,拼接,动态变化,依赖关系等;
压力发起策略:性能测试工具选型以及发压策略;
测试环境:性能测试环境是否和生产环境保持一致的配置?如不能,如何解决或等比例换算?
操作系统:操作系统的版本,内存空间等;
软硬件版本:尽可能保证和生产环境一致的版本;
中间件:比如JVM的内存分配/GC算法,tomcat连接数/超时时间,MQ的消费者数量等;
数据库:哪种数据库(mysql、oracle、tidb、mongdb、hbase等),数据库参数(sga、连接数等);
应用程序:启动参数(-Xms、-Xmx、最大连接数等)。
二.性能指标
用户数:包括注册用户数,在线用户数,并发用户数等;
Tps:每秒事务数,包括服务端和数据库;
响应时间:包括平均响应时间,最大响应时间,最小响应时间等;
吞吐量:吞吐量在一定程度上可以用来衡量系统的容量;
交易量:日/月/某个时段内的交易量,可更好地衡量系统的容量和存在的压力;
交易成功率:即事务成功率,请求成功率,根据具体需求设定阈值,一般要求99.99%,甚至更细的粒度;
资源使用率:包括CPU%,MEM%,I/O读写速率等;
内存回收:是否能够正常回收内存;
波动率:通常建议不超过5%。
三.测试数据
限制条件:用户操作权限,数据引用次数,数据过期设定(次数,绝对时间);
数据量:摸查生产环境的数据量级,性能测试环境应保持同一量级,除了铺底数据还有测试脚本的参数化数据量;
数据类型:基础数据,测试数据,特殊数据;
数据特点:是否可以复用,是否具有唯一性,自增,加密,拼接,转义等;
准备方式:Copy真实环境数据,预埋铺底数据,脚本脱敏生成数据;
隔离方案:如何避免测试数据的污染?如何清理?建立影子库与影子表?环境隔离?如何标记区分?
四.测试模型
交易占比:确定典型交易和配置比例,完成业务模型分析;
选取思路:根据不同的常见选取交易量最高的时段,每种交易进行单独的数据统计;
场景选择:根据不同的场景(如高峰运营日、普通运营日、秒杀场景等)选择时段内的交易比例统计;
交易配比:单交易统计后,基于混合各交易的RT,结合并发用户数与平均响应时间,使总交易数符合测试模型中各交易的占比数;
思考时间:根据各交易类型和具体场景,选择思考时间是统一设定/随机设定/按实际场景设定。
更多内容请去公众号“测试小号等闲之辈”获取~
五.监控搭建
搭建监控:针对不同操作系统、中间件、数据库部署相应的监控,监控可以在开源工具、商业化工具以及Shell 脚本进行选择。
六.挡板配置
配置挡板:对于单系统涉及的外呼交易,通常需要设置挡板,可搭建独立的挡板系统,也可直接在代码中改造。