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

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

1.2 单元测试的目标和方法
    单元测试的目标是什么呢?就是完整检测代码单元的功能逻辑。找出代码单元本身的所有功能逻辑错误,具体来说,就是检测对数据的各种分类是否考虑全面,处理是否正确。单元测试并不是用来代替系统测试、性能测试的,它的目标相当明确,就是检测代码单元本身的功能逻辑错误。
   
   
    如果时间紧张,应该优先测试哪些代码呢?代码的功能逻辑越复杂,也就是算法密集度越高,可能的错误越多,越需要全面的测试,测试效益越大。所以,如果时间不够,应该优先测试算法密集的代码。80-20规则在软件开发中同样存在,也就是80%的代码错误可能存在于20%的代码中,20%的代码可能占用了80%的开发调试时间。这20%就是算法密集的代码,即使只对这些代码进行单元测试,也可以产生巨大的效益。代码复杂度和测试价值可以用工具来统计。
    测试方法主要有两种:静态和动态。静态方法主要由工具扫描和分析代码。动态方法则需要执行代码。
   
    静态方法能发现哪些错误呢?从静态测试的角度来看,代码错误可分为代码缺失,语义错误,一般错误。代码缺失是分类遗漏造成的,也就是程序员没有考虑到某些输入,没有编写相应代码。语义错误就是通过分析代码的语法含义,有可能判断的错误,例如,条件语句中将等于操作符写成了赋值操作符、数组越界、除零错。其他错误就是一般错误。对于语义错误,静态测试可能能够发现。对于代码缺失,静态测试无法发现,因为代码不存在,也就无从分析。其他错误,静态测试不能发现,因为工具不了解代码的设计功能。很显然,静态测试并没有真正检测代码的功能逻辑,根本不知道这个代码是干什么的,实现什么功能才对,只是通过分析代码的自然特性来检测错误,所以作用是很有限的。
   
    动态方法是这么做的:首先,依数据的分类列出输入,这个分类是跟程序功能紧密相关的,一个分类,相当于是一个功能点。然后,执行被测试代码,然后,判断输出是不是符合预期,如果不符合,就报告错误。只要测试数据是完整的,就可以完整覆盖代码的功能逻辑,
发现所有功能逻辑错误。静态测试所能发现的错误,如条件语句中将等于操作符写成了赋值操作符,数组越界,除零错,都会表现为功能不正确,动态测试当然也能发现。因此,要想达到基本的测试效果,


相关文档:

entry point to c/c++ or Fortran MEX file

http://www.mathworks.com/access/helpdesk/help/techdoc/apiref/mexfunction.html
mexFunction (C and Fortran) -
Entry point to C/C++ or Fortran MEX-file
C Syntax
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs,
const mxArray *prhs[]);
Fortran
Syntax
subrouti ......

C开发中堆和栈的差别

1,栈区(stack)—   由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 例如,声明在函数中的一个局部变量int b;系统自动在栈中为b开辟空间。只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。比如:
char* AllocStrfromStack ......

C/C++数组名与指针区别深层探索

作者:宋宝华 e-mail:21cnbao@21cn.com
1.    引言
指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:“数组名就是指针”。很幸运,我的大学老 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号