CN113973068B - 混沌测试方法、装置、混沌测试平台及存储介质 - Google Patents
混沌测试方法、装置、混沌测试平台及存储介质 Download PDFInfo
- Publication number
- CN113973068B CN113973068B CN202111221802.1A CN202111221802A CN113973068B CN 113973068 B CN113973068 B CN 113973068B CN 202111221802 A CN202111221802 A CN 202111221802A CN 113973068 B CN113973068 B CN 113973068B
- Authority
- CN
- China
- Prior art keywords
- test
- server
- chaotic
- test case
- chaos
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/14—Arrangements for monitoring or testing data switching networks using software, i.e. software packages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供的一种混沌测试方法、装置、混沌测试平台及存储介质,涉及测试技术领域。首先,获取目标测试用例,并将目标测试用例发送至待测试服务器进行混沌测试;然后,接收待测试服务器发送的测试信息,测试信息包括测试用例在当次执行中产生的错误信息和过程信息;最后,对测试信息进行分析,当错误信息中存在已知错误,则判定所述混沌测试失败,当错误信息中不存在已知错误,则根据过程信息判断所述混沌测试是否失败。该方法通过自动采集混沌测试中产生的测试数据,并对其加以分析,可以自动筛选出一部分混沌测试失败的测试用例,减小了人工判断的工作量,提高了结果分析的效率。
Description
技术领域
本发明涉及测试技术领域,具体而言,涉及一种混沌测试方法、装置、混沌测试平台及存储介质。
背景技术
随着时代的发展,大到平安城市,小到家用监控,人们对于安防行业在生活中的应用越来越关注。而云存储在这一系列应用中尤为重要,录像数据的完整性和正确性为人们所关注。因此,云存储系统的稳定性也成为了各厂商努力的重点。
因此,为了保证云存储系统的稳定性,在云存储系统上线之前,需要对云存储系统中各服务器进行测试,在传统技术中,一般采用的是混沌测试。相较于传统测试来说,混沌测试没有明确的输入和预期结果,其通过对系统和服务的干预,来观察系统的容错能力。通过不断地测试,来探索系统实际能承受的韧性边界。
由于混沌测试的特殊性,传统的混沌测试平台,混沌测试结果的判断过多的依赖人工判断,导致结果分析效率较低。
发明内容
本发明的目的包括,例如,提供了一种混沌测试方法、装置、电子设备及存储介质,其能够通过自动采集混沌测试中产生的测试数据,并对其加以分析,可以自动筛选出一部分混沌测试失败的测试用例,减小了人工判断的工作量,提高了结果分析的效率。
本发明的实施例可以这样实现:
第一方面,本发明实施例提供了一种混沌测试方法,所述方法包括:
一种混沌测试方法,应用于混沌测试平台,所述混沌测试平台与至少一个测试服务器通信连接,所述混沌测试平台预先存储有每个所述测试服务器的IP地址和所述IP地址对应的至少一个测试用例;
所述方法包括:
根据待测试服务器的IP地址,获取所述待测试服务器的目标测试用例;其中,所述待测试服务器是所述至少一个测试服务器中的任意一个;
将所述目标测试用例发送至所述待测试服务器,以使所述待测试服务器执行所述目标测试用例进行混沌测试;
接收所述待测试服务器发送的测试信息,所述测试信息包括所述目标测试用例在当次执行中产生的错误信息和过程信息;
当所述错误信息中存在已知错误,则判定所述混沌测试失败;
当所述错误信息中不存在已知错误,则根据所述过程信息判断所述混沌测试是否失败。
在一种可能的实施方式中,所述过程信息包括测试日志和性能数据;
所述根据所述过程信息判断所述混沌是否失败的步骤,包括:
判断所述测试日志、基准测试日志和所述目标测试用例的所有矫正日志是否满足第一设定条件;其中,所述基准测试日志是所述待测试服务器前一次执行所述目标测试用例产生的,所述矫正日志是所述待测试服务器执行所述目标测试用例失败时被矫正的测试日志;
若是,则判定所述混沌测试失败;
若否,则判断所述性能数据、基准性能数据和所述目标测试用例的矫正性能数据是否满足第二设定条件;其中,所述基准性能数据是所述待测试服务器前一次执行所述目标测试用例产生的性能数据,所述矫正性能数据是所述待测试服务器执行所述目标测试用例失败时被矫正的性能数据;
若是,则判定所述混沌测试失败;
若否,则判定所述混沌测试成功。
在一种可能的实施方式中,所述混沌测试平台还存储有日志混沌矫正表,所述日志混沌矫正表包括每个所述测试服务器的所述IP地址和所述IP地址对应的每个所述测试用例的所有矫正日志;
所述判断所述测试日志、基准测试日志和所述目标测试用例的所有矫正日志是否满足第一设定条件的步骤,包括:
获得所述测试日志与基准测试日志的第一相似度;
若所述第一相似度小于第一预设值,则根据所述待测试服务器的IP地址,从所述日志混沌矫正表中获取所述目标测试用例的所有矫正日志;
获得所述测试日志与所述目标测试用例的每个矫正日志的第二相似度;
若每个所述第二相似度均小于第一预设值,则判定满足所述第一设定条件;
若所述第一相似度不小于所述第一预设值,或者,存在任意一个所述第二相似度不小于第一预设值,则判定不满足所述第一设定条件。
在一种可能的实施方式中,所述混沌测试平台还存储有性能数据混沌矫正数据库,所述性能数据混沌矫正数据库包括每个所述测试服务器的所述IP地址和所述IP地址对应的每个所述测试用例的矫正性能数据;
所述性能数据包括多条第一数据,所述基准性能数据包括多条第二数据,所述矫正性能数据包括多条矫正数据,所述多条第一数据、所述多条第二数据和所述多条矫正数据一一对应;
所述判断所述性能数据、基准性能数据和所述目标测试用例的矫正性能数据是否满足第二设定条件的步骤,包括:
获得每条所述第一数据与对应的所述第二数据的第一波动率;
若存在任意一个所述第一波动率大于第二预设值,则根据所述待测试服务器的IP地址从所述性能数据混沌矫正数据库中获取所述目标测试用例的矫正性能数据;
获得每条所述第一数据与对应的所述矫正数据的第二波动率;
若存在任意一个所述第二波动率大于第二预设值,则判定满足所述第二设定条件;
若每个所述第一波动率均小于所述第二预设值,或者,每个所述第二波动率均小于所述第二预设值,则判定不满足所述第二设定条件。
在一种可能的实施方式中,所述方法还包括:
当判定所述混沌测试失败,生成失败原因;
所述当判定所述混沌测试失败,生成失败原因的步骤,包括:
在通过所述错误信息判定所述混沌测试失败的情况下,将所述已知错误作为所述失败原因;
在通过所述测试日志判定所述混沌测试失败的情况下,获取所述测试日志中的错误日志作为所述失败原因;
在通过所述性能数据判定所述混沌测试失败的情况下,根据所述第二波动率确定所述执行失败原因。
在一种可能的实施方式中,所述方法还包括:
在通过所述测试日志或者所述性能数据判定所述混沌测试失败的情况下,生成提示信息并发送至待测试服务器,以使用户根据所述提示信息确认所述混沌测试是否失败;
若用户确认所述混沌测试失败,则获取对应的所述失败原因并存储至测试用例执行记录表;
若用户确认所述混沌测试成功,则将所述目标测试用例在当次执行中产生的测试日志加入日志混沌矫正表、性能数据加入性能数据混沌矫正数据库。
在一种可能的实施方式中,所述混沌测试平台还存储有测试用例集成表和测试用例数据库,所述测试用例集成表包括多个测试用例,所述测试用例数据库包括每个所述测试用例的标识及对应的硬件型号;
所述根据待测试服务器的IP地址,获取所述待测试服务器的目标测试用例的步骤,具体包括:
根据所述测试用例数据库和每个所述测试服务器的硬件型号,生成配置文件,其中,所述配置文件表征每个所述测试服务器的IP地址和至少一个测试用例的标识的对应关系;
根据所述待测试服务器的IP地址,从所述配置文件中确定出所述目标测试用例的标识;
根据所述目标测试用例的标识,从测试用例集成表中获取目标测试用例。
在一种可能的实施方式中,所述混沌测试平台与多个服务器通信连接;
所述根据所述测试用例数据库和每个所述测试服务器的硬件型号,生成配置文件的步骤,包括:
接收每个所述服务器发送的注册信息,其中,所述注册信息包括所述服务器的软件运行状态、硬件型号和IP地址;根据所述软件运行状态,从所述多个服务器中确定出每个所述测试服务器;
根据每个所述测试服务器的硬件型号,从测试用例数据库中获取每个所述测试服务器的至少一个测试用例的标识;
根据每个所述测试服务器的IP地址和至少一个测试用例的标识,生成所述配置文件。
在一种可能的实施方式中,所述方法还包括:
在判定所述混沌测试失败的情况下,对历史性能数据进行归一化处理,得到归一特征值;
对归一特征值进行数据转换,得到数据变化率;
将数据变化率作为训练样本,对预先建立的回归模型进行训练,得到预测模型,其中,所述预测模型用于预测所述目标测试用例的容错边界值。
第二方面,本发明实施例还提供了一种混沌测试装置,应用于混沌测试平台,所述混沌测试平台与至少一个测试服务器通信连接,所述混沌测试平台预先存储有每个所述测试服务器的IP地址和所述IP地址对应的至少一个测试用例;所述装置包括:
执行模块,用于:
根据待测试服务器的IP地址,获取所述待测试服务器的目标测试用例;其中,所述待测试服务器是所述至少一个测试服务器中的任意一个;
将所述目标测试用例发送至所述待测试服务器,以使所述待测试服务器执行所述目标测试用例进行混沌测试;
管理模块,用于接收所述待测试服务器发送的测试信息,所述测试信息包括所述目标测试用例在当次执行中产生的错误信息和过程信息;
结果分析模块,用于:
当所述错误信息中存在已知错误,则判定所述混沌测试失败;
当所述错误信息中不存在已知错误,则根据所述过程信息判断所述混沌测试是否失败。
第三方面,本发明实施例还提供了一种混沌测试平台,所述混沌测试平台包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的混沌测试方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的混沌测试方法。
相对现有技术,本发明实施例提供的一种混沌测试方法、装置、电子设备及存储介质,首先,根据待测试服务器的IP地址,获取待测试服务器的目标测试用例,并将目标测试用例发送至待测试服务器,以使待测试服务器执行测试用例以进行混沌测试;然后,接收待测试服务器发送的测试信息,测试信息包括测试用例在当次执行中产生的错误信息和过程信息;最后,对测试信息进行分析,当错误信息中存在已知错误,则判定所述混沌测试失败,当错误信息中不存在已知错误,则根据过程信息判断所述混沌测试是否失败。该方法通过自动采集混沌测试中产生的测试数据,并对其加以分析,可以自动筛选出一部分混沌测试失败的测试用例,减小了人工判断的工作量,提高了结果分析的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的混沌测试方法系统架构图。
图2为本发明实施例提供的混沌测试平台和测试服务器的连接关系示意图。
图3为本发明实施例提供的混沌测试方法的一种流程示意图。
图4为本发明实施例提供的测试服务器和测试用例的对应关系。
图5为本发明实施例提供的测试用例执行记录表。
图6为图3示出的混沌测试方法中步骤S105的流程示意图。
图7为本发明实施例提供的日志混沌矫正表。
图8为本发明实施例提供的公有资源性能数据数据库。
图9为本发明实施例提供的私有资源性能数据数据库。
图10为本发明实施例提供的公有资源性能数据混沌矫正数据库。
图11为本发明实施例提供的私有资源性能数据混沌矫正数据库。
图12为本发明实施例提供的混沌测试方法的另一种流程示意图。
图13为本发明实施例提供的混沌测试方法的又一种流程示意图。
图14为图3示出的混沌测试方法中步骤S101的流程示意图。
图15为本发明实施例提供的测试用例数据库。
图16为图14示出的混沌测试方法中步骤S1011的流程示意图。
图17为本发明实施例提供的测试服务器数据库。
图18为本发明实施例提供的混沌测试装置的方框示意图。
图19为本发明实施例提供的混沌测试平台的方框示意图。
图标:100-混沌测试装置;101-执行模块;102-管理模块;103-结果分析模块;104-预测模块;200-混沌测试平台;201-存储器;202-处理器;203-总线。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
随着移动互联网和科学技术的迅速发展,在安防领域中产生的大量数据主要依靠云存储系统进行存储管理,云存储系统包括一个或多个管理存储节点的服务器和多个用于存储数据的存储节点。本申请实施例中的混沌测试方法就是基于云存储系统中的一个多个服务器实现的。
请参考图1,图1示出了本发明实施例中提供的混沌测试方法的系统架构图。
如图1所示,系统架构可以包括混沌测试平台200及与混沌测试平台200通信连接的多台服务器。
混沌测试平台200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,其上安装有做混沌测试的软件,本发明实施例提供的混沌测试装置可以是对该软件的部分改进。
服务器为上述云存储系统中的一个或多个管理存储节点的服务器,其上安装有混沌测试平台客户端。
测试服务器是与混沌测试平台200通信连接的多台服务器中的至少一台服务器,混沌测试平台200与测试服务器的连接关系如图2所示,图2中的m台测试服务器是从图1中的n台服务器中确定出来的。
待测试服务器为至少一个测试服务器中的任意一个,例如图2中的测试服务器1。
下面基于图1所示的系统架构图,对应用于混沌测试平台200的混沌测试方法进行详细介绍。
请参考图3,图3示出了本实施例提供的混沌测试方法的流程示意图,该混沌测试方法可以包括以下步骤:
S101,根据待测试服务器的IP地址,获取待测试服务器的目标测试用例;其中,待测试服务器是至少一个测试服务器中的任意一个。
在本实施例中,混沌测试平台200预先存储有每个测试服务器的IP地址和IP地址对应的至少一个测试用例,目标测试用例是从待测试服务器的IP地址对应的至少一个测试用例中按照随机抽取的方式得到的一个或多个测试用例。
例如,如图4所示,图4示出了测试服务器与测试用例之间的对应关系。假设待测试服务器为测试服务器1,其对应的测试用例为:测试用例1、测试用例2以及测试用例3;测试服务器2对应的测试用例分别为:测试用例2及测试用例4;现在从待测试服务器对应的3个测试用例中随机抽取一个测试用例,则抽取到的测试用例1就为目标测试用例。
本实施例中的测试用例模拟的是不同的系统异常场景,比如,CPU异常、内存异常等,它可以是模拟不同异常场景的异常测试脚本。混沌测试平台200可以预先存储有多个异常集成测试模块,每个异常集成测试模块上存储有相应的异常测试脚本,并且由对应的编号所标识。
S102,将目标测试用例发送至待测试服务器,以使待测试服务器执行目标测试用例以进行混沌测试。
在本实施例中,在待测试服务器执行目标测试用例进行混沌测试的过程中,可以通过采集相应数据并进行分析以判断该次混沌测试是否失败,进而判断测试环境是否存在问题,并对存在问题的测试环境进行改进。
若目标测试用例为多个,则按照抽取顺序依次将目标测试用例发送至待测试服务器进行混沌测试。
例如,从待测试服务器对应的3个测试用例中随机抽取到的测试用例为:测试用例1和测试用例3,则按照抽取顺序依次将测试用例1和测试用例3发送至待测试服务器进行混沌测试。
并将该次抽取顺序记录进测试用例执行记录表中,标记相应测试用例执行状态为开始执行状态,测试用例执行记录表如图5所示。测试用例执行记录表中包括所有测试服务器的IP地址,脚本执行顺序,脚本执行状态以及失败用例执行失败原因。
在待测试服务器执行完所有目标测试用例都没有失败的情况下,重复执行随机抽取测试用例的步骤,直至待测试服务器执行目标测试用例失败,或者,到达预设测试时间,则此次混沌测试结束。
S103,接收待测试服务器发送的测试信息,测试信息包括测试用例在当次执行中产生的错误信息和过程信息。
在本实施例中,测试信息可以是待测试服务器主动发送给混沌测试平台200的,也可以是,当待测试服务器开始执行目标测试用例进行混沌测试时,混沌测试平台200通知待测试服务器需要采集哪些测试信息,采集完成后,将测试信息发送给混沌测试平台200进行分析。
上述错误信息是指待测试服务器在执行目标测试用例的过程中由于进行混沌测试的软件自身存在缺陷、运行该软件的硬件自身存在缺陷或是硬件与软件间不兼容等问题导致执行过程发生错误而产生的信息。
上述过程信息是指待测试服务器执行目标测试用例的过程中产生的和待测试服务器执行状态及性能相关的信息。
S104,当错误信息中存在已知错误,则判定混沌测试失败。
在本实施例中,错误信息可以是错误码,它可以是一组数字或者字母与数据的组合,例如00x110,error007等。已知错误可以是历史混沌测试中产生的错误码,例如,混沌测试平台200可以预先存储有已知错误码数据库,通过将此次混沌测试中产生的错误码和已知错误码数据库中的已知错误码相比对,若存在已知错误码,则判定混沌测试失败。
S105,当错误信息中不存在已知错误,则根据过程信息判断混沌测试是否失败。
下面对步骤S105进行详细介绍。在图3的基础上,请参考图6,步骤S105可以包括以下详细步骤:
S1051,判断测试日志、基准测试日志和目标测试用例的所有矫正日志是否满足第一设定条件。
在本实施例中,过程信息可以包括测试日志和性能数据,基准测试日志是指待测试服务器前一次执行目标测试用例产生的。对于一次完整的混沌测试来说,在待测试服务器执行目标测试用例不发生错误的情况下,混沌测试平台200会重复执行步骤S101~S105,因此,对于同一个目标测试用例来说,会有多次执行记录,每次执行都会产生相应的测试日志和性能数据。
目标测试用例的矫正日志是待测试服务器执行目标测试用例失败时被矫正的测试日志。例如,当前为混沌测试第n次执行目标测试用例,其所用的矫正日志是前n-1次待测试服务器执行目标测试用例失败,并且被矫正的测试日志。
在本实施例中,如果步骤S1051的判断结果为“是”,即,测试日志、基准测试日志和目标测试用例的所有矫正日志满足第一设定条件,则执行步骤S1054;如果步骤S1051的判断结果为“否”,即,测试日志、基准测试日志和目标测试用例的所有矫正日志不满足第一设定条件,则执行子步骤S1052。
S1052,判断性能数据、基准性能数据和目标测试用例的矫正性能数据是否满足第二设定条件。
在本实施例中,基准性能数据是指待测试服务器前一次执行目标测试用例产生的,目标测试用例的矫正性能数据是待测试服务器执行目标测试用例失败时被矫正的性能数据。例如,当前为混沌测试第n次执行目标测试用例,其所用的矫正性能数据是前n-1次待测试服务器执行目标测试用例失败,并且被矫正的性能数据。
在本实施例中,如果性能数据、基准性能数据和目标测试用例的矫正性能数据满足第二设定条件,则执行子步骤S1054;如果性能数据、基准性能数据和目标测试用例的矫正性能数据不满足第二设定条件,则执行子步骤S1053。
S1053,判定混沌测试成功。
S1054,判定混沌测试失败。
在一种可能的情形下,混沌测试平台200还存储有日志混沌矫正表,日志混沌矫正表包括每个测试服务器的所述IP地址和IP地址对应的每个测试用例的所有矫正日志。
在此基础上,对图6中步骤S1051的详细过程进行介绍。判断测试日志、基准测试日志和目标测试用例的所有矫正日志是否满足第一设定条件的过程,可以包括:
第一步,获得测试日志与基准测试日志的第一相似度。
第二步,判断第一相似度是否小于第一预设值,若是,则根据待测试服务器的IP地址,从日志混沌矫正表中获取目标测试用例的所有矫正日志。
第三步,获得测试日志与目标测试用例的每个矫正日志的第二相似度。
第四步,若每个第二相似度均小于第一预设值,则判定满足第一设定条件。
第五步,若第一相似度不小于第一预设值,或者,存在任意一个第二相似度不小于第一预设值,则判定不满足第一设定条件。
在本实施例中,首先将测试日志与基准测试日志进行比对,计算出它们之间的相似度作为第一相似度。例如,可以使用Linux系统自带的diff命令工具进行相似度计算。
然后判断第一相似度是否小于第一预设值,其中,第一预设值是预先设定的相似度阈值;如果第一相似度小于第一预设值,那么从日志混沌矫正表中获取目标测试用例的所有矫正日志。
其中,日志混沌矫正表如图7所示,其中包括所有测试服务器的IP地址,IP地址对应的异常集成测试模块编号,及异常集成测试模块编号对应的所有的矫正日志的存放路径。根据待测试服务器的IP地址,从日志混沌矫正表获取目标测试用例对应的所有矫正日志的存放路径,进而获得目标测试对应的所有矫正日志。
获取目标测试对应的所有矫正日志之后,将测试日志和所获取的所有矫正日志进行比对,获得每一个第二相似度。其中,第二相似度的计算方法和第一相似度的计算方法类似。
例如,根据图7中的日志混沌矫正表所获取的矫正日志有3个,那么,就分别计算测试日志和这3个矫正日志的相似度,得到3个第二相似度。
如果,计算出的每个第二相似度均小于第一预设值,那么,就判定满足第一预设条件,进而判定混沌测试失败。
如果,计算出的第一相似度大于第一预设值,或者,存在任意一个第二相似度大于第一预设值,那么,就判定不满足第一预设条件,此时,无法判断混沌测试是否失败,则需进一步根据性能数据判断混沌测试是否失败。
在本实施例中,上述第一预设值可以设定为95%。
在一种可能的情形下,混沌测试平台200还存储有性能数据混沌矫正数据库,性能数据混沌矫正数据库包括每个测试服务器的IP地址和IP地址对应的每个测试用例的矫正性能数据。
性能数据是指待测试服务器在执行目标测试用例的过程中某个进程,或整个系统产生的相关数据。性能数据可以分为公有资源性能数据和私有资源性能数据,在混沌测试平台200接收到待测试服务器发送的测试信息后,可以将其中的性能数据分别整理至公有资源性能数据库表和私有资源性能数据库中。
公有资源性能数据库表和私有资源性能数据库如图8和图9所示,其中,公有资源性能数据可以包括公有CPU数据、公有内存数据、公有网络数据及公有IO数据这四种类型的数据,私有资源性能数据可以包括私有CPU数据、私有内存数据、私有网络数据及私有IO数据这四种类型的数据。其中,每一种类型的数据都包括多条对应数据。例如,公有CPU数据1、公有CPU数据2……公有CPU数据n,它们是在待测试服务器执行目标测试用例的过程中,每隔一段时间采集得到的。
其中,私有资源性能数据用于表征某个进程的相关数据,公有资源性能数据用于表征整个系统的相关数据,例如,私有资源性能数据中的私有CPU数据表征的是某个进程自己的CPU占用率,而公有资源性能数据中的CPU数据表征的是整体系统的CPU占用率。
性能数据混沌矫正数据库包括公有资源性能数据矫正数据库及私有资源性能矫正数据库,公有资源性能矫正数据库如图10所示,私有资源性能矫正表如图11所示。
性能数据包括多条第一数据,基准性能数据包括多条第二数据,矫正性能数据包括多条矫正数据,多条第一数据、多条第二数据和多条矫正数据一一对应。
那么,第一数据就为性能数据中的公有CPU数据、公有内存数据、公有网络数据、公有IO数据、私有CPU数据、私有内存数据、私有网络数据及私有IO数据;第二数据就为基准性能数据中的公有CPU数据、公有内存数据、公有网络数据、公有IO数据、私有CPU数据、私有内存数据、私有网络数据及私有IO数据。
在此基础上,对图6中步骤S1052的详细过程进行介绍。判断性能数据、基准性能数据和目标测试用例的矫正性能数据是否满足第二设定条件的过程,可以包括:
第一步,获得每条第一数据与对应的第二数据的第一波动率。
第二步,若存在任意一个第一波动率大于第二预设值,则根据待测试服务器的IP地址从性能数据混沌矫正数据库中获取目标测试用例的矫正性能数据。
第三步,获得每条第一数据与对应的矫正数据的第二波动率。
第四步,若存在任意一个第二波动率大于第二预设值,则判定满足第二设定条件。
第五步,若每个第一波动率均小于第二预设值,或者,每个第二波动率均小于第二预设值,则判定不满足第二设定条件。
在本实施例中,首先将性能数据的每条第一数据和基准性能数据中的每条对应的第二数据进行比对,获得每个第一波动率,第一波动率为第一数据和第二数据之间的变化率。
例如,获取到的性能数据中的公有CPU数据1为0.5,基准性能数据中的公有CPU数据1为0.6,则他们的第一波动率为20%,类似的,可以获得每条第一数据与对应的第二数据的第一波动率。
如果,上述计算出的所有第一波动率中,存在任意一个第一波动率大于第二预设值,则根据待测试服务器的IP地址从性能数据混沌矫正数据库中获取目标测试用例的矫正性能数据。
第二预设值为预先设定的波动率阈值,若存在任意一个第一波动率大于第二预设值,则从图10和图11所示的公有资源性能数据混沌矫正数据库和私有资源性能数据混沌矫正数据库中获取所有对应的矫正性能数据。
然后,将性能数据的每条第一数据和矫正性能数据中的每条对应的矫正数据进行比对,获得每个第二波动率,第二波动率为第一数据和矫正数据之间的变化率。
例如,获取到的性能数据中的公有CPU数据1为0.5,矫正性能数据中的公有CPU数据1为0.45,则他们的第一波动率为10%,类似的,可以获得每条第一数据与对应的矫正数据的第二波动率。
如果,上述计算出的所有第二波动率中,存在任意一个第二波动率大于第二预设值,则判定满足第二设定条件,进而判定混沌测试失败。
如果,每个第一波动率均小于第二预设值,或者,每个第二波动率均小于第二预设值,则判定不满足第二设定条件,进而判定混沌测试成功。
在本实施例中,上述第二预设值可以设为5%。
通常,混沌测试完成后,测试人员会根据测试结果去对待测试服务器做针对性的改进,所以,如果混沌测试方法能给出失败原因,就可以为测试人员定位问题提供参考,从而提高效率。因此,在图3的基础上,请参照图12,在步骤S104和S105之后,方法还包括步骤S106。
S106,当判定混沌测试失败,生成失败原因。
下面对步骤S106进行详细介绍。在图12的基础上,请参考图13,步骤S106可以包括以下详细步骤:
S1061,在通过错误信息判定混沌测试失败的情况下,将已知错误作为失败原因。
S1062,在通过测试日志判定混沌测试失败的情况下,获取测试日志中的错误日志作为失败原因。
S1063,在通过性能数据判定混沌测试失败的情况下,根据第二波动率确定失败原因。
在本实施例中,在通过性能数据判定混沌测试失败的情况下,确定任意一个第二波动率大于第二预设值时对应的第一数据属于公有资源性能数据还是私有资源性能数据,若属于公有资源性能数据,则将系统错误作为失败原因;若属于私有资源性能数据,则将进程错误作为失败原因。
在一种可能的情形下,由于采集的测试信息并不一定全面,所以通过过程信息判断的混沌测试结果并不一定准确,因此,在根据过程信息判定混沌测试失败之后,还需要用户进一步确认,以最终判定混沌测试是否失败。
请继续参考图13,在通过测试日志或者性能数据判定混沌测试失败的情况下,即,在步骤1062和1063之后,方法还包括以下步骤S107~S109:
S107,生成提示信息并发送至待测试服务器,以使用户根据提示信息确认混沌测试是否失败。
S108,若用户确认混沌测试失败,则获取对应的失败原因并存储至测试用例执行记录表。
S109,若用户确认混沌测试成功,则将目标测试用例在当次执行中产生的测试日志加入日志混沌矫正表、性能数据加入性能数据混沌矫正数据库。
在本实施例中,在通过错误信息判定混沌测试失败的情况下,混沌测试平台200直接发送用例结果失败的信息至待测试服务器,以提示用户混沌测试失败。
上述测试用例执行记录表如图5所示,测试人员可以通过查看测试执行顺序记录数据库表中的失败用例执行失败原因,了解待测试服务器所出的问题在哪儿,从而有针对性地进行改进。
上述日志混沌矫正表如图7所示,其中存储有待测试服务器的IP地址对应的目标测试用例的所有矫正日志存放路径,当用户确认混沌测试成功时,则将目标测试用例在当次执行中产生的测试日志的存放路径添加至日志混沌矫正表中。日志混沌矫正表中的矫正日志可用于步骤S1053。
上述性能数据混沌矫正数据库包括如图10所示的公有资源性能数据混沌矫正数据库,及,如图11所示的私有资源性能数据混沌矫正数据库。
上面介绍了在混沌测试平台200根据测试信息判断出混沌测试失败之后,还会根据判定过程,生成错误原因,对于根据过程信息判断出目标测试用例执行失败的情况,还会由用户进行进一步的确认,以判断混沌测试是否失败。
在一种可能的情形下,由于混沌测试会重复执行目标测试用例直至判定目标测试用例失败,因此整个混沌测试所花费的时间是不确定的,对于测试人员来说,如果能够预先知道混沌测试所需耗费的大概时间,那么就能够对整个混沌测试进程有一个大概的把握,从而提高测试效率。
在用户确认混沌测试失败之后,混沌测试平台200还会根据待测试服务器当次执行目标测试用例产生的性能数据训练预测模型,以预测目标测试用例的容错边界值。请继续参考图13,在用户确认混沌测试失败的情况下,还包括步骤S110~S112:
S110,对历史性能数据进行归一化处理,得到归一特征值。
在本实施例中,在用户确认混沌测试失败的情况下,获取待测试服务器历史执行目标测试用例产生的性能数据,其中,所获取的性能数据需要根据失败原因确定是公有资源性能数据还是私有资源性能数据。
例如,首先根据待测试服务器的IP地址查询对应测试用例执行记录表中的目标测试用例对应的失败用例执行原因,若失败用例原因为系统错误,则将待测试服务器历史执行目标测试用例产生的所有公有资源性能数据库表中的用例执行状态、执行次数、CPU数据、内存数据、IO数据以及网络数据进行归一化处理,得到归一化特征值。
若失败用例原因为进程错误,则将待测试服务器历史执行目标测试用例产生的所有私有资源性能数据库表中的用例执行状态、执行次数、CPU数据、内存数据、IO数据以及网络数据进行归一化处理,得到归一化特征值。
其中,可以按照下述方式进行归一化处理:
feature_name=[‘用例执行状态’,‘执行次数’,‘CPU数据1’,……‘CPU数据n’,‘内存数据1’,……‘内存数据n’,‘网络数据1’,……‘网络数据n’,‘IO数据1’,……‘IO数据n’];
f[feature_name]=feature_name/(feature_name最大值-feature_name最小值)
将获取到的性能数据进行归一化处理之后,可以保证所有性能数据计算的时候权重相同。
S111,对归一特征值进行数据转换,得到数据变化率。
在本实施例中,数据变化率用于表征历史执行目标测试用例产生的多组性能数据的变化趋势。
在本实施例中,对归一特征值进行数据转化的具体方法可以是:
通过三次系统统计的性能数据,做前后差分绝对值的指数加权滑动平均值,来进行数据转化,衡量数据的变化率。
f1[feature_name]=alpha**0*np.abs(f[feature_name]-f[feature_name].shift(1))+alpha**1*np.abs(f[feature_name].shift(1)-f[feature_name].shift(2))+alpha**2*np.abs(f[feature_name].shift(2),其中alpha在(0,1)之间。
例如,待测试服务器执行目标测试用例的执行次数为6,则将得到的所有归一特征值分为两组,其中,前三次执行目标测试用例产生的性能数据对应的归一化特征值为一组,后三次为另一组,按照上述公式对每一组做前后差分绝对值的指数加权滑动平均值,则可得到两组变化率,每一组变化率里包括对应的所有归一化特征值的变化率,如用例执行状态、执行次数、CPU数据、内存数据、IO数据以及网络数据的数据变化率。
S112,将数据变化率作为训练样本,对预先建立的回归模型进行训练,得到预测模型,其中,预测模型用于预测目标测试用例的容错边界值。
在本实施例中,回归模型是一种预测模型,利用上述计算出的数据变化率作为训练样本对回归模型进行训练,可以预测数据的走向。
容错边界值是指利用目标测试用例对待测试服务器进行混沌测试失败时历史执行的次数。
其中,预先建立的回归模型可以是LGBMClassifier模型,得到的预测模型可以预测出目标测试用例的容错边界值,即下次使用目标测试用例进行混沌测试时,可以通过该预测模型进行预测,预测出测试服务器执行目标测试用例到第几次时混沌测试会失败,这样,可以计算出执行目标测试用例所需花费的时间,为测试人员判断目标测试用例的大概执行时间提供了参考。
在一种可能的情形下,由于混沌测试需要用到多种测试用例,不同的测试用例对应的测试服务器的硬件型号也不同,因此,混沌测试平台200还存储有测试用例集成表和测试用例数据库,测试用例集成表包括多个测试用例,测试用例数据库包括每个测试用例的标识及对应的硬件型号。
测试用例集成表中存储有多个异常集成测试模块,每个异常集成模块都有对应的编号,每个异常集成模块上存储有相应的异常测试脚本。
测试用例数据库如图15所示,测试用例数据库中包括每个测试用例的标识,每个异常集成测试模块上存储的异常测试脚本的名称及其支持的服务器硬件型号。测试用例的标识可以为异常集成测试模块编号。
在此基础上,对图2中的步骤S101的详细过程进行详细介绍。请参考图15,根据待测试服务器的IP地址,获取待测试服务器的目标测试用例的过程,可以包括:
S1011,根据测试用例数据库和每个测试服务器的硬件型号,生成配置文件,其中,配置文件表征每个测试服务器的IP地址和至少一个测试用例的标识的对应关系。
在本实施例中,配置文件用于表征每个测试服务器的IP地址和至少一个测试用例的标识的对应关系,例如,生成的配置文件如下:
IP Address:
192.168.0.1
Exception Number:
-E1
-E3
-E4
IP Address:
192.168.0.2
Exception Number:
-E2
-E3
-E5
S1012,根据待测试服务器的IP地址,从配置文件中确定出目标测试用例的标识。
在本实施例中,假设待测试服务器的IP地址为192.168.0.1,根据配置文件,获得其对应的异常集成测试模块编号为E1、E3及E4,按照随机抽取的方式,从E1、E2及E3抽取一个或多个异常集成测试模块编号作为目标测试用例的标识。
S1013,根据目标测试用例的标识,从测试用例集成表中获取目标测试用例。
结合到上述举例,假设随机抽取的异常集成测试模块编号为E1,则在测试用例集成表中获取异常集成测试模块编号为E1的异常集成测试模块上的异常测试脚本,作为目标测试用例。
若随机抽取的异常集成测试模块编号依次为E1和E3,则按照抽取顺序,依次从测试用例集成表中获取对应的异常测试脚本作为目标测试用例。并按照抽取顺序依次将目标测试用例发送至待测试服务器,以使待测试服务器执行目标测试用例进行混沌测试。
下面对生成配置文件的过程进行详细介绍,在图14的基础上,请参考图16,步骤S1011可以包括以下详细步骤:
S10111,接收每个服务器发送的注册信息,其中,注册信息包括服务器的软件运行状态、硬件型号和IP地址;根据软件运行状态,从多个服务器中确定出每个测试服务器。
在本实施例中,混沌测试平台200与多个服务器通信连接,每台服务器上安装有混沌测试平台客户端,注册信息用于提示混沌测试平台200服务器已准备就绪可以进行混沌测试。
服务器的软件运行状态是指安装在服务器上的云存储软件运行是否正常,混沌测试平台客户端服务器的硬件型号、服务器的软件版本、软件是否运行正常,并向混沌测试平台200发送注册信息。若发送失败,则混沌测试平台客户端注册失败,提示用户检查服务器与混沌测试平台200之间的网络是否正常。
若发送成功,则混沌测试平台200会接收到每个服务器发送的注册信息,并将注册信息保存至测试服务器数据库中。测试服务器数据库如图17所示,其中包括的字段名称有:IP地址,服务器的硬件型号,服务器的软件版本以及软件是否运行正常。
通过查看如图17所示的测试服务器数据库中的软件是否运行正常信息,筛选出软件运行正常的所有服务器作为测试服务器。
S10112,根据每个测试服务器的硬件型号,从测试用例数据库中获取每个测试服务器的至少一个测试用例的标识。
在本实施例中,根据测试服务器的硬件型号,从如图15所示的测试用例数据库中,筛选出相同服务器硬件型号对应的所有异常集成测试模块编号,以及测试用例数据库中支持的服务器硬件型号字段值为所有型号均可的异常集成测试模块编号。
S10113,根据每个测试服务器的IP地址和至少一个测试用例的标识,生成配置文件。
与现有技术相比,本发明实施例具有以下有益效果:
首先,本实施例提供的混沌测试方法,在使用目标测试用例对待测试服务器进行混沌测试后,自动采集测试信息,通过测试信息中的错误信息可以直接判断出混沌测试是否失败,无需用户确认,通过过程信息判断混沌测试失败才需要用户确认,从而减少了对人工判断的依赖,提高了对混沌测试结果分析的效率;
其次,在混沌测试失败时,还会根据不同情况记录失败原因,开发人员可以通过查看失败原因了解待测试服务器的问题情况,从而进一步地对待测试服务器做出针对性的改进;
最后,当用户判定混沌测试失败时,利用性能数据训练预测模型,该预测模型可以预测出目标测试用例的容错边界值,为测试人员判断目标测试用例的执行时间提供了参考。
为了执行上述混沌测试方法实施例中的相应步骤,下面给出一种应用于混沌测试装置的实现方式。
请参考图18,图18示出了本实施例提供的混沌测试装置100的方框示意图。混沌测试装置应用于混沌测试平台200,混沌测试平台200与至少一个测试服务器通信连接,混沌测试平台200预先存储有每个测试服务器的IP地址和IP地址对应的至少一个测试用例;混沌测试装置包括:执行模块101,管理模块102,结果分析模块103,预测模块104。
执行模块101,用于:
根据待测试服务器的IP地址,获取待测试服务器的目标测试用例;其中,待测试服务器是至少一个测试服务器中的任意一个;
将目标测试用例发送至待测试服务器,以使待测试服务器执行目标测试用例进行混沌测试。
管理模块102,用于接收待测试服务器发送的测试信息,测试信息包括目标测试用例在当次执行中产生的错误信息和过程信息;
结果分析模块103,用于:
当错误信息中存在已知错误,则判定混沌测试失败;
当错误信息中不存在已知错误,则根据过程信息判断混沌测试是否失败。
可选的,过程信息包括测试日志和性能数据;结果分析模块103,具体用于:
判断测试日志、基准测试日志和目标测试用例的所有矫正日志是否满足第一设定条件;其中,基准测试日志是待测试服务器前一次执行目标测试用例产生的,矫正日志是待测试服务器执行目标测试用例失败时被矫正的测试日志;
若是,则判定混沌测试失败;
若否,则判断性能数据、基准性能数据和目标测试用例的矫正性能数据是否满足第二设定条件;其中,基准性能数据是待测试服务器前一次执行目标测试用例产生的,矫正性能数据是待测试服务器执行目标测试用例失败时被矫正的性能数据;
若是,则判定混沌测试失败;
若否,则判定混沌测试成功。
可选的,混沌测试平台200还存储有日志混沌矫正表,日志混沌矫正表包括每个测试服务器的IP地址和IP地址对应的每个测试用例的所有矫正日志;
结果分析模块103执行判断测试日志、基准测试日志和目标测试用例的所有矫正日志是否满足第一设定条件的方式,包括:
获得测试日志与基准测试日志的第一相似度;
若第一相似度小于第一预设值,则根据待测试服务器的IP地址,从日志混沌矫正表中获取目标测试用例的所有矫正日志;
获得测试日志与目标测试用例的每个矫正日志的第二相似度;
若每个第二相似度均小于第一预设值,则判定满足所述第一设定条件;
若第一相似度不小于第一预设值,或者,存在任意一个第二相似度不小于第一预设值,则判定不满足第一设定条件。
可选的,混沌测试平台200还存储有性能数据混沌矫正数据库,性能数据混沌矫正数据库包括每个测试服务器的IP地址和IP地址对应的每个测试用例的矫正性能数据;
性能数据包括多条第一数据,基准性能数据包括多条第二数据,矫正性能数据包括多条矫正数据,多条第一数据、多条第二数据和多条矫正数据一一对应;
结果分析模块103执行判断性能数据、基准性能数据和目标测试用例的矫正性能数据是否满足第二设定条件的方式,包括:
获得每条第一数据与对应的第二数据的第一波动率;
若存在任意一个第一波动率大于第二预设值,则根据待测试服务器的IP地址从性能数据混沌矫正数据库中获取目标测试用例的矫正性能数据;
获得每条第一数据与对应的矫正数据的第二波动率;
若存在任意一个第二波动率大于第二预设值,则判定满足第二设定条件;
若每个第一波动率均小于第二预设值,或者,每个第二波动率均小于第二预设值,则判定不满足第二设定条件。
可选的,结果分析模块103,还用于当判定混沌测试失败,生成失败原因;
结果分析模块103执行当判定混沌测试失败,生成失败原因的方式,包括:
在通过错误信息判定混沌测试失败的情况下,将已知错误作为失败原因;
在通过测试日志判定混沌测试失败的情况下,获取测试日志中的错误日志作为失败原因;
在通过性能数据判定混沌测试失败的情况下,根据第二波动率确定失败原因。
可选的,结果分析模块103,还用于在通过测试日志或者性能数据判定混沌测试失败的情况下,生成提示信息并发送至待测试服务器,以使用户根据提示信息确认所述混沌测试是否失败。
管理模块102,还用于:
若用户确认混沌测试失败,则获取对应的失败原因并存储至测试用例执行记录表;
若用户确认混沌测试成功,则将目标测试用例在当次执行中产生的测试日志加入日志混沌矫正表、性能数据加入性能数据混沌矫正数据库。
可选的,混沌测试平台200还存储有测试用例集成表和测试用例数据库,测试用例集成表包括多个测试用例,测试用例数据库包括每个测试用例的标识及对应的硬件型号;
执行模块101执行根据待测试服务器的IP地址,获取待测试服务器的目标测试用例的方式,包括:
根据测试用例数据库和每个测试服务器的硬件型号,生成配置文件,其中,配置文件表征每个测试服务器的IP地址和至少一个测试用例的标识的对应关系;
根据待测试服务器的IP地址,从配置文件中确定出目标测试用例的标识;
根据目标测试用例的标识,从测试用例集成表中获取目标测试用例。
可选的,混沌测试平台200与多个服务器通信连接;
管理模块102,具体用于接收每个服务器发送的注册信息,其中,注册信息包括服务器的软件运行状态、硬件型号和IP地址;根据软件运行状态,从多个服务器中确定出每个测试服务器。
执行模块101,具体用于:
根据每个测试服务器的硬件型号,从测试用例数据库中获取每个测试服务器的至少一个测试用例的标识;
根据每个测试服务器的IP地址和至少一个测试用例的标识,生成配置文件。
可选的,预测模块104,用于:
在用户确认混沌测试失败的情况下,对历史性能数据进行归一化处理,得到归一特征值;
对归一特征值进行数据转换,得到数据变化率;
将数据变化率作为训练样本,对预先建立的回归模型进行训练,得到预测模型,其中,预测模型用于预测目标测试用例的容错边界值。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的混沌测试装置100的具体工作过程。可以参考前述方法实施例中的对应过程,在此不再赘述。
请参考图19,图19示出了本实施例提供的混沌测试平台200的方框示意图。混沌测试平台200可以是,独立的物理服务器,也可以是多个物理服务器构成的服务器集群。混沌测试平台200包括存储器201、处理器202及总线203。该存储器201和处理器202通过总线203连接。
存储器201用于存储程序,例如图19所示的混沌测试装置100,混沌测试100包括至少一个可以软件或固件(firmware)的形式存储于存储器201中的软件功能模块、处理器202在接收到执行指令后,执行所述程序以实现上述实施例揭示的混沌测试方法。
存储器201可能包括高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失存储器(non-volatile memory,NVM)。
处理器202可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器202中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器202可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、微控制单元(Microcontroller Unit,MCU)、复杂可编程逻辑器件(Complex ProgrammableLogic Device,CPLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、嵌入式ARM等芯片。
本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器202执行时实现上述实施例揭示的混沌测试方法。
综上所述,本发明实施例提供的一种混沌测试方法、装置、电子设备及存储介质,首先,根据待测试服务器的IP地址,获取待测试服务器的目标测试用例,其中,待测试服务器是至少一个测试服务器中的任意一个;并将测试用例发送至待测试服务器,以使待测试服务器执行测试用例以进行混沌测试;然后,接收待测试服务器发送的测试信息,测试信息包括测试用例在当次执行中产生的错误信息和过程信息;最后,对测试信息进行分析,当错误信息中存在已知错误,则判定所述混沌测试失败,当错误信息中不存在已知错误,则根据过程信息判断所述混沌测试是否失败。该方法通过自动采集混沌测试中产生的测试数据,并对其加以分析,可以自动筛选出一部分混沌测试失败的测试用例,减小了人工判断的工作量,提高了结果分析的效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种混沌测试方法,其特征在于,应用于混沌测试平台,所述混沌测试平台与至少一个测试服务器通信连接,所述混沌测试平台预先存储有每个所述测试服务器的IP地址和所述IP地址对应的至少一个测试用例;
所述方法包括:
根据待测试服务器的IP地址,获取所述待测试服务器的目标测试用例;其中,所述待测试服务器是所述至少一个测试服务器中的任意一个;
将所述目标测试用例发送至所述待测试服务器,以使所述待测试服务器执行所述目标测试用例进行混沌测试;
接收所述待测试服务器发送的测试信息,所述测试信息包括所述目标测试用例在当次执行中产生的错误信息和过程信息;
当所述错误信息中存在已知错误,则判定所述混沌测试失败;
当所述错误信息中不存在已知错误,则根据所述过程信息判断所述混沌测试是否失败;
所述过程信息包括测试日志和性能数据;所述根据所述过程信息判断所述混沌测试是否失败的步骤,包括:
判断所述测试日志、基准测试日志和所述目标测试用例的所有矫正日志是否满足第一设定条件;其中,所述基准测试日志是所述待测试服务器前一次执行所述目标测试用例产生的,所述矫正日志是所述待测试服务器执行所述目标测试用例失败时被矫正的测试日志;
若是,则判定所述混沌测试失败;
若否,则判断所述性能数据、基准性能数据和所述目标测试用例的矫正性能数据是否满足第二设定条件;其中,所述基准性能数据是所述待测试服务器前一次执行所述目标测试用例产生的,所述矫正性能数据是所述待测试服务器执行所述目标测试用例失败时被矫正的性能数据;
若是,则判定所述混沌测试失败;
若否,则判定所述混沌测试成功。
2.如权利要求1所述的方法,其特征在于,所述混沌测试平台还存储有日志混沌矫正表,所述日志混沌矫正表包括每个所述测试服务器的所述IP地址和所述IP地址对应的每个所述测试用例的所有矫正日志;
所述判断所述测试日志、基准测试日志和所述目标测试用例的所有矫正日志是否满足第一设定条件的步骤,包括:
获得所述测试日志与所述基准测试日志的第一相似度;
若所述第一相似度小于第一预设值,则根据所述待测试服务器的IP地址,从所述日志混沌矫正表中获取所述目标测试用例的所有矫正日志;
获得所述测试日志与所述目标测试用例的每个矫正日志的第二相似度;
若每个所述第二相似度均小于第一预设值,则判定满足所述第一设定条件;
若所述第一相似度不小于所述第一预设值,或者,存在任意一个所述第二相似度不小于第一预设值,则判定不满足所述第一设定条件。
3.如权利要求1所述的方法,其特征在于,所述混沌测试平台还存储有性能数据混沌矫正数据库,所述性能数据混沌矫正数据库包括每个所述测试服务器的所述IP地址和所述IP地址对应的每个所述测试用例的矫正性能数据;
所述性能数据包括多条第一数据,所述基准性能数据包括多条第二数据,所述矫正性能数据包括多条矫正数据,所述多条第一数据、所述多条第二数据和所述多条矫正数据一一对应;
所述判断所述性能数据、基准性能数据和所述目标测试用例的矫正性能数据是否满足第二设定条件的步骤,包括:
获得每条所述第一数据与对应的所述第二数据的第一波动率;
若存在任意一个所述第一波动率大于第二预设值,则根据所述待测试服务器的IP地址从所述性能数据混沌矫正数据库中获取所述目标测试用例的矫正性能数据;
获得每条所述第一数据与对应的所述矫正数据的第二波动率;
若存在任意一个所述第二波动率大于第二预设值,则判定满足所述第二设定条件;
若每个所述第一波动率均小于所述第二预设值,或者,每个所述第二波动率均小于所述第二预设值,则判定不满足所述第二设定条件。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
当判定所述混沌测试失败,生成失败原因;
所述当判定所述混沌测试失败,生成失败原因的步骤,包括:
在通过所述错误信息判定所述混沌测试失败的情况下,将所述已知错误作为所述失败原因;
在通过所述测试日志判定所述混沌测试失败的情况下,获取所述测试日志中的错误日志作为所述失败原因;
在通过所述性能数据判定所述混沌测试失败的情况下,根据所述第二波动率确定所述失败原因。
5.如权利要求4所述的方法,其特征在于,所述混沌测试平台还存储有日志混沌矫正表,所述日志混沌矫正表包括每个所述测试服务器的所述IP地址和所述IP地址对应的每个所述测试用例的所有矫正日志,所述方法还包括:
在通过所述测试日志或者所述性能数据判定所述混沌测试失败的情况下,生成提示信息并发送至所述待测试服务器,以使用户根据所述提示信息确认所述混沌测试是否失败;
若用户确认所述混沌测试失败,则获取对应的所述失败原因并存储至测试用例执行记录表;
若用户确认所述混沌测试成功,则将所述目标测试用例在当次执行中产生的所述测试日志加入所述日志混沌矫正表、所述性能数据加入所述性能数据混沌矫正数据库。
6.如权利要求1所述的方法,其特征在于,所述混沌测试平台还存储有测试用例集成表和测试用例数据库,所述测试用例集成表包括多个所述测试用例,所述测试用例数据库包括每个所述测试用例的标识及对应的硬件型号;
所述根据待测试服务器的IP地址,获取所述待测试服务器的目标测试用例的步骤,具体包括:
根据所述测试用例数据库和每个所述测试服务器的硬件型号,生成配置文件,其中,所述配置文件表征每个所述测试服务器的IP地址和至少一个所述测试用例的标识的对应关系;
根据所述待测试服务器的IP地址,从所述配置文件中确定出所述目标测试用例的标识;
根据所述目标测试用例的标识,从测试用例集成表中获取目标测试用例。
7.如权利要求6所述的方法,其特征在于,所述混沌测试平台与多个服务器通信连接;
所述根据所述测试用例数据库和每个所述测试服务器的硬件型号,生成配置文件的步骤,包括:
接收每个所述服务器发送的注册信息,其中,所述注册信息包括所述服务器的软件运行状态、硬件型号和IP地址;根据所述软件运行状态,从所述多个服务器中确定出每个所述测试服务器;
根据每个所述测试服务器的硬件型号,从测试用例数据库中获取每个所述测试服务器的至少一个测试用例的标识;
根据每个所述测试服务器的IP地址和至少一个所述测试用例的标识,生成所述配置文件。
8.如权利要求5所述的方法,其特征在于,所述方法还包括:
在用户确认所述混沌测试失败的情况下,对历史性能数据进行归一化处理,得到归一特征值;
对所述归一特征值进行数据转换,得到数据变化率;
将所述数据变化率作为训练样本,对预先建立的回归模型进行训练,得到预测模型,其中,所述预测模型用于预测所述目标测试用例的容错边界值。
9.一种混沌测试装置,其特征在于,应用于混沌测试平台,所述混沌测试平台与至少一个测试服务器通信连接,所述混沌测试平台预先存储有每个所述测试服务器的IP地址和所述IP地址对应的至少一个测试用例;所述装置包括:
执行模块,用于:
根据待测试服务器的IP地址,获取所述待测试服务器的目标测试用例;其中,所述待测试服务器是所述至少一个测试服务器中的任意一个;
将所述目标测试用例发送至所述待测试服务器,以使所述待测试服务器执行所述目标测试用例进行混沌测试;
管理模块,用于接收所述待测试服务器发送的测试信息,所述测试信息包括所述目标测试用例在当次执行中产生的错误信息和过程信息;
结果分析模块,用于:
当所述错误信息中存在已知错误,则判定所述混沌测试失败;
当所述错误信息中不存在已知错误,则根据所述过程信息判断所述混沌测试是否失败;
所述过程信息包括测试日志和性能数据;所述分析模块用于判断所述测试日志、基准测试日志和所述目标测试用例的所有矫正日志是否满足第一设定条件;其中,所述基准测试日志是所述待测试服务器前一次执行所述目标测试用例产生的,所述矫正日志是所述待测试服务器执行所述目标测试用例失败时被矫正的测试日志;若是,则判定所述混沌测试失败;若否,则判断所述性能数据、基准性能数据和所述目标测试用例的矫正性能数据是否满足第二设定条件;其中,所述基准性能数据是所述待测试服务器前一次执行所述目标测试用例产生的,所述矫正性能数据是所述待测试服务器执行所述目标测试用例失败时被矫正的性能数据;若是,则判定所述混沌测试失败;若否,则判定所述混沌测试成功。
10.一种混沌测试平台,其特征在于,所述混沌测试平台包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-8中任一项所述的混沌测试方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-8中任一项所述的混沌测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111221802.1A CN113973068B (zh) | 2021-10-20 | 2021-10-20 | 混沌测试方法、装置、混沌测试平台及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111221802.1A CN113973068B (zh) | 2021-10-20 | 2021-10-20 | 混沌测试方法、装置、混沌测试平台及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113973068A CN113973068A (zh) | 2022-01-25 |
CN113973068B true CN113973068B (zh) | 2023-05-26 |
Family
ID=79587958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111221802.1A Active CN113973068B (zh) | 2021-10-20 | 2021-10-20 | 混沌测试方法、装置、混沌测试平台及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113973068B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116405412B (zh) * | 2023-02-24 | 2024-05-03 | 中电金信数字科技集团有限公司 | 基于混沌工程故障模拟服务端集群有效性验证方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612715A (zh) * | 2020-12-30 | 2021-04-06 | 平安壹钱包电子商务有限公司 | 基于混沌工程的系统测试方法、装置、计算机设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799519A (zh) * | 2012-06-07 | 2012-11-28 | 浪潮电子信息产业股份有限公司 | 一种集群文件系统自动化测试方法 |
CN103617118B (zh) * | 2013-11-28 | 2016-06-29 | 北京奇虎科技有限公司 | 测试结果的统一处理方法、装置及系统 |
CN107015902B (zh) * | 2016-01-27 | 2021-02-09 | 创新先进技术有限公司 | 一种测试方法和设备 |
CN113051155A (zh) * | 2021-03-11 | 2021-06-29 | 中国信息通信研究院 | 一种自动化测试平台的控制系统和控制方法 |
-
2021
- 2021-10-20 CN CN202111221802.1A patent/CN113973068B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612715A (zh) * | 2020-12-30 | 2021-04-06 | 平安壹钱包电子商务有限公司 | 基于混沌工程的系统测试方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113973068A (zh) | 2022-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209131A (zh) | 一种基于机器学习确定异构系统的故障的方法和系统 | |
CN111752850B (zh) | 区块链系统的测试方法及相关设备 | |
CN111563014A (zh) | 接口服务性能测试方法、装置、设备和存储介质 | |
CN110764980A (zh) | 日志处理方法和装置 | |
CN110088744A (zh) | 一种数据库维护方法及其系统 | |
US7398511B2 (en) | System and method for providing a health model for software | |
CN116980278B (zh) | 一种域控制器的自动化测试方法和系统 | |
CN113973068B (zh) | 混沌测试方法、装置、混沌测试平台及存储介质 | |
CN115563002A (zh) | 数据导入方法、装置、存储介质及计算机设备 | |
US20100251029A1 (en) | Implementing self-optimizing ipl diagnostic mode | |
CN110769076B (zh) | 一种dns测试方法和系统 | |
CN113282496B (zh) | 接口自动测试方法、装置、设备及存储介质 | |
CN111124809A (zh) | 一种服务器传感器系统的测试方法及装置 | |
ZHANG et al. | Approach to anomaly detection in microservice system with multi-source data streams | |
CN112199247B (zh) | 一种无业务状态下Docker容器进程活性的检查方法及装置 | |
JP2003345628A (ja) | 障害調査資料採取方法及びその実施システム並びにその処理プログラム | |
CN114064510A (zh) | 功能测试方法、装置、电子设备和存储介质 | |
CN111767222A (zh) | 数据模型的验证方法、装置、电子设备、存储介质 | |
CN112131611A (zh) | 数据正确性验证方法、装置、设备、系统及存储介质 | |
CN112131128A (zh) | 数据测试方法、装置、存储介质和电子装置 | |
CN109800168A (zh) | 软件的操作事件数据的测试方法及装置 | |
CN117421153B (zh) | 一种铁路货车故障图像识别模型自动化测试系统及方法 | |
CN116383068B (zh) | 一种c++程序接口的快速测试方法、装置及存储介质 | |
CN117271316A (zh) | 软件故障检测方法、装置、电子设备及存储介质 | |
CN117807636A (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 |