app测试

一、项目介绍

这次的项目是测试c/s架构,也就是app端,测试流程为以下几步:

Part1:功能测试和非功能测试
Part2:项目环境搭建部署
Part3:抓包辑勿测试
Part4:数据库辅助测试

1.1app功能与非功能

在这里插入图片描述
前端
使用自己注册的账号
后端
用户名:test1
密码::123456
在这里插入图片描述
在这里插入图片描述

前台、中台、后台介绍

在这里插入图片描述

  • 现在还有一些项目会分为前台、中台、后台。
  • 中台:有些复杂的项目,会把后台的一些与前端直接交互的功能快单独拎出来放在服务器的某一个部分,简称为中台,常见的有:web服务、第三方接口服务
  • 真正的后台就是存放数据,以数据库为主的叫后台
  • 举个例子就是:web应用服务器作为中台,起到承上启下的作用。前端客户端来的第一个请求,先找web服务器,也就是中台,那中台里面需要数据找后台数据库去要。

注:如果是同一家项目,不管是web的APP还是小程序,他们后台都是一样的。

网页上操作过后,app上也能看到,比如京东淘宝购物,网页加入购物车的,app端也能看到。只能说APP的功能更集中,更简化,而web端功能更复杂一些。

需要记几个核心功能之类的,熟悉项目,了解项目技术栈
请添加图片描述

⭐项目介绍面试官角度和演讲者角度

以面试官的角度思考,项目介绍的重点

  • 项目架构:B/S 、C/S

  • 项目类型:电商类型

  • 核心业务:购买业务、发货业务、售后业务

  • 核心模块:搜索、添加购物车、下单、支付、发货、退货退款、换货、会员管理、商品管理、订单管理等

  • 项目介绍(演讲模版):

项目名称:tpshop商城系统(App)
项目概述:
该项目基于C/S架构的电商系统平台,为有购物需求的线上用户
提供便捷线上购物服务,该系统提供的商品直接源于供应商,能够
提供更实惠的购物体验,并且全系商品支持7天无理由退换货。
该项目核心业务有:xxx xxx 核心模块 xxx xxx
本人主要负责:xx 业务 和xxx 模块

1.2熟悉电商核心业务

请添加图片描述

  • 核心功能:

商品展示(因服务器问题轮播图暂不可见)
商品分类浏览(手机、电器、家居等)
用户注册/登录
购物车功能
订单支付流程

1.2.1注册

先注册一个账号,不要用自己的手机号奥,否则就会和博主一样收到垃圾广告,前几天还有人找主包贷款😂。
在这里插入图片描述

1.2.2 购买商品

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.3放入购物车,再购买

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.2.4 后台发货

我们先把前面想买的东西付款,不是真的付款哈。
在这里插入图片描述
打开后台订单列表,找到我们的订单
在这里插入图片描述
由于平台没办法支付,所以以管理员身份模拟支付,右滑会有一个查看
在这里插入图片描述
管理员实际上拿到的是这样的:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.2.5 商家收货评价

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.6退换货流程

有三种:仅退款、退货退款、换货

仅退款:一般就是和商家协商好了,商家说不需要退货了,直接给你退,写个申请即可
退货退款:衣服不满意,想退货退款
换货:号码不合适,有损坏,想换一个

那我拿衣服为例子,退货退款

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切换为管理员:
在这里插入图片描述
在这里插入图片描述
查看前台:
在这里插入图片描述
请添加图片描述
请添加图片描述
再回到管理员端:
在这里插入图片描述
在这里插入图片描述

  • 原路返回
  • 返回到账户:防止套现,一般不采用,但是我们平台这样做,能做到可视化,所以采用这个。
    回到用户端,钱已到账
    在这里插入图片描述

1.2.7其他核心业务+角色介绍

商品列表–商品添加+下架
在这里插入图片描述
活动操作:促销、秒杀抢购,团购、砍价活动,测相关价格优惠。在这里插入图片描述
项目中比较热门的促销业务,如果用到的时候给大家再说
在这里插入图片描述
平台用户介绍:普通卖家、管理员、超级管理员,仓管员,客服运营,还有编辑。

大家作为测试人员,你测一个系统不单单是一个普通用户,你的身份是要多重变化的,站在不同的用户角度呢,去分别测它的核心功能和核心业务。

你如果是商家的身份,你要考虑一下,我是商家,我要去看重点关注啥,如果我是客服,我要测什么流程,那如果我是仓管员。我又要测试

比如说我是运营,我要负责是改价格,负责货物的数量,看库存数有没有超额超限等

在这里插入图片描述
当然每个人有一定的角色,其实通过角色就能看出来。我们平台上就这么多家运营人员,还有的加盟商,专员,仓管员,客服编辑,每个角色呢,负责的任务是不一样的。那预示着我们测试对应的业务的时候是不一样的。可以看到整个系统还是蛮复杂的。
在这里插入图片描述

1.2.8 营销核心模块熟悉,面试会问答多一些关于活动的

直接发优惠卷:简单

在这里插入图片描述
注意发放时间要看准,一会要发布的
在这里插入图片描述
下单送:就是你下过单了,我给你送
指定发放:我直接给你发到你的账户上,相当给你发钱。
免费领取:就是等你注册完了之后直接可以去领取

在这里插入图片描述
给自己这个账号发送一个优惠券
在这里插入图片描述
回到普通用户:
在这里插入图片描述
使用优惠券购买商品:
在这里插入图片描述

抢购秒杀

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
0元购哈哈哈:
在这里插入图片描述

测试人员需要考虑的方面

首先得测商家发布活动有什么规则,发布的抢购有时间限制、有价格的限制、有数量限制…这就是我们之前提到的规则。

对于普通用户测试方向:第一,我正常购买,能不能购买,第二,我参加抢购活动,能不能正常购买?然后第三,如果我参加求购活动了,我和别的优惠券叠加在一起,能不能购买?

⭐1.3 APP测试范围和思路

  • APP功能测试
    • 业务
    • 单模块
  • APP专项测试
  • APP性能测试

面试:web类项目测试和APP项目测试有啥区别?

相同点:

  1. 对于同一项目而言,web和APP的服务器一样【即核心业务及核心功能模块测试基本一致】;
    2.默认传输协议一样【HTTPS】

不同点:
2. 传输数据格式:对于APP而言服务端返回数据格式以JSON为主,而web端而言服务端返回数据格式比较多
3. 架构不同:APP是C/S架构,web是B/S架构
4. 测试范围:APP测试会更多的关注专项及APP性能本身测试,而web端主要关注兼容性、易用性等测试

1.业务测试

  • 业务流程图

    • 业务流程图
    • 找出路径梳理测试点

2.单模块测试

  • 设计思路

    1. 熟悉需求:看懂需求,找核心目的和条件【需求规则】
    2. 提取测试点转用例:基于需求转化为测试点
    3. 通过AI转测试用例
  • 测试设计

    • APP功能
      • 显示
      • 操作
    • APP非功能
      • APP专项
      • APP性能

1.3.1APP测试范围

  • 功能:与web一样,都是测业务+单模块
  • 非功能:与web不一样,app性能+专项(APP项目所特有的)后面有一个课程是性能测试(更为重要),与这个无关,那个测得是服务端性能

