加载中…

加载中...

个人资料
赏味不足
赏味不足 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:94,960
  • 关注人气:386
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Android Code Coverage for Blackbox Test

(2012-03-12 13:24:34)
标签:

杂谈


 目前还是有很多人在做android的黑盒或者灰盒测试,就我两年的经验实在捉襟见肘,不过还是想share一些东西出来给大家,共勉共勉。

 测试,功能测试很少人知道怎么才算是测试覆盖面全了呢?全功能覆盖?非也,代码全覆盖?非也。测试本身是无尽的,平时做的话还是自己要把握住优先级。所谓的全覆盖只是在理想世界存在的东西。

  这里要说的是某些公司或者leader真的需要黑盒测试给出代码覆盖率的话,也是有办法的。如下。

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

  需要环境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.xml
cd <main project folder>
android update project --path <目录>

成功之后可以看到在主程序目录下面生成了一个build.xml。
B.为我们的测试程序创建build.xml
android update test-project -m <full path to main project> -p <path to test project>

C.启动Coverage
Cd <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 行就显示为黄色

Android <wbr>Code <wbr>Coverage <wbr>for <wbr>Blackbox <wbr>Test

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有