在我们的测试工作中,对于某个APP的测试其实有很多东西都是类似的可以抽象出来的,所以针对APP的测试过程和重点关注内容,做以下梳理和总结。
一、首先是测试资源确认及准备
1.1
产品需求文档、产品原型图、接口说明文档以及设计说明文档等应齐全;
1.2
测试设备及工具的准备:IOS和andriod不同版本的真机,以及相关测试工具的准备。
二、测试用例的设计与评审
(1)根据产品需求文档、产品原型图等文档,设计客户端的一般功能测试用例;
(2)测试用例评审、修改与完善,评审通过后着手进入正式测试阶段。
三、UI测试
(1)确保手头的原型图与效果图为当前最新版本,符合产品经理及用户要求;
(2)测试过程中一切以效果图为准,若有用户体验方面的建议,可以先以邮件的形式与产品经理确认,确认通过后,可以正式向开发提出用户体验方面的问题;
(3)由于测试环境中的数据为模拟数据,测试时必须预先考虑到正式环境中可能出现的数据类型。
四、功能测试
(1)功能测试时主要依据编写的功能测试用例进行软件功能的遍历;
(2)涉及的测试主要包括基本功能测试,安装、卸载、运行测试,异常处理(包括网络突然断开或者网速过慢、机器内存不足等异常情况的处理)测试。
五、中断测试
(1)软件运行过程中接电话、收短信、锁屏、闹铃、充电,收到通知提醒后再使用软件,软件应仍可正常运行使用;
(2)软件运行时,由前台切换到后台,再切回前台后,应仍可正常运行使用。
六、兼容性及适配测试
(1)硬件的适配:不同手机厂商、硬件性能,不同屏幕大小的适配;
(2)OS版本的兼容:IOS6-9;Andriod3以上等,如果用了一些新的API在老的系统上不支持会导致crash;
(3)不同分辨率屏幕的适配:移动设备的分辨率多种多样,如果APP没有做比较合适的处理就可能会显示不好,甚至影响功能的操作。
(4)兼容性测试必须在一定数量的真机上进行,由于真机类型过多,尤其Android在做兼容性测试时,可以选取典型的几种运用较多的真机,进行兼容性测试;
(5)另外可以借助开源测试testin云测,进行更多机型的兼容性测试,testin云测提供基本的运行情况和一些截图,以及简单的测试报告,有助于扩大测试的范围。
七、性能测试
(1)客户端性能测试重点关注:安装卸载时间、启动时间、页面加载时间、主要功能占用的CPU、内存、流量、耗电量等,以及与同类产品相比较是否有优势;
(2)其中页面加载时间可以利用Android调试工具DDMS获取到,在DDMS里面搜索Displayed关键字就可以看到页面加载时间;
(3)运行过程中主要功能占用的CPU、内存、流量等可以借助开源工具emmagee(适用于Android)获取到;
(4)至于服务器端的性能,主要利用接口对服务器施加压力,重点关注响应时间、吞吐量、并发数、事物通过率等,可以视同工具loadrunner、jmeter进行测试。
八、稳定性测试
8.1
安卓APP的稳定性常常使用monkey命令进行测试,通过随机事件流模拟人的操作,对检查程序的内存溢出、空指针有很大的作用。
8.2
Monkey主要用来检测系统ANR及Crash等问题
九、测试分析及测试报告输出
以上各项测试结束后,应该形成完整的分析及报告文档(包括buglist、性能及稳定性结果分析,版本上线风险分析等内容),输出给各项相关人员。
十、移动端测试用例的实践经验
每种测试方法其实都有一个最佳测试时间,如在版本测试阶段,我们应当要先做基本功能测试,边界分析测试和中断,交互功能测试,快速发现bug提单给开发去快速修复,保证主体功能可以尽快得到保证,而不是一开始就先纠结与性能,压力和兼容测试。一方面这类测试往往所消耗的时间会很长,降低了发现bug的速度,另一方面先做这部分测试后,再去发现主体功能的bug,那么在开发人员动了大量代码之后,还是要再执行一遍性能,压力和兼容测试的相关用例,不仅劳命伤财,效果还事倍功半。
所以在实际项目测试中,当前我们的项目将测试内容分为功能测试,兼容性测试,性能测试,稳定性测试四项,分别在不同的测试阶段进行(具体排期在测试计划时确定):
(1)功能测试 —— 版本测试阶段
(2)兼容性测试 —— 回归测试阶段前期
(3)性能测试 —— 回归测试阶段,版本功能稳定后执行
(4)稳定性测试 —— 贯穿整个测试阶段,每晚执行monkey
因此我们的功能用例更多的会使用『基本功能测试』,『边界分析测试』『中断功能测试』『交互功能测试』这几类测试用例设计方法。具体大家在做 项目测试时,也建议通过实际情况做调整。
荀子曰,”不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之,学 至于行止矣。”上文讲的方法论,只有通过大量的坚持实践和不断的总结积累,才能打破固有思维,提升自己的测试用例设计能力。因此我们也提炼了一些移动客户端的常见功能的测试用例设计点,这里就提供下我们总结的APP页面类型功能的测试点,大致如下:
1. UE体验
(1)布局与交互图保持一致
(2)真机效果与UE图没有视觉上的严重偏差,如字号,字体大小,加粗,字体颜色,行高,行间距,按钮摆放位置,间隔,尺寸等。
(3)资源图正确使用,没有不必要的拉伸,压缩或其他效果。
(4)各种提示,文字通顺不产生歧义,展示符合用户使用习惯。
(5)动画效果不卡顿,正常展现。
2. 页面操作
(1)是否有防重复点击,即连续快速点击不会出现多个页面或弹窗
(2)单指滑动,单指单击,单指双击,单指长按,单指缩放,多指点击
(3)摇一摇,横竖屏切换,前后台切换
(4)长时间使用,长时间放在后台
3. 不同场景下的页面操作
(1)不同网络,弱网下的页面跳转,点击响应的展现效果
(2)修改本地参数后的页面操作展现效果,如修改日期,时间,时区,语言,键盘等
(3)修改系统权限后的页面操作展现效果,如打开关闭定位,摄像,照片,通讯录等的授权等
(4)页面操作过程中有系统打断,如来电,短信,闹钟提醒,日历提醒,蓝牙提醒,插拔数据线,插拔耳机,待机,锁屏,低电量提醒等
(5)页面操作过程中进行前后台切换,如当页面数据交换时,有弹窗,提示框的时机进行切换容易发现问题。
(6)针对非主线程调用的接口,前端要对异常及无网络情况做异步处理,不提示异常且不影响主线程操作。
4. 页面数据获取和展现
(1)页面是否有缓存,缓存机制是怎样的,缓存的内容有哪些
(2)在提交页面数据失败后是否有重试机制,重试的接口参数是否保持不变
(3)在页面操作过程中,异步接口返回的内容,是否对用户透明(客户端兼容忽略请求返回msg)
(4)在页面操作过程中,对于接口返回的异常数据,客户端需兼容,保证程序不crash。
5.写在后面的话
在管理团队的过程中,经常有测试人员会跟我抱怨开发人员不重视我们,测试地位很低等等。其实这个现象挺正常的,当我们基础的测试工作没有做好,线上漏测多,测试结论经常被推翻时,我们在测试方向上的专业性就会受到质疑,人家都不相信你了怎样还能重视你?