请添加图片描述

  • 安装卸载:APP特有
  • 消息推送:第三方app给你弹一些消息
  • 交叉事件:简单理解来说就是干扰,比如正在用app,突然间来了个电话,那这个时候呢,可能优先电话的事处理完之后,回过头来,看APP还能不能正常用?会不会APP崩了?不能用了,这就叫交叉事件。

再比如说你打游戏呢,正在打游戏,打的正嗨呢,突然间电话来了,突然间有人给你打视频了,这个时候会中断,那中断之后回去之后你的这个游戏,进度还能不能正常进行.

  • 用户体验:对APP项目来说要求非常高,用的人多体验性好,不多体验不好
  • 兼容性:app对于兼容性要求更多,比如说一个APP从系统上来说,要支持安卓系统、iOS系统、鸿蒙系统…。从品牌上来说,安卓系统有各种厂商,比如小米,OPPO、vivo的等等。系统还有支持不同的分辨率,有的屏幕六点五寸的,有的是六点六的,有的是五点几寸的屏幕,不同的屏幕能不能正常使用。
面试问题:APP与web测试区别

请添加图片描述

  • 传输格式:web端,抓包后台的响应,各种形式的文件都有json、html、图片等等。但是app端以json为主,也有图片等。(没有html,html只有浏览器能渲染)
  • app非功能:app性能+专项(APP项目所特有的)+一些共有的非功能测试
  • 学过Python的应该知道json:就是字符串类型的字典
    请添加图片描述

1.3.2APP核心业务测试复习

请添加图片描述

购物流程测试用例

在这里插入图片描述
编写测试点:
1、找流程
2、书写测试点
在这里插入图片描述
使用ai编写测试用例:
附件:在这里插入图片描述

你以软件测试工程师的身份,根据测试用例八要素模版,将以购物流程下测试点转换为测试用例:
购物流程
	立即购买
		购物成功(选择商品-立即购买且已登录且购买成功-下订单-支付成功)
		购物失败(选择商品-立即购买-未登录购买失败)
		购物失败(选择商品-立即购买已登录但购买失败)
		购物失败(选择商品-立即购买且已登录且购买成功-下单失败)
		购物失败(选择商品-立即购买且已登录且购买成功-下订单-支付失败)
	加入购物车购买
		加入购物车购物成功(选择商品-加入购物车且加购成功且已登录-下订单-支付成功)
		加入购物车购物失败(选择商品-加入购物车但加购失败)
		加入购物车购物失败(选择商品-加入购物车且加购成功但未登录)
		加入购物车购物失败(选择商品-加入购物车且加购成功且已登录-下订单失败)
		加入购物车购物失败(选择商品-加入购物车且加购成功且已登录-下订单-支付失败)
测试步骤按照小括号内为主编写,输出md格式文档,参考附件示例

在这里插入图片描述

商品上架流程测试用例

请添加图片描述
编写测试点:
在这里插入图片描述
转换测试用例:

你以软件测试工程师的身份,根据测试用例八要素模版,将以下商品上架流程测试点转换为测试用例:
商品上架流程
	自营商品
		自营商品上架成功(管理员登陆成功-添加商品成功-商品上架成功)
		自营商品上架失败(管理员登陆失败)
		自营商品上架失败(管理员登陆成功-添加商品失败)
		自营商品上架失败(管理员登陆成功-添加商品成功-商品上架失败)
	第三方商品
		第三方商品上架成功(供应商登录成功-添加商品成功-提交审核管理员审核成功-商品上架成功)
		第三方商品上架失败(供应商登录失败)
		第三方商品上架失败(供应商登录成功-添加商品失败)
		第三方商品上架失败(供应商登录成功-添加商品成功-提交审核管理员审核失败)
		第三方商品上架失败(供应商登录成功-添加商品成功-提交审核管理员审核成功-商品上架成失败)
测试步骤按照小括号内为主编写,输出md格式文档

在这里插入图片描述

:在商品列表中是否上架,是可以点击的,点了状态就会变,系统默认添加商品完就会上架
在这里插入图片描述

请添加图片描述

1.3.3单模块测试

UI原型图介绍

产品给两件东西让我们参照写测试用例:UI原型图+需求文档。
请添加图片描述

  • 开源原型图网站:打开axureshop.com,这里有一个智慧停车原型图演示,还有web原型图,例如奖项申报web端原型图演示
  • UI原型图介绍:开展一个新项目测试的时候,开发和测试基本上是同步干活,写测试用例的时候,肯定最好有一个界面,能参照它。给到一个UI原型图,实际工作中我们没有这个系统,开发还没有做出来,但是不能够等着开发把系统做完了,再写用例就太晚了,UI原型图是产品经理去设计的,通过一些工具,图是有动态效果的,也就是说能点能操作,最起码能知道这个里面有交互的过程。

很多公司APP项目最大的特点就是这样,他很少给你写一堆文字,他就直接上来就给你给图,最终结果就是图这样子啊,然后我们就去梳理规则,或者去问产品经理问规则,把数据等等填入,就可以使用了。

测试步骤

请添加图片描述
请添加图片描述

请添加图片描述

二、功能测试

2.1 APP登录功能

需求评审

在这里插入图片描述

  • 账户名:格式正确,注册成功的用户账号(手机号或者邮箱);
  • 密码:注册成功账号对应密码。
  • 点击登录按钮,登录成功后跳转至个人中心,页面显示用户名。
  • 登录失败显示对应提示。

这个需求感觉不太清晰,所以请ai来帮我们评审一下:

你以软件测试工程师的身份,帮我评审某电商APP登录的需求,具体需求如下,同时参考附件中的原型图:
账户名:格式正确,注册成功的用户账号(手机号或者邮箱);
密码:注册成功账号对应密码。
点击登录按钮,登录成功后跳转至个人中心,页面显示用户名。
登录失败显示对应提示。
输出评审之后的功能需求的md文档。

注:登录功能测试点不需要考虑账号和密码规则的测试点,因为规则在注册那里测试过了,只需要考虑格式对错
在这里插入图片描述

非功能测试点暂时不考虑,后续会做app专项和app性能测试

在这里插入图片描述

转测试用例:

将上述测试点转换成测试用例:

优先级的规范

对于优先级,以后请记住:将核心业务正向流程P0,逆向流程P1。单模块功能测试正向流程设置为P1,逆向为P2,其他和非核心功能为P3
说明:业务是功能的组合,是一个流程,比如购物流程,而功能是一个模块,比如登录、注册、下单…

核心业务流程正向(如购物完整流程) → P0

核心业务流程逆向(如购物失败场景) → P1

核心功能模块正向(如登录成功、注册成功) → P1

核心功能模块逆向(如登录失败、注册失败) → P2

非核心功能(如UI校验、辅助入口点击跳转) → P3

在这里插入图片描述

2.2购物车(ai)

临时存放有购买意向的商品的容器
在这里插入图片描述
一、购物车显示

  1. 未登录提示去登录
  2. 已登录没有商品,提示马上去购物
  3. 已登录且有商品:
  • 待确认信息包含:商品名称、商品图片、单价、数量、小计、总价、已节省信息
  • 点击商品图片或名称跳转至商品详情页
  • 点击[去结算]跳转至填写核对订单页

