垂直化开发模式在支付宝无线测试平台建设中的实践

简介:
摘要:支付宝无线统一 测试平台承载着整个支付宝无线应用研发的质量控制体系,提供字节码测试、monkey测试、遍历测试、UI自动化测试、适配测试、设备管理、 真机访问、性能监测、安全扫描等。
   一、引言
  无线应用的浪潮已经掀起, 无线测试质量保障体系的建立步伐步步紧逼,在这样的背景下,支付宝无线统一测试平台应运而生,结合支付宝无线应用的特性,定制开发一套统一无线测试平台迫在眉睫,本平台主要涵盖monkey测试、遍历测试、UI自动化测试、适配测试、设备管理、真机访问、性能监测、安全扫描等,研发团队采取垂直化研发协作模式,坚守OneSolution&OneApp&OneProject&OneDB&OneOwner的责任到人的开发模式,秉承高内聚、低耦合的开发理念,极大的提升了整个平台的开发效率。开发过程中,强化进度层层把关与同行评审机制,坚守产品第一、质量第一,为统一无线测试平台的构建打下坚实的基础。在开发效率提升的同时,这种垂直化研发协作模式也有效的提升了整个平台的可扩展性、可维护性等。
   二、案例解读
  (1).核心模块划分
  鉴于本平台的自身特点,在模块化设计方面,我们对本平台进行模块解耦设计,主要分为基础组件(如用户管理、权限管理、任务调度等)、统一控制中心(与 移动设备交互层)、应用提测、设备管控、应用评价中心、 自动化测试等模块;同时鉴于集团共建,本平台建设主要采用开源的技术体系springmvc&mybatis&velocity&mysql。核心模块结构图如下:
   (2).核心功能剖析
  字节码测试:我们通过对findbugs进行拓展开发,提供一体化的字节码测试解决方案,填补了支付宝在字节码扫描领域的空白,这里的扩展开发主要包括findbugs的缺陷的关键字过滤、缺陷的规则扩展、缺陷的翻译等,业务流程见下图:
   安装、启动、卸载、升级测试:主要是对应用在不同型号的 手机上进行安装、启动、卸载测试的相关数据指标的获取以及分析;同时,鉴于支付宝应用发布的高频率情况,整个无线平台提供了应用升级测试方案,支持从低版本到高版本的升级测试相关数据指标的获取与分析,业务流程见下图:
   性能监测:切合支付宝无线自动化解决方案,收集在特定的场景(也即测试计划)运行与底层框架函数埋点的情况下,透明化该特定场景下的移动设备的流量、耗电量、CPU、内存等数据指标,并提供基于特定性能基线的移动应用性能评测中心,相关模块以及性能指标见下图:
   真机访问:本模块我们主要着手解决了实时获取到手机当前屏幕截图以及可以将浏览器上的鼠标或键盘事件回传到手机上并得以执行。工作流程见下图:
  关于实时获取当前手机屏幕截图,有两种使用较多的方案:1.使用adb本身提供的截图命令screencap;2.使用开源的C程序gsnap生成截图。方案1简单,但效率低,大概每秒只能截图一张,不能满足实时性要求,方案2需要将此C程序编译并放到手机上,同时,手机需要被root,因为此程序读取/dev/graphics/fb0设备生成图片时需要root权限。
  关于鼠标或键盘事件回传到手机并得以执行,首先需要开发一个Android手机上运行的控制台程序(此程序要能构造Android平台的MouseEvent对象并且发送给系统执行),打成jar包,将预先放置在手机的某个目录中,当浏览器中捕获到某个事件时,传送回服务器,服务器使用adb向手机发送一个命令及参数,执行之前准备好的命令行程序,之后命令被换成Android平台的事件并分发执行。
   自动化测试:提供用例的同步与管理、测试工程的管理、测试计划管理、测试数据管理等模块,将自动化测试纳入到整个支付宝无线研发的流程体系中去,相关模块和用例特点见下图:
   应用评价中心:可以将不同的应用发布渠道的热点评价同步到本无线平台,进一步分门别类的去进行分析。
   其他:本无线测试平台还支持monkey测试、遍历测试、基于代码级的安全扫描、应用自动打包、一体化的质量报告体系等。


   统一化:在开发模式、url组织、静态资源、编码规范、数据库设计规范、工程结构等方面都高度统一,确保团队成员对其他模块的快速掌控能力,有效的降低了人才流失的风险,此外,也提升了整个团队的技术体系的培养和专业技能的沉淀。
   OneRule:采取专人、专职、专责、专事的垂直化的研发模式,也即OneSolution&OneApp&OneProject&OneDB&OneOwner原则,同时强化PeerReview(同行评审)机制,协助不同方案的Owner业务与技术的不断成长。
   快速原型验证:进行快速的POC(proofofconcept)原型验证和方案确认,加快特定方案的可行性研究步伐,有效的降低了资源的浪费和风险。
   螺旋式迭代:采取了螺旋式的迭代研发模式,确保项目的快速迭代交付周期。
   线上与线下部署:采取统一的发布与部署流程,进行每日构建,分为线上和线下两套环境,线上提供给用户进行使用或试用,线下提供给研发人员进行验收测试。
   源码控制:采取了主干与分支管理,强化模块级别的同行评审,在部分编码技能稍弱的同事中,我们会采取结对编程的方式,协助同事编码能力的提升。
   架构和数据库设计:由技术架构师统一负责模块解耦设计以及数据库设计,并强化组员评审与方案解读,以确保整个方案的正确性。
   研发资源共享:系统开发方面,采取统一的三层架构研发模式与标准的模板工程,强化基础组件(如grid控件、user组件等)的研发,提升整个系统研发层面的组件复用力度,从而有效的节省资源。
   三、案例启示
  无线应用异军突起,无线测试平台建设迫在眉睫,目前业界也有尚有一些较好的案例,如testin等,但存在一些现实问题,如费用较高、针对性不强且难以满足不同公司的无线测试的特定需求,在支付宝无线测试平台建设中,我们借鉴了同行产品(如一淘网的摩天轮和淘宝网的athrun)的一些经验,提出了垂直化团队协作研发新模块式,开辟了适合支付宝测试工具研发团队的全新的系统或应用研发新的篇章,有效的提升了支付宝无线统一测试平台建设步伐,提升了测试工具团队组员的独挡一面的能力以及整体把控一个方案(从需求、设计、实现、测试、交付等)的能力,同时提升整个测试工具研发团队的技术沉淀与研发能力,为统一化平台建设奠定了基石。
   作者简介:
   王超,花名于龙,2007年计算机软件与理论专业硕士毕业,先后在微软全球技术支持中心、SAP中国研究院、淘宝网从事自动化测试用例开发、自动化框架研发、测试平台建设、信息系统研发、测试工具研发团队管理等工作,主导研发淘宝网PC自动化测试框架AutomanX、支付宝统一测试平台AQC、支付宝无线测试平台、支付宝缺陷管理移动端QOne等产品,目前负责支付宝质量部测试工具研发团队。
   李国栋,花名富曲,2002年计算机应用专业本科毕业,先后在中国建设银行、金蝶软件、淘宝网从事java开发工作,相关领域包括金融行业软件、ERP软件、电子商务网站,性能测试平台、自动化测试、字节码测试等。擅长java企业级应用平台架构,测试平台技术架构,目前是支付宝质量部测试工具研发团队测试开发专家。
