写点什么

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

2015 年 4 月 10 日

打造完美移动应用的关键

上个季度,你刚刚花了大半个季度的时间,开发最新版本的移动应用程序。这是一项必须完成的工作。最近的主流移动操作系统升级让你的应用具备了新的能力。你的竞争对手已经通过扩展他们的应用功能完成了资本运作。他们对最新版本应用功能的宣传攻势已经开始。在各个商业广告里,你的应用看起来越来越像是石器时代的遗物。

你的工作是要保证你们公司的应用不要掉队。尽快发布最新版本的压力是移动应用开发中最大的风险。这是为什么大多数应用一度星光闪耀,但用了几次就被删除的原因。它们总是出现各种问题。

通过移动应用测试过程,你可以先于客户捕捉到移动应用所有的功能或者性能方面的问题。即使你在上市时间上击败了你的竞争对手,如果应用上的一些问题被终端用户发现时,你会希望你没有这么快发布应用。它导致的后果就是一个愤怒的用户和其背后庞大的社交网络,以及被浪费的数以千计的工时和数百万美元。

这就是为什么移动应用测试成为移动应用开发过程中最关键的环节。他就像一颗跳动的心脏一样。平常你不太会感知到它的存在,但是如果它不能正常工作,就会导致灾难性的后果。

新时代的应用

桌面应用的测试矩阵相对来说比较简单。桌上电脑的位置是固定的,屏幕尺寸是标准的,操作系统通常也都是相同的。移动化让所有的规则都发生了变化。

“互联网可以让公司‘一直处于营业中’。现在,移动互联网则让公司有机会能够‘随时随地处于营业状态。’为了支撑这个更加宏伟的口号,会增加许多额外的工作。”Expertitest 的首席执行官 Tal Barmeir 如是说。

移动应用的测试矩阵更加复杂。智能手机,以及其上所承载的所有应用不停地变换位置,本地网络也随之不停变化。从北京去往巴塞罗那的商务人士会带着他的应用跨越大洲。如果某个应用在一些位置比在另外一些位置运行更加平滑,有可能会激怒它的用户。为了让应用在不同位置的性能相对平均,需要根据不同级别的带宽、延迟、抖动以及其他随着网络情况变化的变量,进行全面的测试。

从可穿戴设备到平板电脑,移动设备的形状和大小各不相同。屏幕的分辨率也是各种各样。这也为移动应用开发带来新的挑战。在桌面电脑上看起来不错的应用在平板电脑上可能不那么好看,在智能手机上的表现甚至会更糟。即使是功能也需要在不同尺寸的设备上测试。如果按钮太小用户的手指无法点击怎么办?如果由于移动设备屏幕压缩导致重要信息无法显示怎么办?由于用户手中的移动设备数量庞大,这些问题变得更加复杂。据 OpenSignal 2014 年 8 月发布的报告指出,仅安卓一个品牌的设备就有大约20000 种不同尺寸和分辨率。

此外还有4 种有着完全不同配置的主流操作系统。一个标准的移动应用测试的测试集可能是一个包含成千上万的位置、设备型号、尺寸和操作系统组合的多维矩阵。

时间紧,任务急

这个复杂的矩阵就是为什么移动测试是整个开发过程中运行最缓慢的阶段的原因。测试团队必须要保证移动应用的每个功能在任何一个位置都能平滑并且正常的工作,不会出现停顿、崩溃或者过多的缓冲。完成这样的工作需要大量的时间。

然而,移动应用开发的性质导致测试团队不可能有足够的时间开展工作。竞争如此激烈,每天竞争对手都会在市场上发布最新版本的应用,其中包括你的应用尚未实现的功能,导致你的应用一直处于过时的边缘。日积月累的技术优势会让你的应用慢慢消失直到被遗忘。

这让开发运维团队陷入两难的境地。如果测试充分,就会面临晚于竞争对手发布产品的风险。这会诱导团队抄近路,走捷径。经理可以做出缩减测试流程的决策。他可以决定只测试原有测试范围的一部分以加快应用进入市场的速度。

这就好像俄罗斯轮盘赌。其中的风险在于,客户成为“辅助QA 团队”,代替质量保证团队捕捉应用程序中的缺陷。任何未经测试或修复的功能都可能是用户删除应用再不与应用开发公司打交道的原因。

测试目的

应用的两个主要的组成部分就是功能和性能。应用的每个功能是否都能够正常工作?在哪些场景下,以某种方式使用应用时,应用会崩溃,返回一条错误信息,或者未按照期望执行?性能即速度,而速度会逐渐成为新的功能。如果应用的某个区域运行过慢,在最终用户的眼中这就是程序崩溃的表现。这会让应用开发变得更具挑战,因为如果应用无法正常工作或者由于开发者无法控制的因素变得迟缓,都会归咎于开发人员。用户会认为问题出在移动应用上,并会考虑删除它。这可能并不公平,但这就是商业规则。

