目录

  • android基础
    • 系统架构
    • 应用四大组件
  • APP系统资源文件
    • 安装包文件
    • 活动配置
    • 权限控制
  • adb/monkey
    • adb工具
      • 常用命令
    • monkey工具
  • 功能测试
  • 性能测试
  • 安全测试
  • 专项测试
    • 兼容测试
    • 网络测试
    • 其它测试

android基础

系统架构

  1. 内核层:linux内核
  2. 运行库层:运行app需要的环境
  3. 应用程序框架层:无论系统内置或者开发编写的app,都需要使用到这层,可提高开发效率
  4. 应用层:系统app与自行安装的app

应用四大组件

  1. activity 活动
    activity对应的就是界面,一个activity可以对应一个或多个界面,一个界面也可以对应一个或多个activity
  2. service 后台服务
    某些app退出界面后,实际并未完全退出所有进程,还会有其它进程用于其它功能。如QQ新消息提醒
    常用于app一些隐含的小功能
  3. broadcast receiver 广播接收
    广播消息:电量不足、网络异常、屏幕关闭/点亮
    app接收到广播消息时,通过代码做相应的处理
  4. 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包含

  1. adb客户端(在电脑运行)
  2. adb服务端(在电脑运行)
  3. adb守护进程adbd(在手机运行)

常用命令

  1. 查看adb版本adb version
    注:若电脑存在多个版本的adb工具,可直接切换到相应目录下运行adb,也可以在环境变量中配置adb
  2. 查看连接的android手机adb devices
    注:真机需设置“USB调试”,不可选择“仅充电”,USB调试可能需要开发者模式(大概路径:手机设置>关于手机>连续点击版本号 可打开开发者模式)

    连接不正常,则重启手机再试
  3. 安装/卸载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文件路径

  1. 进入android系统adb shell

    • /data/app 存放安装的app的安装包
    • /data/data 存放app的安装目录
    • /sdcard 扩展卡,存放用户的文件
  2. 从手机上拉取文件到电脑上
# adb pull 手机上文件路径 电脑上文件路径adb pull /sdcard/log.txt d:\test\log.txt
  1. 从电脑上推送文件到手机上
# adb push 电脑文件路径 手机文件路径adb push d:\test\test.png /sdcard/test.png
  1. 重启adb服务器adb kill-server/adb start-server
    注:重启后adb devices 无法查看设备,可手动连接(ip和端口)adb connect 127.0.0.1:21503
  2. 日志adb logcat
    日志中可搜索exception、crash、anr等关键词,也可用app catlog来查看日志,日志级别:

    • V 次要信息
    • I 系统信息
    • D 调试信息
    • W 警告信息
    • E 错误信息
# -v time 日志中加时间戳
adb logcat -v time > d:\test\log.txt
  1. 查看手机启动过程日志以及启动后系统状态adb bugreport > d:\bugreport.txt

  2. 截屏adb shell screencap -p /sdcard/img.png

  3. 查看当前界面启动应用的包名和Activity

# 未adb shell进入系统时使用
adb shell dumpsys window | findsty mCurrentFocus
# adb shell进入系统后使用
dumpsys window | grep mCurrentFocus
  1. 其它命令
命令 含义 备注
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测试类似,因界面简单,常通过抓包工具辅助进行测试
  • 功能交互测试
    1. 与手机自带功能的交互
      如通话、短信、闹钟、定位、照相机等
    2. 与手机管家类型app的功能交互
      如设置禁止app访问网络
    3. app内部功能交互
      如设置功能的交互
  • 特殊测试点
    1. 横竖屏下的操作
    2. 单击、双击、滑动、长按、缩放操作
    3. home、返回键的影响
    4. 通知栏功能操作

性能测试

常见工具:

  • emmagee 网易的开源app
    仅android系统,且7.0及以上无法使用,测试结果会保存到sdcard
    针对内存、cpu重点查看峰值,对于fps主要看波动
  • solopi 阿里的开源app
    简单的自动化(录制回放)
    性能测试
    一机多控(用于兼容测试,操作一部手机完成多部手机测试)
  • monkey
    用来测试稳定性和性能
  • 时间
    1. 安装、卸载响应时间
    2. 启动响应时间
      • 首次启动时间
      • 非首次启动时间
        冷启动时间:app相关进程已全部退出的情况下启动
        热启动时间:app相关进程并未全部退出的情况下启动
    3. 切换响应时间(页面切换时间)
      logcat日志中,查“displayed”关键字,一般测试多次取平均值,避免偏差
  • 存储占用
    1. 安装包大小
      路径:/data/app
    2. 安装目录大小
      路径:/data/data 用du -sh 目录查看
    3. 内存占用
      一般利用工具测试
  • CPU占用
    利用工具测试
  • GPU占用
    1. gpu过度绘制
      开发者选项:调试GPU过度绘制
      可见屏幕颜色有绿色、蓝色、红色。红色表示过度绘制,颜色越深过程绘制越厉害
    2. 流畅度
      流畅度涉及fps(每秒帧数)的指标,fps大幅变化可能就存在卡顿
      一般利用工具测试
  • 流量/电量消耗
    一般利用工具测试

    1. 安装时
    2. 前台运行时
    3. 后台运行时

