Android代码覆盖的黑盒测试
上一篇 /
下一篇 2012-09-13 09:15:53
/ 个人分类:杂谈
a {r#yk YMJ(\J0 目前还是有很多人在做android的黑盒或者灰盒测试,就我两年的经验实在捉襟见肘,不过还是想share一些东西出来给大家,共勉共勉。测试,功能测试很少人知道怎么才算是测试覆盖面全了呢?全功能覆盖?非也,代码全覆盖?非也。测试本身是无尽的,平时做的话还是自己要把握住优先级。所谓的全覆盖只是在理想世界存在的东西。这里要说的是某些公司或者leader真的需要黑盒测试给出代码覆盖率的话,也是有办法的。如下。
T?,B\pFg0{m+w/Plo+t$Q.{0 1、首先前提是你需要有被测产品的源码。(我表示这个必须)51Testing软件测试网As^Q0KK
on
51Testing软件测试网_J(R
mC-Mo B 需要环境android SDK,ant1.8.2,jdk1.6,eclipse android环境 Android SDK安装完毕
!I L&DEF:p.S051Testing软件测试网+@$~2AYFm9\q/T8_ Y 设置系统变量Path:sdk tools路径
riC E%E2m/N3R0*{F!L+e6B4sV0 Ant1.8.2安装完毕之后设置系统变量 Ant:ant下面bin文件夹的路径 Java1.6安装好之后 JAVA_HOME: C:\Program Files\Java\……\51Testing软件测试网F'Ar&rvC3Y8q+k
2p1j
O"Mc
Pi0 2、使用eclipse check out最新的版本source出来。并且建立一个针对于软件主版本的测试工程出来。如何在eclipse里面建立测试工程,自行google。 建立好测试工程之后,粘贴如下代码:
%P/v6|C8@a2qq0public class (函数名)extends ActivityInstrumentationTestCase2<Activity class name> $V,VYD \
N0_0ey0 { private <Activity class name> mActivity; U6Q7n1Yv
Q0 private Instrumentation mInstrumentation; 51Testing软件测试网b*i!vPB:x(w 构造函数 { super("testpackage name", Activity class name); } "p^ U3C1u{h0 protected void setUp() throws Exception { 1Cp5kK+sNY0 super.setUp(); 51Testing软件测试网e2WbD+P5S%v5V;? mInstrumentation = getInstrumentation();
A;oC}B7t1Fp0 mActivity = this.getActivity(); } {-e-~1G@o.S2R0 protected void tearDown() throws Exception { W)a&`fN(Pc/A(\0 super.tearDown(); } n!]]%IAr1i0 public void testdemo1() throws InterruptedException { 51Testing软件测试网edfK,ao4d{ Thread.sleep(30000);//程序执行的时间 单位毫秒 }} |
51Testing软件测试网R%Fz'e#d~ z&z 注:如果被测对象是service的话,android也提供了测试service的类,extends相关的类即可。之后代码可能有少量改变,具体参照SDK Doc。
r
^@^B
o"w051Testing软件测试网#oz4oC-i2kr_haO 3、接下来我们进行最主要的一步51Testing软件测试网-Q1a-lfg[m
(G?E:h3q0 A)创建我们程序的build.xmlcd <main project folder>android update project --path <目录>成功之后可以看到在主程序目录下面生成了一个build.xml。51Testing软件测试网Y"@ @L%p ce|@t6s
51Testing软件测试网L]:Jg#MX
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了。
&K5lIY__051Testing软件测试网{{)qKE@.d
51Testing软件测试网i"q6|6vDp 注:
U&Z!Q'`+i;]051Testing软件测试网
?)O+b`q
IfJp 1)如果发现编译的过程当中出现@override error。那么要注意jdk版本是不是1.6,另外环境变量路径是否设置正确。
$Me6w5];S z{051Testing软件测试网O3r
g]y ]M 2)如果编译过程当中出现not found symbols,那么需要添加主程序使用的额外的lib,将lib放入被测试程序下面的libs目录下面即可
+]8_8eD'[0?c"pA7f051Testing软件测试网}-i9?3?*xb!W7^:mL 3)如果没有emma.jar,那么可以升级你的sdk。或者去下载http://developer.android.com/sdk/installing.html#sdkContents。51Testing软件测试网G@{I"_.O9B
51Testing软件测试网
s&`!z0?j;AhUZm 4)关于report代码中会有三种颜色标识. 其中,绿色的行表示该行代码被完整的执行,红色部分表示该行代码根本没有被执行,而黄色的行表明该行代码部分被执行。黄色的行通常出现在单行代码包含分支的情况,例如上图中的 16 行就显示为黄色。51Testing软件测试网8U?7Sc&H
收藏
举报
TAG: