Android代码覆盖的黑盒测试

目前还是有很多人在做android的黑盒或者灰盒测试,就我两年的经验实在捉襟见肘,不过还是想share一些东西出来给大家,共勉共勉。测试,功能测试很少人知道怎么才算是测试覆盖面全了呢?全功能覆盖?非也,代码全覆盖?非也。测试本身是无尽的,平时做的话还是自己要把握住优先级。所谓的全覆盖只是在理想世界存在的东西。这里要说的是某些公司或者leader真的需要黑盒测试给出代码覆盖率的话,也是有办法的。如下。

  1、首先前提是你需要有被测产品的源码。(我表示这个必须)

  需要环境android SDK,ant1.8.2,jdk1.6,eclipse android环境  Android SDK安装完毕

  设置系统变量Path:sdk tools路径

  Ant1.8.2安装完毕之后设置系统变量  Ant:ant下面bin文件夹的路径  Java1.6安装好之后  JAVA_HOME: C:\Program Files\Java\……\

  2、使用eclipse check out最新的版本source出来。并且建立一个针对于软件主版本的测试工程出来。如何在eclipse里面建立测试工程,自行google。  建立好测试工程之后,粘贴如下代码:

public class (函数名)extends ActivityInstrumentationTestCase2<Activity class name>
  {        private <Activity class name>  mActivity;       
            private Instrumentation mInstrumentation;      
      构造函数 {                super("test package name", Activity class name);        }    
      protected void setUp() throws Exception {            
       super.setUp();            
       mInstrumentation = getInstrumentation();            
       mActivity = this.getActivity();        }     
       protected void tearDown() throws Exception {         
        super.tearDown();        }     
     public void testdemo1() throws InterruptedException {          
       Thread.sleep(30000);//程序执行的时间 单位毫秒        }}

  注:如果被测对象是service的话,android也提供了测试service的类,extends相关的类即可。之后代码可能有少量改变,具体参照SDK Doc。

  3、接下来我们进行最主要的一步

  A)创建我们程序的build.xmlcd <main project folder>android update project --path <目录>成功之后可以看到在主程序目录下面生成了一个build.xml。

  B)为我们的测试程序创建build.xmlandroid update test-project -m <full path to main project> -p <path to test project>C.启动CoverageCd <path to test project>Ant coverage如果这步成功,我们可以在测试程序下面看到一个coverage的文件夹。里面就是一个非常强大的report了。

  注:

  1)如果发现编译的过程当中出现@override error。那么要注意jdk版本是不是1.6,另外环境变量路径是否设置正确。

  2)如果编译过程当中出现not found symbols,那么需要添加主程序使用的额外的lib,将lib放入被测试程序下面的libs目录下面即可

  3)如果没有emma.jar,那么可以升级你的sdk。或者去下载http://developer.android.com/sdk/installing.html#sdkContents。

  4)关于report代码中会有三种颜色标识. 其中,绿色的行表示该行代码被完整的执行,红色部分表示该行代码根本没有被执行,而黄色的行表明该行代码部分被执行。黄色的行通常出现在单行代码包含分支的情况,例如上图中的 16 行就显示为黄色。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-21 14:27:54

Android代码覆盖的黑盒测试的相关文章

android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件?

问题描述 android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件? 如题,手机A开了热点,手机B打开Wifi连接上了A.那么当B关闭Wifi按钮时,A怎么实时感知到.有没有实现的代码.方法.求大神们解救哦哦!!!!! 解决方案 // 当网络变化的时候系统会发出一个广播 Broadcast,只要在程序中注册一个广播接收器 BroadcastReceiver,并在 IntentFilter 中添加相应的过滤,这样一旦网络有变化,程序就能监听到 public static fina

IBM Rational Application Developer代码覆盖工具入门简介