版权声明:本文来源于 TOP100全球软件案例研究峰会  王超(花名于龙) 、李国栋(花名富曲),51Testing软件测试网原创出品,未经明确的书面许可,任何人或单位不得对本文进行复制、转载或镜像,否则将追究法律责任。

最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
|
24天前
|
安全 Linux 测试技术
提升龙蜥内核测试能力!探究持续性模糊测试优化实践
清华大学软件学院对Anolis OS使用靶向模糊测试方法将测试工作引向修改的代码,进而提高对业务代码的测试能力。
|
1月前
|
SQL 搜索推荐 测试技术
【Havenask实践篇】完整的性能测试
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。性能测试的目的在于评估搜索引擎在各种负载和条件下的响应速度、稳定性。通过模拟不同的用户行为和查询模式,我们可以揭示潜在的瓶颈、优化索引策略、调整系统配置,并确保Havenask在用户数量激增或数据量剧增时仍能保持稳定运行。本文举例对Havenask进行召回性能测试的一个简单场景,在搭建好Havenask服务并写入数据后,使用wrk对Havenask进行压测,查看QPS和查询耗时等性能指标。
65385 6
|
2月前
|
安全 测试技术
测试团队的一次复盘实践
测试团队的一次复盘实践
145 0
|
3月前
|
安全 jenkins 测试技术
自动化测试与持续集成/持续交付(CI/CD)的实践与应用
自动化测试是现代软件开发不可或缺的环节,它可以有效地提高测试效率、降低测试成本。而持续集成/持续交付(CI/CD)则是一种基于自动化的软件开发流程,能够将代码的开发、构建、测试和部署等过程无缝连接起来,从而实现快速迭代和部署。本文将结合实际案例,介绍自动化测试和CI/CD的实践与应用。
150 2
|
1月前
|
算法
m基于OFDM+QPSK和LDPC编译码以及MMSE信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
MATLAB2022a仿真实现了无线图像传输的算法,包括OFDM、QPSK调制、LDPC编码和MMSE信道估计。OFDM抗频率选择性衰落,QPSK用相位表示二进制,LDPC码用于前向纠错,MMSE估计信道响应。算法流程涉及编码、调制、信道估计、均衡、解码和图像重建。MATLAB代码展示了从串行数据到OFDM信号的生成,经过信道模型、噪声添加,再到接收端的信道估计和解码过程,最终计算误码率。
22 1
|
3月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
194 0
|
9天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
15 1
|
10天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
19天前
|
安全 测试技术
深入理解白盒测试:方法、工具与实践
【4月更文挑战第7天】 在软件开发的质量控制过程中,白盒测试是确保代码逻辑正确性的关键步骤。不同于黑盒测试关注于功能和系统的外部行为,白盒测试深入到程序内部,检验程序结构和内部逻辑的正确性。本文将探讨白盒测试的核心技术,包括控制流测试、数据流测试以及静态分析等方法,同时介绍当前流行的白盒测试工具,并讨论如何在实际项目中有效实施白盒测试。文章的目标是为软件测试工程师提供一份综合性指南,帮助他们更好地理解和应用白盒测试技术。
|
1月前
|
敏捷开发 测试技术 持续交付
深入探索软件测试自动化:框架与实践
在快速演进的软件行业中,测试自动化已成为确保产品质量和加快上市速度的关键因素。本文将深入分析测试自动化框架的构建要点,探讨其在实际应用中的效益,以及实施过程中可能面临的挑战。通过对比手动测试与自动化测试的优势与局限,本文旨在为读者提供一套系统化的测试自动化实践指南,以支持更高效、可靠的软件开发周期。
12 0

热门文章

最新文章