移动端应用可以细分为三大类:Web App、Native App 和 Hybrid App。以下主要介绍这三类移动应用的测试方法,以及移动专项测试的思路与方法。

文章目录

  • 三类移动应用的特点
  • 三类不同移动应用的测试方法
  • 移动应用专项测试的思路和方法
    • 交叉事件测试
    • 兼容性测试
    • 流量测试
    • 耗电量测试
    • 弱网络测试
    • 边界测试
  • 总结

三类移动应用的特点

Web App 指的是移动端的 Web 浏览器,和 pc 端的 Web 浏览器无差,只是依附的操作系统不再是 Windows 或 Linux了,而是 IOS 和 Android。Web App 采用的技术主要 HTML5、JavaScript、CSS 等 Web 技术栈,另外,Web App 所访问的页面内容都是放在服务器端的,本质上就是 Web 网页,所以天生就是跨平台的。

Native App 指的是移动端的原生应用,对于 Android 是 apk,对于 IOS 就是 ipa。Native App 是基于手机操作系统,并使用原生程序编写运行的第三方应用程序。

Hybrid App 是介于 Web App 和 Native App 两者之间的一种 App 形式,它利用了 Web App 和 Native App 的优点,通过一个原生实现的 Native Container 展示 HTML5 页面。即在原生移动应用中嵌入了 Webview,然后通过该 Webview 来访问。

Hybrid App 具有维护更新简单,用户体验优异以及较好的跨平台特性,是比较主流的移动应用开发模式。从下图中可简单看出三类移动应用的架构原理。

三类不同移动应用的测试方法

对 Web App 本质就是 Web 浏览器的测试,典型的 GUI 自动化测试的方法和技术,如 数据驱动、页面对象模型、业务流程封装等都适用。如果 Web 页面时基于自适应网页涉及 (即符合 Responsive Web 设计的规范),而且测试框架如果支持 Responsive Page,那么原则上之前开发的运行在 PC Web 端的 GUI 自动化测试用例不做任何修饰旧可以直接在移动端的浏览器上执行,前提时移动浏览器是支持 Web Driver

其中,自适应网页设计(Responsive Web Design)是指,同一个网页能够自动识别屏幕分辨率、并做出相应调整的网页设计技术。

对 Native App 的测试,虽然不同的平台会使用不同的自动化测试方案(比如,iOS 一般采用 XCUITest Driver,而 Android 一般采用 UiAutomator2 或者 Espresso 等),但是数据驱动、页面对象以及业务流程封装的思想依旧适用,也可以把这些方法应用到测试用例设计中。

对 Native Container 的测试,可能需要用到 XCUITest 或者 UiAutomator2 这样的原生测试框架,而对 Container 中 HTML5 的测试,基本和传统的网页测试没什么区别,所以原本基于 GUI 的测试思想和方法都能继续适用。

值得注意的是,Native Container 和 Webview 分别属于两个不同的上下文(Context),Native Container 默认的 Context 为“NATIVE APP",而 Webview 默认的 Context 为“WEBVIEW_+ 被测进程名称”。

移动应用专项测试的思路和方法

移动端的测试除了使用的测试框架不同以外,测试设计本身和 GUI 测试有异曲同工之妙,但还有很多新的内容。对于移动应用,若只关注业务功能测试,那当被大量用户安装和使用时,就会暴露很多问题:

  • 流量使用过多
  • 耗电量大
  • 某些设备中断上无法顺利安装或卸载
  • 弱网下无法正常使用
  • Android 环境下,经常出现ANR(Application Not Responding) 等

这样的问题还有很多,为了避免或减少此类情况的发生,所以移动应用除了进行常规的功能测试外,通常还会进行很多移动应用所特有的专项测试。

这里主要从交叉事件测试、兼容性测试、流量测试、耗电量测试、弱网络测试、边界测试这 6 个最主要的专项测试来展开。

交叉事件测试

交叉事件测试也叫中断测试,是指 App 执行过程中,有其他事件或者应用中断当前应用执行的测试。

