功能测试点
用户使用习惯
权限问题
硬件问题
比如双卡双待、摄像头、GPU等。
操作习惯
用户常用的有菜单键、Home键、返回键、Home键长按(显示当前进程列表)、调整音量、待机等。相应的作为测试工程师我们需要考虑的项就变成了:
• 应用中的Back键的事件是否重写了?在各个功能界面中点击Back键会有什么反馈?
• 用户在应用各个界面点击Home键之后,再次打开应用的反馈:应用是默认处于后台的状态还是有结束生命周期。
• 应用是否使用到菜单键,切不可遗漏这个按键和应用的交互。
• 应用在任何状态下,系统进入待机或者关机。当系统被重新唤醒后,应用处于什么状态,是否有正确的反馈。
• 应用进程被用户手动关闭之后,是否可以再次正确启动。
APK(全称:Android application package,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。
数据移动
用户会在软件没有响应或者出现重大缺陷时,点击强制停止按钮。或者在手机变卡后选择清空数据来是否自己机器的空间。
安装&卸载测试
用户安装方式主要有:
<package name>进行安装;
• 使用第三方软件(比如豌豆荚、91助手等)安装;
• 将应用先下载到SD卡中再进行安装;
• 一部分数据量大的Android应用(一般是游戏)会采用小体积的应用安装,之后通过在线下载数据的方式使用。
应用安装之后,还要重点查看以下几点:
• 不联网的情况下是否能正常运行,会不会崩溃?
• 在线下载数据不完整,能否再次启动?
• 是否支持断点续传(在程序正在下载或者上传文件的过程中,突然杀掉进程,检查文件上传的情况)?
• 下载完整之后,再次启动。
• 安装成功后,检查版本号以及相关数据。
升级测试
增量升级
增量升级也叫做差分升级(Smart APP update)。
优点:用户不必再下载一个完整的Apk进行安装。
缺点:不需对发布的所有旧版本和最新版本做差分,很麻烦;如果一部分系统没有拿到内置应用的权限,那么就没有办法进行增量升级。
内置应用升级
注意每次升级之后的应用是否与内置在系统中的.os文件匹配,如不匹配则会直接导致应用崩溃。升级测试场景还有很多,以后再做补充。应用升级并非仅仅检查新功能或做冒烟测试,更多的是去了解升级的原理,升级到底更改了哪些文件,而这些文件又影响力哪些功能和数据库,找到这些问题的答案才能有针对性的进行全面的测试。
发布
发布 android:开发打包(.apk)的文件,上传到应用商店(主流的应用商店)
发布IOS:
1、把自己手机的唯一序列号告诉开发;
2、在自己的手机上安装testflight;
3、开发把被测试的APP发布后,然后测试就可以在testflight中下载开发发布的被测试的app。
稳定性测试
在保证基本功能正确基础之上,APP的稳定性就显得非常重要,如果一个APP经常出现闪退或者卡死,那么用户体验就会受到很大伤害,在有其他竞争产品的情况下很容易造成用户的流失。 稳定性测试的概念有2种:
1、稳定性测试,对应于异常性测试,即发生异常情况时,系统如何反应的测试。包含:
a、交互性测试,被打扰的情况,如来电,短信,低电量等。
b、异常性测试,断网,断电,服务器异常等情况。
2、稳定性测试指的是性能测试,压力测试
a、基准性能测试,通过服务器端及客户端口在不同网络环境下响应速度。
b、大数据测试,在特定环境下,客户端一次性更新大量数据及人员列表。
性能测试
普遍的apk性能测试,主要有以下几个:
a、响应
b、内存
c、cpu
d、FPS (app使用的流畅度)
e、GPU过度渲染 (手机加载资源的整个过程)
f、耗电
g、耗流
adb
adb简介
adb,即 Android Debug Bridge,它是 Android 开发/测试人员的强大工具。它是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 adb 命令以图形化的形式实现了。
开发者权限打开
step1:在连接手机设备之前,先在高级系统管理设置中,看下SDK环境变量,点击确定即可。
step2:打开手机设置,点击我的设备,搜索关于⼿机,在关于⼿机中点击7次,系统管理⾥⾯看到开发者选项,开启开发者选项和USB调试。
step3:手机数据线连接电脑端。
step4:打开cmd控制台,输入adb devices,看我们的手机是否与电脑连接成功,如下图所示:
apk的卸载与安装
针对android:给一个apk文件,通过电脑在手机端可以熟练的安装和卸载eg1:开发给一个 weibo.apk文件,测试人员通过cmd命令,进入到apk的路径,输入adb install [APK路径]命令来进行安装,如下图所示
此时安装成功!
针对IOS手机
步骤:
A、首先把苹果的测试手机序列号告诉开发
B、在测试手机下载testflight的App
C、开发会把测试的app发布到testflight,然后我们通过testflight来安装被测试的app
如何通过电脑命令卸载app
卸载逻辑:a.打开app,再使用adb shell am monitor等命令获取被卸载的程序包名
b.使用cmd命令,输入adb uninstall [应⽤包名],来进行卸载。如下图所示
adb devices 显示当前连接的 adb 设备
adb shell 进⼊ Android 系统的 shell 模式
搭建完环境后,打开控制台,输入命令:adb shell,就可以进入手机的环境,然后就可以通过linux命令进行相关查询,由于手机也是linux环境下的,所以linux命令也同样适用。最后输入exit就可以退出。如输入pm list packages查询所有的包名
adb logcat 打印机器 log ⽇志
adb logcat | findstr package 查看指定的包名日志
adb install [APK路径]
adb uninstall [应⽤包名]
adb shell am monitor 获取程序包名
adb shell dumpsys window | findstr mCurrentFocus 查看当前运行的APP的包名和Activity
adb shell service list 显示当前运行的系统服务
adb shell dumpsys activity top 显示当前最前端的Activity
adb shell cat /proc/cpuinfo 显示设备的CPU信息
adb shell cat /proc/meminfo 显示设备的内存使用情况
adb shell wm size 查看屏幕分辨率
获取程序pid
1、adb shell
logcat ps | grep 包名
2、adb shell ps | findstr 包名
3、adb shell top
adb shell dumpsys meminfo 进程ID 获取被测试APP的内存信息
adb shell top -n 1 | findstr 进程ID 获取被测APP的CPU信息
adb shell dumpsys battery 获取电量信息
adb shell cat /proc/进程ID/status 获取被测APP的UID
adb shell cat /proc/PID/net/dev 获取被测APP的流量
adb shell logcat -v time >log.txt 把日志信息重定向到log.txt中
⽇志
常用错误日志信息
空指针:nullpointException
数组越界:ArrayIndexoutof boundsException
多次启动线程:illegalThreadstateException
数字格式化问题 :java.lang.NumberFormatException
内存溢出:java.lang.OutOfMemoryError
文件找不到:java.io.FileNotFoundException
未发现此类:java.lang.ClassNotFoundException: Didn't find class
初始化错误:java.lang.InstantiationException:java.lang.Class<androidx.core.app.
Crash > AndroidRuntime > Exception>Error 的顺序逐个搜索。
注:crash,即崩溃,anr是crash的一种。在程序中可能会出现你未捕获到的异常,这就造成了崩溃。
日志应用
针对android:给一个apk文件,通过电脑在手机端可以熟练的操作log信息到一个具体文件。步骤如下:
a.在XX的目录下创建log.txt的记事本
b.adb logcat > log.txt,然后按下回车键
c.启动app,进行操作
d.操作完成,打开log.txt,里面会有很多日志信息直接过滤掉的日志信息:adb logcat | findstr 包名 > log.txt如图所示
Monkey
常见monkey命令
adb shell monkey 启动的命令
adb shell ps | grep monkey 查询monkey的pid,grep是针对苹果系统
adb shell ps | findstr monkey 查询monkey的pid,findstr是针对window系统
adb shell kill pid 停止monkey进程
adb shell monkey -v 10 10条随机事件
adb shell ps | findstr 被测试程序包名 获取进程ID
adb shell dumpsys meminfo 进程ID 获取内存信息
adb shell top -n 1 | findstr 进程ID 获取cpu消耗信息
adb shell dumpsys battery 获取电量信息
adb shell dumpsys gfixinfo 进程ID 获取GPU信息
adb shell cat /proc/pid/net/dev 获取流量信息
注:pid是在手机以及电脑上,任何运行的一个程序都是一个进程,每个进程都是有独立的pid。
1、测试app的过程中,出现了闪退,此时你会怎么办?
a.截屏/录频记录下闪退的交互
b.同样的操作操作的时候,使用adb logcat | findstr 包名 > log.txt,把错误日志信息重定向到日志文件里面
c.把录频的交互操作以及错误的日志信息,反馈给开发。
衍生知识:
1)adb logcat | findstr "packname"
只过滤查看某个具体package的错误信息
2)把错误的日志写到一个记事本里面,然后在记事本里面通过关键字的搜索来查询错误信息。把日志信息写到其他的文件,这个过程叫重定向。
3)重定向的操作步骤:
a、在XX的目录下创建log.txt的记事本
b、adb logcat > log.txt,然后按下回车键
c、启动app,进行操作
d、操作完成,打开log.txt,里面会有很多的日志信息。
2、web测试与app测试的区别?
web与app测试的区别:
1)APP兼容性测试(不同平台,不同分辨率,不同厂商)
2)弱网络以及不同网络情况下APP的资源加载和异常处理
3)安装以及卸载,和增量更新这部分
4)APP专项方面的测试,比如:占用电量,流量,CPU和内存的资源
5、需要测试APP的CRASH与ANR(崩溃,卡死,闪退)
3、APP的稳定性测试你是怎么测试的?
APP的稳定性从两个维度考虑:
1)它作为客户端,能够很快速的从服务端获取数据,那么前提是服务端是稳定性的。
2)客户端本身的稳定性,比如不会出现崩溃,卡死,闪退,以及其他异常的信息,还有它的流畅度。那么使用monkey的测试工具来针对APP做各种随机性的操作,来验证是否会出现CRASH和ANR的情况。