admin管理员组文章数量:1530032
软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到
软件测试学习内容总结
专栏。
本节内容:app测试方法与技术
文章目录
- 1. app结构讲解
- 1. apk 包结构
- 2. app 页面结构
- 移动端app分类
- 界面元素查看工具 - `uiautomatorviewer`
- 2. adb常用命令
- 1. Android 环境搭建
- 2. adb简介
- 3. adb常用命令
- 3. app常见bug解析
- 1. 功能 bug
- 2. 崩溃 bug
- 3. 性能 bug
- 4. 知名app测试实战1
- 项目背景
- ☆ app测试流程
- 需求分析
- 接口文档分析
- 测试用例设计
- 5. 知名app测试实战2
- app 测试思路总结
- Android 模拟器
- Android 开发者选项
- adb 常用命令
- app 压力测试
1. app结构讲解
1. apk 包结构
什么是apk
- apk 是 Android Package 的缩写,即Android安装包
- apk 文件其实是 zip 格式,但后缀被修改为 apk
apk结构
- lib/ # so文件,armeabi-v7a,x86
- res/ # 资源目录
- assets/ # 配置文件
- classes(n).dex # 虚拟机执行文件
- resources.arsc
- AndroidManifest.xml # 每个应用都有,放Android清单
2. app 页面结构
移动端app分类
Native App
:原生APP手机应用- Hybrid App:混合型APP手机应用程序
- Web App:基于Web的APP手机应用程序
Native App
- Activity 展示与用户交互的界面
- Window 窗口
- View 视图对象
- ViewGroup 多个view
界面元素查看工具 - uiautomatorviewer
- 工具:
uiautomatorviewer
元素属性
index 元素索引
text 显示的文本
resource-id 元素id
class 元素类名
package 包名
content-desc 元素的描述文案
2. adb常用命令
1. Android 环境搭建
安装jdk
- 环境搭建帖子:<4001>
- 安装过程全程默认即可,不需要更改
- 安装完毕后需要配置环境变量
- 新建变量JAVA_HOME:jdk 安装根目录
- Path变量中添加
- %JAVA_HOME%
- %JAVA_HOME%\bin
- %JAVA_HOME%\jre\bin
- 验证环境:
java -version
安装Android Studio
- 下载:https://developer.android.google/studio/#downloads
- 默认安装,没有特殊操作
安装 sdk
- 安装
Android SDK Build-Tools(29版本)
Android Emulator
Android SDK Platform-Tools
Android SDK Tools
配置 sdk 环境变量
- 新建ANDROID_HOME:sdk 安装根目录
- Path 变量中添加
- %ANDROID_HOME%\emulator
- %ANDROID_HOME%\tools
- %ANDROID_HOME%\tools\bin
- %ANDROID_HOME%\platform-tools
- 环境验证:
adb version
2. adb简介
adb简介
- Android Debug Bridge(Android调试桥)简称adb
- Android sdk 中提供的用于管理模拟器或真机状态的工具
- 命令行工具
adb组成
采用了客户端-服务器(C/S)模型,包括三个部分:
- 客户端 client # 运行在电脑上,shell
- 服务端 server # 运行在电脑上
- 守护进程 daemon # 运行在Android设备
adb 工作原理
左边为电脑,右边为Android设备,
每一个设备占用2个端口,5554,5555为1个设备
原生adb,扫描端口范围为5555-5585,只能提供16个模拟器同时连接
启用adb调试
- 模拟器:不需要手动设置
- 真机:
- 通过USB连接设备与电脑
- 安装android手机驱动
- 设备启动usb调试
3. adb常用命令
adb 命令格式
adb [-d | -e |-s <serialNumber>] <command>
- -d:指定当前唯一通过USB连接的
Android设备
为命令目标 - -e:指定当前唯一运行的
模拟器
为命令目标 - -s:指定相应
serialNumber号
的设备/模拟器为命令目标
[] 表示可选,<>表示必填
一般用-s,通过序列号指定设备
查询设备
- 连接模拟器端口:
adb connect 127.0.0.1:xxxx
(xxxx为模拟器的端口) - 列出已连接的设备:
adb devices
真机直接执行
adb devices
模拟器先执行adb connect 127.0.0.1:xxxx
,再执行adb devices
mumu模拟器端口号:7555 #adb connect 127.0.0.1:7555
安装卸载应用
- 普通安装:
adb install <apk路径>
- 覆盖安装:
adb install -r <apk路径>
- 完全卸载:
adb uninstall <包名>
- 保留配置文件:
adb uninstall -k <包名>
安装时直接拖拽安装包到命令行得到路径
安装时使用apk路径,卸载时使用包名
设备与电脑传输文件
- 从电脑上传文件至设备:
adb push <电脑路径> <设备路径>
- 从设备复制文件至电脑:
adb pull <设备路径> <电脑路径>
push pull
adb shell 命令
- 登录设备 shell
- 相当于远程登录了 Android 系统,可以执行 Linux 命令
- 直接发出 adb shell 命令:
adb [-s serial_number] shell command
- 交互式 shell:
adb [-s serial_number] shell
- 要退出交互式 shell,请按 Ctrl + D 键或输入 exit
执行adb shell 进入手机内部
android底层为Linux,进入adb shell后,Linux命令都可以执行。
退出交互式shell用Ctrl+d
设备截图/录屏
- 截图:
adb shell screencap <设备路径>
- 录屏:
adb shell screenrecord <设备路径>
调用 Activity 管理器
Activity 管理器(am
)工具发出命令以执行各种系统操作
- 启动应用:
adb shell am start -n <包名>/<Activity名>
#包名+activity名 - 强制停止应用:
adb shell am force-stop <包名>
adb shell am
调用 软件包 管理器
软件包管理器(pm
)工具发出命令,对设备上安装的应用软件包进行操作和查询。
- 显示所有应用:
adb shell pm list packages
#显示包名 - 只显示系统应用:
adb shell pm list packages -s
- 只显示第三方应用:
adb shell pm list packages -3
- 列出所有测试软件包:
adb shell pm list instrumentation
- 删除与软件包关联的所有数据:
adb shell pm clear <包名>
adb shell pm
adb shell dumpsys
调用dumpsys,获取在连接的设备上运行的所有系统服务的诊断输出
- 获取前台包名:
adb shell dumpsys activity | grep mFocusedActivity
#Windows用adb shell dumpsys activity | findstr mFocusedActivity - 检查输入诊断:
adb shell dumpsys input
- 测试界面性能:
adb shell dumpsys gfxinfo <包名>
- 检查电池诊断:
adb shell dumpsys batterystats --charged <包名>
- 查看CPU信息:
adb shell dumpsys cpuinfo
- 查看内存信息:
adb shell dumpsys meminfo
- 获取内存占有情况统计信息:
adb shell dumpsys procstats --hours 3
adb shell dumpsys
adb logcat
打印链接设备的log信息
- 屏幕输出日志:
adb logcat
- 通过标签过滤:
adb logcat -s 标签
- 显示时间:
adb logcat -v time
- 输出所有信息:
adb logcat -v long
- 输出日志到文件:
adb logcat -v time >log.txt
- 清除旧日志信息:
adb logcat -c
adb logcat
adb shell uiautomator
dump出当前窗口的UI布局信息
- 前窗口的UI布局简化信息:
adb shell uiautomator dump --compressed
#默认将xml文件保存到sdcard下 - 指定输出文件:
adb shell uiautomator dump file <设备路径>
#指定输出文件路径
adb shell uiautomator
输出的UI布局信息,可以用uiautomatorviewer工具打开,查看当前页面的各个元素的属性
3. app常见bug解析
1. 功能 bug
-
内容显示错误 – 接口出错
-
功能错误 – 后端问题
-
界面展示错乱 – 前端问题
-
界面展示后台信息 – 后端问题
-
推送信息错误 – 后端问题
2. 崩溃 bug
Crash
3. 性能 bug
加载速度慢
- 应用程序第一次启动速度慢
- 进入到某一个界面加载速度慢
- 启动某一个有动画效果的界面,动画执行过程加载速度慢并且有卡顿
- 响应某一个用户事件时,长时间无响应(ANR)
其他
- 太占用手机内存
- 太耗电和流量
- 在使用应用的过程中,点击某一个事件进入的页面出现白屏的闪动等
4. 知名app测试实战1
重点
- app 测试流程
- 了解需求文档和接口文档
- 掌握 app 测试用例编写
PPT:
项目背景
项目介绍
- 雪球 APP
模块介绍
- 发讨论模块
app服务架构
☆ app测试流程
- 需求分析
- 测试计划编写
- 测试用例设计
- 测试用例评审
- 用例执行
- 回归测试
- 非功能测试
- 走查验收(UI、产品)
- 灰度发布 #进行3轮
- 上线
- 测试总结报告
需求分析
需求分析步骤
- 明确测试范围
- 明确功能点
- 明确业务流程
- 明确输出结果
- 分析异常流程
- 预估测试需要的时间和资源
需求分析实战
- 雪球app
- 发讨论
分析需求文档
(https://ceshiren/uploads/default/original/2X/8/849ac3df40ceadffc95f6c9c1fa9605f501b1aba.png)
接口文档分析
接口文档
- 接口请求地址(url)
- 接口请求方式(get/post)
- 输入参数(请求参数)
- 输出结果(响应)
测试用例设计
测试用例设计实战
链接: https://pan.baidu/s/1rhzbrSC6EYZkaBM9Bw7Oow 密码: luqi
5. 知名app测试实战2
重点
- 掌握 app 测试思路
- 掌握 Android 模拟器的使用方法
- 了解 Android 开发者选项
- 掌握常用 adb 命令
- 掌握 app 压测方法
PPT:
参考资料
- android 环境搭建贴:Android Studio安装(推荐使用这种方法安装SDK)
- emulator 使用贴:Android Studio模拟器创建和使用
- mumu 官网:http://mumu.163
- mumu 横竖屏切换贴:uiautomatorviewer将模拟器网易mumu识别为横屏
- genymotion 下载:https://www.genymotion/download/
%ANDROID_HOME%\emulator
%ANDROID_HOME%\tools
%ANDROID_HOME%\tools\bin
%ANDROID_HOME%\platform-tools
emulator的配置必须放在最前面,不然emulator -version会报错,用不了
appium 用15左右的
编译打包生成apk文件 Build -Build apk
apk文件路径:app-build-…-apk-debug-app-debug.apk
生成apk文件后,到处到模拟器或真机安装
gradle下载:https://services.gradle/distributions
android studio的安装:https://blog.csdn/qq_41976613/article/details/91432304
gradle失败的问题:android studio的安装https://blog.csdn/qq_41976613/article/details/104394870
app 测试思路总结
app 测试思路
evernote:///view/21520833/s47/f48fb10e-0beb-4de7-ba52-2153423cab1c/f48fb10e-0beb-4de7-ba52-2153423cab1c/
APP测试设计
https://pan.baidu/s/1rhzbrSC6EYZkaBM9Bw7Oow 密码: luqi
测试角度看 Android 和 iOS 的区别 --面试
- 物理按键:android 返回按钮
- 安装:不同安装渠道
- 兼容:兼容方案不一样
- 手势操作:操作手势有区别
- 系统底层运行机制:android 虚拟机运行机制,iOS 沙盒运行机制
- 程序后台运行机制:android 所有程序都可在后台运行,iOS 第三方程序不可以在后台运行
- 消息推送渠道:android 第三方平台,iOS 官方渠道
- 页面渲染机制不同
- 系统的开源不同:android 开源,iOS 非开源
- 扩展:android 支持 sd 卡,iOS 不支持
app 测试与 web 测试的区别 --面试
仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的
- 架构不同:web 是 B/S 架构,app 是 C/S 架构
- 性能关注内容不同:web 更关注响应时间,app 关注响应时间、流量、电量、CPU、内存
- 兼容方案不同:web 关注浏览器,app 关注厂商、设备、分辨率、系统
- app 多了专项测试:健壮性、安装、卸载、更新
- 界面操作不同:app 关注手势操作
- 测试工具不同:web 自动化用 selenium,app 自动化用 appium
- 上线方式不同:app 需要发版
APP测试执行
Android 模拟器
Android studio 和 java 1.8 安装包
https://pan.baidu/s/1N3vUu_kespj0PCTpMcX4sw 密码: ljk4
emulator [ˈemjuleɪtə®]
<topic/4012>
- 查看帮助:
emulator -help
- 查看模拟器列表:
emulator -list-avds
- 启动模拟器:
emulator @avd_name
AVD设置中选择Android6.0的,6.0以上的提高了安全性,很多想看到的信息看不到了。adb很多信息看不到,抓包很多抓不到。6.0方便学习
mumu (推荐安装)
- 下载地址:http://mumu.163
进入设置为竖屏,自定义 宽720 高1280
横竖屏设置 <topic/931>
不能定义其他的系统版本,只是Android6.0
genymotion (不推荐)
- 下载地址:https://www.genymotion/download
- 选择个人版本
课后任务
在自己本地搭建好Android环境
- 搭建 java
- 安装 Android studio
- 安装 Android SDK
- 配置环境变量
参考:<topic/4001>
Android 开发者选项
开启开发者选项
设置 -> 关于手机 -> 连续点击 N 次 MIUI 版本,即可开启开发者模式了
常用选项
- 开启开发者选项
- 不锁定屏幕
- USB 调试
- 选择模拟位置信息应用
- 显示触摸操作
- 指针位置
- 调试 GPU 过渡绘制
- 显示所有“应用程序无响应”
adb 常用命令
adb使用场景
- 连接设备
adb kill-server
#停止adb服务
adb connect 127.0.0.1:7555
#win 系统执行(mumu模拟器)
adb devices
#启动adb服务
- 指定设备
adb -s xxxx <命令>
adb -s 设备号 shell
#进入指定的设备号的Android系统内部
- 安装 apk
adb install <apk路径>
- 进入设备内部
adb shell
- 查看包名
adb shell pm list packages -3
#查看安装的三方应用
adb shell dumpsys activity | findstr mFocusedActivity
#查看当前打开窗口的APP的包名,activity名 --Android6以上用不了,
adb logcat | findstr ActivityManager
#Android6以上用不了
查看雪球入口activity名称:在手机中打开雪球APP,执行adb shell dumpsys activity | findstr mFocusedActivity
mFocusedActivity:当前页面的activity
adb shell dumpsys:打印系统当中所有的server的信息
- 启动应用
adb shell am start -n <包名>/<Activity名>
adb shell am start -n com.xueqiu.android/mon.MainActivity
activity名会变化
- 强制停止应用
adb shell am force-stop <包名>
adb shell am force-stop com.xueqiu.android
- 清除应用数据
adb shell pm clear <包名>
adb shell pm clear com.xueqiu.android
- 获取界面布局信息
adb shell uiautomator dump --compressed
- 截图/录屏
adb shell screencap <设备中存放图片的路径>
adb shell screenrecord <设备中存放图片的路径>
adb pull <设备路径> <电脑路径>
- 抓取日志
adb logcat -s tag名
adb logcat -v time > log.txt
adb logcat -s System.out
可以通过优先级过滤 W V I E F,V最低级别,I-info,W高级别,E-error,F-fail
adb logcat "ActivityManager:I MyApp:D *:S"
过滤grep–android6以上显示不了包名,activity名
adb logcat | findstr ActivityManager
app 压力测试
Monkey 介绍
- Monkey 是Google 提供的一个用于稳定性与压力测试的命令行工具。
- 可以运行在模拟器或者实际设备中。
- 它向系统发送伪随机的用户事件(如按键、手势、触摸屏等输入),对软件进行稳定性与压力测试。
为什么要用 Monkey
- Monkey 就是像猴子一样上蹿下跳地乱点
- 为了测试软件的稳定性,健壮性
- 随即点击比顺序点击更容易发现问题
Monkey 基本用法
- 在命令提示符中输入 adb devices 查看有无连接的设备
- 确认有设备连接
- 获取APP的包名
adb shell monkey [参数] {随机发送事件数}
Monkey 常用选项
- -v:用于指定反馈信息级别,总共分3个级别
- -s :用于指定伪随机数生成器的seed(种子)值 #保证每一次执行mokey命令,操作顺序一致
- -p:用于约束限制,用此参数指定一个或多个包
- –throttle :每个事件结束后的间隔时间
- –ignore-crashes:忽略崩溃
- –ignore-timeouts:忽略超时
- –ignore-security-exceptions:忽略安全异常
- –ignore-native-crashes:忽略本地代码导致的崩溃异常
- –monitor-native-crashes:跟踪本地方法的崩溃问题
Monkey 事件选项
- –pct-touch:触摸事件 #摁下抬起
- –pct-motion:滑动事件
- –pct-appswitch:activity之间的切换 #APP里不同页面的切换
- –pct-pinchzoom:缩放事件
- –pct-rotation:屏幕旋转事件
- –pct-flip:键盘事件
- –pct-anyevent:任意事件
整个操作比例是100%,可以在参数后面加数字,指定这一类型的事件在整个事件中占得百分比。–pct-touch 30 --pct-motion 20
实例
对雪球进行压力测试
- 确定测试APP的包名
- 执行8小时(8*60*60*1000/300=96000)
- 日志级别
- 确定雪球中常用的操作类型和比例
- 确定seed值
- 确定调试选项
- 重定向日志到文件中 >
adb shell monkey -p com.xueqiu.android -v -v -v --pct-touch 30 --pct-motion 30 --pct-appswitch 20 --pct-flip 10 --pct-anyevent 10 -s 12345 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 100 > monkey_log.txt
100为测试的时间
整个有关pct的操作比例是100%,可以在参数后面加数字,指定这一类型的事件在整个事件中占得百分比。
Monkey 日志分析
- 程序无响应,ANR问题:在日志中搜索“ANR”
- 崩溃问题:在日志中搜索“CRASH”
- 其他问题:在日志中搜索”Exception”
课后作业
设计测试用例(使用思维导图) --面试 ☆
- 微信发朋友圈功能
版权声明:本文标题:14z app测试方法与技术 -软件测试 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1726415964a1069816.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论