移动测试(二)

news2024/11/28 4:50:22

功能测试点

用户使用习惯

权限问题

硬件问题

比如双卡双待、摄像头、GPU等。

操作习惯

用户常用的有菜单键、Home键、返回键、Home键长按(显示当前进程列表)、调整音量、待机等。相应的作为测试工程师我们需要考虑的项就变成了:

• 应用中的Back键的事件是否重写了?在各个功能界面中点击Back键会有什么反馈?

• 用户在应用各个界面点击Home键之后,再次打开应用的反馈:应用是默认处于后台的状态还是有结束生命周期。

• 应用是否使用到菜单键,切不可遗漏这个按键和应用的交互。

• 应用在任何状态下,系统进入待机或者关机。当系统被重新唤醒后,应用处于什么状态,是否有正确的反馈。

• 应用进程被用户手动关闭之后,是否可以再次正确启动。

数据移动

       用户会在软件没有响应或者出现重大缺陷时,点击强制停止按钮。或者在手机变卡后选择清空数据来是否自己机器的空间。

安装&卸载测试

用户安装方式主要有:

• 使用adb install <package name>进行安装;

• 使用第三方软件(比如豌豆荚、91助手等)安装;

• 将应用先下载到SD卡中再进行安装;

• 一部分数据量大的Android应用(一般是游戏)会采用小体积的应用安装,之后通过在线下载数据的方式使用。

应用安装之后,还要重点查看以下几点:

• 不联网的情况下是否能正常运行,会不会崩溃?

• 在线下载数据不完整,能否再次启动?

• 是否支持断点续传?

• 下载完整之后,再次启动。

• 安装成功后,检查版本号以及相关数据。

升级测试

升级应用必要条件:旧版本应用和新版本应用拥有相同的签名、包名,有一个标示符(比如版本号)来区分。

4.6.1 增量升级

增量升级也叫做差分升级(Smart APP update)。

优点:用户不必再下载一个完整的Apk进行安装。

缺点:不需对发布的所有旧版本和最新版本做差分,很麻烦;如果一部分系统没有拿到内置应用的权限,那么就没有办法进行增量升级。

4.6.2 内置应用升级

注意每次升级之后的应用是否与内置在系统中的.os文件匹配,如不匹配则会直接导致应用崩溃。

升级测试场景还有很多,以后再做补充。应用升级并非仅仅检查新功能或做冒烟测试,更多的是去了解升级的原理,升级到底更改了哪些文件,而这些文件又影响力哪些功能和数据库,找到这些问题的答案才能有针对性的进行全面的测试。

发布:

android:开发打包(.apk)的文件,上传到应用商店(主流的应用商店),发布

IOS:

1、把自己手机的唯一序列号告诉开发

2、在自己的手机上安装testflight

3、开发把被测试的APP发布后,然后测试就可以在testflight中下载开发发布的被测试的app

稳定性测试

在保证基本功能正确基础之上,App的稳定性就显得非常重要,如果一个App经常出现闪退或者卡死,那么用户体验就会受到很大伤害,在有其他竞争产品的情况下很容易造成用户的流失。

稳定性测试的概念有2种,

一, 稳定性测试,对应于异常性测试,即发生异常情况时,系统如何反应的测试。

包含:

  1 交互性测试,被打扰的情况,如来电,短信,低电量等。这些其实在上章的功能测试中有提到。

  2 异常性测试,断网,断电,服务器异常等情况

二,稳定性测试指的是性能测试,压力测试

  1 基准性能测试,通过压服务器端口及客户端在不同网络环境下响应速度

2 大数据测试,在特定环境下,客户端一次性更新大量数据及人员列表

性能测试

普遍的apk性能测试,主要是以下七类

1、响应

2、内存

3、cpu

4、FPS (app使用的流畅度)

5、GPU过度渲染

6、耗电

7、耗流

adb命令

