文章: 移动应用的持续测试

标签: 文章 移动应用 测试 | 发表时间:2012-11-19 22:36 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

用手点、用眼看。考虑到大批移动设备和应用进入软件生命周期,用手点、用眼看似乎是目前测试应用的唯一方式。这意味着手动测试将贯穿整个软件发布周期的前前后后。但是手动测试还存在问题,理由有几点:它大大减慢了开发过程,给错误的发生留下很多余地,最终会降低团队在短时间内发布高质量软件的信心。

现如今移动应用测试的解决方案必须提供web及原生应用的持续集成测试。这些解决方案应允许团队快速地创建、修改和执行测试。测试解决方案还应该提供与 Jenkins集成的插件,或是以ANT任务的方式集成到任意持续集成服务器中,最终以标准的JUnitXML格式向持续集成服务器反馈测试结果。采用测试产品与持续集成服务器集成,企业每天能够发布多个构建,同时单元测试、功能测试以及性能测试全以自动化方式进行。

以下是SOASTA对于软件生命周期中移动应用持续测试的看法。

首先,解决方案的要求

  • 以移动终端操作系统能够识别的相同速度、速率和精度,100%准确地录制手势和交互。这个对于在移动应用中属于热门的游戏来说尤为重要。当一个手势,例如手指滑动,在移动设备上执行,它便由大量元数据组成。看似一个简单的手指滑动,移动终端操作系统看到的却是一个大型数组,它包含了手势的速度和轨迹,这些数据每秒钟采样多次。只简单地使用滑动起止点X/Y轴坐标,很多应用都无法完成精确测试,游戏领域几乎不太可能。
  • 在真实设备上进行测试。这个要求再怎么强调也不为过。苹果公司甚至表示,不推荐应用交付前只在与XCode关联的iOS设备模拟器上测试。必须在真实设备上测试应用,以了解真实用户体验以及程序的性能和总体质量。基于模拟器或虚拟设备的解决方案总会和真实设备有差距,并会留下质量缺陷。
  • 基于设备上呈现的真实对象和应用状态执行验证。早期的移动测试产品在测试创建以及回放方面使用视觉认知。这意味着,为验证测试在屏幕上识别到了某些东西,该产品将为设备屏幕截图,并试图定位图像的边界以验证某些东西是否出现了,比如一个登录框。这种方法很脆弱,误差范围大约是4个像素。因此,如果开发者修改了登陆框颜色,或是移动了它的位置,就需要重写或修改测试用例。能够在原生级别访问应用程序对象至关重要。在现如今的移动软件生命周期中,切实可行的测试解决方案必须能够在原生级别访问应用中的真实对象,以便执行测试用例并验证。

其次,移动应用自动化的蓝图

为完善移动测试解决方案,移动测试自动化领域存在诸多挑战。没有人工干涉的情况下,部署可测试版本应用到移动终端上就是其中之一。手动部署应用以启动自动化测试违背了持续集成测试的目的。

对于典型的web应用, Jenkins持续集成工作流将会检出源码,构建,部署到测试环境,然后启动。目前 Jenkins已具备部署web应用程序至测试环境这一特性。然而,如何在没有工程师人工干预的情况下,将应用程序部署到移动终端是目前业界还未解决的难题。

持续集成架构

在构建iOS应用程序时,你用作移动测试的持续集成slave端是一台Mac电脑。通过XCode构建代码并部署到移动终端。以 Jenkins作为持续集成服务器为例,工作流程如下所示:

  1. Jenkinss持续集成服务器唤醒slave,并命令它检出源代码。
  2. Mac slave使用XCode命令行工具构建源码。 这些都是构建iOS应用程序自动化的典型步骤。以下这几步在有些产品中是独有的:
  3. 通过USB可将一个甚至多个iOS设备连接到Mac slave。
  4. 部署的utility,作为 Jenkins作业定义的步骤之一,将通过XCode自动部署应用程序到设备。
  5. 一经部署,设备将自动连接到产品,并准备接收并执行测试。 应用程序通过Jenkins以自动化方式部署之后,就可开始执行测试用例、报告缺陷。
  6. 执行测试。
  7. 将代表通过或不通过的测试结果反馈给 Jenkins,然后发送测试分析。

