APP测试,APP常见测试策略和方法,ADB基础命令

手机移动应用测试基础知识
1.主流的手机(移动端)操作系统
  安卓和ios
  安卓系统的最新版本是12
  ios系统的最新版本是15
  
2.app测试指的手机移动应用测试

3.app测试流程

  一般情况下,
  当接收app的测试版本之后,会先核对效果图(原型设计)
  然后开展功能性的验证,接着会进行专项的测试(兼容性,升级,流量,弱网等)
  测试通过之后,不会发布到正式环境(生产环境)
  在运营的过程中会收集用户的使用习惯和数据,获取用户的新需求
  
  注:app由于需求变更相对较快
     更适用于迭代开始模式或者敏捷开发模式
     
4.app的开发语言

  原生的开发语言
  安卓   --  java
  ios    --  swift

  使用h5开发

  现在的app大多是混合模式   即 原生+h5
  
5.安卓系统的分层

  1.系统内核层
    linux系统内核: 提供操作系统的内核以及硬件的驱动程序
  2.系统运行库层
    提供安卓系统程序运行时,需要调用的程序和接口
    在这一层还提供安卓程序运行的虚拟机
    安卓系统提供沙盒机制
       当app启动时,会启动一个安卓虚拟机
       每个app都是单独运行,互不干扰
       当app关闭的时候,该虚拟机也被销毁
   3.应用程序框架层
     例如提供位置信息,通知消息,通讯录 ,安装包等管理
   4.应用程序层
App的常见测试策略和方法

app的常见测试策略和方法

app测试除了对软件的功能实现要关注以外
还需要根据需求中要求和对app的理解(隐形需求)
可能还需要进行一些app的专项测试

1.安装和卸载测试
  1.关注在不同的操作系统正确安装
  2.软件的文件正确的写入指定的文件夹
  3.软件安装过程中发生意外情况能够正确处理
  4.安装空间不足时是否有正确提示
  
  1.卸载是否有提示
  2.卸载后文件是否被删除
  3.卸载过程中发生以外是否能正确处理
  
2.UI测试,注意UI测试应该首先满足用户的要求和原型设计
  可以关注以下的情况
  1.导航测试
    检查各个功能模块页面之间导航是否直观,易于理解
    导航的风格是否与页面,菜单风格一致
  2.图形测试
    图形测试是相对比较主观的
    页面内容能够自适应屏幕,页面内容不会显示异常
    屏幕出现旋转,图形显示是否正确
  3.内容测试
    文字内容是否与系统功能一致
    是否有错别字,中文显示是否正确
    
3.功能测试
  除了按照app的需求文档要求的实现功能进行验证外
  还需要关注以下情况
  1.运行
    提供加载进度提示信息
    打开app的速度是否可接受
    app的功能页面切换是否流畅
  2.app的前后台切换
    1.app切换到后台之后,再切换回来,功能是否正常
      页面是否保留在切换出去的页面
    2.app在使用过程中锁屏,然后解锁后显示是否正确,功能是否正确
    3.app使用过程中发生中断操作,再切换回来是否正常
    4.app在使用过程中被杀掉进程,能否正确启动并正常使用
  3.免登陆
    1.无网络的情况下是否可以免登陆
      可以考虑弱网络的情况免登陆是否正常
    2.切换用户登陆之后,该app应该以新用户实现免登陆
    3.现在很多app的登陆规则为只能在一台设备登陆
      如果在另外一台设备登陆,免登陆会失效
      注:有些是通过授权方式登陆,是可以免登陆
    4.用户密码修改之后,免登陆也会失效
    5.用户主动退出软件,免登陆也会失效 
    注:现在有些软件可以免登陆,但是进入某些功能后又需要登陆
       免登陆规则根据实际情况进行测试
  4.数据更新
    1.需要确定自动更新和手动更新的规则
    2.从后台切换到前台的数据更新规则
    3.关注数据缓存的规则
  5.离线浏览
    1.在无网络的情况下可以浏览本地数据
    2.退出app再开启,从后台切换回前台,锁屏后解锁都可以正确浏览
  6.升级更新的测试
    1.需要有更新提示
    2.非强制更新,用户可以取消,继续使用老版本
    3.强制更新,用户可以取消,但是不能使用
    4.是否正确更新到新版本,并且对应功能和文件都正确更新到新的版本
  7.定位和照相服务
    1.能够正确的调用对应的服务,能够在不同的系统版本上
    2.如果对应的服务没有开启,会给予合理的提示,可以跳转到开启服务的设置上去
  8.push消息测试
    1.推送消息是否按照业务规则发送
    2.不接收推送消息,用户不会收到
    3.设置了免打扰,用户也不会收到
    
