移动测试往往是指对于运行在智能手机、平板电脑、以及其他移动设备上的移动应用程序,进行功能性、性能上、安全性、以及可用性等方面的检测过程。通过手动或自动化的测试方式,我们可以确保移动应用程序,既满足业务的需求,又能达到最终用户的期望。
通常,我们在手机上使用的移动应用程序有如下三种类型:
- 为特定平台设计的原生应用程序。它们往往配有相应的语言和SDK,而且是通过相应的应用商店被安装的。
- 由服务器端技术开发的、可以通过移动浏览器访问的移动Web应用。各种响应式网站和渐进式网络应用,都属于此类移动应用。
- 混合应用虽然可以在移动设备上运行,并通过应用商店来安装,但是它们是用Web技术开发的。与移动Web应用相比,这些应用可以使用到移动设备的内置功能和操作系统的各项服务。
在本文中,我们将专注于讨论如何测试各种原生的Android移动应用。
测试Android移动应用的要点
我们在日常开展针对Android手机应用的测试时,应当注意如下几个方面:
应用程序安装和卸载
为了提高并促进用户体验,请确保他们可以轻松地且正确地安装或卸载移动应用。同时,在处理应用的更新方面,您也应当十分谨慎。显然,静默的Android应用更新方式,会让用户因为无法控制自己设备上的内存空间,而拉低整体使用体验。因此,我们需要检查用户是否能够在应用有待更新时,及时收到相应的触发通知。
在互联网连接不稳定时的应用行为
互联网连接并不总是稳定流畅的,那么Android应用需要避免在手机出现断网时,发生意外关闭甚至崩溃的情况。为此,测试团队应该检查应用程序是如何处置间歇性连接、移动网络切换(例如从Wi-Fi到4G)、以及完全中断等场景。在这些情况中,手动测试往往更加合适,毕竟这样能够更好地模拟出各种生活中的真实使用场景。
电池消耗和设备性能
如您所知,即使用户尝试去手动关闭,大多数移动应用仍然会在Android的后台运行。如果这种消耗设备电池的方式持续下去,那么在某种程度上会缩短用户的使用周期。同时,设备的性能也会随着在后台运行应用程序的增多而下降。对此,QA团队的目标应当是确保当应用程序没有被持续使用时,不再消耗设备的电池。因此,他们需要仔细检查目标应用是否会在后台接收和发送各种数据。
安全性问题
虽然Android团队持续提高着安全标准,但是Android的开放性一直是安全漏洞重大的根源之一。与iOS相比,Android的发布政策要宽松许多,几乎每个人都可以在Google Play应用商店中发布自己的应用。因此,一旦用户安装了那些可能存在漏洞和易受攻击的应用程序,就可能会将病毒传播到该设备上的其他应用中。显然,这对于那些包含着敏感数据的应用而言,绝对是一种灾难。那么,为了尽可能地消除所有风险并保障安全态势,经验丰富的QA工程师会在执行功能与性能测试的同时,开展全面的安全性测试。
Android移动应用的自动化与手动测试
随着自动化测试日益受到关注,业界对于是否将自动化测试引入Android应用测试,众说纷纭。我的个人经验是:对于那些小而简单的Android移动应用而言,实施自动化测试的意义并不大。不过,如果碰到交付期限紧迫、市场用户群定位广泛、设备品类覆盖范围大等情况的话,您最好采用自动化测试的方式。
此外,对于性能测试而言,自动化测试要在效率上胜过手动测试。毕竟,它可以让QA团队通过更快、更高效的测试过程,来节省大量宝贵的时间、精力和资金。当然,性能测试与回归测试也应该通过选用目前市场上可用的自动化测试解决方案来实现。在该领域,适合Android应用自动化测试的工具包括:Appium、Android Studio、Selendroid、Espresso和Roboelectric等。
一般而言,自动化测试在整个测试过程中的最合适份额应当是70-80%。而对于某些特定的场景,手动测试仍是一种不可替代的方式。
Android移动应用测试的不同阶段
下面,我将向您介绍Android应用测试的各个主要阶段,以便您流畅地开展工作。
测试计划
常言道,全面的测试计划意味着成功了一半。可见,从一开始就定义并设计好移动应用测试的策略是至关重要的。在此阶段,QA团队需要明确测试的范围、功能覆盖率、设备覆盖率、所需资源、以及预计截止日期等要素。并且在此基础上,他们应当决定是否实施测试自动化,以及自动化的具体测试场景。
测试环境的设置
该阶段应准备好所有必需的测试设备。例如:是否需要使用模拟器、仿真器、云端设备、以及真实的移动设备。
测试用例/脚本编写
QA专家需要在决定测试哪些应用功能的基础上,开始设计与编写测试用例。从广义上讲,测试用例是一些基本的步骤列表,旨在检查应用程序在特定的情况下,是否可以按照预期运行或完成预定的任务。如果团队已经决定了使用自动化测试,去覆盖某些测试场景,那么就可以选用和定制由自动化工具提供的测试脚本。
测试执行和缺陷报告
通常,QA专家应从功能性测试开始,以确保Android应用的所有核心功能可以顺畅地运行。他们可以从手动尝试开始,如果被测应用(application under test,AUT)足够稳定的话,则可以转为自动化测试。
为了评估用户的体验,并了解被测的Android应用是否直观、易用、且没有UI上的缺陷,QA专家应继续开展UI测试和可用性测试。
接着,QA专家必须执行兼容性测试,以检查应用程序是否在所有可能被安装的设备型号上,都能正常运行。此类测试的必要性在于,可以极大地确保用户在各种可能用到的移动设备上,都能够得到满意的使用感受。
在完成了功能性测试后,QA专家就需要开展性能测试了。此类测试包括:容量测试、压力测试、稳定性测试、负载测试、峰值测试等。通常,性能测试会检查与估计内、外部流量与负载对于应用所产生的影响。由于只能在特殊工具的帮助下,才能模拟出所需的负载水平,因此性能测试在绝大程度上是需要依赖自动化的。
为了确保应用程序的安全性能够符合相应的标准,以及满足相关的合规,QA专家还需要开展安全性测试和一致性测试。当然,他们也可以按需进行安装测试、更新测试、中断测试、恢复测试、设备资源测试、以及网络配置测试等专业化的领域。
最后,QA专家可以按需与真实用户开展Beta/验收测试,以确保最终用户能够很好地接受AUT,并且能够在应用程序发布之前,根据实际情况酌情予以调整。
报告
最后一个阶段便是得出结论并提交报告。QA专家通过分析检测到的、有待修复的错误,识别出那些最易受攻击和产生错误的应用模块,并以综合性结果报告的形式,给出该Android应用是否适合发布的判断。
Android应用的常用测试工具
在了解了有关Android应用测试的整体过程后,我们最后来看看有哪些工具可以帮助QA团队有效地开展不同类型的自动化测试。下面便是我为您总结的一张常用工具列表:
- MonkeyRunner--https://developer.android.com/studio/test/monkeyrunner
- Appium--https://appium.io/
- Selendroid--http://selendroid.io/
- Espresso--https://developer.android.com/training/testing/espresso
- Robotium--https://github.com/RobotiumTech/robotium
- BrowserStack--https://www.browserstack.com/
- Ranorex--https://www.ranorex.com/
- UI Automator--https://developer.android.com/training/testing/ui-automator
- OWASP Zed Attack Proxy--https://owasp.org/www-project-zap/
小结
任何应用程序的成功不仅取决于它能够提供的功能集,更在于它可以交付的服务质量。因此,Android应用也不例外。这里所说的质量涵盖了:应用性能、稳定性、安全性、便利性、用户友好程度等多方面。
对此,经验丰富的QA专家会根据实际情况,进行各种不同的测试,以彻底检查并提高Android应用的软件质量和用户的满意度。虽然这需要耗费他们更多的时间和精力,去进行私人定制,但是对于Android移动应用的上新、以及高投资回报率的保障而言,是绝对值得的。
译者介绍
陈 峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。
原文标题:Testing Android Mobile Apps: Best QA Approaches and Tools,作者:Oleh Sadykow
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
原文链接:https://mobile.51cto.com/app-show-698203.htm