浅谈手机APP测试(流程)

前言

APP测试是一个广泛的概念,根据每个app的应用场景不一样,测试的方向也略微的不同,在测试过程中需要灵活应用自身所知的测试手段。

今天就跟大家简单聊聊手机APP测试的一些相关内容。

APP开发流程

(1) 拿到需求分析需求

(2) 开需求评审会议

(3) 开发做设计,测试做测试设计

(4) 开发设计评审

(5) 测试补充用例

(6) 用例评审

(7) 开发提测,测试搭建测试环境

(8) 冒烟测试

(9) 执行测试用例

(10) 发现bug提交并跟踪

(11) 回归测试

(12) 预发布环境下测试(主要验证主要功能)

(13) 验收测试

(14) 编写测试报告

(15) 线上发布测试(主要验证主要功能,若主要功能无法实现,版本回滚)

(16) 项目总结

手机APP测试的工具

jdk简介

JDK是整个Java的核心,包括了Java开发环境和运行环境JRE、Java工具和Java基础类库。JRE是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写的程序

adb连接模拟器和手机

adb(Android Debug Bridge,安卓调试桥)用于通过电脑代码脚本(或者电脑程序等)控制手机进行操作

(1) abd连接模拟器

adb connect ip地址:端口号

(2) adb连接手机

1、 手机和电脑在同一个局域网

2、 手机打开开发者模式,在开发者选项中允许usb调试和仅充电模式下运行ADB调试、连接USB时总是弹出提示

3、 把数据线连接电脑和手机,如果跳出选择模式,选择MTP传输文件

4、 在cmd输入adb tcpip 5555

5、 拔掉数据线

6、 adb connect 手机的ip地址

adb常用命令

抓取启动、加载时间:adb logcat -v threadtime -b events>名.txt

-s 系统版本 shell(查手机系统版本、截图、获包、获运行)

adb start-server 开启adb服务

adb kill-server 关闭adb服务

adb version 查看adb版本

adb connect ip地址:端口号 连接模拟器

如:adb connect 127.0.0.1:62001

adb devices 查看adb连接状态(device已经连接、offline断开连接、unauthorization已连接但手机不信任此电脑)

adb connect ip地址 adb连接设备()

adb disconnect 断开所有连接

adb disconnect IP地址:端口 断开指定连接

adb shell 进入安卓系统

exit 退出安卓系统

adb shell pm list packages -3 获取手机上的安装包(第3方)

adb shell pm list packages 获取手机上的安装包(外)

pm list packages 获取手机上的安装包(内)

获取正在运行的包名和activity:

adb logcat (获取日志在系统外)

logcat | grep ActivityManager(在系统内部)

adb logcat -c event 清空日志

adb shell dumpsys activity activities 获取正在运行软件

adb install 路径+包名 安装app

adb install -r 路径+包名 覆盖安装app(replace替换)

adb -s ip地址:端口 install 路径+包名 安装到指定

adb uninstall 包名 卸载app

adb push 本地路径 /设备路径 从PC 推送文件 到设备

adb pull /设备地址 本地地址 从设备 拉取文件 到PC

adb shell screencap /sdcard/名.png 屏幕截屏

adb shell getprop ro.build.version.release 查看系统版本

adb -s 192.168.2.135 shell getprop ro.build.version.release查看手机版本

adb -s 127.0.0.1::62001 shell getprop ro.build.version.release查看模拟器版本

启动指定软件:

1.打开软件并运行

2.输入adb shell dumpsys activity activities获取活动软件活动

(cmp=com.tal.kaoyan/.ui.activity.SplashActivity)

3. adb shell am start -W -n 活动