adb,即 Android Debug Bridge,它是 Android 开发/测试人员的强大工具。它是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 adb 命令以图形化的形式实现了。adb的命令汇总如下:

在手机的开发者选项中打开usb调试,然后再到cmd中输入adb devices,显示如下表示连接成功

先在电脑上下载好安装包,再进入安装包路径,再使用adb install weibo.apk的命令进行安装,success表示安装成功,在手机上也可以看到这个软件

获取包名

①adb shell am monitor

运行命令adb shell am monitor后再打开软件进行操作,如com.sina.weiboi就是微博的包名

②adb shell dumpsys window | findstr mCurrentFocus

打开软件,输入命令adb shell dumpsys window | findstr mCurrentFocus

 

adb shell

查看所有包名 输入adb shell后再输入pm list packages

adb install [APK路径]:

adb install -r [APK路径]:

adb uninstall [应用包名]:

常用错误日志信息

空指针:nullpointException

数组越界:ArrayIndexoutof boundsException

多次启动线程:illegalThreadstateException

数字格式化问题 :java.lang.NumberFormatException

内存溢出:java.lang.OutOfMemoryError

Crash > AndroidRuntime > Exception>Error 的顺序逐个搜索。

查看日志:

场景:假设测试的app出现了闪退以及崩溃还有卡死,那么这个时候需要把错误的日志给开发

adb logcat

过滤日志

adb logcat | findstr com.sina.weibo

如果在测试的过程中app出现崩溃,你又没有查看日志,该怎么做

需要在测试一次,并记录好app崩溃前的日志,将日志给开发

 

adb shell wm size # 查看屏幕分辨率

adb shell cat /proc/cpuinfo # 显示设备的CPU信息

adb shell cat /proc/meminfo # 显示设备的内存使用情况

获取应用程序的pid

adb shell

logcat ps | grep com.sina.weibo包名)

adb shell top

adb shell ps | findstr  package

adb root # 切换到 root 用户

adb shell pm list packages # 显示设备里面所有应用的包名

adb shell service list # 显示当前运行的系统服务

adb pull [android端文件名] [PC本地路径]

adb push [PC端文件名] [android 端路径]

 

把测试过程中的日志文件写到记事本中

adb shell logcat -v time >log.txt

APP专项测试

获取内存信息

adb shell dumpsys meminfo 进程ID

获取cpu消耗信息

adb shell top -n 1 | findstr  进程ID

 

获取电量信息

adb shell dumpsys  battery

获取GPU信息

adb shell dumpsys gfxinfo 进程ID

怎么获取uid:

adb shell ps | grep <被测试程序包名>--》获取进程ID

//adb shell cat /proc/&pid/status

获取流量信息

adb shell cat /proc/pid/net/dev

monkey启动

      monkey启动方式相对而言是非常简单的,手机连接到电脑上,就可以开始启动操作。启动的命令是:

adb shell monkey

查询monkey的pid,获取应用程序的pid

adb shell ps | grep monkey

adb shell kill  pid

adb shell monkey -v 100 ---->10条随机事件

打开iRainEcp.txt,并将内容改为

adb shell monkey -p com.sina.weibo --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 12358 --throttle 200 --ignore-crashes --ignore-timeouts -v 80000>E:\dingding\monkey\monkey\log.txt

并在cmd中执行此命令,即可在log.txt中看到日志

 

将monkey.bat打开后更改日志和错误日志的存储路径

运行monkey.bat后可以在Result.txt中看到崩溃日志

web与app测试的区别:

1、APP兼容性测试(不同平台,不同分辨率,不同厂商)

2、弱网络以及不同网络情况下APP的资源加载和异常处理

3、安装以及卸载,和增量更新这部分

4、APP专项方面的测试,比如:占用电量,流量,CPU和内存的资源

5、需要测试APP的CRASH与ANR(崩溃,卡死,闪退)

APP出错怎么获取错误日志?

