CN110990282A - 一种自动化单元测试方法 - Google Patents

一种自动化单元测试方法 Download PDF

Info

Publication number
CN110990282A
CN110990282A CN201911227918.9A CN201911227918A CN110990282A CN 110990282 A CN110990282 A CN 110990282A CN 201911227918 A CN201911227918 A CN 201911227918A CN 110990282 A CN110990282 A CN 110990282A
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.)
Granted
Application number
CN201911227918.9A
Other languages
English (en)
Other versions
CN110990282B (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.)
China Helicopter Research and Development Institute
Original Assignee
China Helicopter Research and Development Institute
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 China Helicopter Research and Development Institute filed Critical China Helicopter Research and Development Institute
Priority to CN201911227918.9A priority Critical patent/CN110990282B/zh
Publication of CN110990282A publication Critical patent/CN110990282A/zh
Application granted granted Critical
Publication of CN110990282B publication Critical patent/CN110990282B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test 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 (8)

1.一种自动化单元测试方法,其特征在于,所述单元测试方法包括:
提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的单元测试执行单元;
对测试工具进行测试环境配置,以提供第二待测文件的运行环境;
对第二待测文件执行单元测试:采用配置之后的测试工具对所述第二待测文件进行单元测试处理;所述单元测试处理包括创建集合、添加第二待测文件和执行单元测试,执行单元测试之后生成单元测试报告。
2.根据权利要求1所述的自动化单元测试方法,其特征在于,
比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息,以获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
3.根据权利要求1所述的自动化单元测试方法,其特征在于,所述测试工具为Testbed测试工具;在进行测试环境配置时,对所述第二待测文件配置适用的编译器、配置头文件路径、配置启动模拟器,以生成Testbed.ini文件;测试环境配置之后,设置桩函数和设计编写测试用例,以生成TCF文件。
4.根据权利要求1所述的自动化单元测试方法,其特征在于,所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,并根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析。
5.根据权利要求1所述的自动化单元测试方法,其特征在于,所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,在对第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名执行字符串拼接操作。
6.根据权利要求3所述的自动化单元测试方法,其特征在于,在添加待测文件之后,读取所述Testbed.ini文件,自动获取进行所述第二待测文件单元测试时所需的环境信息;所述环境信息包括第二待测文件的编译器、头文件路径、模拟器、模板、插桩选项、历史记录存放路径、代码等级和测试级别;读取所述TCF文件,自动获取进行所述第二待测文件单元测试时所需的桩函数和测试用例信息。
7.根据权利要求3所述的自动化单元测试方法,其特征在于,所述执行单元测试包括:
对所述第二待测文件做编译器预处理以将宏扩展到第二待测文件;
修改所述第二待测文件的头文件格式,归一化为#include”X.h”;
通过插桩将经过编译器预处理和归一化处理之后的第二待测文件生成第三待测文件;
通过编译器编译所述第三待测文件生成可执行程序,对可执行程序执行单元测试。
8.根据权利要求7所述的自动化单元测试方法,其特征在于,
在可执行程序执行单元测试时,记录第三待测文件中所有函数的执行过程,并通过Testbed测试工具分析所述执行过程,以生成单元测试报告;
所述单元测试报告包括语句覆盖率报告、分支覆盖率报告、MC/DC覆盖率报告、回归报告、测试变量报告中的一个或多个。
CN201911227918.9A 2019-12-04 2019-12-04 一种自动化单元测试方法 Active CN110990282B (zh)

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 true CN110990282A (zh) 2020-04-10
CN110990282B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858384A (zh) * 2020-08-04 2020-10-30 上海无线电设备研究所 一种恒虚警检测软件单元的高效测试方法
CN113867818A (zh) * 2021-09-28 2021-12-31 潍柴动力股份有限公司 一种ini文件的生成方法、装置、计算机设备及介质
CN114546816A (zh) * 2020-11-25 2022-05-27 腾讯科技(深圳)有限公司 一种测试方法、平台、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983209A (zh) * 2005-12-14 2007-06-20 中兴通讯股份有限公司 一种软件单元测试自动化系统及其方法
CN104407973A (zh) * 2014-11-25 2015-03-11 珠海格力电器股份有限公司 一种自动化单元测试的实现方法及装置
DE102014114671A1 (de) * 2014-10-09 2016-04-14 QuantifiedCode UG (haftungsbeschränkt) System und Verfahren zur Fehleranalyse einer Software
CN106855835A (zh) * 2015-12-08 2017-06-16 中国航空工业第六八研究所 一种基于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 厦门美柚信息科技有限公司 生成最小测试范围的方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983209A (zh) * 2005-12-14 2007-06-20 中兴通讯股份有限公司 一种软件单元测试自动化系统及其方法
DE102014114671A1 (de) * 2014-10-09 2016-04-14 QuantifiedCode UG (haftungsbeschränkt) System und Verfahren zur Fehleranalyse einer Software
CN104407973A (zh) * 2014-11-25 2015-03-11 珠海格力电器股份有限公司 一种自动化单元测试的实现方法及装置
CN106855835A (zh) * 2015-12-08 2017-06-16 中国航空工业第六八研究所 一种基于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 厦门美柚信息科技有限公司 生成最小测试范围的方法及装置

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
KYLE EDELBERG等: "Software system for the Mars 2020 mission sampling and caching testbeds", pages 1 - 16 *
孙月宁;肖文洪;石璐璐;: "直升机机电管理系统软件测试方法研究", no. 01, pages 62 - 66 *
无名: "Shell脚本 SVN导出两个版本差异文件" *
李昌 等: "航空机载软件测试工具链设计与应用", vol. 27, pages 55 - 61 *
江志俭 等: "基于IData机载MFD软件的研究和开发", vol. 20, pages 41 - 43 *
谢其庭,徐炜,孟小锁: "Tornado API分析及第三方工具链集成技术", no. 11, pages 69 - 71 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858384A (zh) * 2020-08-04 2020-10-30 上海无线电设备研究所 一种恒虚警检测软件单元的高效测试方法
CN111858384B (zh) * 2020-08-04 2024-01-02 上海无线电设备研究所 一种恒虚警检测软件单元的高效测试方法
CN114546816A (zh) * 2020-11-25 2022-05-27 腾讯科技(深圳)有限公司 一种测试方法、平台、装置、电子设备及存储介质
CN113867818A (zh) * 2021-09-28 2021-12-31 潍柴动力股份有限公司 一种ini文件的生成方法、装置、计算机设备及介质
CN113867818B (zh) * 2021-09-28 2024-04-16 潍柴动力股份有限公司 一种ini文件的生成方法、装置、计算机设备及介质

