一种实现单元测试的方法及系统技术方案

技术编号:2841149 阅读:160 留言:0更新日期:2012-04-11 18:40
本发明专利技术为一种单元测试系统及方法,尤其是一种利用记录函数信息的方式,将一函数抽离开发环境进行单元测试,依据该函数的测试实例对该函数进行测试产生的测试覆盖率及测试报告,做为该函数的品质参考数据的单元测试系统及方法。其技术解决方案为:该方法包括以下步骤:1)记录待测试函数的函数信息、储存测试实例以及对应的预期结果;2)将所记录的待测试函数加载,并初始化;3)读出存储的测试实例与预期结果;4)依序测试读出的测试实例,得到测试结果;5)判断是否测完,否则返回4),是则进6);6)产生本次测试的测试覆盖率,比较预期结果与测试结果,产生本次测试的测试报告,输出测试覆盖率与测试结果。

【技术实现步骤摘要】

一种单元测试系统及方法,尤其是一种利用记录函数信息的方式,将一函数抽离开发环境进行单元测试,依据该函数的测试实例(test case)对该函数进行测试产生的测试覆盖率及测试报告,做为该函数的品质参考数据的单元测试系统及方法。
技术介绍
单元测试是程序设计领域中多种测试的其中一种。通常是为了测试程序中的一个单元,例如一个类别(class)、一个函数(function)等,由负责该单元的程序设计人员作测试。所测试的是,其所撰写的程序代码单元是否依据程序设计人员所设想的方式执行,从而产生出符合预期的结果。单元测试是程序设计很重要的一环,它起着问题报告(bug report)的作用,告诉我们程序代码中那里有错误。由于当我们完成或修改一个单元后都需要再进行单元测试,若程序代码还有问题的话会继续显示出来。随着软件的功能越来越强大,软件的程序代码也越来越冗长,软件的各模块在进行整合时所产生的臭虫(bug)也越来越多,因此在整合时要找出bug的复杂度也相对的提升,如果纯以人工的方式来找bug,往往仅能够发现该bug而无法提供更有价值的信息。为了提供更有价值的测试信息,有程序设计师会撰写单元测试的程序,但却无法离开其开发的环境来做测试,以致于万一在软件各单元进行整合时的开发环境稍有不同,一旦整合的结果不如预期,依然无法得知究竟是整合环境造成的影响,或是两个单元的接口(interface)在数据传递上出了问题,如是前者,那么先前所做的单元测试就失去了意义。另外,因为有单元测试的程序,那么就会需要有单元测试的测试实例来进行单元测试。不过测试实例能否测到多少部分的程序代码,也就是单元的测试覆盖率,就目前来说,还没有更好的测试方式。
技术实现思路
本专利技术为解决
技术介绍
中存在的上述技术问题,而提供一种可产生的测试覆盖率及测试报告做为该函数的品质参考数据,以提高软件品质的单元测试的方法及其系统。本专利技术的技术解决方案是本专利技术为一种实现单元测试的方法,其特殊之处在于该方法包括以下步骤1)首先记录待测试函数的函数信息、将待测试函数的测试实例以及与测试实例对应的预期结果储存在测试数据库中;2)接着将所记录的待测试函数加载,并且在加载后将待测试函数初始化;3)跟着由测试数据库中读出待测试函数的测试实例与测试实例对应的预期结果;4)将读出的测试实例依序对待测试函数进行测试,以得到测试实例的测试结果;5)判断测试实例是否全部测完,否则返回步骤4),是则进至步骤6);6)在所有的测试实例全部测试完成之后产生本次测试的测试覆盖率,并借助比较测试实例对应的预期结果与测试结果,产生本次测试的测试报告,输出测试覆盖率与测试报告。上述步骤6)之后还包括有步骤7)将测试时覆盖的程序代码完全相同的测试实例只保留一个,将其余的测试实例全数删除,把测试所产生的测试报告、测试覆盖率、以及删除后剩余的各测试实例的测试结果存入数据库中。上述步骤2)中待测试函数初始化的过程中发现待测试的函数有呼叫其它的函数,则以被呼叫的函数的回传值取代被呼叫的函数。一种实现上述的实现单元测试的方法的测试系统,其特殊之处在于该系统包括测试数据库模块110、函数注册模块120、函数加载模块130、函数测试模块140、结果比较模块150、结果记录模块160,函数注册模块120分别接入测试数据库模块110和函数加载模块130,函数加载模块130接入函数测试模块140,函数测试模块140接入结果比较模块150,结果比较模块150接入结果记录模块160,结果记录模块160接入测试数据库模块110,测试数据库模块110接入函数加载模块130。本专利技术利用记录函数信息的方式,将一函数抽离开发环境进行单元测试,根据该函数的测试实例对该函数进行测试,并且产生测试覆盖率及测试报告,通过本专利技术所产生的测试覆盖率及测试报告,可以获得一个量化的数值,使软件有一个品质上的指针,依次发现找出软件中的bug,以达到提高软件品质的效果。附图说明图1为本专利技术测试方法的流程图;图2本专利技术测试的系统框图;图3本专利技术实施例中的第一测试函数的程序代码;图4为本专利技术实施中的第一测试函数修改过后的程序代码;图5为本专利技术实施例中的执行本专利技术方法的过程;图6为本专利技术实施例中由第一测试实例测试第一测试函数产生的测试覆盖率示意图;图7为本专利技术实施例中由第一测试实例测试第一测试函数产生的测试报告;图8为本专利技术实施例中由第一与第二测试实例测试修改后的第一测试函数产生的测试覆盖率示意图;图9为本专利技术实施例中由第一与第二测试实例测试修改后的第一测试函数产生的测试报告;图10为本专利技术实施例由第三与第四测试实例测试第二测试函数产生的测试覆盖率示意图;图11为本专利技术实施例由第三与第四测试实例测试第二测试函数产生的测试报告;图12为本专利技术实施例由第三测试实例测试第二测试函数的测试覆盖率示意图;图13为本专利技术实施例由第四测试实例测试第二测试函数的测试覆盖率示意图。具体实施例方式参见图1,本专利技术的具体方法步骤如下 1)首先记录待测试函数的函数信息、将待测试函数的测试实例以及与测试实例对应的预期结果储存在测试数据库中;2)接着将所记录的待测试函数加载,并且在加载后将待测试函数初始化,该初始化的过程中发现待测试的函数有呼叫其它的函数,则以被呼叫的函数的回传值取代被呼叫的函数;3)跟着由测试数据库中读出待测试函数的测试实例与测试实例对应的预期结果;4)将读出的测试实例依序对待测试函数进行测试,以得到测试实例的测试结果;5)判断测试实例是否全部测完,否则返回步骤4),是则进至步骤6);6)在所有的测试实例全部测试完成之后产生本次测试的测试覆盖率,并借助比较测试实例对应的预期结果与测试结果,产生本次测试的测试报告,输出测试覆盖率与测试结果。7)将测试时覆盖的程序代码完全相同的测试实例只保留一个,将其余的测试实例全数删除,把测试所产生的测试报告、测试覆盖率、以及删除后剩余的各测试实例的测试结果存入数据库中。参见图2,本专利技术的系统包含有测试数据库模块110、函数注册模块120、函数加载模块130、函数测试模块140、结果比较模块150、结果记录模块160。其中测试数据库模块110负责储存函数注册模块120所记录的待测试函数之函数信息、被记录之待测试函数之测试实例、及测试实例对应的预期结果;函数注册模块120负责将待测试函数的函数名称、回传值与各参数的定义等函数信息存入测试数据库模块110中;函数加载模块130负责由测试数据库模块110读出透过函数注册模块120所储存的函数信息,依据读出的函数信息将待测试函数加载函数测试模块140中,并进行初始化,如初始化的过程中发现待测试的函数有呼叫其它的函数,则必需要以被呼叫的函数的回传值取代被呼叫的函数,这样可确保一次测试仅针对一个函数,这样如果出现问题,可断定是此函数本身问题。函数测试模块140负责读出储存在测试数据库模块110的待测试函数的测试实例及测试实例对应的预期结果,将读出的测试实例依序对待测试的函数进行测试,可以产生测试实例对应的测试结果,同时可以在所有的测试实例全部测试完成之后产生并输出所有测试实例对待测试函数进行测试的测试覆盖率;结果比较模块150负责比较由函数测试模块140产生的测试结果与测试结果对应的测试实本文档来自技高网
...