答复:使用命令adb logcat | findstr package ,打开日志查看的控制台,再次测试APP,看是否会再次崩溃,如果崩溃,获取到它详细的错误信息。

APP的稳定性测试你是怎么测试的?

答复:APP的稳定性从两个维度考虑:

1、它作为客户端,能够很快速的从服务端获取数据,那么前提是服务端是稳定性的

2、客户端本身的稳定性,比如不会出现崩溃,卡死,闪退,以及其他异常的信息,还有它的流畅度

那么使用monkey的测试工具来针对APP做各种随机性的操作,来验证是否会出现CRASH和ANR的情况


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

Docker——基本管理

Docker 基本管理 Docker——基本管理 一、Docker 概述1.Docker的设计理念2.容器的优势3.Docker与虚拟机的区别4.容器在内核中支持2种重要技术5.Docker核心概念5.1 镜像5.2 容器5.3 仓库 二、安装 Docker1.关机防火墙2.安装依赖包3.设置阿里云镜像源4.安装 Docker-CE并设置为开…

PostgreSQL 的事务管理和并发控制机制解析

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Istio Pilot源码学习(三):xDS的异步分发

本文基于Istio 1.18.0版本进行源码学习 5、xDS的异步分发 DiscoveryService主要包含下述逻辑&#xff1a; 启动GRPC Server并接收来自Envoy端的连接请求接收Envoy端的xDS请求&#xff0c;从ConfigController和ServiceController中获取配置和服务信息&#xff0c;生成响应消息…

使用 ChatGPT 碰到的坑

最近在使用 ChatGPT 的时候碰到一个小坑&#xff0c;因为某些特殊情况我需要使用 syslog 向 logbeat 中发送日志。 由于这是一个比较古老的协议&#xff0c;确实也没接触过&#xff0c;所以就想着让 ChatGPT 帮我生成个例子。 原本我已经在 Go 中将这个流程跑通&#xff0c;所…

快速排序qsort讲解

hello大家好&#xff0c;我是c语言boom家宝&#xff0c;今天为大家分享的博客内容是qsort快速排序&#xff0c;简称快排的一个知识点的讲解。 在讲到快排之前&#xff0c;允许博主先提一嘴冒泡排序。大家在c语言的学习过程中&#xff0c;冒泡排序是必不可少会学习到的一个思想&…

Kafka - Primie Number of Partitions Issue Consumer Group Rebalance

文章目录 生产者&#xff1a;将数据写入 Kafka 的客户端。 消费者&#xff1a;从 Kafka 中读取数据的客户端。 Topic&#xff1a;Kafka 中用于组织和存储数据的逻辑概念&#xff0c;类似于数据库表。 Record&#xff1a;发送到 Topic 的消息称为 Record。 Partition&#x…

基于深度学习的高精度交通信号灯检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度交通信号灯检测识别可用于日常生活中检测与定位交通信号灯目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的交通信号灯目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…

斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 13 Neural Nets and Deep Learning

来源&#xff1a;《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 13 Neural Nets and Deep Learning In this chapter, we shall consider the design of neural nets, which are collections of perceptrons, or nodes, where the outputs of one rank (or lay…

C# 学习笔记

不再是学生了&#xff0c;成了社畜了&#xff0c;公司主要技术栈是C# 大一时候学C#学的很迷糊&#xff0c;总要重新学一下 入职已经20天了&#xff0c;也开始上手简单增删改查了 记录了一些C#相关的东西&#xff0c;只是还没有系统整理 WinForm 控件命名规范 ADO.NET 连接…

爬虫-微博个人主页的获取

我们在利用爬虫爬取微博个人主页的时候&#xff0c;我们需要获取到个人页面的cookie才能进入到微博的个人主页&#xff0c;否则的话将会是一直跳转到登录页面而导致不能进入个人主页。 import urllib.request url #自己微博个人主页的源代码 headers {User-Agent:Mozilla/5.…

办公软件ppt的制作

