智能化软件测试系统及方法与流程

文档序号:18257322发布日期:2019-07-24 10:21阅读:622来源:国知局
智能化软件测试系统及方法与流程

本发明涉及计算机软件应用技术领域,尤其涉及一种智能化软件测试系统及方法。



背景技术:

软件开发过程由一组软件开发活动构成。根据SWEBOK(Software Engineering Body of Knowledge,软件工程知识体系)的分类,这些活动主要包括:需求工程、软件设计、软件构造、软件测试、软件维护和演化。作为软件开发过程中的一个重要活动,软件测试又可以根据不同维度继续细分,如功能测试和非功能测试;单元测试和静态代码分析。

虽然软件测试领域中已经存在多种方法和工具,但这些方法和工具往往只关注软件测试中一个较小的分支,如EvoSuite(EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合JUnit的标准,可直接在JUnit中运行)仅关注单元测试,而无法应用到其他的测试类型中。这导致了现有的方法和工具较为零散,在真实的软件开发中无法很好地集成,从而可能在软件开发的过程中导致一系列的问题(如较高的学习和管理成本,使管理碎片化)。此外,软件测试在现阶段仍然存在大量的人工参与,导致了较高的人力成本。



技术实现要素:

本发明实施例所要解决的技术问题在于,提供一种智能化软件测试系统及方法,以使在软件测试中降低人工参与和测试成本。

为了解决上述技术问题,本发明实施例提出了一种智能化软件测试系统,包括控制中心、单元测试系统、静态代码分析系统、冒烟测试和功能测试系统及性能测试系统,其中,

控制中心用于项目提取、系统与工具调用及任务调度,控制中心包括项目提取模块、功能调用模块及任务队列,其中,项目提取模块用于从版本控制系统提取软件项目源代码及相关文档;功能调用模块用于调用所述四个测试系统及工程管理工具;任务队列负责调度所需执行的任务;

单元测试系统用于对软件源代码进行单元测试,单元测试系统包括用例生成模块、用例执行模块A、单元测试插件及报告生成模块A,其中,用例生成模块根据软件代码自动化生成测试用例;用例执行模块A自动化执行测试用例;单元测试插件用于在集成开发环境中自动化执行测试用例;报告生成模块A用于自动化地生成单元测试报告;

静态代码分析系统用于对软件源代码进行分析,包括代码分析模块、代码分析插件及报告生成模块B,其中,代码分析模块用于对控制中心提取的代码进行分析;代码分析插件用于在集成开发环境中对代码进行分析;报告生成模块B负责自动化地生成代码分析报告;

冒烟测试和功能测试系统用于对软件项目进行冒烟测试和功能测试,且包括接口文档读取模块、接口文档解析模块、数据组装模块、接口请求模块及报告生成模块C,其中,接口文档读取模块用于读取项目接口文档;接口文档分析模块用于分析读取的接口文档;数据组装模块负责组装生成接口请求;接口请求模块负责执行生成的接口请求;报告生成模块C用于自动化地生成冒烟测试或功能测试报告;

性能测试系统用于测试软件的性能,包括用例执行模块B和报告生成模块D,其中,用例执行模块B用于自动化执行测试用例;报告生成模块D负责自动化地生成性能测试报告。

相应地,本发明实施例还提供了一种智能化软件测试方法,包括:

单元测试步骤:从代码版本管理服务器上拉取最新的代码,编译所述代码,生成并执行单元测试用例,生成单元测试报告;

静态代码分析步骤:从代码版本管理服务器上拉取最新的代码,编译并分析所述代码,生成代码分析报告;

冒烟测试和功能测试步骤:读取接口设计文档,解析接口设计文档中的信息,为每个接口生成正确的HTTP请求代码,依次请求各个接口,记录请求结果,生成冒烟测试报告;根据人工排序和组合的各个接口映射特定的功能,按组合依次请求接口完成特定功能测试,记录特定功能的测试结果,完成所有接口组合的测试并生成功能测试报告;

性能测试步骤:根据人工设计测试用例和人工编写测试脚本,执行测试脚本并记录每一个用例的测试结果,再生成性能测试报告。

本发明的有益效果为:本发明集成了软件测试中的多种测试类型,提供了较大程度上的自动化和智能化能力,因此有效降低了在软件测试中的人工参与度,进而大大降低了软件测试成本。

