读书笔记——陈晔《大话移动APP测试 Android与iOS应用测试指南》

第1章 移动互联网面试

1.1 为什么要面试

与陌生人打交道、沟通、学习、发现自身缺陷、总结、提升。

1.2 面试的流程

笔试、自我介绍、技术面、HR面

1.3 面试的频率

定期面试,积累经验

1.4 面试实战

1.5 如何正确地招聘测试人员

第一,应聘者从事测试工作的原因。
第二,应聘者测试用例的设计能力。典型题
第三,考核应聘者作为测试人员的基本素质。
第四,考核应聘者的专业技术能力。
第五,考核应聘者的态度。

1.6 移动互联网测试招聘现状

1.7 大公司和小公司

总之一句话,不能混日子,要善于利用不同的资源发展自己的能力。

1.8 测试外包

不要沦为廉价劳动力。

第2章 病态的现状

没啥可说的。

第3章 用户体验测试

3.1 移动互联网与传统互联网体验上的区别

3.1.1 区别一————用户关注点

3.1.2 区别二————场合复杂化

3.1.3 区别三————时间碎片化

3.1.4 区别四————输入困难化

3.2 Android VS iOS

3.2.1 桌面

3.2.2 联系人

3.2.3 短信

3.2.4 历史应用

3.2.5 相册

3.2.6 其他

3.3 “愚笨”的用户————用户引导

引导界面最多不要超过4页、突出重点、零学习成本。
应用启动时间不要超过3秒,可以在这3秒展示自己产品的logo,理念等。

3.4 “捣乱”的用户————应用容错

3.4.1 注册与登录

复杂的密码策略可以导致50%的用户直接放弃注册,所以不要太复杂。
应用需要在错误发生的时候保留用户已经输入的正确数据,同时给出确切的错误提示信息。
密码的安全级别。比如tumblr.的设计,在输入框的右方加一个类似于“能量条”的指示栏。

3.4.2 断网引发的问题

测试第1次启动应用时断网、弱网;
测试第n次启动应用时断网、弱网;
提示信息通俗易懂,不要太过专业。

3.5 专业精神————风格一致性

3.5.1 应用与系统风格一致

比如Evernote在这一点上就做的特别出色,在Android和iOS系统上的界面设计与交互分别与各自系统风格一致。

3.5.2 应用本身风格一致

比如返回按钮、弹出提示框、下拉菜单、颜色等设计是否在不同的界面上风格一致。

3.6 “我”即最终用户:过程体验测试

移动应用的核心功能应该月简单越好。
从不同角度体验应用的使用过程,找出可能会让用户感动困惑、厌烦的地方。

3.7 使用更多的应用:对比体验测试

定期体验国外的应用,学习他们的一些内涵和创意。

3.8 模拟场景体验测试

应用定位要准确,不要盲目添加很多复杂功能。
场景测试就是一种模拟用户实际会使用到,会遇到的场合进行测试,而非自由测试或者根据测试用例进行测试。
在模拟设计场景用例之前,必须先了解清楚针对的用户群体,包括他们的年龄、生活习惯特征等。

3.8.1 应用一:智能手机输入法

3.8.1 应用二:智能机顶盒

3.9 用户究竟关心什么?

3.9.1 用户只关心应用能在自己手机上正常运行

Android的碎片化和iOS的yueyu都让“不能运行”屡见不鲜。

3.9.2 用户隐私权限

很多应用都会偷偷在后台收集用户的数据。

3.9.3 简洁、方便

让小白用户一用就明白。

3.9.4 消耗

比如收费、应用大小、应用本身对于系统的电量以及网络流量的损耗。

3.9.5 好不好用

3.10 用户体验的问题是Bug吗?

肯定是Bug,一定要记录在缺陷管理系统中。
移动互联网用户的关注点首当其冲就是应用体验。一款应用不会因为没有一个bug而闻名全球,但绝对会因为很好的用户体验而惊艳四座。

3.11 如何提升自身的用户体验经验?

使用大量的应用。
让现实中的用户来使用。
在应用中添加数据统计的功能。
适当地阅读一些设计方面的书籍,和交互设计师进行沟通。

第4章 功能测试要点

4.1 多分辨率测试

尽量使用真机测试,在模拟器上的测试结果仅供参考。

4.2 多系统测试

4.3 用户不同的使用习惯 

4.3.1 Android权限问题

作为测试工程师,需要了解被测对象使用了哪些权限,为什么使用,是否会对用户造成困扰等问题。

4.3.2 Android硬件问题

比如双卡双待、摄像头、GPU等。

4.3.3 Android操作习惯

