一种测试案例库构建方法及装置、电子设备
文献发布时间:2023-06-19 11:02:01
技术领域
本申请涉及计算机技术领域,尤其涉及一种测试案例库构建方法及装置、电子设备。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。
金融科技领域下,在大型的业务系统的开发测试过程中,系统的架构非常的复杂,系统所涉及的应用程序的代码量多则达到上百万行。如此庞大的系统,对开发和测试人员提出了非常高的要求。为了保障如此庞大的系统在生产环境系统中能够正常运行,且没有重大的缺陷,系统的开发人员需要编写大量的单元测试,测试人员需要构建大量的测试案例。
现有技术中,通常根据工作人员对应用程序的了解和对用户需求的理解等主观认知构建应用程序的测试案例库;但是,由于工作人员的主观认知有限,在构建应用程序的测试案例库时,极有可能存在遗漏测试案例的情况,即测试案例不可能覆盖到全部的场景;若测试案例没有覆盖到场景在生产运行中发生,则极有可能带来很大的系统安全隐患。因此,如何构建针对应用程序的完整的测试案例库是亟需解决的问题。
申请内容
为解决上述技术问题,本申请实施例提供了一种测试案例库构建方法及装置、电子设备,能够构建针对应用程序的完整的测试案例库。
本申请实施例提供的一种测试案例库构建方法,包括:获取应用程序在生产环境系统执行的第一代码路径;
获取所述应用程序在测试环境系统执行的第二代码路径;
基于所述第一代码路径和所述第二代码路径的差异构建测试案例库。
本申请一可选实施方式中,所述获取应用程序在生产环境系统执行的第一代码路径,包括:
在所述生产环境系统启动过程中挂载代理服务器;
在所述应用程序启动时,所述代理服务器在类文件中插入第一探针;
基于被执行的第一探针确定所述第一代码路径。
本申请一可选实施方式中,所述获取所述应用程序在测试环境系统执行的第二代码路径,包括:
在所述测试环境系统启动过程中挂载代理服务器;
在所述应用程序启动时,所述代理服务器在类文件中插入第二探针;
基于被执行的第二探针确定所述第二代码路径。
本申请一可选实施方式中,所述基于所述第一代码路径和所述第二代码路径的差异构建测试案例库,包括:
基于所述第一代码路径和所述第二代码路径的差异确定第三代码路径,所述第三代码路径为所述第一代码路径与所述第二代码路径不同的代码路径;
确定与所述第三代码路径对应的第三功能;
针对所述第三功能构建所述应用程序的待测试案例;
基于所述待测试案例以及针对所述第二代码路径构建的已测试案例,确定所述应用程序的测试案例库。
本申请一可选实施方式中,所述针对所述第三功能构建待测试案例之前,所述方法还包括:确定所述第三功能对应的应用程序。
本申请一可选实施方式中,所述确定所述第三功能对应的所述应用程序包括:
在所述生产环境系统构建应用程序与测试案例的映射关系列表;
基于所述映射关系列表确定所述已测试案例对应的应用程序;
确定所述已测试案例对应的应用程序为所述第三功能对应的应用程序。
本申请实施例提供一种测试案例库构建装置,所述装置包括:
第一获取单元,用于获取应用程序在生产环境系统执行的第一代码路径;
第二获取单元,用于获取所述应用程序在测试环境系统执行的第二代码路径;
构建单元,用于基于所述第一代码路径和所述第二代码路径的差异构建测试案例库。
本申请实施例还提供一种存储介质,所述存储介质上存储有可执行指令,该可执行指令被处理器执行时实现上述的方法步骤。
本申请实施例还提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时可实现上述的方法步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现上述的方法步骤。
本申请实施例提供的测试案例库构建方法包括:获取应用程序在生产环境系统执行的第一代码路径;获取所述应用程序在测试环境系统执行的第二代码路径;基于所述第一代码路径和所述第二代码路径的差异构建测试案例库。通过获取应用程序在生产环境系统执行的第一代码路径以及获取所述应用程序在测试环境系统执行的第二代码路径,能够确定第一代码路径与第二代码路径之间不同的代码路径(即第三代码路径),进而确定出在测试环境系统中被遗漏的第三代码路径对应的第三功能;如此,测试案例库构建装置能够自动的确定出之前构建测试案例库时所遗漏的测试案例,并能够基于所遗漏的测试案例补充已构建的测试案例库。因此,本申请时实例能够构建完整的测试案例库,避免遗漏测试案例,提高应用程序对应的系统的安全性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合附附图,作详细说明如下。
附图说明
图1为本申请实施例提供的测试案例库构建方法的一种可选处理流程示意图;
图2为本申请实施例提供的获取应用程序在生产环境系统执行的第一代码路径的一种可选处理流程示意图;
图3为本申请实施例提供的应用程序的源代码的一种可选示意图;
图4为本申请实施例提供的在类文件中插入第一探针后的源代码的一种可选示意图;
图5为本申请实施例提供的获取所述应用程序在测试环境系统执行的第二代码路径的一种可选处理流程示意图;
图6为本申请实施例提供的基于所述第一代码路径和所述第二代码路径的差异构建测试案例库的一种可选处理流程示意图;
图7为本申请实施例提供的应用程序的源代码的一种示意图;
图8为本申请实施例提供的确定第三功能对应的所述应用程序的一种可选处理流程示意图;
图9为本申请实施例提供的应用程序与测试案例的映射关系列表的一种可选示意图;
图10为本申请实施例提供的测试案例库构建方法的流程示意图
图11为本申请实施例提供的测试案例库构建装置的结构组成示意图。
图12为本申请实施例的电子设备的结构组成示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点和技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
本申请实施例中,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
下面对本申请实施例所涉及的一种测试案例库构建方法进行详细介绍,本申请实施例所提供的测试案例库构建方法的执行主体可以为任何具有数据处理能力的装置或设备或服务器,本申请实施例中不作限定。
本申请实施例所提供的测试案例库构建方法的一种可选处理流程,如图1所示,至少可以包括以下几个步骤:
步骤S101,获取应用程序在生产环境系统执行的第一代码路径。
在一些实施例中,测试案例库构建装置获取应用程序在生产环境系统执行的第一代码路径。其中,所述第一代码路径可以对应应用程序的第一功能,所述应用程序可以采用java语言编写。
在一些实施例中,测试案例库构建装置获取应用程序在生产环境系统执行的第一代码路径的一种可选处理流程,如图2所示,至少包括以下步骤:
步骤S101a,在所述生产环境系统启动过程中挂载代理服务器。
本申请实施例采用即时运行(on-the-fly)的方式,在生产环境系统启动过程中,在应用程序上挂载代理服务器(agent)。
步骤S101b,在所述应用程序启动时,所述代理服务器在类文件中插入第一探针。
在一些实施例中,在所述应用程序启动时将运行类加载器(classloader)加载类文件,所述代理服务器在类文件中插入第一探针(PROBE)。
应用程序的源代码的一种可选示意图,如图3所示,INVOKE a()、INVOKE cond()、IFEQ、INVOKE b()、INVOKE c()和INVOKE d()均为运行应用程序时所调用的函数,也可以称为应用程序的一个功能。应用程序启动时,在类文件中插入第一探针后的源代码的一种可选示意图,如图4所示,在应用程序的功能或函数对应的类文件中插入第一探针;在应用程序的某一功能或某一函数被执行时,该函数或程序对应的类文件中插入的第一探针也被执行;如此,能够记录应用程序中被执行的代码路径,即能够记录应用程序中执行的功能。在应用程序运行时,测试案例库构建装置能够记录应用程序的代码路径,并且,利用不同的显示方式区别呈现被执行的代码路径和未被执行的代码路径;如用不同颜色的字体分别呈现被执行的代码路径和未被执行的代码路径等方式。
步骤S101c,基于被执行的第一探针确定所述第一代码路径。
在一些实施例中,测试案例库构建装置记录被执行的第一探针,确定被执行的第一探针所对应的第一代码路径。
步骤S102,获取所述应用程序在测试环境系统执行的第二代码路径。
在一些实施例中,所述第二代码路径可以对应应用程序的第二功能,测试案例库构建装置获取所述应用程序在测试环境系统执行的第二代码路径的处理过程与测试案例库构建装置获取所述应用程序在生产环境系统执行的第一代码路径的处理过程相似,测试案例库构建装置获取所述应用程序在测试环境系统执行的第二代码路径的一种可选处理流程,如图5所示,至少包括以下步骤:
步骤S102a,在所述测试环境系统启动过程中挂载代理服务器。
本申请实施例采用on-the-fly的方式,在测试环境系统启动过程中,在应用程序上挂载agent。
步骤S102b,在所述应用程序启动时,所述代理服务器在类文件中插入第二探针。
在一些实施例中,在所述应用程序启动时将运行classloader加载类文件,所述代理服务器在类文件中插入第二探针。
在一些实施例中,在应用程序的某一功能或某一函数被执行测试时,该函数或程序对应的类文件中插入的第二探针也被执行测试;如此,能够记录应用程序中被执行的测试代码路径,即能够记录应用程序中执行的测试功能。在应用程序测试运行时,测试案例库构建装置能够记录应用程序的测试代码路径,并且,利用不同的显示方式区别呈现被执行的测试代码路径和未被执行的测试代码路径;如用不同颜色的字体分别呈现被执行的测试代码路径和未被执行的测试代码路径等方式。这里,应用程序的代码路径也可以称为应用程序的逻辑分支或功能。
步骤S102c,基于被执行的第一探针确定所述第一代码路径。
在一些实施例中,测试案例库构建装置记录被执行的第二探针,所对应的功能,确定被执行的第二探针所对应的第二代码路径。
步骤S103,基于所述第一代码路径和所述第二代码路径的差异构建测试案例库。
在一些实施例中,测试案例库构建装置基于所述第一代码路径和所述第二代码路径的差异构建测试案例库的一种可选处理流程,如图6所示,至少包括以下步骤:
步骤S103a,基于所述第一代码路径和所述第二代码路径的差异确定第三代码路径,所述第三代码路径为所述第一代码路径的部分代码路径、且所述第三代码路径与所述第二代码路径不同;即所述第三代码路径为所述第一代码路径与所述第二代码路径不同的代码路径。
在一些实施例中,测试案例库构建装置查找所述第一代码路径中除所述第二代码路径以外的功能,并确定所述第一代码路径中除所述第二代码路径以外的功能为第三代码路径。第三代码路径即为应用程序在生成环境系统中执行的代码路径,且应用程序在测试环境中未执行的代码路径。
举例来说,应用程序的源代码根据应用的不同的复杂程度会有不同数量的逻辑分支,不同的逻辑分支对应不同的业务逻辑或功能,应用程序的源代码的一种示意图,如图7所示,应用程序可以为Email,在应用程序的源代码中的“EmailType”的取值分别为1和2时,分别对应不同的业务逻辑或功能,并对应不同的代码路径;EmailType=1,表示邮件类型为普通邮件,EmailType=2表示邮件类型为会议邮件。测试人员在构建测试案例的时候,由于对源代码的熟悉程度不高,可能不确定被测试的应用程序的源代码包括2个代码路径,而仅仅依据测试人员自身的认知来构建测试案例,有可能会出现遗漏测试案例的问题。应用本申请实施例提供的测试案例构建方法,针对图7所示的应用程序,在生产环境系统运行时,测试案例库构建装置能够记录应用程序执行的代码路径,即能够记录应用程序执行的2个逻辑分支。在测试环境系统运行时,测试案例库构建装置能够记录测试应用程序所执行的代码路径,如测试人员仅构建一个逻辑分支,则仅记录应用程序执行的1个代码路径。通过比较生产环境系统运行时和测试环境系统运行时,应用程序执行的代码路径,能够确定在测试环境系统中未执行的代码路径,并利用不同的呈现方式呈现测试环境系统中执行的代码路径,以及未执行的代码路径;确定与所述第三代码路径对应的第三功能,即未被执行的代码路径对应的功能为第三功能。
步骤S103b,针对所述第三功能构建所述应用程序的待测试案例。
在一些实施例中,测试案例库构建装置针对所述第三功能构建所述应用程序的待测试案例。其中,针对所述第三功能构建所述应用程序的待测试案例为在之前构建测试案例库的过程中遗漏的测试案例。
在一些实施例中,测试案例库构建装置针对所述第三功能构建所述应用程序的待测试案例之前,需要确定所述第三功能对应的应用程序。在具体实施时,确定第三功能对应的所述应用程序的一种可选处理流程示意图,如图8所示,至少可以包括如下步骤:
步骤S103b1,在所述生产环境系统构建应用程序与测试案例的映射关系列表。
在一些实施例中,测试案例库构建装置构建的应用程序与测试案例的映射关系列表的一种可选示意图,如图9所示,该映射关系列表可以在生成环境系统中构建,该映射关系列表表征每个应用程序与该应用程序执行的功能之间的对应关系。以应用程序是邮件为例,该该应用程序执行的功能至少可以包括发送普通邮件、发送会议邮件、发送超大邮件以及接收邮件等。
步骤S103b2,基于所述映射关系列表确定所述已测试案例对应的应用程序。
在一些实施例中,测试案例库构建装置在应用程序与测试案例的映射关系列表中查找已测试案例,确定查找到的已测试案例对应的应用程序。其中,已测试案例为在应用程序在测试环境系统执行的功能。
举例来说,若已测试案例为发送普通邮件,则测试案例库构建装置在应用程序与测试案例的映射关系列表中查找发送普通邮件,进一步查找应用程序与测试案例的映射关系列表中发送普通邮件所对应的应用程序为邮件应用程序,则确定已测试案例对应的应用程序为邮件。
步骤S103b3,确定所述已测试案例对应的应用程序为所述第三功能对应的应用程序。
在一些实施例中,测试案例库构建装置确定所述已测试案例对应的应用程序为所述第三功能对应的应用程序。
仍以步骤步骤S103b2中的例子为例,若已测试案例为发送普通邮件,则第三功能对应的应用程序为邮件应用程序。
步骤S103c,基于所述待测试案例以及针对所述第二代码路径构建的已测试案例,确定所述应用程序的测试案例库。
在一些实施例中,针对所述第二代码路径构建的已测试案例是在之前构建的测试案例库中已经存在的测试案例,待测试案例是在之前构建的测试案例库中遗漏的测试案例。测试案例库构建装置确定所述应用程序的测试案例库包括针对所述第二代码路径构建的已测试案例和所述待测试案例。
综上,本申请实施例提供的测试案例库构建方法的流程,可以如图10所示,包括:确定应用程序在生产环境系统执行的第一代码路径与应用程序在测试环境系统执行的第二代码路径之间的不同代码路径(即第三代码路径);根据第三代码路径对应的第三功能、以及测试案例与应用程序的映射关系列表确定测试案例对应的应用程序,进而构建应用程序对应的测试案例库。
本申请实施例提供的测试案例库构建方法,通过获取应用程序在生产环境系统执行的第一代码路径以及获取所述应用程序在测试环境系统执行的第二代码路径,能够确定第一代码路径与第二代码路径之间不同的代码路径(即第三代码路径),进而确定出在测试环境系统中被遗漏的第三代码路径对应的第三功能;如此,测试案例库构建装置能够自动的确定出之前构建测试案例库时所遗漏的测试案例,并能够基于所遗漏的测试案例补充已构建的测试案例库。因此,本申请时实例能够构建完整的测试案例库,避免遗漏测试案例,提高应用程序对应的系统的安全性。
需要说明的是,本申请实施例中所涉及的测试案例库构建装置可以通过云计算技术获取足够的计算能力和存储空间,进而执行本申请实施例所提供的测试案例库构建方法。本申请实施例中所涉及的测试案例库构建装置可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或分布式系统,还可以是提供云服务、云数据库、云计算、云存储、云通信以及大数据等基础云计算服务的云服务器;也可以是智能手机、平板电脑、笔记本电脑、台式计算机等具备计算能力的设备;当然,信息生成装置的形态并不限定于上述。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为实现本申请实施例提供的上述测试案例库构建方法,本申请实施例还提供一种测试案例库构建装置,图11为本申请实施例提供的测试案例库构建装置400的结构组成示意图,所述测试案例库构建装置400包括:
第一获取单元401,用于获取应用程序在生产环境系统执行的第一代码路径;
第二获取单元402,用于获取所述应用程序在测试环境系统执行的第二代码路径;
构建单元403,用于基于所述第一代码路径和所述第二代码路径的差异构建测试案例库。在一些可选实施例中,所述第一获取单元401,用于在所述生产环境系统启动过程中挂载代理服务器;
在所述应用程序启动时,所述代理服务器在类文件中插入第一探针;
基于被执行的第一探针确定所述第一代码路径。
在一些可选实施例中,所述第二获取单元402,用于在所述测试环境系统启动过程中挂载代理服务器;
在所述应用程序启动时,所述代理服务器在类文件中插入第二探针;
基于被执行的第二探针确定所述第二代码路径。
在一些可选实施例中,所述构建单元403,用于基于所述第一代码路径和所述第二代码路径确定第三代码路径,所述第三代码路径为所述第一代码路径的部分代码路径、且所述第三代码路径与所述第二代码路径不同;
确定与所述第三代码路径对应的第三功能;
针对所述第三功能构建所述应用程序的待测试案例;
基于所述待测试案例以及针对所述第二代码路径构建的已测试案例,确定所述应用程序的测试案例库。
在一些可选实施例中,所述构建单元403,用于在所述生产环境系统构建应用程序与测试案例的映射关系列表;
基于所述映射关系列表确定所述已测试案例对应的应用程序;
确定所述已测试案例对应的应用程序为所述第三功能对应的应用程序。
需要说明的是,本申请实施例中,所述第一获取单元401、第二获取单元402和所述构建单元403的功能可由处理器实现。
本申请实施例上述的测试案例库构建装置如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施例还提供一种计算机程序产品,其中存储有计算机可执行指令,该计算机可执行指令被执行时能够实现本申请实施例的上述测试案例库构建方法。
相应地,本申请实施例还提供一种存储介质,所述存储介质上存储有可执行指令,该可执行指令被处理器执行本申请实施例的上述测试案例库构建方法实现的步骤。
为实现本申请实施例提供的上述测试案例库构建方法,本申请实施例还提供一种电子设备,图12为本申请实施例的电子设备的结构组成示意图,如图12所示,电子设备70可以包括一个或多个(图中仅示出一个)处理器702(处理器702可以包括但不限于微处理器(MCU,Micro Controller Unit)或可编程逻辑器件(FPGA,Field Programmable GateArray)等的处理装置)、用于存储数据的存储器704、以及用于通信功能的传输装置706。本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子设备的结构造成限定。例如,电子设备70还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。
存储器704可用于存储应用软件的软件程序以及模块,如本申请实施例中的方法对应的程序指令/模块,处理器702通过运行存储在存储器704内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器704可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器704可进一步包括相对于处理器702远程设置的存储器,这些远程存储器可以通过网络连接至电子设备70。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置706用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备70的通信供应商提供的无线网络。在一个实例中,传输装置706包括一个网络适配器(NIC,Network Interface Controller),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置706可以为射频(RF,Radio Frequency)模块,其用于通过无线方式与互联网进行通讯。
本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
- 一种测试案例库构建方法及装置、电子设备
- 一种电网低频振荡案例库的构建方法及装置