二、购物车添加商品

  1. 商品数量:
  • 库存>=200时,商品数量取值为[1,200]; 同一类商品不能添加超过200件
  • 库存<200时,商品数量取值为[1,库存量]。
  1. 商品种类:商品种类不能大于20种

三、购物车删除商品

  1. 删除单个商品:点击对应商品后的删除符号¥4.购四、物车编辑商品购买数量:
  2. 编辑方式:
  • 使用[+]和[-]调节商品数量”;
  • 直接修改编辑框中的数字,修改商品数量;
  1. 编辑要求:参考购物车添加商品要求。
    五、结算
  • 单件结算:勾选商品后点击立即购买。
  • 全选结算:全选后点击立即购买
请你以软件测试工程师的身份,使用等价类划分法和边界值分析法帮我设计某电商app购物车的测试点。需要覆盖如下需求:
一、购物车显示
1. 未登录提示去登录
2. 已登录没有商品,提示马上去购物
3. 已登录且有商品:
* 待确认信息包含:商品名称、商品图片、单价、数量、小计、总价、已节省信息
* 点击商品图片或名称跳转至商品详情页
* 点击[去结算]跳转至填写核对订单页

二、购物车添加商品
1. 商品数量:
* 库存>=200时,商品数量取值为[1,200]; 同一类商品不能添加超过200件
* 库存<200时,商品数量取值为[1,库存量]2. 商品种类:商品种类不能大于20种

三、购物车删除商品
1. 删除单个商品:点击对应商品后的删除符号¥4.购四、物车编辑商品购买数量:
1. 编辑方式:
* 使用[+][-]调节商品数量”;
* 直接修改编辑框中的数字,修改商品数量;
3. 编辑要求:参考购物车添加商品要求。
五、结算
* 单件结算:勾选商品后点击立即购买。
* 全选结算:全选后点击立即购买
以md格式输出
示例:
登录成功(账号为已注册手机号 + 正确密码 + 勾选协议)
登录失败(账号为空)
...

突然发现,我的ai太懂需求了,它输出的太好了,请看结果:老师的需要交互两次,而我的只需要交互一次即可。
在这里插入图片描述

2.3支付模块

在这里插入图片描述

  1. 支付方式说明
    银联支付:通过绑定网上银行卡进行在线支付
    余额支付:通过账号余额进行在线支付
    支付宝:通过支付宝APP在线支付
    微信:通过微信APP在线支付
  2. 支付显示操作
    提交订单后默认选中余额支付
    能够切换不同支付方式,不同支付方式不能同时选中
    支付成功时,付款金额显示正确,提示:订单提交成功,我们将在第一时间给你发货!
    选择银联支付确认提交后,能够打开网银页面并支持绑卡支付
    选择余额确认提交后,直接从余额扣款
    选择支付宝/微信提交后,能够跳转第三方APP进行支付
请你以软件测试工程师的身份,帮我设计某电商app支付模块的测试点。需要覆盖如下需求:
1. 支付方式说明
银联支付:通过绑定网上银行卡进行在线支付
余额支付:通过账号余额进行在线支付
支付宝:通过支付宝APP在线支付
微信:通过微信APP在线支付
2. 支付显示操作
提交订单后默认选中余额支付
能够切换不同支付方式,不同支付方式不能同时选中
支付成功时,付款金额显示正确,提示:订单提交成功,我们将在第一时间给你发货!
选择银联支付确认提交后,能够打开网银页面并支持绑卡支付
选择余额确认提交后,直接从余额扣款
选择支付宝/微信提交后,能够跳转第三方APP进行支付
以md格式输出
示例:
登录成功(账号为已注册手机号 + 正确密码 + 勾选协议)
登录失败(账号为空)
...

在这里插入图片描述
测试点如下:
在这里插入图片描述

2.4app专项测试

2.4.1 模拟器介绍

APP需要装在手机上或者移动端设备上,每个人手机和移动设备肯定是不一样的,所以整一个能统一使用的移动端设备----mumu模拟器可以一台移动设备。
在这里插入图片描述

首先需要安装安卓系统,可使用模拟器模拟安卓系统
接着安装JDK,java运行环境。因为安卓软件需要安卓安装包,安卓安装包正好是用java语言开发的,所以需要安装jdk
再安装安卓的sdk,软件开发工具包,也需要基于java语言运行
紧接着就可以使用这些工具控制我的手机了。

ios手机模拟器,只能在苹果官方开发工具带有的ios模拟器中使用,ios开发工具只能在mac电脑上才能运行。

环境变量介绍:软件的快捷方式可以帮助我们快速的打开软件,快速地定位软件位置,其实他就是下载软件的时候会带的·一个.exe文件的存放位置,双击就能马上找到他的位置,打开它。
在这里插入图片描述

但是一些代码开发工具是没有快捷方式的,所以找起来不容易,也不知道放在哪里了,此时环境变量就可以登场了,在电脑中安装的任意软件,都能够快速的找到运行启动它。
打开设置,查找高级系统设置
在这里插入图片描述
上面是用户环境变量,下面是系统变量,如果是设置当前电脑登录的用户变量,那么只有这个用户才起作用,如果系统环境变量,这个系统的所有用户都及作用,如果不管谁登录我的电脑都需要快速使用这个软件,就设置系统环境变量。
专属特有的一些项目测试,一般我们也是放在系统环境变量。
添加环境变量,我之前添加过,之后再cmd输入查看即可
在这里插入图片描述
sdk解压即可:
在这里插入图片描述

请添加图片描述
请添加图片描述

  • 持久稳定
  • 不同移动设备:安卓、ios…系统,不同的分辨率,版本的差异化、屏幕大小、硬件关联一些不一样的地方
  • 模拟设备:为了不需要使用手机,方便测试,提供模拟器,就模仿一台手机或者一个平板,可以保证大家在同一套系统上能够运行同样的应用程序呢,能验证它的功能非功能的一些测试。

实际上在公司中,手机是真机,并不是模拟器。当然手机更新迭代会很快,有很多时候,会采用云测评:专门给线上提供一些远程可以操控手机的一个平台,掏钱到人家平台去买时间,比如说我要用一下你们这个手机,大概用四个小时,那这个时候充四充四个小时的钱,不是你把手机拿到手跟前用,是你用鼠标去模仿人,在电脑上就能看到这个手机,就只能远程可以操控这个手机。

什么情况会用模拟器?
  1. 在一些特别少见的手机上会模拟器。比如说有些可能刚发布没一年两年,那种手机被公司倒闭了的那种手机
  2. 全面铺开我这个APP的应用,像这种微信,支付宝,抖音这种APP,他面对的用户是全球不是中国,是全球用户,各种各样的手机使用都有可能,主流的非主流都得测试到,可能有的人用的就是好几年前倒闭公司的手机。

我们为了能够统一执行测试,测试的是安卓系统,后缀为.apk,因为没有ios的.ipa包,它上架很麻烦,审核步骤多,要求多。测的功能和专项的方向和类型。跟安卓是一模一样的,只需要换个手机即可。

拓展:电脑端后缀文件名为.exe,苹果电脑是.dmg。

模拟器下载地址
请添加图片描述
在这里插入图片描述
这些专项测试,不需要记得非常准确,最起码每一个的一级标题要会,再能列举出几个案例是最好的。
在这里插入图片描述

