ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

移动自动化测试(二)

2022-08-31 17:00:09  阅读:408  来源: 互联网

标签:shell log APP adb 测试 自动化 Android 移动


功能测试点

用户使用习惯

权限问题

硬件问题

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

操作习惯

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

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

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

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

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

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

APK(全称:Android application package,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。

数据移动

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

安装&卸载测试

用户安装方式主要有:

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

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

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

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

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

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

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

• 是否支持断点续传(在程序正在下载或者上传文件的过程中,突然杀掉进程,检查文件上传的情况)?

• 下载完整之后,再次启动。 • 安装成功后,检查版本号以及相关数据。

升级测试

增量升级

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

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

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

内置应用升级

注意每次升级之后的应用是否与内置在系统中的.os文件匹配,如不匹配则会直接导致应用崩溃。 升级测试场景还有很多,以后再做补充。应用升级并非仅仅检查新功能或做冒烟测试,更多的是去了解升级的原理,升级到底更改了哪些文件,而这些文件又影响力哪些功能和数据库,找到这些问题的答案才能有针对性的进行全面的测试。

发布

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

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

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

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

稳定性测试

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

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

a、交互性测试,被打扰的情况,如来电,短信,低电量等。

b、异常性测试,断网,断电,服务器异常等情况。

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

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

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

性能测试

普遍的apk性能测试,主要有以下几个:

a、响应

b、内存

c、cpu

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

e、GPU过度渲染 (手机加载资源的整个过程)

f、耗电

g、耗流

adb

adb简介

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

开发者权限打开

step1:在连接手机设备之前,先在高级系统管理设置中,看下SDK环境变量,点击确定即可。

step2:打开手机设置,点击我的设备,搜索关于⼿机,在关于⼿机中点击7次,系统管理⾥⾯看到开发者选项,开启开发者选项和USB调试。

step3:手机数据线连接电脑端。 step4:打开cmd控制台,输入adb devices,看我们的手机是否与电脑连接成功,如下图所示:

apk的卸载与安装

针对android:给一个apk文件,通过电脑在手机端可以熟练的安装和卸载 eg1:开发给一个 weibo.apk文件,测试人员通过cmd命令,进入到apk的路径,输入adb install [APK路径]命令来进行安装,如下图所示

 

 

 此时安装成功!

针对IOS手机

步骤:

A、首先把苹果的测试手机序列号告诉开发

B、在测试手机下载testflight的App

C、开发会把测试的app发布到testflight,然后我们通过testflight来安装被测试的app

eg2:如何通过电脑命令卸载app

卸载逻辑: a.打开app,再使用adb shell am monitor等命令获取被卸载的程序包名

b.使用cmd命令,输入adb uninstall [应⽤包名],来进行卸载。 如下图所示

adb devices 显示当前连接的 adb 设备

adb shell 进⼊ Android 系统的 shell 模式

搭建完环境后,打开控制台,输入命令:adb shell,就可以进入手机的环境,然后就可以通过linux命令进行相关查询,由于手机也是linux环境下的,所以linux命令也同样适用。最后输入exit就可以退出。如输入pm list packages查询所有的包名

adb logcat 打印机器 log ⽇志

adb logcat | findstr package查看指定的包名日志

adb install [APK路径]

adb uninstall [应⽤包名]

adb shell am monitor 获取程序包名

adb shell dumpsys window | findstr mCurrentFocus 查看当前运行的APP的包名和Activity

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

adb shell dumpsys activity top 显示当前最前端的Activity

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

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

adb shell wm size 查看屏幕分辨率

获取程序pid

1、adb shell
logcat ps | grep 包名

2、adb shell ps | findstr 包名

3、adb shell top

adb shell dumpsys meminfo 进程ID 获取被测试APP的内存信息

adb shell top -n 1 | findstr 进程ID 获取被测APP的CPU信息

adb shell dumpsys battery 获取电量信息

adb shell cat /proc/进程ID/status 获取被测APP的UID

adb shell cat /proc/PID/net/dev 获取被测APP的流量

adb shell logcat -v time >log.txt 把日志信息重定向到log.txt中

⽇志

常用错误日志信息

空指针:nullpointException
数组越界:ArrayIndexoutof boundsException
多次启动线程:illegalThreadstateException
数字格式化问题 :java.lang.NumberFormatException
内存溢出:java.lang.OutOfMemoryError
文件找不到:java.io.FileNotFoundException
未发现此类:java.lang.ClassNotFoundException: Didn't find class
初始化错误:java.lang.InstantiationException:java.lang.Class<androidx.core.app.
Crash > AndroidRuntime > Exception>Error 的顺序逐个搜索。
注:crash,即崩溃,anr是crash的一种。在程序中可能会出现你未捕获到的异常,这就造成了崩溃。

日志应用

eg1:针对android:给一个apk文件,通过电脑在手机端可以熟练的操作log信息到一个具体文件。 步骤如下:

a.在XX的目录下创建log.txt的记事本

b.adb logcat > log.txt,然后按下回车键

c.启动app,进行操作

​d.操作完成,打开log.txt,里面会有很多日志信息 直接过滤掉的日志信息:adb logcat | findstr 包名 > log.txt 如图所示

Monkey

常见monkey命令

adb shell monkey 启动的命令
adb shell ps | grep monkey 查询monkey的pid,grep是针对苹果系统
adb shell ps | findstr monkey 查询monkey的pid,findstr是针对window系统
adb shell kill pid 停止monkey进程
adb shell monkey -v 10 10条随机事件
adb shell ps | findstr 被测试程序包名 获取进程ID
adb shell dumpsys meminfo 进程ID 获取内存信息
adb shell top -n 1 | findstr 进程ID 获取cpu消耗信息
adb shell dumpsys battery 获取电量信息
adb shell dumpsys gfixinfo 进程ID 获取GPU信息
adb shell cat /proc/pid/net/dev 获取流量信息
注:pid是在手机以及电脑上,任何运行的一个程序都是一个进程,每个进程都是有独立的pid。

1、测试app的过程中,出现了闪退,此时你会怎么办?

a.截屏/录频记录下闪退的交互

b.同样的操作操作的时候,使用adb logcat | findstr 包名 > log.txt,把错误日志信息重定向到日志文件里面

c.把录频的交互操作以及错误的日志信息,反馈给开发。

衍生知识:

1)adb logcat | findstr "packname"

只过滤查看某个具体package的错误信息

2)把错误的日志写到一个记事本里面,然后在记事本里面通过关键字的搜索来查询错误信息。把日志信息写到其他的文件,这个过程叫重定向

3)重定向的操作步骤:

a、在XX的目录下创建log.txt的记事本

b、adb logcat > log.txt,然后按下回车键

c、启动app,进行操作

d、操作完成,打开log.txt,里面会有很多的日志信息。

2、web测试与app测试的区别?

web与app测试的区别:

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

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

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

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

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

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

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

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

2)客户端本身的稳定性,比如不会出现崩溃,卡死,闪退,以及其他异常的信息,还有它的流畅度。 那么使用monkey的测试工具来针对APP做各种随机性的操作,来验证是否会出现CRASH和ANR的情况。

标签:shell,log,APP,adb,测试,自动化,Android,移动
来源: https://www.cnblogs.com/cch6842/p/16643680.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有