adb shell am start -W -n com.tal.kaoyan/.ui.activity.SplashActivity(上一个命令的

monkey 命令

monkey命令格式如下:

adb shell monkey [options] <event-count>

一般情况下:

adb shell monkey -p 包名 事件数

[options] 是指monkey可传入的参数,是可选项

<event-count> 是指随机发送事件数。

 操作事件

aafmmn prstt

①  --pct-touch 触摸事件(踏起)

②  --pct-motion 手势事件——滑动(摸醒)

③  --pct-rotation 屏幕旋转事件

④  --pct-pinchzoon 二指缩放事件(拼起入嗯)

⑤  --pct-trackball 轨迹事件

⑥  --pct-nav 基本导航事件(上下左右键)()

⑦  --pct-majornav 主要导航事件(键盘的中间键、回退按键、菜单按键)

⑧  --pct-syskeys 系统按键事件(Home键、返回键、音量调节键等)

⑨  --pct-flip 键盘事件(如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等)

⑩  --pct-anyeven 其他事件(如按键、其他不常用的设备上的按钮等)

⑪  --pct-appswith 启动Activity事件

1) 触摸事件

触摸事件是指在屏幕某处按下并抬起的操作,可通过--pct-touch参数来配置其事件百分比。

2) 手势事件

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过--pct-motion参数来配置其事件百分比。

adb shell monkey -p com.tal.kaoyan --pct-touch 70 --pct-motion 30 20

3) 二指缩放事件

二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。可通过--pct-pinchzoom参数来配置其事件百分比。

4) 轨迹事件

轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。可通过--pct-trackball参数来配置其事件百分比。

5) 屏幕旋转事件

屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。可通过--pct-rotation参数来配置其事件百分比。

6) 基本导航事件

基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。可通过--pct-nav参数来配置其事件百分比。

7) 主要导航事件

主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。可通过--pct-majornav参数来配置其事件百分比。

8) 系统按键事件

系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。可通过--pct-syskeys参数来配置其事件百分比。

9) 启动Activity事件

启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过--pct-appswitch参数来配置其事件百分比。

10) 键盘事件

键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。可通过--pct-flip参数来配置其事件百分比。

11) 其他类型事件

其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过--pct-anyevent参数来配置其事件百分比。

ps:各事件百分比之和<=100正常,大于100会提示:** Event weights > 100%

参数

lgnore忽略

1) 设置间隔 如果你希望在每一个指令之间加上固定的间隔时间,可以用--throttle(注意,前面是--)命令。

adb shell monkey -p 包名 --throttle 3000 5

--throttle:后面接时间,单位为ms(<milliseconds>),表示事件之间的固定延迟(即执行每一个指令间隔的时间),若不接该选项,monkey将不会延迟。

2) 包约束 -p包名

-p:后面接一个或多个包名(<allowed-package-name>),如果应用需要访问其他包里的Activity,那相关的包也需要在此同时指定。如果不指定任何包,monkey将允许系统启动全部包里的Activity。

一个包:

adb shell monkey -p com.tal.kaoyan 500

多个包:

adb shell monkey -p com.tal.kaoyan -p com.tencent.mm 500

3) 应用程序崩溃后继续发送事件

如果你希望monkey在应用程序崩溃后继续发送事件,则需要用到--ignore-crashes命令

adb shell monkey --ignore-crashes <event-count>

4) 超时错误继续发送事件

如果你希望monkey在任何超时错误发生后继续发送事件,则需要用到--ignore-timeouts命令。

adb shell monkey --ignore-timeouts <event-count>

5) 应用程序权限错误发生后继续发送事件

如果你希望monkey在应用程序权限错误发生后继续发送事件,则需要用到--ignore-security-exceptions命令。

adb shell monkey --ignore-security-exceptions <even-count>

<event-count>--ignore-security-exceptions:在设置此选项后,当应用程序发生任何权限错误(如启动一个需要某些权限的Activity)时,monkey将继续运行直到计数完成。如果不设置此选项,monkey遇到此类权限错误将停止运行。

monkey参数应用综合案例

测试场景

测试考研帮app Android版。测试希望通过monkey来模拟用户的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应)。 

需求分析

1) 测试是指定应用,因此需要使用-p指定被测app包名:

com.tal.kaoyan

2) 这个测试的目的是希望模拟用户操作,因此需要让monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。因此需要对monkey执行的事件百分比做一些调整:

触摸事件和手势事件是用户最常见的操作,所以通过--pct-touch和--pct-motion将这两个事件的占比调整到40%与25%;目标应用包含了多个Activity,为了能覆盖大部分的Activity,所以通过--pct-appswitch将Activity切换的事件占比调整到30%;被测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过--pct-rotation把横竖屏切换事件调整到5%。

3) 使用--throttle参数来控制monkey每个操作之间的时间间隔 指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机上执行测试时。因此通过--throttle设置monkey每个操作固定延迟0.4秒。

4) 使用--ignore-crashs和--ignore-timeouts参数使monkey遇到意外时能继续执行 在执行monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数--ignore-crash和--ignore-timeouts,让monkey在遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。

5) 使用-v指定log的详细级别 monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,这里将日志设为 -v -v.

测试命令

adb shell monkey -p com.tal.kaoyan

--pct-touch 40 --pct-motion 25

--pct-appswitch 30

--pct-rotation 5

--throttle 400

--ignore-crashes

--ignore-timeouts

-v -v 200

 

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年,IT行业下一个就业风口在哪?

搜狐&#xff1a;我宣布与华为达成鸿蒙全面合作&#xff01; 美团&#xff1a;我宣布与华为达成鸿蒙全面合作&#xff01; 360 &#xff1a;我宣布与华为达成鸿蒙全面合作&#xff01; 高德&#xff1a;我宣布与华为达成鸿蒙全面合作&#xff01; 新浪&#xff1a;我宣布与华为…

一站式解决钉钉开票与金蝶云星辰对接问题,让企业管理更轻松!

客户介绍 某企业服务有限公司专注于为企业提供全方位、高质量的企业服务&#xff0c;致力于于企业管理咨询、企业形象策划、市场营销策划、财务管理咨询等方面。该公司拥有一支经验丰富、专业化的团队&#xff0c;他们深入了解企业需求&#xff0c;为客户提供个性化的解决方案…

MoEs学习

和多任务学习的mmoe很像哦&#xff08;有空再学习一下&#xff09;moe layer的起源&#xff1a;Switch Transformers paper MoE moe由两个结构组成&#xff1a; Moe Layer &#xff1a;这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如…

如何使用阿里云CDN服务?

如何使用阿里云CDN服务 一、开通阿里云CDN服务 注册自己阿里云账号&#xff0c;找到CDN服务&#xff0c;进行加速即可 二、配置域名信息 1、各配置参数的含义 添加加速域名&#xff1a; 如果需要使用CDN加速指定网站上的业务&#xff0c;则需要将该网站作为源站&#xff0…

“豚门”、“吗喽”,为啥品牌宣传瞄上网红动物?

近期&#xff0c;新茶饮品牌喜茶联名红山动物园&#xff0c;凭借可爱周边拿捏无数消费者&#xff0c;再往前一段时间&#xff0c;还有奈雪联名“吗喽”表情包&#xff0c;为什么品牌宣传会瞄上网红动物&#xff0c;今天媒介盒子就来和大家聊聊。 一、 萌元素引起用户情绪共鸣 …

蓝桥杯---三羊献瑞

