【软件测试】APP测试

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
# 安装app
 adb install apk文件路径
# 指定手机安装(多台设备 -s指定设备)
 adb -s 127.0.0.1:21503 install apk文件路径

# 卸载app
 adb uninstall app包名

app包名:

  • AndroidManifest.xml文件中查找 package
    在这里插入图片描述

  • aapt工具(在SDK工具文件中)aapt d badging apk文件路径
    在这里插入图片描述

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

    # 未adb shell进入系统时使用
    adb shell dumpsys window | findstr mCurrentFocus
    # adb shell进入系统后使用
    dumpsys window | grep mCurrentFocus
    
  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 错误信息
# 清除缴存日志
adb logcat -c
# -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. 录屏adb shell screenrecord /sdcard/name.mp4
    注:ctrl+c 停止
  4. 其它命令
命令含义备注
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
# 测试app
 adb 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. 屏幕尺寸
  • 版本兼容
    1. 老版本对新功能的界面兼容
    2. 老版本对新功能的功能数据兼容
  • 其它主流APP兼容

dpi:每英寸点数

屏幕标识含义参数
ldpi低密度屏幕约120dpi
mdpi中密度屏幕约160dpi
hdpi高密度屏幕约240dpi
xhdpi超高密度屏幕约320dpi
xxhdpi超超高密度屏幕约480dpi
xxxhdpi超超超高密度屏幕约640dpi
nodpi不希望缩放
tvdpimdpi~hdpi之间约213dpi
anydpi适应所有屏幕密度

脚本使用,命令放入批处理文件,扩展名为.bat

# 安装app
 adb install app路径
# 运行app
 adb shell am start -n 包名/包名.activity名
# 等待10s
 choice /t 10 /d y /n >nul
# 退出app
 adb shell am force-stop 包名
# 卸载app
 adb uninstall 包名

网络测试

手机网络:2G、3G、4G、5G、wifi
不同网络区别:带宽/速度、延迟、丢包率、错误率
测试可通过工具模拟不同网络,常见工具:

  1. NEWT、clumsy
    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. 卸载过程中断,可否使用或继续卸载
    9. 卸载后重装
  • 升级测试
    非强制(可取消更新提示,正常使用,下次启动仍提示)
    强制(不升级不能用,取消则退出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,是否正常)
    5. 服务重启
  • 用户体验测试
    开发者选项:显示布局边界功能
    页面响应时间是否合理(冷启动、热启动、页面切换)
    超时提示、异常提示是否合理
    是否会超时重连
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试App项目练手是一种学习和提升软件测试技能的有效方式。通过参与App项目的测试,我们可以实际操作并了解软件测试的各个方面,包括需求分析、测试计划制定、测试环境搭建、测试用例设计、缺陷跟踪和报告等。 首先,软件测试App项目练手可以帮助我们学习需求分析的能力。通过与开发人员和项目经理进行沟通,我们可以理解和准确把握项目的需求,从而能够制定出合理的测试计划和设计出具有代表性的测试用例。 其次,练习软件测试App项目还可以帮助我们掌握测试环境搭建和配置的技巧。在开展测试之前,我们需要搭建相应的测试环境,并保证其与实际运行环境的一致性,以确保测试结果的准确性和可靠性。 此外,软件测试App项目的练手过程中,我们还需要设计测试用例来验证软件的各个功能和模块。通过练习,我们可以提高测试用例设计的效率和准确性,并能够覆盖到所有可能的测试场景,以发现潜在的软件缺陷。 最后,软件测试App项目的练手也可以帮助我们熟悉缺陷跟踪和报告的过程。在测试过程中,我们会遇到各种不同的缺陷,需要进行准确的缺陷跟踪和记录,并向开发人员提供详细和清晰的缺陷报告,以便他们能够及时修复。 总之,软件测试App项目练手是一个锻炼和提升软件测试技能的有效方法。通过参与项目的测试,我们可以学习需求分析、测试环境搭建、测试用例设计和缺陷跟踪等各个方面的知识和技巧,从而更好地应对和完成实际的软件测试工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值