【技术保护点】
一种实现单元测试的方法,其特征在于:该方法包括以下步骤:1)首先记录待测试函数的函数信息、将待测试函数的测试实例以及与测试实例对应的预期结果储存在测试数据库中;2)接着将所记录的待测试函数加载,并且在加载后将待测试函数初始化;3)跟着由测试数据库中读出待测试函数的测试实例与测试实例对应的预期结果;4)将读出的测试实例依序对待测试函数进行测试,以得到测试实例的测试结果;5)判断测试实例是否全部测完,否则返回步骤4),是则进至步骤6);6)在所有的测试实例全部测试完成之后产生本次测试的测试覆盖率,并借助比较测试实例对应的预期结果与测试结果,产生本次测试的测试报告,输出测试覆盖率与测试结果。

【技术特征摘要】
1.一种实现单元测试的方法,其特征在于该方法包括以下步骤1)首先记录待测试函数的函数信息、将待测试函数的测试实例以及与测试实例对应的预期结果储存在测试数据库中;2)接着将所记录的待测试函数加载,并且在加载后将待测试函数初始化;3)跟着由测试数据库中读出待测试函数的测试实例与测试实例对应的预期结果;4)将读出的测试实例依序对待测试函数进行测试,以得到测试实例的测试结果;5)判断测试实例是否全部测完,否则返回步骤4),是则进至步骤6);6)在所有的测试实例全部测试完成之后产生本次测试的测试覆盖率,并借助比较测试实例对应的预期结果与测试结果,产生本次测试的测试报告,输出测试覆盖率与测试结果。2.根据权利要求1所述的实现单元测试的方法,其特征在于所述步骤6)之后还包括有步骤7)将测试时覆盖的程序代码完全相同的测试实例只保留一个,将其余的测试实例全数删除,把测...

【专利技术属性】
技术研发人员:陈淮琰王军
申请(专利权)人:无敌科技西安有限公司
类型:发明
国别省市:87[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1