4.性能测试
  这里的性能测试主要指app在手机上运行的性能
  1.响应测试   各个功能的操作响应时间是否符合用户需要
  2.压力测试  长时间操作情况下,系统响应是否正常
  3.性能评估  在典型的用户使用场景下, 系统资源的使用情况
  4.基线测试  在新开发的软件中,会记录启动时间,响应时间,资源使用情况
              与新版本进行对比
ADB基础命令

adb调试命令

1.adb的结构
  adb分为三部分
  1.在pc端运行的adb客户端
  2.在pc端运行的adb服务端,与移动设备通信的(通过对应的网络端口来查找移动设备,包括模拟器)
  3.adb deamon 运行在移动设备上
  
2.查看已连接的设备
  adb devices
  如果连接真机,需要打开手机调试功能
  
  执行该命令可以查看已连接的设备名字
  如果只有一个设备,执行其他的adb命令可以直接执行
  但是如果有多个设备,就需要执行设备的名字才可以去执行
  
示例
adb devices
List of devices attached
192.168.118.107:5555    device
192.168.118.108:5555    device  

注:该显示是genymotion工具的内容
这个工具为每一个设备会启动一个vbox的虚拟机,所以设备ip地址不同,端口相同
如果是启动sdk manager 那么会通过不同的端口来显示设备

  如果要指定设备进行其他操作,需要使用  -s  设备名称
  
示例
adb -s 192.168.118.108:5555 shell
  
3.adb shell
进入Android系统的命令行模式
由于Android系统是基于linux系统开发的,在该模式下可以使用Android和linux的命令

adb shell   -- 只有一个设备的时候可以使用这个命令

4.adb install
将app安装到设备上

adb install 当前主机的文件路径\包名

示例
adb -s 192.168.118.108:5555 install d:\lianxi\qq.apk
注:如果有多个设备也需要指定操作的设备

如果某个app已经安装了
可以使用-r 覆盖安装

示例
adb -s 192.168.118.108:5555 install -r d:\lianxi\qq.apk

5.pm list package
可以通过adb shell list package 查询已经安装的app

会展示如下的类似内容
package:com.android.musicfx
package:com.android.development_settings
package:com.android.onetimeinitializer
package:com.android.server.telecom
package:com.android.keychain
package:com.android.dialer
package:com.android.gallery3d
package:com.baidu.tieba

可以通过例如 com.baidu.tieba 执行对app的卸载动作

可以使用 -s 参数 查看系统自带的app
使用-3 参数,查看第三方安装的app  包括用户自行安装的
使用-i 查看app的安装者

注:在adb命令中,如果要使用多个参数,多个参数要分开写,不能合并
adb -s 192.168.118.108:5555 shell pm list package -s -i

6.adb uninstall
可以通过这个命令去卸载已经安装到手机的上的app
可以在/data/app文件夹下查看已经安装的程序名
也可以通过 adb shell pm list package 查看已经安装的程序名

示例
adb -s 192.168.118.108:5555 uninstall com.baidu.tieba

如果要保留软件的配置和缓存信息,可以加上-k 参数
adb -s 192.168.118.108:5555 uninstall -k com.baidu.tieba

7.adb pull 和 adb push

adb pull 是将设备上的文件获取到本地
格式
adb pull  路径\文件名   本地路径\文件名 
注:本地路径的文件为空,那样拷贝过来的文件就使用源文件名
如果设置由文件名,那么就会改为设置的文件名

示例
可以直接将设备上的文件夹及其下面的所有文件全部获取
adb pull /data/app/com.baidu.tieba-Rb0ZOtueehTYIrh0g_y1bQ==   d:\lianxi

获取设备上面的某一个文件
adb pull /sdcard/dcim/Camera/IMG_20211104_085015.jpg  d:\lianxi\123.jpeg


adb push  是将本地的文件推送到设备上
格式
adb push  本地路径\文件名    路径\文件名

示例
将整个文件夹及下面所有的文件推送到设备上
adb push d:\lianxi\test123  /sdcard

将单个文件推送到设备上
adb push d:\lianxi\test123\1.txt  /sdcard/test/


8.adb logcat
将Android系统运行的日志打印出来
因为日志非常多,需要加上对应的参数

1. -v time  打印日志的时间数据
2 *:E  只打印错误级别的日志

可以使用以下命令来打印日志   -v time  *:E

adb logcat -v time *:E

注:还可以结合 findstr 来过滤对应的一些信息
adb logcat -v time *:E | findstr com.baidu.tieba

9.查看系统和设备的信息

adb shell dumpsys 
注:这个命令输出的内容较多

可以根据运行的服务在文件中进行搜索
示例  -- 这里只是部分
Currently running services:
  DockObserver
  Genyd
  SurfaceFlinger
  SystemPatcher
  accessibility
  account
  activity
  alarm
  
