专业 靠谱 的软件外包伙伴

您的位置:首页 > 新闻动态 > 移动应用app开发的性能提升优化案例:支付宝高并发实战

移动应用app开发的性能提升优化案例:支付宝高并发实战

2016-04-21 14:41:12

除夕那晚你咻一咻了吗?1808亿次互动,16倍的提升,峰值177亿次每分钟的海量数据背后,支付宝是怎么抗住的?

蚂蚁金服旗下的支付宝经过十几年的发展,从简单的支付工具逐步发展成互联网金融平台。2013年余额宝的崛起就是互联网金融平台升级的标志型事件,这一年支付宝顺利进行了PC向无线的布局,可以说架构成功升级到移动互联网金融平台。

经过两年的发展,2015年口碑和社交业务的崛起让支付宝架构进一步在原有架构基础上拓展出支持线下市场和社交的生活互动型架构。2015年钱包9.0的发布,这个里程碑式的项目初步奠定了支付+移动互联网金融+生活互动型混合架构。架构演进示意图如下所示。

项目保障体系

2015年12月份,支付宝中标央视。支付宝和央视联合搞活动,是支付宝有史以来最大规模的活动。到底规模多大,当时的我们都没有任何概念。唯一能得到的信息是,历年观看春晚的人数大约在7亿多,支付宝的年度活跃用户4亿多,至于用户的行为习惯,没有任何参考模型。

支付宝团队在这样的情况下,确定了这样一个原则:优先确保核心链路,保证核心链路上用户体验顺畅。万一出现系统容量不足,系统必须能扛住洪峰,不被压垮,即使这种情况下也要给用户尽量友好的提示文案。在确保主链路基础上,还需要照顾到支付宝App内几百个非关键链路,对于非关键链路按照业务重要程度分为4个等级,根据等级分配不同的资源配置。

经过2个月的精心准备,在激动人心的4小时结束后,整个春晚支付宝系统稳稳地扛住了4波洪峰,表现平稳,无论是核心链路还是非核心链路,没有出现任何问题。4个小时内几乎没有用户因为系统、功能上的问题而产生投诉,客服也没有任何咨询压力。

技术保障

用户“咻一咻”在第二场活动达到高潮,累计互动次数达到1808亿次,是去年的16倍。在当晚的20点38分,“咻一咻”峰值达到177亿次/分钟。支付宝到底是怎么抗住的?

主要是以下5个方面:

  • 相对合理的超大规模压力预测模型。
  • 核心链路和非核心链路彻底梳理。
  • 大规模生产系统全链路压测。
  • 高频次灰度内测和线上小规模活动预热(2月1日和2月4日两次小规模活动)。
  • 上千个业务、技术预案和完备的应急响应体系支持。

这就是为什么很多看起来不是很复杂的网站、APP,却需要大量顶尖高手来开发。并且随着企业需求的日益增长以及对算法的不断深入创新,我们也会越来越多的遇到这样的性能压力问题。

今天,小编就带着大家来认识这几款自动化测试工具,帮助您找出APP的性能缺陷。

1.Monkey

Monkey是一款压力测试工具,使用简单。所谓压力测试就是乱点。。。模拟各种各样奇怪的操作,看你的app能不能抗的住。下图所示,是简单命令的用法。

举例来说:

1 android shell monkey -p 你想测试程序的包名 -v 500

比如 我现在想看看android 系统自带的日历应用 在压力下表现如何。

你看,这个模拟器就开始疯狂点击了。当然在实际使用中,一般是将次数调到 几十万次到几百万次,然后下班以后开始跑。第二天来看结果,看看在哪里出了问题。使用非常简单,但是作用也非常有限。不过很可能帮助您找出app的一些隐藏极深的bug。

2.MonkeyRunner

MonkeyRunner是一款自动化测试工具,需要您编写脚本。例如,测试需要经常用到的冒烟用例,等等。尤其是在4.x以下的机型里,由于无法使用uiautomator,MonkeyRunner几乎就是唯一的自动化测试方法了。

下面我举个例子,比如我们app里最常用的登录功能,我们就可以编写一个脚本来完成。

1 # coding=UTF-8
 2 from com.android.monkeyrunner import MonkeyRunner as mr
 3 from com.android.monkeyrunner import MonkeyDevice as md
 4 from com.android.monkeyrunner import MonkeyImage as mi
 5 from com.android.monkeyrunner.easy import EasyMonkeyDevice
 6 from com.android.monkeyrunner.easy import By
 7 
 8 #定义安装文件路径
 9 installPackage = 'C:\\Users\\Administrator\\ViewPageTest\\app\\build\\outputs\\apk\\app-debug.apk'
10 
11 #要测试的程序的包名
12 apkPackageName ='com.example.administrator.viewpagetest'
13 
14 #要启动的第一个activity的名称
15 initActivityName=apkPackageName+"/com.example.administrator.viewpagetest.MainActivity"
16 
17 
18 device = mr.waitForConnection()
19 
20 
21 #安装apk包
22 device.installPackage(installPackage.decode('utf-8'))
23 
24 
25 #启动应用程序
26 device.startActivity(component=initActivityName)
27 #防止启动首页面 需要时间过长
28 mr.sleep(3)
29 
30 easy_device = EasyMonkeyDevice(device)
31 
32 mr.sleep(3)
33 
34 
35 
36 easy_device.type(By.id('id/username_et'),'zhangsan')
37 # 这里的mr静止 主要用于演示demo上的gif效果 
38 mr.sleep(2)
39 easy_device.type(By.id('id/password_et'),'123456')
40 mr.sleep(2)
41 easy_device.touch(By.id('id/submit_bt'),md.DOWN_AND_UP)

然后运行该脚本,效果如下:

大家可以看到,这个脚本可以自行完成:安装apk、输入用户名和密码、点击登录按钮。这里我就不继续往下写这个脚本了。有兴趣的同学可以自己尝试完成日常工作里的那些冒烟用例。

用脚本来自动完成这些测试用例意义重大。毕竟每次版本发布之前,手动点击去完成全部的测试用例是很麻烦的一件事情。

3.UiAutomator

上面我们提到了UiAutomator,那我们就顺便来讲讲UiAutomator。这个工具我个人认为是所有android 程序员都必须要掌握的。有了这个强大的工具,我们就可以底气十足地说“No problem!”

UiAutomator几乎能模拟对android设备的所有操作。使用java语言就可以了,不会编写脚本代码的android 程序员也可以轻松上手。并且android的所有api几乎都能使用,简直酷到没有朋友!比android studio自带的ApplicationTestCase强到不知道哪里去了。具体的使用方法,大家可以参考这篇文章

4.Loadrunner

这个工具大家应该都认识,简直是性能测试界的神器,像一个标杆屹立在测试人的心中。既然提到了它,我还是给大家简单介绍一下这款工具。Loadrunner是一款功能最全面最强大的性能测试软件,并且可以进行脚本录制,无需编写脚本了。关于Loadrunner的脚本录制大家可以参考这篇教程。试用下载

大家掌握了这些工具的使用方法后,也可以让自己的APP性能提升很多。

 

关于:中科研拓

深圳市中科研拓科技有限公司专注提供软件外包、app开发、智能硬件开发、O2O电商平台、手机应用程序、大数据系统、物联网项目等开发外包服务,十年研发经验,上百成功案例,中科院软件外包合作企业。通过IT技术实现创造客户和社会的价值,致力于为用户提供很好的软件解决方案。联系电话400-0316-532,邮箱sales@zhongkerd.com,网址www.zhongkerd.com


  上一篇   [返回首页] [打印] [返回上页]   下一篇