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

 

接触Andorid有几个月了,一直认为做系统,应用开发根本不需要懂Android自动化测试之道,认为那都是测试人员需要掌握的东西,我们只要懂开发,只要读懂系统,根据客户的需求可以做相应的更改就可以了,只要熟悉了API,写出的应用可以实现某功能就可以了。其实不是的。

     举个例子说,我们伟大的客户,疯狂地更换硬件配置,那么我们的驱动就跟着来回换,相关功能的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<T extends Activity>

 

  1. public T getActivity() {    
  2.   
  3.     Activity a = super.getActivity();    
  4.   
  5.     if (a == null) {    
  6.   
  7.         // set initial touch mode    
  8.   
  9.         getInstrumentation().setInTouchMode(mInitialTouchMode);    
  10.   
  11.         final String targetPackage = getInstrumentation().getTargetContext().getPackageName();    
  12.   
  13.         // inject custom intent, if provided    
  14.   
  15.         if (mActivityIntent == null) {    
  16.   
  17.             a = launchActivity(targetPackage, mActivityClass, null);    
  18.   
  19.         } else {    
  20.   
  21.             a = launchActivityWithIntent(targetPackage, mActivityClass, mActivityIntent);    
  22.   
  23.         }    
  24.   
  25.         setActivity(a);    
  26.   
  27.     }    
  28.   
  29.     return (T) a;    
  30.   
  31. }    
  

 

 

 

     通过getActivity()可以轻松的获得activity,肆意使用其中的方法,回避了无法实例化对象使用不了某类的方法的问题。在get之前, setActivityIntent(Intent) and/orsetActivityInitialTouchMode(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.xsl 
logo.gif 
newrule-green.png 
testResult.xml 
该包的测试情况都在  testResult.xml 文件中,通过查看该文件可以知道,那些是和 Android兼容的

 

还有一点,特别需要注意,随着android版本的更新,cts也在不断更新。

如果你够好奇,可以试一试,同一系统的同一设备,用从r1到r5不同版本的cts都来测试一遍,会有意外的收获!



 

     不懂测试,就不要说自己是优秀的开发人员。尤其,Android为我们提供方便的自动化测试机制,还有什么理由说不需要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值