为您的 Java 程序生成代码覆盖统计数据 简介:代码覆盖率工具是软件测试过程中使用到的一个重要的工具,因为它提供了一个关于程序被测 试用例覆盖程度的观点.本文向您展示了怎样使用 IBM Rational Application Developer 中提供的代码覆盖工具,来为 Java 程序生成测试的覆盖率结果,并提供了关于怎样分析结果以 改进测试的信息. 什么是 Rational Code Coverage 特性? 代码覆盖率是软件测试的一个 重要方面,对于一个构件的总体系统测试来说可能是一个

Android 代码JIT友好度检测工具_Android

利用周末的时间,写了一个检测Android代码JIT友好度的工具,取个名字为DroidJitChecker.希望可以帮助大家快速发现有坏味道的代码,并且及时修正. 名词解释 JIT:JIT全称Just-in-time compilation.意思为实时编译,是JVM中一种优化技术,对频繁调用并且符合条件的方法进行优化将字节码翻译成机器代码,提升执行效率. 方法大小:每个方法的方法体实现都可用字节作为单位进行衡量,通常情况下,方法体越大,其方法大小也越大. JIT友好:通常方法体实现越小越简单,越

Android代码入侵原理解析(一)

Android代码入侵原理解析(一)           1.代码入侵原理 代码入侵,或者叫代码注入,指的是让目标应用/进程执行指定的代码.代码入侵,可以在应用进行运行过程中进行动态分析,也是对应用进行攻击的一种常见方式.我把代码入侵分为两种类型:静态和动态.静态代码入侵是直接修改相关代码,在应用启动和运行之前,指定代码就已经和应用代码关联起来.动态代码入侵是应用启动之后,控制应用运行进程,动态加载和运行指定代码. 2.静态代码入侵 静态代码入侵,有直接和间接的手段. 直接手段是修改应用本身代码

android代码布局-android 代码中设置控件的垂直居中和两个控件之间的距离。

问题描述 android 代码中设置控件的垂直居中和两个控件之间的距离. 因为数据是动态的 所以所有的控件和布局都是在java代码里面设置 怎样才能让一个控件垂直居中 还有两个控件之间的距离又是怎么设置的啊 求高手指点啊 最好能给点代码 我是新手 说的太笼统了 看不太懂 谢谢了 解决方案 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT,

android 代码中怎么判断一个TextView有多少行?

问题描述 android 代码中怎么判断一个TextView有多少行? android 代码中怎么判断一个TextView有多少行? 解决方案 android.text.Layout包含此信息和更多final int lineCount = textView.getLayout().getLineCount(); 解决方案二: android.text.Layout包含此信息和更多final int lineCount = textView.getLayout().getLineCount();

在已知某一平台硬件功率的情况下,计算android代码的总能耗

问题描述 在已知某一平台硬件功率的情况下,计算android代码的总能耗 如果已知一段开源代码 ,通过什么办法在计算出所消耗的能耗呢,或者说怎样看出每条代码对应调用了什么硬件和调用时间,有研究过的前辈么,求救 解决方案 调用了什么硬件是不能看到的因为Android基于java,java不能直接调用硬件,可以通过汇编语言.计算机组成原理和操作系统这些课程大概知道是怎么调用的.调用时间可以通过前后获取系统时间相减大概知道花了多少时间. 解决方案二: 这个还真挺偏的.我也想知道,同关注. 解决方案三:

多应用-求一套Android代码生产多个应用的方法

问题描述 求一套Android代码生产多个应用的方法 我们目前有一个应用,现在需要多部署几个功能基本类似的应用,不同的地方包括欢迎页面.桌面图标.应用名称等,请问这个怎么实现 解决方案 补充 用的是Eclipse开发的 解决方案二: 如果只是改动UI相关于东西,可以通过工程引用的方式实现. 把通用的那部分逻辑和UI抽成一个独立的Android工程(例如叫B),然后把这个工程当作一个library(这个可以在Properties里面设置). 其他的多个换UI的部分也分成多个独立Android工程(

android 代码中禁用sim卡

问题描述 android 代码中禁用sim卡 android 代码中禁用sim卡,但又不屏蔽数据网络,要怎么实现? 解决方案 禁用sim卡,如何和基站通讯连接到网络呢?好比不许你带钥匙,又要允许你进入房间,这不是矛盾么?