目录
一、基础篇
1、请介绍一下,APP测试流程?
2、APP测试需要提前准备哪些测试资源?
3、APP测试和Web测试的区别?
4.、相对于 Wed 项目,APP有专项测试
4、Android手机和IOS手机,系统有什么区别?
5、IOS和Android的APP测试有什么区别?
6、介绍一个APP抓包工具?
7、APP日志如何抓取?
8、常用的adb命令有哪些?
9、adb三个组件是指?
二、进阶篇
1、介绍一下Android四大组件?
2、Activity生命周期?
3、请介绍一下,Android SDK中自带的几个工具?
4、你所了解的APP测试工具?
5、介绍一下冷启动、暖启动、热启动、首屏启动?
6、谈谈对冷启动的理解?
APP测试流程与web测试流程类似,分为如下七个阶段:
1.根据需求说明书编写测试计划;
2.制定测试方案,主要是测试任务、测试人员和测试时间的分配;
3.测试准备,包括搭建测试环境,准备测试数据,确定测试方法;
4.测试用例的设计与编写,进行用例评审及补充完善;
5.执行测试时首先进行冒烟测试,然后对主功能流程进行测试,包括客户端的单个功能模块,及功能业务逻辑功能交互,回归测试;
6.提交测试结果,包括测试用例,测试计划;
7.日常维护性测试;
APP测试周期可根据项目的开发周期来确定测试时间,一般测试时间为两三周,根据项目情况以及版本质量可适当缩短或延长测试时间。
具体要准备的测试资源,根据实际项目来,可以从以下几个方面出发:
1.IOS设备、Android设备(选取市面上主流手机产品);
2.支付宝/银联支付的项目,需要提前申请支付宝/银联账户等等;
3.有秒杀专题的题目,需要规划秒杀时间表;
4.有优惠券使用的项目,需要添加优惠券数据;
单纯从功能测试的层面上来讲的话,APP 测试、web 测试在流程和功能测试上是没有区别的。
相同点:
1.同样的测试用例设计方法;
2.同样的测试方法:都会依据原型图或效果图检查UI;
3.测试页面载入和翻页的速度、登录时长、内存是否溢出等;
4.测试应用系统的稳定性;
不同点:
1.系统结构方面
2.性能方面
3.兼容性方面
1)干扰测试:中断,来电,短信,关机,重启等。
2)弱网络测试(模拟2g、3g、4g、5g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g、5g/wifi 等)。
3)安装、更新、卸载,中断、前后台切换。
4)界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换。
5)安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等。
6)边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等。
7)权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等。
5.测试工具方面
1.两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
IOS 沙盒运行机制:
Android 虚拟机运行机制:
2.两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
3.IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。
1.物理按键:Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;iOS所有的返回上一层,只能靠页面功能实现。
2.多分辨率测试:Android端20多种;IOS较少。
3.手机操作系统:Android较多,IOS较少且不能降级,只能单向升级;新的IOS系统中的资源库不能完全兼容低版本中的IOS系统中的应用,低版本IOS系统中的应用调用了新的资源库,会直接导致闪退。
4.操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等。
5.push测试:Android点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;IOS点击home键关闭程序和屏幕锁屏的情况(红点的显示)。
6.安装卸载测试:Android可以通过手机自带的应用市场或者是第三方的手机助手进行下载,下载和安装的平台和工具和渠道比较多;IOS主要有app store,iTunes和testflight下载。
7.升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号)。
8.支付方式:对于一些有内购功能的APP,Android直接调用第三方支付渠道完成支付;IOS需要先在APP store里绑定支付方式,然后通过APP store去完成支付操作。
9.消息推送机制:Android使用第三方或者自建平台进行消息推送;IOS的消息推送渠道由苹果官方提供。
一般用Fiddler,主要用来做app抓包使用,先在Fiddler客户端做好各项配置,端口设置为8888;然后在手机上设置代理,就可以抓包,主要看的是服务器返回的值、还能够修改传入参数、传出的参数、模拟网络延时,构造不同场景。
1.查看帮助手册列出所有的选项说明及子命令:
adb help
2. 获取设备列表及设备状态:
adb devices
3.安装应用:adb install 路径\xx.apk, 安装应用;adb install -r 重新安装。
adb install
adb install -r
4. 获取设备的状态,设备的状态有 device , offline , unknown3种,其中device:设备正常连接,offline:连接出现异常,设备无响应,unknown:没有连接设备。
adb get-state
5.卸载应用:adb uninstall <包名>, 后面的参数是应用的包名,区别于 apk 文件名。
adb uninstall
6.将 Android 设备上的文件或者文件夹复制到电脑本地:adb pull <远程路径> <本地路径>, 如复制 Sdcard 下的 pull.txt 文件到 D 盘:adb pull sdcard/pull.txt d:\,重命名:adb pull sdcard/pull.txt d:\rename.txt。
adb pull
7.推送本地文件至 Android 设备:adb push <本地路径> <远程路径>, 如推送 D 盘下的 ITester.txt 至 Sdcard:adb push d:\ITester.txt sdcard/ (注意sdcard 后面的斜杠不能少)。
adb push
8.结束和启动adb服务:adb kill-server /adb start-server , 结束 adb 服务/启动 adb 服务,通常两个命令一起用,设备状态异常时使用 kill-server,运行 start-server 进行重启服务。
adb kill-server
adb start-server
9.打印及清除系统日志:adb logcat , 打印 Android 的系统日志 ;adb logcat -c,清除日志。
adb logcat
adb logcat -c
10.查找包名/活动名
adb logcat | findstr START
ADB作为一个客户端/服务器架构的命令行工具,主要由3个部分组成。
Android四大基本组件:Activity、BroadcastReceiver广播接收器、ContentProvider内容提供者、Service服务。
生命周期即活动从开始到结束所经历的各种状态,从一个状态到另一个状态的转变,从无到有再到无,Activity本质上有四种状态:
如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。这种非正常情况下,系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息,同时,当Activity被移动到前台时,重新启动该Activity并调用onRestoreInstance()方法加载保留的信息,以保持原有的状态。
在上面的四中常有的状态之间,还有着其他的生命周期来作为不同状态之间的过渡,用于在不同的状态之间进行转换。
有如下几个工具:
常用的APP测试工具如下,,查看对应工具地址。APP自动化测试工具:
APP稳定性测试工具:
APP性能测试工具:
APP弱网测试&抓包工具:
APP兼容性测试工具:
APP安全测试工具:
APP启动会发生多个事件,测试人员需要知道整个环节是否出现问题,需要了解到具体是哪个环节存在问题:
标准:
整个启动过程可以用adb工具进行分析,利用adb logcat获取启动数据,或者录屏,使用ffmpeg拆帧分析。
首先定义一个变量,这个变量填写用到的包名。
清除缓存数据:
停止进程:
通过以上命令就做好了冷启动的环境,下面启动app并获取数据。启动App
获取数据:
获取的时间如下:
应用的启动可以分为冷启动,热启动和温启动,而启动最慢、耗时最长的就是冷启动。
冷启动开始时,系统会依次执行三个任务去启动APP:
在这三个任务执行后,系统创建了应用进程,那么应用进程接下来会执行下一步:
当应用进程完成初始绘制之后,系统进程用启动页的Activity来替换当前显示的空白Window,这个时刻用户就可以使用App了。