本发明专利技术公开了一种单元测试方法及装置,涉及计算机领域。在进行单元测试前,先初始化被测数据和/或测试用例数据,从而使得测试过程中所涉及的数据均为初始化后的数据,大大降低甚至消除测试用例间的数据耦合,提高测试用例代码的健壮性,使每个测试用例相互独立,互不影响,从而提高单元测试效率。
【技术实现步骤摘要】
本专利技术涉及计算机技术,尤其涉及一种单元测试方法及装置。
技术介绍
目前,在进行开发过程中,通常使用测试用例进行单元测试,而使用测试用例进行单元测试的过程中,容易出现测试用例耦合的情况。测试用例间耦合是指两个或两个以上的测试用例之间存在相互影响,改变一个测试用例会导致其他测试用例运行不正常或测试结果发生变化的现象。避免测试用例之间的耦合是单元测试中非常重要的问题。测试用例间独立无耦合,会使测试工程的多个测试用例更加健壮,即使改变测试用例的执行顺序也不会影响测试结果。如果测试耦合在一起,即使在一个测试用例中的一个小的更新,可能也会导致其他测试用例的运行不正常,甚至引发意想不到的错误。另外,不同的运行环境,执行测试用例的顺序是不确定的。即在不同的运行环境中,同一测试用例,可能产生不同的结果。通常,在以下情况下,认为不同测试用例之间发生了耦合:(1) 一个测试用例直接使用其他测试用例的输出数据;(2) 一个测试用例未执行完毕,非正常的转到其他测试用例继续执行;(3)操作公共数据的函数接口未初始化的情况,多个测试用例同时调用了该函数接口 ;(4) 一个测试用例有多个入口,即测试用例的执行顺序是不确定的。在实际的单元测试中,测试用例之间的耦合经常出现,尤其在测试一些复杂的函数时,公共的数据和调用接口比较多,各个测试用例如果直接使用这些数据或接口,就造成了测试用例间的耦合。测试用例间的耦合,经常导致测试用例执行后的测试结果发生改变,导致程序异常发生未知错误,甚至导致程序崩溃。并且,在实际应用中,被测程序都是相对复杂,测试用例的构造也会相应的复杂,此时很难定位问题。
技术实现思路
本专利技术实施例提供一种单元测试方法及装置,以实现降低测试用例间的数据耦入口 ο一种单元测试方法,包括:初始化被测数据和/或测试用例数据;使用所述测试用例对所述被测数据进行单元测试。一种单元测试装置,包括:初始化单元,用于初始化被测数据和/或测试用例数据;测试单元,用于使用所述测试用例对所述被测数据进行单元测试。本专利技术实施例提供一种单元测试方法及装置,在进行单元测试前,先初始化被测数据和/或测试用例数据,从而使得测试过程中所涉及的数据均为初始化后的数据,大大降低甚至消除测试用例间的数据耦合,提高测试用例代码的健壮性,使每个测试用例相互独立,互不影响,从而提高单元测试效率。附图说明图1为本专利技术实施例提供的单元测试方法流程图;图2为本专利技术实施例提供的单元测试前准备工作流程图;图3为本专利技术实施例提供的单元测试装置结构示意图。具体实施例方式本专利技术实施例提供一种单元测试方法及装置,在进行单元测试前,先初始化被测数据和/或测试用例数据,从而使得测试过程中所涉及的数据均为初始化后的数据,大大降低甚至消除测试用例间的数据耦合,提高测试用例代码的健壮性,使每个测试用例相互独立,互不影响,从而提高单元测试效率。如图1所示,本专利技术实施例提供的单元测试方法,包括:步骤S101、初始化被测数据和/或测试用例数据;步骤S102、使用测试用例对被测数据进行单元测试。由于在步骤S102中进行单元测试前,先在步骤SlOl中对被测数据和/或测试用例数据进行了初始化,避免了其它数据或其它测试对本次单元测试的影响,降低了测试用例间的数据耦合。具体的,在步骤SlOl中,初始化被测数据和/或测试用例数据,具体包括:( I)初始化被测数据:首先查找到被测文件中定义的被测数据,主要为被测文件中的全局数据,这些数据是单元测试的重点。在确定被测数据后,即可对所确定的被测数据进行初始化,对于简单的被测数据,可以通过测试用例设定的初始化值进行初始化,对于复杂被测数据可以通过构造的函数进行,这样的好处在于,每次进行同一环境下的测试时,均可调用该函数进行初始化。在进行被测数据的初始化后,即可消除测试用例之间被测全局数据的耦合,从而使得先执行的测试用例不会影响后执行的测试用例。(2)必要时还需要初始化测试用例数据,具体包括:确定测试用户所涉及的测试公共数据;初始化测试公共数据。通常,在单元测试中,不同测试用例会用到一些相同的用于辅助测试的数据,称为测试公共数据。例如,同一模块的不同的接口都要对一个链表进行操作。那么对于这些接口测试时,所构建的测试用例也都要操作该链表。但是为了消除测试用例间的耦合性,每个测试用例在开始进行测试时,都要重新构造这样的数据,显然这样的测试效率是非常低的,为了解决这个问题,提高测试效率,需要构造一些测试公共数据,供不同的测试用例使用;首先从被测的整个文件或整个模块来确定需要构造的公共数据,通常可以从实际功能出发来构造数据,比如特定模块需要的协议报文数据,存储链表数据等。由于大多数情况下这些数据都比较复杂,所以不直接采取变量定义的方式(因为变量定义的方式需要占用大量的栈空间),通过编写函数来实现测试公共数据的构造较佳(函数中使用动态分配的方式来为复制数据分配堆空间)。测试用例中使用测试公共数据,提高了测试效率,但也容易出现数据耦合,造成测试用例之间的相互影响。因此,需要在使用每个测试用例前,调用相应初始化接口对测试数据进行初始化,从而保证测试数据使用前都经过了处理。除了初始化接口,针对测试公共数据还可以通过函数进行其它操作,例如,创建,查找,修改,删除等。构造这些函数的目的是方便在测试用例中对测试公共数据的操作,通过这种函数调用的方法,使测试用例的代码量大大减少,测试用例看上去精简易懂,而且非常利于后期的测试维护。下面,对单元测试过程进行具体说明:首先,如图2所示,在进行单元测试前,需要进行的准备工作包括:步骤S201、确定被测公共数据,即进行单元测试时的被测数据;步骤S202、构造被测数据的初始化接口 ;通过该初始化接口即可将相应的被测数据进行初始化,初始化的具体值根据实际测试环境确定,对于同一组被测数据的不同的测试环境,可以构造不同的初始化接口来进行初始化;步骤S203、确定测试公共数据,即进行单元测试时的测试用例数据;步骤S204、构造测试用例数据的初始化接口及操作函数。在进行上述准备后,即可进行单元测试,进行单元测试的过程如图1所示,其中,步骤SlOl的初始化被测数据可以通过调用步骤S202构造的被测数据初始化接口来实现,初始化测试用例数据可以通过调用步骤S204构造的测试用例数据初始化接口来实现;同时,可以通过步骤S204构造的操作函数来对测试公共数据进行相应的操作。最后,进行步骤S102,执行单元测试,输出测试结果。本专利技术实施例还相应提供一种单元测试装置,如图3所示,包括:初始化单元301,用于初始化被测数据和/或测试用例数据;测试单元302,用于使用测试用例对被测数据进行单元测试。其中,初始化单元301初始化被测数据,具体包括:确定所述被测数据中的全局数据;根据预先设定的初始化值,对被测数据中的全局数据进行初始化。预先设定的初始化值,可以根据测试环境进行设定。初始化单元301初始化测试用例数据,具体包括:确定测试用例所涉及的测试公共数据;初始化测试公共数据。其中,初始化单元301初始化测试公共数据,具体为:通过相应的初始化接口调用相应的初始化函数,初始化测试公共数据;初始化单元301初始化被测数据,具体为:通过相应的初始化接口调用相应的初始化函数,初始化被本文档来自技高网...
【技术保护点】
一种单元测试方法,其特征在于,包括:初始化被测数据和/或测试用例数据;使用所述测试用例对所述被测数据进行单元测试。
【技术特征摘要】
【专利技术属性】
技术研发人员:张晓华,胡志文,
申请(专利权)人:瑞斯康达科技发展股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。