app测试

app测试你具体怎么做的

对于App这块,我们一般首先都先做功能,先保证功能过关是第一位,对于功能这块的话,基本都跟Web端是一样的。

除了功能之外,公司还要求做了一些专项测试,像:安装,卸载测试,兼容性测试,稳定性测试,性能测试,弱网测试,交互性测试,都有测试过的,专项测试这块,我主要负责的是:兼容性测试,稳定性测试,性能测试,弱网测试,交互性测试,这是我这边负责的。

像兼容性测试,公司有提供了差不多了7-8款的真机,像:华为,小米,三星, vivo, oppo等这些主流的机型都在真机想有测试过,其他的机型,公司用的是云测,云测平台我们用的Testln这个平台,公司会给我们提供账号。

稳定性测试这块,用的 Monkey命令工具去测的,主要就是通过 monkey模拟用户发送一些伪随机时间,看app是否有Crash, ANR, Exception等现象,一般都是在晚上的时候去执行 monkey命令,然后出报告,分析性能测试,用的GT工具结合 Android Studio工具去检测app在手机上运行的时候的CPU,内存,电量,流量,启动时间,安装,卸载时间以及页面的响应时间。

弱网我们用的 fiddler工具去进行模拟的,模拟2G/3G/4G等弱网场景,看app在弱网情况,功能是否能正常使用。

交互性测试这块主要就是看app与其他应用程序之间的交互运行,以及与系统应用程序之间交互运行,来回进行前后台切换,看是否会出现闪退,数据丢失等现象。

Web测试与app测试区别

其实功能这块,app测试与Web测试基本是一样,没有什么区别。(需求分析->提炼测试点>编写测试用例->执行用例->提Bug->复测,回归)等等的。

区别主要在于,web端是B/S架构的,App是C/S架构的,由于架构的不同,所以web端一般服务器更新的时候,客户端不需要更新,

因为它是通过浏览器来访问的,服务器更新了,客户端也更新。app服务端要更新,同时客户端软件要进行升级更新,才算是新的版本。

对于app测试来讲,除了功能之外,更多的还要考虑一些专项测试,比如:

Web测试是基于浏览器的所以不必考虑安装卸载。而app是客户端的,则必须测试安装、更新、卸载

兼容性、稳定性、性能测试、弱网测试、交互性测试等等。

还有就是,对于兼容性这块,Web端主要考虑是:不同的浏览器,不同的操作系统的兼容性接口。

而对于app测兼容性更多的考虑:不同的品牌机型,不同操作系统,不同手机屏幕大小,屏幕分辨率

性能方面也会有所不同:Web端性能测试更多关注的后台的性能,

app的性能测试关注的是手机本身的资源的性能问题:

比如:CPU内存,电量,流量,页面加载响应时间,软件启动时间等等

他们两个之间的区别差不多就这些吧。

常用的adb的命令

adb start-server

adb kill-server

adb devices

adb -s 设备ID install 路径/包名.apk

adb -s 设备ID shell pm list packages -3

adb -s 设备ID uninstall com.baidu.BaiduMap

#电脑端文件传输到手机上

adb -s 设备ID push D:\路径文件\ sdcard\路径\

#手机上的文件传输到电脑端

adb -s 设备ID pull \sdcard\路径\文件\D:\路径

#查看手机端的日志

adb logcat

adb logcat -d #打印完所有的日志文件之后,退出shell终端

adb logcat -c #清除手机系统运行生成的日志文件

adb logcat -v time #需要打印日志详细时间的简单数据

adb logcat -d *:E #需要打印级别为Eror的信息

adb logcat -d *:E>D:\hello.log

adb logcat -d *:l>D:\hello555.log #打印1以上级别的所有日志信息

adb logcat-d *:E | findstr cn.csdn.activity > D:/hello_error2.log

# 查看所有的手机软件包名
adb shell pm list package

# 查看第三方的手机软件包名
adb shell pm list package -3

# 查看后台运行的包名
adb shell am monitor

# 查看手机当前使用的内存情况,各个线程的内存占用情况
adb shell dumpsys meminfo