比如,App 在前台运行过程中,突然有电话打进来,或者收到短信,再或者是系统闹钟等等情况。所以,在 App 测试时,就需要把这些常见的中断情况考虑在内,并进行相关的测试。另外,此类测试目前基本还都是采用手工测试的方式,并且都是在真机上进行,不会使用模拟器。

采用手工测试的原因是,此类测试往往场景多,而且很多事件很难通过自动化的方式来模拟,比如呼入电话、接收短信等,这些因素都会造成自动化测试的成本过高,得不偿失,所以工程实践中,交叉事件测试往往全是基于手工的测试。之所以采用真机,是因为很多问题只会在真机上才能重现,采用模拟器测试没有意义。

交叉事件测试,需要覆盖的场景主要包括:

  • 多个 App 同时在后台运行,并交替切换至前台是否影响正常功能
  • 要求相同系统资源的多个 App 前后台交替切换是否影响正常功能,比如两个 App 都需要播放音乐,那么两者在交替切换的过程中,播放音乐功能是否正常
  • App 运行时接听电话、接收信息
  • App 运行时提示系统升级
  • App 运行时发生系统闹钟事件
  • App 运行时进入低电量模式
  • App 运行时第三方安全软件弹出告警
  • App 运行时发生网络切换,比如,由 Wifi 切换到移动 4G 网络,或者从 4G 网络切换到 3G 网络等

其实这些需要覆盖的场景,也是做测试的测试用例集,每一场景都是一个测试用例的集合。

兼容性测试

即要确保 App 在各种终端设备、各种操作系统版本、各种屏幕分辨率、各种网络环境下,功能的正确性。通常都需要在各种真机上执行相同或者类似的测试用例,所以往往采用自动化测试的手段。 同时,由于需要覆盖大量的真实设备。

可以基于 Appium + Selenium Grid + OpenSTF 去搭建自己的移动设备私有云平台外,也可以使用第三方的移动设备云测平台完成兼容性测试。第三方的移动设备云测平台,国外最知名的是 SauceLab,国内主流的是 Testin

常见的 App 兼容性测试往往需要覆盖以下的测试场景:

  • 不同操作系统的兼容性,包括主流的 Android 和 IOS 版本
  • 主流的设备分辨率下的兼容性
  • 主流移动终端机型的兼容性
  • 同一操作系统中不同语言设置时的兼容性
  • 不同网络连接下的兼容性,比如 Wifi、GPRS、EDGE(增强型数据速率GSM演进技术)、CDMA200(中国电信 3G 网络模式) 等
  • 单一设备上,与主流热门 App 的兼容性,比如微信、淘宝等。

流量测试

由于 App 经常需要在移动互联网环境下运行,而移动互联网通常按照实际使用流量计费,如果 App 耗费的流量过多,那么一定不会很受欢迎。

流量测试,通常包含以下几方面内容:

  • App 执行业务操作引起的流量
  • App 在后台运行时的流量消耗
  • App 安装完成后首次启动消耗流量
  • App 安装包本身大小
  • App 内购买或升级需要流量

流量测试,往往借助于 Android 和 iOS 自带的工具进行流量统计,也可以利用 tcpdump、Wireshark 和 Fidder 等网络分析工具。

对于 Android 系统,网络流量信息通常存储在 /proc/net/dev 目录下,也可以直接利用 ADB 工具获取实时的流量信息。另外 Android 的轻量级性能监控小工具 Emmagee,类似于 Windows 系统性能监视器,也能够实时显示 App 运行过程中 CPU、内存和流量等信息。

对于 iOS 系统,可以使用 Xcode 自带的性能分析工具集中的 Network Activity,分析具体的流量使用情况。

但是,流量测试除了得到 App 的流量数据,其目的是要想办法减少 App 产生的流量。减少 App 流量消耗的方法:

  • 启用数据压缩,尤其是图片
  • 使用优化的数据格式,比如同样的信息量的 JSN 文件就比 XML 文件小
  • 遇到既要加密又要压缩一定是先压缩再加密
  • 减少单次 GUI 操作触发的后台调用数量
  • 启动客户端的缓存机制 等

