单元测试(unit tesTIng),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
在一种传统的结构化编程语言中,比如C++,要进行测试的单元一般是函数或子过程。在像C++这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。
经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析(StaTIc analysis)和动态分析(Dynamic analysis)。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。
单元测试实施要点1. 模块接口
模块的接口保证了测试模块的数据流可以正确地流人、流出。在测试中应检查以下要点:
1) 测试模块的输入参数和形式参数在个数、属性、单位上是否一致。
2) 调用其他模块时所给出的实际参数和被调用模块的形式参数在个数、属性、单位上是否一致。
3) 调用标准函数时所用的参数在属性、数目和顺序上是否正确。
4) 全局变量在各模块中的定义和用法是否一致。
5) 输入是否仅改变了形式参数。
6) 开/关的语句是否正确。
7) 规定的I/O格式是否与输入输出语句一致。
8) 在使用文件之前是否已经打开文件或是使用文件之后是否已经关闭文件。
2. 局部数据结构。
在单元测试中,局部数据结构出错是比较常见的错误,在测试刚应重点考虑以下因素:
1) 变量的说明是否合适。
2) 是否使用了尚未赋值或尚未初始化的变量。 3) 变量的初始值或默认值是否正确。 4) 变量名是否有错(例如拼写错)。
3. 重要的执行路径。
在单元测试中,对路径的测试是最基本的任务。由于不能进行穷举测试,需要精心设计测试用例来发现是否有计算、比较或控制流等方面的错误。
1) 计算方面的错误:算术运算的优先次序不正确或理解错误;精度不够;运算对象的
类型不匹配;算法错;表达式的符号表示不正确等。
2) 比较和控制流的错误:本应相等的量由于精度造成不相等;不同类型进行比较逻辑
运算符不正确或优先次序错误;循环终止不正确(如多循环一次或少循环一次)、死循环;不恰当地修改循环变量;当遇到分支循环时,出口错误等。
4. 出错处理。
好的设计应该能预测到出错的条件并且有出错处理的途径。虽然计算机机可以显示出错信息的内容,但仍需要程序员对出错进行处理,保证其逻辑的正确性以便于用户维护。
5. 边界条件
边界条件的测试是单元测试的最后工作,也是非常重要的工作。毫件容易在边界出现错误。块进行测试时,需要开发两种模块:
6. 驱动模块
相当于一个主程序,接收测试用例的数据,将这些数据送到测试椁,输出测试结果。
7. 桩模块
也称为存根模块。桩模块用来代替测试模块中所调用的子模块,其进行少量的数据处理,目的是为了检验人口,输出调用和返回的信息。 提高模块的内聚度可以简化单元测试。如果每个模块只完成一种功能,对于具一块来讲,所需的测试方案数据就会显著减少,而且更容易发现和预测模块中的错误。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)