测试人员需要测试每一个他们可以控制的场景,而且还要尽可能多地测试那些他们无法控制的场景。他们需要模拟地球上各种各样的本地网络情况,调节带宽、延时和接收。测试人员必须保证应用在这些情况下应用都能够有效运转。除了要测试地点以外,还需要测试位置。如果用户正在进入电梯或者穿过隧道会发生什么情况?

不断发展的测试环境

移动测试的发展非常迅速,所有这些发展的目标只有一个,就是要缩短测试的时间周期。最初的测试类型是手工测试。用户会将应用下载到移动设备并的的确确使用这个应用。测试人员会像用户一样通过用手输入文字、点击按钮来执行每一个功能点的测试,这是一个非常缓慢的过程。测试人员同时只能在一部设备上进行测试。手工测试现在已经发展到可以将设备插到电脑上,然后用鼠标和键盘操控设备进行测试。

下一个阶段是测试自动化。通过自动化,可以同时在多个设备上进行测试。测试人员选择一个设备创建测试脚本。用键盘和鼠标在反射到电脑上的移动设备屏幕开始执行一系列的测试步骤。完成录制后,测试软件会将测试步骤序列转化成一个测试脚本。然后就可以在全部设备上运行该脚本并为每一次的测试结果生成报告。最好的测试工具能够用所有主流的测试脚本语言生成脚本,而且能够即时完成测试脚本语言的转换。

生成测试脚本后,我们可以编辑脚本来创建循环、条件语句或任何附加程序流程,以提升测试的价值。将测试脚本集成到持续集成(CI)服务器上,只需要少量的手工操作就可以将测试步骤整合到开发过程中。

云测试帮你提前完成任务

目前为止,在扩展测试覆盖度和减少测试时间方面最大的飞跃就是云测试的引入。在云端设置一个移动测试工具,手工测试和自动化测试的生产力,都能够大大提高,而且还能够增进敏捷开发过程的影响。

云测试的具体工作方式如下:首先将云测试工具加载到一台服务器上。一系列连接着移动设备的机器会连接到这台服务器上。通过这些机器,可以连接很多设备。通过这种方式可以创建一个内部移动设备实验室,测试人员可以访问任何连接着的设备。就是这么简单。

这让每一个移动应用测试人员都可以访问所有业务所需的设备。可能是20 个设备,也可能是200 个设备,甚至更多。这些拥有不同尺寸、版本和操作系统的设备,组成了一个大型的组合矩阵,可以覆盖相当大的测试区域。

对于敏捷开发来说,云测试非常完美。可以将测试人员和一些来自于开发运维部门各个部分的成员一同分配到某个指定的远程项目中。通过云端访问,测试人员可以对公司中所有的设备信手拈来。即使测试人员从一处办公地点搬迁到令一处办公地点时,所有这些移动测试装备都随时可以使用。

云测试扩展了手工测试和自动化测试的规模。测试人员不再限于只能使用连接到他个人电脑上的设备,他们可以远程连接到设备然后用桌面电脑上的设备屏幕映像来操作设备,通过这种方式,在云端的任意一台设备上进行手工测试或自动化测试。如果需要在某台指定设备上使用某个指定操作系统的指定版本进行测试,也不需要费尽心思在办公室寻找测试设备或者购买新的测试设备。只需要查看一下云端的可用设备列表,然后访问相应的设备即可。如果所需要的设备正在使用中,测试人员可以预定这台设备,并且可以根据所需测试的周期,保留对设备的独占访问。

通过压缩总体测试时间,云测试大大缩减了移动应用发布到市场的周期。质量保证经理可以通过将项目和设备分派给在不同的公司办公场所的测试人员,管理移动实验室中的所有设备。他们可以将一个任务分派给香港的测试人员。换班时,他们可以将该项目的后续工作分派给位于加利福尼亚的团队。再之后,剩余的工作将会安排给伦敦的团队。跨越不同的时区,测试团队可以创造一个永不停歇的测试流程,来自不同时区的测试人员将持续不断地进行应用测试,直到应用发布到市场上为止。

拥有适当的移动云测试工具的关键是安全。内部设备实验室应该在公司的防火墙保护之下,并且点与之间的信息传输也应该处于公司的VPN 环境中。

破冰之锤

利用合适的测试工具集,企业可以全面并有效地进行移动应用测试,这会大大降低由于资源不足而缩减测试范围的压力。如果移动应用的功能和性能有了保障,在与竞争对手的对抗中,你就已经成功了一半。测试也许不是移动开发过程中最具魅力的部分,但是好的测试策略所带来的成效却着实令人着迷。高质量的移动测试计划是移动化成功的隐形财富。