耗电量测试

耗电量是移动应用能否成功的关键因素之一。如果在功能类似的情况下,你的 App 特别耗电、让设备发热比较严重,那么你的用户就会卸载。最典型的就是地图等导航类的应用,对耗电量特别敏感。耗电量测试通常从三个方面考量:

  • App 运行但没有执行业务操作时的耗电量
  • App 运行且密集执行业务操作时的耗电量
  • App 后台运行的耗电量

耗电量检测既有基于硬件的方法,也有基于软件的方法。采用软件的方法,Android 和 iOS 都有各自自己的方法:

  • Android 通过 adb 命令“adb shell dumpsys battery”来获取应用的耗电量信息;
  • iOS 通过 Apple 的官方工具 Sysdiagnose 来收集耗电量信息,然后,可以进一步通过 Instrument 工具链中的 Energy Diagnostics 进行耗电量分析。

弱网络测试

移动应用的网络环境比较多样,常出现需要在不同网络之间切换的场景,即使是在同一网络环境下,也会出现网络连接状态时好时坏的情况,比如时高时低的延迟、经常丢包、频繁断线,在乘坐地铁、穿越隧道,和地下车库的场景下经常会发生。

所以,移动应用的测试需要保证在复杂网络环境下的质量。具体的做法就是:在测试阶段,模拟这些网络环境,在 App 发布前尽可能多地发现并修复问题。可以采用开源移动网络测试工具:Facebook 的 Augmented Traffic Control(ATC)。

它能够在移动终端设备上通过 Web 界面随时切换不同的网络环境,同时多个移动终端设备可以连接到同一个 Wifi,各自模拟不同的网络环境,相互之间不会有任何影响。也就是说,只要搭建一套 ATC 就能满足你所有的网络模拟需求。

边界测试

边界测试是指,移动 App 在一些临界状态下的行为功能的验证测试,基本思路是需要找出各种潜在的临界场景,并对每一类临界场景做验证和测试。

主要的场景有:

  • 系统内存占用大于 90% 的场景
  • 系统存储占用大于 95% 的场景
  • App 不具有某些系统访问权限的场景,比如 App 由于隐私设置不能访问相册或者通讯录等
  • 长时间使用 App,系统资源是否有异常,比如内存泄漏、过多的链接数等
  • 出现 ANR 的场景(是指在Android上,应用程序响应不够灵敏时,系统会向用户显示的一个对话框)
  • 操作系统时间早于或者晚于标准时间的场景
  • 时区切换的场景

总结

移动应用根据技术架构的不同,主要分为 Web App、Native App 和 Hybrid App 三大类,这三类应用的测试方法本质上都属于 GUI 测试的范畴。

从业务功能测试的角度看,移动应用的测试用例设计和传统 PC 端的 GUI 自动化测试策略比较类似,只是测试框架不同,数据驱动、页面对象模型和业务流程封装依旧适用

各种专项测试是移动应用的测试重点,也有别于传统 GUI 测试。专项测试包括:交叉事件测试、兼容性测试、流量测试、耗电量测试、弱网络测试和边界测试