# 查看手机的电池信息
adb shell dumpsys batteryinfo

# 查看系统资源状态
adb shell top

# adb命令录屏 (10表示录制10秒,默认是180秒):
adb shell screenrecord --time-imit 10 /sdcard/demo.mp4

adb的作用

adb其实是一个 android调试桥,主要是用来监控手机设备的,实现手机端与电脑端的通信,通过adb来实现对手机的管控。比如:通过adb安装软件卸载软件,通过adb可以查看手机的资源使用情况,可以查看cpu内存等资源。还通过adb实现手机端与电脑的文件的传输通过adb查看手机端app运行的日志,通过看日志来分析具体问题。

App兼容性测试怎么做的

像兼容性这块当时,我们主要用真机测试为主,公司当时使用提供大概7、8款机型吧,

我记得像华为荣耀系列两款,例外小米机型有选择2款,还有就是像 vivo, oppo当时都有测过,

对了还有三星等这些系列机型上都有做过真机测试。

真机这块,像系统版本主要覆盖的系统其中6.0\7.0\8.0为主, 5.0以下公司当时都不要求测,

对于其他的机型覆盖不到位,我们都是通过云测进行覆盖的,云测这边,我们公司用的 testin这个云测平台,公司有提供账号给我们只要登录上去,然后把apk上传上去,之后选择机型要测试的机型,当时我们在云测测试有差不多有60款多款机型吧,主要是市面上流程的主流机型,每个系列都会选个几款,如果用真机测了的就不在选择了,然后做一些相关的配置,云测平台上主要帮我们做了智能遍历,安装,启动,运行,卸载,初始化, Monkey测试相关的测试,不过 monkey一般都是通过真机测的,云测平台没有测过,配置好了之后,提交测试就可以了,一般提交测试之后,需要几个小时就会出报告。然后分报告,主看遍历,安装,启动,运行,卸载,初始化相关哪些机型有出问题,对于出问题的机型,一般会先补测一下,如果还有问题,我们项目组一般会向公司申请真机再真机进行复测,如果真机复测有问题,就通过利用 adb logcat查看错误日志,分析具体的问题所在。

其实我们做兼容性测试主要就是看软件在不同机型,不同系统版本下能不能正常安装,卸载是否能正常启动,运行,初始化,我们都把各个功能都进行运行一遍,主要就是跑下主流程,看有不有问题。例外,就是看软件在不同屏幕大小,不同的分辨率的手机下显示是否正常,有不有拉伸,显示不全,或者显不清晰的等问题。

当时我们兼容性就这么做测。

App稳定怎么做的Monkey怎么用(App稳定测试)

稳定性这块,我们当时用的是SDK自动的一个 Monkey工具进行测试的,其实 Monkey工具主要通过模拟用户发送伪随机时间去操作软件,通过执行 Monkey命令,它会自动出报告,执行测试大概在10万次,每个动作的间隔时间250ms,主要就是看软件长时间,随机乱操作的情况,是否会出现异常,闪退,崩溃等现象。

一般我都是在下班的时间晚上时间执行 Monkey命令,并把生成的报告导出到电脑端,大概需要6、7小时,第二天早上看报告,分析报告,如果出现问题,一般利用上次执行的那个种子值,再进行执行命令进行复测一下,

像 monkey命令:

adb shell monkey -p com.xy.android.junit -s 种子值 --throttle 250 --ignore -crashes --ignore -timeouts -monitor-native-crashes -v -v 100000 > E:\monkey_log\monkey_log.txt

这里主要关注几个点,1、指定种子值 2、忽路一些异常,保证能正常执行完成

3、设置间隔时间 4、配置一些时间比例 5、然后就是执行的次数。

对于报告怎么分析这块,主要看有不有 CRASH(崩溃),ANR(超时无响应), Exception(异常)等的情况像看有不有空指针异常( NullPointException)啊,0OM等现象啊等等,