附图说明

图1是本发明实施例的智能化软件测试系统的结构示意图。

图2是本发明实施例的单元测试系统、静态代码分析系统、冒烟测试和功能测试系统及性能测试系统的测试对应组成示意图。

图3是本发明实施例的智能化软件测试方法的流程示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本发明作进一步详细说明。

本发明实施例中若有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

另外,在本发明中若涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。

请参照图1,本发明实施例的智能化软件测试系统包括控制中心、单元测试系统、静态代码分析系统、冒烟测试和功能测试系统及性能测试系统。

控制中心用于项目提取、系统与工具调用及任务调度,控制中心包括项目提取模块、功能调用模块及任务队列,其中,项目提取模块用于从版本控制系统提取软件项目源代码及相关文档;功能调用模块用于调用所述四个测试系统及工程管理工具;任务队列负责调度所需执行的任务。

作为一种实施方式,控制中心采用Jenkins实现。Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

单元测试系统用于对软件源代码进行单元测试,单元测试系统包括用例生成模块、用例执行模块A、单元测试插件及报告生成模块A,其中,用例生成模块根据软件代码自动生成测试用例;用例执行模块A自动化执行测试用例;单元测试插件用于在集成开发环境中自动化执行测试用例;报告生成模块A用于自动化地生成单元测试报告。

作为一种实施方式,用例生成模块采用基于EvoSuite的系统实现。

作为一种实施方式,用例执行模块A及单元测试插件采用基于JUnit的系统实现。

静态代码分析系统用于对软件源代码进行分析,包括代码分析模块、代码分析插件及报告生成模块B,其中,代码分析模块用于对控制中心提取的代码进行分析;代码分析插件用于在集成开发环境中对代码进行分析;报告生成模块B负责自动化地生成代码分析报告。

作为一种实施方式,静态代码分析系统用于对Java源代码的分析、HTML源代码的分析、JavaScript源代码的分析。

作为一种实施方式,静态代码分析系统基于SonarQube、Sonar-scanner、SonarLint的系统实现。其中SonarQube用于储存、分析、展示代码分析结果Sonar-scanner和SonarLint(集成开发环境的插件)用于分析代码。

冒烟测试和功能测试系统用于对软件项目进行冒烟测试和功能测试,且包括接口文档读取模块、接口文档解析模块、数据组装模块、接口请求模块及报告生成模块C,其中,接口文档读取模块用于读取项目接口文档;接口文档分析模块用于分析读取的接口文档;数据组装模块负责组装生成接口请求;接口请求模块负责执行生成的接口请求;报告生成模块C用于自动化地生成冒烟测试或功能测试报告。

作为一种实施方式,冒烟测试和功能测试系统采用基于Scrappy或Selenium的系统实现。

性能测试系统用于测试软件的性能,包括用例执行模块B和报告生成模块D,其中,用例执行模块B用于自动化执行测试用例;报告生成模块D负责自动化地生成性能测试报告。

作为一种实施方式,性能测试系统采用基于Jmeter的系统实现。

作为一种实施方式,本发明的单元测试系统、静态代码分析系统、冒烟测试和功能测试系统及性能测试系统四个系统互相独立,可以独立运行,也可以按预设的顺序依次运行。

请参照图3,本发明实施例的智能化软件测试方法包括单元测试步骤、静态代码分析步骤、冒烟测试和功能测试步骤及性能测试步骤。

单元测试步骤:从代码版本管理服务器上拉取最新的代码,编译所述代码,生成并执行单元测试用例,生成单元测试报告。

静态代码分析步骤:从代码版本管理服务器上拉取最新的代码,编译并分析所述代码,生成代码分析报告。

冒烟测试和功能测试步骤:读取接口设计文档,解析接口设计文档中的信息,为每个接口生成正确的HTTP请求代码,依次请求各个接口,记录请求结果,生成冒烟测试报告;根据人工(用户)排序和组合的各个接口映射特定的功能,按组合依次请求接口完成特定功能测试,记录特定功能的测试结果,完成所有接口组合的测试并生成功能测试报告。

性能测试步骤:根据人工设计测试用例和人工编写测试脚本,执行测试脚本并记录每一个用例的测试结果,再生成性能测试报告。

