KOK球盘体育
当前位置: KOK球盘体育 > 单元作文 >

单元测试的意义 是什么?

时间:2020-03-09 15:01来源:未知 作者:admin 点击:
KOK球盘体育

当前网址:http://www.wassei.com/danyuanzuowen/2020/0309/639.html

  首先,我不是TDD的实践者,正常情况下我都是先码代码,最后,为了应付测试指标(比如,测试覆盖率) 才来添加测试用例。 另外,在写测试用例时,一般会用到 PowerMock 之类的测试框架去mock掉难以测试的部分,设定好一些返回值,最后再去判断获取的返回值与之前设定的返回值是不是一样的,感觉好傻。 所以,我现在的疑惑是,我这种做法的测试,仅仅是为了覆盖率,并没有其他追求了(连参数的边界值这种基本的要点,都不会去验证了,…

  单元测试是对软件基本组成单元进行的测试,如函数(function、procedure)或一个类的方法(method)。单元具有一些基本属性,如明确的功能、规格定义、与其他部分的接口定义等,可清晰地与同一程序的其他单元划分。

  在一种传统的结构化编程语言(比如C语言)中,要进行测试的单元一般是函数或子过程。在类似C++这样的面向对象的语言中,要进行测试的基本单元是类或类的方法。测试时基本单元不一定是指一个具体的函数或一个类的方法,也可能对应多个程序文件中的一组函数。

  单元测试的目的在于发现各模块内部可能存在的各种错误,主要包括以下几个方面:

  单元测试主要是针对系统最基本的单元代码进行测试,测试时主要从接口、独立路径、出错处理、边界条件和局部数据五个方面进行测试,如图10-1所示。通过这五个方面来检查模块内部是否存在错误。

  接口测试主要是对函数数据的输入和输出进行测试,主要包括以下几个方面的内容:

  1)调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配。

  2)所测模块调用子模块时,它输入给子模块的参数与子模块中的形式参数在个数、属性、顺序上是否匹配。

  【实例】形式变量sum被作为工作变量使用,当外部函数调用该函数时,外部变量很可能会覆盖该形式参数对应的内存区域,进而导致sum的结果不一致。

  2)数据耦合:如果两个模块之间只是通过参数交换信息,而且所交换的信息仅仅是简单数据类型,那么这种耦合称为数据耦合。

  3)印记耦合:如果数据结构作为参数进行传递,就称为印记耦合。印记耦合是数据耦合的一个变种。

  4)控制耦合:如果两个模块之间所交换的信息包含控制信息,那么这种耦合称为控制耦合。

  5)外部耦合:如果某个模块和外部的硬件环境产生交互操作,则产生外部耦合。

  6)共用耦合:当两个或多个模块通过一个公共区相互作用时,它们之间的耦合称为共用耦合。

  这类公共区可以是全程数据区、共享通信区、内存公共覆盖区、任何介质上的文件、物理设备等。

  7)内容耦合:内容耦合指的是一个模块和另外一个模块的内容直接产生联系,一个模块直接

  转移到另一个模块内部,一个模块使用另一个模块的内部数据,都会产生内容耦合。内容耦合是最高程度的耦合,是应该避免的。

  独立路径主要测试程序的运行路径是否存在错误,对基本执行路径和循环进行测试容易发现大量的错误,设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。主要包括以下几个方面的内容:

  1)运算的优先次序不正确或误解了运算的优先次序:如+和-运算符的优先级高于和操作符。

  3)不同数据类型的比较:如a为unsigned类型,b为int类型,执行while(ab)语句时很容易出现死循环,因为a为无符号类型。

  4)“差1错”,即循环的次数多了一次或少了一次:如for(i=0;i=100;i++),本来只希望循环100次,结果循环了101次。

  5)错误的或不可能的循环终止条件:如while(a0)这个条件永远不可能正确。

  6)关系表达式中不正确的变量和比较符:如将等号写成了赋值符,if(a==1)写成了if(a=1)。

  8)循环变量修改错误:while(i){循环体中错误地修改i的值,使得循环次数错误}。

  比较完善的单元设计要求能预见出错的条件,并设置适当的出错处理,以便在程序出错时,能对出错程序重新做安排,保证其逻辑上的正确性。主要包括以下几个方面的内容:

  1)出错的描述难以理解:如用户登录失败提示“Errorcode001”,该提示信息不易理解。

  2)出错的描述不足以对错误定位和确定出错的原因:如网络无法连接时,提示“网络连接失败”。

  4)对错误条件的处理不正确:如注册邮箱,提示输入的用户名格式错误,但还能正确地注册一个账号。

  边界条件测试主要测试函数对循环条件、控制条件、数据流等临界值的处理情况,主要包括以

  2)特别要注意数据流、控制流中等于、大于、小于确定的比较值时出现错误的可能性。

  局部数据结构测试主要测试对数据定义是否存在错误,包括以下几个方面的内容:

  1)检查不正确或不一致的数据类型说明:如将a的类型设置为unsighedint类型,如果将a0设置为结束的条件,那么一定会进入死循环,因为a永远不可能为负数。

  3)错误的初始值或错误的缺省值:如inta=65536,会导致a实际的值为0。

  5)不一致的数据类型:如inta和floatb,如果运行a=b,那么会导致精度丢失。

------分隔线----------------------------