CN111124905B - 并行测试方法、装置、设备及存储介质 - Google Patents

并行测试方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111124905B
CN111124905B CN201911302074.XA CN201911302074A CN111124905B CN 111124905 B CN111124905 B CN 111124905B CN 201911302074 A CN201911302074 A CN 201911302074A CN 111124905 B CN111124905 B CN 111124905B
Authority
CN
China
Prior art keywords
function
program
output data
tested
environment
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
CN201911302074.XA
Other languages
English (en)
Other versions
CN111124905A (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.)
China Unionpay Co Ltd
Original Assignee
China Unionpay 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 China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CN201911302074.XA priority Critical patent/CN111124905B/zh
Publication of CN111124905A publication Critical patent/CN111124905A/zh
Application granted granted Critical
Publication of CN111124905B publication Critical patent/CN111124905B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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反射机制和第一函数的输入数据,在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到第二函数的与输入数据对应的第二输出数据;根据第一输出数据与第二输出数据的对比结果,确定第二被测程序是否通过测试。利用本申请的技术方案能够提高并行测试的通用性。

Description

并行测试方法、装置、设备及存储介质
技术领域
本发明属于数据处理领域,尤其涉及一种并行测试方法、装置、设备及存储介质。
背景技术
对于系统等软件产品而言,由于需要修复功能缺陷或增加新功能,软件产品上线后还需要进行新版本迭代更新。新版本需要完成回归测试,确认更新没有引入错误才可以上线。为了保证新、旧版本功能的一致性,会在回归测试中引入并行测试。即在生产环境录制请求数据,在对新版本的测试环境下进行回放,通过生产环境中应答数据与测试环境下应答数据的比较,确认新版本原有功能与旧版本在生产环境中的原有功能是否一致。
在进行并行测试的过程中,由于多个软件产品接口类型以及调用方式的不同,需要在测试环境中对每个软件产品的源代码进行改动,单独设计录制回放方案,单独开发测试工具,并行测试的通用性极差。
发明内容
本发明实施例提供了一种并行测试方法、装置、设备及存储介质,能够提高并行测试的通用性。
第一方面,本申请实施例提供一种并行测试方法,包括:
获取被测程序测试所用的函数列表,将函数列表加载于第一环境中独立于第一被测程序的代理程序,函数列表记录至少一个第一函数;
运行代理程序,在第一环境中对第一被测程序进行测试的情况下,调用函数列表中的第一函数,得到第一函数成对的输入数据和第一输出数据;
利用Java反射机制和第一函数的输入数据,在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到第二函数的与输入数据对应的第二输出数据;
根据第一输出数据与第二输出数据的对比结果,确定第二被测程序是否通过测试。
第二方面,本申请实施例提供一种并行测试装置,包括:
加载模块,用于获取被测程序测试所用的函数列表,将函数列表加载于第一环境中独立于第一被测程序的代理程序,函数列表记录至少一个第一函数;
录制模块,运行代理程序,在第一环境中对第一被测程序进行测试的情况下,调用函数列表中的第一函数,得到第一函数成对的输入数据和第一输出数据;
回放模块,利用Java反射机制和第一函数的输入数据,在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到第二函数的与输入数据对应的第二输出数据;
对比模块,根据第一输出数据与第二输出数据的对比结果,确定第二被测程序是否通过测试。
第三方面,本申请实施例提供一种并行测试设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现第一方面的技术方案中的并行测试方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现第一方面的技术方案中的并行测试方法。
本申请实施例提供一种并行测试方法、装置、设备及存储介质,可利用加载有函数列表的独立于第一被测程序的代理程序,在第一环境中对第一被测程序进行测试的情况下,调用函数列表中记录的第一函数,得到测试过程中第一被测程序的函数级别的输入数据和第一输出数据。利用Java反射机制,可在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到测试过程中第二被测程序的函数级别的输入数据和第二输出数据。确定第二被测程序是否通过测试的第一输出数据和第二输出数据均为函数级别的数据,与接口类型、调用方式、应答格式等无关,不需要针对不同接口类型、调用方式、应答格式的被测程序单独涉及录制回放方案和单独开发测试工具,从而提高了并行测试的通用性。
附图说明
从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明其中,相同或相似的附图标记表示相同或相似的特征。
图1为本申请实施例提供的一种并行测试方法的场景示意图;
图2为本申请以实施例提供的一种并行测试方法的流程图;
图3为本申请另一实施例提供的一种并行测试方法的流程图;
图4为本申请一实施例提供的一种并行测试装置的结构示意图;
图5为本申请另一实施例提供的一种并行测试装置的结构示意图;
图6为本申请实施例提供的一种并行测试设备的结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。
本申请实施例提供了一种并行测试方法、装置、设备及存储介质,可应用于对软件产品进行在回归测试中引入并行测试的场景中。在并行测试的过程中,需要在两个测试环境中进行测试,分别是在生产环境或旧版本测试环境中对旧版本程序进行测试,以及在新版本测试环境中对新版本程序进行测试。在生产环境或旧版本测试环境中对旧版本程序测试,录制测试函数的输入数据和输出数据。在新版本测试环境中回放测试函数,对新版本程序测试,得到新版本测试环境中的输出数据。
图1为本申请实施例提供的一种并行测试方法的场景示意图。如图1所示,在第一环境中对第一被测程序进行测试。第一环境中设置有录制模块11。该录制模块11用于实现本申请实施例中测试的录制功能,录制功能的具体实现将会在下面进行说明。在第二环境中对第二被测程序进行测试。第二环境中设置有回放模块12。该回放模块12用于实现本申请实施例中测试的回放功能,回放功能的具体实现将会在下面进行说明。在本申请实施例中,注重的是函数级别的输入数据和输出数据的捕获,在任何调用方式的条件下以及任何应答格式下均可实现并行测试,且不需要操作人员为每种调用方式和应答格式单独设计录制回放方案或单独开发测试工具,具有优异的通用性。
图2为本申请以实施例提供的一种并行测试方法的流程图。如图2所示,该并行测试方法可包括步骤S201至步骤S204。
在步骤S201中,获取被测程序测试所用的函数列表,将函数列表加载于第一环境中独立于第一被测程序的代理程序。
其中,第一环境具体可为被测程序的生产环境或被测程序的旧版本测试环境。第一被测程序具体可为旧版本程序。
函数列表记录至少一个第一函数。函数列表具体可以配置文件的形式实现。第一函数为第一被测程序被测试的函数。在对第一被测程序进行的测试中需要测试的函数均记录在函数列表中,以保证测试过程中的无论什么请求调用,到达第一被测程序后,都可通过这个函数列表中记录的某个第一函数正式开启业务逻辑处理。函数列表可预先设定,也可根据对第一被测程序的测试的类型自动生成,在此并不限定。在一些示例中,第一函数可包括第一被测程序的对外接口对应的入口函数。比如,第一函数可包括第一被测程序的部分对外接口对应的入口函数,也可包括第一被测程序的所有对外接口对应的入口函数。
代理程序(即Agent)为在第一环境中构造的与第一被测程序独立的程序。将函数列表加载于代理程序,该代理程序运行的过程中,可对第一被测程序进行动态注入,使第一被测程序能够调用函数列表中的第一函数进行测试。
在步骤S202中,运行代理程序,在第一环境中对第一被测程序进行测试的情况下,调用函数列表中的第一函数,得到第一函数成对的输入数据和第一输出数据。
代理程序处于运行,在第一环境中对第一被测程序的进行测试的情况下,第一被测程序可调用函数列表记录的第一函数。输入数据具体为用于测试的输入数据,可预先设定。第一被测程序调用第一函数,输入数据作为第一函数的输入,第一函数的输出即为第一输出数据。利用代理程序得到第一函数成对的输入数据和第一输出数据。第一函数成对的输入数据和第一输出数据即为在第一环境中对第一被测程度进行测试录制的成对的输入数据和第一输出数据。在一些示例中,在第一环境中对第一被测程序的进行测试,录制的数据可以表格形式实现,表格中的每条记录格式可为“第一函数标识输入数据输出数据”,在此并不限定。
代理程序停止运行,在第一环境中对第一被测程序进行测试的情况下,即使调用的函数与函数列表中的第一函数一致,但无法录制得到第一函数成对的输入数据和第一输出数据。在对第一被测程序的测试结束后,即可停止运行代理程序,即结束代理程序的生命周期。
需要说明的是,成对的输入数据和第一输出数据是指输入数据与第一输出数据具有对应关系,一个输入数据可对应一个第一输出数据,也可对应两个以上的第一输出数据,在此并不限定。
在步骤S203中,利用Java反射机制和第一函数的输入数据,在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到第二函数的与输入数据对应的第二输出数据。
其中,第二环境具体可为新版本测试环境。第二被测程序可为与第一被测程序对应的新版本程序。
利用Java反射机制,可在第二环境中调用在第一环境中对第一被测程序进行检测所调用的第一函数一致的第二函数,并将第一环境中对第一被测程序进行检测时第一函数的输入数据作为调用的第二函数的输入数据,从而得到第二函数输出的第二输出数据。其中,第一函数与第二函数为相同的函数,但第一函数与第二函数所在的程序不同,第一函数为第一被测程序中的函数,第二函数为第二被测程序中的函数。
在一些示例中,可按照在第一环境中对第一被测程序进行检测录制的数据对应的第一函数的顺序,利用Java反射机制,对第二环境中的第二被测程序的与第一函数一致的第二函数发起调用,并记录第二函数成对的输入数据和第二输出数据。
在步骤S204中,根据第一输出数据与第二输出数据的对比结果,确定第二被测程序是否通过测试。
第一输出数据是第一函数针对输入数据输出的输出数据,第二输出数据是第二函数针对输入数据输出的输出函数。对比的第一输出数据对应的输入数据和第二输出数据对应的输入数据相同。第一被测程序中的第一函数与第二被测程序中的第二函数一致,若第二被测程序没有出现问题,则第一输出数据与第二输出数据应一致。可根据第一输出数据与第二输出数据的对比结果,确定第二被测程序是否通过测试。第二被测程序通过测试表示第二被测程序没有出现问题。
在本申请实施例中,可利用加载有函数列表的独立于第一被测程序的代理程序,在第一环境中对第一被测程序进行测试的情况下,调用函数列表中记录的第一函数,得到测试过程中第一被测程序的函数级别的输入数据和第一输出数据。利用Java反射机制,可在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到测试过程中第二被测程序的函数级别的输入数据和第二输出数据。确定第二被测程序是否通过测试的第一输出数据和第二输出数据均为函数级别的数据,与接口类型、调用方式、应答格式等无关,不需要针对不同接口类型、调用方式、应答格式的被测程序单独涉及录制回放方案和单独开发测试工具,从而提高了并行测试的通用性。而且,本申请实施例利用独立于第一被测程序的代理程序实现了无需人工修改程序代码的录制,第一被测程序无感知,实现了无侵入式的并行测试。
图3为本申请另一实施例提供的一种并行测试方法的流程图。在本申请实施例中,函数列表包括第一函数的类名和方法名。图3与图2的不同之处在于,图3所示的并行测试方法还可包括步骤S205,图2中的步骤S202可具体细化为图3中的步骤S2021和步骤S2022,图2中的步骤S203可具体细化为图3中的步骤S2031,图2中的步骤S204可具体细化为图3中的步骤S2041和步骤S2042。
在步骤S205中,利用Java Instrument构建代理程序。
其中,利用Java Instrument的应用程序接口(Application ProgrammingInterface,API)可构建独立于其他应用程序的代理程序,该代理程序可用于监测和协助运行第一环境中的程序,还可替换和修改某些类的定义。
在步骤S2021中,运行代理程序,利用代理程序在第一函数上进行插桩。
运行代理程序,利用代理程序的功能,可在第一函数上进行插桩,以使得在调用第一函数,第一函数运行时,可实时获取到第一函数所有成对的输入数据和第一输出数据。一个成对的输入数据和第一输出数据对应一笔请求和应答。需要说明的是,代理程序停止运行,则在第一函数上进行插桩的代码失效,即消失或不运行。可通过代理程序的运行与否,对第一函数进行动态的插桩,以实现对第一被测程序的动态注入,即本申请中并行测试方法的动态执行。
在步骤S2022中,在第一环境中对第一被测程序进行测试的情况下,调用插桩后的第一函数,以获取第一函数的成对的输入数据和第一输出数据。
比如,对于某个第一函数,例如demo.MathGame类的method1方法的函数,可在该函数上插桩,使用watch demo.MathGame method1{params,returnObj}代码,从而在demo.MathGame类的method1方法的函数被调用运行时,获取demo.MathGame类的method1方法的函数的所有成对的输入数据和第一输出数据。其中,demo.MathGame为类名,method1为方法名。
可将所有第一函数的所有成对的输入数据和第一输出数据,按照时间顺序和固定格式形成记录数据,以文件形式或数据库形式存储。比如,一条完整的记录数据的例子如下:
这条记录为demo.MathGame类的method1方法的函数的一次调用记录。其中记录了类名“demo.MathGame”,方法名“method1”,输入数据为Integer类型的值为“535629513”的数据,以及第一输出数据为ArrayList类型的数据。该ArrayList类型的数据包括4个对象,4个对象为Integer类型的值分别为“3”、“19”、“191”和“49199”的4个对象。
在步骤S2031中,利用Java反射机制,在第二环境中调用类名和方法名与第一函数一致的第二函数,得到第二函数根据输入数据输出的第二输出数据。
函数列表中记录有第一函数的类名和方法名。在并行测试的回放过程中,第二被测程序中类名和方法名与第一函数一致的第二函数,即为与第一函数一致的第二函数。
可利用上述实施例中的记录数据,按照记录数据的时间顺序,利用Java反射机制,通过“类名+方法名+输入参数”的组合,直接对第二环境中第二被测程序中的第二函数发起调用,并记录第二函数输出的第二输出数据。比如,与上面调用demo.MathGame类的method1方法的第一函数对应,可对数据记录发起回放,具体回放代码如下:
Class<?>clazz=Class.forName("demo.MathGame");
Method method=clazz.getMethod("method1",int.class);
method.invoke(clazz.newInstance(),535629513);
在步骤S2041中,若对比结果指示第一输出数据与第二输出数据一致,确定第二被测程序通过测试。
若对比结果指示第一输入数据与第二输出数据一致,表示第一函数的功能与与第一函数一致的第二函数的功能相同,则可确定第二被测程序通过测试。
在步骤S2042中,若对比结果指示第一输出数据与第二输出数据不一致,确定第二被测程序未通过测试。
若对比结果指示第一输入数据与第二输出数据不一致,表示第一函数的功能与与第一函数一致的第二函数的功能不同,则可确定第二被测程序未通过测试。在后续过程中,可对第二被测程序进一步进行分析和检测。
本申请实施例还提供一种并行测试装置。图4为本申请一实施例提供的一种并行测试装置的结构示意图。如图4所示,该并行测试装置300可包括加载模块301、录制模块302、回放模块303和对比模块304。
加载模块301,用于获取被测程序测试所用的函数列表,将函数列表加载于第一环境中独立于第一被测程序的代理程序。
其中,函数列表记录至少一个第一函数。在一些示例中,第一函数包括第一被测程序的对外接口对应的入口函数。
录制模块302,运行代理程序,在第一环境中对第一被测程序进行测试的情况下,调用函数列表中的第一函数,得到第一函数成对的输入数据和第一输出数据。
回放模块303,利用Java反射机制和第一函数的输入数据,在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到第二函数的与输入数据对应的第二输出数据。
对比模块304,根据第一输出数据与第二输出数据的对比结果,确定第二被测程序是否通过测试。
在本申请实施例中,可利用加载有函数列表的独立于第一被测程序的代理程序,在第一环境中对第一被测程序进行测试的情况下,调用函数列表中记录的第一函数,得到测试过程中第一被测程序的函数级别的输入数据和第一输出数据。利用Java反射机制,可在第二环境中调用第二被测程序中与第一函数一致的第二函数,得到测试过程中第二被测程序的函数级别的输入数据和第二输出数据。确定第二被测程序是否通过测试的第一输出数据和第二输出数据均为函数级别的数据,与接口类型、调用方式、应答格式等无关,不需要针对不同接口类型、调用方式、应答格式的被测程序单独涉及录制回放方案和单独开发测试工具,从而提高了并行测试的通用性。而且,本申请实施例利用独立于第一被测程序的代理程序实现了无需人工修改程序代码的录制,第一被测程序无感知,实现了无侵入式的并行测试。
图5为本申请另一实施例提供的一种并行测试装置的结构示意图。图5与图4的不同之处在于,图5所示的并行测试装置300还可包括程序构建模块305。
程序构建模块305,用于利用Java Instrument构建代理程序。
在一些示例中,上述实施例中的录制模块302可具体用于:运行代理程序,利用代理程序在第一函数上进行插桩;在第一环境中对第一被测程序进行测试的情况下,调用插桩后的第一函数,以获取第一函数的成对的输入数据和第一输出数据。
在一些实施例中,函数列表包括第一函数的类名和方法名。
对应地,在一些示例中,上述实施例中的回放模块303可具体用于:利用Java反射机制,在第二环境中调用类名和方法名与第一函数一致的第二函数,得到第二函数根据输入数据输出的第二输出数据。
在一些示例中,上述实施例中的对比模块304可具体用于:若对比结果指示第一输出数据与第二输出数据一致,确定第二被测程序通过测试;若对比结果指示第一输出数据与第二输出数据不一致,确定第二被测程序未通过测试。
图6为本申请实施例提供的一种并行测试设备的结构示意图。如图6所示,并行测试设备400包括存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序。
在一个示例中,上述处理器402可以包括中央处理器(CPU),或者特定集成电路(ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器401可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器401可包括HDD、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器401可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器401可在终端热点开启并行测试设备400的内部或外部。在特定实施例中,存储器401是非易失性固态存储器。在特定实施例中,存储器401包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器402通过读取存储器401中存储的可执行程序代码来运行与可执行程序代码对应的计算机程序,以用于实现上述实施例中的并行测试方法。
在一个示例中,并行测试设备400还可包括通信接口403和总线404。其中,如图6所示,存储器401、处理器402、通信接口403通过总线404连接并完成相互间的通信。
通信接口403,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。也可通过通信接口403接入输入设备和/或输出设备。
总线404包括硬件、软件或两者,将并行测试设备400的部件彼此耦接在一起。举例来说而非限制,总线404可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线404可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
本申请一实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时可实现上述实施例中的并行测试方法。
需要明确的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。对于装置实施例、设备实施例和计算机可读存储介质实施例而言,相关之处可以参见方法实施例的说明部分。本申请并不局限于上文所描述并在图中示出的特定步骤和结构。本领域的技术人员可以在领会本申请的精神之后,作出各种改变、修改和添加,或者改变步骤之间的顺序。并且,为了简明起见,这里省略对已知方法技术的详细描述。
本领域技术人员应能理解,上述实施例均是示例性而非限制性的。在不同实施例中出现的不同技术特征可以进行组合,以取得有益效果。本领域技术人员在研究附图、说明书及权利要求书的基础上,应能理解并实现所揭示的实施例的其他变化的实施例。在权利要求书中,术语“包括”并不排除其他装置或步骤;不定冠词“一个”不排除多个;术语“第一”、“第二”用于标示名称而非用于表示任何特定的顺序。权利要求中的任何附图标记均不应被理解为对保护范围的限制。权利要求中出现的多个部分的功能可以由一个单独的硬件或软件模块来实现。某些技术特征出现在不同的从属权利要求中并不意味着不能将这些技术特征进行组合以取得有益效果。

Claims (14)

1.一种并行测试方法,其特征在于,包括:
获取被测程序测试所用的函数列表,将所述函数列表加载于第一环境中独立于第一被测程序的代理程序,所述函数列表记录至少一个第一函数,所述函数列表加载于所述代理程序,所述代理程序运行的过程中对第一被测程序进行动态注入,使所述第一被测程序调用所述函数列表中的第一函数进行测试,所述函数列表包括所述第一函数的类名和方法名,所述第一环境包括被测程序的生产环境或被测程序的旧版本测试环境,所述第一被测程序包括旧版本程序;
运行所述代理程序,在所述第一环境中对所述第一被测程序进行测试的情况下,调用所述函数列表中的所述第一函数,得到所述第一函数成对的输入数据和第一输出数据;
利用Java反射机制和所述第一函数的所述输入数据,在第二环境中调用第二被测程序中与所述第一函数一致的第二函数,得到所述第二函数的与所述输入数据对应的第二输出数据,所述第二环境包括新版本测试环境,所述第二被测程序包括与所述第一被测程序对应的新版本程序;
根据所述第一输出数据与所述第二输出数据的对比结果,确定所述第二被测程序是否通过测试,其中,所述第一输出数据和所述第二输出数据为函数级别的数据,与接口类型、调用方式、应答格式无关。
2.根据权利要求1所述的方法,其特征在于,在所述将所述函数列表加载于第一环境中独立于第一被测程序的代理程序之前,还包括:
利用Java Instrument构建所述代理程序。
3.根据权利要求1所述的方法,其特征在于,所述第一函数包括第一被测程序的对外接口对应的入口函数。
4.根据权利要求1所述的方法,其特征在于,所述运行所述代理程序,在所述第一环境中对所述第一被测程序进行测试的情况下,调用所述函数列表中的第一函数,得到所述第一函数成对的输入数据和第一输出,包括:
运行所述代理程序,利用所述代理程序在所述第一函数上进行插桩;
在所述第一环境中对所述第一被测程序进行测试的情况下,调用插桩后的所述第一函数,以获取所述第一函数的成对的输入数据和第一输出数据。
5.根据权利要求1所述的方法,其特征在于,所述利用Java反射机制和所述第一函数的所述输入数据,在第二环境中调用第二被测程序中与所述第一函数一致的第二函数,得到所述第二函数的与所述输入数据对应的第二输出数据,包括:
利用Java反射机制,在第二环境中调用类名和方法名与所述第一函数一致的所述第二函数,得到所述第二函数根据所述输入数据输出的所述第二输出数据。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第一输出数据与所述第二输出数据的对比结果,确定所述第二被测程序是否通过测试,包括:
若所述对比结果指示所述第一输出数据与所述第二输出数据一致,确定所述第二被测程序通过测试;
若所述对比结果指示所述第一输出数据与所述第二输出数据不一致,确定所述第二被测程序未通过测试。
7.一种并行测试装置,其特征在于,包括:
加载模块,用于获取被测程序测试所用的函数列表,将所述函数列表加载于第一环境中独立于第一被测程序的代理程序,所述函数列表记录至少一个第一函数,所述函数列表加载于所述代理程序,所述代理程序运行的过程中对第一被测程序进行动态注入,使所述第一被测程序调用所述函数列表中的第一函数进行测试,所述函数列表包括所述第一函数的类名和方法名,所述第一环境包括被测程序的生产环境或被测程序的旧版本测试环境,所述第一被测程序包括旧版本程序;
录制模块,运行所述代理程序,在所述第一环境中对所述第一被测程序进行测试的情况下,调用所述函数列表中的所述第一函数,得到所述第一函数成对的输入数据和第一输出数据;
回放模块,利用Java反射机制和所述第一函数的所述输入数据,在第二环境中调用第二被测程序中与所述第一函数一致的第二函数,得到所述第二函数的与所述输入数据对应的第二输出数据,所述第二环境包括新版本测试环境,所述第二被测程序包括与所述第一被测程序对应的新版本程序;
对比模块,根据所述第一输出数据与所述第二输出数据的对比结果,确定所述第二被测程序是否通过测试,其中,所述第一输出数据和所述第二输出数据为函数级别的数据,与接口类型、调用方式、应答格式无关。
8.根据权利要求7所述的装置,其特征在于,还包括:
程序构建模块,用于利用Java Instrument构建所述代理程序。
9.根据权利要求7所述的装置,其特征在于,所述第一函数包括第一被测程序的对外接口对应的入口函数。
10.根据权利要求7所述的装置,其特征在于,所述录制模块具体用于:
运行所述代理程序,利用所述代理程序在所述第一函数上进行插桩;
在所述第一环境中对所述第一被测程序进行测试的情况下,调用插桩后的所述第一函数,以获取所述第一函数的成对的输入数据和第一输出数据。
11.根据权利要求7所述的装置,其特征在于,所述回放模块具体用于:
利用Java反射机制,在第二环境中调用类名和方法名与所述第一函数一致的所述第二函数,得到所述第二函数根据所述输入数据输出的所述第二输出数据。
12.根据权利要求7所述的装置,其特征在于,所述对比模块具体用于:
若所述对比结果指示所述第一输出数据与所述第二输出数据一致,确定所述第二被测程序通过测试;
若所述对比结果指示所述第一输出数据与所述第二输出数据不一致,确定所述第二被测程序未通过测试。
13.一种并行测试设备,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6中任意一项所述的并行测试方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任意一项所述的并行测试方法。
CN201911302074.XA 2019-12-17 2019-12-17 并行测试方法、装置、设备及存储介质 Active CN111124905B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911302074.XA CN111124905B (zh) 2019-12-17 2019-12-17 并行测试方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911302074.XA CN111124905B (zh) 2019-12-17 2019-12-17 并行测试方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111124905A CN111124905A (zh) 2020-05-08
CN111124905B true CN111124905B (zh) 2023-07-18

Family

ID=70498249

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911302074.XA Active CN111124905B (zh) 2019-12-17 2019-12-17 并行测试方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111124905B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1873626A (zh) * 2005-06-01 2006-12-06 中兴通讯股份有限公司 一种自动生成桩和驱动函数的单元测试系统及方法
CN102419729A (zh) * 2010-10-26 2012-04-18 微软公司 并行测试执行
CN105302710A (zh) * 2014-07-03 2016-02-03 腾讯科技(深圳)有限公司 一种确定需要回归测试的测试用例的方法和装置
CN110083543A (zh) * 2019-05-07 2019-08-02 江苏满运软件科技有限公司 回归测试方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1873626A (zh) * 2005-06-01 2006-12-06 中兴通讯股份有限公司 一种自动生成桩和驱动函数的单元测试系统及方法
CN102419729A (zh) * 2010-10-26 2012-04-18 微软公司 并行测试执行
CN105302710A (zh) * 2014-07-03 2016-02-03 腾讯科技(深圳)有限公司 一种确定需要回归测试的测试用例的方法和装置
CN110083543A (zh) * 2019-05-07 2019-08-02 江苏满运软件科技有限公司 回归测试方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN111124905A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
US10423474B2 (en) Performing diagnostic tracing of an executing application to identify suspicious pointer values
US8090569B2 (en) Apparatus and method for testing electronic apparatuses
US20080307006A1 (en) File mutation method and system using file section information and mutation rules
US10754765B2 (en) Operating system validation
US7680668B2 (en) Method for generating a language-independent regression test script
US20180089072A1 (en) Automated testing of application program interface
CN112149136A (zh) loT设备固件漏洞的检测方法、系统及电子设备
US20120110383A1 (en) Method and apparatus for off-line analyzing crashed programs
CN111124905B (zh) 并行测试方法、装置、设备及存储介质
CN113114659B (zh) 诊断设备检测方法、装置、终端设备及存储介质
CN113608089B (zh) 开关电源mos管的soa测试方法、系统、装置及可读存储介质
CN115657981A (zh) 验证环境中的打印信息的打印等级的设置方法及验证方法
CN113688031B (zh) 一种基于字节码增强技术的测试定位方法
CN114281065A (zh) 车辆的电子控制单元刷写方法、装置及诊断设备
CN114625106A (zh) 车辆诊断的方法、装置、电子设备及存储介质
CN113986592A (zh) 日志记录方法、装置、终端设备及可读存储介质
CN114035846A (zh) 一种指令验证方法及指令验证装置
CN112988215A (zh) 评价规则的实现与用户数据的评价方法、装置及电子设备
CN112783759B (zh) 白盒测试任务执行方法、装置、存储介质和计算机设备
CN111045724A (zh) 调用链信息的查询方法、装置和可读存储介质
CN109426506B (zh) 选用只读存储器的加载方法
CN114756217B (zh) 基于插件的脚本生成系统
Radhakrishna et al. Learning asynchronous typestates for android classes
CN113326184B (zh) 接口测试方法、装置、存储介质及电子设备
US20230350788A1 (en) Method and system for providing delta code coverage information for work items

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