zoukankan      html  css  js  c++  java
  • 单元测试我们应该注意什么!

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

    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.覆盖测试运算符错用或误用。

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

        初始化错误。

        计算精度不够。

        表达式中符号表达错误。

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

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

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

        变量本身有错。

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

        迭代时不正确

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

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

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

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

        异常处理是否得当。

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


     

  • 相关阅读:
    linux主机安装配置chrony时间同步器
    LINUX正则表达式
    文件系统
    “好文章”链接-爬虫脚本
    优秀博客集
    负载均衡LVS(Linux Virtual Server)
    LNMP
    MySQL备份还原
    iptables--SNAT、DNAT实践
    MySQL 基础命令
  • 原文地址:https://www.cnblogs.com/dxl12306/p/3580891.html
Copyright © 2011-2022 走看看