【译文】在Android或iOS平台上检测应用,其实并没有你想象的那么特殊。我们的工作目标是一样的,期望的结果是一样的,操作过程也是一样的。移动应用测试相比桌面平台的主要区别在于我们需要更加注重细节,这也是今天这篇文章的重点。1.基本原理在深入之前,先说说测试的一些基本原理。除非您对整个测试系统有透彻的了解和熟悉,否则解释相关的背景知识可以帮助您快速了解您必须选择哪些解决方案。Android面临的挑战真正让Android流行的是其无限的可能性。在iOS阵营中,我们只能想到iPhone、iPad和iPodTouch。它们的风格不同,但与iOS设备共享相同的像素密度、屏幕分辨率、处理器速度、内存大小等。但在Android端,相同的外观尺寸、屏幕分辨率和尺寸、处理器速度、内存容量可以创造出无数特定的组合——而“锦上添花”的是,操作系统版本的碎片化让这一切发生了变化。更复杂。说到操作系统的版本,运营商和手机厂商在产品刚推出不久就停止提供版本更新的情况在安卓阵营并不鲜见。这是个问题吗?当然。感兴趣的朋友可以点这里查看谷歌官方提供的安卓市场份额统计数据,了解这个问题有多严重。在失去市场份额的商品中,我们看到了果冻豆(4.1至4.3版)、姜饼(2.3版)和冰淇淋三明治(4.0版)。相比之下,苹果iOS7的接受率显然要好很多。截至今年1月底,80%的iOS设备都在运行iOS7。需要提醒大家的是,iOS7于去年9月正式发布——相比之下,两者的表现可谓一文不值。学习、对比和参考不知你是否真的体验过糟糕的Android应用?比起那些从头到尾都没有用的应用,更可恶的是漏洞百出,让人无法理解其运行结果的垃圾。根据我的个人经验,人们的注意力在使测试过程更顺畅和更有成效方面起着关键作用——我们使用什么,我们喜欢什么,我们讨厌什么。尽管厌恶似乎是一个很强烈的词,但我相信您在使用它时已经感受到了。请客观地回答以下问题:您最喜欢的应用是什么?他们为什么得到你的肯定?您遇到过哪些糟糕的应用程序?是什么让应用程序如此出色?他们在开发过程中是否注意细节?不良应用程序在运行时是否经常死机?它会一直崩溃吗?还是设计思维有问题?了解您正在处理哪些Android设备让我们回到我们之前谈到的Android操作系统市场份额参考图表。可见,测试每一个设备、每一个安卓版本简直是天方夜谭,没有必要。我的观点是,我们需要考虑分发的具体需求。我们的应用是什么?它的目标市场是什么?这是游戏还是实用程序?如果这是一款游戏,重点可能只会放在更新、更高端的设备上。但对于实用应用程序,您需要吸引更广泛的客户群并支持更多的设备类型。#p#2。实施方案我觉得大部分朋友测试都做不好的主要原因是我们对自己的项目都太近了,太熟悉了。我们知道我们的应用程序在哪里失败以及如何让它们重回正轨。考虑到这一点,我会故意设身处地为普通用户着想。我一般把用户分为两类——一类是疯狂点击按钮类型,一类是真正的普通用户。CrazyButtonTypeCrazyButtonType指的是那些从应用开始就一直在摆弄屏幕的用户。他们点一下这个按钮,摸一下那个按钮,一刻也不能休息。“刚刚点击的那个按钮没有用,我再试试。”我们在整个应用程序开发周期中了解不同的用户类型。如果发生某些情况、收到某些请求或发生某些操作,我们的应用程序是否会占用处理器或耗尽设备的内存容量?这种情况会导致应用程序崩溃吗?另一个需要关注的重要问题是,“我们如何通知用户即将到来的结果。”为什么他们选择点击其他按钮而不是等待?我们可以使用加载屏幕来帮助他们弄清楚该怎么做吗?普通用户类型普通用户有明确的使用意向。换句话说,这类用户会花点时间查看用例并了解应用程序的使用方式。如果提供了一组执行特定任务的程序,他们将想要体验它并按照应用程序本身给出的步骤进行操作。我们需要知道我们的应用程序是否足够清晰,可以为用户提供处理流程或操作指导。有了这样的思考,我们就会明白为什么用户在使用过程中会感到困惑,哪些部分是值得关注或重新定义的。我们已经讨论了我们的努力和不同的用户类型,但我们可以提供哪些选项以及我们如何测试它们?幸运的是,选项很多,我建议您尽可能多地了解可用选项。#p#3.可选择打电话给朋友如果您没有自己的常见问题解答部门或测试实验室的奢侈,请先与朋友交谈。我们需要自己的实践经验和相关的物理设备。在移动应用程序测试方面,数字实际上可以发挥巨大作用,尤其是当您有很多可用设备时。工具和单元测试自动化测试解决方案是我们最好的朋友。尽管最好的测试方法仍然是亲自全面体验应用程序,但了解代码级别发生的情况以及应用程序在特定条件下(尤其是在压力条件下)如何以编程方式做出反应也很重要。更重要的是,单元测试可以帮助大家在开发的同时完成测试工作,这将为我们在应用真正发布之前节省大量的测试和常见问题解决时间。AndroidSDKAndroidSDK为我们提供了一个Android测试框架,主要由基于JUnit和monkeyrunner的测试API组成。AndroidJUnit扩展允许开发人员为Android组件编写单元测试机制,AndroidAPI也有针对特定组件的预构建测试类。基于Python的monkeyruuner是另一组API,允许您编写可以从用户的角度控制设备的程序。这意味着您可以创建可以在多个设备或模拟器上运行的测试场景,向它们发送击键记录,并捕获屏幕截图。其他测试框架目前市场上有无穷无尽的测试框架。其中一些比较流行,最典型的代表是Robolectric和Robotium。Robolectric是一个在我们的IDE环境中运行的单元测试框架,它也是对预构建代码执行良好审计的优秀解决方案。Robotium的测试对象主要是模拟器环境下的AndroidAPI。虽然完成测试需要更长的时间,但在它的帮助下你的应用代码会变得更加扎实,效果不亚于实际测试设备和API。另一个有趣的选择是Espresso。与前面两组选项相比,主要是针对一些比较特殊的测试目标。具体来说,它是一组专门用于AndroidUI测试的API。上面提到的各种选项都很棒,但如果您尝试创建混合应用程序,它们可能帮不了您多少。Appium是一个跨平台的自动化框架,可以让你构建一个可以针对各种语言和两大移动平台的测试机制。报告和分析查看更多统计数据也会有所帮助,更重要的是,您应该收集错误和崩溃日志。如果你有多个应用程序测试人员,这种方法就变得更加实用,因为我们可以收集每个用户的日志记录。除了跟踪应用程序使用情况,GoogleAnalytics还可以提供一些意想不到的惊喜。Flurry属于另一组测试选项。事实上,这个功能已经存在了相当长的一段时间,它的报告和崩溃记录也包含了更详细的信息。虽然它无法在应用开发阶段帮助我们,但谷歌能够收集Play商店中应用的崩溃日志。#p#4。第三方替代方案我们都希望拥有数百台物理设备进行测试,就像我们在网站上看到的巨大测试实验室一样。然而,谁都知道,这显然是不切实际的。要解决这个问题,如果大家都愿意投入测试,有很多服务可以提供。这些服务的范围从一对一的人工测试到数百台设备的全自动测试。如果你愿意选择付费项目,这些方案是完全可行的。我自己其实并没有经历过这么多的解决方案,但是UserTesting作为其中之一给我留下了深刻的印象。他们会派专员观看我们的测试脚本,并通过应用体验给出外部建议和意见。以下服务也值得认真考虑。有兴趣的请马上打开搜索引擎:AppThwackuTest/ApplauseTestObjecttestdroid总结我经历过很多负面情况。开发者错误地认为FAQ总结和测试应该是后处理的工作。但实际上,它们是开发过程中非常重要的一部分。Android操作系统作为一个拥有众多版本的庞大阵营,看似难以管理甚至令人生畏,但在采用程序化解决方案后,它可以成为开发过程中固有的一步。花费额外的时间和精力是非常值得的,请注意-高质量的应用程序不会凭空出现。原文链接:在Android上测试:你有什么选择
