1)确认用户的登录状态,用户的登录态是否会不断变化
2)用户登录后的访问路径之间的上下文关系
3)访问路径之间的参数传递关系
2、测试人员编写测试用例
编写测试用例就是将上述模拟场景具体化的过程,包括确认压测的人数,人数递增逻辑,具体需要压的接口,接口之间的参数传递等。
3、启动机器人进行测试,渐进增加机器人数量
在确认了测试方案后,这一步就是执行的过程,根据测试方案中预估的压力人数,渐进的增加压力的人数。
4、记录分析数据及事务处理情况,查看服务器负载的变化以及服务器的当前承载能力。
上一步提到了要渐进增加机器人,那么为什么要渐进增加机器人?因为在服务器并发增加的过程中需要不断监控上文服务器的核心数据,不断挑战服务器处理能力的极限,避免上来就使用一个过高的并发数直接超过了服务器处理能力的极限,从而无法起到性能优化的目的。一般来说,在机器人增加的过程中,CPU的突然跑满以及响应时间瞬间变长,都可能是服务器产生了瓶颈。因此压测人员需要实时监控压测上升过程中的服务器情况变化,从而定位问题所在。
5、调整配置,迭代测试,预估服务器的承载能力以及可能存在的性能瓶颈
在发现基本的测试问题后,测试人员需要通过不断的调试来定位问题,然后重新发起压测,直到实现最终的测试目的。
根据这个测试流程,腾讯内部也总结了一些压测产品所需要具备的特点。
1、简单易上手
产品的业务场景是多变的,但是好的压测产品应该让这个场景配置过程变得简单易用,用户在简单输入需要压测的URL即可进行各个接口的测试,大部分测试配置建议提供一个默认值,用户对功能更加了解之后可以自由配置这些参数。
2、进阶功能完善
除了简单易用之外,也要给用户提供一些进阶的功能,在简单输入URL的基础上,可以支持用户自定义变量,从文件读取变量,甚至从其他URL的返回值获取变量的值,可以比较真实模拟真实场景,避免请求变量单一。
3、提供分布式压力机进行压测
由于单机的局限性,压测产品可以使用分布式压测的框架,根据用户配置的机器人数量动态分配多个压测机,极大提升压力上限。
4、详细的测试数据统计
压测大师会记录测试过程中的多项数据,包括在线人数变化、TPS变化、响应时间、收发包流量、服务器CPU内存状态、压力机硬件负载、测试结果统计等,可以快速定位服务器的容量以及瓶颈。
基于这些需求,腾讯WeTest团队开发了专注服务器压测的产品“压测大师”,简化了压测配置过程,用户可以在线上部署,线上调试,线上查看报告,帮助用户成为最高效的“压测大师”。
测试案例:真实模拟《NOW直播》活动场景
腾讯NOW直播是腾讯目前发展非常迅速的直播应用,在其一场线上活动中,需要对活动的所有接口进行压力测试,提前暴露问题并解决,确保活动的顺利实施。为此,NOW直播团队选择使用“压测大师”,对活动进行了一整套场景测试。
“压测大师”包含“页面测试”,“URL测试”和“高级模式”三块功能。
“页面测试”适用于HTTP、HTTPS协议,可对Web,H5等页面进行压力测试,主要测试页面静态资源的压力数据,帮助提升官网推广大型运营活动时网站的稳定性;
在“URL测试”中,用户可以设置用户并发增长形式,不同URL的上下文参数配置以及服务器监控,实现最多同时16个用户场景,实现更多的场景配置;
而“高级模式”适用于HTTPS及其他协议,包括自定义协议等。支持对游戏,产品协议进行压力测试,用户通过代码配置,可以根据自身需求开启协议压测。
在测试过程中,NOW直播团队首先梳理了测试思路,一方面通过单接口压测,提前暴露核心模块的问题;另一方面通过多接口的场景设置,尽量模拟真实用户行为,使得压测结果更有说服力。
在测试过程中,《NOW直播》利用”压测大师“的URL测试功能,针对“发消息”“点赞”“拉取公告”“注册”“读取房间信息”“进入房间”等各个独立行为进行单接口压测,通过设置压测起始人数,每阶段增长人数以及最大人数(见下图),设计接口的压力情况。
“压测大师”URL测试中的“人数设置”
另外对于用户不同的访问行为,《NOW直播》对“注册-房间信息-进房”进行了多场景的压测(见下图),通过GET请求,读取一个用户的“登录态”,通过功能接口随机产生不同行为逻辑的机器人,模拟真实的QQ用户;然后通过POST请求依次执行具体的业务行为,最后通过URL测试中的“上下文配置”,选择调用不同的功能接口,从而发现功能之间产生的逻辑问题。
“压测大师”URL测试中的“上下文设置”
经过几天紧张的测试,NOW直播活动的各个场景数据都得到了大大的提升,其中“用户进入房间”场景的响应时间减少了近一半;“用户发送消息”与“点赞”场景的TPS提升四倍,为活动的稳定开展提供了坚实的保障。
无论是游戏还是产品,腾讯经历过无数次服务器的考验,面对这些考验,腾讯也渐渐总结出了一套通用的应用性能管理解决方案,让用户能够在游戏上线之前基于真实业务场景和用户行为进行压力测试,发现服务器端的性能瓶颈,并进行针对性的性能调优。以上内容也是根据腾讯产品无数次的压测总结下来的一些经验,腾讯WeTest团队也希望通过“压测大师“这类产品,不断简化服务器压测的过程,提升压测人员的工作效率。
源自公众号 游戏测试风云录