软件测试52讲笔记--20 与时俱进:浅谈移动应用测试方法与思路

这是我购买的"极客时间"上的一套课程的笔记,总共52讲,定期对其中的内容做一笔记,巩固学习内容。

20 与时俱进:浅谈移动应用测试方法与思路

在作者看来,无论移动端和PC段测试,都属于GUI测试的范畴,所以基本的测试思路是相通的。所以之前所说的脚本分层的实现方法也同样适用于移动端的GUI测试。

移动端应用又可以进一步细分为三大类:Web App, Native App 和 Hybird App。

三类移动应用的特点

Web App本质上就是Web网页。
Native App:移动端的原生应用。
Hybird App:介于上述二者之间。

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

如果你的 Web 页面是基于自适应网页设计(即符合 Responsive Web 设计的规范),而且你的测试框架如果支持 Responsive Page,那么原则上你之前开发的运行在 PC Web 端的 GUI 自动化测试用例,不做任何修改就可以直接在移动端的浏览器上直接执行,当然运行的前提是你的移动端浏览器必须支持 Web Driver。

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

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

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

第一,交叉事件测试

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

此类测试目前基本是采用手工测试,并且在真机上进行,不会采用模拟器。

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

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

第二,兼容性测试

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

  • 不同操作系统的兼容性,包括主流的 Andoird 和 iOS 版本;
  • 主流的设备分辨率下的兼容性;
  • 主流移动终端机型的兼容性;
  • 同一操作系统中,不同语言设置时的兼容性;
  • 不同网络连接下的兼容性,比如 Wifi、GPRS、EDGE、CDMA200 等;
  • 在单一设备上,与主流热门 App 的兼容性,比如微信、抖音、淘宝等;

  • **兼容性测试,通常都需要在各种真机上执行相同或者类似的测试用例,所以往往采用自动化测试的手段。 **同时,由于需要覆盖大量的真实设备,除了大公司会基于 Appium + Selenium Grid + OpenSTF 去搭建自己的移动设备私有云平台外,其他公司一般都会使用第三方的移动设备云测平台完成兼容性测试。

第三方的移动设备云测平台,国外最知名的是 SauceLab,国内主流的是 Testin。

第三,流量测试

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

  • App 执行业务操作引起的流量;

  • App 在后台运行时的消耗流量;

  • App 安装完成后首次启动耗费的流量;

  • App 安装包本身的大小;

  • App 内购买或者升级需要的流量。
    流量测试,往往借助于 Android 和 iOS 自带的工具进行流量统计,也可以利用 tcpdump、Wireshark 和 Fiddler 等网络分析工具。
    Android:/proc/net/dev目录下存储网络流量信息;ADB工具获取实时流量信息;轻量级性能监控小工具Emmagee
    iOS:Xcode自带的Network Activity
    但是,流量测试的最终目的,并不是得到 App 的流量数据,而是要想办法减少 App 产生的流量。虽然,减少 App 消耗的流量不是测试工程师的工作,但了解一些常用的方法,也将有助于你的测试日常工作:

  • 启用数据压缩,尤其是图片;

  • 使用优化的数据格式,比如同样信息量的 JSON 文件就要比 XML 文件小;

  • 遇到既需要加密又需要压缩的场景,一定是先压缩再加密;

  • 减少单次 GUI 操作触发的后台调用数量;

  • 每次回传数据尽可能只包括必要的数据;

  • 启用客户端的缓存机制;

第四,耗电量测试

耗电量测试通常从三个方面来考量:

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

耗电量检测既有基于硬件的方法,也有基于软件的方法。
关于软件的方法,Android 和 iOS 都有各自自己的方法:
Android 通过 adb 命令“adb shell dumpsys battery”来获取应用的耗电量信息;
iOS 通过 Apple 的官方工具 Sysdiagnose 来收集耗电量信息,然后,可以进一步通过 Instrument 工具链中的 Energy Diagnostics 进行耗电量分析。

第五,弱网络测试

移动应用的测试需要保证在复杂网络环境下的质量。具体的做法就是:在测试阶段,模拟这些网络环境,在 App 发布前尽可能多地发现并修复问题。

在这里,作者推荐一款非常棒的开源移动网络测试工具:Facebook 的 Augmented Traffic Control(ATC)。
具体可以参考官方网站。

第六,边界测试

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

  • 系统内存占用大于 90% 的场景;
  • 系统存储占用大于 95% 的场景;
  • 飞行模式来回切换的场景;
  • App 不具有某些系统访问权限的场景,比如 App 由于隐私设置不能访问相册或者通讯录等;
  • 长时间使用 App,系统资源是否有异常,比如内存泄漏、过多的链接数等;
  • 出现 ANR 的场景;
  • 操作系统时间早于或者晚于标准时间的场景;
  • 时区切换的场景;

总结

  1. 移动应用根据技术架构不同,分为三大类。所用的测试方法本质上都属于GUI测试的范畴。
  2. 从业务角度来看,移动端的测试用例设计和传统PC端的GUI自动化测试策略相似,只是测试框架不同。
  3. 各种专项测试是移动应用的测试重点,有别于传统GUI测试。包括:交叉事件测试、兼容性测试、流量测试、耗电量测试、弱网络测试和边界测试。

【心得】
关于专项测试的总结很棒,尤其是作者列出的场景,可以根据自己所测产品的具体情况,参考之后整理成一份针对自己所负责产品的专项测试点,并据此编写测试用例。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,478评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 夜晚寂静,喧闹前的沉寂,明天就要离开这生我养我的小县城去很大的城市,心中怀着满满的激情与斗志,我不知道我能坚持多久...
    嘉园阅读 133评论 0 0
  • 隔了两天没有记录自己的心情,因为周末你来杭州了,你说:我知道你不会跟我回去,但我就是想见见你,想再劝劝你,然后...
    YAYA_badgirl阅读 166评论 0 0
  • Map和FlatMap的区别 如何实现线程并发 subscribeOn和observeOn 背压的原理
    SMSM阅读 217评论 0 0