为便于查看,测试结果以行业标准JUnitXML格式反馈给 Jenkins。一旦遇到错误, Jenkins插件允许工程师查看异常的确切原因——在 Jenkins范围之内无需另行登录到产品——搜索结果并定位到异常的确切原因:一个超链接会跳转到结果和异常以便快速分析。

SOASTA云测试方法

我们的方法,发布于2009年,是一个最佳实践体系,该体系有关于生产环境中的应用测试,实验环境和生产环境的连续性测试,以及相互独立的两个环境中日常的例行测试。使用这个方法,我们已使众多企业在应用程序测试操作中达到了一流效果,这其中包括了美国在线零售商十强中的六个。

在云测试方法中,执行阶段内,云测试通过加快测试定义、设计、执行和评估来加速测试周期。可视化的开发环境允许团队以前所未有的速度创建测试用例,因为这个过程中只需编写少量的代码,甚至一行代码都没有。通过制定任务或持续集成服务器以自动化的方式执行测试。因为所有的数据都存在云测试上,测试结果将及时发布。这意味着工程师们可以通过创建、操作控制台获得实时的反馈。他们立即就能看到程序的性能和稳定性。

(点击图片,查看大图)

这个方法提出了两个队列,实验环境和生产环境各一个,队列维护实验室持续测试日程表,在每个关卡,可以对目标产品的测试用例做执行或者不执行的决定。

结论

要想在现今快速变化的网络世界里取得成功,企业需要正确的测试解决方案。创建糟糕的用户体验可能是灾难性的。性能低下可导致收入损失,客户流失,差的品牌口碑病毒式地传播。市场上传统玩家对在避免这些问题上表现出高度自信的解决方案反应迟缓。这种自信源于采用现代化的测试方法以及合适的工具。新技术提供了克服移动应用测试相关困难的方法和工具集。

关于作者

Dan BartowSOASTA负责产品管理的副总裁,SOASTA是云测试行业领导者。你很难找到比Dan在这些问题上知道的还多的人,他曾就职于Intuit、Turbo Tax、Neiman Marcus、ATG以及几家创业公司。
 

 

查看英文原文Continuous Mobile Application Testing