找到 CRASH崩溃ANR超时无响应 Exception异常的位置,看出现错误的上一个动作是什么,什么做了什么动作导致错误出现。异常信息会详细的指出哪个 Activity出现了问题,甚至于哪个函数出问题了,具体哪个位置。然后把报告中出现的日志信息截图发给开发,开发修复完成之后,我们会根据种子值在进行复测一下。

稳定性这块我们当时就是这么做的。

我在运行 monkey发现过很多的问题我就简单的说几个问题,举个例子在查看 monkey运行日志中

(1) com.androidserver.am.NativeCrashListener.run(NativeCrashListener.java:129)

属于本地监听代码导致的崩溃,手机监听代码导致的崩溃,他是手机产生的原因,不是代码的原因不做处理。

(2) ∥Short Msg:java.lang.IllegalArgumentException传参异常:需要一个stng类型,给我一个int类型

(3) ∥Short Msg:java.lang.NullPointerException 空指针异常

(4) ∥Short Msg:Native crash 本地代码导致的奔溃

(5) (com.koudaizhekou.tbk/com.uzmap.pkg.EntranceActivity) 超时无响应

等等等……

App弱网测试怎么做的

弱网测试这块我用的 fiddler工具做的,通过 fiddler实现延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到模拟2G\3G\4G的移动网络的弱网场景,还有设置随机数来模拟网络不稳定的情况。

操作:首先保证手机与电脑在同一个网络,然后在手机上,设置代理服务器,指定服务器为装了 fiddler的电脑的ip地址,端口为8888然后就是在fiddler上设置上行,下行速率,实现对发送,接受数据的进行网络延迟具体在 fiddler的菜单上有一个Rules -> CustomizeRules,打开 Fiddler的 ScriptEditor文件,在其中找到 m_SimulateMode标志位,然后修改上行,下载的网络延迟时间即可,具体设置参数的值SE那边有给到一个参考文档

2G上行440,下行400, 3G上行100,下行100

模拟网络不稳定的情况

生活当中,网络并不是固定不变,一般处于不稳定的状态,我们这个时候编写随机数来模拟网络不稳定的情况

1,在 Customize Rules文件中,写一个随机的数

static function randlnt(min,max){

return Math.round(Math,random()*(max-min)+min);

}

2,在 Customize Rules文件中,限制网络的参数修改成随机数