2.4.2安装测试点(花时间去记)

正常场景下能否成功,异常场景下失败会有提示,要有验证场景,和验证点这两个模块
请添加图片描述
请添加图片描述

  • 扩展sd卡:如果手机内存不够,装一个小卡片sd卡
  • 低版本覆盖高版本:高版本不适应,觉得不好用,想退回到低版本。正常来说是不可以的,如果想要回到低版本,就卸载高版本,再重新装低版本。但是也测一下,万一可以呢
你以软件测试工程师身份,帮我设计app专项测试中关于安装的测试点,具体参考要求如下:
正常场景:
来源:从不同的安装渠道安装(APP商城、壬机助于、直接下载apk或者ipa文件安装)
去向:在不同的操作系统版本上安装
不同的安装路径(安装到手机上。安装到SD卡上)
卸载后安装
正在运行时覆盖安装
异常场景:
安装时出现异常(关机、断网),恢复后能否继续安装
安装时存储空间不足
安装时手动取消后再次安装
低版本覆盖安装高版本
输出测试点md格式的文档

在这里插入图片描述

多进程冲突:覆盖安装时,触发后台服务运行,验证安装过程是否强制终止进程

安装软件的时候,如果这个·APP正在运行,你重复给它安装。这个时候它会不会把这个运行的程序给它结束掉

2.4.2卸载、升级测试点(花时间去记)

请添加图片描述

  • 跨版本升级:1.0到5.0
  • 临近版本升级:1.0到2.0到3.0…
你以软件测试工程师身份,帮我设计app专项测试中关于卸载的测试点,具体参考要求如下:
卸载测试关注点:
正常卸载(APP手动卸载、工曰卸载)
运行时卸载
取消卸载
卸载异常中断
卸载后无数据残留
输出测试点md格式的文档

在这里插入图片描述

你以软件测试工程师身份,帮我设计app专项测试中关于升级的测试点,具体参考要求如下:
升级测试关注点:
从临近版本升级
跨版本升级
不同渠道升级(应用商场、手机助手)
升级提醒成功(可不提醒、可以提示刀级、强制刀级)
应用内升级时非WIFI提醒
注意事项
升级后要观察升级前的数据正常(当数据结构改变而开发没有处理好时很容易出现升级前的数据混乱)
输出测试点md格式的文档

在这里插入图片描述

2.5兼容性测试点

  • 应用兼容性:开机键,音量键…这些键能不能控制我的这个APP,这个APP与其他的APP是否会发生冲突,新开发的APP对兼容性是非常多的。
    请添加图片描述
将上述APP兼容性测试方向转化为测试点,输出md格式文档

在这里插入图片描述

  • 与其他app兼容性:看视频的时候,突然间有微信的电话进来。那这个时候我接微信的电话的时候,会不会我的视频的声音也会传导过来,这就叫兼容。

请添加图片描述
思考:在工作当中,怎么样保障那么多的机型,那么多的型号,我都能覆盖到呢
请添加图片描述

  1. 测主流机型
    通过第三方网站看销量,给了几个网址来参照,至少真机测试排名前三的。非主流的通过云测平台测试,购买不同机型使用时间,可以查看调试记录,查看测试报告。
    在这里插入图片描述
    在这里插入图片描述
    请添加图片描述
    请添加图片描述

2.6push消息

目的:营销,提高用户吸引力—变现
变现逻辑:刷抖音,关注博主,是给博主流浪,流量起来了,他就可以接广告,变现。流量好,平台也会打钱,点赞或者播放量超过几百万几千万,一条视频几百块或者上千块。
请添加图片描述
测试方向:

  1. 服务器发的消息要能收到
  2. 第二消息是对的
  3. 第三个消息内容,比如说能点开能跳转操作。

服务器的消息你得测能不能推到客户端上去,而且要和我们原来发送的一个消息要保持一致,618活动各大电商搞特大优惠。

再看一下内容。有些消息里面除了内容,可能还有链接,我们有一个抽奖活动啊,欢迎来参与,而现在这个消息推送的这链接很少了,会产生那种钓鱼行为,就是会产生手机的风险,很多手机呢,会把这个东西会拦截。所以现在很多通知,基本上都是文字,动态图什么之类的,它很少有这种链接了。就防止你点误操作,点开一些那种带有风险的链接地址,导致你的手机信息会泄露,或者你的手机上面的财产安全问题。

在这里插入图片描述

  • pull拉取消息:说白了就是我app主动找服务器要东西,对于我们的这个服务器的压力比较大,一个人找我要还行。1000个APP,一亿个APP同时找我要,那服务器是扛不住。消耗服务器资源特别大
  • push推送消息:服务器主动给你推,有消息主动给你推送,没有消息就等候,主动权在于服务器这边,降低服务器的这个资源利用率。
推送原理

在这里插入图片描述

不但要测试APP消息打开和现实,还要测试后台看不见得服务器:服务器有新消息,交给第三方\自己搭建的推送服务器服务器,替我们将消息传给APP,最终用户看到新消息。

tpshop要搞一个促销活动,先在度武器上创建好活动消息,然后让配送服务器推送到APP的用户端。

第三方服务器的类别:
  1. 操作系统默认自带的,操作系统级别的推送,app设置中心经常会提示系统更新信息,也就是手机官方的信息
  2. 自己搭建的
  3. 第三方服务器:这个比较常见,搭建服务器成本较高,会找第三方专门做这个的,比如极光推送等等,他们是专门做推送的,公司可以花钱专门负责公司的推送这一块。
消息推送的关注点

请添加图片描述
服务端:

  1. 消息内容对不对
  2. 时效性:什么时候推送的
  3. 推送人群:所有用户吗?还是一部分用户还是VIP用户。
  4. 推送频次:如果这个时候有人是关机的状态。网络中断的状态,我推送他肯定是收不到的,收不到我肯定会记录这个人的,没收到消息,我接下来呢,可能还要去给他再去尝试,涉及到推送的频次。
    客户端:
  5. 手机上能不能收到
  6. 第二收到会不会提醒
  7. 第三内容对不对
将app专项push消息测试关注点,转换为测试点:
push消息测试关注点:
APP服务器设置测试点:
Push消息是否按指定业务规则发送
当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符等
手机端设置测试点:
设置不接收推送消息时,用户是否会收到Push消息设置push消息显示的位置,是否与配置一致收到push消息,是否能正常打开跳转等其他测试:
APP在前台使用时,收到push消息如何提示APP在后台运行时,收到push消息如何提示APP离线,是否能收到PUSH消息。
md格式输出

在这里插入图片描述

在每一个里面挑几个来记一记:

  • 前台运行:将软件打开,正在运行的进程显示在当前页面,就是前台运行。
  • 后台运行:按下home键,就退出当前软件,但是进程还在继续,只是他在后台继续运行
  • 离线:将软件进程向上、下、左右划掉,这叫杀进程。

操作系统见过的进程:进程其实就是程序的一次执行过程。

请添加图片描述

tpshop的推送方式

站内通信,给tpshop的所有用户发送,平台并没有依靠推送服务器,技术实现,集成于后台服务器,自主开发推送功能。

在这里插入图片描述
在app端,我们是这样看通知的。从顶部往下滑在这里插入图片描述

在这里插入图片描述

