打造企业级移动测试云平台 | 洞见

背景

移动技术发展到现阶段,原生、混合式技术发展的足够成熟,可以无缝融合。而随着移动技术的发展和革新,移动领域的测试技术和实践也有了一定发展:工具不再像早期一样几家独大,选择性越来越多;从浅尝辄止的实验阶段到真实项目中的自动化测试落地。这些实践在一定程度上提升了测试反馈效率,在迭代交付的过程中出色的完成了质量保证的工作,但在相对漫长的实践过程中,我们依然可以总结一些痛点:

1. 移动自动化测试的执行效率远不及Web应用

有过Web自动化测试经验的同学对于Selenium肯定不会陌生,Web端的并发测试使得测试在有限资源的情况下按照我们的期望并发执行。而且由于keychain等问题,很难在测试用例之间做到互不影响、对于测试环境的清理和准备也有很大难度。

2、很难全面覆盖繁杂的测试设备

Web自动化测试关注的测试环境相对单纯,针对不同项目、产品和市场,无非是对不同的浏览器和操作系统有不同程度的支持。而对于不同浏览器也有不同的driver来支持。而在移动测试中,很难做到对众多厂商和不同操作系统设备进行模拟。

3、移动自动化框架很难支持到回归测试颗粒度

在移动端(以iOS为例),受限于Apple的机制,大部分框架很难覆盖到与iOS系统/第三方App交互的场景,例如系统通知跳转、实时通讯应用信息发送等场景。而若无法覆盖核心功能,那么自动化测试的落地实则是在给自己和团队挖坑,得不偿失。

这些问题在随着WebDriverAgent的成熟以及XCode 9的新特性 —— Multiple concurrent simulators的出现,得到了极大程度的解决,我们可以像对Web应用一样,对移动端应用在不同的simulator上并发执行测试用例,极大提升了测试反馈效率。而且,测试人员不再受限从而可以编写覆盖率更高的测试用例。

除了普适性问题之外企业对移动测试方案潜在的需求

在项目的具体实施过程中,除了我们经常被这些普遍存在的细节问题困扰之外,企业或组织级客户已经对移动端自动化测试提出了更高的要求。在一次机会给客户讲解移动端自动化测试趋势时发现,新的框架的确会使客户眼前一亮,但是,在实践上的优势无非是你比其他人先研究了什么,这样的领先微乎其微,在交流过程中观察到客户更大的痛点是:

如何同时覆盖到更多物理设备?如何更好的构建和重用基础设施?如何跨地域高效使用测试资源?

带着这几个问题,我们对比了一些现有的可用方案,例如AWS device farm。Device farm是针对移动App提供的测试服务,用户可以对在AWS托管的基于iOS和Android物理设备测试原生和混合应用。用户既可以使用各种测试框架来做自动化测试,也可以远程访问设备进行应用程序的测试和调试。

但是该解决方案也是有一定局限性的,当测试运行期间同时执行测试的设备最大只有五个,而运行测试的时间也被限制到60分钟。当然上述的限制可以根据需要适当的放松,但是企业和用户不得不承担价值不菲成本。

与AWS device farm类似,SauceLabs和Xamarin也提供类似的平台,那SauceLabs的服务举例,如果想使用无限运行时间,支持24个并发运行设备,模拟器用户需要每月承担3576刀,而如果想使用真实设备进行测试,大概需要每月花费7200刀。这种昂贵的成本对于企业很难承受,而且重要的是这种资源是无法复制,企业不得不持续为云服务支付高昂的费用。

安全性也是企业需要考虑的问题,用户不得不在云测试平台上传自己的IPA或APK。我们当然可以信赖AWS的安全机制。一些对安全性要求较高的企业来说,更想规避这样的风险。

打造私有移动真机测试平台

通过分析,对于客户的需求大概涵盖几点:真实设备、并发、成本、安全、可重用。鉴于这些需求,我们把目标进行拆分:

1.设备管理——服务发现与注册

在该实例中我们使用WebDriverAgent作为测试框架,需要运行在每一个物理设备上,我们可以把这些物理设备当作Agent集群。这些集群设备就是我们运行WebDriverAgent的服务终端,我们可以通过很简单的程序让WebDriverAgent自动在设备上运行。通过服务发现与注册机制,把WebDriverAgent服务注册在通过Ansible管理的Proxy上。而服务发现与注册不单单解决了复杂的设备管理,而且可以解决分布式团队合作时设备跨地域有效利用的问题。

2.平台数据可视化