用户常用的有菜单键、Home键、返回键、Home键长按(显示当前进程列表)、调整音量、待机等。相应的作为测试工程师我们需要考虑的项就变成了:

  • 应用中的Back键的事件是否重写了?在各个功能界面中点击Back键会有什么反馈?
  • 用户在应用各个界面点击Home键之后,再次打开应用的反馈:应用是默认处于后台的状态还是有结束生命周期。
  • 应用是否使用到菜单键,切不可遗漏这个按键和应用的交互。
  • 应用在任何状态下,系统进入待机或者关机。当系统被重新唤醒后,应用处于什么状态,是否有正确的反馈。
  • 应用进程被用户手动关闭之后,是否可以再次正确启动。
  • …………

4.3.4 Android数据的移动或清空

用户会在软件没有响应或者出现重大缺陷时,点击强制停止按钮。或者在手机变卡后选择清空数据来是否自己机器的空间。

4.3.5 iOS操作习惯

用户常用的操作有单击Home键、双击Home键、关闭当前某应用进程、打开或关闭音量、调整音量、待机等。

4.3.6 iOSyueyu问题

常见yueyu工具:红雪、绿毒和jailbreakme。yueyu之后,常见问题就是系统变得不稳定,应用之间发生冲突。比如
1.输入法
尝试在应用的输入框中使用不同的输入法,因为很多用户yueyu之后最先做的就是安装自己喜欢的输入法,但是这些输入法往往就是导致很多其他应用崩溃的罪魁祸首。
2.美化主题类的插件
3.垃圾插件或手机管理软件

4.4 网络的不稳定性

需要将网络连接不上、无网络、企业服务器错误等各种情况予以考虑并进行细化的测试。建议:

  • 网络不稳定,没有的到服务器的反馈-->提示“网络不稳定,请稍后再试”。
  • 网络没有连接-->提示“网络目前没有连接,请重新连接网络之后再尝试”。
  • 企业服务器或者第三方服务因未知原因出错-->提示“目前无法接收相关数据,我们正在调查,请稍后再试”。
  • …………

另外,不同网络之间的切换也要进行模拟测试。

4.5 安装/卸载测试

用户安装方式主要有:

  • 使用adb install <package name>进行安装;
  • 使用第三方软件(比如豌豆荚、91助手等)安装;
  • 将应用先下载到SD卡中再进行安装;
  • 一部分数据量大的Android应用(一般是游戏)会采用小体积的应用安装,之后通过在线下载数据的方式使用。

应用安装之后,还要重点查看以下几点:

  • 不联网的情况下是否能正常运行,会不会崩溃?
  • 在线下载数据不完整,能否再次启动?
  • 是否支持断点续传?
  • 下载完整之后,再次启动。
  • 安装成功后,检查版本号以及相关数据。

4.6 升级测试

升级应用必要条件:旧版本应用和新版本应用拥有相同的签名、包名,有一个标示符(比如版本号)来区分。

4.6.1 增量升级

增量升级也叫做差分升级(Smart APP update)。
优点:用户不必再下载一个完整的Apk进行安装。
缺点:不需对发布的所有旧版本和最新版本做差分,很麻烦;如果一部分系统没有拿到内置应用的权限,那么就没有办法进行增量升级。

4.6.2 内置应用升级

注意每次升级之后的应用是否与内置在系统中的.os文件匹配,如不匹配则会直接导致应用崩溃。
升级测试场景还有很多,以后再做补充。应用升级并非仅仅检查新功能或做冒烟测试,更多的是去了解升级的原理,升级到底更改了哪些文件,而这些文件又影响力哪些功能和数据库,找到这些问题的答案才能有针对性的进行全面的测试。

4.7 并发测试

这里说的并发是指多个应用同时启动或多个事件同时触发的情况。

4.7.1 弹出框提示

比如闹钟、低电量、短信、来电等的提示。测试工程师需要关注应用是否能在暂停时候正常继续运行。

4.7.2 另一个应用启动

比如正在使用一个应用,此时有一个来电,或是用户按下快捷键启动相机等诸如此类的情况。
一般这类场景需要特别注意应用几种场景的特殊状态:

  • 应用正在播放视频;
  • 应用正在向服务器连接发出或接受请求;
  • 应用正在下载数据或升级;
  • 用户正在进行输入等。

PS:联想到我现在正在使用的微信读书APP,每次我在听书时,手机响起闹钟或者来电提示,我关闭后,听书进度立马回到我本次打开APP时开始听书的地方。这个bug真的令人难以忍受。

4.7.3 关机或待机

关注恢复正常后应用的功能是否正常、数据是否丢失。

4.7.4 功能冲突

比如音乐和语音功能冲突。

4.7.5 可存储设备

当把智能机当做移动存储设备时,再使用应用时,就很容易导致应用的崩溃。

4.8 数据来源

比如一个输入框,输入字符串主要有4种形式:

  • 直接输入;
  • 选择软件提供的选项;
  • 从粘贴板中复制粘贴获取;
  • 语言输入等。