2.7交叉事件测试点

当有外界干扰的时候,app能不能正常、持久、稳定的运行。

当优先级高的事件,比如低电预警,打断正常运行的APP之后,app还能不能持久稳定正常运行

在这里插入图片描述

将交叉事件关注点转换成测试点:
交叉事件测试关注点:
APP运行时接打电话;
APP运行时收发信息;
APP运行时查看应用推送APP运行接上蓝牙设备APP运行时接收文件弹窗提醒
APP运行时旋转屏幕
APP运行时切换网络(4G、Wi-Fi);
App运行时使用相机、计算器等手机自带应用;App运行时电量告警、插拔充电器。
输出md格式文档

在这里插入图片描述

2.8易用性测试点

请添加图片描述

  • UI界面酷炫、吸引力强
  • 用户操作起来容易,步骤不繁琐,简单易用
  • 支持横竖屏,尤其是音、视频类的
  • 支持自助自适应和其辅助功能,老年用户–>字体放大,语音转换

测试点
在这里插入图片描述
在这里插入图片描述

⭐2.9APP专项常见面试题

参见:xmind测试点,需要记忆一些核心场景及部分测试点

  • 分类:APP安装卸载升级、APP兼容性、APP干扰测试、APP消息推送、APP易用性

  • 常见问题

    ① APP兼容性测试具体测试哪些范围?

    品牌+手机型号、操作系统及版本、分辨率或尺寸、网络、手机硬件、应用兼容
    

    ② 实际测试中兼容性测试如果没法覆盖全部品牌机型怎么办?都是用真机么?

    不全用真机,公司选择主流设备作为真机,其他机型第三方的云测平台进行测试,有些实在小众的手机品牌可以采用模拟器。
    

    ③ 啥是push消息测试?能简单说说push消息怎么测试么?

    测试APP接收到各种通知消息的过程。
    1.明确消息推送流程:业务服务器--> 推送消息服务器-->APP-->用户
    2.业务服务器有对应消息内容,交给推送服务器,推送服务器上验证消息内容信息正确、推送人群、时间、频次
    3.APP端验证消息通知位置、内容正确、时间符合预期、离线之后再上线能否再收到推送的消息
    

    ④ 常见的交叉事件测试场景有哪些?交叉事件测试的目的是啥?

    接打电话、收发短信、调用相机、旋转屏幕、电量告警、切换网络等场景会干扰正常运行的APP
    验证复杂场景下,APP运行的稳定性
    

    ⑤ 某APP相邻版本(低版本到高版本)升级没有问题,跨版本升级有问题,请问是bug么?

    是bug。
    APP专项测试中,其中升级测试需要覆盖跨版本的场景(用户也会出现该场景)。
    

    2.10day4总结

    在这里插入图片描述

2.5APP性能测试

通过工具或命令测试APP软件对于移动端硬件占用程度,每一个指标都最起码运行半个小时,以小时为单位去测,课上就运行几分钟看看效果

2.5.1介绍

打开solopi,将权限都通过,这里注意一下,如果有小伙伴不能够通过,可以把机型设置为华为,这些权限就都可以在当前页面全部通过。选择我们需要测试的tp商城
在这里插入图片描述

2.5.1内存指标测试

内存异常现象:闪退(crash)、内存长时间增高没有降低的趋势

问题:内存泄露、内存溢出

前置知识:操作系统中讲的程序执行过程

程序运行,其实就是一条一条机器指令在cpu上运行。
在这里插入图片描述

首先,程序及其依赖文件会存储在外存(其实就是电脑中的C,D盘)中,但是由于磁盘交互数据速度很慢,cpu运载又很快,两者无法协同,这时操作系统就会将需要使用到的程序相关的代码和数据从缓慢的外存中搬运至速度快的内存,并为其在内存中创建进程,就是专属的运行空间,此后cpu便可以和内存进行告诉数据交换了,从内存中的进程中取出代码段中机器指令,上cpu执行,cpu处理后的数据返还给进程中的数据段,最后执行完想退出程序了,cup控制杀掉进程,释放占用的内存空间,并调用写文件操作,将数据写回到外存指定文件位置上。

cpu–算,内存–>运,外存–>存

如果内存中进程多了,就会变得很卡,因为进程是并发执行的,交替着共享紧张的共享资源,由于资源是有限的,而且每个进程分到的时间片时间会压缩,而切换进程的开销随之变大了,所以程序会走走停停,以不可预知的速度前进,触发了异步性就会卡顿。
在这里插入图片描述

请添加图片描述

  1. 私有内存:就是进程独占的内存空间,其他进程无法访问的,不包含其牵连的系统共享资源所占的内存。当该进程销毁或系统需要释放内存时,这部分内存可以被直接回收或丢弃,不需要考虑对其他进程的影响。
  2. 实际物理内存占用:对一个进程真实消耗内存的“公平评估”。
  • 共享内存的折算:很多基础组件(如系统UI库、字体渲染引擎)是被多个进程共享的。PSS机制会将这部分共享内存按比例分摊到各个使用它的进程中。
  • 计算公式:PSS = 私有内存 + (共享内存 / 共享该内存的进程数)。
  • 图示理解:看图中上方横跨所有程序的那个长条“共享内存”。如果3个程序共享了3MB内存,那么每个程序的PSS计算中,只会计入1MB。
  1. 为什么测试主要关注pss呢?
  • 如果只看私有内存,可能会漏掉那些大量使用系统共享库的“重内存”应用。例如,两个App都使用了同一个大型图形引擎,只看私有内存可能觉得都不大,但加起来(PSS视角)会发现系统内存其实已经被吃紧了。PSS能反映进程对系统总资源的真实压力。
  • 定位真正的“内存大户”:当手机整体内存紧张时,系统会根据PSS来决定“杀后台”的优先级。PSS越大的进程,占用的物理内存绝对值越大,越容易成为被系统清理的对象。测试关注PSS,是为了找出那些真正消耗物理资源的进程。
  • 评估真实运行环境:PSS代表了进程在真实手机环境下的“物理存在感”。如果一个App的PSS极高,说明它不仅自己占内存,还拖累了整个系统的共享资源,这种应用在实际用户的低内存手机上极大概率会出现闪退或严重卡顿。

总结
私有内存​ 反映的是进程内部独有的、可直接丢弃的数据。
PSS (实际使用内存)​ 反映的是进程对整个手机物理内存的真实侵占程度(含分摊的共享部分)。
测试关注PSS,是因为它是衡量应用是否会导致手机整体变卡、是否会引发OOM(内存溢出)的最核心、最准确的指标。

内存泄露和内存溢出

内存监控验证点:是否发生内存泄露,从而造成了内存溢出
memory leak 、out of memory
在这里插入图片描述
看内存占用的变趋势:
在这里插入图片描述
刷新–反复向后台数据库请求数据(图片、文字加载进来),反复刷新向下翻来,最后关掉app,看pss值变化
1、 看趋势图是否会持续递增,看app退出之后还会不会递增。
2、平均内存占比不能超过总内存的80%

