CN116991750B - 利用多线程和分布式代理实现大并发模拟的压力测试方法 - Google Patents

利用多线程和分布式代理实现大并发模拟的压力测试方法 Download PDF

Info

Publication number
CN116991750B
CN116991750B CN202311266424.8A CN202311266424A CN116991750B CN 116991750 B CN116991750 B CN 116991750B CN 202311266424 A CN202311266424 A CN 202311266424A CN 116991750 B CN116991750 B CN 116991750B
Authority
CN
China
Prior art keywords
test
data
information
parameter
acquiring
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
Application number
CN202311266424.8A
Other languages
English (en)
Other versions
CN116991750A (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.)
Beijing Soyun Technology Co ltd
Original Assignee
Beijing Soyun Technology Co ltd
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 Beijing Soyun Technology Co ltd filed Critical Beijing Soyun Technology Co ltd
Priority to CN202311266424.8A priority Critical patent/CN116991750B/zh
Publication of CN116991750A publication Critical patent/CN116991750A/zh
Application granted granted Critical
Publication of CN116991750B publication Critical patent/CN116991750B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了利用多线程和分布式代理实现大并发模拟的压力测试方法,属于压力测试技术领域,其方法包括:获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中;获取用户上传的参数数据,确定测试需求,设置测试场景;启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上;基于多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,将测试数据进行第二聚合,供用户客户端订阅。解决了压测工具价格昂贵,在参数数据传送和分配上不能自动化,且大多工具没有提供功能灵活的API支持,测试数据过大无法处理,且大压力自身数据聚合出现瓶颈的问题。

Description