安全测试

  • 权限

    1. 扣费风险:短信、拨打电话、连接网络等
    2. 隐私风险:访问手机信息、联系人信息等
    3. 限制/允许短信相关权限
    4. 限制/允许自启动
    5. 限制/允许相机
    6. 限制/允许录音
    7. 限制/允许定位
    8. 限制/允许读取用户数据
    9. 限制/允许写入用户数据
  • 数据
    1. 密码与其它敏感信息输入到应用时,不以明文形式存储在设备中
    2. 删除数据时,提供确认框
  • 通信
    1. 创立连接时,若网络连接中断,可通知用户连接中断的情况
    2. 应用运行中通信超时,给用户信息提示
    3. 网络异常时及时将异常情况通知用户
    4. 关闭网络连接,应用断开连接

专项测试

兼容测试

针对主流机型,用几款进行完整测试,更多机型可用云测平台测试。如:testin、阿里云、腾讯云、华为云等

  • 操作系统兼容

    1. 标准android系统、定制化android系统
    2. 标准android系统
    3. ios,只能单向升级,不能降级
  • 机型兼容
    1. 手机品牌、型号
    2. 屏幕类型:全面屏、刘海屏、水滴屏等
    3. 屏幕密度:如hdpi、xhdpi等
    4. 屏幕分辨率
    5. 屏幕尺寸
  • 其它主流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
不同网络区别:带宽/速度、延迟、丢包率、错误率
测试可通过工具模拟不同网络,常见工具:

  1. NEWT
    PC端软件,通过控制电脑网卡模拟各种网络
  2. ATC
    Linux环境运行
  3. QNET
    手机端运行

测试流程

  1. 正常网络测试
  2. 无网测试(飞行模式)
    功能是否可用
    界面/数据是否正常(支持离线浏览的应用)
    继续请求网络是否正确处理
    是否有无网络提示(如提示当前网络已断开,请检查网络设置)
  3. 弱网测试(带宽变小、延迟变大、丢包率上升、错误率上升)
    页面呈现是否完整
    请求超时,是否有相应提示
    丢包是否重发机制
    操作app数据是否发生crash、anr等
  4. 网络切换测试
    测试2G、3G、4G、5G、wifi网络切换,wifi切换至数据流量时,可能导致扣费,是否有提示

其它测试

  • 安装包病毒扫描
  • 安装/卸载测试
    1. 不同渠道安装:应用商店、浏览器等
    2. 安装过程中断,可否继续安装
    3. 是否可覆盖安装
    4. 安装空间不足是否有提示
    5. 安装后,安装目录和文件创建是否正确
    6. 卸载是否有确认提示
    7. 卸载后是否删除相应安装目录
    8. 卸载过程中断,可否使用或继续卸载
  • 升级测试
    非强制(可取消更新提示,正常使用,下次启动仍提示)
    强制(不升级不能用,取消则退出app,下次启动仍是如此)

    1. 自动升级
    2. 升级过程中断
    3. 升级过程内存不足
    4. 升级后数据是否同步
    5. 跨版本升级
  • 消息推送
    APP后台运行时Push消息显示在系统通知栏,正在使用时Push消息只会在APP内,不显示在系统通知栏

    1. 开启推送,则可以正常接收查看
    2. 关闭推送,则接收不到消息
    3. 设置免打扰时间段内,接收不到消息
    4. 推送消息是否按业务规则发送,若针对登录用户,检查消息是否与用户身份相符
  • 登录测试
    很多app提供免登录功能:开启应用时自动以上一次登录的用户来使用

    1. 无网络时能否正常进入免登录状态
    2. 切换用户登录,用户及数据内容更新,确保原用户退出
    3. 密码更换后,进行数据交互时应校验登录是否有效
    4. 用户主动退出登录后,下次启动app时应显示登录页面
  • 切换测试
    主要对于有数据交互(自动更新)的页面进行测试

    1. app切换至后台,再回到app,检查是否在原页面,功能、状态是否正常
    2. 多个app之间相互切换
    3. 出现必须处理的提示框时,进行切换测试,检查提示框
  • 中断测试
    被打扰的情况下,客户端能否正常处理,保证数据的正确性,主要对于核心功能存在实时数据交换的页面进行测试

    1. 电话、信息等提示中断,切换app
    2. 断电、断网重连、锁屏解锁
    3. 插拔数据线、耳机
    4. 程序异常退出(杀掉进程后,再开启app,是否正常)
  • 用户体验测试
    开发者选项:显示布局边界功能
    页面响应时间是否合理(冷启动、热启动、页面切换)
    超时提示、异常提示是否合理
    是否会超时重连

