CN110990281A - 一种自动化静态分析方法 - Google Patents
一种自动化静态分析方法 Download PDFInfo
- Publication number
- CN110990281A CN110990281A CN201911227859.5A CN201911227859A CN110990281A CN 110990281 A CN110990281 A CN 110990281A CN 201911227859 A CN201911227859 A CN 201911227859A CN 110990281 A CN110990281 A CN 110990281A
- Authority
- CN
- China
- Prior art keywords
- file
- tested
- static analysis
- analysis
- report
- 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
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 91
- 230000003068 static effect Effects 0.000 title claims abstract description 71
- 238000012360 testing method Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 21
- 238000012552 review Methods 0.000 claims description 15
- 238000005206 flow analysis Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 4
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000007405 data analysis Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 238000013522 software testing Methods 0.000 description 5
- 238000000034 method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000000275 quality assurance Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/3604—Software analysis for verifying properties of programs
-
- 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/362—Software debugging
- G06F11/366—Software debugging using diagnostics
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)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
一种自动化静态分析方法,包括:提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;对测试工具进行测试环境配置,以提供第二待测文件的运行环境;对第二待测文件执行静态分析:采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告。
Description
技术领域
本发明属于软件测试领域,具体涉及一种自动化静态分析方法。
背景技术
软件研制过程中,软件测试是不可或缺的重要环节。软件测试是软件质量保证的关键步骤。美国质量保证研究所对软件测试的研究结果表明:越早发现软件中存在的问题,开发费用就越低;在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍;软件质量越高,软件发布后的维护费用越低。测试过程中,越早发现问题,修正问题需要投入的人力物力越少。
软件研制阶段:当软件编码完成一个版本后,进入软件测试环节,首先需要做代码的单元静态测试即静态分析。软件静态分析后,测试人员把编码规则问题反馈给软件编码人员。软件编码人员对测试问题确认、更改。
软件维护阶段:随着需求变更、代码完善、问题修复等,软件代码版本升级是不可避免的。多个代码维护人员分别从SVN版本库获取当前最新版本代码,并在此基础上修改代码,提交版本库,完成版本升级。版本升级后,测试人员对新版本代码做静态分析。软件静态分析后,测试人员把编码规则问题反馈给软件编码人员。软件编码人员对测试问题确认、更改。
现阶段,在软件研制阶段:编码人员在一个版本完成后修改大量编码规则问题会耗费较大的人力成本,进而造成成本浪费;软件维护阶段:编码人员把修改的代码提交版本库后,再修改编码规则问题,同样会造成成本浪费。
发明内容
本发明的目的:一种自动化静态分析方法。该方法使用python语言调用Testbed静态分析工具实现。
本发明的技术方案:提供一种自动化静态分析方法,所述静态分析方法包括
提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;
对测试工具进行测试环境配置,以提供第二待测文件的运行环境;
对第二待测文件执行静态分析:采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告。
进一步地,所述比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
进一步地,所述测试工具为Testbed测试工具;在进行测试环境配置时,对所述第二待测文件配置适用的头文件、编译宏、编码规则集、代码评审报告、质量评审报告和数据分析报告。
进一步地,所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析。
进一步地,所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,添加第二待测文件时,每20个第二待测文件执行一次添加操作,以避免命令行过长带来的异常中断问题。
进一步地,在对每20个第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名循环执行字符串拼接操作,循环次数为20次。
进一步地,所述执行静态分析包括:
对测试工具设置测试参数,选择配置编码规则检查、复杂度分析、函数信息分析、数据流分析、交叉索引、信息流分析、数据对象分析参数中的一个或多个;
通过对比第二待测文件和设定的编码规则集,确认第二待测文件是否违反编码规则;
通过递归遍历第二待测文件中的函数,筛选不符合质量模型的函数,获取并记录第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息。
进一步地,根据记录的第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息生成静态分析报告;
所述静态分析报告包括分析范围报告、测试管理报告、代码评审报告、质量评审报告、设计评审报告、数据流报告、数据对象分析报告、静态调用关系图、用户自定义类型报告、静态控制流图中的一个或多个。
本发明的有益效果:本发明通过访问SVN服务器和对适用格式的文件筛选,实现待测文件的自动化提取,能够有效地提高文件提取效率,降低人力成本;通过配置和调用测试工具自动化运行实现静态分析自动化,避免了测试工具界面操作的繁琐步骤,能够提高静态分析效率,降低成本。本发明所述的自动化静态分析方法能够改善当前型号软件研制状态,实现代码随写随测,提高测试效率,减少人力成本,从而缩短软件研制周期,切实改善代码质量和规范。
附图说明
图1为Testbed测试工具配置流程图;
图2为静态分析自动化执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为静态分析自动化执行流程图,如图2所示,本实施例,提供一种自动化静态分析方法,所述静态分析方法包括以下步骤:
(1)文件和测试工具配置
图1为Testbed测试工具配置流程图,如图1所示,对测试工具进行测试环境配置,以提供第二待测文件的运行环境。所述测试工具为Testbed测试工具。在进行测试环境配置时,对所述第二待测文件配置适用的头文件、编译宏、编码规则集、代码评审报告、质量评审报告和数据分析报告。通过python脚本读取INI配置文件,获取SVN原始待测文件路径、测试工具工作路径、待测文件版本号信息。
(2)提取待测文件:
对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;
进一步地,所述比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
(3)对第二待测文件执行静态分析
采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告。
进一步地,所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析。
进一步地,所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,添加第二待测文件时,每20个第二待测文件执行一次添加操作,以避免命令行过长带来的异常中断问题。
进一步地,在对每20个第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名循环执行字符串拼接操作,循环次数为20次。
进一步地,所述执行静态分析包括:
设置测试参数,选择配置编码规则检查、复杂度分析、函数信息分析、数据流分析、交叉索引、信息流分析、数据对象分析参数中的一个或多个;
通过对比第二待测文件和设定的编码规则集,确认第二待测文件是否违反编码规则;
通过递归遍历第二待测文件中的函数,筛选不符合质量模型的函数,获取并记录第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息。
进一步地,根据记录的第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息生成静态分析报告;所述静态分析报告包括分析范围报告、测试管理报告、代码评审报告、质量评审报告、设计评审报告、数据流报告、数据对象分析报告、静态调用关系图、用户自定义类型报告、静态控制流图中的一个或多个。
以上所述,仅为本发明的具体实施例,对本发明进行详细描述,未详尽部分为常规技术。但本发明的保护范围不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种自动化静态分析方法,其特征在于,所述静态分析方法包括:
提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;
对测试工具进行测试环境配置,以提供第二待测文件的运行环境;
对第二待测文件执行静态分析:采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告。
2.根据权利要求1所述的自动化静态分析方法,其特征在于,
所述比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
3.根据权利要求1所述的自动化静态分析方法,其特征在于,所述测试工具为Testbed测试工具;在进行测试环境配置时,对所述第二待测文件配置适用的头文件、编译宏、编码规则集、代码评审报告、质量评审报告和数据分析报告。
4.根据权利要求1所述的自动化静态分析方法,其特征在于,所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析。
5.根据权利要求4所述的自动化静态分析方法,其特征在于,所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,添加第二待测文件时,每20个第二待测文件执行一次添加操作,以避免命令行过长带来的异常中断问题。
6.根据权利要求5所述的自动化静态分析方法,其特征在于,在对每20个第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名循环执行字符串拼接操作,循环次数为20次。
7.根据权利要求1所述的自动化静态分析方法,其特征在于,所述执行静态分析包括:
对测试工具设置测试参数,选择配置编码规则检查、复杂度分析、函数信息分析、数据流分析、交叉索引、信息流分析、数据对象分析参数中的一个或多个;
通过对比第二待测文件和设定的编码规则集,确认第二待测文件是否违反编码规则;
通过递归遍历第二待测文件中的函数,筛选不符合质量模型的函数,获取并记录第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息。
8.根据权利要求1所述的自动化静态分析方法,其特征在于,
根据记录的第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息生成静态分析报告;
所述静态分析报告包括分析范围报告、测试管理报告、代码评审报告、质量评审报告、设计评审报告、数据流报告、数据对象分析报告、静态调用关系图、用户自定义类型报告、静态控制流图中的一个或多个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911227859.5A CN110990281B (zh) | 2019-12-04 | 2019-12-04 | 一种自动化静态分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911227859.5A CN110990281B (zh) | 2019-12-04 | 2019-12-04 | 一种自动化静态分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990281A true CN110990281A (zh) | 2020-04-10 |
CN110990281B CN110990281B (zh) | 2023-11-07 |
Family
ID=70090042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911227859.5A Active CN110990281B (zh) | 2019-12-04 | 2019-12-04 | 一种自动化静态分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990281B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104424088A (zh) * | 2013-08-21 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 软件的测试方法及装置 |
CN104615540A (zh) * | 2015-02-10 | 2015-05-13 | 上海创景计算机系统有限公司 | 代码规范管理系统 |
CN104850311A (zh) * | 2015-05-26 | 2015-08-19 | 中山大学 | 一种移动应用版本更新的图形化说明生成方法及系统 |
CN105302710A (zh) * | 2014-07-03 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 一种确定需要回归测试的测试用例的方法和装置 |
CN106294156A (zh) * | 2016-08-11 | 2017-01-04 | 北京邮电大学 | 一种静态代码缺陷检测分析方法及装置 |
CN106294096A (zh) * | 2015-05-13 | 2017-01-04 | 腾讯科技(成都)有限公司 | 一种信息处理方法及装置 |
US9652615B1 (en) * | 2014-06-25 | 2017-05-16 | Symantec Corporation | Systems and methods for analyzing suspected malware |
US20180167402A1 (en) * | 2015-05-05 | 2018-06-14 | Balabit S.A. | Computer-implemented method for determining computer system security threats, security operations center system and computer program product |
CN109542759A (zh) * | 2018-09-30 | 2019-03-29 | 惠州市德赛西威汽车电子股份有限公司 | 一种Linux平台稳定性测试的方法 |
CN109871319A (zh) * | 2019-01-18 | 2019-06-11 | 深圳壹账通智能科技有限公司 | 项目代码扫描方法、装置、计算机设备及存储介质 |
-
2019
- 2019-12-04 CN CN201911227859.5A patent/CN110990281B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104424088A (zh) * | 2013-08-21 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 软件的测试方法及装置 |
US9652615B1 (en) * | 2014-06-25 | 2017-05-16 | Symantec Corporation | Systems and methods for analyzing suspected malware |
CN105302710A (zh) * | 2014-07-03 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 一种确定需要回归测试的测试用例的方法和装置 |
CN104615540A (zh) * | 2015-02-10 | 2015-05-13 | 上海创景计算机系统有限公司 | 代码规范管理系统 |
US20180167402A1 (en) * | 2015-05-05 | 2018-06-14 | Balabit S.A. | Computer-implemented method for determining computer system security threats, security operations center system and computer program product |
CN106294096A (zh) * | 2015-05-13 | 2017-01-04 | 腾讯科技(成都)有限公司 | 一种信息处理方法及装置 |
CN104850311A (zh) * | 2015-05-26 | 2015-08-19 | 中山大学 | 一种移动应用版本更新的图形化说明生成方法及系统 |
CN106294156A (zh) * | 2016-08-11 | 2017-01-04 | 北京邮电大学 | 一种静态代码缺陷检测分析方法及装置 |
CN109542759A (zh) * | 2018-09-30 | 2019-03-29 | 惠州市德赛西威汽车电子股份有限公司 | 一种Linux平台稳定性测试的方法 |
CN109871319A (zh) * | 2019-01-18 | 2019-06-11 | 深圳壹账通智能科技有限公司 | 项目代码扫描方法、装置、计算机设备及存储介质 |
Non-Patent Citations (6)
Title |
---|
"LDRA-Testbed静态分析操作步骤.docx", pages 1 - 12 * |
AVIJIT MANDAL: "A Generic Static Analysis Framework for Domain-specific Languages", 《2018 IEEE 23RD INTERNATIONAL CONFERENCE ON EMERGING TECHNOLOGIES AND FACTORY AUTOMATION (ETFA)》, pages 1 - 6 * |
ICEBERG_HORN: "LDRA Testbed静态分析", pages 1 - 3, Retrieved from the Internet <URL:《http://www.360doc.com/content/09/0521/23/111971_3599513.shtml》> * |
L.S. CHIN: "A Survey of Software Testing Tools for Computational Science", 《SOFTWARE ENGINEERING GROUP COMPUTATIONAL SCIENCE & ENGINEERING DEPARTMENT》, pages 1 - 24 * |
史莹莹;程方铎;费清春;: "基于TestBed的雷达软件接口测试研究与应用", 信息化研究, no. 06, pages 1 - 3 * |
邹会荣: "基于LDRA Testbed的飞机中央维护系统覆盖测试", 《计算机软件及计算机应用》, pages 1 - 4 * |
Also Published As
Publication number | Publication date |
---|---|
CN110990281B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10459695B2 (en) | Correction of code errors using machine learning | |
CN103150249B (zh) | 一种自动化测试的方法和系统 | |
CN108763091B (zh) | 用于回归测试的方法、装置及系统 | |
CN110990282B (zh) | 一种自动化单元测试方法 | |
CN103092761A (zh) | 基于差异信息文件识别和检查修改代码块的方法及装置 | |
CN106227654A (zh) | 一种测试平台 | |
CN104657274A (zh) | 软件界面测试方法及装置 | |
CN111208995A (zh) | Ibm主机作业的自动生成方法、系统、装置及存储介质 | |
CN111736865A (zh) | 一种数据库升级方法及系统 | |
CN111258876B (zh) | 一种微服务架构下的精确回归测试方法及装置 | |
CN116541308B (zh) | 一种回归测试方法及系统 | |
CN117421217A (zh) | 一种软件功能自动测试方法、系统、终端及介质 | |
CN112084108A (zh) | 一种测试脚本生成方法、装置及相关组件 | |
CN110990281B (zh) | 一种自动化静态分析方法 | |
CN109101355B (zh) | 一种提取错误现场特征测试激励的处理器调试方法 | |
CN116400950A (zh) | 一种基于版本控制的DevOps元流水线系统 | |
CN116069628A (zh) | 一种智能处置的软件自动化回归测试方法、系统及设备 | |
CN113312485B (zh) | 日志自动化分类方法及装置、计算机可读存储介质 | |
CN113672509A (zh) | 自动化测试方法、装置、测试平台及存储介质 | |
CN113641573A (zh) | 基于修订日志的程序分析软件自动化测试方法及系统 | |
CN112699279A (zh) | 组件自动化处理方法、装置、设备和存储介质 | |
CN114253867B (zh) | 基于神经网络模型的自动化测试方法、装置及系统 | |
CN117421009B (zh) | 信号代码生成方法、装置、终端设备以及存储介质 | |
CN114064157B (zh) | 基于页面元素识别的自动化流程实现方法、系统、设备及介质 | |
CN116185883A (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 |