App测试中Android和IOS测试区别
- 分辨率测试:
Android端种类多常见的手机分辨率:
(4:3 VGA 640480 (Video Graphics Array) QVGA 320240 (Quarter VGA) HVGA 480320 (Half-size VGA) SVGA 800600 (Super VGA)
5:3 WVGA 800*480 (Wide VGA)
16:9 FWVGA 854480 (Full Wide VGA) HD 19201080 High Definition QHD 960540 720p 1280720 标清 1080p 1920*1080 高清)再加上不同的手机品牌;
ios就比较少了;
- 手机操作系统:
ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
Android较多;
- 操作习惯:
Android,Back(返回)键是否被重写,测试点击Back(返回)键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
- push(信息推送)测试:
Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;
ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
- 安装卸载测试:
Android的下载和安装的平台、工具和渠道比较多;
ios主要有app store,iTunes和testflight下载;
- 升级测试:
可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文 件是否匹配(如内置的输入法)
测试注意点:
- 并发(中断)测试:另一个应用的启动、视频音频的播放,来电、用户正在输入等,语音、录音等的播放时强制其他正在播放的要暂停;
- 数据来源的测试:输入、选择、复制、语音输入,安装不同输入法输入等;
- push(推送)测试:在开关机、待机状态下执行推送,消息先死及其推送跳转的正确性;应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确;推送消息阅读前后数字的变化是否正确;多条推送的合集的显示和跳转是否正确;
- 分享跳转:分享后的文案是否正确;分享后跳转是否正确,显示的消息来源是否正确;
- 触屏测试:同时触摸不同的位置或者同时进行不同操作,查看客户端的处理情况,是否会crash等 我: 归纳和总结了Android APP在测试过程中经常出现Bug的关键节点,希望对大家有所帮助!
启动:
1. 启动入口:桌面正常启动,最近运行启动,所有程序列表中启动,锁屏快捷启动
2. 其他入口:从其他程序开启应用,从外部以文件形式打开应用(如果有)
3. 退回:从其他程序退回时回到被测应用,被测应用打开其他应用再从桌面图标启动
以上需要交叉组合测试。
4. 异常启动:崩溃后启动,写文件时被强制杀进程后启动,网络请求未收到回包强制杀进程后再启动,网络超时时启动(启动需要有超时机制)
功能介绍,引导图,流量提示等:
1 全新安装程序第一次启动,会有些初始化,或者弹框提示,功能介绍,当外部打开,比如第三方打开(一般不算做第一次启动)后,再启动程序,检查该有的动作是否都有。
权限:
1 当某些权限被安全软件或者系统禁止时,是否可以正常使用,需要注意的权限:麦克风/摄像头/定位/短信息等权限 —_luguo
2 在做兼容性测试时,需要特别注意权限管理较严的Rom,比如魅族在摄像头等权限为默认关闭
3 第三方安全软件弹框请求禁止权限时,选择后,是否会影响到被测应用的正常流程
文件错误
1 使用错误的文件类型(但是有正确的后缀名),替代被测应用使用的文件
2 adb push 从pc上传到设备的文件如果有中文名,会生成一个错误的文件,被测应用需要适应这种错误情况
屏幕旋转:
1 确认哪些界面是需要允许横屏或者禁止横屏的
2 将屏幕锁定为竖屏或者横屏,在几个界面跳转,界面是否正常
3 当适应横屏时,是否对横屏进行了适配
流量:
1 首次启动应用的流量是否符合预期
2 在主界面有很多图片时,是否已经达到图片文件大小与显示效果的平衡
3 当需要使用较大的网络流量时(加载大图片,视频播放缓冲,下载更新包),显示出当前网速或者进度,对用户来说更友善
缓存(/sdcard/data/com.your.package/cache/):
1. 卸载后将删除缓存,其中是否存在不应该删除的文件(下载文件,用户资料)
2. 缓存易被360手机卫士,猎豹清理大师等清理,需检查该文件夹是否放了适合的文件
正常中断:
1. 在所有界面执行锁屏操作,解锁后观察是否正常运行
2. 在所有界面执行长时间锁屏操作,解锁后观察是否正常运行
3. 在所有界面,和所有过程,按home键切后台,再切回时观察是否正常
4. 在所有的loading过程中,按back键
5. 在所有的loading过程中,按home键
6. 界面切换动画时尝试多次按back键
7. 正常的点击动作,尝试快速按两次
8. 后摄像头和前摄像头无法同时启动,后摄像头启动还包括打开闪光灯(与手电筒类应用的兼容性)
9. 检查键盘展开和收起的时机,与home、back、锁屏组合测试
10. 从第三方启动后,home键回到桌面,再从桌面打开被测应用,显示是否正确(应确定是显示第三方启动界面,还是显示程序正常启动界面,前者如微信,后者如QQ)
异常中断:
1. 断电后重启
2. 当界面被意外崩溃,是否可以重启界面,并且恢复到崩溃之前的状态
3. 来电结束后,返回被测应用界面
4. 在某些特殊情况下,来电后,移动网络会被切断
用户体验:
1. 以最挑剔最无理的用户角度来使用应用的主打功能
2. 是否每个动作都有反馈
3. 每个按钮都有按下的状态
4. 当界面有返回按钮时,back将执行同样的操作
5. 当图片需要网络拉取,或者无图片时,是否有默认图片替代
6. 开启开发者选项,勾选显示布局边界,检查每一个按钮的可点击范围是否合理
多语言:
1. 其他语言的语言习惯(如繁体)
2. 英文注意复数
3. 多语言下,需要特别检查以图片形式展示的文案(如果功能引导,启动引导图)
4. 一致性。(一方面是代指的一致性,一方面如果有系列应用共用功能的文案也需要保持一致)
5. 如果在简体下载了一个文件or创建了一个快捷方式or进行了一笔购买,马上切换语言去做一次同样的动作
6. 检查英文语言下的切断、断行是否正确
7. 当文字长度不一致时,UI界面是否能正常适配
升级:
1. 是否有完整的升级策略(强制升级,灰度发布)
2. 下载升级包过程中是否可以取消
3. 升级包下载是否可以续传
4. 升级过程是否可以中断(取消按钮,back键)
5. Android系统第一次安装非官方市场应用,需要手动取消限制,此过程是否会影响到apk包安装(正对预装应用的测试)
6. 在没有更新或者网络时,需要给予用户正确的信息表达
7. 如果升级有忽略本次版本升级,那么当有新的升级版本时,是否还有提示升级
8. 收到升级提示后,下载了apk并未安装,同名替换该apk,下次再收到升级提示后,是否正常升级
应用外部升级:
1 应用如果是跳网页下载安装包升级,需要在文件名加版本号或者标识,防止浏览器下载时有缓存,而无法安装最新版本—_luguo
2 交由系统下载升级安装包,尝试进行两次版本升级
列表:
1. 列表中的文字长度超过限制
2. 点击列表项返回后的列表项的状态变化(尤其在有多个进度条存在时,需要注意状态)
3. 上下滑动时,是否可接受卡顿(帧率)
双卡双待:
1. 当手机为双卡双待时,影响到的功能有:需要获取手机号码的功能,如支付;自动读取短信息
网络:
1. 是否以较好的体验从网络问题导致的数据问题中恢复界面展示数据
2. 是否每个需要网络请求的操作,都有做超时处理,并且测试出他的超时时间
3. 检查每一个需要网路请求的动作在网络延迟,服务器发生错误时,界面的响应
monkey测试:
1. 必跑monkey,不要仅跑一次,不要到测试后期才跑
2. 更换不同的界面和不同的参数跑monkey
3. 记得记录所有日志,如果能有日志筛选的工具更好
性能测试:
1. cpu占用,内存,流量,耗时等数据,必须有标准和参考值(可以是市场上同类应用的类似操作的表现,或者同应用的不同版本测试)
2 特定操作(一般为主打功能)的压力测试,一般长时间大批量执行某个动作或者组合,尤其为该动作是通过JNI实现,或者使用了其他第三方sdk。一般写脚本或者录制脚本。
病毒检测:
1. apk文件在PC杀软上检测
2. 手机杀毒软件检测
Android端手机测试体系
1.冒烟测试
跟web端的测试流程一样,你拿到一个你们开发做出来的apk首先得去冒烟,也就是保证他的稳定性,指定时间内不会崩溃。这款原生sdk自带的monkey可以当做我们的测试工具。就跟我之前博客所说的,monkey测试模拟了用户的按键输入,触摸屏输入等等,看设备多久时间出异常。因为它得用到adb命令,那么同学们可能还得去自学一下adb命令。如果抓到crash(比如内存溢出,空指针异常什么的),及时向你家开发及时反馈,你也可以把它看成一个性能测试工具 - Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/sdk/sdk/tools/lib/monkey.jar;
-
Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/sdk/sdk/tools/bin/monkey;
-
Monkey命令
-
adb shell monkey –help
-
指定一个包: adb shell monkey -p com.example.sellclientapp 100
-
指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100
-
不指定包:adb shell monkey 100(说明:Monkey随机启动APP并发送100个随机事件)
-
要查看设备中所有的包,在CMD窗口中执行以下命令:
>adb shell
#cd data/data
#ls(没有root所以不能用这个属性)
-
参数: -v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level 0
示例 adb shell monkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 相应源代码如图所示了,这十分有利于调试了。
- Level 1
示例 adb shell monkey -p com.htc.Weather –v -v 100
-
Level 2
示例 adb shell monkey -p com.htc.Weather –v -v –v 100
-
示例:
Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100
Monkey 测试2:adb shell monkey -p com.htc.Weather –s 10 100
-
2.安装,卸载测试
这项对web应用可能测得比较少,这一块很可能归拢到我在后面讲的适配性测试里面。在不同机型测试你们应用的安装,以及卸载,看看会不会出现问题;
这是个第三方手机助手蔓延的时代,那么发布到手机助手上,检查能不能装卸也是很重要的
3.在线升级
一个手机apk得顺应时代的需求,定期时不时的进行更新,在我第一份工作里,很重要的一个内容就是测试在线升级功能。
开发给你一个新版本,你得去测试安装卸载,以及功能流程
4.功能测试
你测试了你们apk的功能测试用例。涵盖三个方面:
4.1业务逻辑测试,测试你家公司apk的业务逻辑流的
4.2功能测试:测试你家apk的功能点的。
4.3与web端的交互测试。很多apk,比如淘宝啊,京东的app,会跟web客户端进行功能的交互,我想大家都用app来购物,那么你买的东西能正常在web端查看到,这就是你的测试点了。大家可以理解这个意思吧。
5.稳定性及异常性测试
稳定性及异常性测试主要两点;
5.1.交互性测试:客户端作为手机特性测试,包含被打扰的情况13种,来电,来短信,低电量测试等,还要注意手机端硬件上,如:待机,插拔数据线、耳机等操作不会影响客户端。
5.2.异常性测试:主要包含了断网、断电、服务器异常等情况下,客户端能否正常处理,保证数据正确性。
其实这一块又可以跟monkey牵扯到
6.性能测试
测试点跟web应该差不多,比如尖峰性能啊,压力测试啊,基准性能等等
1.尖峰性能,在一个时间点,你app的用户量出现井喷现象,有名的双11抢猫猫活动嘿嘿
2.压力测试,逐渐加压
3.基准,压服务器端接口及客户端在不同网络环境下响应速度。主要为258原则
在一块,我曾帮别人百度到loadrunner测试手机apk,很幸运,他成功解决了他的问题。我的想法或许,android端或许,注意是或许,将app的什么socket,tcp/IP映射到web端的测试工具上,比如jmeter,来进行测试,这是我的一个猜想。另外的大神或许会给我们好的测试方法意见
7.UI测试
界面易用,简介,符合用户者的口味。
8.适配性测试
也就是兼容性测试。
1.手机分辨率:主流的800480、854480、960540、1280720、1920*1080
2.不同手机版本,2.3,4.2,4.3等等,用户面尽量测的覆盖率高一点
3.手机系统,很多手机厂商喜欢在android原生系统的基础进行修改,你得测试啦
4.手机尺寸:3.4,5.0,4.7等等,这里我来插一下话,我在自学android开发的时候有时候会想,如何将自己开发的app调到适合这么多android机型。百分比是个不错的选择
9.电量及流量测试
用户除了你app的基础功能,适配,UI美观。还关心耗不耗流量跟电量。一般非唤醒状态,后台状态会比较低耗能。这个测试范围,得看你的公司定下的基准。广播貌似可以监控用电量,大家了解了可以留言告诉我学习学习哈哈
10.内存泄露
这个东西你可以用monkey抓到,当然也可以DDMS抓
11.回归测试工具
这个版块的测试工具为大家介绍monkeyrunner,robotium,appnium。
11.1monkeyrunner
该monkeyrunner工具提供了编写控制Android设备或仿真器从Android的代码之外程序的API。随着monkeyrunner,您可以编写安装一个Android应用程序或测试包,运行它,发送击键它,需要它的用户界面截图,并将截图工作站上的Python程序。
脚本用jython,what is jython?It is A mix of python and Java。因此可以用java api,当然你也可以扩展。
11.2appnium
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。
跨架构,native hybrid webview
跨设备:android ios
跨语言:java python ruby
跨app,多个app直接交互
native本地应用,如android的信息应用
hybrid native跟webview的结合
webview浏览器应用
11.3robotium
Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium对Activity,Dialog,Toast,Menu都是支持的。
robotium底层是android的instrument,通过Solo对象来创建一系列操作。但是只能android端,不像appnium跨设备。
这里扩展一下大家的知识面,如何定位元素,我总结了三个,还有其他方法,请大家留言。
针对坐标的:
1.monkey的recorder,之前的博客有详细讲
2.hierarchyviewer:sdk自带的工具。很多朋友会问商业机为什么不行,因为谷歌做了安全措施。无版本限制,如果你想测4.2以上版本也可以。注意,开发板或者模拟器可以用。
效率为获得一个界面的所有节点和图片时间为10s左右
3.uiautomator,4.2以上android版本的定位利器,可以真机哟。他也是可以做功能测试的
12.网络测试
2G/3G/4G/wifi,移动/电信/联通,保证APP在各种环境下的访问是否正常