【软件测试】APP测试学习相关推荐

  1. 移动APP测试の学习(2)

    参考了->移动端App测试实用指南 测试人员需要询问问题 测试人员的核心能力在于提出有挑战性的相关问题. 如果你能将调查.询问技巧和技术.产品的知识结合起来,渐渐地,你也会成为一个好的测试人员. ...

  2. 软件测试-App测试流程及测试点

    正式测试前先向主管确认项目排期. 接收版本 App测试版本送测规范 UI测试:核对rp/效果图 功能测试:核对需求文档.兼容性测试.性能压力测试, 尽快申请到正式环境下测试,后台订单统计测试.用户行为 ...

  3. 移动APP测试の学习(1)

    最常见的APP Bug,崩溃的测试用例设计 移动App测试与传统台式机 测试相比有一定的复杂性. 这些复杂性可以被分类为:  环境(大量的设备,各种移动OSs,适应频繁OSs变化) .  设备(触摸式 ...

  4. 软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领

    随着移动终端的普及,手机App应用越来越多,也越来越重要.而作为测试袁的我们也要与时俱进,努力学习手机App的相关测试,本章将介绍手机自动化测试框架Appium.那究竟什么是 Appium呢? 接下来 ...

  5. 软件测试 | app测试中常用的Android模拟器

    本文节选自霍格沃兹测试开发学社内部教材 获取更多相关资料 测试 Android app 的时候,Android 模拟器是经常会用到的工具.模拟器可以轻松的模拟不同的品牌.分辨率和 Android 系统 ...

  6. 一个软件测试工程师的学习体验

    [摘要] 软件质量越来越受到人们的关注,软件测试作为新兴行业有很多不完善的地方.很多从事软件测试工作的同行处于迷茫之中,如何提高,如何解决测试工作中的实际问题,困惑着每一个人.本文总结了一下个人经验, ...

  7. 字节软件测试岗二面:APP测试问题被虐哭了,直到看到这些知识点

    APP测试一直是大厂软件测试问到的一个重点细节,下面我来给大家展示一下大厂关于APP测试经常会问到的一些问题,以及解析.想象一下当你遇到面试官问到你这些问题时,你是否也能够对答如流哦! 注意,注意啦! ...

  8. 软件测试web和app,软件测试如何快速进阶?过来人科普Web与App测试5大区别!

    随着各种移动设备的更新换代,移动互联网呈飞速发展状态,同时,移动应用更是呈指数增长.因为这种情况, app测试方面需求也随之大涨,已经逐渐赶超web测试.我 做了快三年的测试了 , 大部分时间都在做 ...

  9. 2023年大厂高频软件测试面试题:Web 测试 + 接口测试 +App 测试

    又到了一年一度经典的金三银四跳槽季,互联网行业竞争是一年比一年严峻,作为软件测试工程师的我们唯有不停的学习,不断提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里,字节跳动,腾讯 ...

最新文章

  1. python支持向量机框架_Netflix 内部 Python 框架 Metaflow 正式开源,可加速机器学习模型部署...
  2. (二)Python 学习第二天--爬5068动漫图库小案例
  3. cmd打开java文件夹_Java用CMD打开指定文件和文件夹
  4. 业务单号自动增长的处理办法
  5. Billboard HDU - 2795(树状数组,单点修改,区间查询)
  6. Attention模型
  7. duilib入门简明教程 -- 前言(1)
  8. ArcGIS 赋予不同指标权重计算综合结果
  9. 批量增加dns 条件转发器
  10. linux amd显卡调风扇转速,显卡风扇转速设置教程方法
  11. Ubuntu 安装微信
  12. laravel 语言包
  13. xp系统怎么更改计算机用户名和密码,xp系统怎么取消开机密码?
  14. iOS10 更新后问题,获取相册,录音时候闪退问题
  15. 用python制作电子时钟包装_使用电子水墨屏和树莓派制作的时钟,Epaper_clock
  16. 双十一数码产品哪些值得买?双十一好物产品分享
  17. 双相情感障碍会变精分吗?精神科医生为您答疑
  18. Linux安装PHP:system libzip must be upgraded to version = 0.11
  19. java项目如何发送邮件
  20. 一个获取电脑显示器序列号的VBS脚本

热门文章

  1. 打开 OpenAI 的职场之路 - 微软学生开发者峰会
  2. Python自定义高精度小数计算来获取巴塞尔问题的近似值
  3. opengl之高级GLSL(2)-接口块,Uniform缓冲对象,Uniform块布局等
  4. 360加固保的dex脱壳方法
  5. 美团外卖/滴滴20201225面试
  6. Excel学习:实现满足条件的Excel整行标色
  7. Python学习手册(第11章)赋值、表达式和打印
  8. 切片器可以设置日期格式?_Excel中如何使用切片器,这个太高大上了
  9. 手把手教你如何修改JDK的版本问题
  10. 使用mars3d的几种方式