感谢 李琼对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至 [email protected]。也欢迎大家通过新浪微博( @InfoQ)或者腾讯微博( @InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

您可能也会喜欢

相关 [文章 移动应用 测试] 推荐:

文章: 移动应用的持续测试

- - InfoQ cn
考虑到大批移动设备和应用进入软件生命周期,用手点、用眼看似乎是目前测试应用的唯一方式. 这意味着手动测试将贯穿整个软件发布周期的前前后后. 但是手动测试还存在问题,理由有几点:它大大减慢了开发过程,给错误的发生留下很多余地,最终会降低团队在短时间内发布高质量软件的信心. 创业者之翼为创业新星免费提供甲级办公场所,详情请点击.

文章: 基于HTML5和Javascript的移动应用架构

- - InfoQ cn
如果你认为你能够无视终端用户的移动化需求,那请记住:当个人电脑刚出现时,企业中的IT 部门也曾对它们有抵制情绪. 移动设备的激增正在促使IT部门做出改变,他们必须支持移动设备,并紧接着开发出友好的移动设备应用程序. 随着用户对移动设备越来越熟悉,他们对在移动设备浏览器中访问的应用程序的要求也越来越高.

移动应用可用性测试的实践经验总结

- - 互联网的一些事-关注互联网产品管理,交流产品设计、用户体验心得
  如果你不大熟悉移动应用的可用性测试,没关系,这事儿没你想象的那么困难;不过移动应用与传统网站产品在可用性测试方面确实有一些关键的区别需要我们注意.   过去的几年当中,我(英文原文作者)为不少移动产品做过测试,从戒烟应用到移动版的车辆保险网站,其中既包括在实验室使用复杂设备进行的测试,也包括在各种实境化的条件下进行的非正式测试.

移动应用测试——打造完美应用的秘诀

- - 博客园_知识库
  英文原文: Mobile App Testing - The Secret to the Perfect App.    打造完美移动应用的关键.   上个季度,你刚刚花了大半个季度的时间,开发最新版本的移动应用程序. 最近的主流移动操作系统升级让你的应用具备了新的能力. 你的竞争对手已经通过扩展他们的应用功能完成了资本运作.

为移动应用和网站提供测试和监测服务的Perfecto Mobile获得1500万美元融资

- - 36氪
在波士顿和以色列都有办公地点的 Perfecto Mobile是一家为移动应用和网站提供测试和监测平台的创业公司,他们宣布获得了1500万美元C轮融资,由Globespan Capital Partners领投,之前的投资方Carmel,Vertex以和Waisbein Fund跟投. 这家公司的成功可以被看成是移动应用生态系统大爆发的一个缩影.

文章: 软件测试转型之路

- - InfoQ cn
2010年12月31日,在网易从事了多年开发之后,依依不舍地离开,面临的是一个完全从零开始的全新职位:SQA,也就是tester. 保持某些系统的高可用性,是一些企业的重中之重,如何设计. 海量数据处理,海量视频分发,架构热点难点,尽在架构师峰会. ArchSummit全球架构师峰会报名启动. 当时对为什么被选择做软件质量保证,而不是继续在研发上进取,持有保留态度:凭什么要我转,不是别人.

文章: Android中的单元测试

- - InfoQ cn
随着Agile的普及,以及开发人员对测试重要性的认识逐步加深,单元测试已经成了越来越多软件项目开发中不可缺少的一部分. 无论项目是不是采用TDD的形式来进行开发,单元测试都能够为项目的修改和重构提供一定的保障. 有奖参与:天翼伦敦会,上传应用,为中国队加油. QClub七月技术沙龙(太原/北京/上海/厦门/西安 7月21/28/29日 免费报名中.

文章: 使用Sahi测试Dojo应用

- - InfoQ cn
谈及开源Web 自动化测试工具,相信很多人立刻会想到Selenium. 本文给大家介绍的是另一款 开源Web 自动化测试工具Sahi. Sahi的网站上有关于与Selenium的对比,不过这不是我们今天探讨的主题. 这篇文章的主要目的是向读者简单的介绍一下Sahi并分享一下个人使用Sahi测试Dojo应用的经验,希望对大家能有所帮助.

文章: 采访和书评:Google如何做测试

- - InfoQ cn
《Google如何做测试》一书由 James Whittaker, Jason Arbon 和 Jeff Carollo 三位作者合著而成,正如其封面上描述的那样,看起来充满了知识性和趣味性,在其背后则揭秘了大型技术公司Google,是如何应对和处理软件测试的复杂性的. 百度技术沙龙第三十一期:推荐引擎算法与技术(10月20日 周六).

文章: 究竟什么是敏捷测试

- - InfoQ cn
时至今日,还讨论这样一个老话题,是否感觉老调重弹. 因为两年前(2010年底)时任谷歌中国测试经理的段念先生就写了一篇文章《 什么是敏捷软件测试》(刊登在InfoQ网站上 [1] ), 就已经谈到这个话题,“敏捷软件测试更多的是一种理念,而非过程”. 在2011年,我自己也写了一篇文章《敏捷测试的思考和新发展》,刊登在《程序员》杂志上,谈到“在BDD、ATDD和TDD最根本的、共同的思想基础上,构成一个全新的、更完善的敏捷测试框架” [2].