做Android 系统/应用开发怎么可以不懂自动化测试

 我来答
QQMSD8
推荐于2016-07-06 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部

不懂自动化测试,也可以使用SDK中自带的自动化测试工具,Monkey ,只需要几个命令即可实现自动化测试 。


Monkey 就是SDK中附带的一个工具,该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。

Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。


标准的monkey 命令
[adb shell] monkey [options] <eventcount> , 例如:
adb shell monkey -v 500   产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含  Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY 的activity)。
上面只是一个简单的例子,实际情况中通常会有很多的options 选项。


monkey 的四大类功能:

  1. 常用选项

  2. 事件选项

  3. 约束选项

  4. 调试选项


1:常用选项

--help:打印帮助信息
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。


2.事件选项

-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200

--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100

--pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:

--pct-motion <percent> (滑动事件)、 --pct-trackball <percent> (轨迹球事件) 、 --pct-nav <percent> (导航事件 up/down/left/right)、 --pct-majornav <percent> (主要导航事件 back key 、 menu key)、 --pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、 --pct-appswitch <percent> (activity之间的切换)、 --pct-anyevent <percent>(任意事件)。


3.约束选项

-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;

-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了。


4.调试选项

--dbg-no-events:初始化启动的activity,但是不产生任何事件。

--hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

--wait-dbg:知道连接了调试器才执行monkey测试。


5.一个简单的monkey命令:

adb shell monkey -p com.xy.android.junit -s 500 -v 10000

表示产生时间序列的种子值:500, 产生 10000个事件 。



呦偒
2013-11-01 · TA获得超过100个赞
知道答主
回答量:172
采纳率:50%
帮助的人:162万
展开全部
其实不是的。 举个例子说,我们伟大的客户,疯狂地更换硬件配置,那么我们的驱动就跟着来回换,相关功能的c实现也要换,上层java对应稍作修改,碰上腻歪点的客户提出腻歪的需求,那么只有Good Luck了……幸运的整完了,好使了。Google及时发布Android的高版本,客户要跟风要升级,这时候突然发现,自己修改的系统相对于原生Android并非只是优化和添加XX功能,4个字:伤筋动骨。这个时候,完美升级几乎等于重写。避免这个悲剧的发生其实很简单,就是在完成开发任务之后,用cts测试一下符合不符合Android兼容性规范。倘若全部pass那么OK谢天谢地欢天喜地,若有fail项(不影响系统编译和相关功能实现,只是不符合兼容性规范),就要及时查看相关文件可以不可以修改,将其实现回归到Android正道。如若实在困难 ,就要提前和客户打好招呼,避免日后被他们扔回来,自己不好收拾。 Android自动化测试不单单只是cts,还有Monkey,ASE,Robotium,Instrumentationd ......都是非常实用的工具。比如应用中的UI测试,单个Activity测试,Instrumentationd就是最大的功臣。 android.test为我们提供了些什么? 举个例子来夸夸ActivityInstrumentationTestCase2 public T getActivity() { Activity a = super.getActivity(); if (a == null) { // set initial touch mode getInstrumentation().setInTouchMode(mInitialTouchMode); final String targetPackage = getInstrumentation().getTargetContext().getPackageName(); // inject custom intent, if provided if (mActivityIntent == null) { a = launchActivity(targetPackage, mActivityClass, null); } else { a = launchActivityWithIntent(targetPackage, mActivityClass, mActivityIntent); } setActivity(a); } return (T) a; } 通过getActivity()可以轻松的获得activity,肆意使用其中的方法,回避了无法实例化对象使用不了某类的方法的问题。在get之前, setActivityIntent(Intent) and/or setActivityInitialTouchMode(boolean), provide custom setup values to your Activity 。 我最近时间在接触camera这块,解决了几个bug,测了一下cts,意外的发现cts中,camera 的hardware test这块原来不符合兼容规范的fail项,全部都pass了。所以顿时很悔恨,为什么开始不先针对cts的结果来找bug出口,这个目标就锁定的很快,解决的效率会提高一倍。 简单说一下cts吧$ make cts //android源码编译好后,在编译cts 解压上一步生成的android-cts.zip 然后就可以进行测试了。详细的操作搜一下资料,网上相关资源很多。
CTS测试会自动生成相应的测试包,该包位于如下目录:
android-cts/repository/results
每个测试包中包含了如下文件;
cts_result.css
cts_result.xsllogo.gifnewrule-green.png
该包的测试情况都在 testResult.xml 文件中,通过查看该文件可以知道,那些是和 Android兼容的 还有一点,特别需要注意,随着android版本的更新,cts也在不断更新。如果你够好奇,可以试一试,同一系统的同一设备,用从r1到r5不同版本的cts都来测试一遍,会有意外的收获! 不懂测试,就不要说自己是优秀的开发人员。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大学作业题库
2015-08-31 · 知道合伙人互联网行家
大学作业题库
知道合伙人互联网行家
采纳数:149 获赞数:180
农民出身,单身一位。书写代码过10万行,没读过书。现任利得财富资深酱油人。

向TA提问 私信TA
展开全部
为什么要懂?你招个资深一些的应该会懂一些。在说了 开发和测试根本是两个岗位。开发的目标是把程序写得越来越好。 测试的目的是找到程序中的错误,自动化的目的是提高测试效率、降低人力消耗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式