移动app测试的多样性_盘点移动应用测试的类型

随着智能手机的普及,移动app测试越来越重要。现在很多互联网都把注意精力放在了移动端,移动app尽量提供完美的用户体验。但是诸如崩溃,冻结问题,加载时间慢,不直观的导航以及侵犯隐私之类的严重错误可能会触发用户立即卸载应用程序。

现在,移动应用程序已成为我们日常微时刻不可或缺的一部分,人们平均每天花费3-4个小时。移动应用在职业和个人生活中对每个人都起着关键作用。

因此,手机移动端测试在构建移动应用程序以提供流畅的用户体验和功能方面扮演着重要角色。

移动应用测试金字塔

软件测试的人都知道Mike Cohn的测试自动化金字塔。典型的金字塔由三层组成。顶部是自动化集成测试层的中间,是一个自动化的端到端测试层(包括用户界面测试),而底部是自动化单元测试层。手动测试不是测试金字塔的一部分。每一层指示每个阶段应编写的测试数量,并具有不同的大小。

对于移动应用程序测试,典型的金字塔结构不适用于移动测试自动化。与Web或桌面应用程序不同,移动应用程序由不同的设备,传感器和网络组成,需要不同的测试模型。

移动应用测试

移动应用程序的测试金字塔由四层组成,包括手动和自动步骤。金字塔的最顶层是手动测试,并为每个移动应用程序项目奠定了坚实的基础,随后是端到端测试,beta测试以及包括单元测试的顶层。单元测试和端到端测试具有相同的颜色,代表自动化测试,而beta测试和手动测试则具相同的颜色,代表手动测试、Beta测试层对金字塔来说是新的,但对每个移动应用程序项目都至关重要。

这个金字塔中最大的变化是手工测试是其中的一部分。移动测试需要大量的手动测试,而这不能被测试自动化或任何其他工具所取代。

端到端和单元测试层以及beta和端到端层也可以交换。端到端测试和单元测试的数量可能因项目而异,也因应用程序而异。

在金字塔的顶部,有单元测试。为移动应用程序编写单元测试并不像后端或Web应用程序那么容易。应用程序可以使用太多的API和传感器,因此模拟所有这些接口以编写有效的单元测试确实非常困难且耗时。在许多情况下,需要伪造或mock不同的API,模块以使小型单元正常工作。从技术或经济角度来看,这是无效的。

移动应用测试的类型

功能测试

功能测试检查功能是否按要求工作。例如,它测试用户与应用程序的交互,例如启动应用程序,登录,播放歌曲,检查帐户余额和其他直接的用户流。

由于功能测试与应用程序的UI元素,数据库层,网络层以及其他方面交互,因此通常是耗时且复杂的过程。您需要在各种功能测试类型之间保持良好的平衡,以充分利用它。

回归测试

回归测试是检查新功能更新,补丁或配置更改时功能和非功能部分都没有带来新的响应或错误。回归测试确认开发锁进行的任何更改又要覆盖未更改的部分。

例如,许多软件即服务(SaaS)提供商将在每次软件更新时定期更新其功能或向其产品中添加新功能。为了确保其核心产品不受新功能的影响,这些公司将执行大量回归测试。

如果借助自动化测试,可以极大提升回归测试的效率,常用的开源框架有UiAutomator2和appium,以及少量基于坐标和图像的录制工具。

性能测试

移动应用程序性能测试是确定系统在特定工作负载或任务下如何响应的过程。通常,性能测试会测试应用程序的速度、稳定性和可伸缩性。它在客户端和服务器端都执行。在服务器端,它检查响应时间,流资源密集型数据包,消息传递延迟,应用程序崩溃等变化。在客户端,它检查各种平台和手机上应用程序行为的通常差异,内存和CPU消耗,加载速度和电池问题。

最常用的测试工具是Android SDK自带的monkey,他最大的缺点就是不确定性,因为monkey的操作完全是无序的,即使操作十万次都不一定有一组操作是能够发现BUG,且很难复现,极难排查问题,除非app出现崩溃和闪退等严重的现象。

目前比较流行的解决方案就是利用各家的云平台,通过云平台提供各类机型云真机,借助平台提供的基础脚本功能或者上传自己的测试脚本,设置一些简单的参数,即可等待云平台的测试报告。

安全测试

安全性对业务至关重要,当攻击者窃取客户数据时,安全性就成为移动应用程序开发和测试过程中非常重要的一部分。移动应用程序安全性测试是一个复杂的主题,需要许多不同领域的知识,例如客户端—服务器通信,软件体系结构和系统体系结构。由于其复杂的性质和所需的专门技能,安全测试最好由专家来完成。它包括诸如通过中间人攻击进行手动或自动渗透测试,模糊测试,扫描和审核软件的方法。

