CN110990282B - 一种自动化单元测试方法 - Google Patents
一种自动化单元测试方法 Download PDFInfo
- Publication number
- CN110990282B CN110990282B CN201911227918.9A CN201911227918A CN110990282B CN 110990282 B CN110990282 B CN 110990282B CN 201911227918 A CN201911227918 A CN 201911227918A CN 110990282 B CN110990282 B CN 110990282B
- Authority
- CN
- China
- Prior art keywords
- file
- tested
- test
- unit
- files
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种自动化单元测试方法,包括:提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的单元测试执行单元;对测试工具进行测试环境配置,以提供第二待测文件的运行环境;对第二待测文件执行单元测试:采用配置之后的测试工具对所述第二待测文件进行单元测试处理;所述单元测试处理包括创建集合、添加第二待测文件和执行单元测试,执行单元测试之后生成单元测试报告。
Description
技术领域
本发明属于软件测试领域,具体涉及一种自动化单元测试方法。
背景技术
按照国军标的要求,军用软件研制过程中,软件单元测试是不可或缺的测试活动,也是软件质量保证的关键环节。软件单元测试是指测试程序中单个子程序或过程。单元测试的目的是验证模块满足功能、性能和接口等的要求。单元测试主要是模块接口、局部数据结构、重要的执行路径、错误处理和边界测试等五个基本特性进行考察。有效地单元测试能够在软件研制早期发现编码中存在的绝大部分缺陷,从而减小后期发现缺陷带来的成本问题。
Testbed是较常见的单元测试工具之一。用户能够根据测试需要灵活地编写桩函数、对变量赋值,生成语句覆盖率、分支覆盖率、MC/DC覆盖率报告。因此备受军工企业青睐。
然而,Testbed单元测试工具的繁琐界面操作使得单元测试工作非常耗时,需要投入大量的人力成本。据不完全统计,熟练使用Testbed单元测试工具的情况下,仅能做到人均300行代码/天。当代码规模达到十万行,则需要至少300人日完成单元测试工作。
发明内容
本发明的目的:一种自动化单元测试方法。该方法使用python语言调用Testbed单元测试工具实现。
本发明的技术方案:提供一种自动化单元测试方法,所述单元测试方法包括:
提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的单元测试执行单元;
对测试工具进行测试环境配置,以提供第二待测文件的运行环境;
对第二待测文件执行单元测试:采用配置之后的测试工具对所述第二待测文件进行单元测试处理;所述单元测试处理包括创建集合、添加第二待测文件和执行单元测试,执行单元测试之后生成单元测试报告。
进一步地,所述比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息,以获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
进一步地,所述测试工具为Testbed测试工具;在进行测试环境配置时,对所述第二待测文件配置适用的编译器、配置头文件路径、配置启动模拟器,以生成Testbed.ini文件;测试环境配置之后,设置桩函数和设计编写测试用例,以生成TCF文件。
进一步地,所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析;
进一步地,所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,在对第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名执行字符串拼接操作。
进一步地,在添加待测文件之后,读取所述Testbed.ini文件,自动获取进行所述第二待测文件单元测试时所需的环境信息,所述环境信息包括第二待测文件的编译器、头文件路径、模拟器、模板、插桩选项、历史记录存放路径、代码等级和测试级别;读取所述TCF文件,自动获取进行所述第二待测文件单元测试时所需的桩函数和测试用例信息。
进一步地,所述执行单元测试包括:
对所述第二待测文件做编译器预处理以将宏扩展到第二待测文件;
修改所述第二待测文件的头文件格式,归一化为#include”X.h”;
通过插桩将经过编译器预处理和归一化处理之后的第二待测文件生成第三待测文件;
通过编译器编译所述第三待测文件生成可执行程序,对可执行程序执行单元测试。
进一步地,在可执行程序执行单元测试时,记录第三待测文件中所有函数的执行过程,并通过Testbed测试工具分析所述执行过程,以生成单元测试报告;
所述单元测试报告包括语句覆盖率报告、分支覆盖率报告、MC/DC覆盖率报告、回归报告、测试变量报告中的一个或多个。
本发明的有益效果:本发明通过访问SVN服务器和对适用格式的文件筛选,实现待测文件的自动化提取,能够有效地提高文件提取效率,降低人力成本;通过配置和调用测试工具自动化读取并执行测试用例,实现单元测试自动化,避免了测试工具界面操作的繁琐步骤,能够提高单元测试效率,降低成本。本发明所述的自动化单元测试方法,能够使测试人员将更多的精力放在测试用例的设计编写上,从而达到提高测试效率,减少人力成本,缩短软件研制周期,改善代码质量的效果。
附图说明
图1为Testbed测试工具配置流程图;
图2为单元测试自动化执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为单元测试自动化执行流程图,如图2所示,本实施例,提供一种自动化单元测试方法,所述单元测试方法包括以下步骤:
(1)提取待测文件
对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的单元测试执行单元;
所述比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息,以获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
(2)测试环境配置
对测试工具进行测试环境配置,以提供第二待测文件的运行环境。
所述测试工具为Testbed测试工具;在进行测试环境配置时,对所述第二待测文件配置适用的编译器、配置头文件路径、配置启动模拟器,以生成Testbed.ini文件;测试环境配置之后,设置桩函数和设计编写测试用例,以生成TCF文件。
(3)自动化单元测试
对第二待测文件执行单元测试:采用配置之后的测试工具对所述第二待测文件进行单元测试处理;所述单元测试处理包括创建集合、添加第二待测文件和执行单元测试,执行单元测试之后生成单元测试报告。
所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析;
所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,在对第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名执行字符串拼接操作。
进一步地,在添加待测文件之后,读取所述Testbed.ini文件,自动获取进行所述第二待测文件单元测试时所需的环境信息,所述环境信息包括第二待测文件的编译器、头文件路径、模拟器、模板、插桩选项、历史记录存放路径、代码等级和测试级别;读取所述TCF文件,自动获取进行所述第二待测文件单元测试时所需的桩函数和测试用例信息。
所述执行单元测试包括:对所述第二待测文件做编译器预处理以将宏扩展到第二待测文件;修改所述第二待测文件的头文件格式,归一化为#include”X.h”;通过插桩将经过编译器预处理和归一化处理之后的第二待测文件生成第三待测文件;通过编译器编译所述第三待测文件生成可执行程序,对可执行程序执行单元测试。
进一步地,在可执行程序执行单元测试时,记录第三待测文件中所有函数的执行过程,并通过Testbed测试工具分析所述执行过程,以生成单元测试报告;所述单元测试报告包括语句覆盖率报告、分支覆盖率报告、MC/DC覆盖率报告、回归报告、测试变量报告中的一个或多个。
以上所述,仅为本发明的具体实施例,对本发明进行详细描述,未详尽部分为常规技术。但本发明的保护范围不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以所述权利要求的保护范围为准。
Claims (3)
1.一种自动化单元测试方法,其特征在于,所述单元测试方法包括:
提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的单元测试执行单元;
对测试工具进行测试环境配置,以提供第二待测文件的运行环境;
对第二待测文件执行单元测试:采用配置之后的测试工具对所述第二待测文件进行单元测试处理;所述单元测试处理包括创建集合、添加第二待测文件和执行单元测试,执行单元测试之后生成单元测试报告;
其中,所述测试工具为Testbed测试工具;在进行测试环境配置时,对所述第二待测文件配置适用的编译器、配置头文件路径、配置启动模拟器,以生成Testbed.ini文件;测试环境配置之后,设置桩函数和设计编写测试用例,以生成TCF文件;
所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,并根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析;
所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,在对第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名执行字符串拼接操作;
在添加待测文件之后,读取所述Testbed.ini文件,自动获取进行所述第二待测文件单元测试时所需的环境信息;所述环境信息包括第二待测文件的编译器、头文件路径、模拟器、模板、插桩选项、历史记录存放路径、代码等级和测试级别;读取所述TCF文件,自动获取进行所述第二待测文件单元测试时所需的桩函数和测试用例信息;
所述执行单元测试包括:
对所述第二待测文件做编译器预处理以将宏扩展到第二待测文件;
修改所述第二待测文件的头文件格式,归一化为#include”X.h”;
通过插桩将经过编译器预处理和归一化处理之后的第二待测文件生成第三待测文件;
通过编译器编译所述第三待测文件生成可执行程序,对可执行程序执行单元测试。
2.根据权利要求1所述的自动化单元测试方法,其特征在于,
比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息,以获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
3.根据权利要求1所述的自动化单元测试方法,其特征在于,
在可执行程序执行单元测试时,记录第三待测文件中所有函数的执行过程,并通过Testbed测试工具分析所述执行过程,以生成单元测试报告;
所述单元测试报告包括语句覆盖率报告、分支覆盖率报告、MC/DC覆盖率报告、回归报告、测试变量报告中的一个或多个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911227918.9A CN110990282B (zh) | 2019-12-04 | 2019-12-04 | 一种自动化单元测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911227918.9A CN110990282B (zh) | 2019-12-04 | 2019-12-04 | 一种自动化单元测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990282A CN110990282A (zh) | 2020-04-10 |
CN110990282B true CN110990282B (zh) | 2023-07-21 |
Family
ID=70090147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911227918.9A Active CN110990282B (zh) | 2019-12-04 | 2019-12-04 | 一种自动化单元测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990282B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858384B (zh) * | 2020-08-04 | 2024-01-02 | 上海无线电设备研究所 | 一种恒虚警检测软件单元的高效测试方法 |
CN114546816B (zh) * | 2020-11-25 | 2024-07-16 | 腾讯科技(深圳)有限公司 | 一种测试方法、平台、装置、电子设备及存储介质 |
CN113867818B (zh) * | 2021-09-28 | 2024-04-16 | 潍柴动力股份有限公司 | 一种ini文件的生成方法、装置、计算机设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102014114671A1 (de) * | 2014-10-09 | 2016-04-14 | QuantifiedCode UG (haftungsbeschränkt) | System und Verfahren zur Fehleranalyse einer Software |
CN104407973B (zh) * | 2014-11-25 | 2018-04-06 | 珠海格力电器股份有限公司 | 一种自动化单元测试的实现方法及装置 |
CN106855835B (zh) * | 2015-12-08 | 2020-04-07 | 中国航空工业第六一八研究所 | 一种基于xml技术的飞控系统上电启动自检测方法 |
CN108052744A (zh) * | 2017-12-15 | 2018-05-18 | 四川汉科计算机信息技术有限公司 | 航空软件仿真综合测试验证平台 |
CN110221968A (zh) * | 2019-05-20 | 2019-09-10 | 平安普惠企业管理有限公司 | 软件测试方法及相关产品 |
CN110245081A (zh) * | 2019-05-31 | 2019-09-17 | 厦门美柚信息科技有限公司 | 生成最小测试范围的方法及装置 |
-
2019
- 2019-12-04 CN CN201911227918.9A patent/CN110990282B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110990282A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102804147B (zh) | 执行abap源代码的代码检查的代码检查执行系统 | |
CN101377759B (zh) | 自动化界面测试系统 | |
CN110990282B (zh) | 一种自动化单元测试方法 | |
Valenzuela-Toledo et al. | Evolution of github action workflows | |
CN106227654A (zh) | 一种测试平台 | |
CN111209185A (zh) | 基于关键词的自动化测试方法及计算机可读存储介质 | |
CN112131116A (zh) | 一种嵌入式软件自动化回归测试方法 | |
CN107622017B (zh) | 一种通用自动化软件测试的解析方法 | |
CN111258876B (zh) | 一种微服务架构下的精确回归测试方法及装置 | |
CN112631704A (zh) | 一种界面元素识别方法、装置、存储介质及电子设备 | |
CN113051161A (zh) | 基于历史代码变更信息的api误用检测方法 | |
CN112084108A (zh) | 一种测试脚本生成方法、装置及相关组件 | |
CN109101355B (zh) | 一种提取错误现场特征测试激励的处理器调试方法 | |
CN112699279A (zh) | 组件自动化处理方法、装置、设备和存储介质 | |
CN113064811A (zh) | 基于工作流的自动化测试方法、装置以及电子设备 | |
CN112464237A (zh) | 一种静态代码安全诊断方法及装置 | |
CN117493188A (zh) | 接口测试方法及装置、电子设备及存储介质 | |
CN116069628A (zh) | 一种智能处置的软件自动化回归测试方法、系统及设备 | |
CN110362463A (zh) | 一种自动挑选测试用例进行回归测试的方法和装置 | |
CN110990281B (zh) | 一种自动化静态分析方法 | |
CN113946339A (zh) | 应用工程文件的处理方法、装置、电子设备及可读介质 | |
CN113672509A (zh) | 自动化测试方法、装置、测试平台及存储介质 | |
CN113495826A (zh) | 一种单元测试代码的生成方法、单元测试方法和装置 | |
CN111290938A (zh) | 一种基于人工辅助的Android半自动化测试方法 | |
CN113886227B (zh) | 一种全自动生成测试用例的系统、方法、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |