CN111400198B - 一种自适应的软件测试系统 - Google Patents
一种自适应的软件测试系统 Download PDFInfo
- Publication number
- CN111400198B CN111400198B CN202010492027.2A CN202010492027A CN111400198B CN 111400198 B CN111400198 B CN 111400198B CN 202010492027 A CN202010492027 A CN 202010492027A CN 111400198 B CN111400198 B CN 111400198B
- Authority
- CN
- China
- Prior art keywords
- test
- module
- script
- testing
- interface
- 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
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种自适应的软件测试系统,包括应用层、服务层以及存储层;应用层包括平台管理模块、软件测试模块以及测试工具模块;平台管理模块用于调用服务层以及存储层中各功能模块;软件测试模块集成测试框架,并用于自动生成测试脚本、自动构建测试数据;测试工具模块集成多种测试工具;服务层包括测试控制模块、测试执行模块、脚本管理模块以及基础能力模块;测试控制模块用于软件测试过程的控制;测试执行模块用于调用功能脚本执行相应的软件测试过程;脚本管理模块用于存储并管理功能脚本;基础能力模块用于提供基础功能子模块;存储层用于存储测试脚本、测试配置、度量数据。本发明适用不同领域软件测试,贯穿软件测试全流程。
Description
技术领域
本发明涉及软件测试技术领域,特别涉及一种自适应的软件测试系统、测试脚本自动生成方法、回归测试方法以及测试结果智能分析方法。
背景技术
软件测试是软件开发过程中不可或缺的一环,有效的软件测试能够保障软件质量,提升用户体验。随着软件行业的发展,尤其在日新月异的互联网时代,不断丰富的业务需求和不断加速的版本迭代都给软件测试带来了巨大挑战。传统的软件测试,如冒烟测试、功能测试、回归测试,大多依靠手工,但手工测试效率低,已无法满足当前日益加速的版本迭代要求。因此,在现代软件测试流程中,已逐步采用自动化测试替代手工测试,业内也不断推出各种测试工具和框架,以期节省人力和时间成本、提高测试效率。
但是,目前主流的测试框架或工具大多侧重于软件测试的一个领域,如用于接口自动化的requests + unittest框架、用于web自动化的Selenium框架、用于提供自动化测试执行和管理功能的Robot Framework框架以及用于性能测试的Jemter、LoadRunner框架等。
当前缺少一款贯穿软件测试全流程的测试平台,且主流的测试工具尤其是自动化测试工具对测试人员的技术要求较高,从而导致测试脚本的编写和维护成本高。因此虽然有各种工具的支撑,人工参与的成分仍然很大,门槛高、效率低的测试工具及流程无法适应不断加速的版本迭代。
发明内容
基于此,有必要提供一种适用于不同领域软件测试的自适应的软件测试系统,以解决现有技术中软件测试框架以及工具仅针对一个领域,无法贯穿软件测试全流程的技术问题。
本发明实施例一方面提供一种自适应的软件测试系统,包括应用层、服务层以及存储层;
所述应用层包括平台管理模块、软件测试模块以及测试工具模块;所述平台管理模块用于调用所述服务层以及所述存储层中各功能模块;所述软件测试模块集成测试框架,并用于自动生成测试脚本、自动构建测试数据;所述测试工具模块集成多种测试工具;
所述服务层包括测试控制模块、测试执行模块、脚本管理模块以及基础能力模块;所述测试控制模块用于软件测试过程的控制;所述测试执行模块用于调用所述脚本管理模块中功能脚本,执行相应的软件测试过程;所述脚本管理模块用于存储并管理功能脚本;所述基础能力模块用于提供所述应用层以及服务层所需的基础功能子模块;
所述存储层用于存储测试脚本、测试配置、度量数据以及用户操作记录。
作为上述实施例的进一步改进,所述软件测试模块包括自动化测试模块;所述自动化测试模块集成自动化测试框架,用于自动构建测试数据、自动生成自动化测试脚本,并用于对所述自动化测试脚本进行查看、编辑以及执行;
所述测试控制模块包括自动化测试控制子模块,所述自动化测试控制子模块用于选择测试环境、选择执行器以及选择自动化测试集;
所述测试执行模块包括自动化测试执行子模块,所述自动化测试执行子模块用于调用相应功能脚本,执行所述自动化测试脚本。
作为上述实施例的进一步改进,所述软件测试模块包括性能测试模块;所述性能测试模块集成性能测试框架,用于对性能测试脚本进行查看、编辑以及执行;
所述测试控制模块包括性能测试控制子模块,所述性能测试控制子模块用于测试所需硬件资源的调度情况、设置压测参数以及选择性能测试集;
所述测试执行模块包括性能测试执行子模块,所述性能测试执行子模块用于调用相应功能脚本,执行所述性能测试脚本。
作为上述实施例的进一步改进,所述平台管理模块具体用于设置路由表以及用户权限表,并根据用户指令获取需要调用的目标功能模块,根据用户权限表判断用户是否有权调用目标功能模块,如果有权限,则根据路由表获取所述目标功能模块的路由路径,并根据所述路由路径调用所述目标功能模块,如果没有权限,则拒绝访问。
作为上述实施例的进一步改进,所述应用层还包括测试度量模块,所述测试度量模块用于采集度量数据;
所述测试执行模块还包括度量执行模块,所述度量执行模块用于根据所述度量数据、调用相应功能脚本,对软件测试质量进行量化分析。
本发明实施例还提供一种自适应的测试脚本自动生成方法,采用所述自适应的软件测试系统实现,具体包括以下步骤:
所述平台管理模块调用所述自动化测试模块,利用所述自动化测试模块生成各接口的自动化脚本;
所述平台管理模块调用所述自动化测试模块以及所述基础能力模块,利用所述自动化测试模块以及相关的基础功能子模块定期提取被测软件系统的生产日志,解析所述生产日志,得到各接口的调用信息;
所述自动化测试模块根据各接口的调用信息建立接口调用关系网络图,根据所述接口调用关系网络图生成业务测试路径;
所述自动化测试模块获取与所述业务测试路径相关的关联接口的自动化脚本,结合所述业务测试路径生成所述自动化测试脚本。
作为上述实施例的进一步改进,生成接口的自动化脚本,具体为:
通过解析接口文档生成所述自动化脚本,或者解析接口定义类的接口字段生成所述自动化脚本。
作为上述实施例的进一步改进,根据各接口的调用信息建立接口调用关系网络图,根据所述接口调用关系网络图生成业务测试路径,具体为:
将不同的接口请求作为所述调用关系网络图的接口节点,将程序状态作为所述接口调用关系网络图的状态节点;
根据各接口的调用信息,生成各所述接口节点以及状态节点之间的连接关系,根据接口调用的次数对相应接口节点的连接关系设置权重,得到所述接口调用关系网络图;
跟踪业务的接口调用路径,根据所述接口调用路径以及所述调用关系网络图生成业务测试路径。
本发明实施例还提供一种自适应的回归测试方法,采用所述自适应的软件测试系统实现,具体包括以下步骤:
所述平台管理模块调用所述自动化测试模块,利用所述自动化测试模块生成单个用例的代码覆盖信息,建立用例与代码覆盖路径之间的映射库;
所述平台管理模块调用第三方版本管理工具,利用所述版本管理工具识别本次更新涉及的变更方法;
所述自动化测试模块获取与所述变更方法相应的变更代码,根据所述变更代码获取变更相关的代码覆盖路径,在所述映射库中查找与变更相关的代码覆盖路径相对应的用例作为回归用例;
所述平台管理模块调用测试控制模块、测试执行模块以及脚本管理模块,利用所述测试控制模块选择执行器,利用所述脚本管理模块读取对应的回归测试脚本,通过执行器执行所述回归用例的回归测试脚本,实现回归用例的触发执行。
本发明实施例还提供一种测试结果智能分析方法,采用所述自适应的软件测试系统实现,具体包括以下步骤:
以缺陷库中曲线数据作为样本对KNN分类模型进行训练,得到错误分类模型;
所述软件测试系统还包括环境监控模块,所述平台管理模块调用环境监控模块,利用所述环境监控模块检查被测软件系统对应服务的运行情况,若服务异常,则判定失败原因为环境错误,并在测试结束后重启服务,重新执行失败原因为环境错误的用例;若服务无异常,则判定为程序错误,并从错误日志中提取特征值,将所述特征值输入所述错误分类模型,得到错误类型。
本发明实施例的自适应的软件测试系统,本发明将测试全流程涉及的各个子过程统一到同一平台,且通过软件测试模块实现测试脚本的自动化生成,通过测试控制模块和测试执行模块实现测试过程的自动实现,实现更高程度的自动化,节省了人工成本,为高效、高质量的软件版本迭代更新提供了保障。各子过程之间通过存储层实现数据共享,为智能化测试、精准测试提供了基础。
附图说明
通过附图中所示的本发明优选实施例更具体说明,本发明上述及其它目的、特征和优势将变得更加清晰。在全部附图中相同的附图标记指示相同的部分,且并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本的主旨。
图1为本发明实施例的自适应的软件测试系统的架构图;
图2为本发明实施例的自适应的测试脚本自动生成方法的模块调用关系图;
图3为本发明实施例的自适应的回归测试方法的接口调用关系网络图;
图4为本发明实施例的自适应的回归测试方法的模块调用关系图;
图5为本发明实施例的自适应的测试结果智能分析方法的模块调用关系图。
具体实施方式
下面结合附图和具体实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
如图1所示,本发明实施例提供一种自适应的软件测试系统,以下简称测试系统或本测试系统,包括应用层、服务层以及存储层;
所述应用层包括平台管理模块、软件测试模块以及测试工具模块;所述平台管理模块用于调用所述服务层以及所述存储层中各功能模块;所述软件测试模块集成测试框架,并用于自动生成测试脚本、自动构建测试数据;所述测试工具模块集成多种测试工具;
所述服务层包括测试控制模块、测试执行模块、脚本管理模块以及基础能力模块;所述测试控制模块用于软件测试过程的控制;所述测试执行模块用于调用所述脚本管理模块中功能脚本,执行相应的软件测试过程;所述脚本管理模块用于存储并管理功能脚本;所述基础能力模块用于提供所述应用层以及服务层所需的基础功能子模块;
所述存储层用于存储测试脚本、测试配置、度量数据以及用户操作记录。
本实施例提供的自适应的软件测试系统,采用层次化设计模式、模块化测试框架,将测试全过程(包括测试数据构建、测试脚本生成、性能测试、测试度量等)涉及的各功能模块统一平台化。
具体的,本测试系统包括应用层、服务层和存储层。
应用层包含平台管理模块、软件测试模块和测试工具模块。
平台管理模块控制整个测试系统的路由表及用户权限,根据用户权限及用户指令调用下层(服务层、存储层)各功能模块。
软件测试模块集成了测试框架,优选集成多个测试框架,以适应不同领域的软件测试,且测试框架的具体类型可根据需求进行灵活的扩展,软件测试模块用于自动生成测试脚本以及自动构建测试数据,从而减少人工参与度,减少人工成本,还用于对自动生成的测试脚本进行显示、编辑、执行以及对测试报告的生成显示。
测试工具模块集成了各种测试工具,同样的,可以根据需要灵活集成各种开源工具或者自研工具,如环境监控工具、ssh-client-web端工具、sql-client-web端工具、IDE-web工具等。
服务层为上层(应用层)的应用模块提供各种能力,包括四个模块,分别是测试控制模块、测试执行模块、脚本管理模块和基础能力模块。
测试控制模块提供软件测试控制功能,控制软件测试过程自动进行。
测试执行模块用于调用下层脚本管理模块的各种功能脚本,以便执行各类测试过程,具体包括度量执行、自动化测试执行、性能测试执行和工具执行。
脚本管理模块负责对各类功能脚本进行保存和版本管理。功能脚本包括自动化测试脚本和性能测试脚本,还包括度量脚,度量脚本负责收集度量数据、对度量数据进行二次处理及落库并生成度量报表。
基础能力模块提供供上层及本层各模块调用的各种基础功能,包括测试路径探索、数据库连接、消息队列连接、文件子系统操作等。
存储层为整个测试系统提供数据存储,包括文件服务器和平台数据库。本测试系统涉及的所有自动化测试脚本、性能测试脚本、度量脚本、工具脚本以及各类测试报告,均以文件形式保存在文件服务器上。而各类配置、度量数据及用户的操作记录则保存在平台数据库中。
本实施例将测试全流程涉及的各个子过程统一到同一平台,且通过软件测试模块实现测试脚本的自动化生成,通过测试控制模块和测试执行模块实现测试过程的自动实现,实现更高程度的自动化,节省了人工成本,为高效、高质量的软件版本迭代更新提供了保障。各子过程之间通过存储层实现数据共享,为智能化测试、精准测试提供了基础。
本实施例中的软件测试主要包括自动化测试以及性能测试两个部分。因此软件测试模块分为了自动化测试模块和性能测试模块两个部分,分别用于自动生成自动化测试脚本和性能测试脚本。相应的,测试控制模块分为自动化测试控制子模块和性能测试控制子模块,测试执行模块分为自动化测试执行子模块以及性能测试执行子模块。下面进行详细阐述。
在优选实施例中,如图1所示,所述软件测试模块包括自动化测试模块;所述自动化测试模块集成自动化测试框架,用于自动构建测试数据、自动生成自动化测试脚本,并用于对所述自动化测试脚本进行查看、编辑以及执行;
所述测试控制模块包括自动化测试控制子模块,所述自动化测试控制子模块用于选择测试环境、选择执行器以及选择自动化测试集;
所述测试执行模块包括自动化测试执行子模块,所述自动化测试执行子模块用于调用相应功能脚本,执行所述自动化测试脚本。
具体的,本实施例中自动化测试模块集成了Robotframework框架,支持对自动化测试脚本的查看、编辑、执行和测试报告查看,并提供自动化测试脚本自动生成和测试数据自动构建功能。自动化测试控制子模块负责测试环境的选择、执行器的自动选择和功能自动化测试集的选择。自动化测试执行模块负责执行自动化测试脚本。以上三个模块在测试系统提供的平台上相互配合实现自动化测试。
在优选实施例中,如图1所示,所述软件测试模块包括性能测试模块;所述性能测试模块集成性能测试框架,用于对性能测试脚本进行查看、编辑以及执行;
所述测试控制模块包括性能测试控制子模块,所述性能测试控制子模块用于测试所需硬件资源的调度情况、设置压测参数以及选择性能测试集;
所述测试执行模块包括性能测试执行子模块,所述性能测试执行子模块用于调用相应功能脚本,执行所述性能测试脚本。
具体的,本实施例中性能测试模块集成jmeter和gatling两个性能测试框架,而且根据需要进行灵活扩展,支持对性能测试脚本的查看、编辑、执行和测试报告查看。性能测试控制子模块负责所需硬件资源的调度、压测参数的设置和性能测试集的选择。性能测试执行子模块负责执行性能测试脚本。以上三个模块在测试系统提供的平台上相互配合实现性能测试。
在优选实施例中,所述平台管理模块具体用于设置路由表以及用户权限表,并根据用户指令获取需要调用的目标功能模块,根据用户权限表判断用户是否有权调用目标功能模块,如果有权限,则根据路由表获取所述目标功能模块的路由路径,并根据所述路由路径调用所述目标功能模块,如果没有权限,则拒绝访问。
平台管理模块控制整个测试系统的路由表及用户权限,根据用户权限及用户指令调用下层(服务层、存储层)各功能模块。
本实施例提供的测试系统还提供度量测试功能,具体阐述如下。
在优选实施例中,如图1所示,所述应用层还包括测试度量模块,所述测试度量模块用于采集度量数据;
所述测试执行模块还包括度量执行模块,所述度量执行模块用于根据所述度量数据、调用相应功能脚本,对软件测试质量进行量化分析。
具体的,测试度量模块负责各类度量数据的收集、整理及展示,包括测试覆盖率统计、测试执行结果统计、缺陷数据统计等,并支持报表和图形化两种展现形,为软件测试质量的量化分析提供数据基础。相应的,测试执行模块中增加度量执行模块,用于对软件测试质量进行量化分析,从而指导测试过程不断改进。
本实施例在上述层次化、模块化的测试系统的基础之上,还提供了自适应的测试脚本自动生成方法,简化了测试代码的开发过程,提高了测试代码的开发效率,具体阐述如下。
如图2所示,本发明实施例还提供一种自适应的测试脚本自动生成方法,采用所述自适应的软件测试系统实现,具体包括以下步骤:
所述平台管理模块调用所述自动化测试模块,利用所述自动化测试模块生成各接口的自动化脚本;
所述平台管理模块调用所述自动化测试模块以及所述基础能力模块,利用所述自动化测试模块以及相关的基础功能子模块定期提取被测软件系统的生产日志,解析所述生产日志,得到各接口的调用信息;
所述自动化测试模块根据各接口的调用信息建立接口调用关系网络图,根据所述接口调用关系网络图生成业务测试路径;
所述自动化测试模块获取与所述业务测试路径相关的关联接口的自动化脚本,结合所述业务测试路径生成所述自动化测试脚本。
具体的,本优选实施例中,自动化测试模块提供接口脚本生成功能、测试路径生成功能,自动化测试脚本的生成流程具体如下:
首先,利用平台管理模块调用自动化测试模块的接口脚本生成功能,自动生成单个接口的自动化脚本。
然后,利用平台管理模块调用自动化测试模块的测试路径生成功能,同时调用基础能力模块中相关基础功能子模块,生成业务测试路径。
然后,结合单个接口的自动化脚本和业务测试路径,即可自动生成基于业务流程的自动化测试脚本。
最后,通过调用脚本管理模块将所生成的自动化测试脚本存储至于文件服务器中,同时,优选调用版本管理工具Git实现自动化测试脚本的版本管理,便于进行更新迭代管理。
在优选实施例中,生成接口的自动化脚本,具体为:
通过解析接口文档生成所述自动化脚本,或者解析接口定义类的接口字段生成所述自动化脚本。
本实施例提供两种生成接口的自动化脚本的方法:(1)导入接口文档,通过解析接口文档自动完成接口报文组装得到自动化脚本,并发送自动化脚本;(2)从第三方的版本管理工具git上拉取最新的开发代码,自动解析代码中接口定义类的各接口字段,完成接口报文组装得到自动化脚本,并发送自动化脚本。
在优选实施例中,如图3所示,根据各接口的调用信息建立接口调用关系网络图,根据所述接口调用关系网络图生成业务测试路径,具体为:
将不同的接口请求作为所述调用关系网络图的接口节点,将程序状态作为所述接口调用关系网络图的状态节点;
根据各接口的调用信息,生成各所述接口节点以及状态节点之间的连接关系,根据接口调用的次数对相应接口节点的连接关系设置权重,得到所述接口调用关系网络图;
跟踪业务的接口调用路径,根据所述接口调用路径以及所述调用关系网络图生成业务测试路径。
生成业务测试路径的具体实现方式为:定期提取被测软件系统的生产日志,由基础能力模块解析各接口调用情况,形成接口调用关系网络图。以traceid跟踪单个业务的接口调用路径,每个不同的接口请求作为接口调用关系网络图中的一个接口节点,程序状态作为接口调用关系网络图中的状态节点,根据不同状态下的接口调用及状态间的转移生成节点(节点包括状态节点和接口节点,下同)之间的连接关系。如图3所示,业务1涉及A、B、C等多个接口,接口节点以圆圈表示。以其中灰色填充的节点组成的路径的调用关系为例,说明如下:被测程序在Init状态收到A请求,程序从Init状态跳转到a状态;收到B请求,则从Init状态跳转到b状态;b状态下收到D请求且传参a,程序从b状态跳转到c状态;b状态下收到D请求且传参b,程序从b状态跳转到d状态,则接口A、B、D分别为调用关系网络图中的接口节点,状态Init、a、b、c、d分别为调用关系网络图中的状态节点,由于接口调用以及触发状态转换,各状态节点和接口节点间分别产生连接关系。通过大量的日志解析,每一次接口调用,对应节点间的连接关系的权重加1,最终形成全量接口调用关系网络图,从而生成业务测试路径。进一步的,根据接口间的调用权重,可选取权重较高的路径生成热点测试路径。
随着用例库中用例的不断增加,回归成本不断提高,为实现精准回归、提高测试效率,本发明实施例还提供了一种自适应的回归测试方法。
如图4所示,本发明实施例还提供一种自适应的回归测试方法,采用所述自适应的软件测试系统实现,具体包括以下步骤:
所述平台管理模块调用所述自动化测试模块,利用所述自动化测试模块生成单个用例的代码覆盖信息,建立用例与代码覆盖路径之间的映射库;
所述平台管理模块调用第三方版本管理工具,利用所述版本管理工具识别本次更新涉及的变更方法;
所述自动化测试模块获取与所述变更方法相应的变更代码,根据所述变更代码获取变更相关的代码覆盖路径,在所述映射库中查找与变更相关的代码覆盖路径相对应的用例作为回归用例;
所述平台管理模块调用测试控制模块、测试执行模块以及脚本管理模块,利用所述测试控制模块选择执行器,利用所述脚本管理模块读取对应的回归测试脚本,通过执行器执行所述回归用例的回归测试脚本,实现回归用例的触发执行。
具体的,平台管理模块调用自动化测试模块在单用例执行模式下,触发单个用例执行。
用例执行过程中通过测试度量模块->测试执行模块->脚本管理模块的模块调用路径,通过代码覆盖度量脚本调起jacoco,生成单个用例的代码覆盖信息,建立用例和代码覆盖路径的映射库,并自动将映射库存于平台数据库中。
脚本管理模块定期检查脚本更新情况,当有脚本新增或变更时即自动触发用例执行以及映射库的更新,生成最新的映射信息。
当需要进行回归测试时,通过平台管理模块调用自动化测试模块,进一步调用第三方的版本管理工具git,识别出本次迭代涉及的变更方法。
根据变更方法反查映射库,自动筛选出与代码变更有关的回归用例。
自动化测试模块在批量执行模式下,依据筛选出的回归用例,调用测试控制模块,根据当前资源空闲情况选择较空闲的执行器,进而调用测试执行模块、脚本管理模块读取对应的回归测试脚本,通过执行器执行回归测试脚本,实现回归用例的触发执行。
回归测试,执行结束后,测试执行模块反馈测试结果给自动化测试模块进行测试报告展示,同时将测试报告存储于文件服务器上。
测试执行过程中常常出现各种错误,手工排查效率低,尤其在业务场景不断丰富、回归用例不断增加的情况下,人工排查测试问题费时费力。为解决该问题本发明实施例还提供了一种测试结果智能分析方法,用于自动识别错误类型,提高问题排查效率。
如图5所示,本发明实施例还提供一种测试结果智能分析方法,采用所述自适应的软件测试系统实现,具体包括以下步骤:
以缺陷库中曲线数据作为样本对KNN分类模型进行训练,得到错误分类模型;
所述软件测试系统还包括环境监控模块,所述平台管理模块调用环境监控模块,利用所述环境监控模块检查被测软件系统对应服务的运行情况,若服务异常,则判定失败原因为环境错误,并在测试结束后重启服务,重新执行失败原因为环境错误的用例;若服务无异常,则判定为程序错误,并从错误日志中提取特征值,将所述特征值输入所述错误分类模型,得到错误类型。
本实施例将测试执行失败原因分为两类:环境错误和程序错误,并对程序错误的失败原因进行进一步归类。其中,环境错误通过测试脚本的前置步骤实现监控,即在前置步骤中通过调用上述测试系统中的环境监控模块检查被测系统对应服务的运行情况。程序错误则采用KNN分类算法实现具体的缺陷原因分类。
具体的,测试系统通过平台管理模块->自动化测试模块->测试执行模块->脚本管理模块的模块调用路径触发测试执行过程。由于用例执行的前置步骤中已调用环境监控模块,若服务异常,则直接标识该条用例失败并在日志中记录失败原因为“环境错误”。若服务正常,则继续执行用例步骤。直至遇到非服务异常导致的执行失败时,从错误日志中提取特征值,再基于已训练好的KNN分类模型完成程序错误的失败原因的进一步归类,并将具体失败原因记录到执行日志中。
在本轮测试结束后调用jenkins重启服务,并重新执行所有失败原因为“环境错误”的用例。
KNN(k-NearestNeighbor)算法的核心思想是,如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别。用上述测试系统中缺陷库TC Database中的缺陷数据作为样本对KNN分类模型进行训练。具体方法如下:
1.从缺陷库中抽取部分缺陷数据作为训练样本,从训练样本抽象出n维特征向量,并对训练样本的缺陷进行分类,如接口传参错误、兼容性问题、X模块Y服务处理异常等。
2.设定参数k
3.输入训练数据集T={(x1,y1),(x2,y2),...,(xn,yn)}对KNN分类模型进行训练,其中xi为训练样本的特征向量,i=1、2、···、n,x1、x2、···、xn对应上述已抽象出的n维特征向量,yi为训练样本的缺陷类别。
4. 从缺陷库中抽取部分缺陷数据作为测试样本,输入测试数据集的特征向量x,计算x与每一个训练数据之间的距离,并按照距离从小到大的顺序对训练数据进行排序,找到距离最小的k个训练数据。
5.计算k个训练数据的缺陷类别,将其作为测试元组的类别。
6.对测试数据集中的所有数据进行分类后计算误差率。
7.继续设定不同的k值重新进行训练,最后取误差率最小的k值,得到最后的错误分类模型。
本发明为了解决各测试子过程平台不统一、测试脚本编写和维护困难、回归成本高、测试缺陷难定位等问题,提供了一种智能化的自适应的软件测试系统,将测试全过程(包括测试数据构建、测试脚本生成、维护及版本管理、测试执行及结果分析、自动化回归测试、性能测试、环境监控、测试度量等)统一平台化。基于该测试系统,本发明还提供了一种自适应的自动化测试脚本自动生成方法,简化了测试代码开发过程;一种自适应的回归测试方法,实现精准回归;一种测试结果智能分析方法,自动识别错误类别,提高问题排查效率。通过上述系统及方法,减少了重复且耗时的人工操作,提高了测试效率,为智能化测试、精准测试提供了基础。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种自适应的软件测试系统,其特征在于,包括应用层、服务层以及存储层;
所述应用层包括平台管理模块、软件测试模块以及测试工具模块;所述平台管理模块用于调用所述服务层以及所述存储层中各功能模块;所述软件测试模块集成测试框架,并用于自动生成测试脚本、自动构建测试数据;所述测试工具模块集成多种测试工具;
所述服务层包括测试控制模块、测试执行模块、脚本管理模块以及基础能力模块;所述测试控制模块用于软件测试过程的控制;所述测试执行模块用于调用所述脚本管理模块中功能脚本,执行相应的软件测试过程;所述脚本管理模块用于存储并管理功能脚本;所述基础能力模块用于提供所述应用层以及服务层所需的基础功能子模块;
所述存储层用于存储测试脚本、测试配置、度量数据以及用户操作记录;
所述软件测试模块包括自动化测试模块;所述自动化测试模块集成自动化测试框架,用于自动构建测试数据、自动生成自动化测试脚本,并用于对所述自动化测试脚本进行查看、编辑以及执行;
所述测试控制模块包括自动化测试控制子模块,所述自动化测试控制子模块用于选择测试环境、选择执行器以及选择自动化测试集;
所述测试执行模块包括自动化测试执行子模块,所述自动化测试执行子模块用于调用相应功能脚本,执行所述自动化测试脚本;
所述软件测试模块包括性能测试模块;所述性能测试模块集成性能测试框架,用于对性能测试脚本进行查看、编辑以及执行;
所述测试控制模块包括性能测试控制子模块,所述性能测试控制子模块用于测试所需硬件资源的调度情况、设置压测参数以及选择性能测试集;
所述测试执行模块包括性能测试执行子模块,所述性能测试执行子模块用于调用相应功能脚本,执行所述性能测试脚本。
2.根据权利要求1所述的自适应的软件测试系统,其特征在于,所述平台管理模块具体用于设置路由表以及用户权限表,并根据用户指令获取需要调用的目标功能模块,根据用户权限表判断用户是否有权调用目标功能模块,如果有权限,则根据路由表获取所述目标功能模块的路由路径,并根据所述路由路径调用所述目标功能模块,如果没有权限,则拒绝访问。
3.根据权利要求1所述的自适应的软件测试系统,其特征在于,所述应用层还包括测试度量模块,所述测试度量模块用于采集度量数据;
所述测试执行模块还包括度量执行模块,所述度量执行模块用于根据所述度量数据、调用相应功能脚本,对软件测试质量进行量化分析。
4.一种自适应的测试脚本自动生成方法,其特征在于,采用如权利要求1-3任一所述的自适应的软件测试系统实现,具体包括以下步骤:
所述平台管理模块调用所述自动化测试模块,利用所述自动化测试模块生成各接口的自动化脚本;
所述平台管理模块调用所述自动化测试模块以及所述基础能力模块,利用所述自动化测试模块以及相关的基础功能子模块定期提取被测软件系统的生产日志,解析所述生产日志,得到各接口的调用信息;
所述自动化测试模块根据各接口的调用信息建立接口调用关系网络图,根据所述接口调用关系网络图生成业务测试路径;
所述自动化测试模块获取与所述业务测试路径相关的关联接口的自动化脚本,结合所述业务测试路径生成所述自动化测试脚本。
5.根据权利要求4所述的自适应的测试脚本自动生成方法,其特征在于,生成接口的自动化脚本,具体为:
通过解析接口文档生成所述自动化脚本,或者解析接口定义类的接口字段生成所述自动化脚本。
6.根据权利要求4所述的自适应的测试脚本自动生成方法,其特征在于,根据各接口的调用信息建立接口调用关系网络图,根据所述接口调用关系网络图生成业务测试路径,具体为:
将不同的接口请求作为所述调用关系网络图的接口节点,将程序状态作为所述接口调用关系网络图的状态节点;
根据各接口的调用信息,生成各所述接口节点以及状态节点之间的连接关系,根据接口调用的次数对相应接口节点的连接关系设置权重,得到所述接口调用关系网络图;
跟踪业务的接口调用路径,根据所述接口调用路径以及所述调用关系网络图生成业务测试路径。
7.一种自适应的回归测试方法,其特征在于,采用如权利要求1-3任一所述的自适应的软件测试系统实现,具体包括以下步骤:
所述平台管理模块调用所述自动化测试模块,利用所述自动化测试模块生成单个用例的代码覆盖信息,建立用例与代码覆盖路径之间的映射库;
所述平台管理模块调用第三方版本管理工具,利用所述版本管理工具识别本次更新涉及的变更方法;
所述自动化测试模块获取与所述变更方法相应的变更代码,根据所述变更代码获取变更相关的代码覆盖路径,在所述映射库中查找与变更相关的代码覆盖路径相对应的用例作为回归用例;
所述平台管理模块调用测试控制模块、测试执行模块以及脚本管理模块,利用所述测试控制模块选择执行器,利用所述脚本管理模块读取对应的回归测试脚本,通过执行器执行所述回归用例的回归测试脚本,实现回归用例的触发执行。
8.一种测试结果智能分析方法,其特征在于,采用如权利要求1-3任一所述的自适应的软件测试系统实现,具体包括以下步骤:
以缺陷库中曲线数据作为样本对KNN分类模型进行训练,得到错误分类模型;
所述软件测试系统还包括环境监控模块,所述平台管理模块调用环境监控模块,利用所述环境监控模块检查被测软件系统对应服务的运行情况,若服务异常,则判定失败原因为环境错误,并在测试结束后重启服务,重新执行失败原因为环境错误的用例;若服务无异常,则判定为程序错误,并从错误日志中提取特征值,将所述特征值输入所述错误分类模型,得到错误类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010492027.2A CN111400198B (zh) | 2020-06-03 | 2020-06-03 | 一种自适应的软件测试系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010492027.2A CN111400198B (zh) | 2020-06-03 | 2020-06-03 | 一种自适应的软件测试系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111400198A CN111400198A (zh) | 2020-07-10 |
CN111400198B true CN111400198B (zh) | 2020-08-28 |
Family
ID=71431899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010492027.2A Active CN111400198B (zh) | 2020-06-03 | 2020-06-03 | 一种自适应的软件测试系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400198B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11775878B2 (en) | 2020-12-22 | 2023-10-03 | Sas Institute Inc. | Automated machine learning test system |
CN112667500A (zh) * | 2020-12-23 | 2021-04-16 | 北京焦点新干线信息技术有限公司 | 回归测试方法及装置 |
CN112597043A (zh) * | 2020-12-28 | 2021-04-02 | 深圳供电局有限公司 | 软件测试方法、装置、计算机设备和存储介质 |
CN112988596B (zh) * | 2021-04-27 | 2021-08-03 | 北京全路通信信号研究设计院集团有限公司 | 一种基于状态迁移的自动测试方法及系统 |
CN113254323B (zh) * | 2021-07-05 | 2021-10-29 | 中邮消费金融有限公司 | 线上全链路压测方法、装置及计算机设备 |
CN114661609B (zh) * | 2022-04-06 | 2022-11-15 | 北京透彻未来科技有限公司 | 人工智能医疗自动化测试集成系统 |
CN115248782B (zh) * | 2022-09-22 | 2022-12-23 | 中邮消费金融有限公司 | 一种自动化测试方法、装置及计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052451A (zh) * | 2017-12-26 | 2018-05-18 | 网易(杭州)网络有限公司 | 测试方法、系统、测试服务器、测试终端及存储介质 |
CN108241582A (zh) * | 2018-01-12 | 2018-07-03 | 东华大学 | 一种基于RabbitMQ消息中间件的软件自动化测试平台 |
CN111209191A (zh) * | 2019-12-29 | 2020-05-29 | 的卢技术有限公司 | 一种实现视频分类的自动化测试方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240118A1 (en) * | 2006-02-28 | 2007-10-11 | Ido Keren | System, method, and software for testing a software application |
CN102693183B (zh) * | 2012-05-30 | 2015-04-01 | 瑞斯康达科技发展股份有限公司 | 一种实现软件自动化测试的方法及系统 |
US9977821B2 (en) * | 2014-11-26 | 2018-05-22 | Wipro Limited | Method and system for automatically generating a test artifact |
US9948749B2 (en) * | 2015-06-05 | 2018-04-17 | Apple Inc. | Method and system for rendering content using templates |
CN110502434A (zh) * | 2019-07-26 | 2019-11-26 | 苏州浪潮智能科技有限公司 | 一种自动测试方法与装置 |
CN111190812B (zh) * | 2019-12-12 | 2023-12-08 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于嵌入式设备的自动化测试框架的系统 |
-
2020
- 2020-06-03 CN CN202010492027.2A patent/CN111400198B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052451A (zh) * | 2017-12-26 | 2018-05-18 | 网易(杭州)网络有限公司 | 测试方法、系统、测试服务器、测试终端及存储介质 |
CN108241582A (zh) * | 2018-01-12 | 2018-07-03 | 东华大学 | 一种基于RabbitMQ消息中间件的软件自动化测试平台 |
CN111209191A (zh) * | 2019-12-29 | 2020-05-29 | 的卢技术有限公司 | 一种实现视频分类的自动化测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111400198A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111400198B (zh) | 一种自适应的软件测试系统 | |
EP3798846B1 (en) | Operation and maintenance system and method | |
US10310968B2 (en) | Developing software project plans based on developer sensitivity ratings detected from monitoring developer error patterns | |
CN110232024B (zh) | 软件自动化测试框架及测试方法 | |
CN103150249B (zh) | 一种自动化测试的方法和系统 | |
US6219805B1 (en) | Method and system for dynamic risk assessment of software systems | |
CN107391369B (zh) | 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 | |
US20060149990A1 (en) | System and method for fault identification in an electronic system based on context-based alarm analysis | |
EP3975482B1 (en) | Quantitative network testing framework for 5g and subsequent generation networks | |
CN101316185A (zh) | 一种基于日志文件的分析结果定位系统资源瓶颈的方法 | |
CN111859047A (zh) | 一种故障解决方法及装置 | |
CN116594913B (zh) | 一种智能软件自动化测试方法 | |
CN115657890A (zh) | 一种pra机器人可定制方法 | |
Dhanalaxmi et al. | A review on software fault detection and prevention mechanism in software development activities | |
CN115114064A (zh) | 一种微服务故障分析方法、系统、设备及存储介质 | |
CN113094235B (zh) | 一种尾延迟异常云审计系统及方法 | |
CN117519951A (zh) | 基于消息中台的实时数据处理方法及系统 | |
Hryszko et al. | Cost effectiveness of software defect prediction in an industrial project | |
CN112291302B (zh) | 物联网设备行为数据分析方法与处理系统 | |
CN112231202A (zh) | 一种基于日志监控和被测模块监控的自动提Bug方法 | |
Bhattacharyya et al. | Phase aware performance modeling for cloud applications | |
CN117971705B (zh) | 基于定制化流量洞察的智能接口自动化测试系统及方法 | |
TWI821666B (zh) | 服務管理系統及服務資訊流程的調適方法 | |
US20230216727A1 (en) | Identification of root causes in data processing errors | |
Ignatious et al. | Identifying A Regression Test Prioritization Technique and Proposing A Tool for Automation for Trade me Website |
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 |