Also Published As

Publication number Publication date
CN110990282B (zh) 2023-07-21

Similar Documents

Publication Publication Date Title
CN102804147B (zh) 执行abap源代码的代码检查的代码检查执行系统
CN110990282B (zh) 一种自动化单元测试方法
CN113255614A (zh) 一种基于视频分析的rpa流程自动生成方法与系统
CN112181854A (zh) 一种生成流程自动化脚本的方法、装置、设备及存储介质
CN112131116A (zh) 一种嵌入式软件自动化回归测试方法
CN107622017B (zh) 一种通用自动化软件测试的解析方法
CN112749083A (zh) 一种测试脚本生成方法及装置
CN112084108A (zh) 一种测试脚本生成方法、装置及相关组件
CN109101355B (zh) 一种提取错误现场特征测试激励的处理器调试方法
CN113064811A (zh) 基于工作流的自动化测试方法、装置以及电子设备
CN112947985A (zh) 一种智能检测及修复代码的方法与系统
CN116069628A (zh) 一种智能处置的软件自动化回归测试方法、系统及设备
CN114020648B (zh) 应用控件的测试方法、装置、电子设备及存储介质
CN115309661A (zh) 一种应用测试方法、装置、电子设备及可读存储介质
CN114625633A (zh) 用于接口测试的方法、系统和存储介质
CN113051161A (zh) 基于历史代码变更信息的api误用检测方法
CN113946339A (zh) 应用工程文件的处理方法、装置、电子设备及可读介质
CN111008140B (zh) 一种跨平台的ui自动化测试方法及装置
CN110309656B (zh) 一种隐式类型转换安全性检测方法
CN111782220A (zh) 一种文件的检测方法和装置
CN110990281A (zh) 一种自动化静态分析方法
CN114064157B (zh) 基于页面元素识别的自动化流程实现方法、系统、设备及介质
CN114791886B (zh) 一种软件问题跟踪方法和系统
CN110843869B (zh) 一种站场图显示配置自动解析方法
CN117591394A (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