对于一个测试平台来说,如何把所有可用的服务(机器)、服务状态、自动重启和crash报告等数据可视化给企业终端用户,是极为重要的。那老牌Apache zookeeper来说,提供了友好的服务可视化管理功能并且可以根据用户需求进行二次开发。重要的是,这些底层基础设施服务可以在之后的任何一个移动测试项目中被重用。

3.自动化测试运行和报告生成

自动化测试平台虽然提供了强大的服务(设备)管理、服务可视化等功能。而自动化测试的核心需求依然是如何保障测试的独立性、稳定性、易维护性、重用性和覆盖率。通过WebDriverAgent跨语言测试框架,我们可以像架构Web自动化测试一样来开发针对移动端的测试工程。但需要注意的是移动测试不同的是真实物理设备,而不是计算机的某个进程。另外,如何接触测试场景的相互依赖、保证测试间的独立性,以及如何清理测试环境,需要大家在进行移动端架构的时候事先考虑。

这样一来,我们如果可以解决这三个问题,就可以不受昂贵的成本限制,为企业量身定做适合自己的业务规模的移动测试私有云了,不但为企业和组织机构构建了大型测试服务平台,同时也解决了之前提到的普适性问题。

总结

随着DevOps的发展,软件工程的开发、部署、上线、应急预案等都被自动化监控和处理。如果我们依然停留在“成熟”的解决方案而缺少思考,那么留给QA/测试人员的发展空间越来越少。

我们需要通过对测试技术细节的不断归纳、对比和练习,抓住领域发展趋势和真正的客户诉求,结合其他非测试技术,帮助自己在测试技能上有所突破,同时帮助自己提升构思和落地解决方案的能力。

- 相关阅读 -

复杂业务场景下如何进行iOS端自动化测试

移动应用的测试策略与测试架构

本文版权属ThoughtWorks公司所有,如需转载请在后台留言联系。

原文发布于微信公众号 - 思特沃克(TW-Insights)

原文发表时间:2018-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏达摩兵的技术空间

前端大牛or架构师应该具备这些

相信很多招聘要求上都会写明需要3-5年经验才可以达到架构师要求,并且针对其中一些必要的技术储备大家已经能够耳熟能详,那究竟为什么需要这么久时间,以及具体每项技能...

10260
来自专栏JAVA高级架构

【干货】阿里资深无线技术专家孙兵谈闲鱼社区技术架构演进

近期在ArchSummit北京会议上,阿里巴巴资深无线技术专家孙兵(花名酒丐)发表了《网格社区-闲鱼技术架构演讲》主题演讲。孙兵2011年加入阿里巴巴,先后在B...

21840
来自专栏数据和云

遇见未来 | 对话王璞:谈分布式系统在企业落地的挑战

分布式的概念很早就有了,然而真正在企业中得以广泛应用却是最近几年的事情。互联网的深入深化及大数据应用的兴起,对于IT系统的处理能力及效率都提出了更高的要求。通过...

32340
来自专栏SDNLAB

解密:“云”上的安全

安全是一个多层级的话题,包括物理、硬件、引导、存储和其他方面。本文只探讨数据中心工作负载的访问控制。 几乎所有企业数据中心里都有很多防火墙/VPN设备,但是Go...

28370
来自专栏云计算D1net

公有云供应商加入无服务器计算的浪潮

无服务器计算正在所有云服务供应商间流行着,而AWS Lambda之类的工具将可能改变资源的利用方式,尽管这一切还在萌芽阶段。 无服务器架构是云服务提供商之间最新...

35260
来自专栏BestSDK

一周简报|红桃微信,专注于应用的微信公众号第三方管理平台

编辑导语 红桃微信,专注于应用的微信公众号第三方管理平台; AnySDK 更新至2.2.0版,新增广告追踪功能;亲加SDK与APICloud达成战略合作,缩短视...

44360
来自专栏云计算D1net

多云计算需要谨慎的IT成本分配

多云环境对企业来产有很多好处,但如果没有适当的管理,其成本分配将变得艰难。人们按照以下这些提示进行资源标记和预算警报。 单个云平台的成本分配和管理可能很困难,而...

29380
来自专栏云计算

5种确保云成本透明度和准确分析的方法

这些提示将帮助您收集并准确分析所需的成本核算信息,确保您从多云战略中能最大限度节约。

50960
来自专栏云计算D1net

避免在云迁移过程中宕机

在公共云迁移期间,IT团队需要采取谨慎的步骤,以避免听到“系统宕机”这种可怕的提示。 随着组织迁移到基于云计算的基础设施,IT团队需要在迁移过程中保持可用性。...

372100
来自专栏京东技术

京东技术沙龙系列之二 | 深度解析京东微服务组件平台

20740

扫码关注云+社区

领取腾讯云代金券