APP专项测试方法和工具的使用(测试新手必看)
APP专项测试
1、网络测试
可使用抓包工具辅助网格测试推荐:fiddler,Charles
(1)网络切换2G-3G-4G-wifi-网络信号差--无网(2)网络信号弱关注是否出现ANR、crash
2、中断测试
(1)意外中断a、来电b、短信c、闹铃d、断网e、断电f、视频聊天g、语音聊天h、无响应i、系统更新提醒j、内存不足提醒k、其他app的消息通知
(2)任务切换a、锁屏b、切换到其他应用
3、兼容测试
(1)不同的机型
(2)不同的操作系统版本
注意:app兼容测试方法
(1)手工测试(一般适用于用户量小、且对兼容测试要求不高的项目)
(2)云测试平台(一般适用于用户量大、且对兼容测试要求高的项目)
目前市场上主流云测试平台包括:
(1)腾讯云测:
http://wetest.qq.com
(2)百度云测:
http://mtc.baidu.com
(3)阿里云测:
http://mqc.aliyun.com/
(4)testin云测:
https://www.testin.cn/
4、性能测试
(1)客户端性能测试a、流量消耗b、耗电量c、CPUd、内存消耗
(2)服务器端性能测试
5、UI测试
(1)横竖屏切换
(2)手势操作a、长按呼出菜单b、双手捏合放大放小c、滑动
(3)输入信息界面自适应键盘遮挡
(4)其他UI测试要点与web基本相同
6、安全测试
(1)密码不明文显示
(2)密码框不支持复制
(3)敏感信息加密传输
(4)多次登录失败,锁定账号
(5)登录成功后,长时间不操作软件,session是否丢失,提示重新登录
(6)权限控制
(7)SQL注入
7、稳定性测试(使用monkey完成)
8、安装测试
(1)安装前a、干净的安卓系统b、装有旧版本的安卓系统c、装有本版本的安卓系统d、装有最新版本的安卓系统(需要安装旧版本)e、装有杀毒软件的安卓系统f、装有同行业其他软件的安卓系统g、内存不足的安卓系统(2)安装过程中a、意外中断b、许可确认提示c、是否显示安装进度(3)安装后a、软件是否可以正常启动b、检查安装文件是否齐全c、检查许可权限d、统计安装总时长
9、升级测试
(1)自动升级
(2)弹出是否升级的提示,人工选择
(3)升级过程中意外中断
(4)升级过程中内存不足
(5)升级后数据是否同步
(6)app运行状态下升级
(7)跨版本升级测试
10、卸载测试
(1)大型app考虑卸载过程中意外中断
(2)app处于运行状态下进行卸载
(3)app卸载后,对应的文件是否删除
(4)卸载后,重新再次安装该版本app
(5)是否弹出卸载确认提示
11、接口测试(需求抓包工具辅助)
(1)系统内模块间的接口
(2)系统外第三方接口(有界面,主调)
(3)系统外被调接口(无界面,需要接口测试工具模拟发送请求)
12、其他测试
(1)支持文件格式a)图片上传b)视频上传c)文件上传
APP测试需要的工具
一、adb测试工具
adb:android debug bridge,安卓调试桥梁,一款用于连接电脑与安卓手机的工具
1、adb get-serialno 获取序列号:
2、adb devices:用于查看电脑当前连接的安卓设备
3、adb install apk文件包:在安卓设备上安装app注意:若当前电脑连接的安卓设备2台及以上,可通过以下命令完成安装:adb -s 设备序列号 install apk文件包install -r 覆盖安装,保留数据和缓存文件 -d 解决低版本version问题 -s 安装apk到sd卡
4、adb uninstall app软件包名:卸载appuninstall 可选参数-k的作用为卸载软件但是保留配置和缓存文件
5、adb shell:进入adb运行环境5.1、adb [-d|-e|-s <serial Number>] <command> -d:真机(多个设备中只有一个真机时适用) -e:模拟器(多个设备中只有一个模拟器时适用) -s:序列号5.2、adb shell ls [-al] 列出目录下的文件和文件夹,可选参数-al可查看文件和文件夹的详细信息5.3、adb shell cd <folder> 进入文件夹5.4、adb shell cat <filename> 查看文件5.5、adb shell rename path/oldfilename path/newfilename 重命名文件5.6、adb shell rm -r <folder> -r 可选参数用于删除文件夹及下面的所有文件 5.7、adb shell mv path/1 path/2 移动文件5.8、adb shell cp file path/1 拷贝文件5.9、adb shell mkdir path/1 创建目录5.10、adb shell chmod 777 filename 设置文件最高读写权限6、adb push 电脑端路径及文件 手机端路径:将电脑端指定的文件传输到手机指定的路径中
7、adb pull 手机端路径及文件 电脑端路径:将手机端指定的文件传输到电脑端指定的路径中
8、adb logcat 查看log:安卓系统中生成的日志,有哪些级别?I:信息V:冗(rong)余 (最低优先级)D:调试W:警告E:错误F:严重错误S — 静默 (最高优先级,不会打印任何信息)日志格式:adb logcat -s 过滤指定参数log -v time 保留日志时间 >> 追加写 > 覆盖写日志过滤:adb -e logcat 标签名:级别>1.txt 或者使用grep过滤adb logcat | grep "SEARCH_TERM"如:adb -e logcat taobao:w>11.txt将w级别及其以上级别日志,且含taobao标签的所有日志保存到11.txt中如:adb -e logcat *:w>11.txt将w级别及其以上级别日志,所有日志保存到11.txt中使用来清除旧的日志adb logcat -c9、adb reboot 重启机器:
10、adb reboot [bootloader|recovery] 重启设备,可选参数进入bootloader(刷机模式)或recovery(恢复模式)
11、adb shell am start -n package_name 启动应用
12、adb kill-server 终止adb服务进程:
13、adb start-server 重启adb服务进程:
14、adb help 获取帮助 里面有adb的各种命令和参数的介绍
15、adb version 查看adb版本
16、adb root 以root权限重启adb
17、adb remount 将system分区重新挂在为可读写分区,此命令在操作系统目录时很重要
18、adb shell pm path <package_name> 查看app的路径 18.1、adb shell pm list packages 查看所有App的名称查看手机上的APP名称。可以在后面加上 -f
19、adb shell dumpsys package <package_name> | grep version 查看apk的版本信息
20、adb shell pm clear <PACKAGE> 删除与包相关的所有数据:清除数据和缓存
21、adb shell ps <package_name|PID> 【 adb shell ps | grep <package_name>】 查看某个app的进程相关信息
22、adb shell kill pid Number杀掉某个进程,一般用于模拟某个bug复现
23、adb shell dumpsys meminfo <package_name|PID> 查看某一个app的内存占用
24、adb shell getprop | grep heapgrowthlimit 查看单个应用程序的最大内存限制
25、adb shell dumpsys batterystats ><package_name> > xxx.txt 获取单个应用的电量消耗信息
26、adb shell wm size【adb shell dumpsys window | grep Surface】 查看手机分辨率
27、adb shell getprop | grep version 查看手机sdk版本
28、adb shell getprop | grep product 查看手机型号信息
29、 adb shell cat /proc/meminfo 查看系统当前内存占用
30、adb shell top 查看设备上进程的cpu和内存占用情况
31、adb shell screencap /sdcard/screen.png 命令来进行手机屏幕截图
32、adb shell screenrecord /sdcard/demo.mp4 命令来录制屏幕视频
33、adb shell input 模拟按键/输入33.1、adb shell input text "insert%stext%shere" 命令向屏幕输入框输入一些信息%s表示空格33.2、adb shell input tap 500 1450 模拟屏幕点击事件33.3、adb shell input swipe 100 1500 100 450 100 模拟手势滑动事件表示从屏幕坐标(100,1500)开始,滑动到(100,450)结束,整个过程耗时100ms. 【adb shell input swipe 100 500 100 500 500】模拟长按事件33.4、adb shell input keyevent 模拟点按实体按钮的命令
二、monkey
1、使用场合:主要用于app的稳定性测试。安卓系统自带的一款工具。
2、原理:通过发送大量的随机事件,测试手机或某app的稳定性。
3、adb shell monkey 事件数>日志文件:测试手机的稳定性
4、monkey命令的基本参数
(1)-p app软件包名
注意:若需要同时往多个app发送随机事件,增加-p app软件包名2即可
如:
adb shell monkey -p 软件包名1 -p 软件包名2 事件数>日志文件
(2)日志详细级别:-v:详细级别为1等级-v -v-v -v -vANR:应用程序无响应,application not responding
数
(3)增加事件延迟--throttle 毫秒数
(4)-s 种子数5、monkey的事件类型
(1)--pct-touch 百分比:触摸事件
注意:百分比可书写为70或70%,多种事件百分比相加不能大于100%
(2)--pct-motion 百分比:滑动事件
如:adb shell monkey -p 软件包名 -v -v -v --pct-touch 60 --pct-motion 20 5000 >日志文件
(3)--pct-trackball 百分比:轨迹事件
(4)--pct-nav 百分比:上下左右方向键
(5)--pct-majornav 百分比:Home键,菜单键,返回键
(6)--pct-syskeys 百分比:声音键、锁屏键等系统键6、monkey的调试选项
(1)--hprof:在/data/misc目录下会生成profiling报告,该报告文件容量较大,小心使用
(2)--ignore-crashes:忽略崩溃。monkey执行过程中,遇到崩溃,不停止,继续执行下去
(3)--ignore-timeouts:忽略超时错误(ANR)。monkey执行过程中,遇到ANR,不停止,继续执行下去
(4)--ignore-security-exceptions:忽略许可错误。monkey执行过程中,遇到许可错误,不停止,继续执行下去
(5)--kill-process-after-error:程序出错后结束进程。
ADB用法大全:
点开链接访问具体内容:http://www.wanandroid.com/blog/show/2310
笔者先写这些测试方法,后续会继续更新,如有其他好的测试方法请在下方留言!!!
相关文章:
APP专项测试方法和工具的使用(测试新手必看)
APP专项测试 1、网络测试 可使用抓包工具辅助网格测试推荐:fiddler,Charles (1)网络切换2G-3G-4G-wifi-网络信号差--无网(2)网络信号弱关注是否出现ANR、crash 2、中断测试 (1)…...
WordPress网站迁移实战经验
前几日,网站服务器到期,换了服务商,就把我的WordPress的网站迁移到本地电脑了。方便以后文章迁移。 本次迁移网站主要经历以下几个步骤。 1.域名转出。 2.备份数据库及网站文件下载。 3.重新搭建WordPress网站。 4.网站文件及数据库导入。 下面详细介绍下每个步骤的操作…...
3D全景视角,足不出户感知真实场景的魅力
近年来,随着科技的快速发展,普通的平面静态视角已经无法满足我们了,不管是视角框架的限制还是片面的环境展示,都不足以让我们深入了解场景环境。随着VR全景技术的日益成熟,3D全景技术的出现为我们提供了全新的视觉体验…...
C编译环境和预处理(非常详细,建议收藏)
C编译环境和预处理(非常详细,建议收藏) 一、程序的翻译环境和执行环境二、 详解编译链接2.1 翻译环境2.2 编译本身的几个阶段符号汇总、符号表、合并段表、符号表的合并和重定位分别是什么? 2.2 运行环境 三、预处理详解3.1 预定义…...
LeetCode669. Trim a Binary Search Tree
文章目录 一、题目二、题解 一、题目 Given the root of a binary search tree and the lowest and highest boundaries as low and high, trim the tree so that all its elements lies in [low, high]. Trimming the tree should not change the relative structure of the …...
YOLOv8优化策略:轻量级Backbone改进 | VanillaNet极简神经网络模型 | 华为诺亚2023
🚀🚀🚀本文改进:一种极简的神经网络模型 VanillaNet,支持vanillanet_5, vanillanet_6, vanillanet_7, vanillanet_8, vanillanet_9, vanillanet_10, vanillanet_11等版本 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,…...
【数据结构(二)】稀疏 sparsearray 数组(1)
文章目录 1. 稀疏数组的应用场景1.1. 一个实际的需求1.2. 基本介绍 2. 稀疏数组转换的思路分析3. 稀疏数组的代码实现3.1. 二维数组转稀疏数组3.2. 稀疏数组转二维数组 4. 课后练习 1. 稀疏数组的应用场景 1.1. 一个实际的需求 问题: 编写的五子棋程序中&…...
MySQL的执行器是怎么工作的
作为优化器后的真正执行语句的层,执行器有三种方式和存储引擎(一般是innoDB)交互 主键索引查询 查询的条件用到了主键,这个是全表唯一的,优化器会选择const类型来查询,然后while循环去根据主键索引的B树结…...
【目标测距】雷达投影测距
文章目录 前言一、读取点云二、点云投影图片三、读取检测信息四、点云投影测距五、学习交流 前言 雷达点云投影相机。图片目标检测,通过检测框约束等等对目标赋予距离。计算消耗较大,适合离线验证操作。在线操作可以只投影雷达检测框。 一、读取点云 py…...
uniapp、小程序canvas相关
1、圆形or圆形头像 //示例 const ctx uni.createCanvasContext(myCanvas); //canvas const round uni.upx2px(72) / 2; // 半径 const x uni.upx2px(92); //目标x轴位置 const y uni.upx2px(236); //目标y轴位置//if 图片是不是静态资源 async > const imgSrc https:/…...
[工业自动化-23]:西门子S7-15xxx编程 - 软件编程 - 西门子PLC人机界面交互HMI功能概述、硬件环境准备、软件环境准备
目录 一、什么是人机界面 二、什么是PLC人机交互界面HMI 三、人机界面设计的功能列表 四、开发主机与PLC的连接方式 五、开发主机与HMI的连接方式 六、HMI组态 一、什么是人机界面 人机界面是指人与机器或系统之间的交互界面。它是人类与计算机或其他设备之间进行信息交换…...
在Ubuntu系统中安装VNC并结合内网穿透实现公网远程访问
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
java基础练习缺少项目?看这篇文章就够了(上)!
公众号:全干开发 。 专注分享简洁但高质量的动图技术文章! 项目概述 本教程适合刚学习完java基础语法的同学,涉及if语句、循环语句、类的封装、集合等基础概念,使用大量gif图帮助读者演示代码操作、效果等,是一个非常…...
鸿蒙为什么使用typescript 作为开发语言 而不是 flutter 或者 kotlin
猜想如下 dev studio 是基于 idea 二次开发的 ,使用kotlin 应该是更合理 变成 jetbrain 全家桶, 但是 现在android 开发也是kotlin 是不是为了做分割 ,所以不使用kotlin flutter 是谷歌的 安卓也是谷歌的 所以不采用 typescript 是微软的…...
Flutter NestedScrollView 、SliverAppBar全解析,悬浮菜单的应用
在我们开发过程中经常会使用到悬浮菜单的使用,当我们滑动到指定位置后,菜单会自动悬浮。 实现效果如下(左为滑动前、右为滑动后): 上述便是通过NestedScrollView 、SliverAppBar实现的效果,通过两个控件我…...
Mongodb 副本集名称重命名
副本集重命名 要重命名副本集,您必须关闭副本集的所有成员,然后使用新的副本集名称配置每个成员的数据库。 此过程需要停机。 先决条件 确保您的副本集未分片。重命名过程仅适用于未分片的副本集。 在重命名副本集之前,请 对 MongoDB 部…...
C#WPF属性触发器实例
本文讲解C#WPF属性触发器的实例 在属性触发器中,当一个属性发生更改时,它将立即或动画更改另一个属性 实例 <Windowx:Class="TriggerDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://sch…...
Kotlin 核心语法,为什么选择Kotlin ?
Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性。 Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于 Android开发者&#…...
SpringCloud微服务:Nacos的集群、负载均衡、环境隔离
目录 集群 在user-service的yml文件配置集群 启动服务 负载均衡 order-service配置集群 设置负载均衡 当本地集群的服务挂掉时 访问权重 环境隔离 1、Nacos服务分级存储模型 一级是服务,例如userservice 二级是集群,例如杭州或上海 …...
Selenium+Python做web端自动化测试框架实战
最近受到万点暴击,由于公司业务出现问题,工作任务没那么繁重,有时间摸索seleniumpython自动化测试,结合网上查到的资料自己编写出适合web自动化测试的框架,由于本人也是刚刚开始学习python,这套自动化框架目…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