移动 APP 的测试方法,以及移动专项测试的思路与方法相关推荐

  1. 移动应用专项测试的思路和方法

    对于移动应用,顺利完成全部业务功能测试往往是不够的.如果你的关注点只是业务功能测试,那么, 当你的移动应用被大量用户安装和使用时,就会暴露出很多之前完全没有预料到的问题,比如: 流量使用过多: 耗电量 ...

  2. APP性能测试——基于手机的专项测试

    转载自http://bbs.51testing.com/thread-1199231-1-2.html 我之前的APP性能测试是基于服务端的,这里收藏一个基于手机的专项测试. Android篇 性能测 ...

  3. 【软件测试工程师】App 应用测试方法以及测试思路

    分析三种主流的移动 App 类型,并给出和普通web测试不同的地方,给出测试的思路,并给出部分场景组合. 移动端测试还是 PC 端测试,业务测试其实都属于 GUI 测试的范畴,所以基本的测试思路,比如 ...

  4. App 应用测试方法以及测试思路……

    分析三种主流的移动 App 类型,并给出和普通web测试不同的地方,给出测试的思路,并给出部分场景组合. 移动端测试还是 PC 端测试,业务测试其实都属于 GUI 测试的范畴,所以基本的测试思路,比如 ...

  5. App 应用测试方法以及测试思路

    分析三种主流的移动 App 类型,并给出和普通web测试不同的地方,给出测试的思路,并给出部分场景组合. 移动端测试还是 PC 端测试,业务测试其实都属于 GUI 测试的范畴,所以基本的测试思路,比如 ...

  6. 移动app应用测试方法与测试思路(德鲁)

    1 三种移动端产品类型的介绍 2 移动端应用的测试其自身特点,和其他传统测试又有一些独特 3 测试方法和思路. 4 5 移动端应用又可以进一步细分为三大类: 6 Web APP 指的是移动端的Web浏 ...

  7. 移动应用专项测试思路和方法

    在之前的文章简单介绍了移动端应用类型及特点https://blog.csdn.net/dou_being/article/details/119304770,这篇文章主要介绍Web  App.Nati ...

  8. 移动 App 应用测试方法与思路

    移动 App 应用测试方法与思路 分析三种主流的移动 App 类型,并给出和普通web测试不同的地方,给出测试的思路,并给出部分场景组合. 附:安卓 App 测试常用 adb命令和 money 命令 ...

  9. Android 应用开发(28)----APP功耗测试方法

    APP功耗测试方法 业界比较难测试的一个测试,比如新旧版本对比不一定能说明问题,所以耗电量测试只能定量测试,作为辅助数据帮助我们测试.功耗测试可以基于硬件测试方法(第三方精密仪器)和基于软件测评方法. ...

  10. app常见的专项测试以及面试题

    1.为什么进行专项测试? 手工测试之后,自动化测试之后,接口测试,性能测试之后,线下环境.预发布环境都没有问题了,测试工作看似完整,但是到了用户生产环境,安装使用过程中还是有很多之前没有预料的问题被反 ...

最新文章

  1. 2010.10.30 OA 项目组一周工作报告
  2. 程序员四大焦虑瞬间:拿什么拯救你,我日益后退的发际线?
  3. WCF(Sender) to MSMQ to WCF(Receiver)
  4. Oracle用户密码过期和用户被锁解决方法【转】
  5. 子弹短信体验分析:一个单纯想“快”的IM工具 子弹短信体验分析:锤科情怀缩影,打败微信有点远
  6. 数据结构之最小生成树
  7. Spark RDD 复杂算子
  8. 机器人教练走进驾校_机器人教练走进中通驾校
  9. 字符串匹配代码C语言,KMP字符串匹配算法C语言实现
  10. 2018-01-03 烂尾工程: Java实现的汇编语言编译器
  11. Altium Designer 元件封装库与3D模型大全
  12. 《陶哲轩实分析》阅读
  13. 怎么购买虚拟主机合适?
  14. 迭代算法8——近似迭代法之求定积分
  15. 面部刮痧:别样的美丽疗法
  16. 惠普Z820安装win10系统攻略(固态作为系统盘)——思小瓜
  17. Beanstalkd源码分析—bury和kick命令的实现
  18. 企业架构TOGAF介绍
  19. 添加新的iconfont图标的方法(看了就会)
  20. 将EBAZ4205 ZYNQ 变为 OpenWrt 旁路由

热门文章

  1. linux phy fixed-link
  2. 【Linux】Ubuntu使用FlashFXP(FTP客户端)
  3. 解决 button 的背景图片被拉伸
  4. 手机怎么识别图片上的文字
  5. 计算机之父:天才冯·诺依曼的一生!
  6. 写得太好了,大约《越狱》批评(发布)
  7. Springboot 中类不能使用@Value注解从yml中加载值
  8. java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted
  9. 公众号点击图片变成另一张_朋友圈也能发九宫格图片,再也不犯选择困难症
  10. AddressBook 相关操作小计