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