4.9 推送

推送测试要点:

  • 智能机在关机、待机、打开等状态下执行推送的功能,消息显示以及推送跳转等是否正确?
  • 应用在打开、未打开状态,应用启动且在后台运行等情况下,查看推送的功能、消息显示以及推送跳转是否正确?
  • Android系统和iOS系统虽然都有推送这种功能,但是使用的机制完全不同,需要对两者同时关注多次推送以及推送的成功率。
  • 推送本身分成主动推送和被动触发推送(某些业务场景触发的回调推送)。很多测试工程师在测试的时候,为了图方便,会让服务器直接发送推送从而测试这个功能,其实即使通过这样的测试,依然无法确认回调的推送就是正确的,这一点要注意。
  • 推送的消息在阅读前后,其标示消息数量的数字是否改变?
  • 单条或多条推送的文字显示以及跳转界面是否正确?
  • 多语言系统环境下,推送的本地化翻译信息是否显示正确?

4.10 分享跳转

分享跳转测试要点:

  • 同时关注Android和iOS两个平台的分享功能。
  • 如果分享之后的文案有动态变化,需要加以关注。
  • 分享到微博微信等应用之后,关注在这些平台上消息的来源以及点击之后的跳转是否正确。
  • 如果分享不成功,可能是账号绑定token过期造成的,故测试时模拟token过期变得非常重要。

4.11 小结

移动互联网应用实在太多,以上无法覆盖全部,仅是个人经历总结。

第5章 常用工具介绍和实践

5.1 Monkey

5.2 Emulator

5.2.1 模拟器和真机的差异

对应Android模拟器,一般大家都会在在eclipse或在终端中输入emulator -avd <emulator name>来启动。

真机分为两种:Android原生系统(比如Nexus系列)和厂商定制系统(比如锤子、索尼、小米等)。无论是哪种,模拟器都无法进行100%的模拟还原。所有在模拟器上进行的测试都仅作参考。

很多公司不可能拥有所有机型的真机,那又如何做测试呢?建议如下:

(1)统计自己应用被使用的数据
可以通过友盟或Flurry等在应用中的嵌入,得到应用在哪些机型上被安装了。排名前10的机型都是测试的重点。

(2)可参考兼容性测试平台的测试结果
比如Testin或百度的MTC平台,可起到参考作用。从实际的效果来看,两者对于应用的安装、启动、卸载等兼容性测试做的还是很不错的。

(3)保持和主流机型的用户的联系
在发布前联系这些用户帮助进行一些安装、使用核心功能的测试。效果很好。

5.2.2 Genymotion

Genymotion是第三方发布的一款拥有极速性能的Android模拟器。
官网:https://www.genymotion.com/

5.2.3 模拟器常用功能举例

(1)模拟来电

(a)输入adb devices命令查看模拟器所在的端口

(b)输入telnet localhost 5554来和模拟器连接(输入help可查看所有命令)

(c)输入gsm call 1555218135(模拟器默认的号码)

(2)模拟收到短信

输入sms send 1555218135 I am ChenYe

(3)将模拟器的电量变为10%的状态

输入power capacity 10

模拟器支持的功能非常多,详尽内容可参考Android SDK文档中有关emulator的描述。

5.3 MonkeyRunner 没看

5.4 Hierarchy Viewer 没看

5.5 DDMS 没看

5.6 Compatibility Test Suite 没看

5.7 Tcpdump/WireShark 没看

5.8 FindBugs 没看

5.9 Lint

5.10 反编译、重编译

5.11 Ant 没看

  • ant下载地址:https://ant.apache.org/manualdownload.cgi

5.12 Charles 没看

5.13 Instruments 没看

5.14 小结

第6章没看

第7章 移动应用测试案例实践分析

7.1 深入了解被测试对象

深入了解被测试对象,是为了尽量避免设计用例的遗漏。

了解产品的一些基础知识:
(1)产品有什么特点?
(2)产品所在的系统结构?(Android、iOS、...)
(3)产品本身的系统架构?
(4)用户最关心产品的功能是什么?

 7.2 多种数据来源

举例:上传图片功能的图片来源可能有:直接拍照上传;载入相册图片上传;上传不同分辨率、不同格式、不同大小图片等。
了解用户的使用习惯:自拍、拼图、修图、全景图片、电脑导入图片、各种应用或网站保存图片到本地,某些应用的临时文件等。
了解了这些用户的使用习惯后,我们才能据此分析出这些图片都有什么不同,分类测试。

7.3 在生活中使用产品 

日常使用可以帮助我们拓展思路,发现更多的使用场景,更好地设计测试用例。
举例:黑名单功能设计用例:添加号码、删除号码、界面显示(添加0个,1个,满屏、超过满屏时)、添加号码的来源(直接输入、选择某联系人、从童话记录中添加)、联系人的存储方式、号码的长度、号码的不同表现方式、双开双待手机等。