观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。 答案 代码 public class _03三羊献瑞 {public static void main(String[] args) {//c 生 b 瑞 g 献 d 辉…

如何系统学习机器学习?

要系统学习机器学习&#xff0c;首先需要掌握一些基础编程技能&#xff0c;如Python。其次&#xff0c;学习基础的数学概念&#xff0c;如线性代数、概率论和统计学。然后&#xff0c;选择一些优质的在线课程和教材进行深入学习。最后&#xff0c;通过实践项目来巩固所学知识。…

html火焰文字特效

下面是代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>HTML5火焰文字特效DEMO演示</title><link rel"stylesheet" href"css/style.css" media"screen" type&quo…

2024.1.23 GNSS 零散知识 学习笔记

1.天线种类 2.接收机 2.四大导航系统的介绍 3.卫星高度与轨道卫星种类 4.GNSS有哪些应用 5.在空间保持静⽌或匀速直线运动(⽆加速度)的坐标系称为惯性坐标系。 6.地⼼惯性坐标系实际上并没有满⾜能成为惯性坐标系的条件&#xff1a; ⾸先&#xff0c;地球及其质⼼都在围绕太阳…

[计算机提升] 切换(域)用户

4.14 切换(域)用户 4.14.1 为什么要切换用户 在Windows系统中&#xff0c;切换用户的主要目的是为了实现多用户共享同一台计算机的便利和安全。当多个人需要使用同一台计算机时&#xff0c;每个人可以登录自己的用户账户&#xff0c;这样可以避免互相干扰和混淆数据。 以下是…

《深入解析Java虚拟机:从JVM体系结构到垃圾回收算法》

文章目录 JVM体系结构JVM的组成 类加载器Class Loader类加载器的作用双亲委派机制JVM自带三个类加载器Bootstrap ClassLoader-根加载器ExtClassLoader-扩展加载器AppClassLoader-应用类加载器 Java历史-沙箱安全机制沙箱概念沙箱的作用本地代码和远程代码沙箱安全机制模型JDK1 …

C语言快速排序(非递归)图文详解

前言&#xff1a; 上一期分析了快速排序的三种写法&#xff0c;这三种写法有一个相同点&#xff0c;都是采用递归形式来实现的&#xff0c;那么有没有非递归的方法实现呢&#xff1f;答案是当然有&#xff0c;用非递归的方法实现快速排序&#xff0c;其实可以借助数据结构中的栈…

【LangChain学习之旅】—(10) 用RouterChain确定客户意图

【【LangChain学习之旅】—&#xff08;10&#xff09; 用RouterChain确定客户意图 任务设定整体框架具体步骤如下&#xff1a; 具体实现构建提示信息的模板构建目标链 Reference&#xff1a;LangChain 实战课 任务设定 首先&#xff0c;还是先看一下今天要完成一个什么样的任…

《鸟哥的Linux私房菜》第1章——总结与简答题回答

目录 一、什么是Linux&#xff0c;有什么作用&#xff1f; 二、Linux发展史 三、Linux发行版 四、简答题部分 一、什么是Linux&#xff0c;有什么作用&#xff1f; Linux包括内核和系统调用两部分&#xff0c;是位于硬件设备与应用程序中间的操作系统。 操作系统其实也是…

多维时序 | Matlab实现GWO-TCN-Multihead-Attention灰狼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现GWO-TCN-Multihead-Attention灰狼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现GWO-TCN-Multihead-Attention灰狼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效…

python爬虫代码示例:爬取京东详情页图片

python爬虫代码示例:爬取京东详情页图片 一、Requests安装及示例 爬虫爬取网页内容首先要获取网页的内容&#xff0c;通过requests库进行获取。 GitHub: https://github.com/requests/requests PyPl: https://pypi.python.org/pypi/requests 官方文档:http://wwwpython-requ…

Java可以用于物联网的开发吗?

Java可以用于物联网的开发吗? 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;J…

web安全学习笔记【06】——http\https抓包

思维导图放最后 #知识点&#xff1a; 1、Web常规-系统&中间件&数据库&源码等 2、Web其他-前后端&软件&Docker&分配站等 3、Web拓展-CDN&WAF&OSS&反向&负载均衡等 ----------------------------------- 1、APP架构-封装&原生态&…

SpringBoot集成mybatis时idea控制台中文乱码问题解决

在application.yml中配置好映射文件打印数据库日志文件时&#xff0c;控制台出现乱码的情况解决如下 问题 在执行查询操作的时候&#xff0c;查询时可以查看是没有问题的&#xff0c;但是控制台乱码了 解决 在File-Setting-Editor-File Encodings中设置如图所示就可以了 现在…

软件测试之功能测试详解

一、测试项目启动与研读需求文档 &#xff08;一&#xff09; 组建测试团队 1、测试团队中的角色 2、测试团队的基本责任 尽早地发现软件程序、系统或产品中所有的问题。督促和协助开发人员尽快地解决程序中的缺陷。帮助项目管理人员制定合理的开发和测试计划。对缺陷进行跟…