CN104102581B - 一种实现单元测试的方法及装置 - Google Patents
一种实现单元测试的方法及装置 Download PDFInfo
- Publication number
- CN104102581B CN104102581B CN201410328072.9A CN201410328072A CN104102581B CN 104102581 B CN104102581 B CN 104102581B CN 201410328072 A CN201410328072 A CN 201410328072A CN 104102581 B CN104102581 B CN 104102581B
- Authority
- CN
- China
- Prior art keywords
- test
- file
- test case
- suite
- unit
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 359
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000013515 script Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 abstract description 5
- 238000013507 mapping Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000003292 glue Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种实现单元测试的方法及装置,包括:遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套;建立各测试用例文件的测试套和测试用例一一对应的映射信息;根据建立的测试套和测试用例的映射信息,生成测试文件;根据生成的测试套和测试文件,对单元测试的应用程序进行单元测试,输出测试结果。本发明通过根据测试用例文件的文件名生成测试用例文件的测试套,及测试用例文件和测试套的映射,简化了添加测试套以及测试用例到单元测试的框架的过程,节省了单元测试中人为参与的时间,提高了单元测试的工作效率。
Description
技术领域
本发明涉及软件测试技术,尤指一种实现单元测试的方法及装置。
背景技术
单元测试,是指对软件中的最小可测试单元进行检查和验证。一个单元测试是用于判断某个特定条件下(或场景下)某个函数(或某个流程)的行为。例如把一个很大的值放入一个有序列表(list)中去,然后确认该值出现在list的尾部,以实现单元测试;或者,从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符实现单元测试。充分的单元测试,可以在早期发现软件BUG并进行修复,大大提高软件质量,降低后期维护成本。
单元测试是由编写程序的程序员完成的。程序员编写功能代码后,通过编写单元测试,用于对程序的每个函数、流程等进行测试,使其实现代码实际应用时所应有的功能。如果不进行代码测试,则代码中的细小错误很难被发现,当BUG暴露时将难于调试,大幅度提高后期测试和维护成本,且影响软件质量。
白盒测试用例(CUnit)是一种C语言单元测试框架。白盒测试用例以静态库的形式提供给用户使用,用户编写程序的时候直接链接此静态库就可以进行单元测试。CUnit提供了一个简单的单元测试框架。CUnit的测试是单线程启动,只能注册一个测试TestRegistry_,一次测试可以运行多个测试套(Test Suite),而每个测试套可以包括多个测试用例(Test Case),每个测试用例又包含一个或者多个断言类的语句。注册一个测试用例后,需要将测试用例增加到CUnit的单元测试框架中,并在单元内挂载测试函数后,调用编写使用的界面进行测试。
在CUnit的单元测试框架中,随着单元测试的测试用例的增加,在编写完测试用例后,需要操作人员根据测试用例编写测试套,而测试套的格式是一个固定的格式,只是名字和内容不同,当存在较多的测试用例时,该过程是一个很繁琐的过程。尤其是测试用例有改动时,需要手动查找该用例的位置,修改过程费时。
综上,目前在进行单元测试时,添加测试套以及测试用例到单元测试的框架中成为一个重复、繁琐的事情。影响了单元测试的工作效率。
发明内容
为了解决上述技术问题,本发明公开了一种实现单元测试的方法及装置,能够自动完成测试套和测试用例的添加,提高单元测试的工作效率。
为了达到本发明的目的,本发明提供一种实现单元测试的方法,包括:
遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套;
建立各测试用例文件的测试套和测试用例一一对应的映射信息;
根据建立的测试套和测试用例的映射信息,生成测试文件;
根据生成的测试套和测试文件,对单元测试的应用程序进行单元测试,输出测试结果。
进一步地,遍历进行单元测试的目录及子目录下的测试用例文件为:通过Python脚本遍历进行单元测试的测试用例文件的目录及子目录下的测试用例文件。
进一步地,生成映射信息包括:
通过二级列表的方式,建立所述各测试用例文件的测试套和测试用例一一对应的映射信息。
进一步地,生成测试文件包括:
通过Python脚本,根据所述生成的测试套和测试用例的映射信息生成所述测试文件。
进一步地,对单元测试的应用程序进行单元测试,输出测试结果包括:
通过Python脚本调用makefile文件,对所述测试文件和所述测试套及单元测试的应用程序进行编译,生成可执行文件;
执行可执行文件以输出测试结果。
进一步地,该方法之前还包括:预先设置与所述单元测试的各模块和子模块对应的测试用例相应的名称,以生成所述测试用例文件的目录及子目录。
另一方面,本申请还提供一种实现单元测试的装置,包括:
遍历单元,用于遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套;
映射单元,用于建立各测试用例文件的测试套和测试用例一一对应的映射信息;
测试文件单元,根据建立的测试套和测试用例的映射信息,生成测试文件;
测试执行单元,用于根据生成的测试套和测试文件,对单元测试的应用程序进行单元测试,输出测试结果。
进一步地,遍历单元具体用于,通过Python脚本遍历进行单元测试的测试用例文件的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套。
进一步地,映射单元具体用于,对各测试用例文件的测试套和测试用例,通过二级列表的方式建立测试套和测试用例一一对应的映射信息。
进一步地,测试文件单元具体用于,根据建立的测试套和测试用例的映射信息,生成测试文件具体包括;根据建立的测试套和测试用例的映射信息,通过Python脚本生成测试文件。
进一步地,测试执行单元具体用于,通过Python脚本调用makefile文件,对所述测试文件和所述测试套及单元测试的应用程序进行编译,生成可执行文件;
执行可执行文件以输出测试结果。
进一步地,该装置还包括命名单元,用于预先设置单元测试的各模块和子模块对应的测试用例相应的名称,以生成测试用例文件的目录及子目录。
与现有技术相比,本发明提供的技术方案包括:遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套;建立各测试用例文件的测试套和测试用例一一对应的映射信息;根据建立的测试套和测试用例的映射信息,生成测试文件;根据生成的测试套和测试文件,对单元测试的应用程序进行单元测试,输出测试结果。本发明通过根据测试用例文件的文件名生成测试用例文件的测试套,及测试用例文件和测试套的映射,简化了添加测试套以及测试用例到单元测试的框架的过程,节省了单元测试中人为参与的时间,提高了单元测试的工作效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实现单元测试的方法的流程图;
图2为本发明实现单元测试的装置的结构框图。
具体实施方式
图1为本发明实现单元测试的方法的流程图;如图1所示,包括:
步骤100、遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套。
本步骤中,遍历进行单元测试的目录及子目录下的测试用例文件为:通过Python脚本遍历进行单元测试的测试用例文件的目录及子目录下的测试用例文件。其中,Python是一种面向对象、解释型计算机程序设计语言,Python语法简洁而清晰,具有丰富和强大的类库。Python常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块轻松地联结在一起。Python脚本是指通过Python语言编写的脚本。
本步骤之前还包括,预先设置单元测试的各模块和子模块对应的测试用例相应的名称,以生成测试用例文件的目录及子目录。
步骤101、建立各测试用例文件的测试套和测试用例一一对应的映射信息。
本步骤中,建立各测试用例文件的测试套和测试用例一一对应的映射信息具体包括:对各测试用例文件的测试套和测试用例,通过二级列表的方式建立测试套和测试用例一一对应的映射信息。
需要说明的是,二级列表的方式是本领域技术人员熟知的一种列表方式,一级列表是测试套列表,二级列表是测试套中用例的列表。通过二级列表的方式建立映射是本领域技术人员的公知常识,本申请只是应用二级列表方式建立测试套和测试用例一一对应的映射信息。
步骤102、根据建立的测试套和测试用例的映射信息,生成测试文件。
本步骤具体包括:根据生成的测试套和测试用例的映射信息,通过Python脚本输出测试文件。
步骤103、根据生成的测试套和测试文件,对单元测试的应用程序进行单元测试,输出测试结果。
本步骤具体包括:通过Python脚本调用makefile文件,对所述测试文件和所述测试套及单元测试的应用程序进行编译,生成可执行文件;执行可执行文件以输出测试结果。其中,makefile文件是一种,在一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中时,定义一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,makefile就像一个Shell脚本一样,其中也可以执行操作***的命令。
本发明通过根据测试用例文件的文件名生成测试用例文件的测试套,及测试用例文件和测试套的映射,再通过Python脚本调用makefile文件,编译测试文件和测试套及进行单元测试侧应用程序,生成可执行文件,简化了添加测试套以及测试用例到单元测试的框架的过程,节省了单元测试中人为参与的时间,提高了单元测试的工作效率。
图2为本发明实现单元测试的装置的结构框图,如图2所示,包括:
遍历单元,用于遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套。具体用于,通过Python脚本遍历进行单元测试的测试用例文件的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套。
映射单元,用于生成各测试用例文件的测试套和测试用例成一一对应的映射信息。具体用于,对各测试用例文件的测试套和测试用例,通过二级列表的方式生成测试套和测试用例一一对应的映射信息。
测试文件单元,根据生成的测试套和测试用例的映射信息,输出测试文件。具体用于,根据生成的测试套和测试用例的映射信息,输出测试文件具体包括;根据生成的测试套和测试用例的映射信息,通过Python脚本输出测试文件。
测试执行单元,用于根据测试套、测试文件,对单元测试的应用程序进行单元测试,输出测试结果。具体用于,通过Python脚本调用makefile文件,对所述测试文件和所述测试套及单元测试的应用程序进行编译,生成可执行文件;执行可执行文件以输出测试结果。
本发明装置还包括命名单元,用于预先设置单元测试的各模块和子模块对应的测试用例相应的名称,以生成测试用例文件的目录及子目录。
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。对于本申请发明中涉及的链路连接标准,存储介质的类型,以上实施例只是针对优选方式来对本发明进行陈述。其实现手段,可以采用类似的方法进行替换等,根据实际情况可以做适当调整。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种实现单元测试的方法,其特征在于,包括:
遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套;
建立各测试用例文件的测试套和测试用例一一对应的映射信息;
根据建立的测试套和测试用例的映射信息,生成测试文件;
根据生成的测试套和测试文件,对单元测试的应用程序进行单元测试,输出测试结果。
2.根据权利要求1所述的方法,其特征在于,所述遍历进行单元测试的目录及子目录下的测试用例文件为:通过Python脚本遍历进行单元测试的测试用例文件的目录及子目录下的测试用例文件。
3.根据权利要求1所述的方法,其特征在于,所述生成映射信息包括:
通过二级列表的方式,建立所述各测试用例文件的测试套和测试用例一一对应的映射信息。
4.根据权利要求1所述的方法,其特征在于,所述生成测试文件包括:
通过Python脚本,根据所述生成的测试套和测试用例的映射信息生成所述测试文件。
5.根据权利要求1所述的方法,其特征在于,所述对单元测试的应用程序进行单元测试,输出测试结果包括:
通过Python脚本调用makefile文件,对所述测试文件和所述测试套及单元测试的应用程序进行编译,生成可执行文件;
执行可执行文件以输出测试结果。
6.根据权利要求1~5任一项所述的方法,其特征在于,该方法之前还包括:预先设置与所述单元测试的各模块和子模块对应的测试用例相应的名称,以生成所述测试用例文件的目录及子目录。
7.一种实现单元测试的装置,其特征在于,包括:
遍历单元,用于遍历进行单元测试的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套;
映射单元,用于建立各测试用例文件的测试套和测试用例一一对应的映射信息;
测试文件单元,根据建立的测试套和测试用例的映射信息,生成测试文件;
测试执行单元,用于根据生成的测试套和测试文件,对单元测试的应用程序进行单元测试,输出测试结果。
8.根据权利要求7所述的装置,其特征在于,所述遍历单元具体用于,通过Python脚本遍历进行单元测试的测试用例文件的目录及子目录下的测试用例文件,根据测试用例文件的文件名,生成测试用例文件的测试套。
9.根据权利要求7所述的装置,其特征在于,所述映射单元具体用于,对各测试用例文件的测试套和测试用例,通过二级列表的方式建立测试套和测试用例一一对应的映射信息。
10.根据权利要求7所述的装置,其特征在于,所述测试文件单元具体用于,根据建立的测试套和测试用例的映射信息,生成测试文件具体包括;根据建立的测试套和测试用例的映射信息,通过Python脚本生成测试文件。
11.根据权利要求7所述的装置,其特征在于,所述测试执行单元具体用于,通过Python脚本调用makefile文件,对所述测试文件和所述测试套及单元测试的应用程序进行编译,生成可执行文件;
执行可执行文件以输出测试结果。
12.根据权利要求7~11任一项所述的装置,其特征在于,该装置还包括命名单元,用于预先设置单元测试的各模块和子模块对应的测试用例相应的名称,以生成测试用例文件的目录及子目录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410328072.9A CN104102581B (zh) | 2014-07-10 | 2014-07-10 | 一种实现单元测试的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410328072.9A CN104102581B (zh) | 2014-07-10 | 2014-07-10 | 一种实现单元测试的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102581A CN104102581A (zh) | 2014-10-15 |
CN104102581B true CN104102581B (zh) | 2017-08-01 |
Family
ID=51670750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410328072.9A Active CN104102581B (zh) | 2014-07-10 | 2014-07-10 | 一种实现单元测试的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102581B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317722B (zh) * | 2014-11-13 | 2017-06-16 | 中国建设银行股份有限公司 | 一种基于Junit的单元测试方法及装置 |
CN106547679B (zh) * | 2015-09-17 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 脚本管理的方法和脚本管理平台 |
CN106649116B (zh) * | 2016-12-27 | 2019-09-20 | 广州周立功单片机科技有限公司 | 嵌入式Linux产品的测试方法、装置及*** |
CN107729251A (zh) * | 2017-10-23 | 2018-02-23 | 中国联合网络通信集团有限公司 | 测试用例管理方法及装置 |
CN112783769A (zh) * | 2021-01-19 | 2021-05-11 | 深圳市莫廷影像技术有限公司 | 一种自定义的自动化软件测试方法 |
CN113342675B (zh) * | 2021-06-25 | 2022-09-20 | 北京紫光展锐通信技术有限公司 | 被测试模块的映射方法、装置以及测试方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100421391C (zh) * | 2003-02-14 | 2008-09-24 | 华为技术有限公司 | 实现智能业务自动测试的方法 |
CN101334753A (zh) * | 2007-06-26 | 2008-12-31 | 中兴通讯股份有限公司 | 一种单元测试方法及其装置 |
CN102023861A (zh) * | 2010-12-08 | 2011-04-20 | 中兴通讯股份有限公司 | 测试脚本及测试套件生成的方法和*** |
CN103530231A (zh) * | 2013-10-12 | 2014-01-22 | 北京京东尚科信息技术有限公司 | 一种基于业务流程控制的应用程序测试方法及*** |
-
2014
- 2014-07-10 CN CN201410328072.9A patent/CN104102581B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100421391C (zh) * | 2003-02-14 | 2008-09-24 | 华为技术有限公司 | 实现智能业务自动测试的方法 |
CN101334753A (zh) * | 2007-06-26 | 2008-12-31 | 中兴通讯股份有限公司 | 一种单元测试方法及其装置 |
CN102023861A (zh) * | 2010-12-08 | 2011-04-20 | 中兴通讯股份有限公司 | 测试脚本及测试套件生成的方法和*** |
CN103530231A (zh) * | 2013-10-12 | 2014-01-22 | 北京京东尚科信息技术有限公司 | 一种基于业务流程控制的应用程序测试方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN104102581A (zh) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102581B (zh) | 一种实现单元测试的方法及装置 | |
CN104461898B (zh) | 应用测试的方法、中控服务器、测试终端及*** | |
US9535823B2 (en) | Method and apparatus for detecting software bugs | |
CN104102574B (zh) | 应用程序测试方法及装置 | |
CN104572463B (zh) | 测试接口信息的方法及装置 | |
US20140089895A1 (en) | Test case pattern matching | |
US7895575B2 (en) | Apparatus and method for generating test driver | |
Nguyen et al. | Detection of embedded code smells in dynamic web applications | |
US20130061210A1 (en) | Interactive debugging environments and methods of providing the same | |
CN104021084A (zh) | 一种Java源代码缺陷检测方法及装置 | |
Kamimura et al. | Towards generating human-oriented summaries of unit test cases | |
CN104536885A (zh) | 一种生成Soc随机验证平台的方法 | |
Colombo et al. | Verifying web applications: from business level specifications to automated model-based testing | |
US9274933B2 (en) | Pretest setup planning | |
CN109213677A (zh) | 基于Android多线程数据依赖的变异测试方法 | |
Ramler et al. | Automated static analysis of unit test code | |
US9152536B1 (en) | Validating correctness of expression evaluation within a debugger | |
Baumgartner et al. | Live Code Smell Detection of Data Clumps in an Integrated Development Environment. | |
Singh et al. | A study and review on the development of mutation testing tools for java and aspect-j programs | |
Nashaat et al. | Detecting security vulnerabilities in object-oriented php programs | |
US9983983B2 (en) | Auto-generation of testable units for COBOL code | |
Kim | Mobile applications software testing methodology | |
CN110018953A (zh) | 使用python测试JS代码的方法、存储介质、设备和*** | |
Perez | Dynamic code coverage with progressive detail levels | |
Lemos et al. | Visualization, analysis, and testing of Java and Aspectj programs with multi-level system graphs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180817 Address after: 200436 Room 411, No. three, JIANGCHANG Road, Jingan District, Shanghai, 411 Patentee after: Shanghai wave Cloud Computing Service Co., Ltd. Address before: 100085 floor 1, C 2-1, No. 2, Shang Di Road, Haidian District, Beijing. Patentee before: Electronic information industry Co.,Ltd of the tide (Beijing) |