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

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

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


相关文档:

C程序:某水王的发帖数超过总贴数的一半,找出之

//某水王的发帖数超过总贴数的一半,找出之
int find(int *ID, int N)
{
int candidate;
int nTimes, i;
for (i = nTimes = 0; i < N; i++)
{
if (nTimes == 0)
{
candidate = ID[i];
nTimes = 1;
}
else if (candidate == ID[i])
{
nTimes++;
}
else
{
nTimes--;
......

先安装系统 再分区 x300 没有光驱 安装win7 c盘分区

我给大家推荐一个 WIN7 下边的无损分区工具 Acronis Disk Director Suite
Acronis Disk Director Suite 下载地址
http://dl.iplaysoft.com/files/32.html
Acronis Disk Director Suite 注册机下载地址
注册机.rar
实在不放心,觉得注册机有毒的朋友可以使用以下序列号
LS6ZZ-YFQYY-667Z9-5ZQGP-P7WCP
5PRKN-9R4 ......

JAVA调用c++生成的DLL

    最近经常和公司做JAVA的兄弟们打交道,由于需要统加密算法,所以要求做一个加密的DLL文件供兄弟们调用,根据网上各位大虾们的经验,在加上个人在摸索过程中的体会,现在将流程以及个人心得贴上,以供以后漫漫程序生涯参考,如有不对的还请各位大力指正。
    第一步是编写java类, ......

S3C2410 Nand Flash控制器

    访问Nand Flash时需要先发出命令,然后发出地址序列,最后读/写数据;
    需要使用各个信号来分辨命令、地址、数据;
    S3C2410 的Nand  Flash控制器 提供了相关寄存器来简化这些操作:
           & ......

理解c中的序列点

理解c中的序列点
 
 
http://blog.chinaunix.net/u1/42826/showart_364176.html
让我们来看看下面的代码:
int i=7;
printf(”%d\n”, i++ * i++);
你认为会返回什么?56?no。正确答案是返回 49?很多人会问为什么?难道不该打印出56吗?在ccfaq中有非常详尽的解释,根本原因在于c中的序列 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号