目前tpshop用不了,我是用的是网易严选,打开solopi,点击性能测试,应用选择网易严选,勾选内存点击绿色三角,回到主页,点开网易严选,反复下翻主页模拟用户浏览页面,主页图是最多的,pss高,翻个大概几分钟*(实际工作更久),叉掉网易严选,点击结束,点开solopi性能测试,往下翻看到性能数据显示:退出应用后不会马上下降,是因为还要进行判断和jvm回收

  • 使用APP,通过solopi的内存指标监控值

获取图表数据,看平均值(MB/s)

如下图第二次测试后PSS平均值:367MB/s
结论:根据曲线图在367MB附近波动,没有持续的上升,退出程序时内存减少说明没有出现内存泄露问题,当前APP内存指标达标,测试通过。

第一次测试结果就有问题,因为数据持续上升趋势,关掉软件pss也没有下降趋势

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 主要关注pss的趋势图和平均值,升升降降这种趋势是正常的,只要不出现一直升这种情况,就不算是内存泄露。
  • 平均值除以总内存,322MB/1024/6 是百分之零点几,达不到80%及以上
    请添加图片描述

2.5.2CPU指标测试

  • 异常现象:

CPU占比超高:超过80%
设备发热、耗电量大
程序运行慢、卡,程序出现ANR(无响应)
在这里插入图片描述
指标:applicaton not respond 应用无响应
在这里插入图片描述
在这里插入图片描述

  • 直接通过solopi查看运行APP之后CPU占比平均值,不超过80%达标
    在这里插入图片描述
    当前应用程序cpu利用率:应用进程占用cpu的时间除以全局占用cpu的时间的百分比
    平均值:网易严选占用cpu,cpu的利用率是12%,并不高,不超过80%都算正常。
    在观察发热+耗电量+卡顿+无响应这些现象

2.5.3 流量

下行使用的比较多,一般我们就是会去服务器上下载或者是获取资料,刷抖音、打游戏等等操作都是下行比较多。

  • 原则:希望APP运行过程中占用流量越少越好

  • 指标达标依据:和同行APP或者和自己过去版本比较是否有改进
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
流量消耗越小越好,没有一个固定的指标,可以和竞品比较,比如访问淘宝首页,还可以和过去的版本比较,比如1.0版本。直播、短视频、游戏类的耗费流量不会太低的

【面试】当发现某个版本的流量特别大的时候,可以采用优化策略

【扩展】流量优化策略

面试:如何对APP流量测试指标给开发提出优化建议?

① 数据进行压缩(减少流量)

② 采用不同数据格式(减少流量)

③ 控制访问的频次

④ 运用缓存机制(主要文件缓存本地,减少实施获取)

⑤ 设置访问策略进行请求后台(WiFi网络、移动网络数据量变化)

可以采用的策略:

  • 首页图片从mb压缩为kb
  • jpeg高清图片格式换成png
  • 首页访问频次不高,所以一般是加载下滑两个屏的数据,也可以加载三个屏的数据,其余再下方的数据先不加载,用户下滑到了再加载
  • app第一次打开比较慢,后来再打开就快了,因为他把首页的照片和数据缓存到你的手机本地了,下次打开他直接从本地文件中找(开发做的,我们可以提建议)
  • 移动网络加载一部分,如果是wifi可劲加载

2.5.4电量

APP应用使用时对电池电量的平均消耗,和使用场景有关。
介绍:APP使用时,对电池电量的平均消耗程度

原则:APP使用耗电量越少越好

指标达标依据:和同行(竞品)APP或者和自己过去版本比(运营数据)是否有改进

  1. 常见耗电量大的场景:
  • 实时定位类:导航(耗电高+发热+cpu利用率高)
  • 网络传输:打游戏、刷剧、短视频,网络传输流量过大
  • 屏幕常亮
  • wake_locker(锁屏–解锁)

类似于电商和银行等等的app很少会有上述耗电量大的场景,一般也不需要测试
在这里插入图片描述

检查功耗,和过往版本比较,与竞品比较。
同样的硬件,同样的手机、同样的配置,装不同app分别运行半个小时,监控耗电量。

在这里插入图片描述

  • 测试截图(solopi)

电量测试:需要通过真机测试,模拟器不支持(模拟器没有电池)

看一段时间内电量耗费程度(功率mW/电流mA)

在这里插入图片描述

【面试】功率过高如何优化

面试:功耗过高如何优化?

APP定位仅使用时开启
网络传输需要时传输(而非后台实施传输)
屏幕亮度(根据需要自动调节)
尽量不频繁唤醒屏幕/频繁的锁屏解锁

2.5.5流畅度

短视频、游戏、直播、导航等等,有视频播放、动画播放、图片切换的app才需要做流畅度测试

介绍:运行画面是否流畅(无卡顿/失真等)【主要针对游戏类、视频类APP】

原则:APP运行越流畅越好,需要通过FPS(24帧以上)体现,数值越大越流畅(FPS:60帧最佳)
在这里插入图片描述
帧率:每秒钟的帧数,一般说的是手机、电脑的显卡gpu处理图像的能力,一秒钟内处理的图像数越多越流畅,不会一卡一卡的,也就是一帧意味着一张图片,如果出现丢帧,就会导致画面不连贯,一只脚刚抬起来,下一秒就两腿站站立了
在这里插入图片描述

现在还有一些手机支持高刷,比如120fps,gpu处理图片120张。
对于app来说24流畅效果,最佳60

  • 测试截图(solopi:选游戏帧率)

普通APP:静态页面较多,FPS数值低正常 > > 特定APP:动态页面较多(游戏类、视频类等)FPS数值最少24帧

勾选游戏帧率,直接就能看到结果不用计算,勾选帧率还需要计算,我的还算流畅,帧/秒 = fps
在这里插入图片描述
卡顿的原因需要综合评估,手机网络、硬件没有问题才确实是app的问题
在这里插入图片描述

2.5.6启动速度

APP响应快,用户的体验更好

一般测试的是冷启动,热启动不超过1s钟
启动耗时计算是靠人去测,不太标准,就相当于录制时间,从点击应用到应用完全打开的时间,但是人工去点击多少都会有挺多失误的。

后面我们采用其他方法去测试,会更加准确。
在这里插入图片描述
介绍:从启动app到主页面加载完成的速度

分类

冷启动:启动APP进程(进程未运行到运行)
热启动:APP从后台切换到前台(进程运行中,页面从后台转前台)
原则:启动速度越快越好

指标达标依据:和同行(竞品)APP或者和自己过去版本比(运营数据)是否有改进
在这里插入图片描述

2.5.7稳定性测试

核心概念:APP持久运行不出现异常问题【无:crash、ANR、卡顿、崩溃等】

  • 典型问题:
    无响应(显示"没有响应"提示)
    崩溃(直接退出应用)
    闪退(突然关闭)
    卡顿(操作延迟明显)

请添加图片描述

测试方式

命令行工具:Android系统APP通过Android自带的monkey工具测试
在这里插入图片描述
作用:模拟用户进行随机操作(触摸屏幕、滑动、 按键等)
命令格式:adb shell monkey -p 包名 -v 次数 > 日志文件.log

包名:任意APP唯一标记(类似于人的身份证号),一般按域名倒序命名【如:com.xxx.xxx】
次数:模拟用户操作APP的次数(事件),一般是百万次数据量
参数-v:表示日志详细程度。-v -v -v 最详细

稳定性测试步骤详解

