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

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

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


相关文档:

转载:Hadoop 应该用C++实现,而不是Java

http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html
Sunday, May 10, 2009
Hadoop should target C++/LLVM, not Java (because of watts)
< type="text/javascript">
digg_url="http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html";
Over the years, ......

汉诺塔算法的递归与非递归的C以及C++源代码



汉诺塔算法的递归与非递归的C以及C++源代码
By Minidxer | January 30, 2008
汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。
开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上 ......

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

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

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

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

JAVA调用c++生成的DLL

    最近经常和公司做JAVA的兄弟们打交道,由于需要统加密算法,所以要求做一个加密的DLL文件供兄弟们调用,根据网上各位大虾们的经验,在加上个人在摸索过程中的体会,现在将流程以及个人心得贴上,以供以后漫漫程序生涯参考,如有不对的还请各位大力指正。
    第一步是编写java类, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号