利用多线程和分布式代理实现大并发模拟的压力测试方法
技术领域
本发明涉及压力测试技术领域,特别涉及利用多线程和分布式代理实现大并发模拟的压力测试方法。
背景技术
目前,现有压力测试工具或平台包含国外商业化压测工具LoadRunner,行业使用范围广泛,支持多种协议,脚本语言类C,也支持纯c语言代码。开源工具jmeter,实现了ui界面化操作,支持java代码编写测试脚本,使用也比较广泛,对开发和一般测试人员比较友好。国内基于jmeter封装的其他平台,在压力测试平台化、例行化互联网类公司,大多基于jmeter框架二次开发了自己的压测平台。但是这些压测工具和平台价格昂贵,一般企业难以承受,在参数数据传送和分配上不能自动化,测试资产分散于不同测试者难以管理和交接;且大多工具没有提供功能灵活的API支持,在压力持续时间较长时会出现宕机或因测试结果数据过大无法处理的情况,且大压力自身数据聚合出现瓶颈,使用场景比较单一。
因此,本发明提出利用多线程和分布式代理实现大并发模拟的压力测试方法。
发明内容
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,通过获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中,同时,获取用户上传的参数数据,并根据参数数据确定测试需求,基于测试需求设置测试场景,启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上,基于多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅。解决了背景技术中压测工具和平台价格昂贵,在参数数据传送和分配上不能自动化,且大多工具没有提供功能灵活的API支持,在压力持续时间较长时会出现宕机或因测试结果数据过大无法处理的情况,且大压力自身数据聚合出现瓶颈,使用场景比较单一的问题。
本发明提出利用多线程和分布式代理实现大并发模拟的压力测试方法,该方法包括:
步骤1:获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中;
步骤2:获取用户上传的参数数据,并根据参数数据确定测试需求,基于测试需求设置测试场景;
步骤3:启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上;
步骤4:基于所述多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,同时,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅。
优选的,获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中,包括:
从用户客户端接收用户上传的项目描述数据,根据项目描述数据获取新建项目和项目信息;
根据新建项目和项目信息获取阶段性项目指标以及阶段性项目指标的源代码;
基于阶段性项目指标的源代码编写java脚本测试类并将所有的阶段性项目指标的java脚本测试类进行打包;
根据项目信息确定项目类型,基于项目类型选择指定项目类,将打包的所有的阶段性项目指标的java脚本测试类上传到测试平台对应的指定项目类中。
优选的,获取用户上传的参数数据,并根据参数数据确定测试需求,基于测试需求设置测试场景,包括:
使用 JavaScript 获取用户上传的参数数据,将参数数据存储在数组中;
根据所述参数数据查询数据库及文件系统,确定测试需求;
获取测试需求的详细信息;
基于所述测试需求的详细信息设置测试场景,并将测试场景信息进行存储。
优选的,启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上,包括:
获取参数数据的数据属性,根据数据属性确定与参数数据匹配的多项测试任务;
选择与测试任务兼容的并行计算框架;
基于所述并行计算框架获取并行化的测试任务函数;
启动测试场景,基于所述测试任务函数将多项测试任务分发到多线程上。
优选的,基于所述多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,包括:
使用Java的多线程机制,利用每个测试线程分别执行java脚本测试类对应的测试代码;
获取执行后的所有测试线程的数据,并将数据存储到测试数据结构中;
获取测试数据的具体属性,并根据具体属性基于聚合算法对测试数据结构中的数据进行第一聚合;
获取第一聚合后的数据类型和数据长度;
根据所述数据类型和数据长度且结合Java的数据序列化和反序列化机制,将测试数据序列化为字节数组,并传输到存储数据库。
优选的,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅,包括:
获取数据处理中心的负载情况和用户访问频率;
基于所述测试数据的数量确定聚合度;
基于所述聚合度、数据处理中心的负载情况和用户访问频率确定聚合类型,并基于所述聚合类型选择聚合方法对测试数据进行第二聚合;
将第二聚合后的测试数据进行存储并供用户客户端订阅。
优选的,还包括:
确认测试结束后,采集全部测试过程数据和测试结果数据;
将测试过程数据和测试结果数据进行保存和展示;
接收用户上传的Java管理扩展框架,基于用户在Java管理扩展框架的输入参数,根据输入参数生成修改和测试指令;
根据修改和测试指令对测试平台的测试参数进行修改。
优选的,根据新建项目和项目信息获取阶段性项目指标,获取阶段性项目指标的源代码,包括:
根据新建项目和项目信息获取项目各个阶段的阶段信息,根据阶段信息获取阶段性项目指标;
基于阶段性项目指标获取代码文件,从代码文件中获取压缩源代码;
对压缩源代码进行解压,获取解压源代码,将解压源代码确认为阶段性项目指标的源代码。
优选的,根据参数数据确定测试需求,基于测试需求设置测试场景,还包括:
获取每一参数数据对应的数据来源并建立数据-来源对应列表;
解析所述数据-来源对应列表中包含的若干种数据来源中两两数据来源之间的关系,建立第一关系网;
将每一数据来源在所述第一关系网上的位置记作对应的第一网节点;
分别获取每个目标第一网节点与所述第一关系网中剩余的目标第二网节点之间的节点关系;
将参数数据输入到所述第一关系网对应的第一网节点上,根据参数数据在所述第一关系网中的分布情况建立参数数据中各子数据之间的第二关系网;
将所述第二关系网中每一子数据视为原始数据信息;
基于所述节点关系,分析所述第二关系网中两两原始数据信息之间的信息关系;
基于所述信息关系,为参数数据建立对应的逻辑训练模型;
将每个原始数据信息输入到逻辑训练模型中进行逻辑训练,确定每一训练结果中包含的训练数据信息;
将每个原始数据信息与该原始数据信息的训练数据信息进行组合,构成信息对,并将信息对中的两个信息进行对齐训练及信息对比,获取两个信息之间的差异点;
获取每一差异点包含的子原始数据信息并解析,获取所述子原始数据信息在所述原始数据信息上的信息比重;
提取信息比重大于预设比重的差异点,记作待校准点,对待校准点上的目标子原始数据信息进行校准,根据校准结果获取调整后的参数数据。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中利用多线程和分布式代理实现大并发模拟的压力测试方法的流程图;
图2为本发明实施例中利用多线程和分布式代理实现大并发模拟的压力测试方法的另一流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,如图1所示,该方法包括:
步骤1:获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中;
步骤2:获取用户上传的参数数据,并根据参数数据确定测试需求,基于测试需求设置测试场景;
步骤3:启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上;
步骤4:基于所述多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,同时,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅。
该实施例中,新建项目通常是指在已有的项目或组件的基础上,重新开始一个全新的项目或更新已有项目,需要对原有的项目进行一些配置和参数的调整,以便更好地满足当前的需求。
该实施例中,项目信息包括:项目需求,明确项目的目标和范围,包括功能需求、性能需求、安全需求。
项目计划,包括项目的开发周期、进度计划、资源计划,以确保项目按时按质完成。
项目风险,识别项目开发过程中可能出现的风险,并制定应对措施。
该实施例中,java脚本测试类是指在Java语言中,用于编写测试脚本的一类类,测试脚本可以在测试工具中运行,以验证代码的正确性和完整性,在Java中,常见的测试类包括:JUnit、Mockito、TestNG。
该实施例中,参数数据包括:基本信息,比如姓名、性别、联系方式。
该实施例中,测试需求是指确定测试需求的关键在于理解用户需求并将其转化为软件功能和特性,理解用户需求,确定软件功能和特性,根据理解到的用户需求,确定软件需要实现哪些功能和特性。需要将用户需求转换为软件的功能和特性,以确保软件能够解决问题和提供有用的功能。
该实施例中,测试场景是指软件开发过程中模拟实际应用场景的一种测试方法,用于验证软件系统是否符合预期的功能和性能,以及是否能够正确地处理各种情况和异常。
该实施例中,多线程分布式是一种编程模型,它允许多个线程在不同的进程或机器上执行,在多线程分布式编程中,线程之间可以相互通信和协作,完成复杂的任务。
该实施例中,第一聚合是java脚本测试类对测试数据进行聚合。
该实施例中,第二聚合是指数据处理中心对测试数据进行聚合。
上述技术方案的有益效果是:通过获取新建项目和项目信息,并编写对应的java脚本测试类并打包上传到测试平台的指定项目类中,根据用户上传的参数数据确定测试需求,并设置测试场景,将与参数数据匹配的多项测试任务分发到多线程上,能够保证参数数据传送和分配上实现自动化,测试资产分散于不同测试者便于管理和交接,同时,避免了在压力持续时间较长时会出现宕机或因测试结果数据过大无法处理的情况,进一步的,基于所述多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,同时,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅,能够解决大压力自身数据聚合时出现瓶颈,使用场景比较多样化。
实施例2:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,如图2所示,获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中,包括:
S01:从用户客户端接收用户上传的项目描述数据,根据项目描述数据获取新建项目和项目信息;
S02:根据新建项目和项目信息获取阶段性项目指标以及阶段性项目指标的源代码;
S03:基于阶段性项目指标的源代码编写java脚本测试类并将所有的阶段性项目指标的java脚本测试类进行打包;
S04:根据项目信息确定项目类型,基于项目类型选择指定项目类,将打包的所有的阶段性项目指标的java脚本测试类上传到测试平台对应的指定项目类中。
该实施例中,项目描述数据通常是指在项目管理中,描述项目进展、状态、风险信息的数据。
该实施例中,阶段性项目指标是指在项目管理中,为了评估项目在特定阶段的表现,通常会设定的一些关键指标,比如,项目启动阶段:项目启动阶段的关键指标可能包括项目的可行性分析、项目目标和风险分析。需求确定阶段:需求确定阶段的关键指标可能包括需求的收集和整理、需求的优先级排序等
该实施例中,阶段性项目指标的源代码项目指标的源文件,包含了不同阶段项目指标的数据,比如风险分析结果。
该实施例中,项目类型是指项目的具体类型或类别,通常根据项目的目标和特征进行分类,包括:传统项目、敏捷项目。
该实施例中,项目类是指一组相互关联的项目,这些项目可能属于同一项目主体,也可能属于不同的项目主体。
上述技术方案的有益效果是:通过用户上传的项目描述数据获取项目信息,并获取阶段性项目指标和阶段性项目指标的源代码,根据源代码编写对应的java脚本测试类并进行打包,将打包的java脚本测试类上传到测试平台对应的指定项目类中,能够将不同的项目指标快速进行分类,提高编写效率和分类速度。
实施例3:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,获取用户上传的参数数据,并根据参数数据确定测试需求,基于测试需求设置测试场景,包括:
使用 JavaScript 获取用户上传的参数数据,将参数数据存储在数组中;
根据所述参数数据查询数据库及文件系统,确定测试需求;
获取测试需求的详细信息;
基于所述测试需求的详细信息设置测试场景,并将测试场景信息进行存储。
该实施例中,JavaScript是一种具有函数优先的轻量级,即时编译型的编程语言。
该实施例中,数组是一个由相同类型的数据元素组成的集合,数组通常用于存储一系列相关数据,例如数字、字符串、对象。
该实施例中,数据库是一个组织和存储数据的系统,可以使用户创建、访问和维护数据,并且提供了多种方式来查询和检索数据,通常用于存储和管理大量数据,并且能与其他应用程序和系统进行交互,常见的数据库类型包括关系型数据库、非关系型数据库和面向对象数据库。
该实施例中,文件系统是一个用于管理和访问文件和文件夹的系统,它允许用户创建、删除、复制、移动和重命名文件和文件夹,常见的文件系统类型包括NTFS、FAT32、ExBeeF。
该实施例中,测试需求的详细信息是指具体要测试什么,比如测试软件的反应速度、流畅度。
该实施例中,测试场景是指软件开发过程中模拟实际应用场景的一种测试方法,用于验证软件系统是否符合预期的功能和性能,以及是否能够正确地处理各种情况和异常。
上述技术方案的有益效果是:通过使用 JavaScript 获取用户上传的参数数据,并根据参数数据查询数据库及文件系统,确定测试需求的详细信息,以此来设置测试场景,能够模拟真实环境,减少测试次数,提高测试效率。
实施例4:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上,包括:
获取参数数据的数据属性,根据数据属性确定与参数数据匹配的多项测试任务;
选择与测试任务兼容的并行计算框架;
基于所述并行计算框架获取并行化的测试任务函数;
启动测试场景,基于所述测试任务函数将多项测试任务分发到多线程上。
该实施例中,数据属性是指描述数据的数据类型和结构的属性,数据属性通常包括数据类型、数据长度、数据类型、数据存储方式。
该实施例中,并行计算框架是指用于并行执行计算任务的软件框架,比如:Fork/Join、Apache Spark。
该实施例中,测试任务函数是指在软件测试过程中,为了验证软件的正确性、可用性需求,将软件的不同功能、场景、边界条件进行划分,并按照一定的组织结构进行组织,以达到测试软件的目的。
上述技术方案的有益效果是:通过获取参数数据的数据属性,并确定与参数数据匹配的多项测试任务,选择与测试任务兼容的并行计算框架,并获取并行化的测试任务函数,基于测试任务函数将多项测试任务分发到多线程上,能够减少由于数据过大导致系统宕机的问题。
实施例5:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,基于所述多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,包括:
使用Java的多线程机制,利用每个测试线程分别执行java脚本测试类对应的测试代码;
获取执行后的所有测试线程的数据,并将数据存储到测试数据结构中;
获取测试数据的具体属性,并根据具体属性基于聚合算法对测试数据结构中的数据进行第一聚合;
获取第一聚合后的数据类型和数据长度;
根据所述数据类型和数据长度且结合Java的数据序列化和反序列化机制,将测试数据序列化为字节数组,并传输到存储数据库。
该实施例中,Java的多线程机制是指Java语言中的一种并发执行机制,它允许同时执行多个任务,从而提高程序的执行效率。
该实施例中,测试代码是一种软件测试工具,它允许测试人员在代码中设置测试条件,然后运行程序以验证程序是否符合预期,通常是一个脚本或命令,它可以在测试过程中执行各种操作,如读取输入、比较结果。
该实施例中,测试数据是指在测试过程中使用的数据,通常用于测试软件程序的功能和性能,测试数据的属性包括:
测试数据的类型,测试数据可以是数字、字符串、布尔值各种类型。
测试数据的范围,测试数据的范围应该覆盖软件程序的预期范围,比如测试最高可达到的分数、测试最少可能的内存占用。
测试数据的来源,测试数据的来源可以包括测试输入、预设值、操作系统命令。
测试数据的完整性,测试数据的完整性可以包括测试数据的正确性、完整性、一致性,例如测试数据是否符合预期的格式、测试数据是否能准确的反映程序的状态。
该实施例中,聚合算法是指在数据处理过程中,将多个数据元素按照某种属性进行组合,从而得到一个新的数据元素。
该实施例中,Java 的数据序列化是指将对象序列化为字节码的过程,通常用于将对象存储为字节序列,以便在不同的操作系统或应用程序之间进行交换。
该实施例中,反序列化机制是指在 Java 程序中,当需要将字节码转换回原始对象时,可以使用反序列化机制进行转换。
上述技术方案的有益效果是:通过使用Java的多线程机制,利用每个测试线程分别执行java脚本测试类对应的测试代码,通过使用测试代码,我们可以确保软件程序在发布之前能够通过各种测试,以确保程序的正确性和可靠性,获取执行后的所有测试线程的数据,并存储到测试数据结构中,获取测试数据的具体属性,通过了解测试数据的这些属性,我们可以确保测试的准确性和有效性,并根据具体属性基于聚合算法对测试数据结构中的数据进行第一聚合,获取第一聚合后的数据类型和数据长度,结合Java的数据序列化和反序列化机制,将测试数据序列化为字节数组,并传输到存储数据库,方便数据的查找。
实施例6:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅,包括:
获取数据处理中心的负载情况和用户访问频率;
基于所述测试数据的数量确定聚合度;
基于所述聚合度、数据处理中心的负载情况和用户访问频率确定聚合类型,并基于所述聚合类型选择聚合方法对测试数据进行第二聚合;
将第二聚合后的测试数据进行存储并供用户客户端订阅。
该实施例中,数据处理中心的负载情况通常是指在特定时间段内,数据处理中心所能处理的数据数量情况,负载情况会受到多种因素的影响,例如业务的波动、设备的故障、网络的影响。
该实施例中,用户访问频率是指在单位时间内,用户访问数据处理中心的次数。
该实施例中,聚合度是用来衡量测试数据中各个属性之间相关性的度量指标。
该实施例中,聚合类型是指数据在数据库中的一种存储方式,比如数据聚合、数值聚合。
该实施例中,聚合方法是指比如是数据聚合,针对数据库中的表格数据,可以使用聚合函数进行汇总。
上述技术方案的有益效果是:通过测试数据的数量确定聚合度,根据聚合度、数据处理中心的负载情况和用户访问频率确定聚合类型,并基于聚合类型选择聚合方法对测试数据进行第二聚合,能够提高测试数据的价值,进一步的,将第二聚合后的测试数据进行存储并供客户端订阅,方便客户进行获取,提高工作效率和数据分析的效率。
实施例7:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,还包括:
确认测试结束后,采集全部测试过程数据和测试结果数据;
将测试过程数据和测试结果数据进行保存和展示;
接收用户上传的Java管理扩展框架,基于用户在Java管理扩展框架的输入参数,根据输入参数生成修改和测试指令;
根据修改和测试指令对测试平台的测试参数进行修改。
该实施例中,测试过程数据是指在软件测试过程中,测试团队收集的各种测试数据,包括测试用例执行结果、测试样本数据、测试环境数据、测试进度数据,比如,在网络测试中,测试团队可以使用浏览器提供的调试工具来记录测试数据,如元素引用、网络请求等,以便进行测试数据的分析和总结。
该实施例中,Java管理扩展框架是指在Java开发过程中,用于管理开发、测试、部署和运行时资源的框架。
上述技术方案的有益效果是:通过接收接收用户上传的Java管理扩展框架,基于用户在Java管理扩展框架的输入参数,根据输入参数生成修改和测试指令,根据指令对测试数据进行修改,能够实现数据的实时性,保证测试结果的准确性。
实施例8:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,根据新建项目和项目信息获取阶段性项目指标,获取阶段性项目指标的源代码,包括:
根据新建项目和项目信息获取项目各个阶段的阶段信息,根据阶段信息获取阶段性项目指标;
基于阶段性项目指标获取代码文件,从代码文件中获取压缩源代码;
对压缩源代码进行解压,获取解压源代码,将解压源代码确认为阶段性项目指标的源代码。
该实施例中,阶段信息包括:阶段名称,每个项目的生命周期中都会经历不同的阶段,例如开发阶段、测试阶段、上线阶段等等。
阶段开始时间,每个阶段开始的具体时间。
阶段结束时间,每个阶段结束的具体时间。
阶段描述,每个阶段的简要描述,例如开发阶段包括代码编写、测试、调试。
该实施例中,根据阶段开始时间和结束时间就能够确定在开发项目这个阶段的时间指标,不能超过多少天。
该实施例中,代码文件为每个阶段编写代码文件模板,包含该阶段所需的所有代码文件、配置文件、测试文件,使用代码生成工具,根据项目的阶段指标,自动生成每个阶段的代码文件。
该实施例中,压缩源代码是指将源代码转换为压缩后的二进制文件,以便在存储和传输过程中减少文件大小,从而提高效率。
上述技术方案的有益效果是:通过获取各个阶段的阶段信息,根据阶段信息获取阶段性项目指标,从而获取代码文件,获取压缩源代码并进行解压,将解压源代码确认为阶段性项目指标的源代码,能够保证代码的一致性,提高代码质量,同时能够在将解压的源代码重新整理后,可以方便地对后续项目的代码进行追溯。
实施例9:
本发明提供利用多线程和分布式代理实现大并发模拟的压力测试方法,根据参数数据确定测试需求,基于测试需求设置测试场景,还包括:
获取每一参数数据的历史数据来源并建立数据-来源对应列表;
解析所述数据-来源对应列表中包含的若干种数据来源中两两数据来源之间的关系,建立第一关系网;
将每一数据来源在所述第一关系网上的位置记作对应的第一网节点;
分别获取每个目标第一网节点与所述第一关系网中剩余的目标第二网节点之间的节点关系;
将参数数据输入到所述第一关系网对应的第一网节点上,根据参数数据在所述第一关系网中的分布情况建立参数数据中各子数据之间的第二关系网;
将所述第二关系网中每一子数据视为原始数据信息;
基于所述节点关系,分析所述第二关系网中两两原始数据信息之间的信息关系;
基于所述信息关系,为参数数据建立对应的逻辑训练模型;
将每个原始数据信息输入到逻辑训练模型中进行逻辑训练,确定每一训练结果中包含的训练数据信息;
将每个原始数据信息与该原始数据信息的训练数据信息进行组合,构成信息对,并将信息对中的两个信息进行对齐训练及信息对比,获取两个信息之间的差异点;
获取每一差异点包含的子原始数据信息并解析,获取所述子原始数据信息在所述原始数据信息上的信息比重;
提取信息比重大于预设比重的差异点,记作待校准点,对待校准点上的目标子原始数据信息进行校准,根据校准结果获取调整后的参数数据。
该实施例中,历史数据来源是参数数据的来源,即参数数据是用户基于何种设备或者网址上传的,比如,该参数可以是用户基于不同的网页1、网页2以及网页3上传的,那么,建立的数据-来源对应列表即为参数数据1-网页1、2、3,参数数据2-网页a1、a9等。
该实施例中,第一关系网表示根据不同用户在不同网页上传的且上传的参数数据与对应项目文件中数据之间的关联关系,进而建立得到关系网。
该实施例中,两两数据来源之间的关系的解析步骤如下:
确定第一数据来源涉及到的第一参数数据以及确定第二数据来源涉及到的第二参数数据;
将所有第一参数数据以及所有第二参数数据分别进行参数标准化处理,得到第一标准化参数以及第二标准化参数;
对第一标准化参数以及第二标准化参数进行交处理,确定交处理后的参数对中的最大差异值以及最小差异值,并随机筛选n1个交处理后的参数对进行局部计算,得到第一关系系数;
对第一标准化参数以及第二标准化参数进行相似处理,获取第一标准化参数中相似度为0的第一个数以及第二标准化参数中相似度为0的第二个数,同时,从第一标准化参数中相似度不为0的参数以及从第二标准化参数中相似度不为0的参数进行全局对比,并得到第二关系系数;
从相似度参数中剔除交处理结果中的参数,得到多余标准化参数,并构建得到每个多余标准化参数的相似曲线以及相似曲线基于最大标准化参数的距离曲线;
根据相似曲线以及距离曲线,计算得到对应多余标准化参数的补偿系数;
基于第一个数、第二个数/>、第一关系系数G1、第二关系系数G2以及所有补偿系数,计算得到第三关系系数;
根据第三关系系数、两个来源分别对应的预设关系系数,从系数-关系映射表中获取得到对应两个数据来源的关系。
该实施例中,在获取参数数据的历史数据来源时,就可以直接得到每个数据来源所对应匹配的参数数据。
该实施例中,比如,第一数据来源涉及参数1、2、3,第二数据来源涉及参数1、3、4,此时,交处理之后得到的参数对为第一数据来源的参数1、第二数据来源的参数1,此时,不同来源的参数1的取值可能是不同的。
该实施例中,标准化处理的目的是为了方便进行后续的参数计算,避免因为量纲不一样导致计算出错。
该实施例中,,其中,/>表示随机筛选的n1个参数对中的一个差异值,其中差异值是差值绝对值;/>表示最小差异值,表示最大差异值。
该实施例中,,其中,/>表示随机筛选的n1个参数对中的一个差异值,其中差异值是差值绝对值;表示最小差异值,/>表示最大差异值。
其中,表示第一标准化参数中相似度不为0的第i1个参数的权重;/>表示第一标准化参数中相似度不为0的第i1个参数的相似结果值;/>表示第一标准化参数中相似度不为0的第i1个参数的相似个数;/>表示第一标准化参数中相似度不为0的参数的总个数;/>表示第二标准化参数中相似度不为0的参数的总个数;/>表示第二标准化参数中相似度不为0的第i2个参数的权重;/>表示第二标准化参数中相似度不为0的第i2个参数的相似结果值;/>表示第二标准化参数中相似度不为0的第i2个参数的相似个数;
该实施例中,针对来源a1的相似度参数为01、02、03,针对来源a2的相似度参数为01、12、13,此时,参数对参数01,此时,多余标准化参数即为02、03、12、13对应的。
该实施例中,比如,相似度参数02与参数12和13存在相似,此时,针对参数02的相似曲线是由参数12以及参数13的标准化后的值构建得到的,且距离曲线是基于来源a1中的最大标准化参数与对应参数12、13对应的差值比值构建得到的。
该实施例中,补偿系数=(相似曲线的单位曲线面积+距离曲线的单位曲线面积)/(2×N3×历史最大单位面积),其中,N3为与对应相似度参数存在相似的其余参数总个数。
该实施例中,
其中,表示所有补偿系数的平均值;/>为两个来源中的一个来源涉及到的参数总数;/>为两个来源中的另一个来源涉及到的参数总数。
该实施例中,系数-映射表是包含不同的组合系数以及与组合系数对应的关系在内的,且该关系是为了建立两个数据库来源之间的相互走向连线情况,进而方便后续构建关系网。
该实施例中,第一网节点表示不同数据来源在第一关系网中的表达方式,也可以理解为数据来源在第一关系网中的位置。
该实施例中,节点关系与数据来源之间的关系相对应,是一致的。
该实施例中,第二关系网表示将数据信息传输到第一关系网对应的第一网节点后生成的关系网,是用来表示数据信息之间的关系。
该实施例中,原始数据信息与数据信息一致。
该实施例中,信息关系表示不同原始数据信息之间的逻辑关系。
该实施例中,逻辑训练模型是一种人工智能技术,它主要用于分析和识别逻辑关系的模型。
该实施例中,原始数据信息与训练数据信息之间一一对应,训练数据信息是原始数据信息经过逻辑训练后的结果,在逻辑训练模型训练过程中,需要对数据集进行预处理,例如去除无用的标点符号、去除停用词、标准化词汇。
该实施例中,信息对由训练数据信息和其对应的原始数据信息组成。
该实施例中,子原始数据信息表示原始数据信息上的差异点对应的数据信息。
该实施例中,差异点是指原始信息和训练后的数据之间存在的差异,比如缺少一个数据。
该实施例中,信息比重是指子原始数据在原始数据信息上所占的比值,比如子原始数据有10个数据,原始数据有25个数据,那么子原始数据的信息比重为40%。
该实施例中,预设比重是20%。
上述技术方案的有益效果是:为了保障对数据信息进行分析和处理的过程中每一数据信息均得到相应的处理,所以对所有的数据信息进行统一分析,通过利用不同数据来源之间的关系建立关系网,进而对所有数据信息进行统一分析,这样一来,可以得到数据信息之间的差异,实现对参数数据的合理调整。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,该方法包括:
步骤1:获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中;
步骤2:获取用户上传的参数数据,并根据参数数据确定测试需求,基于测试需求设置测试场景;
步骤3:启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上;
步骤4:基于所述多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,同时,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅;
其中,根据参数数据确定测试需求,基于测试需求设置测试场景,还包括:
获取每一参数数据对应的数据来源并建立数据-来源对应列表;
解析所述数据-来源对应列表中包含的若干种数据来源中两两数据来源之间的关系,建立第一关系网;
将每一数据来源在所述第一关系网上的位置记作对应的第一网节点;
分别获取每个目标第一网节点与所述第一关系网中剩余的目标第二网节点之间的节点关系;
将参数数据输入到所述第一关系网对应的第一网节点上,根据参数数据在所述第一关系网中的分布情况建立参数数据中各子数据之间的第二关系网;
将所述第二关系网中每一子数据视为原始数据信息;
基于所述节点关系,分析所述第二关系网中两两原始数据信息之间的信息关系;
基于所述信息关系,为参数数据建立对应的逻辑训练模型;
将每个原始数据信息输入到逻辑训练模型中进行逻辑训练,确定每一训练结果中包含的训练数据信息;
将每个原始数据信息与该原始数据信息的训练数据信息进行组合,构成信息对,并将信息对中的两个信息进行对齐训练及信息对比,获取两个信息之间的差异点;
获取每一差异点包含的子原始数据信息并解析,获取所述子原始数据信息在所述原始数据信息上的信息比重;
提取信息比重大于预设比重的差异点,记作待校准点,对待校准点上的目标子原始数据信息进行校准,根据校准结果获取调整后的参数数据;
其中,解析所述数据-来源对应列表中包含的若干种数据来源中两两数据来源之间的关系,包括:
确定第一数据来源涉及到的第一参数数据以及确定第二数据来源涉及到的第二参数数据;
将所有第一参数数据以及所有第二参数数据分别进行参数标准化处理,得到第一标准化参数以及第二标准化参数;
对第一标准化参数以及第二标准化参数进行交处理,确定交处理后的参数对中的最大差异值以及最小差异值,并随机筛选n1个交处理后的参数对进行局部计算,得到第一关系系数;
对第一标准化参数以及第二标准化参数进行相似处理,获取第一标准化参数中相似度为0的第一个数以及第二标准化参数中相似度为0的第二个数,同时,从第一标准化参数中相似度不为0的参数以及从第二标准化参数中相似度不为0的参数进行全局对比,并得到第二关系系数;
从相似度参数中剔除交处理结果中的参数,得到多余标准化参数,并构建得到每个多余标准化参数的相似曲线以及相似曲线基于最大标准化参数的距离曲线;
根据相似曲线以及距离曲线,计算得到对应多余标准化参数的补偿系数;
基于第一个数、第二个数/>、第一关系系数G1、第二关系系数G2以及所有补偿系数,计算得到第三关系系数;
根据第三关系系数、两个来源分别对应的预设关系系数,从系数-关系映射表中获取得到对应两个数据来源的关系。
2.根据权利要求1所述的利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,获取新建项目和项目信息,来编写对应的java脚本测试类并打包上传到测试平台的指定项目类中,包括:
从用户客户端接收用户上传的项目描述数据,根据项目描述数据获取新建项目和项目信息;
根据新建项目和项目信息获取阶段性项目指标以及阶段性项目指标的源代码;
基于阶段性项目指标的源代码编写java脚本测试类并将所有的阶段性项目指标的java脚本测试类进行打包;
根据项目信息确定项目类型,基于项目类型选择指定项目类,将打包的所有的阶段性项目指标的java脚本测试类上传到测试平台对应的指定项目类中。
3.根据权利要求1所述的利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,获取用户上传的参数数据,并根据参数数据确定测试需求,基于测试需求设置测试场景,包括:
使用 JavaScript 获取用户上传的参数数据,将参数数据存储在数组中;
根据所述参数数据查询数据库及文件系统,确定测试需求;
获取测试需求的详细信息;
基于所述测试需求的详细信息设置测试场景,并将测试场景信息进行存储。
4.根据权利要求1所述的利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,启动测试场景,并将与参数数据匹配的多项测试任务分发到多线程上,包括:
获取参数数据的数据属性,根据数据属性确定与参数数据匹配的多项测试任务;
选择与测试任务兼容的并行计算框架;
基于所述并行计算框架获取并行化的测试任务函数;
启动测试场景,基于所述测试任务函数将多项测试任务分发到多线程上。
5.根据权利要求1所述的利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,基于所述多线程分布式执行java脚本测试类,将每个测试线程的测试数据进行第一聚合,并传输到存储数据库,包括:
使用Java的多线程机制,利用每个测试线程分别执行java脚本测试类对应的测试代码;
获取执行后的所有测试线程的数据,并将数据存储到测试数据结构中;
获取测试数据的具体属性,并根据具体属性基于聚合算法对测试数据结构中的数据进行第一聚合;
获取第一聚合后的数据类型和数据长度;
根据所述数据类型和数据长度且结合Java的数据序列化和反序列化机制,将测试数据序列化为字节数组,并传输到存储数据库。
6.根据权利要求1所述的利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,基于数据处理中心将所有测试数据进行第二聚合,供用户客户端订阅,包括:
获取数据处理中心的负载情况和用户访问频率;
基于所述测试数据的数量确定聚合度;
基于所述聚合度、数据处理中心的负载情况和用户访问频率确定聚合类型,并基于所述聚合类型选择聚合方法对测试数据进行第二聚合;
将第二聚合后的测试数据进行存储并供用户客户端订阅。
7.根据权利要求1所述的利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,还包括:
确认测试结束后,采集全部测试过程数据和测试结果数据;
将测试过程数据和测试结果数据进行保存和展示;
接收用户上传的Java管理扩展框架,基于用户在Java管理扩展框架的输入参数,根据输入参数生成修改和测试指令;
根据修改和测试指令对测试平台的测试参数进行修改。
8.根据权利要求2所述的利用多线程和分布式代理实现大并发模拟的压力测试方法,其特征在于,根据新建项目和项目信息获取阶段性项目指标,获取阶段性项目指标的源代码,包括:
根据新建项目和项目信息获取项目各个阶段的阶段信息,根据阶段信息获取阶段性项目指标;
基于阶段性项目指标获取代码文件,从代码文件中获取压缩源代码;
对压缩源代码进行解压,获取解压源代码,将解压源代码确认为阶段性项目指标的源代码。
CN202311266424.8A 2023-09-28 2023-09-28 利用多线程和分布式代理实现大并发模拟的压力测试方法 Active CN116991750B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311266424.8A CN116991750B (zh) 2023-09-28 2023-09-28 利用多线程和分布式代理实现大并发模拟的压力测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311266424.8A CN116991750B (zh) 2023-09-28 2023-09-28 利用多线程和分布式代理实现大并发模拟的压力测试方法

