CN1952818B - 自动检验测试结果的程序单元测试方法 - Google Patents

自动检验测试结果的程序单元测试方法 Download PDF

Info

Publication number
CN1952818B
CN1952818B CN2005101006576A CN200510100657A CN1952818B CN 1952818 B CN1952818 B CN 1952818B CN 2005101006576 A CN2005101006576 A CN 2005101006576A CN 200510100657 A CN200510100657 A CN 200510100657A CN 1952818 B CN1952818 B CN 1952818B
Authority
CN
China
Prior art keywords
test
rreturn value
testing
test case
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2005101006576A
Other languages
English (en)
Other versions
CN1952818A (zh
Inventor
李巧珍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Konka Group Co Ltd
Original Assignee
Konka Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Konka Group Co Ltd filed Critical Konka Group Co Ltd
Priority to CN2005101006576A priority Critical patent/CN1952818B/zh
Publication of CN1952818A publication Critical patent/CN1952818A/zh
Application granted granted Critical
Publication of CN1952818B publication Critical patent/CN1952818B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种自动检验测试结果的程序单元测试方法,在测试用例中通过不同的桩函数为被测单元构建的各种测试环境,以字符串或者有代表性的数字设定标准路径,同时针对有返回值的被测单元在相应的测试用例中设定标准返回值。测试控制模块按顺序依次控制运行每个测试脚本,每个测试用例控制被测单元走相应的分支,并通过被测单元的插桩函数将走过的分支记录下来,测试用例在控制被测代码运行时,记录下测试代码运行得出的返回值,然后通过自动检测模块比较检测路径是否覆盖完全、返回值是否正确。本发明实现了自动检验单元测试的路径覆盖情况和返回值的正确性,大大提高了单元测试的测试效率,并且可以方便的进行回归测试。

Description

自动检验测试结果的程序单元测试方法
技术领域
本发明涉及程序单元测试领域,尤其是能够对测试结果进行自动化检测的程序单元测试方法。
背景技术
单元测试是集中对由源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能,检查各程序模块的返回值是否正确。单元测试检查每一个控制结构的分支以确保完全覆盖和最大可能的错误检查。
有些单元测试方法,虽然设计了一个控制模块来控制程序的被测代码的运行,有限的提高了编写测试代码的效率和回归测试的效率。但是,对单元测试执行结果的检查却没有实现自动化。目前的对单元测试执行结果的检查都是通过程序单步跟踪或者输出测试结果来进行人工检查的方式来进行,单步跟踪操作繁琐、工作量大,而人工的检查有以下三个不足的地方:
一、对测试路径覆盖的完全程度、测试结果和返回值等用人工的方法检测要花费很大的精力,检查速度很慢。
二、检查是人工的,由于主观因素的影响,很容易因为人的大意而产生误判。
三、回归测试很不方便。单元测试是为了尽可能多的发现程序的错误,发现错误后,为了修正错误,是需要对程序代码进行修改的。每当程序代码被修改的时候,程序配置的某些方面(如文档或者数据)也会被修改。回归测试是对修改过的程序再重新测试一遍,以保证修改是正确的,同时保证所做的修改不会带来不可预料的行为或者新的错误。由于测试结果不能自动检测,因此对于错误修改后的回归测试过程就会十分繁琐。必需将测试正确的测试用例再重新测试一遍,重新检查测试结果,以确保修改是正确的,并且没有引入其他的错误,没有由于失误造成误判而错过了某些问题的发现。
此外,现有的测试方法还存在另一个弊端,当测试完成、发布版本的时候,还需要从程序代码中删除大量的测试代码,这个过程往往复杂而且极易出错。
发明内容
本发明所要解决的技术问题在于提供一种自动检验测试结果的程序单元测试方法,自动检验单元测试的路径覆盖情况和返回值的正确性,提高单元测试的测试效率,避免人工检测的低效率和高误差率的弊端。
为解决上述技术问题,本发明所采用的技术方案是:
提供一种自动检验测试结果的程序单元测试方法,测试控制模块控制主测试过程,测试脚本由多个测试用例组成,该测试方法包括以下的步骤:
(a).在构成测试脚本的每个测试用例中根据需要通过插桩函数生成被测代码运行的一种环境,控制被测代码的运行;
(b).在每个测试用例中预设一个标准路径,代表在本测试用例环境下被测代码要走的分支的先后次序和走的总分支数,同时根据需要在相应的测试用例中预设一个本测试用例环境下被测代码应该返回的标准返回值;
(c).测试控制模块执行测试脚本,按顺序依次运行该测试脚本的测试用例;
(d).测试控制模块判断测试用例中是否有标准返回值,如果有,转步骤(e),如果没有,转步骤(f);
(e).当测试用例控制被测代码运行时,记录下被测代码运行得出的实际返回值;
(f).测试用例按顺序依次控制被测代码走相应的分支,并通过被测代码的插桩函数将走过的分支记录下来;
(g).当检测到测试脚本运行结束时,通过自动检测模块比较检测路径是否覆盖完全,如果覆盖完全则提示成功信息,如果没有覆盖完全,则提示出覆盖不完全信息,同时自动检测模块比较定义的标准返回值与实际返回值是否相符,如果完全相符则提示成功信息,如果不完全相符,则提示出返回值不符信息;
(h).测试控制模块判断是否所有的测试脚本都已经被执行完毕,如果还有未被执行的测试脚本,测试控制模块执行下一个测试脚本,转步骤(c),如果检测到所有的测试脚本都已经执行完毕,测试结束。
本发明的有益效果是:实现了单元测试的全自动,自动检验单元测试的路径覆盖情况和返回值的正确性,大大提高了单元测试的测试效率,避免了由于人工的误判而带来的失误,并且可以方便的进行回归测试。
附图说明
图1是测试工程的整体结构图。
图2是测试自动检验的流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面与附图结合说明本发明的具体实施方式。
本发明的技术方案大致可分为四个部分:
第一个部分为测试控制模块,控制整个单元测试的进行。
第二个部分是测试脚本,测试脚本由很多个测试用例构成,这些测试用例是通过不同的插桩函数为被测单元构建的各种测试环境,测试用例越丰富,被测单元就会被测试的越充分。测试控制模块按顺序依次执行各个测试脚本, 控制整个测试过程。测试用例和被测代码的运行结果通过测试结果自动检测模块来检测其正确性。
第三个部分是测试自动检测模块,负责对测试结果进行自动检测,如路径覆盖是否完全,如果被测单元有返回值,则需要判断返回值是否正确。
第四个部分就是被测单元,被测单元在测试过程中只需要在相应分支增加一个插桩函数,不需要增加代码,当代码测试完成,发布版本的时候,只需要把插桩函数定义成空函数就可以了。
如图1测试工程的整体结构图所示,测试控制模块控制主测试过程,测试脚本由很多个测试用例组成,每个测试用例都根据需要通过插桩函数构建被测代码运行的一种环境,来控制被测代码的运行,在每个测试用例中设定一个标准路径,这个标准路径可以以字符串或有代表性的数字等多种方式设定,代表在本测试用例环境下被测代码要走的分支的先后次序和走的总分支数。运行测试脚本的时候,每个测试用例控制被测单元走相应的分支,并通过被测单元的插桩函数将走过的分支记录下来,测试脚本运行结束时,通过自动检测模块检测路径是否覆盖完全。如果覆盖完全则报成功信息,如果没有覆盖完全,则报出未覆盖的分支位置。
如果被测单元有返回值,则在测试用例中设定一个标准的正确的返回值,代表在本测试用例的环境下被测代码执行后返回的正确结果。测试用例在控制被测代码运行时,记录下测试代码运行得出的返回值,在自动检验过程中将通过自动检测模块比较标准返回值和测试代码运行得出的返回值,检测测试代码运行得出的返回值是否正确。
如图2测试自动检验的流程图所示:
(1)在测试脚本中定义一个标准路径数组,记录下测试用例依次要走的被测单元分支路径1、路径2、路径3……路径n,同时定义一个实际执行路径数组,这个数组在测试过程中记录下被测单元在测试用例构建的环境下实际所走的分支路径1′、路径2′、路径3′……路径n′;然后在被测代码的 每一个分支做一个插桩函数(这个插桩函数将在发布版本的时候重新定义成空函数,不需再更改经过测试的代码);下一步执行测试脚本,测试脚本依次控制每一个测试用例的执行,同时通过插桩函数将所走的分支记录在实际执行路径数组中。
(2)如果被测单元有返回值,则对应相关的测试用例定义一个本测试用例环境下被测代码应该返回的正确返回值,例如返回值1、返回值2……返回值n,在代码执行过程中,每个测试用例记录被测代码实际运行得到的返回值1′、返回值2′、返回值n′等。
(3)自动测试模块执行自动检测过程,比较标准路径与其对应的实际执行路径,判断路径1′与路径1是否相符、路径2′与路径2是否相符……路径n′与路径n是否相符,如果相符则提示成功信息,如果不相符则指出失败位置以及失败原因等信息;如果被测单元有返回值,自动测试模块比较返回值1′与返回值1是否相符、返回值2与返回值2′是否相符……返回值n′与返回值n是否相符,如果相符则提示成功,如果不相符则指出失败位置以及失败原因等信息。
如果单元测试发现了程序错误并且对程序代码进行了修改,此时执行回归测试,也就是对修改过的程序再重新测试一遍,以保证修改是正确的,同时保证所做的修改不会带来不可预料的行为或者新的错误。依据本发明的技术方案,在测试脚本中增加相应的测试用例,然后执行上述的测试过程即可施行回归测试。
测试完毕,将前述的插桩函数重新定义成空函数,直接发布版本,不需再更改经过测试的代码。

Claims (7)

1.一种自动检验测试结果的程序单元测试方法,测试控制模块控制主测试过程,测试脚本由多个测试用例组成,其特征在于该测试方法包括以下的步骤:
(a).在构成测试脚本的每个测试用例中根据需要通过插桩函数生成被测代码运行的一种环境,控制被测代码的运行;
(b).在每个测试用例中预设一个标准路径,代表在本测试用例环境下被测代码要走的分支的先后次序和走的总分支数,同时根据需要在相应的测试用例中预设一个本测试用例环境下被测代码应该返回的标准返回值;
(c).测试控制模块执行测试脚本,按顺序依次运行该测试脚本的测试用例;
(d).测试控制模块判断测试用例中是否有标准返回值,如果有,转步骤(e)如果没有,转步骤(f);
(e).当测试用例控制被测代码运行时,记录下被测代码运行得出的实际返回值;
(f).测试用例按顺序依次控制被测代码走相应的分支,并通过被测代码的插桩函数将走过的分支记录下来;
(g).当检测到测试脚本运行结束时,通过自动检测模块比较检测路径是否覆盖完全,如果覆盖完全则提示成功信息,如果没有覆盖完全,则提示出覆盖不完全信息,同时自动检测模块比较定义的标准返回值与实际返回值是否相符,如果完全相符则提示成功信息,如果不完全相符,则提示出返回值不符信息;
(h).测试控制模块判断是否所有的测试脚本都已经被执行完毕,如果还有未被执行的测试脚本,测试控制模块执行下一个测试脚本,转步骤(c),如果检测到所有的测试脚本都已经执行完毕,测试结束。
2.根据权利要求1所述的程序单元测试方法,其特征在于步骤(b)中所述的标准路径以字符串或有代表性的数字来设定。
3.根据权利要求1所述的程序单元测试方法,其特征在于步骤(g)中所述的返回值不符信息包括返回值不符的测试用例和返回值不符的原因信息。
4.根据权利要求1所述的程序单元测试方法,其特征在于步骤(g)中所述的覆盖不完全信息包括未完全覆盖位置和未完全覆盖的原因信息。
5.根据权利要求1所述的程序单元测试方法,其特征在于所述的插桩函数在代码测试完成后可重新生成为空函数以发布版本,不需要再更改被测试的代码。
6.根据权利要求1所述的程序单元测试方法,其特征在于在测试过程中,如果发现了程序错误并且对程序代码进行了修改,此时执行回归测试,即对修改过的程序再重新测试一遍。
7.根据权利要求6所述的程序单元测试方法,其特征在于所述回归测试是在测试脚本中增加相应的测试用例,然后执行测试过程。
CN2005101006576A 2005-10-22 2005-10-22 自动检验测试结果的程序单元测试方法 Expired - Fee Related CN1952818B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2005101006576A CN1952818B (zh) 2005-10-22 2005-10-22 自动检验测试结果的程序单元测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2005101006576A CN1952818B (zh) 2005-10-22 2005-10-22 自动检验测试结果的程序单元测试方法

Publications (2)

Publication Number Publication Date
CN1952818A CN1952818A (zh) 2007-04-25
CN1952818B true CN1952818B (zh) 2010-12-15

Family

ID=38059188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005101006576A Expired - Fee Related CN1952818B (zh) 2005-10-22 2005-10-22 自动检验测试结果的程序单元测试方法

Country Status (1)

Country Link
CN (1) CN1952818B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178687B (zh) * 2007-11-26 2010-06-09 中兴通讯股份有限公司 软件回归测试的方法
CN101216803B (zh) * 2008-01-09 2010-06-16 四川大学 基于基路径的测试程序控制流路径集生成方法
CN101625709B (zh) * 2008-07-09 2011-05-18 华为技术有限公司 功能覆盖率的收集方法及装置
CN101621370B (zh) * 2009-07-29 2013-01-23 金蝶软件(中国)有限公司 一种业务流程的性能测试方法、系统及电子设备
CN102110048B (zh) * 2009-12-28 2014-07-09 国际商业机器公司 用于基于框架的应用程序的回归测试选择方法和装置
CN102236729B (zh) * 2010-04-29 2016-06-22 无锡中感微电子股份有限公司 一种测试功能覆盖的方法及装置
CN102014023B (zh) * 2010-12-03 2012-08-29 汉柏科技有限公司 基于VB Script的网络设备产品自动化测试方法
CN102495796B (zh) * 2011-11-25 2013-04-24 中国人民解放军总参谋部第五十四研究所 一种基于单元测试的软件脆弱性测试方法
CN103164335B (zh) * 2011-12-19 2016-04-20 阿里巴巴集团控股有限公司 检查单元测试质量的方法和系统
US9405662B2 (en) * 2013-12-18 2016-08-02 Google Inc. Process for displaying test coverage data during code reviews
CN105005295A (zh) * 2015-07-15 2015-10-28 上海核工程研究设计院 一种控制逻辑的测试系统及方法
CN110377520B (zh) * 2019-07-22 2024-03-15 中国工商银行股份有限公司 交易场景的测试方法及装置、电子设备和可读存储介质
CN111124937B (zh) * 2020-03-31 2020-07-03 深圳开源互联网安全技术有限公司 基于插桩函数辅助提高生成测试用例效率的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463552B1 (en) * 1998-12-07 2002-10-08 Lsi Logic Corporation Scripting method and apparatus for testing devices
CN1499374A (zh) * 2002-11-04 2004-05-26 华为技术有限公司 一种单元测试自动化方法
CN1632747A (zh) * 2003-12-22 2005-06-29 联想(北京)有限公司 软件接口测试方法
CN1641601A (zh) * 2004-01-04 2005-07-20 华为技术有限公司 一种软件的单元测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463552B1 (en) * 1998-12-07 2002-10-08 Lsi Logic Corporation Scripting method and apparatus for testing devices
CN1499374A (zh) * 2002-11-04 2004-05-26 华为技术有限公司 一种单元测试自动化方法
CN1632747A (zh) * 2003-12-22 2005-06-29 联想(北京)有限公司 软件接口测试方法
CN1641601A (zh) * 2004-01-04 2005-07-20 华为技术有限公司 一种软件的单元测试方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周晓宇,黄文伟,史亮,徐宝文.基于源代码插桩的C程序内存使用错误动态检测.舰船电子工程24 6.2004,24(6),70-73.
周晓宇,黄文伟,史亮,徐宝文.基于源代码插桩的C程序内存使用错误动态检测.舰船电子工程24 6.2004,24(6),70-73. *

Also Published As

Publication number Publication date
CN1952818A (zh) 2007-04-25

Similar Documents

Publication Publication Date Title
CN1952818B (zh) 自动检验测试结果的程序单元测试方法
US6961873B2 (en) Environment based data driven automated test engine for GUI applications
CN103164328B (zh) 一种业务功能的回归测试方法、装置及系统
CN105760296B (zh) 自动化测试控制方法、装置及终端
CN106598871A (zh) Linux下的崩溃文件自动化分析方法及系统
CN101799506B (zh) 基于脚本控制的芯片测试方法、装置及系统
CN103412817B (zh) 自动化测试脚本脱机调试方法及系统
CN104156311B (zh) 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法
CN106227616A (zh) 一种批量实现rmt自动测试的方法
WO2019134113A1 (zh) 自动化测试方法及系统
CN103399814A (zh) 自动化测试的方法及装置
CN107479980A (zh) 一种检测应用中死锁的方法与设备
CN106021101A (zh) 对移动终端进行测试的方法及装置
CN105279092A (zh) 一种软件测试的方法及装置
CN1318976C (zh) 软件测试方法及其系统
CN110941520B (zh) 基于二取二安全控制单元的硬件功能测试系统及方法
CN106708725A (zh) 一种测试与诊断相结合的测试序列动态管理方法
CN103049374B (zh) 一种自动化测试的方法及装置
CN111611154B (zh) 一种回归测试的方法、装置和设备
CN101594627A (zh) 一种模拟移动终端故障的装置和方法
CN103186459A (zh) 基于脚本的java图形用户界面自动测试方法
CN104199770A (zh) 一种手机音乐apk的自动化测试方法
CN107124236A (zh) 一种基于脚本语言的接收机性能指标测试方法
CN112783769A (zh) 一种自定义的自动化软件测试方法
CN112612697A (zh) 一种基于字节码技术的软件缺陷测试定位方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101215

Termination date: 20181022

CF01 Termination of patent right due to non-payment of annual fee