CN111949536B - 基于字节码技术的java应用程序测试方法及系统 - Google Patents

基于字节码技术的java应用程序测试方法及系统 Download PDF

Info

Publication number
CN111949536B
CN111949536B CN202010818009.9A CN202010818009A CN111949536B CN 111949536 B CN111949536 B CN 111949536B CN 202010818009 A CN202010818009 A CN 202010818009A CN 111949536 B CN111949536 B CN 111949536B
Authority
CN
China
Prior art keywords
test
interface
information
java application
application program
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
CN202010818009.9A
Other languages
English (en)
Other versions
CN111949536A (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010818009.9A priority Critical patent/CN111949536B/zh
Publication of CN111949536A publication Critical patent/CN111949536A/zh
Application granted granted Critical
Publication of CN111949536B publication Critical patent/CN111949536B/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
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • 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
    • G06F11/3696Methods or tools to render software testable

Abstract

本发明提供了一种基于字节码技术的JAVA应用程序测试方法及系统,可用于人工智能技术领域,所述方法包括:根据预设测试信息得到JAVA应用程序信息、接口信息和测试任务信息;根据所述JAVA应用程序信息将数据采集代理程序传输至JAVA应用程序服务器,通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据;根据所述接口传输数据和测试任务信息形成测试脚本,并对所述JAVA应用程序服务器进行压力测试,本发明可。

Description

基于字节码技术的JAVA应用程序测试方法及系统
技术领域
本发明涉及JAVA应用程序测试技术领域,特别涉及人工智能技术领域,尤其涉及一种基于字节码技术的JAVA应用程序测试方法及系统。
背景技术
随着互联网的普及,互联网用户的急速增长,IT行业的用户需求也呈现爆炸式的增长,从而衍生了JAVA应用程序的随便快速交付和DevOps等理念,DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,为了按时交付软件产品和服务,开发和运营工作必须紧密合作,促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
传统的一个季度或者一个月度更新的月季度系统版本更新已经无法满足日益增长的用户需求。快速的新版本应用程序的迭代交付模式下,对于应用程序测试的需求日益增加。通过对各应用各版本编写自动化脚本的模式,能有效的解决不断增长的测试需求。但是,在测试领域,因为技术的专项性和专项测试人员的缺少,经常是一个专项测试人员对应多个应用,并且专项测试成本远大于功能测试,会存在性能测试覆盖不全的问题,这无疑增加的程序上线的性能风险,同时也不符合DevOps 4级的性能自动化理念。
发明内容
本发明的一个目的在于提供一种基于字节码技术的JAVA应用程序测试方法,解决目前的JAVA应用程序测试性能中测试覆盖不全的问题。本发明的另一个目的在于提供一种基于字节码技术的JAVA应用程序测试系统。本发明的再一个目的在于提供一种计算机设备。本发明的还一个目的在于提供一种可读介质。
为了达到以上目的,本发明一方面公开了一种基于字节码技术的JAVA应用程序测试方法,包括:
根据预设测试信息得到JAVA应用程序信息、接口信息和测试任务信息;
根据所述JAVA应用程序信息将数据采集代理程序传输至JAVA应用程序服务器,通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据;
根据所述接口传输数据和测试任务信息形成测试脚本,并对所述JAVA应用程序服务器进行压力测试。
优选的,所述通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据具体包括:
通过所述数据采集代理程序根据所述接口信息确定所有采集的应用程序接口;
对各接口通过字节码技术将预设的附加程序插入至JAVA应用程序中;
通过所述附加程序采集各接口的接口传输数据。
优选的,所述JAVA应用程序信息包括JAVA应用程序的环境信息、应用名、版本信息和服务器地址;
所述接口信息包括需要测试的接口类型、接口列表、白名单和采集频度;
所述测试任务信息包括测试任务列表和测试并发量。
优选的,所述根据所述接口传输数据和测试任务信息形成测试脚本具体包括:
根据所述测试任务信息得到测试任务列表;
若所述测试任务列表为mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,根据多个相似交易中出现频率最多的相似交易形成测试脚本;
若所述测试任务列表为非mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,对多个相似交易中出现频率最多的相似交易进行聚类分析,若聚类结果包括多个不同类别的相似交易,将相似交易的参数设置固定参数,若聚类结果为离散,将相似交易的参数设置为随机参数形式,根据设置参数后的相似交易形成测试脚本。
优选的,所述对所述JAVA应用程序服务器进行压力测试具体包括:
根据测试任务信息的测试并发量形成多个线程;
通过多个线程并发调用测试脚本对所述JAVA应用程序进行压力测试。
本发明还公开了一种基于字节码技术的JAVA应用程序测试系统,包括:
测试信息解析模块,用于根据预设测试信息得到JAVA应用程序信息、接口信息和测试任务信息;
代理程序部署模块,用于根据所述JAVA应用程序信息将数据采集代理程序传输至JAVA应用程序服务器,通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据;
自动化性能测试模块,用于根据所述接口传输数据和测试任务信息形成测试脚本,并对所述JAVA应用程序服务器进行压力测试。
优选的,所述代理程序部署模块具体用于通过所述数据采集代理程序根据所述接口信息确定所有采集的应用程序接口,对各接口通过字节码技术将预设的附加程序插入至JAVA应用程序中,通过所述附加程序采集各接口的接口传输数据。
优选的,所述JAVA应用程序信息包括JAVA应用程序的环境信息、应用名、版本信息和服务器地址;所述接口信息包括需要测试的接口类型、接口列表、白名单和采集频度;所述测试任务信息包括测试任务列表和测试并发量。
优选的,所述自动化性能测试模块具体用于根据所述测试任务信息得到测试任务列表,若所述测试任务列表为mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,根据多个相似交易中出现频率最多的相似交易形成测试脚本,若所述测试任务列表为非mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,对多个相似交易中出现频率最多的相似交易进行聚类分析,若聚类结果包括多个不同类别的相似交易,将相似交易的参数设置固定参数,若聚类结果为离散,将相似交易的参数设置为随机参数形式,根据设置参数后的相似交易形成测试脚本。
优选的,所述自动化性能测试模块进一步用于根据测试任务信息的测试并发量形成多个线程,通过多个线程并发调用测试脚本对所述JAVA应用程序进行压力测试。
本发明还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,
所述处理器执行所述程序时实现如上所述方法。
本发明还公开了一种计算机可读介质,其上存储有计算机程序,
该程序被处理器执行时实现如上所述方法。
通过为解决日益增长的性能测试需求,以及解决目前性能测试周期长,覆盖面狭窄的问题。本发明通过预先配置的测试信息在JAVA应用程序服务器设置代理程序,通过代理程序采用字节码技术采集JAVA应用程序服务器接口传输数据,根据接口传输数据和测试任务信息形成测试脚本,通过测试脚本自动对所述JAVA应用程序服务器进行压力测试,帮助测试人员减少因测试覆盖面不广,只针对核心交易测试而产生其他地方出错的问题。最大程度的保证交易性能的生产安全。本发明通过配置测试信息、自动化和算法分析的方式在功能或者流程测试完成一遍后,全面同步完成相关的性能测试,测试覆盖面广,且执行高效简单。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本发明基于字节码技术的JAVA应用程序测试方法一个具体实施例的流程图;
图2示出本发明基于字节码技术的JAVA应用程序测试方法一个具体实施例S200的流程图;
图3示出本发明基于字节码技术的JAVA应用程序测试方法一个具体实施例S300形成测试脚本的流程图;
图4示出本发明基于字节码技术的JAVA应用程序测试方法一个具体实施例S300性能测试的流程图;
图5示出本发明基于字节码技术的JAVA应用程序测试方法一个具体例子的流程图;
图6示出本发明基于字节码技术的JAVA应用程序测试系统一个具体实施例的结构图;
图7示出适于用来实现本发明实施例的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本申请可用于人工智能技术领域,也可用于除人工智能技术领域之外的任意领域,本申请的应用技术领域不作限定。
目前的JAVA应用程序测试存在接口性能测试覆盖不全的问题。目前为了解决这个问题,当一个月度版本多个程序有较多的需求时,每个程序都需要评估性能风险以尽量保证重点交易安全的问题。为了能够全面覆盖所有程序接口问题的测试,减小系统上线性能风险,业界常用的解决方式是通过全栈测试,通过人为将专项测试内容分配到功能和流程测试中。该方法是在管理层面的角度去解决的相关问题,但这无疑导致了功能流程测试任务的增加,并未很好的去解决测试风险。同时,测试人员的参差不齐,业务逻辑的关系复杂,专项测试的技术专业性,更会导致专项测试的不充分。这一方面并没有能很好的解决对于快速交付专项测试覆盖不全的问题,另一方面也会大大增加功能流程测试人员的工作量。因此,目前没有合理有效的方式解决专项测试困难和涵盖不全的问题。为解决在专项测试服务体系中,专项测试难以全覆盖以及性能测试门槛高的问题。本发明提供了一种基于字节码技术的JAVA应用性能测试方案,支持测试人员根据自身业务特性,配置相关应用信息,根据应用程序不同的接口类型,配置支持的自动化采集策略,适配于各类应用,有很好的通用性。同时可配置测试时间和测试流量大小等参数,实现个性化全自动化地测试各类不同的交易类型,防止出现测试环境紊乱和压力过大等问题。本发明在功能测试获取接口传输数据的同时自动完成性能测试脚本的编写,自动完成性能测试,无需测试人员进一步的参与。
根据本发明的一个方面,本实施例公开了一种基于字节码技术的JAVA应用程序测试方法。如图1所示,本实施例中,所述方法包括:
S100:根据预设测试信息得到JAVA应用程序信息、接口信息和测试任务信息。
S200:根据所述JAVA应用程序信息将所述数据采集代理程序传输至JAVA应用程序服务器,通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据。
S300:根据所述接口传输数据和测试任务信息形成测试脚本,并对所述JAVA应用程序服务器进行压力测试。
为了解决日益增长的性能测试需求,以及解决目前性能测试周期长,覆盖面狭窄的问题。本发明通过预先配置的测试信息在JAVA应用程序服务器设置代理程序,通过代理程序采用字节码技术采集JAVA应用程序服务器接口传输数据,根据接口传输数据和测试任务信息形成测试脚本,通过测试脚本自动对所述JAVA应用程序服务器进行压力测试,帮助测试人员减少因测试覆盖面不广,只针对核心交易测试而产生其他地方出错的问题。最大程度的保证交易性能的生产安全。本发明通过配置测试信息、自动化和算法分析的方式在功能或者流程测试完成一遍后,全面同步完成相关的性能测试,测试覆盖面广,且执行高效简单。
在优选的实施方式中,用户可预先配置性能测试配置文件,在性能测试配置文件中自定义测试信息。该测试信息可包括JAVA应用程序信息、接口信息和测试任务信息。
其中,所述JAVA应用程序信息包括JAVA应用程序的环境信息、应用名、版本信息和服务器地址等信息。JAVA应用程序的环境信息是指监控的是容器还是中间件。
所述接口信息包括需要测试的接口类型、接口列表、白名单和采集频度等信息。白名单为剔除操作,用于剔除应用内部数据。采集频度的作用是在热点测试时段,降低采集接口数据的频率,减少对服务器的资源影响。接口类型可包括java程序的http、rpc和socket等多种接口的至少之一,从而扩展了测试适用的JAVA应用程序的种类范围。
所述测试任务信息包括测试任务列表和测试并发量等信息。其中,测试任务列表可包括是否参数化和是否为MOCK测试等信息。其中,mock测试就是在测试过程中,对于不容易构造或者不容易获取的对象,用一个虚拟的对象来测试的测试方法。测试并发量可设置为10并发,中间的思考时间1s。需要说明的是,在实际应用中,用户可根据实际需求设定测试信息和具体的参数,本发明对此并不作限定。
在优选的实施方式中,如图2所示,所述S200通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据具体包括:
S210:通过所述数据采集代理程序根据所述接口信息确定所有采集的应用程序接口。
S220:对各接口通过字节码技术将预设的附加程序插入至JAVA应用程序中。
S230:通过所述附加程序采集各接口的接口传输数据。
具体的,字节码技术为jdk开放的一项修改运行中的代码的功能,可以将外部附加代码添加到正在运行的原有代码中,将一段获取接口信息的代码插入到原有运行程序的代码中,该插入的代码可包括调用信息以及入参出参的输出功能。通过程序的监听方法,当程序接口被调用时,可以实时获取到接口被调用时的详细信息。其中,JDK是Java语言的软件开发工具包,主要是指用于移动设备、嵌入式设备上的java应用程序。
可以理解的是,可以通过预先配置的JAVA应用程序信息获取到JAVA应用程序服务器的服务器地址,将预设的数据采集代理程序(agent)根据服务器地址传输至JAVA应用程序服务器,并在JAVA应用程序服务器上启动。在进行接口传输数据采集时,agent首先读取接口信息中的采集接口类型,根据接口类型和接口列表,得到待采集的接口的相关信息,接着分别对各类接口方法的程序进行附加程序(attach代码)的注入,通过改写应用程序的class文件,进行方法监听,可实时获取到接口传输数据。通过注入attach字节码的方式,使得部署灵活,并且对原有程序代码的影响最小化,并不影响原有程序的代码和版本上线。
优选的,agent可通过联机发送的形式将采集的接口传输数据发送至数据库中进行存储形成数据仓库。数据仓库是一种结构化数据环境,数据仓库研究和解决从数据库中获取信息的问题。数据仓库的特征在于面向主题、集成性、稳定性和时变性。该接口传输数据可用于JAVA应用程序的功能测试和流程测试等测试过程。在一个具体例子中,可将接收的接口传输数据进行数据结构化后初始化本地的通信模块(例如,NettyClient),主动发起到目标地址(NettyServer地址)间的基于TCP协议的交互信息以建立连接,然后将数据结构化后的接口传输数据传输到NettyServer进行保存。
进一步的,通过该接口传输数据形成测试脚本可对JAVA应用程序进行性能测试,从而实现在功能测试和流程测试的同时获取接口传输数据,然后自动形成测试脚本对JAVA应用程序进行性能测试,无需测试人员的参与,实现全面的JAVA应用程序自动化测试。
在优选的实施方式中,还可形成agent部署清单,接收agent定期反馈心跳报文,以确定agent是否正常工作,保持连接的可用性。具体的,可根据服务器地址,定时的发送心跳检测,看agent是否会有健康响应,来检查服务器是否正常,以确定是否需要变更或重新部署agent。如果返回正常,更新服务器最后监控时间以及是否有效,例如,字段为1(有效),字段为0(无效)。
在优选的实施方式中,如图3所示,所述S300根据所述接口传输数据和测试任务信息形成测试脚本具体包括:
S310:根据所述测试任务信息得到测试任务列表。
S320:若所述测试任务列表为mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,根据多个相似交易中出现频率最多的相似交易形成测试脚本。
S330:若所述测试任务列表为非mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,对多个相似交易中出现频率最多的相似交易进行聚类分析,若聚类结果包括多个不同类别的相似交易,将相似交易的参数设置固定参数,若聚类结果为离散,将相似交易的参数设置为随机参数形式,根据设置参数后的相似交易形成测试脚本。需要说明的是,相似交易的确定可根据交易类型和交易对象等多种交易特征的至少之一确定所有应用程序中所有交易中的相似交易,可固定一个或多个交易特征的特征值或者选取预设范围的特征值对交易进行筛选得到相似交易。在实际应用中,也可以根据实际需求设置筛选规则对交易进行筛选得到相似交易,本发明对此并不作限定。
具体的,根据测试信息中MOCK和非MOCK两种不同的测试任务配置,需要采用两种方式生成测试脚本。其中,对于mock的测试交易,可选取相同接口的接口传输数据,根据数据计算出不同参数交易,对采集到的相似交易做一个调用最多的筛选。形成测试脚本。对于非mock的交易,同样筛选相似交易,对交易存在不同参数的地方进行聚类算法分析,对于明确存在多个类别的信息做定制的参数化,设置固定参数,对于离散的数据类型做类似类型的随机参数化,形成测试脚本。
在优选的实施方式中,如图4所示,所述S300对所述JAVA应用程序服务器进行压力测试具体包括:
S340:根据测试任务信息的测试并发量形成多个线程。
S350:通过多个线程并发调用测试脚本对所述JAVA应用程序进行压力测试。
根据测试信息的测试任务信息和生成的测试脚本,可根据测试脚本对JAVA应用程序进行测试。在一个具体例子中,可将测试脚本发送至性能测试平台进行性能测试。性能测试平台识别接口类型。启动一个运行环境容器,使用多线程多并发的方式,并发调用脚本接口,进行并发性能测试。其中,性能测试平台由可执行测试任务的计算机形成,为本领域的常规技术,在此不再赘述。
下面通过一个具体例子来对本发明作进一步的说明,在该具体例子中,如图5所示,基于字节码技术的JAVA应用程序测试方法可包括以下步骤:
步骤S1001:测试信息相关配置。
步骤S1002:自动化压测开始启动。
步骤S1003:开始执行测试任务流程。
步骤S1004:如果应用未进行agent部署则进行首次初始化配置部署。
步骤S1005:生成定时测试任务列表。
步骤S1006:将初始化好的agent下发至应用服务器上对agent进行部署,并对环境进行监控。
步骤S1007:部署agent后,启动agent,以attach的方式获取应用信息和环境信息,并将数据传输后台存储。
步骤S1008:获取到接口传输数据后,对数据进行一个数据清洗。剔除无效数据,做脚本生成数据准备。
步骤S1009:agent监控JAVA应用程序环境是否准备就绪进行性能测试。
步骤S1010:S1008和S1009准备就绪后,通过任务列表生成具体测试任务开始执行。
步骤S1011:根据配置的测试信息,智能化生成测试脚本,再根据列表里的测试任务去执行具体的性能测试。
基于相同原理,本实施例还公开了一种基于字节码技术的JAVA应用程序测试系统。如图6所示,本实施例中,所述系统包括测试信息解析模块11、代理程序部署模块12和自动化性能测试模块13。
其中,测试信息解析模块11用于根据预设测试信息得到JAVA应用程序信息、接口信息和测试任务信息。
代理程序部署模块12用于根据所述JAVA应用程序信息将数据采集代理程序传输至JAVA应用程序服务器,通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据。
自动化性能测试模块13用于根据所述接口传输数据和测试任务信息形成测试脚本,并对所述JAVA应用程序服务器进行压力测试。
在优选的实施方式中,所述代理程序部署模块12具体用于通过所述数据采集代理程序根据所述接口信息确定所有采集的应用程序接口,对各接口通过字节码技术将预设的附加程序插入至JAVA应用程序中,通过所述附加程序采集各接口的接口传输数据。
在优选的实施方式中,所述JAVA应用程序信息包括JAVA应用程序的环境信息、应用名、版本信息和服务器地址;所述接口信息包括需要测试的接口类型、接口列表、白名单和采集频度;所述测试任务信息包括测试任务列表和测试并发量。
在优选的实施方式中,所述自动化性能测试模块13具体用于根据所述测试任务信息得到测试任务列表,若所述测试任务列表为mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,根据多个相似交易中出现频率最多的相似交易形成测试脚本,若所述测试任务列表为非mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,对多个相似交易中出现频率最多的相似交易进行聚类分析,若聚类结果包括多个不同类别的相似交易,将相似交易的参数设置固定参数,若聚类结果为离散,将相似交易的参数设置为随机参数形式,根据设置参数后的相似交易形成测试脚本。
在优选的实施方式中,所述自动化性能测试模块13进一步用于根据测试任务信息的测试并发量形成多个线程,通过多个线程并发调用测试脚本对所述JAVA应用程序进行压力测试。
由于该系统解决问题的原理与以上方法类似,因此本系统的实施可以参见方法的实施,在此不再赘述。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由客户端执行的方法,或者,所述处理器执行所述程序时实现如上所述的由服务器执行的方法。
下面参考图7,其示出了适于用来实现本申请实施例的计算机设备的结构示意图。
如图7所示,计算机设备包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种基于字节码技术的JAVA应用程序测试方法,其特征在于,包括:
根据预设测试信息得到JAVA应用程序信息、接口信息和测试任务信息;
根据所述JAVA应用程序信息将数据采集代理程序传输至JAVA应用程序服务器,通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据;
根据所述接口传输数据和测试任务信息形成测试脚本,并对所述JAVA应用程序服务器进行压力测试;
所述根据所述接口传输数据和测试任务信息形成测试脚本具体包括:
根据所述测试任务信息得到测试任务列表;
若所述测试任务列表为mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,根据多个相似交易中出现频率最多的相似交易形成测试脚本;
若所述测试任务列表为非mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,对多个相似交易中出现频率最多的相似交易进行聚类分析,若聚类结果包括多个不同类别的相似交易,将相似交易的参数设置固定参数,若聚类结果为离散,将相似交易的参数设置为随机参数形式,根据设置参数后的相似交易形成测试脚本。
2.根据权利要求1所述的基于字节码技术的JAVA应用程序测试方法,其特征在于,所述通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据具体包括:
通过所述数据采集代理程序根据所述接口信息确定所有采集的应用程序接口;
对各接口通过字节码技术将预设的附加程序插入至JAVA应用程序中;
通过所述附加程序采集各接口的接口传输数据。
3.根据权利要求1所述的基于字节码技术的JAVA应用程序测试方法,其特征在于,所述JAVA应用程序信息包括JAVA应用程序的环境信息、应用名、版本信息和服务器地址;
所述接口信息包括需要测试的接口类型、接口列表、白名单和采集频度;
所述测试任务信息包括测试任务列表和测试并发量。
4.根据权利要求3所述的基于字节码技术的JAVA应用程序测试方法,其特征在于,所述对所述JAVA应用程序服务器进行压力测试具体包括:
根据测试任务信息的测试并发量形成多个线程;
通过多个线程并发调用测试脚本对所述JAVA应用程序进行压力测试。
5.一种基于字节码技术的JAVA应用程序测试系统,其特征在于,包括:
测试信息解析模块,用于根据预设测试信息得到JAVA应用程序信息、接口信息和测试任务信息;
代理程序部署模块,用于根据所述JAVA应用程序信息将数据采集代理程序传输至JAVA应用程序服务器,通过所述数据采集代理程序根据所述接口信息采集对应接口的接口传输数据;
自动化性能测试模块,用于根据所述接口传输数据和测试任务信息形成测试脚本,并对所述JAVA应用程序服务器进行压力测试;
所述自动化性能测试模块具体用于根据所述测试任务信息得到测试任务列表,若所述测试任务列表为mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,根据多个相似交易中出现频率最多的相似交易形成测试脚本,若所述测试任务列表为非mock测试,分别对每个接口的接口传输数据中不同参数交易进行筛选得到多个相似交易,对多个相似交易中出现频率最多的相似交易进行聚类分析,若聚类结果包括多个不同类别的相似交易,将相似交易的参数设置固定参数,若聚类结果为离散,将相似交易的参数设置为随机参数形式,根据设置参数后的相似交易形成测试脚本。
6.根据权利要求5所述的基于字节码技术的JAVA应用程序测试系统,其特征在于,所述代理程序部署模块具体用于通过所述数据采集代理程序根据所述接口信息确定所有采集的应用程序接口,对各接口通过字节码技术将预设的附加程序插入至JAVA应用程序中,通过所述附加程序采集各接口的接口传输数据。
7.根据权利要求5所述的基于字节码技术的JAVA应用程序测试系统,其特征在于,所述JAVA应用程序信息包括JAVA应用程序的环境信息、应用名、版本信息和服务器地址;所述接口信息包括需要测试的接口类型、接口列表、白名单和采集频度;所述测试任务信息包括测试任务列表和测试并发量。
8.根据权利要求5所述的基于字节码技术的JAVA应用程序测试系统,其特征在于,所述自动化性能测试模块进一步用于根据测试任务信息的测试并发量形成多个线程,通过多个线程并发调用测试脚本对所述JAVA应用程序进行压力测试。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,
所述处理器执行所述程序时实现如权利要求1-4任一项所述方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,
该程序被处理器执行时实现如权利要求1-4任一项所述方法。
CN202010818009.9A 2020-08-14 2020-08-14 基于字节码技术的java应用程序测试方法及系统 Active CN111949536B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010818009.9A CN111949536B (zh) 2020-08-14 2020-08-14 基于字节码技术的java应用程序测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010818009.9A CN111949536B (zh) 2020-08-14 2020-08-14 基于字节码技术的java应用程序测试方法及系统

Publications (2)

Publication Number Publication Date
CN111949536A CN111949536A (zh) 2020-11-17
CN111949536B true CN111949536B (zh) 2023-09-26

Family

ID=73343096

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010818009.9A Active CN111949536B (zh) 2020-08-14 2020-08-14 基于字节码技术的java应用程序测试方法及系统

Country Status (1)

Country Link
CN (1) CN111949536B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905432A (zh) * 2021-03-09 2021-06-04 北京大米科技有限公司 性能测试方法、装置、存储介质及终端
CN113535559A (zh) * 2021-07-14 2021-10-22 杭州默安科技有限公司 一种应用接口覆盖率统计方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684223A (zh) * 2018-12-28 2019-04-26 河南思维轨道交通技术研究院有限公司 一种测试脚本自动化链接方法、存储介质
CN110362472A (zh) * 2019-05-31 2019-10-22 口碑(上海)信息技术有限公司 Mock测试方法、装置及设备
CN110858172A (zh) * 2018-08-23 2020-03-03 北京京东尚科信息技术有限公司 一种自动化测试代码生成方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2513404A (en) * 2013-04-26 2014-10-29 Ibm Generating test scripts through application integration

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110858172A (zh) * 2018-08-23 2020-03-03 北京京东尚科信息技术有限公司 一种自动化测试代码生成方法和装置
CN109684223A (zh) * 2018-12-28 2019-04-26 河南思维轨道交通技术研究院有限公司 一种测试脚本自动化链接方法、存储介质
CN110362472A (zh) * 2019-05-31 2019-10-22 口碑(上海)信息技术有限公司 Mock测试方法、装置及设备

Also Published As

Publication number Publication date
CN111949536A (zh) 2020-11-17

Similar Documents

Publication Publication Date Title
CN108959059B (zh) 一种测试方法以及测试平台
CN111949536B (zh) 基于字节码技术的java应用程序测试方法及系统
CN111245900B (zh) 一种分布式消息发送的处理系统及其处理方法
CN112162753A (zh) 软件部署方法、装置、计算机设备和存储介质
CN107391362A (zh) 应用测试方法、移动终端及存储介质
CN112241360A (zh) 一种测试用例生成方法、装置、设备及存储介质
CN107092556B (zh) 测试方法、装置及设备
CN113885971A (zh) 一种基于自适应平台系统的状态管理方法及装置
US11734057B2 (en) Method and apparatus for processing a service of an abnormal server
CN113360182B (zh) 系统性能诊断的方法和装置
CN113157586B (zh) 一种金融市场单元测试案例生成方法及装置
CN113238901B (zh) 多设备的自动化测试方法及装置、存储介质、计算机设备
CN115905151A (zh) 基于备份日志的流转信息查询方法、系统和装置
CN113434382A (zh) 数据库性能监控方法、装置、电子设备及计算机可读介质
CN111143177B (zh) Ibm主机的rmf iii数据的收集方法、系统、装置及存储介质
CN114650211A (zh) 故障修复方法、装置、电子设备和计算机可读存储介质
CN115543491A (zh) 微服务处理方法和装置
CN112650815A (zh) 环境数据的同步方法及装置、存储介质及电子装置
CN110990280A (zh) 一种测试数据自动生成系统及方法
CN113297088B (zh) 测试方法、测试装置、电子设备及存储介质
CN115941834B (zh) 智能手机自动化运行方法、装置、设备及存储介质
US8595172B2 (en) Ensuring high availability of services via three phase exception handling
CN115080434A (zh) 案例执行方法、装置、设备和介质
CN113064810A (zh) 一种自动化测试方法和装置
CN115269055A (zh) Nginx请求数据采集方法、装置、设备及存储介质

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