Publications (2)

Publication Number Publication Date
CN116991750A CN116991750A (zh) 2023-11-03
CN116991750B true CN116991750B (zh) 2023-12-22

Family

ID=88528756

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311266424.8A Active CN116991750B (zh) 2023-09-28 2023-09-28 利用多线程和分布式代理实现大并发模拟的压力测试方法

Country Status (1)

Country Link
CN (1) CN116991750B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102354298A (zh) * 2011-07-27 2012-02-15 哈尔滨工业大学 基于staf的高端容错机故障注入自动化测试平台及方法
CN105808428A (zh) * 2016-03-03 2016-07-27 南京大学 一种对分布式文件系统进行统一性能测试的方法
CN113377667A (zh) * 2021-06-29 2021-09-10 平安国际融资租赁有限公司 一种基于场景的测试方法、装置、计算机设备及存储介质
CN114564378A (zh) * 2022-03-01 2022-05-31 上海中通吉网络技术有限公司 一种基于Java的多线程性能测试的方法、装置及系统
CN114994261A (zh) * 2022-07-08 2022-09-02 东阿县环境监控中心 环境空气监测的传感器远程校准方法
CN115454871A (zh) * 2022-09-23 2022-12-09 北京字跳网络技术有限公司 压力测试方法、系统、存储介质以及电子设备
CN116303041A (zh) * 2023-03-22 2023-06-23 展讯半导体(成都)有限公司 分布式测试方法及系统
CN116795625A (zh) * 2022-12-23 2023-09-22 慧之安信息技术股份有限公司 一种基于Java的多线程性能测试的方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120788B2 (en) * 2017-01-23 2018-11-06 Accenture Global Solutions Limited Cloud connected automated testing in multiple operating environments using multiple parallel test threads
US10956314B2 (en) * 2018-11-02 2021-03-23 Infosys Limited Method and system for regression test selection in a multi-threaded distributed target program execution tested by multi-threaded test suites

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102354298A (zh) * 2011-07-27 2012-02-15 哈尔滨工业大学 基于staf的高端容错机故障注入自动化测试平台及方法
CN105808428A (zh) * 2016-03-03 2016-07-27 南京大学 一种对分布式文件系统进行统一性能测试的方法
CN113377667A (zh) * 2021-06-29 2021-09-10 平安国际融资租赁有限公司 一种基于场景的测试方法、装置、计算机设备及存储介质
CN114564378A (zh) * 2022-03-01 2022-05-31 上海中通吉网络技术有限公司 一种基于Java的多线程性能测试的方法、装置及系统
CN114994261A (zh) * 2022-07-08 2022-09-02 东阿县环境监控中心 环境空气监测的传感器远程校准方法
CN115454871A (zh) * 2022-09-23 2022-12-09 北京字跳网络技术有限公司 压力测试方法、系统、存储介质以及电子设备
CN116795625A (zh) * 2022-12-23 2023-09-22 慧之安信息技术股份有限公司 一种基于Java的多线程性能测试的方法及系统
CN116303041A (zh) * 2023-03-22 2023-06-23 展讯半导体(成都)有限公司 分布式测试方法及系统