首先从代码安全说起,当前流行的Android开发语言有Java、kotlin,后者由于是Google主推的,所以份额越来越大。目前针对代码安全的扫描工具:Checkstyle、FindBugs、PMD、Jtest等。个人推荐findbugs,因为兼容性比较好,无论是IDE的插件或者Jenkins插件,基本上都是开箱即用,非常方便。跟其他代码管理工具搭配使用,案例Demo很多,资料也比较丰富。

其次APP的安全扫描工具有:Quick Android Review Kit (QARK),由领英开发,它是一款静态代码分析工具,可提供有关App安全威胁的信息,并给出简洁明了的问题描述;Zed Attack Proxy,全球最受欢迎的免费安全测试工具之一。它是一款开源安全测试工具,而且大部分控件显示支持中文;MobSF(Mobile Security Framework)是一款自动化移动App安全测试工具,同时适用于iOS和Android,可熟练执行动态、静态分析和API测试。

可用性测试

在可用性测试中,实际模拟用户检查移动应用程序的功能。该测试的主要重点在于简单,快速地使用应用程序,简单的入门以及用户对整个体验的满意度。

在测试环境中为用户提供了任务,并鼓励他们在尝试完成任务时大量思考。他们检查用户的不同习惯,以改善应用程序的用户体验。

兼容性测试

由于移动设备和平台的多样性,因此对移动应用程序进行兼容性测试是必不可少的。执行兼容性测试以检查应用程序在移动设备和浏览器组合中的行为是否符合预期。

兼容性测试中的以下实践可帮助覆盖最大数量的设备。创建设备兼容性库:获取市场上所有可用的设备或型号,并构建平台详细信息,设备支持的技术功能(音频/视频格式,图像和文档格式等),硬件功能的信息。设备以及设备支持的网络和其他技术功能。

将所有设备分为两个列表:完全兼容与部分兼容的设备。完全兼容的设备支持使所有应用程序功能无缝运行所需的所有技术功能,而部分兼容的设备可能不支持一个或几个功能,因此会导致错误消息。

浏览器和操作系统组合的测试基础架构是一项昂贵的事情。因此,这种方法是不可行且不可持续的。理想的方法是在云测试服务上测试功能,以便可以专注于测试而不必担心基础架构。也可以通过下载相应的WebDriver for Selenium使用Selenium编写自动测试脚本。

如果有足够的开发能力,也可以不使用第三方,也可以自己基于开源框架开发,最佳的实践无疑是Selenium Grid。现在,Selenium Grid可以并行运行测试用例。因为Selenium Grid有助于在本地、远程电脑上安装的特定浏览器上执行跨浏览器测试。然后可以利用Selenium中的并行测试功能来代替线性测试,从而降低总体项目成本,并在并行执行自动化测试时加快产品/功能迭代交付。

端到端测试

端到端测试是一种用于从头到尾测试应用程序流程是否按设计执行的方法。进行端到端测试的目的是识别系统依赖性,并确保在各种系统组件和系统之间传递正确的信息。整个应用程序都在真实的场景中进行了测试,例如与数据库,网络,硬件和其他应用程序进行通信。

用户验收测试(UAT)

用户接受测试(UAT)也称为Beta测试,是由真实用户执行的,通常用作产品发布之前的最终检查点。它使用户可以测试您的应用程序,并验证它是否对用户友好,是否按预期运行以及是否可以在现实环境中处理任务。通常,在UAT期间,项目经理,开发人员,质量检查团队和利益相关者可以进行最终检查。

移动自动化测试

移动测试自动化提供了以更高的测试覆盖率即时有效地测试移动应用程序的可能性。一旦测试自动化,就可以一次又一次地快速重复地执行它们。在几乎所有情况下,这都是具有较长维护寿命的软件产品的最具成本效益的方法。自动化的真正好处不仅在于测试的可重复性,还在于其执行可能甚至无法手动执行的测试的能力。

由于大多数公司都遵循敏捷开发实践,因此移动应用程序自动化测试非常适合敏捷过程。通过使测试可以并行完成,测试自动化可带来巨大的价值。尽早解决问题将节省大量时间,并使开发人员可以更快地完成产品的定型。

简而言之,移动自动化测试是一个常见问题的解决方案。自动化测试通过三种方式改善了业务结果:更高的测试效率,更高的测试效率和更短的迭代时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值