Experitest 的 SeeTest 测试套件可以满足目前移动应用所有必要的测试需求。

  • SeeTest Manual 是用鼠标和键盘进行手工测试的产品。该产品是免费的,随时可以下载并立即开始测试。
  • SeeTest Automation 通过让用户创建脚本并在多台设备上同时进行测试,可以加速测试的进程。这些脚本可以被转换成任何一种主流的测试语言,而且还可以将其整合到持续集成过程中。
  • SeeTest Network Virtualization 可以模拟任何本地网络,其中包括一些特殊的场景设计,例如用户进入电梯时或者火车通过隧道时。
  • SeeTest Cloud 可以利用上述这些工具在所有连接到个人电脑或者内部设备实验室的移动设备上进行测试。所有的测试工作都在公司的防火墙内部完成,保证安全性。

从这本移动银行测试的白皮书中,你可以看到一个关于大型企业如何部署SeeTest 产品套件的案例研究(该案例研究位于第29 页)。

所有的SeeTest 产品都可以通过_getDeviceLog_ 命令捕捉设备日志。如果只想要捕捉特定部分的日志,可以用SeeTest 命令清空定制的事件跟踪日志。如果想要获取SeeTest 应用的日志或者测试工具正在设备上跟踪的日志,可以用_getLog_ 命令。

SeeTest 还可以用于 CPU、内存和电池使用情况的监控。利用 _getMonitors_ 命令可以通过测试了解应用程序对设备的电池和内存的影响程度。

移动化是一个新兴的产业,带给我们前所未见的机遇和挑战。出色的工具能够快速适应变化的环境并且可以让你在这个快速扩张的市场中时刻准备好下一次飞跃。

关于作者

David Fink是业界领先的移动测试自动化、移动应用手工测试和监控工具提供商 Experitest 的市场经理。90 年代互联网热潮时期,David 曾就职于华尔街。看到当今移动产业正在发生同样的转变,写下了这篇文章向读者阐明企业保证产品完美运行的重要性,这样企业才能够为自己和用户创造一个更伟大的繁荣时代。

查看英文原文: Mobile App Testing - The Secret to the Perfect App

2015 年 4 月 10 日 04:393445
用户头像

发布了 75 篇内容, 共 58.4 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

java安全编码指南之:异常处理

程序那些事

java安全编码 java安全 java安全编码指南

Go编程(一) 怎么写Go代码

dongfanger

go 编程 开发

融云技术分享:基于WebRTC的实时音视频首帧显示时间优化实践

JackJiang

即时通讯 实时音视频 实时通信

甲方日常 24

句子

工作 随笔杂谈 日常

比曲婉婷云尽孝更可怕的是:2020年,低收入家庭仍然在被收割

成周

心理学 教育 培训 维权 曲婉婷

初学源码之——Spring IOC 应用

Java架构师迁哥

不一样的面向对象(三)

书旅

php 面向对象 面向对象编程

Java源码系列1——ArrayList

超超不会飞

Java

聊一下《技术力量-一线技术团队成功启示录》

Man

中台 研发管理

Go编程(二) 多线程简单斗地主

dongfanger

go 编程 开发

永续合约系统开发app源码,合约交易所平台搭建

WX13823153201

永续合约系统开发

作业帮基于Apache Doris的数仓实践

DorisDB

数据库 数据仓库 数据分析 OLAP 大数据架构

图解 K8S 源码 - Deployment Controller 篇

郭旭东

Kubernetes Kubernetes源码

DàYé玩转数据战略Step By Step

曲水流觞TechRill

数据中台 数字化

一篇文章搞定 Nginx 反向代理与负载均衡

哈喽沃德先生

nginx 负载均衡 反向代理 服务器 正向代理与反向代理

架构1期第三周作业一

道长

极客大学架构师训练营

架构1期第三周作业二

道长

极客大学架构师训练营

linux 文件权限控制

kcnf

linux 文件权限控制 acl

奈学:Java 和 JavaScript 是什么关系?

奈学教育

Java

JAVA集合之ConcurrentHashMap

彭阿三

Java JAVA集合

10多家公司的Java开发面试常见问题合集

Java架构师迁哥

Spring 5 中文解析数据存储篇-JDBC数据存储(下)

青年IT男

Spring5

2020年行摄回忆录(上)

穿过生命散发芬芳

生活 摄影

奈学:Java 和 JavaScript 是什么关系?

古月木易

Java

中国Prime会员独享巅峰64小时超长跨境网购时间

爱极客侠

数据挖掘技术在轨迹数据上的应用实践

滴滴技术

人工智能 数据挖掘 滴滴技术 轨道技术 创新公交

点对点音视频应用场景及优势

anyRTC开发者

音视频 WebRTC 直播 RTC 安卓

浅谈滴滴需求响应式公交背后的技术

滴滴技术

滴滴技术 创新公交 路径优化

第 0 次面试

escray

面经 大龄程序员 面试经验

查看mac电脑的温度信息, 并且给mac电脑降温

lmymirror

macos Mac terminal

国庆假期快来了,打开8天长假的正确方式是...

老胡爱分享

读书 书籍推荐 随笔杂谈

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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