易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++单元测试理论精要(六)

2.1 可测性问题详解(2)
   
    接下来我们讨论重点问题:覆盖输入。一个函数,输入会有哪些呢?输入包括两方面:外部输入,内部输入。外部输入容易理解,就是函数外部可以设定的输入,包括参数,全局变量,成员变量。
    
   
    关键是内部输入。因为很少有文献讨论内部输入,对很多人来说,内部输入可能是一个陌生的词,我们首先来看看内部输入是什么。一个函数,对于调用底层函数获得的数据,是如何处理的呢?跟参数一样,也是分类处理。所以,测试时也要分类检测,这与参数没什么区别。这就是内部输入。
   
  
    内部输入有几种情形?一共有六种:自然输入、不可控、失真、难于初始化、静态输入,中断输入。
自然输入
 
   
    自然输入就是调用底层函数的实际代码,获得自然的计算结果。底层函数必须存在,可控,并且正确。对于自然输入,测试时并不是什么也不用做。为了检测程序是否对底层函数的各种可能输出做合适的判断和处理,需要让底层函数输出合适的数据,这就要通过设置合适的参数等数据来间接控制底层函数的输出。有时候,这个工作是很困难的,这就是难以初始化,后面有专门介绍。
不可控
   
    底层函数还是调用实际代码,但是底层函数的输出不符合测试需求。在这个例子中,底层函数的功能是取得环境温度,我们要检测程序是否对各种环境温度做了合适的处理,但是真实的环境温度不可能实时大幅变化,这就是不可控。不可控在单元测试当中是相当常见的,例如底层函数返回一个随机数、也是不可控,底层函数是用来连接网络的,可能无法控制它的各种状态,这些都是不可控。
失真
 
   
    底层函数调用的是桩代码。桩代码当然不能实现原有代码的功能,这就是失真。这个例子跟介绍不可控是同一个函数,不同的是,底层函数调用的是桩代码,一般的桩代码是什么也不做的,底层函数的返回值总是0,并且未输出环境温度,测试做不下去。失真是打桩造成的,是打桩的必然结果。可不可以通过修改桩代码来解决失真呢?有时候是可以的,有时候不行,后面会有进一步的介绍。
刚才我们讨论了失真。
难于初始化
    
   
  &n


相关文档:

C程序:判断链表是否有环

/*
这是个常见的面试题哦,总之我面试的时候遇到过, 当时没有答上来
回去后想出来下面的方法一,该法还有个附加优点,可以判断出链表在哪个地方形成环的(即如果想拆开这个环,从哪个地方断开)。
后来知道还有个经典算法,即使用两个指针,一快一慢向前试探,如果最终重合则链表有环,果然优美的算法。
*/
#inc ......

.NET C/S(WinForm)开发技巧点滴

花费了十天时间,为公司开发了一套简单的网络版的信息管理系统,功能主要有客户信息管理,员工信息管理,常用信息管理(各种信函打印、常用网址/常用电话等),公司简单的财务管理等。把一些点点滴滴的技巧在此记录下来,以备查用。
1.数据绑定。 DataReader 读取数据,用DataTable.Load(IDataReader)方法将数据加载到 DataTable ......

规范化的C++编程方法备忘录 C/C++算数运算:

    已经知道的,不说了...大家都知道的,可以问问,查查资料。这里又放些附加建议:
1.基本算数运算:
  既然计算机里没有真正的整数,那么计算机里也没有真正的算数运算。
    取值范围:
  设a和b是两个占一样位宽的无符号整数,这种整数可取到最大值M ......

S3C2410 Nand Flash控制器

    访问Nand Flash时需要先发出命令,然后发出地址序列,最后读/写数据;
    需要使用各个信号来分辨命令、地址、数据;
    S3C2410 的Nand  Flash控制器 提供了相关寄存器来简化这些操作:
           & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号