单元测试我们应该注意什么!

今天老师在软件工程中讲了单元代码测试这一环节,首先给我们一个小函数,要我们分析它怎么样,代码如下:

int Largest(int list[], int length)
{
 int i,max;

// if(a.length=0)||(a=null)  加上这行代码后,是程序更加严谨。

//return 0;
 for(i = 0; i < (length – 1); i ++ )
    {
       if(list[i] > max)
          {
        max=list[i];
      }
     }
     return max;
}

针对这个函数我觉得有几点可以说的。

1.输入数组数值范围影响程序正常运行。

如输入 -1,-2,-3

          1, 2,  3

          0

          0   -1   -2

          257442424, 23133342, 4242424

2.加上一条判断语句(如上)会更健壮。

以下是网络上大师们上的总结,觉得有些道理,我给搬过来了。

1.模块接口测试

    2.模块局部数据结构测试

    3.模块边界条件测试。

    4.覆盖测试5.出错处理检测

    下面分别说明5点种的各个小点。

    1.模块接口测试中,我们应该注意。

    1.1模块输入参数的个数是否和形参相等。

    1.2模块输入参数的属性是否匹配。

    1.3模块输入参数的使用单位是否和形参的使用单位一致。

    1.4调用其他模块时,实际参数个数是否和被调参数个数一致。

    1.5调用其他模块时,实际参数属性是否和被调参数属性一致。

    1.6调用其他模块时,实际参数使用单位是否和被调参数使用单位一致。

    1.7在有多入口时,是否引用了当前入口中无关的参数。

    1.8是否修改了只作为输入值的形参。

    1.9各模块对全局变量的定义是否一致。

    1.10是否把某些常数当做变量定义来传递。

    如果有输入/输出,考虑下面:文件属性是否正确。

    open/close语句是否正确。

    缓冲区大小与记录值是否匹配。

    文件使用前是否已经打开

    文件结束条件是否正确。

    输入/输出错误处理是否正确。

    输入信息中是否有文字性错误信息。

    2.模块局部数据结构测试。

    2.1不正确或不相溶的类型说明。

    2.2不正确的初始化或缺省值。

    2.3不正确的变量名,如拼写错误和缩写错误。

    2.4上、下溢,地址异常。

    3.模块边界条件测试。

    边界测试是最最容易出错的地方,我们应该充分测试。

    这点我只举例说明

    比如,N维数组的第N个元素

    循环到最后一次

    这里我们也可以运用我们黑盒测试中的边界值方法,虽然用例上不一样,但是思想上是一致的。我继续说明下,为什么?

    首先,我们知道了内部逻辑,就不能用黑盒的方法去设计了。但是,我们可以这样去想象,一些可能和边界有关的数据类型,我们是不是应该考虑他的max,min,最长,最短,最高,最低。

    Z路径测试告诉我们是循环执行一次和不执行,但是循环最后一次呢?他能迭代出我们要的数据吗?打个问号,至少我测试时就发现最后一次有时候就取不到。

    4.覆盖测试运算符错用或误用。

    混合类型运算。大数据向小数据转换,没有加强转。

    初始化错误。

    计算精度不够。

    表达式中符号表达错误。

    不同数据类型进行了比较。

    逻辑运算符号和优先级使用错误。

    本身数据应该等,但是由于精度,却不相等。

    变量本身有错。

    不终止循环或终止不正确。

    迭代时不正确

    错误的修改了循环控制变量。

运行发生的错误是否很难理解

    指明的错误于实际的错误是否一致

    出错后,并没有处理便直接引入系统进行。

    异常处理是否得当。

    错误描述中是否提供了足够的相关定位信息。


 

原文地址:https://www.cnblogs.com/dxl12306/p/3580891.html