adb shell dumpstate
该命令会获取Android系统当前状态的相关信息,主要有以下
       系统构建的版本
       网络的相关信息
       系统内核的相关信息
       正常运行时间信息
       内存使用情况信息
       CPU使用情况信息
       进程的相关信息
       正在运行的应用列表相关信息
       正在运行的服务列表相关信息


adb shell cat /proc/cpuinfo  -- 查看处理器信息

10.adb服务端的打开和关闭

  可以手动的关闭adb server
  adb kill-sever
  
  可以手动的打开adb server 
  adb start-server
  
  

11、monkey的命令
monkey是对应用程序发起一些伪随机的事件流,检测应用程序在这种操作情况下是否能够稳定运行,不会出现崩溃或者无响应等错误情况(crash,anr)

monkey命令可以在adb的客户端
通过adb shell monkey来执行
也可以通过在安卓的命令行下使用
monkey命令来执行

monkey的重要参数
-p指定要运行并测试的应用程序

可以通过-v输出日志
日志分三个等级 -v 第一个等级  -v -v 第二个等级  -v -v -v 第三个等级
日志从第一个等级开始会输出越来越详细
一般设置一个 -v 即可

示例:
这里的示例没有
    -p 指定包名  -v输出日志  5000是操作的次数
可以通过输出到文件的方式,将日志输出到某个文件中
示例:
这里的示例没有

注意:如果不指定-p 那么会对整个系统进行操作,会随机的打开应用程序
      如果要对多个app进行操作 可以使用多个-p 对多个app进行操作

示例:

--ignore-crashes 忽略掉发生崩溃的错误,让monkey继续执行
--ignore-timeouts 忽略掉发生anr错误,让monkey继续执行

monkey事件执行的比例
参考脚本

--pct-motion40 代表该类事件在monkey发起的操作中占比为40%
--pct-touch 触摸的事件
--pct-motion手势的事件
--pct-appswitch 活动窗口切换
--pct-rotation 屏幕旋转
--throttle 事件操作的间隔时间,为毫秒
注:上述事件的比例根据app和用户的操作习惯来设置,总比例不超过100
    如果事件比例没有超过100,其他的monkey会根据情况去随机分配
    间隔时间是根据用户的习惯来设置,一般 400 ms  500ms

-s 参数
种子值,seed值
如果不指定s值,在执行monkey的时候,会自动生成一个
也可以指定一个s值

此次执行monkey操作的所有事件,包括执行的顺序都会跟随s值进行记录
如果下次需要按照同样的顺序去执行,可以指定s值
 

兼容性测试
        兼容性测试问题是比较容易遇到的问题,特别是App用户量越来越大后,而且终端设备型号也越来越多,也加剧了这方面的碎片化,使得兼容性成为不得不考虑的问题。对此,称此为兼容性测试。兼容性测试的特点是不同的软硬件的环境上运行APP。
    1.兼容性测试的准备
        和所有的测试类型一样,不可能在有限的测试人力和时间情况下覆盖所有的场景,对于兼容性测试而言,这里的问题是:如何确定测试范围
          这个问题显然是没有标准答案的,因为这取决于产品本身所处的测试阶段以及对质量的要求。不过这里有一个思路:
          可以尽量覆盖该产品的主要用户。
        假设现在对所测试的这款APP而言,需要覆盖市面上大多数用户。在这里,可以通过选取市面比较流行的机型的来确定测试范围。

当获取到app对应的数据时,就可以开始选取覆盖的范围
常见的兼容性测试主要考虑以下几个方面
1.操作系统的版本
IOS ,现在最新的版本是10。从友盟的数据可以了解到,还有部分用户使用7的版本
所以,需要考虑7,8,9,10这4个版本
Android,现在最新的版本是7.从友盟的数据可以了解到,还有部分用户使用4的版本
所以,需要考虑到4,5,6,7这4个版本
比较特殊的是,包括IOS和Android,在这些大版本下还有很多小版本
例如Android· 5.0、5.1、5.1.1 
如果逐个覆盖,工作量大太,成本太高。故除非有明确的直接影响APP的特性变动,否则不会逐个考虑每个小版本
这里需要注意的是,Android的4.4以前的版本,例如4.1 4.2的运行机制不同,需要特别关注

2.屏幕分辨率
随着显示技术的不断提升,手机屏幕的分辨率也在逐步提升(手机屏幕大小其实对app的显示影响不大,问题主要是在小屏幕下的情况下高分辨率容易导致用户无法正常完成操作 )
根据友盟收集到的数据,android主要集中在 1920*1080(1080P),1280*720(720P),2560*1440(2K), 800*480, 640*480
IOS则相对简单,主要考虑最近几代机型对应的分辨率
分辨率容易引发的问题主要是如果代码没有针对不同分辨率做适配,就会出现错误,遮挡,留白,拉伸,模糊等问题。