if (m_Simulate Modem){

// Delay sends by 300ms per KB uploaded.2kb/s

oSession[“request-trickle-delay”]=“”+randlnt(1,20000);

// Delay receives by 150ms per KB downloaded.2.5kb/s

oSession[“response-trickle-delay”]=“”+randlnt(1,20000);

3,重新勾选

Rues-> Performance->勾选 Simulate Modem Speeds

弱网测试,看我们软件在弱网场景下是否会有丢包的现象,丢包率是否严重,页面是否能正

常展示,是否有空白页,数据是否有丢失,页面加载速度是否会严重影响用户体验。

App的性能测试

内容要点:

指标:cpu,内存,电量,流量,FPS,

怎么测? cpu,内存,流量 android studio

cpu不能超过10-20% 普通业务要求在10%左右,核心的业务,尤其是一些绘图的业务,

要求在20%左右。指标:SE给到,竞品分析

内存主要看有内存泄露的情况,怎么看?

流量:一刷新使用软件,流量会逐渐增加

具体操作:

1,对于cpu内存,流量这3个指标,我们用的 android studio来检测的,结合sdk里面的一个插件 android Monitor,它可以帮我们试试检测cpu,内存,流量的曲线图

2,这里我们需要开启手机端的开发者模式,还有usb调试模式,例外,开发给我们提供的apk包,必须需要开启 debug模式,开发开启之后打包给测试人员就可以了

3,主要就是对我们需要测的功能进行操作,然后实时查看图表,看他是否有内存oom内存泄漏,cpu是否使用过高,是否有内存抖动,造成的卡顿等现象,是否有图片过大造成流量使用过大这些问题等,是否有频繁使用流量,没有使用缓存等问题

4,像fps帧率是通过adb命令来测的,还有电量我们当时用的是手机自带的一个第三方软件测的?

对于内存具体怎么测呢

对于内存其实主要看有没有内存泄漏的问题

具体我们是这样做的:

1、首先我会频繁操作同一个业务,看他的内存和cpu是否逐步增长,最后稳定在一个固定大小的范围,如果在频繁操作同一个业务,内存一直在增长,可能存在有内存泄漏问题,尝试手动GC(手动回收内存,因为内存泄漏,系统已经回收不了,所以尝试下手动回收内存),内存明显或者断崖式的下降,基本就可以判断有内存泄漏的现象

再通过 damp java这个去分析,分析结果如果出现 leaked,就说明有了,里面可以找到是哪个对象,截图提bug,

2、使用app过程中,内存一直在增长,那基本可以判断有内存泄漏的情况,还有看是否有内存抖动的现象:这里主要原因还是有因为大量小的对象频繁创建,频繁的回收内存,会导数cpu频繁使用,造成cpu使用过大,造成app卡顿,导致内存碎片,内存泄漏等问题

对于CPU具体怎么测呢

cpu主要就是看有没有过高,有没有超过我们的指标范围

具体是这样做的:

首先频繁使用某一个业务,cpu是否逐步增长,最后稳定在一个固定大小的范围,对于一把基础业务,对cpu要求不高的业务,cpu不能超过10%,对于cpu要求比较高的,比如某个业务需要加载地图,大量的图片,视频等的业务,或者需要做大量的数据统计分析的业务,

我们要求cpu不能超过20%

对于流量具体怎么测

a,首先看在没有操作功能业务的情况下,没操作流量不应该有,或者是流量使用不是很大,就几KB因为app肯能实时刷新消息,比如如果一个登陆,你就使用1M的流量,查询个图片使用3-4M的流量图片,这个肯定流量使用过大

b,频繁操作同一个业务,流量一直在刷,说明没有使用缓存

如何处理:图片过大处理方法:图片压缩传输,要么降低图片分辨率,

对于FPS具体怎么测

对于Fps帧率的问题,我们当时用的adb命令来测的

知识点拓展: Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms,这就是16ms的黄金准则,

a. 打开手机:开发者选项-> profile GPU rendering ->

in adb shell dumpsys gfxinfo(开启GPU渲染模式)

b. 操作要测试的apk

C. cmd窗口输入命令: adb shell dumpsys gfxinfo 包名

d. 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比

e. 通过execl进行表格处理可以直观的查看软件的流畅度

15.14对于电量具体怎么测?

电量这一块,我们当时用的手机自带的第三方软件测的

App交互性怎么做的

交互性这块,主要从以下几个方面去考虑测试的是:

  1. 看我们软件与其他应用软件的同时运行来回切换是否有问题
  2. 看软件切换到后台一段时间,再切换到前端,或者前后台来回切换,

软件是否会有异常,比如:进程被杀死,或者切换到前端页面出现问题,或者页面数据丢失等等。

  1. 看软件被在使用过程中被其他应用中断,或者其他意外情况中断,比如:来电,来短信,闹铃,低电量测试等,还要注意手机端硬件上,如:待机,锁屏,插拔数据线,耳机等操作不会影响客户端。

App的安装,卸载,更新测试具体从哪些方面考虑

安装测试:

  1. 正常安装测试,检查是否安装成功安装完成后,能否正常启动应用程序
  2. 是否支持第三方安装,比如豌豆荚及91助手等工具可以正常安装及卸载程序
  3. 检测在各大手机市场上下载,并直接安装,看是否能正常安装,安装完成之后,能否能正常启动。
  4. 检测APP版本覆盖测试(先安装一个低版本,不卸载。然后再直接安装一个高版本,看是否会覆盖 低版本。(直接覆盖是否成功,卸载之后,再下载新版本,看是否能安装成功)
  5. 检测版本回退(先装高版本,不卸载,直接再重新安装一个低版本,是否会覆盖高版本。
  6. 检测在内存不足的情况下,去安装软件,系统应该会有提示
  7. 在安装过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码符号、乱码等。
  8. 检测在未允许外来程序的安装的情况下,安装软件是否会有提示信息
  9. 如果软件需要用到网络,GPS定位,联系人等其他系统应用程序的时候,安装App会有相应的提 示。在不允许的情况,软件是否能正常使用。
  10. 安装完成后,是否对其他应用程序造成影响。
  11. 多进程进行安装,是否安装成功。(同时安装多个软件,是否能正常安装)
  12. 在不同型号、系统的手机进行安装。(兼容性)
  13. 安装过程中,取消安装,再次重新安装,是否能正常安装。
  14. 安装完成后,检查手机桌面能否添加快捷方式。(是否有快捷图标生成。)

卸载测试:

  1. 正常卸载,软件是否能正常被卸载,相应的桌面图标是否会删除
  2. 卸载之后,对应的文件是否删除干净,进入安装位置,去看下是否有残留的文件
  3. 程序正在运行的时候,卸载程序,是否能正常卸载
  4. 卸载过程中,取消卸载,看是否正常退出卸载程序,检查软件是否还能继续正常使
  5. 在没用使用程序时,删除目录文件,看程序是否能运行。
  6. 不同系统、硬件环境下进行卸载
  7. 卸载成功后,是否对其他程序有影响
  8. 卸载后再次安装,是否正常使用
  9. 在卸载过程中,所有的提示信息必须是英文或者中文,

提示信息中不能出现代码是否有相关的提示信息

  1. 卸载过程中,出现意外(比如手机关机,没电,查看信息,接打电话),程序是否还能运行
  2. 在卸载过程中,突然重启设备,再次访问程序,是否还能运行。

更新测试:

  1. 当客户端有新版本时,提示更新
  2. 非强制更新,可以取消更新,旧版本正常使用,下次使用软件时,仍然会出现更新提示
  3. 强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新
  4. 不卸载,更新,检查是否可以更新
  5. 不卸载更新,检查资源同名文件如图片等是否更新成最新版本。
  6. 非wifi网络下,提示是否更新,取消就加入待下载,wifi下自动更新。

H5界面怎么测试

基本功能测试:(浏览器、微信内置浏览器)

登陆

目前H5与 native各个客户端都做了互通,所以大家在测试的时候要注意两点:

A、若客户端已登录,那么进入H5后仍然是登录状态

B、若客户端未登录,进入H5,点击对应按钮OR链接,如果需要登录,须拉起 native登录。若取消登录,是否可再次拉起登录,或者停留在的页面是否有对应的登录提示.。

ps:本次测试过程中就发现,第一次点击链接,可以拉起登录,第二次却不能

翻页

遇到翻页加载的页面,需要注意内容为1页或者多页的情况。

A、数据分页加载时,注意后续页面请求数据的正确。

ps:这个需要注意在快速操作场景中,请求页数是不是依次递增,快速操作(如第1页尚未 loading出来的时候仍然继续上拉操作)时是否发出去对应的请求了。

刷新与返回

A、下拉刷新是否仍然处于当前页面。

B、用户主动点击刷新按钮是否仍然处于当前页面

C、点击返回与back键,回退页面是否是期望页面

ps:本次测试过程中就发现,mtop接口请求成功,但是data内无数据时,返回到的就是个空白页面,无法正常发送请求。

H5适配相关

H5的适配其实比客户端的相对来说,要少一些,手机品牌之间的差异不大,所以不用太多关注,最容易出现问题的是 android2.3系统,这个要特别关注下:

A. 大屏(如720*1280,重点关注页面背景是否完全撑开页面,刷新是否有抖动)

小屏手机(如320*480,重点关注下弹框样式和文案折行)

B. android2.3、android4.X随机找一个即可

C. ios5、ios6、ios7

体验相关

资源相关

A、页面中有图片的话,淘宝那边建议图片一般不大于50kb,本着一个原则,尽量缩小图片

B、资源是否压缩、是否通过CDN加载

C、如何保证二次发布后有效更新。

流量

A、对于一些不会变化的图片,如游戏动画效果相关图片,不需要每次都请求的东西,做本地缓存

B、数据较多时是否做了分页加载。

页面展现时间

A、关注页面首屏加载时间

页面提示

A、弱网络下,数据加载较慢,是否有对应的 loading提示

B、接口获取异常时,提示是否友好

C、刷新页面或者加载新内容时页面是否有抖动

手机操作相关

A、锁屏之后展示页面

B.回退到后台之后,重新呼出在前端展示

你们之前是用什么手机什么版本做兼容性测试的

有用到三星note5 Android 6.0.1 三星s6 Android 6.0.1

红米1s Android 5.1 小米5 Android 7.0

华为mate9 Android 6.0 乐视2 Android 6.0

华为mate20 Android 9.0 三星s8 Android 8.0

iphoneos ios 10.3.2 iphone ios 10.0.2

iphone ios 8.4.1 iPhone X ios 11.0

Android跟ios测试有什么区别

Android和ios测试的共同点都需要进行界面测试、功能测试、兼容性测试、网络测试、交互性测试、易用性专项测试、异常测试、安全专项测试以及权限测试。不同的是 Android测试除了以上的测试之外还要用 monkey进行稳定性专项测试以及用 emmagee或者gt进行性能专项测试。los是用itools工具对功能进行测试:安装、传输文件以及查看日志。

从操作系统,安装卸载,按键操作,开发语言这几个方面去区分操作系统: android操作系统较多,iOS较少只能升级不能降级,并目新的版本的资源库不能完全兼容旧版中系统中的应用,如果低版本应用调用了高版本的资源库,可能会导致系统崩溃。

安装卸载测试,应用发布后:下载安卓包的平台和渠道很多:豌豆英、应用宝、360手机助手等;

iOS主要有 App store、 iTunes,安全性会更高点

本地测试:安卓手机可以通过扫码或者直接安卓APK包安装测试包;iOS要安装测试包必须绑定手机的id(证书)才可以安装ipa测试包

按键操作测试:安卓手机针对每一款手机有不一样的操作;苹果手机操作习惯单一

开发语言:虽然同样的业务安卓和iOS的展示形式和业务一致,但是底层全完不一样,安卓的应用是有java语言实现的,iOS用OC实现。

小程序怎么测试

1,小程序测试(多用第一人称,口语化表达,多讲一些,讲细一些,先宏观,在微观)参考面试问题STAR法则:

我们原来主要测试,几个方面,界面测试,功能测试,交互性测试,兼容性测试,安全测试,

易用性测试,异常测试,权限测试

界面测试:主要是测试跟界面的原型图是否一致,同时我也要考虑不同屏幕大小跟分辨率

功能测试:跟所有的功能测试都是一样的,还有小程序有位置功能,检查下,微信小程序,附近中是否能找到对应小程序,使用小程序是否记录,

交互性测试:要考虑跟微信的功能交互使用,比如说一些,卡包,支付等功,考虑跟手机固有功能交互,比如说来电,短信等

兼容性测试:考虑跟微信不同版本的兼容,还有同时还要考虑不同手机厂商跟手机型号兼容,还要考虑当微信清除缓存后,小程序还能否继续使用

安全测试:测试数据加密,包括sql与xss脚本攻击这块

易用性测试:考虑功能是否方便还用

异常测试:考虑断网,手机重启,关机的情况

权限测试:小程序继承微信权限,测试手机对微信权限,还要考虑微信对小程序授权,是否允许操作

原来我们测试阶段,上传小程序到微信小程序平台,上传到开发版本里面,通过扫描二维码去下载小程序进行测试,

上线后,我们也要测试下,微信搜索小程序中能否搜索的到

公众号,小程序比app更火,你怎么看

小程序有安装包,一般控制在1M以内

1,基于微信大的平台,有流量的入口

2,不需要安装,操作更加方便

微信开发者工具如何使用

原来我们的下载一个微信开发者工具,导入开发给的小程序代码包,在输入开发给予的

appid,调试与测试小程序代码包,

如果真机测试,也可以扫描开发在微信开发者工具生成的二维码进行测试