【软件测试】APP测试学习
目录
- android基础
- 系统架构
- 应用四大组件
- APP系统资源文件
- 安装包文件
- 活动配置
- 权限控制
- adb/monkey
- adb工具
- 常用命令
- monkey工具
- 功能测试
- 性能测试
- 安全测试
- 专项测试
- 兼容测试
- 网络测试
- 其它测试
android基础
系统架构
- 内核层:linux内核
- 运行库层:运行app需要的环境
- 应用程序框架层:无论系统内置或者开发编写的app,都需要使用到这层,可提高开发效率
- 应用层:系统app与自行安装的app
应用四大组件
- activity 活动
activity对应的就是界面,一个activity可以对应一个或多个界面,一个界面也可以对应一个或多个activity - service 后台服务
某些app退出界面后,实际并未完全退出所有进程,还会有其它进程用于其它功能。如QQ新消息提醒
常用于app一些隐含的小功能 - broadcast receiver 广播接收
广播消息:电量不足、网络异常、屏幕关闭/点亮
app接收到广播消息时,通过代码做相应的处理 - content provider 内容提供
为提升安全性,系统给app都自动创建了用户,通过用户权限配置将不同app的数据或访问硬件设备隔离,或通过内容提供技术让不同app相互可以访问
APP系统资源文件
安装包文件
文件名 | 含义 |
---|---|
animator | 定义属性动画的xml文件 |
anim | 定义渐变动画的xml文件 |
color | 定义颜色的xml文件 |
drawable | 菜单图标、可绘制对象资源的xml文件 |
mipmap | 桌面图标 |
layout | 界面布局的xml文件 |
menu | 定义菜单的xml文件 |
raw | 以原始形式保存的文件 |
values | 包含字符串、整型数各颜色等简单值的xml文件 |
注:app 要适配不同机型,就需要不同的资源文件,先根据语言筛选资源文件,再根据屏幕方向选资源文件,若未筛选到则使用默认的资源文件(drawable),若连默认的都没有,就可能导致闪退
活动配置
AndroidManifest.xml文件(配置文件)
权限控制
AndroidManifest.xml文件(配置文件)
uses-permission
uses-feature
adb/monkey
adb工具
在SDK工具的platform tools文件中
用于电脑连接android手机,对手机上的app进行管理,对手机上的图片文件、短信等进行管理
adb包含
- adb客户端(在电脑运行)
- adb服务端(在电脑运行)
- adb守护进程adbd(在手机运行)
常用命令
- 查看adb版本
adb version
注:若电脑存在多个版本的adb工具,可直接切换到相应目录下运行adb,也可以在环境变量中配置adb - 查看连接的android手机
adb devices
注:真机需设置“USB调试”,不可选择“仅充电”,USB调试可能需要开发者模式(大概路径:手机设置>关于手机>连续点击版本号 可打开开发者模式)
连接不正常,则重启手机再试 - 安装/卸载app
# 安装appadb install apk文件路径
# 指定手机安装(多台设备 -s指定设备)adb -s 127.0.0.1:21503 install apk文件路径# 卸载appadb uninstall app包名
app包名:
AndroidManifest.xml文件中查找 package
aapt工具(在SDK工具文件中)
aapt d badging apk文件路径
- 进入android系统
adb shell
- /data/app 存放安装的app的安装包
- /data/data 存放app的安装目录
- /sdcard 扩展卡,存放用户的文件
- 从手机上拉取文件到电脑上
# adb pull 手机上文件路径 电脑上文件路径adb pull /sdcard/log.txt d:\test\log.txt
- 从电脑上推送文件到手机上
# adb push 电脑文件路径 手机文件路径adb push d:\test\test.png /sdcard/test.png
- 重启adb服务器
adb kill-server/adb start-server
注:重启后adb devices 无法查看设备,可手动连接(ip和端口)adb connect 127.0.0.1:21503
- 日志
adb logcat
日志中可搜索exception、crash、anr等关键词,也可用app catlog来查看日志,日志级别:- V 次要信息
- I 系统信息
- D 调试信息
- W 警告信息
- E 错误信息
# -v time 日志中加时间戳
adb logcat -v time > d:\test\log.txt
查看手机启动过程日志以及启动后系统状态
adb bugreport > d:\bugreport.txt
截屏
adb shell screencap -p /sdcard/img.png
查看当前界面启动应用的包名和Activity
# 未adb shell进入系统时使用
adb shell dumpsys window | findsty mCurrentFocus
# adb shell进入系统后使用
dumpsys window | grep mCurrentFocus
- 其它命令
命令 | 含义 | 备注 |
---|---|---|
adb shell am start -n 包名/包名.Activity(活动名) | 启动app | |
adb shell am srart -W 包名 | 查询app启动时间 | 注app需已运行。ThisTime:对应activity启动耗时;TotalTime:应用自身启动耗时(ThisTime+应用资源启动时间);WaitTime:系统启动耗时(TotalTime+系统资源启动时间) |
adb shell am force-stop 包名 | 关闭app | |
adb shell pm list packages | 查看所有包信息 | -s 列出系统应用;-3 第三方应用 |
adb shell pm clear 包名 | 清除应用数据缓存 | |
adb shell dumpsys battery | 查看电池电量 | status:5 满电、2 充电中 |
adb shell dumpsys wifi | 查看wifi信息 | |
adb shell dumpsys telephony.registry | 查看电话相关信息 | mCallState:0 待机、1 来电尚未接听、2 电话占线;mServiceState:0 正常使用、1 没有连接到运营网络、2 仅限紧急呼叫、3 已关机 |
adb shell cat /proc/cpuinfo | 查看cpu相关信息 | |
adb shell cat /proc/meminfo | 查看内存相关信息 |
monkey工具
android系统自带的随机测试工具
命令:adb shell monkey -p 包名 [随机事件 占比] --throttle 操作时间间隔 -s 随机序列种子 -v -v -v 操作次数
-v 日志详细程度 三个-v最详细
–throttle 一般为500,模拟人正常操作500ms
随机操作事件,占比总和为100
事件 | 含义 | 说明 |
---|---|---|
–pct-touch | 触摸事件 | 点击 |
–pct-motion | 手势事件 | 直线滑动 |
–pct-pinchzoom | 缩放事件 | 放大缩小 |
–pct-trackball | 轨迹事件 | 曲线滑动 |
–pct-rotation | 屏幕旋转事件 | 横屏竖屏切换 |
–pct-nav | 基本导航事件 | 上下左右物理键(不常用) |
–pct-majornav | 主要导航事件 | 中间键、菜单键 |
–pct-syskeys | 系统按键事件 | Home键、返回键、音量调节键 |
–pct-appswitch | 切换activity事件 | 切换界面 |
–pct-flip | 键盘事件 | 键盘弹出与收回 |
–pct-anyevent | 其它事件 | 字母、数字物理键(不常用) |
# 整机测试adb shell monkey 1000
# 测试appadb shell monkey -p 包名 --pct-touch 30 --pct-motion 20 --throttle 500 -s 666 -v -v -v 1000
事件 | 说明 |
---|---|
–ignore-crashes | 忽略应用程序崩溃 |
–ignore-timeouts | 忽略应用程序无响应 ANR |
–ignore-security-exceptions | 忽略应用程序发生许可认证错误 |
–kill-process-after-error | 应用程序错误时停止运行 |
–monitor-native-crashes | 监视报告应用程序崩溃时的本地代码 |
功能测试
- 单功能测试
与web测试类似,因界面简单,常通过抓包工具辅助进行测试 - 功能交互测试
- 与手机自带功能的交互
如通话、短信、闹钟、定位、照相机等 - 与手机管家类型app的功能交互
如设置禁止app访问网络 - app内部功能交互
如设置功能的交互
- 与手机自带功能的交互
- 特殊测试点
- 横竖屏下的操作
- 单击、双击、滑动、长按、缩放操作
- home、返回键的影响
- 通知栏功能操作
性能测试
常见工具:
- emmagee 网易的开源app
仅android系统,且7.0及以上无法使用,测试结果会保存到sdcard
针对内存、cpu重点查看峰值,对于fps主要看波动 - solopi 阿里的开源app
简单的自动化(录制回放)
性能测试
一机多控(用于兼容测试,操作一部手机完成多部手机测试) - monkey
用来测试稳定性和性能 - 时间
- 安装、卸载响应时间
- 启动响应时间
- 首次启动时间
- 非首次启动时间
冷启动时间:app相关进程已全部退出的情况下启动
热启动时间:app相关进程并未全部退出的情况下启动
- 切换响应时间(页面切换时间)
logcat日志中,查“displayed”关键字,一般测试多次取平均值,避免偏差
- 存储占用
- 安装包大小
路径:/data/app - 安装目录大小
路径:/data/data 用du -sh 目录
查看 - 内存占用
一般利用工具测试
- 安装包大小
- CPU占用
利用工具测试 - GPU占用
- gpu过度绘制
开发者选项:调试GPU过度绘制
可见屏幕颜色有绿色、蓝色、红色。红色表示过度绘制,颜色越深过程绘制越厉害 - 流畅度
流畅度涉及fps(每秒帧数)的指标,fps大幅变化可能就存在卡顿
一般利用工具测试
- gpu过度绘制
- 流量/电量消耗
一般利用工具测试- 安装时
- 前台运行时
- 后台运行时
安全测试
- 权限
- 扣费风险:短信、拨打电话、连接网络等
- 隐私风险:访问手机信息、联系人信息等
- 限制/允许短信相关权限
- 限制/允许自启动
- 限制/允许相机
- 限制/允许录音
- 限制/允许定位
- 限制/允许读取用户数据
- 限制/允许写入用户数据
- 数据
- 密码与其它敏感信息输入到应用时,不以明文形式存储在设备中
- 删除数据时,提供确认框
- 通信
- 创立连接时,若网络连接中断,可通知用户连接中断的情况
- 应用运行中通信超时,给用户信息提示
- 网络异常时及时将异常情况通知用户
- 关闭网络连接,应用断开连接
专项测试
兼容测试
针对主流机型,用几款进行完整测试,更多机型可用云测平台测试。如:testin、阿里云、腾讯云、华为云等
- 操作系统兼容
- 标准android系统、定制化android系统
- 标准android系统
- ios,只能单向升级,不能降级
- 机型兼容
- 手机品牌、型号
- 屏幕类型:全面屏、刘海屏、水滴屏等
- 屏幕密度:如hdpi、xhdpi等
- 屏幕分辨率
- 屏幕尺寸
- 其它主流APP兼容
dpi:每英寸点数
屏幕标识 | 含义 | 参数 |
---|---|---|
ldpi | 低密度屏幕 | 约120dpi |
mdpi | 中密度屏幕 | 约160dpi |
hdpi | 高密度屏幕 | 约240dpi |
xhdpi | 超高密度屏幕 | 约320dpi |
xxhdpi | 超超高密度屏幕 | 约480dpi |
xxxhdpi | 超超超高密度屏幕 | 约640dpi |
nodpi | 不希望缩放 | |
tvdpi | mdpi~hdpi之间 | 约213dpi |
anydpi | 适应所有屏幕密度 |
脚本使用,命令放入批处理文件,扩展名为.bat
# 安装appadb install app路径
# 运行appadb shell am start -n 包名/包名.activity名
# 等待10schoice /t 10 /d y /n >nul
# 退出appadb shell am force-stop 包名
# 卸载appadb uninstall 包名
网络测试
手机网络:2G、3G、4G、5G、wifi
不同网络区别:带宽/速度、延迟、丢包率、错误率
测试可通过工具模拟不同网络,常见工具:
- NEWT
PC端软件,通过控制电脑网卡模拟各种网络 - ATC
Linux环境运行 - QNET
手机端运行
测试流程
- 正常网络测试
- 无网测试(飞行模式)
功能是否可用
界面/数据是否正常(支持离线浏览的应用)
继续请求网络是否正确处理
是否有无网络提示(如提示当前网络已断开,请检查网络设置) - 弱网测试(带宽变小、延迟变大、丢包率上升、错误率上升)
页面呈现是否完整
请求超时,是否有相应提示
丢包是否重发机制
操作app数据是否发生crash、anr等 - 网络切换测试
测试2G、3G、4G、5G、wifi网络切换,wifi切换至数据流量时,可能导致扣费,是否有提示
其它测试
- 安装包病毒扫描
- 安装/卸载测试
- 不同渠道安装:应用商店、浏览器等
- 安装过程中断,可否继续安装
- 是否可覆盖安装
- 安装空间不足是否有提示
- 安装后,安装目录和文件创建是否正确
- 卸载是否有确认提示
- 卸载后是否删除相应安装目录
- 卸载过程中断,可否使用或继续卸载
- 升级测试
非强制(可取消更新提示,正常使用,下次启动仍提示)
强制(不升级不能用,取消则退出app,下次启动仍是如此)- 自动升级
- 升级过程中断
- 升级过程内存不足
- 升级后数据是否同步
- 跨版本升级
- 消息推送
APP后台运行时Push消息显示在系统通知栏,正在使用时Push消息只会在APP内,不显示在系统通知栏- 开启推送,则可以正常接收查看
- 关闭推送,则接收不到消息
- 设置免打扰时间段内,接收不到消息
- 推送消息是否按业务规则发送,若针对登录用户,检查消息是否与用户身份相符
- 登录测试
很多app提供免登录功能:开启应用时自动以上一次登录的用户来使用- 无网络时能否正常进入免登录状态
- 切换用户登录,用户及数据内容更新,确保原用户退出
- 密码更换后,进行数据交互时应校验登录是否有效
- 用户主动退出登录后,下次启动app时应显示登录页面
- 切换测试
主要对于有数据交互(自动更新)的页面进行测试- app切换至后台,再回到app,检查是否在原页面,功能、状态是否正常
- 多个app之间相互切换
- 出现必须处理的提示框时,进行切换测试,检查提示框
- 中断测试
被打扰的情况下,客户端能否正常处理,保证数据的正确性,主要对于核心功能存在实时数据交换的页面进行测试- 电话、信息等提示中断,切换app
- 断电、断网重连、锁屏解锁
- 插拔数据线、耳机
- 程序异常退出(杀掉进程后,再开启app,是否正常)
- 用户体验测试
开发者选项:显示布局边界功能
页面响应时间是否合理(冷启动、热启动、页面切换)
超时提示、异常提示是否合理
是否会超时重连
【软件测试】APP测试学习相关推荐
- 移动APP测试の学习(2)
参考了->移动端App测试实用指南 测试人员需要询问问题 测试人员的核心能力在于提出有挑战性的相关问题. 如果你能将调查.询问技巧和技术.产品的知识结合起来,渐渐地,你也会成为一个好的测试人员. ...
- 软件测试-App测试流程及测试点
正式测试前先向主管确认项目排期. 接收版本 App测试版本送测规范 UI测试:核对rp/效果图 功能测试:核对需求文档.兼容性测试.性能压力测试, 尽快申请到正式环境下测试,后台订单统计测试.用户行为 ...
- 移动APP测试の学习(1)
最常见的APP Bug,崩溃的测试用例设计 移动App测试与传统台式机 测试相比有一定的复杂性. 这些复杂性可以被分类为: 环境(大量的设备,各种移动OSs,适应频繁OSs变化) . 设备(触摸式 ...
- 软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领
随着移动终端的普及,手机App应用越来越多,也越来越重要.而作为测试袁的我们也要与时俱进,努力学习手机App的相关测试,本章将介绍手机自动化测试框架Appium.那究竟什么是 Appium呢? 接下来 ...
- 软件测试 | app测试中常用的Android模拟器
本文节选自霍格沃兹测试开发学社内部教材 获取更多相关资料 测试 Android app 的时候,Android 模拟器是经常会用到的工具.模拟器可以轻松的模拟不同的品牌.分辨率和 Android 系统 ...
- 一个软件测试工程师的学习体验
[摘要] 软件质量越来越受到人们的关注,软件测试作为新兴行业有很多不完善的地方.很多从事软件测试工作的同行处于迷茫之中,如何提高,如何解决测试工作中的实际问题,困惑着每一个人.本文总结了一下个人经验, ...
- 字节软件测试岗二面:APP测试问题被虐哭了,直到看到这些知识点
APP测试一直是大厂软件测试问到的一个重点细节,下面我来给大家展示一下大厂关于APP测试经常会问到的一些问题,以及解析.想象一下当你遇到面试官问到你这些问题时,你是否也能够对答如流哦! 注意,注意啦! ...
- 软件测试web和app,软件测试如何快速进阶?过来人科普Web与App测试5大区别!
随着各种移动设备的更新换代,移动互联网呈飞速发展状态,同时,移动应用更是呈指数增长.因为这种情况, app测试方面需求也随之大涨,已经逐渐赶超web测试.我 做了快三年的测试了 , 大部分时间都在做 ...
- 2023年大厂高频软件测试面试题:Web 测试 + 接口测试 +App 测试
又到了一年一度经典的金三银四跳槽季,互联网行业竞争是一年比一年严峻,作为软件测试工程师的我们唯有不停的学习,不断提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里,字节跳动,腾讯 ...
最新文章
- python支持向量机框架_Netflix 内部 Python 框架 Metaflow 正式开源,可加速机器学习模型部署...
- (二)Python 学习第二天--爬5068动漫图库小案例
- cmd打开java文件夹_Java用CMD打开指定文件和文件夹
- 业务单号自动增长的处理办法
- Billboard HDU - 2795(树状数组,单点修改,区间查询)
- Attention模型
- duilib入门简明教程 -- 前言(1)
- ArcGIS 赋予不同指标权重计算综合结果
- 批量增加dns 条件转发器
- linux amd显卡调风扇转速,显卡风扇转速设置教程方法
- Ubuntu 安装微信
- laravel 语言包
- xp系统怎么更改计算机用户名和密码,xp系统怎么取消开机密码?
- iOS10 更新后问题,获取相册,录音时候闪退问题
- 用python制作电子时钟包装_使用电子水墨屏和树莓派制作的时钟,Epaper_clock
- 双十一数码产品哪些值得买?双十一好物产品分享
- 双相情感障碍会变精分吗?精神科医生为您答疑
- Linux安装PHP:system libzip must be upgraded to version = 0.11
- java项目如何发送邮件
- 一个获取电脑显示器序列号的VBS脚本