毕业找工作太难了&#xff0c;赶紧多学点什么东西吧&#xff0c;今天开始办公软件ppt的制作学习。 本文以WPS作为默认办公软件&#xff0c;问为什么不是PowerPoint&#xff0c;问就是没钱买不起&#xff0c;绝对不是不会破解的原因。 一.认识软件 在快捷工具栏中顾名思义就是一…

什么是框架?为什么要学框架?

一、什么是框架 框架是整个或部分应用的可重用设计&#xff0c;是可定制化的应用骨架。它可以帮开发人员简化开发过程&#xff0c;提高开发效率。 项目里有一部分代码&#xff1a;和业务无关&#xff0c;而又不得不写的代码>框架 项目里剩下的部分代码&#xff1a;实现业务…

机器学习:Bert and its family

Bert 先用无监督的语料去训练通用模型&#xff0c;然后再针对小任务进行专项训练学习。 ELMoBertERNIEGroverBert&PALS Outline Pre-train Model 首先介绍预训练模型&#xff0c;预训练模型的作用是将一些token表示成一个vector 比如&#xff1a; Word2vecGlove 但是对于…

Qt Creator创建控制台项目显示中文乱码

今天在使用Qt Creator创建c项目的时候显示中文乱码&#xff0c;这里分享一下解决办法&#xff0c;主要是由于我们的电脑大部分是GBK编码格式的是&#xff0c;然后Qt默认创建的一般是utf-8编码类型的。编码类型不一致就会导致中文乱码的现象。 从控制台的属性可以看到我们的程序…

Observability:Synthetic monitoring - 动手实践

在我之前的如下文章里&#xff1a; Observability&#xff1a;Synthetic monitoring - 合成监测入门&#xff08;一&#xff09;&#xff08;二&#xff09; Observability&#xff1a;Synthetic monitoring - 创建浏览器监测&#xff0c;配置单独的浏览器监测器及项目 我详…

基于RASC的keil电子时钟制作(瑞萨RA)(3)----使用J-Link烧写程序到瑞萨芯片

基于RASC的keil电子时钟制作3_使用J-Link烧写程序到瑞萨芯片 概述硬件准备视频教程软件准备hex文件准备J-Link与瑞萨开发板进行SWD方式接线烧录 概述 这一节主要讲解如何使用J-Link对瑞萨RA芯片进行烧录。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是芯片型…

【Node.js 安装】Node.js安装与使用教程

Node.js 安装 Node.js 是什么那什么是运行时 如何安装 Node.jsNode 使用教程 Node.js 是什么 先说结论&#xff0c;Node.js 它是一套 JavaScript 运行环境&#xff0c;用来支持 JavaScript 代码的执行 JavaScript 诞生于 1995 年&#xff0c;几乎是和互联网同时出现&#xf…

leetcode-206.反转链表

leetcode-206.反转链表 文章目录 leetcode-206.反转链表一.题目描述二.代码提交三.易错点 一.题目描述 二.代码提交 代码 class Solution {public:ListNode *reverseList(ListNode *head) {ListNode *temp; // 保存cur的下一个节点ListNode *cur head;ListNode *pre nullptr…

scikit-learn集成学习代码批注及相关练习

一、代码批注 代码来自&#xff1a;https://scikit-learn.org/stable/auto_examples/ensemble/plot_adaboost_twoclass.html#sphx-glr-auto-examples-ensemble-plot-adaboost-twoclass-py import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import …

【stable diffusion】保姆级入门课程02-Stable diffusion(SD)图生图-基础图生图用法

目录 学前视频 0.本章素材 1.图生图是什么 2.图生图能做什么 3.如何使用图生图 4.功能区域 4.1.提示词区域 4.2.图片提示词反推区域 1.CLIP反推 2.DeepBooru 反推 4.3.图片上传区域 4.4.结果图区域 4.5.缩放模式 4.6.重绘幅度 7.结语 8.课后训练 学前视频 …