作为一种实施方式,单元测试步骤还包括:执行根据人工(用户)补充的测试用例,并生成单元测试报告(人工基于全自动化单元测试的结果补充测试用例)。

作为一种实施方式,本发明的单元测试步骤、静态代码分析步骤、冒烟测试和功能测试步骤及性能测试步骤的四个步骤互相独立,可以按照单元测试步骤、静态代码分析步骤、冒烟测试和功能测试步骤及性能测试步骤的顺序,也可以打乱顺序按预设的顺序依次进行。

示例:本发明实施例的智能化软件测试系统适用的软件源代码由Java、JavaScript、HTML、CSS等编写。其中,控制中心由Jenkins实现,静态代码分析由SonarQube、Sonar-scanner、SonarLint(集成开发环境的插件)实现,单元测试由Evosuite和JUnit实现,性能测试由Jmeter实现。

其中,本发明实施例的智能化软件测试系统使用的集成开发环境(IDE)为Eclipse,工程管理工具为Maven,版本控制程序为SVN。

按照以上内容,各类测试对应组成如图2所示。

相应的,本发明实施例的智能化软件测试方法的具体流程为:

(1)完成所有配置工作,包括但不限于构建SonarQube服务器、SonarLint环境、EvoSuite环境、Maven环境、JUnit环境,在Jenkins上建立四个项目,即单元测试项目、静态代码分析项目、冒烟测试和功能测试项目、性能测试项目。

(2)在Jenkins上执行单元测试项目。

(3)Jenkins从SVN服务器上拉取最新的代码。

(4)Jenkins调用Maven编译代码。

(5)Jenkins调用EvoSuite生成单元测试用例。

(6)Jenkins调用JUnit自动化执行单元测试用例。

(7)Jenkins调用JUnit自动化生成单元测试报告。

(8)基于全自动化单元测试的结果人工补充测试用例。

(9)使用Eclipse和JUnit自动化执行单元测试用例。

(10)使用Eclipse和JUnit自动化生成单元测试报告。

(11)根据单元测试报告人工修复代码。

(12)重复执行(2)~(11)直到所有发现的Bug均被修复。

(13)在Jenkins上执行静态代码分析项目。

(14)Jenkins从SVN服务器上拉取最新的代码。

(15)Jenkins调用Maven编译代码。

(16)Jenkins调用Sonar-scanner分析代码。

(17)Sonar-scanner生成代码分析报告,并上传至SonarQube服务器。

(18)每个Java工程师使用SonarLint在Eclipse中分析代码,并完成代码修复,也可以通过浏览器访问SonarQube服务器上的结果并完成代码修复。其他工程师通过浏览器访问SonarQube服务器上的结果并完成代码修复。

(19)重复执行(13)~(18)直到所有代码问题均被修复。

(20)在Jenkins上执行冒烟测试和功能测试项目。

(21)Jenkins调用接口文档读取模块读取接口设计文档。

(22)Jenkins调用接口文档解析模块解析接口设计文档中的信息。

(23)Jenkins调用数据组装模块为每个接口生成正确的HTTP请求代码。

(24)Jenkins调用接口请求模块依次请求各个接口。

(25)Jenkins调用报告生成模块C记录请求结果,并生成冒烟测试报告。

(26)根据冒烟测试报告人工修复代码。

(27)重复执行(20)~(26)直到冒烟测试通过。

(28)人工排序和组合各个接口,以映射特定的功能。

(29)Jenkins调用数据组装模块为特定组合生成正确的http队列。

(30)Jenkins调用接口请求模块按队列依次请求接口以完成特定功能测试。

(31)重复执行(28)~(30)直到所有功能均被测试。

(32)Jenkins调用报告生成模块C记录请求结果,并生成功能测试报告。

(33)根据功能测试报告人工修复代码。

(34)重复执行(28)~(33)直到功能测试通过。

(35)人工设计性能测试用例。

(36)人工编写性能测试脚本。

(37)Jenkins调用Jmeter执行测试脚本。

(38)Jmeter记录每一个用例的测试结果。

(39)Jmeter生成性能测试报告。

(40)根据性能测试报告人工调优。

(41)重复执行(35)~(40)直到性能测试通过。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1