1)Monkey命令
在这里插入图片描述
2)检查日志:日志内容本身不需要测试人员分析,只需要查,内容本身可以给安卓开发进行确认
在这里插入图片描述

关键错误类型:
无响应:搜索"ANR"、“timeout”
崩溃:搜索"NullPointerException"或"Exception"
闪退:搜索"memory out"、“memory Leak”
错误:搜索"error"、“Err”
请添加图片描述

注意事项:
测试前确保设备连接正常
日志文件建议保存在非系统盘
测试过程中不要人为中断操作

【面试】1. APP稳定性测试目的是啥?

检查APP长时间运行是否出现异常【ANR、crash、timeout】

【面试】2、如何排查是否出现稳定性的问题?

monkey运行后的日志中搜索关键词(ctrl+f)【ANR,timeout,Exception,out leak,error】,需要提交日志信息和Android开发确定是否是bug

【面试】3、一般一个APP稳定性测试多少次?

一般要求百万次以上(大约8小时左右),持续三轮以上。通过添加延迟参数 --throttle 延迟毫秒 总时间(ms) = 延迟时间(ms/次) * 总次数

解释:
通过命令进程去控制,操作的很快,如果不设置延时一秒就可以几百次了
在这里插入图片描述

【面试】4、如何确保monkey执行时,出现异常后,还能继续完成后续次数?

增加忽略闪退、忽略超时,让操作次数全部执行完毕 --ignore-crashes --ignore-timeouts

请添加图片描述
请添加图片描述

2.6adb基础命令⭐

介绍adb命令原因
1.命令使得测试更高效
2.应对面试
3.解决工具的能力边界
4.工具的操作本质还是调用命令
安卓开发依赖于sdk和工具,而sdk依赖于jdk,需要将二者进行环境变量配置,公司需要你具备配置环境变量的能力,可以照着文档去配置。

2.6.1adb工具介绍

ADB(Android Debug Bridge):Android调试桥,Android软件测试开发工作者常用的调试工具

应用场景:安装卸载软件、管理安卓系统软件、启动测试、抓取操作日志等【APP调试+稳定性】

请添加图片描述

使用adb命令完成电脑控制安卓手机,主要针对安卓操作系统,ios不行,solopi核心就是去调用adb命令
可以使用数据线连接安卓设备,使用adb进行控制,还可以使用wifi进行控制,手机电脑统一wifi使用网络ip地址控制。

ADB环境

下载解压软件包

配置环境变量

请添加图片描述

作用:让软件/程序在任意路径下都能够启动运行(配置环境变量) > > 构成:三部分 > > - adb 客户端 > - adb 服务端 > - adb daemon(系统自带守护程序) > > 注意: > > 1. daemon程序在Android手机/模拟器中自带 > 2. 还可以连接真机(Android手机–用数据线,手机需要开启开发者模式)

  • 守护进程:类似与管理水电的管理员,平时看不到,但是没有他不行,执行adb命令,默认是在安卓手机里面
  • 客户端:发送adb命令
    在这里插入图片描述
  • 服务端:传送adb命令传递到手机或者模拟器上,同样执行adb的结果也传送回服务端。

在这里插入图片描述

2.6.2常见adb命令

在这里插入图片描述

2.6.3连接设备及状态检查

# 检查接入的设备
adb devices
# 接入设备状态不正常(offline)
# 1.重启模拟器/手机
# 2.重启ADB服务
adb kill-server
adb start-server
# 连接设备
adb connect IP:端口

请添加图片描述

  • 观察状态,如果不是device,而是其他的,比如说offline说明离线了,可以重启,也可以启动adb服务(手机或者模拟器开着说明守护进程没问题,adb.exe正常启动说明客户端也没问题,中间传送出了问题):adb start-server,停用:adb kill-server

重启adb服务需要:先结束,再启动
在这里插入图片描述
如果出现模拟器开机进程开着,还是看不到设备,就需要手动连接、断开设备,带上设备端口号(mumu默认是7555,可以上官方网页上查找,也可以在模拟器上查找)
请添加图片描述
查找adb端口号
在这里插入图片描述

在这里插入图片描述

选择设备进行操作:adb -s xxx xxx
在这里插入图片描述

真机连接注意:

需开启开发者模式和USB调试,因为现在很多手机默认连接电脑只做一件事,就是充电
点开设置,点击7次版本号,即可进入开发者模式
在这里插入图片描述
打开系统,再打开开发者选项,开启usb调试选项
在这里插入图片描述

2.6.3安装或卸载app:

可以手动拖入.apk文件,也可以使用adb命令

场景:测试Android设备过多,建议使用adb命令安装更高效

【面试】:adb安装APP软件和卸载APP软件有啥区别
  1. adb安装APP软件和卸载APP软件有啥区别?
  • 关键不一样,安装install,卸载uninstall
    安装和卸载跟的内容不一样,卸载后跟包名

安装:adb install apk路径(可以将文件拖拽到路径位置,即可获取到路径)
卸载:adb uninstall 包名

卸载:adb uninstall 包名
请添加图片描述

请添加图片描述
包名:不是app名字,开发人员打包的时候,就命名成一个名字,一般是公司某个域名的倒序,它具有一个唯一性,就唯一的代表当前的一个APP,出厂的时候就定了,初始化的时候已经定好了。例如:com.baidu.www、com.tpshop.mails,类比于人出生的时候需要上户,身份证号是唯一的。

在这里插入图片描述
卸载+包名
在这里插入图片描述
安装+文件名,注意文件路径要对
在这里插入图片描述
找到文件路径,拖进去
在这里插入图片描述
在这里插入图片描述

2.6.4查看安装的APP软件包

查看第三方软件包:adb shell pm list packages -3
查看正在打开软件包(和页面名Activity):
场景:为后续启动测试查看包名和页面名做准备
windows:adb shell dumpsys window | findstr mCurrentFocus
mac/Linux:adb shell dumpsys window | grep mCurrentFocus

请添加图片描述
使用adb获取包名:
请添加图片描述

adb shell 就像是你电脑和 Android 设备之间的一条“命令通道”,你的电脑(主机)和 Android 设备(手机/平板)是两个独立的系统,各自运行着不同的操作系统和文件。adb 本身只是一个“通信桥梁”,负责把指令从电脑传到设备上。而 adb shell 这个命令,就是用来告诉这个桥梁:“接下来我要发的命令,是给设备内部的 Linux 系统去执行的。”

在这里插入图片描述

在这里插入图片描述
adb shell dumpsys window | findstr mCurrentFocus查看当前打开窗口中关注的窗口报名和界面名

  • | 是管道符,连接多个linux命令,将前面命令输出的作为输入传入后面命令执行。
  • findstr:相当于linux里面的grep具有搜索过滤的功能。

在这里插入图片描述
我们主要关注是域名那里,斜杠前面是包名,后面是界面名。
请添加图片描述

  • 打开、启动应用程序:adb shell代表进入linux模式下,am:activity manager界面管理器,start 启动(需要知道包名+界面名)

  • 界面名的作用:打开app界面肯定会变,欢迎页、主页…不同界面。一般是选择启动的第一个界面,启动页界面名。

  • 用处:功能测试的自动化测试+性能测试启动

  • 发现并没有启动而是抛出异常了,我是用的是那个欢迎页面,说明欢迎页面并不是启动页。
    在这里插入图片描述

  • 查找启动页界面名,刚点进去的第一个界面就是启动页
    在这里插入图片描述
    在这里插入图片描述

  • 尝试使用包名+启动页界面名打开tpshop
    请添加图片描述

  • 使用包名关闭tpshop:
    在这里插入图片描述