3.不同厂家的ROM
在国内,大部分手机厂商都对Android系统进行了一定的定制。
在实际工作种,部分厂商定制较深的情况下,会出现一些设备的调用和底层服务调用的不兼容。这种情况只能通过采购主流厂家的手机型号来解决
4.针对手机M版网站(有些又叫M站)
   什么是M版网站:部分网站和APP的服务商提供了通过手机浏览器访问页面来完成业务的方式
此情况和web网站的兼容性测试类似
    1.需要考虑到不同的浏览器类型。分为两个方面,一个是国内常用的第三方浏览器。二个是主流厂商自带的浏览器
2.需要考虑到屏幕分辨率
测试执行步骤和记录
1.根据app用户的特性挑选出要覆盖的范围,提出采购申请,购买相关的设备
2.在功能测试种抽出一部分内容做兼容性测试
   原则上是主功能流程和UI展示
3.通过管理工具将兼容性测试的情况记录下来
4.创建兼容性测试缺陷跟踪表,全程对各种情况进行跟踪

注:一般app项目开发时间都不长,但不排除app项目在开发期间主流的手机厂商更新系统或者发布重要的补丁。故针对此类情况,要及时做好跟踪。

流量测试
1.流量测试的检查点

  1.如果进行的操作需要消耗的流量较高,需要给用户提示
  2.检查app在使用流量的情况下,相关的设置是否会自动调整
  
  3.app第一次启动,流量消耗的情况
  4.app关闭后,再次启动,流量消耗的情况
  5.用户的常见使用场景下,流量消耗情况
  6.用户的非常规的使用场景下,流量消耗的情况 
  7.如果app在后台运行的情况,会出现流量的消耗,记录app一段时间内在后台的流量消耗
  
2.安卓系统通过自带的工具

  1.可以使用安卓系统自带的流量监测工具
  
  2.通过安卓系统自带的流量记录文件来获取
    proc/uid_stat/UID/tcp_snd
    proc/uid_stat/UID/tcp_rcv
    
    每个app的UID都不同。先通过ps查询到app的pid,通过pid在proc/pid下访问status的文件
    在文件内容中找到 UID对应的值 ,再访问/proc/uid_stat文件夹
    再访问UID值对应的文件夹
    再去访问  tcp_snd  发送的流量   tcp_rcv  
    这两个文件是历史流量的记录
    可以通过本次开始之前流量数量和操作之后的流量数据,进行比较
    获取本次的流量情况
    
3.使用抓包的工具来读取流量

  1.使用tcpdump来抓取流量(这个工具只适用于安卓系统)
  
  2.使用fiddler来抓取流量
    1.设置fiddler抓取远程主机的数据
    2.使用浏览器访问fiddler的站点  地址一般为  ip地址:8888
    3.安装fiddler的安全证书,可以抓取https消息
    4.运行app,通过fiddler抓取的数据来计算流量情况
    注:这种方式也可以用于ios系统
    
电量测试

现在可以使用手机自带的电池和电量监测工具

1.检查app在用户的常见使用场景下,一定时间内的电池消耗
2.如果app可以后台运行,需要将在前台或后台运行的情况分开测试
3.检查app在一些,非常规情况下的电量情况(例如 用户将设置调到比较高的程度)

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常用的ADB命令用于APP测试: 1. 查看帮助手册: `adb --help` 2. 检测连接到电脑中的安卓设备: `adb devices` 3. 通过WiFi进行远程连接手机: `adb connect <IP地址>:端口号/adb disconnect <IP地址>:端口号` (手机与电脑需要连接到同一个路由器) 4. 进入安卓手机后台(是一个Linux系统): `adb shell` 5. 从手机中拉取信息放到本地电脑: `adb pull <手机文件路径> <本机路径>` 6. 从本地推送信息到手机: `adb push <本机文件路径> <手机路径>` 7. 安装应用: `adb install <apk路径名/xxx.apk>` (获取apk的安装包所在地址,可以直接将apk拖到CMD窗口获取,返回success说明安装成功) 8. 查看前台应用包名: `adb shell dumpsys activity | find "mFocusedActivity"` 9. 卸载应用: `adb uninstall <应用包名>` 10. 打印日志信息: 例如,以时间为显示格式并将日志输出到D盘保存为crash.txt文件: `adb logcat -v time > d:\crash.txt` 这些命令可以帮助测试人员在APP测试过程中进行设备连接、文件传输、应用安装和卸载、查看日志等操作。 参考资料: - 大田. "做APP测试中常用的命令" - "android开机自启动APP及使用adb命令测试方法" <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [APP 测试中十大常用 adb 命令](https://blog.csdn.net/weixin_38177508/article/details/124997646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [android开机自启动APP及使用adb命令测试方法](https://download.csdn.net/download/weixin_38722891/12756839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [APP测试时常用adb命令](https://blog.csdn.net/weixin_30433075/article/details/94844742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值