App压力测试入门
(1)为了提高产品的稳定性;
(2)为了提高产品的留存率;
(1)首轮功能测试通过以后;
(2)下班后的夜间进行;
Monkey:在adb shell中,生成用户或系统的伪随机事件;
MonkeyRunner:通过API定义特定命令和事件来控制设备;
(1)Mo
nkeyRunner API:用来连接设备或模拟器;
(2)MonkeyDevice:提供安装,卸载应用,发送模拟事件;
(3)完成图像保存,及对比操作;
(1)crash:即崩溃,app在使用过程中,非正常退出;
(2)anr:应用无响应,application not response;
(1)安装Android sdk并配置环境变量;
(2)打开手机开发者模式;
(3)确定手机与电脑已经连接:adb devices
(4)安装测试APP:adb install package.apk
(5)发送压力指令:adb shell mo
nkey 1000,给手机发送10000个伪随机指令
(6)获取APP包名:adb logcat | grep START
(7)给指定包打压力:adb shell mo
nkey -p 包名 1000,给手机计算器app发送1000个伪随机指令
(1)延时参数:--throttle 1000,指定事件之间的间隔为1000毫秒;
(2)种子参数:-s 100,指定随机生成树的seed值为100,使得两次的随机操作事件完全一样,可以用来复现bug;
(3)触摸事件参数:--pct-touch 50,设置触摸事件的百分比为50%,剩余的事件会随机;
(4)动作事件参数:--pct-motion 30,设置动作事件的百分比为30%,剩余的时间会随机;
(5)轨迹球事件:--pct-trackball <percent>,设置轨迹球事件的百分比;
(6)基本导航事件:--pct-nav <percent>,设置基本导航事件的百分比,输入设备的上下左右;
(7)主要导航事件:--pct-majornav <percent>,设置主要导航事件的百分比,兼容中间键,返回键,菜单按键;
(8)系统导航事件:--pct-syskeys <percent>,设置系统导航事件的百分比,HOME,BACK,拨号及音量键;
(9)启动Activity事件:--pct-appswitch <percent>,设置启动activity的事件的百分比;
(10)不常用事件百分比:--pct-anyevent <percent>,设置不常用事件的百分比;
(11)忽略崩溃事件:--ignore-crashes <event-count>,设置忽略崩溃和异常;
(12)忽略超时事件:--ignore-timeouts <event-count>,设置忽略超时事件;
实例:adb shell mo
nkey -v -p 包名 --pct-touch 50 --pct-motion 50 --ignore-crashes -ignore-timeouts 1000
实例:
安装可以引起Crash 的APP
执行压力命令
析取CRASH 的Exception信息
在连线情况下,一般在晚上执行压力测试时,需要加上忽略崩溃事件和忽略超时事件,等第二天来之后,可以从adb log中过滤出CRASH和ANR异常的日志内容,然后在adb log中的最后一行获取seed值,用来复现问题。复制所获取的内容和monkey脚本到txt文本,发给开发定位具体问题原因。
找到ANR异常信息,发给开发
1、连线手机和电脑;
2、输入如下命令:
cd /data/anr/
ls
more traces.txt
adb shell mo
nkey -f <s
criptfile> <event-count>
(1)轨迹球事件:DispatchTrackball(int action,float x,float y),action参数,0代表按下,1代表弹起,x和y代表坐标点;
(2)点击事件:DispatchPointer(int action,float x,float y),action参数,0代表按下,1代表弹起,x和y代表坐标点;
(3)输入字符串事件:DispatchString(String text);
(4)启动应用事件:LaunchActivity(package,Activity);
(5)等待事件:UserWait(1000),1000毫秒=1秒;
(6)按下键值事件:DispatchPress(int keycode),keycode 66 回车键;
实例:在浏览器APP中输入一个字符串,重复点击100次
1、启动app;
2、点击输入框;
3、输入test;
4、点击回车键;
5、点击搜索按钮;
6、等待结果的出现;
7、点击clear按钮。
编写mook.s
cript脚本内容:
注意点:
1、点击位置坐标,可以使用UI Automator Viewer工具来获取,bounds[376,97][464,145],表示某个区域的从左上角到右下角的两个点的坐标;
2、app必须要允许被外部调起,这就需要在AndroidManifest.xml中的LauchActivity之下加入一个参数:android:exported=true;
软件测试教程之手机软件测试方法
第一:兼容性测试
针对App通常会考虑这些方面:
1)操作系统版本
包括Andoird版本,iOS版本
2)屏幕分辨率
android 800*480,960*640,1280*720(720p),1920*1080(1080p),2560*1440(2k).
对于iOS,考虑最近几代机型对应的分辨率即可.
3)不同厂家的ROM
不同厂家的ROM,大多厂家都对android 系统进行了定制、实际中会遇到例如调用相机和底层服务出现的不兼容问题以及摇一摇遇到的不同手机对于方向和重力传感器灵敏度设置不同的问题.
4) 网络类型
网络类型通常考虑wifi,2g,3g4g下的功能情况。另外针对m版网站考虑不同浏览器类型和屏幕分辨率.
第二:流量测试
在移动产品的测试中,很有必要对App使用的流量进行度量,大致来说,流量可以从用户使用的的相关性角度分为:一类是用户的操作直接导致的流量消耗;另一类是后台,即在用户没有直接使用情况下的流量消耗。
流量的测试方法:
1. 基于系统自带功能.
eg android proc/uid_stat/{uid} /tcp_send
android proc/uid_stat/{uid} /tcp_rcv
2. 通过API或者系统埋点来获取数据。
3. 通用的流量测试方法:手机抓包,或者wifi代理(Fiddler, Charles)。
常见的流量节省方法:
1. 数据压缩。
压缩包含接口文本数据的压缩,js文件的压缩及图片的压缩。
2. 不同数据格式的采用
例如采用JSON格式作为接口数据返回格式通常比XML格式要小。
3. 控制访问的频次
这个主要针对后台数据上报,PUSH消息检查等定时机制的。
4. 只获取必要的数据
有时候APP一页的内容非常多,而用户可能只会看一部分,过多的从后台拉去数据就是浪费,所以可以采用分屏加载或者懒加载的方式来减少流量消耗。
5. 缓存
可将图片,js等数据暂存起来,但由于手机存储空间有限,也需要控制整个缓存大小,并给用户提供清理缓存的选项。
6. 针对不同网络类型设计不同的访问策略
有些APP不同的网络类型返回的内容不一样。
第三:电量测试
在电器电池技术没有取得巨大突破前提下,这方面始终会存在一些瓶颈,如果一些App架构设计的不好,或者代码偶缺陷,就可能导致电量消耗比较高,所以电量测试也是很重要的。
工具 GSam Battery Mo
nitor Pro.
第四:弱网络测试
移动互联网产品相比PC互联网产品,有一个特点是前者使用的网络比较多样,除了Wif之外,很多时候是在移动网络下使用的,移动网络遇到的情况又比较复杂,比如地铁、隧道、 体育 场等。所以网络不稳定的情况是比较容易发生的,很多情况下App的一些问题是在复杂的网络情况下才会暴露,与其让用户发现和投诉这些问题,不如我们在测试阶段尽量模拟这样的网络情况,及早发现和修复这些问题。
工具:
1. Windows下的Network Delay Simulator
2. Mac下的Network l
ink Conditioner
第五:稳定性测试
在保证基本功能正确基础之上,App的稳定性就显得非常重要,如果一个App经常出现闪退或者卡死,那么用户体验就会受到很大伤害,在有其他竞争产品的情况下很容易造成用户的流失。
第六:安全测试
包括安装包的安全测试(能否反编译代码、安装包是否签名,完整性校验,权限设置检查等)。
敏感信息测试(数据库,日志,配置文件)。
软键盘劫持(金融类APP登录页面的用户名密码输入框)、
账户安全(密码是否明文,密码传输是否加密,账户输入错误次数过多锁定,同时会话提醒, 注销机制)
数据通信安全(关键数据是否散列或加密,关键连接是否使用安全通信,是否对数字证书合法性进行验证,是否校验数据合法性。
组件安全测试。
服务器端接口测试(SQL注入测试、XSS跨站脚本攻击, CSRF跨站请求伪造,越权访问等)。
第七:环境相关的测试
在实际项目中,有一些缺陷我发现是和App所处的运行环境相关的,所以设计测试的时候,要多考虑这些场景,比如:
1)干扰测试
收到电话、收到短信、收到通知栏消息、无电提示框弹出、第三方安全软件告警弹出。
2)权限测试
一些用户在实际使用App的时候回有意识阻止某些功能。例如有的用户感觉让某个App访问电话本或者相册可能泄漏隐私,就在手机中设置了禁止了该App访问相册的权限。
3)边界测试
手机环境本身也有其边界情况需要在测试中覆盖。常见的场景有:
可用存储空间过少、没有SD卡/双SD卡、飞行模式、系统时间有误(晚于和早于标准时间)、第三方依赖(比如我们的App依赖第三方App,但是现在第三方App没有安装或者版本过低的测试情况)。
4)Android定位测试
用白盒方式模拟
手机软件测试的基本流程?
手机软件测试的基本流程:
1、需求分析阶段:阅读需求,理解需求,分析需求点,参与需求评审会议。
2、测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围,进度安排,人力物力分配,整体测试策略的制定。
3、编写测试用例:适当的了解设计,搭建测试用例框架,根据需求和设计编写测试用例。
4、测试执行阶段:搭建环境准备数据,执行预测试然后进入正式测试(系统测试、回归测试、交叉测试、自由测试),bug管理直到测试结束。
5、输出测试报告:输出测试报告,确认是否可以上线。
扩展资料
软件测试方法
1、动态测试
计算机动态测试的主要目的为检测软件运行中出现的问题,较静态测试方式相比,其被称为动态的原因即为其测试方式主要依赖程序的运用,主要为检测软件中动态行为是否缺失、软件运行效果是否良好。
2、黑盒测试
黑盒测试,顾名思义即为将软件测试环境模拟为不可见的“黑盒”。通过数据输入观察数据输出,检查软件内部功能是否正常。测试展开时,数据输入软件中,等待数据输出。数据输出时若与预计数据一致,则证明该软件通过测试。
3、白盒测试
白盒测试相对于黑盒测试而言具有一定透明性,原理为根据软件内部应用、源代码等对产品内部工作过程进行调试。
测试过程中常将其与软件内部结构协同展开分析,最大优点即为其能够有效解决软件内部应用程序出现的问题,测试过程中常将其与黑盒测试方式结合,当测试软件功能较多时,白盒测试法亦可对此类情况展开有效调试。
一个新手学手机软件测试,大概要学多久?学出来各位觉得用处大不大?有前途吗?
英语是第一位的,当然不是很难的。case交流都是邮件,偶尔有口语。
学习的话3-5个月足够了,而且现在好像没有专门培训手机测试的,应该是整个的测试知识。
学习还是有用的,很多人都觉得学出来上当了,自己学学也都学会了。我首先怀疑的是他们的毅力,能坚持每天学几个小时。只怕是自己一段时间又去培训机构了。之所以觉得学的东西不多,个人认为一是测试里该学的东西太多了,二是自己比没有学过的人更懂得什么是测试了,会的都是简单的就是这个道理。
前途看好,不管别人怎么说,大环境怎么用,至少我还是看好的!
以上的文章内容App压力测试入门就是小编最近整理出来的,大家可以互相讨论吐槽发表自己的观点哦~!查看更多相关文章请访问学分高考(本文合计6697字)