Also Published As

Publication number Publication date
CN116991750A (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
US7596546B2 (en) Method and apparatus for organizing, visualizing and using measured or modeled system statistics
CN110309071B (zh) 测试代码的生成方法及模块、测试方法及系统
Jorgensen et al. Package ‘semtools’
CN107077413B (zh) 数据驱动的测试框架
US6182245B1 (en) Software test case client/server system and method
US7945657B1 (en) System and method for emulating input/output performance of an application
US9356966B2 (en) System and method to provide management of test data at various lifecycle stages
US8225285B2 (en) Generating a test suite to test support for routines
Bento et al. Automated analysis of distributed tracing: Challenges and research directions
CA3036812A1 (en) Test case generator built into data-integration workflow editor
US20100042959A1 (en) Test pattern coverage through parallel discard, flow control, and quality metrics
JP2016100006A (ja) パフォーマンス試験のためのベンチマーク・アプリケーションを生成する方法および装置
Liu Research of performance test technology for big data applications
CN111158656A (zh) 基于因果树法的测试代码生成方法及装置
CN111813739A (zh) 数据迁移方法、装置、计算机设备及存储介质
CN111966587A (zh) 数据采集方法、装置和设备
Barberis et al. The ATLAS EventIndex: a BigData catalogue for all ATLAS experiment events
Kovács et al. Benchmarking graph database backends—What works well with wikidata?
Varia et al. Automated assessment of secure search systems
CN114036034A (zh) 一种应用于实时流式计算的性能测试方法
CN111444635B (zh) 一种基于xml语言的系统动力学仿真建模方法及系统
CN116991750B (zh) 利用多线程和分布式代理实现大并发模拟的压力测试方法
CN112685316A (zh) 代码执行路径的获取方法、装置、计算机设备及存储介质
Ahmad et al. Identifying randomness related flaky tests through divergence and execution tracing
CN114168456A (zh) 一种基于3d-gis的前端性能自动化测试方法

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