7.4 社交应用分层设计实践案例

社交应用大多是在客户端搭建一个框架,所有的图片、数据都是从服务器传递到客户端的。比如图片,的批示经过服务器压缩过之后再传给客户端,客户端以bitmap的形式绘制出来。大约有80%的数据由服务器返回,这必然是一个测试重点。编写测试用例后,我们一般有3种执行方法:

  • a.手动执行测试用例——苦不堪言、加班
  • b.界面自动化测试
  • c.分层测试

下面我们详细讲一下分层测试。首先我们对接口进行分层测试:

  • 第1层:单一接口实现 ---- 接口文档
  • 第2层:多个接口的组合封装实现 ---- 应用功能列表
  • 第3层:多个方法的组合封装实现 ---- 应用业务列表

当服务器接口测试有了保证之后,对接下来客户端的测试就可以再细分,之后使用各种方法进行测试保证,例如:

  • 界面自动化:可使用类似Instrumentation工具,来检查各个界面控件的位置,使用MonkeyRunner对每个界面做图形对比测试等。
  • 内存测试:使用类似Android的MAT、Systrace或iOS的Instruments针对某些内存消耗特别大的功能做测试。
  • 代码规范:使用Lint和FindBugs等工具测试。
  • 压力测试:客户端的压力处理用Monkey测试之外,还可根据需求自己编写相关压力测试的代码。
  • 客户端接口测试:类似于服务器的接口测试,只是使用的框架不同。
  • 单元测试:Mock各种场景对客户端的代码做测试。
  • ......

 7.5 联系人搜索案例测试设计实践

 本例使用的是代码自动化测试,我目前看不到,暂时先跳过吧。

 7.6 小结

第8章 性能测试介绍和实践

8.1 Emmagee

8.2 Instrumentation 没看

8.3 HPROF 没看

8.4 Gfxinfo

8.5 Systrace

8.6 TraceView 没看

8.7 Instruments--Leaks 没看

8.8 Android多分辨率自动化实践 没看

8.9 小结 没看

附录A 测试人员的自我修养(吐槽篇)

A1 学会提出和解决问题
A2 正确的自我审视
A3 不要被业界师父的讨论蒙蔽
A4 寻找测试的本质
A5 主观能动
A6 你真的会使用搜索引擎吗?
A7 每天都要学习
A9 小结

附录B 测试行业常见问题(Q&A篇)

Q1:没有做过测试的人怎么入门?

  • 推荐图书《测试之美》《微软测试之道》《Google软件测试之道》《rework》《高效能人士的七个习惯》

Q2:测试工程师要具备什么能力?
Q3:测试比开发技术含量低吗?
Q4:参加测试培训能有多少提升?
Q5:黑盒测试有价值吗?

  • 移动应用黑盒测试主要有2大点:1.功能场景测试;2.视觉、交互测试

Q6:手动测试有价值吗?
Q7:怎么做移动互联网应用的自动化测试?

  • 界面自动化——Robotium、Appium
  • 分层测试——Android举例:
  • UI层入手:Monkey、MonkeyRunner、NativeDriver、Sikuli、Instrumentation、Athrun、Cafe、Robotium、Appium等。
  • 应用代码层入手:robolectric、Instrumentation、TraceView、Java、C等。
  • 前后端结构入手:Instrumentation、Java、Python等。
  • 网络相关入手:Fiddler2、tcpdump、Charles等。

Q8:测试人员选择进入大公司还是小公司?

  • 小公司学技术,大公司学做人。

Q9:中国高校有软件测试专业吗?
Q10:小结

附录C 博客摘录

C1 我们需要专职的QA吗?
C2 学习让测试更精彩,测试让生命更精彩

  • 1.知己识人
  • 2.找到测试的意义
  • 3.心里素质
  • 4.主观能动
  • 5.乐观精神
  • 6.沟通能力
  • 7.分析能力
  • 8.条理性
  • 9.责任
  • 10.勇敢

C3 中国人的纠结

  • 1.软弱
  • 2.不愿去反省
  • 3.结果导向
  • 4.越老越好
  • 5.讲道德不讲道理
  • 6.磨平棱角,成熟的标志

C4 黑盒不是白盒的绊脚石

  • 做测试最重要的是思想、随机应变的能力、测试用例的设计以及一颗不停探索的心。

C5 测试需要反省
C6 《钝感力》有感——测试中的钝感力

更多的博客文章可见:http://blog.sina.com.cn/u/1881320895
更多的移动技术可见:https://testerhome.com/

posted @ 2020-04-11 22:23  zhengna  阅读(523)  评论(0编辑  收藏  举报