一、前言
移动端测试经过近十年的发展,方法和工具已经非常成熟。很多时候,我们不一定自己非得开发什么工具和平台,利用现有的工具,也能提高质量和测试效率。本文主要根据作者积累的App测试的方法和经验,总结一些App测试的技巧,以及如何利用工具提升测试效率。
二、App常用测试技巧
1. App测试的正确姿势
在进行App测试的时候,手机一定要连接到电脑,同时开启命令行抓取日志和网络抓包工具。这样,如果发现Bug,我们能第一时间通过错误日志和网络请求,分析定位Bug。常用的抓包工具,Windows下建议Fiddler,Mac下建议Charles。
2. 如何提供最有效的Bug信息
在保证产品质量的过程中,测试人员的主要工作在于发现产品研发过程中出现的各种Bug,开发人员根据我们的Bug描述,定位并解决Bug。由于问题的发现和解决并非同一个人,测试人员对Bug信息的描述就非常重要。那么怎样提供最有效的Bug信息呢?我提供几点参考。
- 复现步骤的描述能用视频尽量不用文字。
大部分的Bug系统都支持gif图片的展示。gif图片其实是一种网页端的视频格式。因为,如果我们把复现步骤录制成一个gif图片,附在Bug单里面,将会更加清晰明了。这里介绍一个录制gif视频的小工具:LICEcap,它可以快速对PC屏幕进行录制,然后转成gif视频,效果如下:
- Logcat日志不可少
通常开发同学会在代码中加入一些调试日志,一旦程序出现异常,会在日志中打印出来。因此,我们如果将Bug出现前后的日志截取下来,将会给开发同学的问题定位带来效率的提升。
对于实时日志的获取,Android系统可以通过Android sdk中的adb logcat工具抓取:
iOS通过libimobiledevice获取:
brew install libimobiledevice
idevicesyslog [-u ]
- 不要忽视网络请求
绝大多数的App产品都需要与后端进行交互。很多Bug有可能是后端返回异常导致的。因此,我们可以对发生Bug前后的网络日志进行抓取提供给开发同学。关于抓包方法的介绍参考庆丰的文章-移动应用抓包调试利器Charles。
3. 如何通过Mock测试提高效率
Mock一般是指模拟某个服务器接口的返回数据。在App的测试中,我们为了测试某个服务器接口的不同返回结果对前端交互的影响,经常需要反复构造不同参数的网络请求。这个过程繁琐又效率低下,其实最好的方法就是通过Mock工具,将请求的返回数据进行修改。
例如,对于我们熟知的登录接口,有登录超时、操作超时、登录被挤下线、登录系统繁忙、账户和密码错误、账户锁定、账户解密失败等多种情况。如果是在没有mock的情况下,我们需要实际构造10多种场景,有些比如系统繁忙,超时等场景通过传统的方法根本没法构造出来。利用Mock方法,我们可以借助一些工具,例如charles打断点,截取接口返回的response的json数据,进行一些模拟。
这里推荐的Mock工具还是Charles,它提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:
- Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
- Rewrite 功能适合对网络请求进行一些正则替换。
- Breakpoints 功能适合做一些临时性的修改。
具体的使用方法也可以参考庆丰的文章-移动应用抓包调试利器Charles。
4. 模拟器的妙用
我们的测试同学一般习惯在真机上进行测试,觉得这样更加符合用户的真实场景。其实,仔细想想你会发现,大部分的测试工作都是在验证产品本身的功能,与手机本身无关。那么我们是不是也可以在模拟器上进行测试呢?很多人可能会觉得Android自带的模拟器性能不好,但是现在市场上出现了很多非常优秀的模拟器,比如Genymotion,网易mumu,Droid4X等,这些模拟器的性能都与真机媲美,对于iOS系统,自带的模拟器我们就不用多说了。除此之外,我这里还要给大家说说模拟器的妙用。
(1)模拟GPS位置
大多数的Android模拟器都有位置模拟功能,我们设置特定的GPS位置,即可让你定位到指定的位置,从而测试需要区分地域的场景。
(2)设置分辨率
App测试中,我们经常需要测试不同屏幕尺寸,不同分辨率下的UI展示情况。通常的做法,是去购买各种屏幕尺寸和分辨率的手机,从而进行兼容性的测试。这样的做法适合土豪团队,同时效率也比较低下。从节约成本上来考虑的话,我们可以使用模拟器,Android的模拟器一般支持分辨率和屏幕尺寸的自定义设置,iOS可以启动不同机型的模拟器。
(3)快速截图和录制视频
真机上发现Bug,我们截屏后,需要将图片从手机传输到电脑,然后提交到Bug系统,这个过程影响工作效率。而且有的App还禁止了手机的截屏功能。在模拟上,我们不仅可以快速截屏,还可以用前面介绍的LICEcap工具录制gif视频。
5. 模拟网络环境
由于手机的移动性,App的网络场景非常复杂,网络丢包率和延时有时候会非常高。为了测试不同网络环境下App的功能是否正常,我们经常需要去一些信号不好的地方进行测试。其实也可以有便捷的方式模拟网络环境。常见的抓包工作Fiddler和Charles都支持丢包和延时的设置。只要我们知道不同网络场景的丢包率和延迟参数,即可通过工具模拟出来。然后通过手机连接模拟出来的网络进行测试。下面是常见网络场景的参数设备列表,仅供参考。
6. 免费的工具和平台
这里不做过多的介绍,具体可以参考我之前的文章-移动测试工程师必须知道的10个开源框架
三、总结
荀子说过“君子生非异也,善假于物也”。善于利用现有的工具解决实际问题,也是一项非常重要的能力。本文只是抛砖引玉,由于业务场景的限制,很多方法不一定是最好的,总结也不是很全面,欢迎大家多多留言,共同探讨。