2.6.5启动测试

场景:模拟人启动/停用APP
注意: 往后看详细介绍

  1. 启动:需要知道包名和页面名(注意是APP的启动页,不是进入的首页)
    adb shell am start -W -S -R 次数 包名/页面名

-W:显示启动时间,主要看:TotalTime
-S:启动前先关闭程序进程
-R:后面跟重复测试的次数
2. 停用:只需要知道包名即可adb shell am force-stop 包名

  1. 两种启动形式:冷启动、热启动
  • 冷启动:程序没有运行,加载启动程序到最后显示的过程
  • 热启动:程序已经运行在后台,切换至该程序界面的过程
  1. 冷启动:adb shell am start -W com.tpshop.malls/com.tpshop.malls.SplashActivity

在这里插入图片描述

  • activity:包名/.界面名,这里使用了简写,完整写法是包名/包名.界面名
  • totaltime:默认APP本身加载启动的时间,APP启动加操作系统调用整个的总的时间,会比waittime长
  • waittime:冷:加载启动到最后显示的时间。热:后台切换至前台时间
  • 需要多测几次选取平均值
    在这里插入图片描述
    多次测试取平均值,有时候次数太多了,需要自动测试,可以带这些参数

adb shell am start -W -S -R 次数 包名/页面名

-W:显示启动时间,主要看:TotalTime
-S:启动前先关闭程序进程
-R:后面跟重复测试的次数
在这里插入图片描述

如果参数不了解,还可以对命令使用-h操作来查看帮助
在这里插入图片描述

  1. 热启动:不要杀掉进程,直接返回主界面,再执行命令
    在这里插入图片描述

2.6.6查看APP端日志

命令格式:adb logcat > 日志文件名.log
注意:强制结束用 ctrl+c

面试场景:
  1. 针对APP类型项目,测试过程中出现了不可复现的bug时,最好提前通过adb logcat打开日志并记录 >
  2. 最好将日志重定向到指定的文件中,通过搜索关键词查询时间段/日志内容,提交开发进行进一步确认是否是bug
  3. 日志内容包含:操作系统的日志和APP应用的日志

2.6.7获取此时此刻、实时的cpu、内存数据

相当于打开任务管理器,这一时刻的内存、cpu数据
在这里插入图片描述
1、adb shell dumpsys meminfo com.netease.yanxuan主要关注实际使用内存pss。
在这里插入图片描述
在这里插入图片描述
2、adb shell top:和打开任务管理器是一样的,可以看到各种指标

在这里插入图片描述
3、查找pid:
adb shell ps—系统中所有进程pid
adb shell ps | findstr 包名 --找指定进程的pid
在这里插入图片描述
在这里插入图片描述

3、如果不做过滤,结果就是这样的,系统中所有的程序信息adb shell dumpsys cpuinfo
在这里插入图片描述
过滤:使用刚刚查找到的pid号
在这里插入图片描述

2.6.8文件的上传与下载

打击平时进行上传下载都是使用什么,一般是不是使用微信助手,但是在没有网络的情况下,或者使用公司内网,用不了微信的时候,可以使用adb命令进行秒传。。

手机路径:会把文件存储在sdcard里面。
两种查路径的方法:

  1. 使用linux命令:注意使用反斜杠来表示路径
    pwd查看当前所处位置
    ls:展示文件列表
    cd 进入文件夹
    在这里插入图片描述

  2. 在手机中查找:两张图对比,克制手机的文件确实存放在sdcard里面
    在这里插入图片描述

上传:电脑文件上传手机 adb push 电脑路径 手机路径

下载:手机文件下载电脑 adb pull 手机路径 电脑路径
在这里插入图片描述

在这里插入图片描述

2.6.9日志查看

功能:查看手机端所有日志,包括操作系统和应用日志
保存日志:使用>重定向到文件,如adb logcat > d:\bbb.log。是将日志保存在电脑上
如果输入的是adb locat ,那么会将操作系统打开那一刻一直记录日志,需要按住ctrl+c停止,去相应文件木查找日志文件
在这里插入图片描述
在这里插入图片描述
日志分析方法
按时间筛选:精确到毫秒级,格式如06-27 17:30:00.000
按关键词筛选:常见关键词包括error、exception、timeout、ANR
按日志级别筛选:I(info)、W(warning)、E(error)、D(debug)
实用技巧
时间范围定位:开发定位bug时需要提供具体时间段
关键词搜索:Ctrl+F快速定位关键信息
日志量控制:适当限制收集时间避免文件过大

2.6.10总结命令:

请添加图片描述

  • 直接交互命令:
    特征:以adb开头
    作用:电脑与设备直接通信
    数量:约7个核心命令
  • 系统内部命令:
    特征:以adb shell开头
    作用:操作Android系统内部
    包含:性能监控、应用管理等
  • 测试领域应用:
    性能测试:监控CPU/内存
    专项测试:安装卸载验证
    自动化测试:基础操作支持
    日志分析:问题定位依据

三、大总结

在这里插入图片描述

四、抓包知识的回顾

一、抓包工具

是啥,能干什么,怎么做,所有的内容都围绕着这些展开

1.抓包是啥?

  • 说明:在客户端和服务端之间设置代理,抓取客户端和服务端之间传输的数据信息

2.为啥抓包?【场景】

  • 定位前后端bug
  • 模拟弱网测试
  • 绕过界面做后端接口测试【页面级别的异常数据】

3.怎么抓包?

Web为例:

  • 浏览器设置网络代理:安装了抓包工具的电脑的IP
  • 打开抓包工具开启抓包,操作浏览器,最后获取抓取的数据包
3.1 怎么抓取https的数据包?

HTTPS:安全超文本传输协议

  • 在浏览器上开启HTTPS代理
  • 在抓包工具上安装Charles的根证书:参考抓包工具pdf文档
  • 抓包工具上开启ssl代理即可
  • 设置任意IP和端口都可以抓包HTTPS数据包
3.2抓取app数据包

1、手机移动端网络关掉,如果不关,数据走不到电脑而是走到互联网上了
2、手机热点设置代理(默认是连接路由器的,路由器访问到互联网上了),所以把代理连接到电脑上

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里是你的网络ip:我是校园网
在这里插入图片描述
charles默认端口是8888
在这里插入图片描述
在这里插入图片描述
如果出现无法访问的现象:可以添加访问控制0.0.0.0/0,也可以添加自己的ip地址

手机代理指向电脑,电脑最终要访问外网服务器,也就是在电脑上使用这个地址访问外网,这个路就通了
在这里插入图片描述

3.2移动端手机安装charles证书–>手机端能抓取https包并且能看到非加密内容(真机同样适用)

如果能抓取到https的包了,但是内容是乱码,这个就涉及到抓手机端https的包,也需要在手机端装证书,为了看到手机端非加密的内容。

  1. 将文件保存在电脑任意路径下,我保存在桌面了
    在这里插入图片描述
    记下来操作参考抓包工具手册,在绑定资源中
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