WeTest 导读
十一月临近,一年一度的电商大戏“双十一”又将隆重出场,目前各大商家已经开始各类优惠券的发放,各类大促的商品表单也已经提前流出,即将流入各个用户的购物车中。
作为这些活动的载体,产品宣传、商品购买、交易结算、客户反馈以及售后服务都是电商产品(包括网站、APP、小程序等形式)非常重要的功能,但当双十一临近,电商产品要面对大量级用户群体涌入,流量猛增的局面,性能表现往往就成为了成功的关键。
双十一的流量挑战
在优化电商产品的性能表现前,首先要了解一下电商产品的访问逻辑,以电商网站为例:
电商网站的核心内容,包括了Web服务器、应用服务器和数据库服务器,其中前端Web服务器负责接收并处理来自用户的HTTP请求,并生成Web页面反馈给用户;中间的应用服务器负责执行其中的业务逻辑;后台数据库和文件服务器负责存储用户、产品信息及状态。
为了提升访问的性能,有的网站会在数据库服务器前部署数据缓存设备。外围部署负载均衡服务器,负责在海量用户访问与多台服务器间进行负载分担。
对于电商产品来说,当流量变高,成百上千的服务器和其他设备面对海量用户的访问,会遇到这样的场景:有的用户在不断查询商品信息,有的用户在注册会员,有的用户在修改购物车信息,有的用户在下单付款,有的用户在秒抢商品,等等。
此时若不重视承载能力,会造成严重的后果。比如国庆期间鹿晗公布恋情导致微博宕机,以及过去几年iPhone新机发布导致官网崩溃,都是由于对流量突增没有足够的承载能力导致的。
而这些现象,都给用户带来了很大的困扰,而且用户体量越大,影响的波及面就越广,不仅影响用户口碑,也影响产品收入。如果把产品的月收入平摊到每一分钟的话,大家可以通过30分钟,60分钟,乃至12小时,24小时计算具体的损失金额,还要加上因此产生的用户流失以及品牌口碑影响。
所以,如何在“双十一”这样火热的节点保证用户顺畅访问网站,成了一个重大的挑战。
电商产品的压测方案
那么,怎么样才能让电商网站在面对活动流量高峰的时候能够提供正常服务呢?容量规划,压力测试以及压测环境的配置是电商网站必须要经历的考验。
尤其是压力测试,是整个电商网站活动前的实战演习,能够提前预知网站性能表现的瓶颈与故障点。
一、预估流量情况
电商网站背后的系统通常分为两部分,一部分是导购,主要的作用是为用户推荐各式各样的商品,提供搜索服务,给用户挑选商品带来便利;另一部分就是交易,简单来说就是电商网站下单、抢购等活动的过程。
两部分的流量形式是不同的。导购部分的流量会呈现为一个慢慢上涨的曲线,对于服务器来说,流量的压力是慢慢增加的;而交易部分的流量,却是陡然上升的,特别是在某个抢购活动中,压力会瞬间增长到一个高峰,没有给人和机器任何的反应和决策时间,这也是电商产品承载能力要求比其他的产品高的重要原因之一。
但是这个高峰会是多少?很多人在事前并不知道,如果要模拟真实的压力场景,不同的压力造成的测试成本都不同,定高了,成本高,定低了,没效果,因此要想让压力测试既能满足足够的流量压力,又把测试的成本压缩到最小,活动筹备之前对于流量的预估非常重要。
阿里巴巴在双十一活动前通常也会进行压力的预估,将其叫做”容量规划“。活动流量会有多少?峰值会到多少?电商网站的开发人员需要心里有数。
二、场景化压测
在实际电商活动开始后,用户会从四面八方涌入产品,如何去模拟用户的真实行为,形成一个最接近真实的压测场景是电商产品压测第二件需要做的事情。
电商产品通常有很多接口,用户在访问过程中可能接触其中的某几个接口,一种压测的方式就是针对这所有的接口进行统一的压测,增加相同的压力,算出一个系统的容量,然后再根据这个系统的容量情况扩展到一个个集群。
这种方法有一个缺陷,就是如果这个系统某个接口出现了问题,整个集群都会崩溃。
而场景化压测可以避免这类问题。在实际的压测场景中,流量很大一部分都会被分流,由于每个用户的购物流程都不一样,因此对于电商网站上的接口受到的压力都会不同,可以实现用最少的服务器支撑最大的流量。
那么,一般电商购物会有哪些场景呢?以下举三个例子。
场景一:登录注册,访问个人中心
用户在进入电商产品后,会有查看自己订单情况的需求,因此,“登录“”注册“以及”个人中心“会成为流量较高的接口。
场景二:商品遍历
“商品遍历“指的是用户在下单购买前,对不同的商品页进行访问的过程,而此时用户已经进入了登录状态,会带着登录态对不同的页面进行访问,此时不同的商品页面接口会承受比较大的压力。
场景三:购买下单
这可能是电商网站并发压力最高的一个接口,购买按钮,购物车页面以及付费接口都会面临很大的瞬时压力。
在确认完“双十一“活动中承受压力可能最高的几个场景之后,产品开发或测试人员就可以根据场景配置相应的测试用例了。
三、线上压测配置
配置测试用例,实现真实压力,通常需要一个能够真实模拟海量用户的测试工具,WeTest压测大师为电商行业提供了一个适用的测试环境,提供了”上下文变量“、”全局参数化“等功能,可以满足电商产品大部分的测试需求。
“上下文变量“实现”用户登录”、”购买下单“场景
“上下文变量“实现的是将用户登录时的用户信息传输到下一个页面中,对于电商平台来说,可以真实模拟用户登录后,点击了”购买“,进入了购买页面。以下是操作介绍:
1、进入压测大师首页,选择一个已有的项目进入,如没有项目可以新建项目
2、创建一个新的URL测试,如下图:
3、在测试设置部分,填写压力预估的最大人数
这里当配置人数大于400时,为防范非法攻击等现象,需要对被测域名进行认证,点击域名认证按照提示认证即可。
4、在“客户端请求“点击”上下文变量“,开始配置
5、 “上下文变量设置“是为了实现URL之间参数信息的传递,因此需要点击右下角的”+一个URL请求“增加一个URL,然后保证第一个URL的”变量名“与第二个URL的字段保持一致
6、“提取方式“通常选择”键值对“较多(具体使用可根据实际情况),选择想要传递信息的”header名称“,确定”提取规则“。”提取规则“中所填写的就是传递到下一个页面的信息,比如电商平台用户的会员信息。
那么”提取规则“应该填写什么呢?我们需要在URL页面中去寻找这个”键值“。
首先在chrome浏览器中输入第一个URL,点击F12,点击Network,刷新一下页面之后点击最左侧的”setcookie_prep.php“,找到对应的header“Set-Cookie“,后面order_id后的值,就是我们将要传输给下一个URL的信息。
7、完成了”上下文变量“的设置之后,在“测试模型“中的场景中选择”上下文“模式,分别输入两个URL。
8、 如果自有服务器,则可以在“服务器监控“的”添加监控“中设置服务器信息;如果没有,则可以点击”立即执行“开始测试
“全局参数化“实现”商品遍历“场景
“全局参数化“实现的是通过自动更改”index“字段中的参数,实现遍历电商平台上所有商品页面,对电商平台上所有的商品页面模拟真实的用户压力。
1、点击右上角的“全局参数化“的设置按钮,开始设置全局参数化
2、点击“添加“,添加参数,将参数名修改为想要测试的字段,比如上面的”index“字段。另外参数化形式中有”自增“、”随机值“和”定长“三种配置方式。
“自增“可以设置”最大值“和”最小值“,比如最小值设置1,最大值设置100,就可以自定义服务器压力,遍历电商平台上参数值为1-100的所有商品;
“随机值“可以实现在自定义范围内随机对某商品页面进行压力测试;
“定长“通过设置一定长度下的数值,在这个范围内的所有商品页面进行随机的压力测试,比如定长设置为3,则会在”000-999“”aaa-zzz“之间进行随机的压力测试。
“全局参数化“可以设置”自增“、”随机值“和”定长“三种形式
“全局参数化“下的”定长“参数设置
对电商平台来说,要进行压测的部分不止是遍历所有商品页还有模拟真实用户购买那么简单,还会有搜索,聊天,收货,评价等更多的功能,本文通过两个简单的场景示例,可以帮助电商网站把测试成本降到最小,把测试效果放到最大,避免让电商平台的买家因为无法付款而流失。
做好这些,才能做出完整的电商产品。
WeTest压测大师 服务了包括王者荣耀、龙之谷手游、火影忍者等多款高星级手游, QQ、NOW直播等明星产品,更是服务了携程、京东、特仑苏以及各类规模的电商产品,此次推出”电商行业压测解决方案“,希望能够帮助开发者真实模拟电商用户使用场景,帮助开发者发现服务器端的性能瓶颈,进行针对性的性能调优。在保证用户流畅体验的同时,也能降低服务器采购和维护成本,实现用户与电商开发者的技术共赢!
“压测大师”目前已经开放对外,目前更有低至四折的时效资源包优惠,欢迎大家的使用!
体验地址:http://wetest.qq.com/gaps/
如果对使用当中有任何疑问,欢迎联系腾讯WeTest企业qq:800024531