代码覆盖从简到繁(二)

发表于:2011-6-07 10:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:周京生(CSDNblog)    来源:51Testing软件测试网采编

  自从上一篇博客《代码覆盖率从简到繁(一)》以来,很久没有再写相关的内容了,今天再继续一篇,呵呵!我们知道,根据覆盖度量单元的不同,代码覆盖可以分为很多种,如:语句覆盖、判定覆盖、条件覆盖、路径覆盖等等,Visual Studio(2005,2008 和 2010)系列工具中所采用的是语句覆盖(statement coverage),也被称为block coverage。相对于其它覆盖而言,block覆盖操作和分析简单,是实际工程中比较常用的一种覆盖测试工具。那么究竟一个block是如何定义的呢? block与代码行之间存在着对应关系吗?先来看看下面一个例子:

  首先,自定义一个简单的C#函数GetInteger() 作为接下来被测试和代码覆盖收集的对象:

view plaincopy to clipboardprint?
class Program  
{  
    ...  
 
    public int GetInteger(int arg1, int arg2)  
    {  
        if (arg1 > 0 && arg2 < 0)  
        {  
            return 0;  
        }  
        else 
        {  
            return 1;  
        }  
    }  
}

  然后, 针对这个GetInteger编写一个简单的单元测试用例,输入的数据组合为 (arg1=1, arg2=-1)

view plaincopy to clipboardprint?
[TestMethod]  
public void GetIntegerTest()  
{      
   Program target = new Program();      
   int expected = 0;       
   int actual = target.GetInteger(1, -1);      
   Assert.AreEqual(expected, actual);  
}

  下面执行GetIntegerTest测试,看看这个用例到底覆盖了GetInteger中的哪些代码。执行的代码覆盖结果如下图所示:

  Visual Studio使用不同的颜色来区分不同的覆盖结果:

  ● 淡蓝色:表示整行代码都被执行到了;

  ● 米色: 表示这行中的部分block被执行了;

  ● 红棕色:表示整行代码都没有被执行;

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号