CN114461520A - 一种软件测试方法、装置及电子设备 - Google Patents
一种软件测试方法、装置及电子设备 Download PDFInfo
- Publication number
- CN114461520A CN114461520A CN202210039583.3A CN202210039583A CN114461520A CN 114461520 A CN114461520 A CN 114461520A CN 202210039583 A CN202210039583 A CN 202210039583A CN 114461520 A CN114461520 A CN 114461520A
- Authority
- CN
- China
- Prior art keywords
- module
- tested
- functional
- software
- functional modules
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种软件测试方法、装置及电子设备,方法包括:将待测试软件划分为多个功能模块;根据多个功能模块之间的连接关系,对多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;将待测试数据输入待测试模组,并获取每个待测试模组的模组输出结果;根据模组输出结果确定待测试软件中发生错误的功能模块,以完成对待测试软件的测试。可以根据待测试软件中各个功能模块的连接关系构建至少一个待测试模组,由于相同功能模块在不同待测试模组中参与的处理流程不同,使测试过程可以更全面覆盖功能模块的业务内容,同时,由于可以对至少一个待测试模组进行并行测试,大大提升了对待测试软件的测试效率。
Description
技术领域
本申请实施例涉及软件技术领域,尤其涉及一种软件测试方法及装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
随着计算机技术的发展和科技的进步,软件的功能也越来越复杂,如何对软件进行测试,并定位软件中发生错误的代码段,成为了亟待解决的问题。
相关技术中,在软件开发完成或更新后,通常会将各种各样的测试数据输入软件整体,软件整体对这些测试数据进行处理,由测试人员观察软件整体对这些测试数据的反应。如果软件的反应存在异常,测试人员再根据这些异常确定出可能引发异常的代码段,并对这些可能引发异常的代码段进行调试。
上述测试流程中,由于软件通常规模较大,要测试到软件的所有功能是否存在异常需要花费大量的测试时间和测试成本。
发明内容
本申请实施例提供一种软件测试方法及装置、电子设备、计算机可读存储介质及计算机程序产品,以解决相关技术中软件测试过程耗时较长以及成本较高的问题。
第一方面,本申请实施例提供了一种软件测试方法,该方法包括:
将待测试软件划分为多个功能模块;
根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;
将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果;
根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,以完成对所述待测试软件的测试。
在一种可选实施方式中,所述将待测试软件划分为多个功能模块,包括:
获取所述待测试软件的源代码;
识别所述源代码中的方法函数,并以所述方法函数为单位将所述源代码划分为多个功能模块。
在一种可选实施方式中,所述根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组,包括:
构建描述所述多个功能模块的连接关系的关系图谱;
从所述关系图谱中获取确定多条连接至少两个功能模块的关系链路;
将所述关系链路中功能模块的连接顺序,将所述关系链路包含的功能模块进行组合,得到至少一个待测试模组。
在一种可选实施方式中,所述构建描述所述多个功能模块的连接关系的关系图谱,包括:
获取所述多个功能模块中各个待测试模组的输入数据类型和输出数据类型;
根据所述输入数据类型和所述输出数据类型,建立由所述多个功能模块作为节点构成的关系图谱。
在一种可选实施方式中,所述将待测试数据输入所述待测试模组,包括:
将所述待测试模组中位于起始端的功能模块确定为起始模块;
确定所述起始模块的输入数据类型;
从测试数据库中获取与所述起始模块的输入数据类型匹配的待测试数据;
将所述待测试数据输入所述起始模块。
在一种可选实施方式中,所述根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,包括:
从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
在所述模组输出结果与所述预设模组结果不匹配的情况下,获取所述待测试模组中各个功能模块的模块输出结果;
从所述待测试数据库中获取所述待测试数据对应于所述各个功能模块的预设模块结果;
将所述模块输出结果与对应的预设模块结果不一致的功能模块,确定为所述待测试软件中发生错误的功能模块。
在一种可选实施方式中,所述根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,包括:
从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
在所述模组输出结果与所述预设模组结果不匹配的情况下,将所述待测试模组确定为待确认模组;
在多个待确认模组中存在相同功能模块的情况下,将所述相同功能模块确定为所述待测试软件中发生错误的功能模块。
在一种可选实施方式中,所述源代码包括前端代码和后端代码,所述识别所述源代码中的方法函数,并以所述方法函数为单位将所述源代码划分为多个功能模块,包括:
识别所述后端代码中的方法,并以所述方法函数为单位将所述后端代码划分为多个功能模块。
第二方面,本申请实施例提供了一种软件测试装置,该装置包括:
划分模块,用于将待测试软件划分为多个功能模块;
组合模块,用于根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;
输入模块,用于将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果;
确定模块,用于根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,以完成对所述待测试软件的测试。
在一种可选实施方式中,所述划分模块包括:
代码获取子模块,用于获取所述待测试软件的源代码;
划分子模块,用于识别所述源代码中的装置,并以所述装置为单位将所述源代码划分为多个功能模块。
在一种可选实施方式中,所述组合模块包括:
图谱子模块,用于构建描述所述多个功能模块的连接关系的关系图谱;
链路子模块,用于从所述关系图谱中获取确定多条连接至少两个功能模块的关系链路;
组合子模块,用于将所述关系链路中功能模块的连接顺序,将所述关系链路包含的功能模块进行组合,得到至少一个待测试模组。
在一种可选实施方式中,所述图谱子模块包括:
输入输出子模块,用于获取所述多个功能模块中各个待测试模组的输入数据类型和输出数据类型;
图谱确定子模块,用于根据所述输入数据类型和所述输出数据类型,建立由所述多个功能模块作为节点构成的关系图谱。
在一种可选实施方式中,所述输入模块包括:
起始子模块,用于将所述待测试模组中位于起始端的功能模块确定为起始模块;
数据类型子模块,用于确定所述起始模块的输入数据类型;
测试数据子模块,用于从测试数据库中获取与所述起始模块的输入数据类型匹配的待测试数据;
输入子模块,用于将所述待测试数据输入所述起始模块。
在一种可选实施方式中,所述确定模块包括:
模组结果子模块,用于从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
模块结果子模块,用于在所述模组输出结果与所述预设模组结果不匹配的情况下,获取所述待测试模组中各个功能模块的模块输出结果;
预设模块结果子模块,用于从所述待测试数据库中获取所述待测试数据对应于所述各个功能模块的预设模块结果;
第一确定子模块,用于将所述模块输出结果与对应的预设模块结果不一致的功能模块,确定为所述待测试软件中发生错误的功能模块。
在一种可选实施方式中,所述根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,包括:
模组结果子模块,用于从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
待确定模组子模块,用于在所述模组输出结果与所述预设模组结果不匹配的情况下,将所述待测试模组确定为待确认模组;
第二确定子模块,用于在多个待确认模组中存在相同功能模块的情况下,将所述相同功能模块确定为所述待测试软件中发生错误的功能模块。
在一种可选实施方式中,所述源代码包括前端代码和后端代码,所述划分子模块包括:
后端代码划分子模块,用于识别所述后端代码中的方法函数,并以所述方法函数为单位将所述后端代码划分为多个功能模块。
第三方面,本申请实施例还提供了一种电子设备,包括用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现所述的软件测试方法。
在本申请实施例中,将待测试软件划分为多个功能模块;根据多个功能模块之间的连接关系,对多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;将待测试数据输入待测试模组,并获取每个待测试模组的模组输出结果;根据模组输出结果确定待测试软件中发生错误的功能模块,以完成对待测试软件的测试。可以根据待测试软件中各个功能模块的连接关系构建至少一个待测试模组,由于相同功能模块在不同待测试模组中参与的处理流程不同,使测试过程可以更全面覆盖功能模块的业务内容,同时,由于可以对至少一个待测试模组进行并行测试,大大提升了对待测试软件的测试效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本申请实施例提供的一种软件测试方法的步骤流程图;
图2是本申请实施例提供的另一种软件测试方法的步骤流程图;
图3是本申请实施例提供的一种关系图谱示意图;
图4是本申请实施例提供的再一种软件测试方法的步骤流程图;
图5是本申请实施例提供的一种软件测试装置结构图;
图6是本申请实施例提供的一种电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
图1是本申请实施例提供的一种软件测试方法的步骤流程图,如图1所示,该方法包括:
步骤101、将待测试软件划分为多个功能模块。
在对软件进行开发、维护、更新等操作后,软件对应的代码会发生变化,导致软件执行过程中会产生各种各样的非预期错误,例如各类BUG等。为了对软件进行测试,确定出软件中出现错误的具体位置,可以先对待测试软件进行分割,将其划分为各个单元,并对各个单元进行测试,以确定出发生错误的单元,进而对待测试软件中的具体错误位置进行定位,便于开发人员对待测试软件进行修补。
在本申请实施例中,可以按照待测试软件中实现功能的不同,以功能为单位,将待测试软件划分为多个不同的功能模块。例如,对于某一金融应用程序而言,该金融应用程序具备贷款信息验证、放款、期限提醒、还款、流程跑批等多种功能,则依据这些功能的不同,可以将该金融应用程序划分为贷款信息验证模块、放款模块、期限提醒模块、还款模块、流程跑批模块。
具体的,可以根据待测试软件的描述文档、项目文档、开发目录信息等确定待测试软件中的功能模块,还可以根据待测试软件中的方法、函数等的输入输出数据确定待测试软件的功能模块,本申请实施例在此并不进行具体限定。
步骤102、根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组。
由于待测试软件中的功能模块之间一般存在依存关系,各个功能模块之间存在调用、数据传输等连接关系,各个功能模块需要通过这些连接关系进行协同才能正常工作。
举例来说,沿用上述示例,在待测试软件为某一金融应用程序的情况下,其中的放款模块需要根据贷款信息验证模块的输出进行执行,期限提醒模块需要根据放款模块输出的放款信息确定何时发送提醒信息。
因此,通过多个功能模块之间的连接关系,可以将功能模块进行组合以实现各种处理流程,其中,连接关系可以包括但不限于调用关系、依存关系、数据传递关系等。
举例来说,继续沿用上述示例,在一种处理流程下,用户信息通过贷款信息验证模块验证通过后,放款模块向用户放款,当还款期限临近时期限提醒模块向用户发送提醒信息,再由还款模块接收用户的还款操作,则上述处理流程对应的模块组合为验证模块、放款模块、提醒模块、还款模块。在另一种处理流程下,用户信息通过贷款信息验证模块验证通过后,放款模块向用户放款,当还款期限还未临近时,用户进行了提现还款,则还款模块接收用户的还款操作,其还款模块会告知提醒模块用户已经还款,当还款期限临近时,还款模块处理后判断无需向用户发送提醒信息,则伤处处理流程对应的模块组合为验证模块、放款模块、还款模块、提醒模块。需要说明的是,在本申请实施例中,对功能模块进行组合得到待测试模组的过程中,需要考虑功能模块的排列顺序,且排列顺序靠前的功能模块的输出作为下一个功能模块的输入或执行条件。也就是说,相同的功能模块按照排列顺序的不同,可以组合形成不同的待测试模组。
由于不同的待测试模组代表了不同的处理流程,而一个功能模块在不同的处理流程中所实现的作用会存在差异,因此,通过构建对应于不同处理流程的至少一个待测试模组,可以实现对各个功能模块中各种功能的调用,也就是说,能使得功能模块对应的代码被更全面覆盖到。
举例来说,沿用上述示例,提醒模块在用户已还款和未还款的情况下会通过不同的代码段执行不同的动作,因此,通过分别构建模块分布顺序为验证模块、放款模块、还款模块、提醒模块,以及模块分布顺序为验证模块、放款模块、提醒模块、还款模块这个两个不同的待测试模组,可以覆盖提醒模块中更多的代码段。
步骤103、将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果。
在对待测试模组进行测试之前,还可以构建待测试数据库,待测试数据库中保存有用于输入待测试模组的待测试数据,以及待测试数据对应于待测试模组的正确的输出结果。并建立待测试数据、输出结果以及对应的待测试模组的对应关系。
在确定出至少一个待测试模组后,可以从待测试数据库中获取待测试数据,并将待测试数据输入待测试模组中排列在首位的待测试模组中,以使待测试模组根据输入的待测试数据进行执行,并输出模组输出结果。
需要说明的是,由于在本申请中构建了至少一个待测试模组,例如,待测试模组可以包括待测试软件中所有待测试模组所有可能组合和所有可能的执行顺序,因此如果有所待测试模组在测试后均未产生问题,则可以说明该待测试软件在运行过程中的任何情况下均不存在问题。进一步的,对于构建的全部待测试模组,可以并行输入待测试数据,以同时对多个或全部待测试模组同时进行测试,这样不仅可以发现普通测试过程中难以发现的软件错误,还能大大提升软件测试的效率,大幅度缩减软件测试所需的时间长度。
步骤104、根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,以完成对所述待测试软件的测试。
在获取到待测试模组输出的模组输出结果后,可以从待测试数据库中获取输入该待测试模组的待测试数据对应于该待测试模组的正确输出结果。并将该正确输出结果与该模组输出结果进行比较,如果比较结果指示两者不相同,则说明该待测试模组在处理待测试数据的过程中发生了错误。此时,技术人员可以确认构成该待测试模组的功能模块中,存在至少一个故障功能模块。由于待测试软件中一般包含大量功能模块,例如可能包含上千个功能模块,而一个待测试模组中一般仅包含少量的功能模块,例如可以包含10个功能模块,因此,如果确定出某一待测试模组中的功能模块存在问题,则大大缩减了需要详细测试功能模块的范围。
在确定出存在故障的待测试模组后,技术人员可以再对该待测试模组中的各个功能模块进行分别测试,以从该待测试模组中定位到具体发生故障的功能模块。
在本申请实施例中,公开了一种软件测试方法,将待测试软件划分为多个功能模块;根据多个功能模块之间的连接关系,对多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;将待测试数据输入待测试模组,并获取每个待测试模组的模组输出结果;根据模组输出结果确定待测试软件中发生错误的功能模块,以完成对待测试软件的测试。可以根据待测试软件中各个功能模块的连接关系构建至少一个待测试模组,由于相同功能模块在不同待测试模组中参与的处理流程不同,使测试过程可以更全面覆盖功能模块的业务内容,同时,由于可以对至少一个待测试模组进行并行测试,大大提升了对待测试软件的测试效率。
图2是本申请实施例提供的另一种软件测试方法的步骤流程图,如图2所示,该方法包括:
步骤201、将待测试软件划分为多个功能模块。
此步骤可参照步骤101,本申请实施例不再赘述。
子步骤2011、获取所述待测试软件的源代码。
要实现对待测试软件的测试,可以获取待测试软件的源代码,并根据源代码对待测试软件进行模块划分。其中,源代码可以为字符、代码等信息,源代码可以是基于语言框架所构建的项目、软件的开发信息,其中,语言框架可以是Java、jQuery框架等语言框架。
需要说明的是,在开发过程中,源代码通常会以一定的存储结构进行存储,例如,在一个软件开发项目中,负责不同功能的源代码会存储在不同的源代码目录中。在获取源代码的同时,还可以同时获取源代码的存储结构,以便在后续步骤中根据源代码确定待测试软件的功能模块。
子步骤2012、识别所述源代码中的方法函数,并以所述方法函数为单位将所述源代码划分为多个功能模块。
在获取到待测试软件的源代码后,可以通过人工分割、目录分割、接口类型分割等多种分割方式,将源代码分割成多个功能模块。需要说明的是,一般来讲,根据分割的精细程度不同,所确定的功能模块粒度也是不同的。例如,可以将一个大功能对应的代码段确定为一个功能模块,也可以将该大功能对应的子功能的代码段确定为一个功能模块,通过调整功能模块的粒度大小,测试人员可以平衡测试精细程度与测试效率。
方法函数(method)是指,在程序设计中,为了达成某个目标所用的方式和办法。方式就是选择的途径,办法就是采取的措施。方法函数主体就是调用方法时执行的代码段,方法函数的主体语句一般放在源代码的花括号(即大括号{})中。例如,在基于程序设计语言C++形成的源代码中,我们想要把窗体上的某个窗体隐藏起来,就可以使用窗体这个类中的一个“hide”方法函数,hide方法函数的作用就是把窗体给隐藏起来,要显示的时候就可以调用窗体本身的一个show方法函数,这样就可以让窗体给显示出来了。代码:
form form1=new form();//定义一个新的窗体,窗体名字是form1
form1.show();//使用窗体的show方法函数,显示窗体
form1.hide();//使窗体给隐藏起来
需要说明的是,方法函数在非面向对象的一些程序设计语言(例如C语言)中,方法函数可以相当于其中的函数。
具体的,可以通过识别源代码中的方法函数标识,将源代码划分为多个功能模块,其中,方法函数标识可以是“()”、方法函数名称等。本申请实施例并不进行具体限定。
此外,还可以通过其他方式从待测试软件中确定功能模块,例如,对于某个想要获取的功能模块,可以首先形成一个待测试软件副本,并将该副本中的除该功能模块之外的其他功能模块进行屏蔽操作或删除操作,以使该副本仅实现该功能模块的功能,以获取该功能模块。技术人员还可以采用其他任何方式获取待测试软件的各个功能模块,本申请实施例并不进行具体限定。
步骤202、根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组。
此步骤可参照步骤102,本申请实施例不再赘述。
可选的,步骤202还可以包括:
子步骤2021、构建描述所述多个功能模块的连接关系的关系图谱。
在本申请实施例中,连接关系可以是各个功能模块之间的数据传递关系、调用关系、依赖关系等。由于功能模块是待测试软件的一部分,通常每个功能模块需要与其他功能模块进行协同工作,因此,每个功能模块会与其他一个或多个功能模块之间存在连接关系。例如,对于某一金融应用程序而言,该金融应用程序具备贷款信息验证模块、放款模块、期限提醒模块、还款模块、流程跑批模块等多个功能模块。其中,期限提醒模块可以根据放款模块生成的放款信息进行提醒,期限提醒模块也可以根据还款模块生成的还款信息进行提醒,因此,期限提醒模块与还款模块存在连接关系,期限提醒模块与放款模块也存在连接关系。
根据各个功能模块之间的连接关系,可以构建出关系图谱。其中,关系图谱的各个节点为功能模块。
可选的,子步骤2021还可以包括:
子步骤A1、获取所述多个功能模块中各个待测试模组的输入数据类型和输出数据类型。
在待测试软件的开发过程中,某些功能模块之间可能并不存在直接的连接关系,而是通过同一个其他模块、或对数据库中的同一种数据进行处理,存在间接关系,如果仅考虑代码之间的关系则并不一定可以确定出这种间接关系。因此,还可以根据功能模块的输入数据类型和输出数据类型,确定功能模块之间的间接连接关系。
举例来说,某一功能模块A是产生数据A,并将数据A发送至数据库模块,而功能模块B与功能模块A不存在直接连接关系,但功能模块B的功能实现需要访问数据库模块来获取数据A,则功能模块A与功能模块B存在间接的连接关系。在这种情况下,功能模块A的输出数据类型包含数据A,而功能模块B的输入数据类型包含数据A,则可以认为功能模块A和功能模块B也存在连接关系。
子步骤A2、根据所述输入数据类型和所述输出数据类型,建立由所述多个功能模块作为节点构成的关系图谱。
将各个功能模块的输入数据类型和其他功能模块的输出数据类型进行比对,如果一个功能模块的输入数据类型与另一功能模块的输出数据类型相同,则两者之间存在间接连接关系,则在建立的关系图谱中,可以包含两者的连接关系。
子步骤2022、从所述关系图谱中获取确定多条连接至少两个功能模块的关系链路。
参照图3,示出了本申请实施例提供的一种关系图谱示意图,如图3所示,可以将贷款信息验证模块、放款模块、期限提醒模块、还款模块、流程跑批模块依次连接的链路作为一条关系链路,还可以将贷款信息验证模块、放款模块、还款模块、期限提醒模块、流程跑批模块依次连接的链路作为一条关系链路,还可以将贷款信息验证模块、放款模块依次连接的链路作为一条关系链路等等。技术人员可以根据需求确定所要获取的关系链路的数量,本申请实施例对此并不进行具体限定。
子步骤2023、将所述关系链路中功能模块的连接顺序,将所述关系链路包含的功能模块进行组合,得到至少一个待测试模组。
在确定出多个关系链路后,获取每个关系链路中包含的功能模块,并按照其在该关系链路中的连接顺序,将这些功能模块进行组合,得到该关系链路对应的待测试模组。
步骤203、将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果。
可选的,步骤203还可以包括:
子步骤2031、将所述待测试模组中位于起始端的功能模块确定为起始模块。
由于待测试模组中的功能模块具有先后顺序,在待测试模组运行时需要从靠前的功能模块向靠后的功能模块顺序执行,以模拟待测试模组中的功能模块在待测试软件中运行时的情形。
因此,在测试待测试模组时,需要将待测试数据输入待测试模组中位于起始端的功能模块中,以便后续功能模块可以根据起始端功能模块对待测试数据处理后产生的结果继续运行。
子步骤2032、确定所述起始模块的输入数据类型。
子步骤2033、从测试数据库中获取与所述起始模块的输入数据类型匹配的待测试数据。
测试数据库可以根据需要测试的待测试模组的数量、种类等建立。技术人员可以先设定一条待测试数据,再对该待测试数据进行正确处理,得到正确的待测试数据对应的预设模组结果,一同存入待测试数据库中。待测试数据库也可以通过其他方式进行建立,本申请实施例对此并不进行具体限定。
子步骤2034、将所述待测试数据输入所述起始模块。
对于每个待测试模组,在获取到其对应的待测试数据后,可以将待测试数据输入该待测试模组的起始模块中,以对该待测试模组进行测试。需要说明的是,对于每个待测试模组,可以输入多个不同的待测试数据,以对其进行更加全面的测试。
步骤204、从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果。
在获取到待测试模组输出的模组输出结果后,可以从待测试数据库中获取输入该待测试模组的待测试数据对应于该待测试模组的正确的预设模组结果。
具体的,可以在功能模块中进行插桩,即在功能模块中插入数据采集代码段,数据采集代码段可以获取功能模块的输出数据,并将输出数据发送到指定位置,以实现对功能模块的输出情况的检测。技术人员还可以通过其他方式对功能模块的输出情况进行检测,本申请实施例在此不做具体限定。
步骤205、在所述模组输出结果与所述预设模组结果不匹配的情况下,获取所述待测试模组中各个功能模块的模块输出结果。
如果将一个待测试数据输入一个待测试模组后,该待测试模组的模组输出结果与预设模组结果不匹配,则说明该待测试模组中的一个或多个功能模块在运行过程中产生错误。此时,可以获取待测试模组在运行过程中,各个功能模块的模块输出结果。
步骤206、从所述待测试数据库中获取所述待测试数据对应于所述各个功能模块的预设模块结果。
在获取到输入该发生错误的待测试模组的测试数据对应于该待测试模组中各个功能模块的预设模块结构后,将其与该待测试模组中对应功能模块输出的模块输出结果匹配,以确定出该待测试模组中各个功能模块的输出结果是否正确。
步骤207、将所述模块输出结果与对应的预设模块结果不一致的功能模块,确定为所述待测试软件中发生错误的功能模块。
如果待测试模组中某一功能模块的模块输出结果与对应的预设模块结果不匹配,则说明该功能模块发生了错误,这样,技术人员便可以定位到待测试软件中发生错误的功能模块,以及功能模块的错误方式,便与技术人员对待测试软件中的错误进行调试。
综上,为本申请实施例提供的另一种软件测试方法,包括:将待测试软件划分为多个功能模块;根据多个功能模块之间的连接关系,对多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;将待测试数据输入待测试模组,并获取每个待测试模组的模组输出结果;根据模组输出结果确定待测试软件中发生错误的功能模块,以完成对待测试软件的测试。可以根据待测试软件中各个功能模块的连接关系构建至少一个待测试模组,由于相同功能模块在不同待测试模组中参与的处理流程不同,使测试过程可以更全面覆盖功能模块的业务内容,同时,由于可以对至少一个待测试模组进行并行测试,大大提升了对待测试软件的测试效率。
图4是本申请实施例提供的再一种软件测试方法的步骤流程图,如图4所示,该方法包括:
步骤301、将待测试软件划分为多个功能模块。
此步骤可参照步骤201,本申请实施例不再赘述。
子步骤3011、获取所述待测试软件的源代码。
此步骤可参照子步骤2011,本申请实施例不再赘述。
子步骤3012、识别所述源代码中的方法函数,并以所述方法函数为单位将所述源代码划分为多个功能模块。
此步骤可参照子步骤2012,本申请实施例不再赘述。
可选的,子步骤3012还可以包括:
子步骤B1、识别所述后端代码中的方法,并以所述方法函数为单位将所述后端代码划分为多个功能模块。
在软件开发过程中,一般可以分为前端代码和后端代码,其中前端代码一般是指运行在用户端(例如用户的移动终端,网页端)的程序,而后端代码一般是指运行在服务器上的程序,用户端的程序和服务器上的程序共同协作以向用户提供软件服务。
但在软件的更新过程中,可能仅对后端代码进行了更新,而用户端运行成程序并未更新,在这种情况下,可以仅对待测试软件的后端代码进行测试,根据后端代码确定功能模块。以避免对未更新的前端代码进行测试而浪费测试资源。
步骤302、根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组。
此步骤可参照步骤202,本申请实施例不再赘述。
步骤303、将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果。
在本实施例中,由于功能模组仅包含待测试软件中后端代码中的功能模块,因此,通过功能模块组合而成的待测试模组可能并不是待测试软件中数据处理的完整流程。待测试模组的起始模块在待测试软件中可能与待测试软件的前端代码中的功能模块存在连接关系,在待测试软件的前端代码中,可能存在用于数据校验等可以减少系统错误的功能模块,使得在常规测试过程中可能较难发现后端代码中的一些隐形错误。
举例来说,对于某一金融应用程序而言,该金融应用程序具备贷款信息验证模块、放款模块、期限提醒模块、还款模块、流程跑批模块等功能模块,其中,贷款信息验证模块为前端代码中的模块,用于对用户输入的贷款信息进行校验,并在贷款信息校验通过后将贷款信息发送至后端代码中的放款模块,放款模块再根据正确的贷款信息向用户放款。传统测试流程中,由于后端代码中的放款模块会始终接收到前端代码中贷款信息验证模块验证过的贷款信息,因此,难以测试出放款模块在贷款信息错误的情况下是否会产生错误。
而在本申请实施例中,由于待测试模组中并不包含前端代码中的功能模块,因此,不仅可以向待测试模组输入正确数据,还可以向待测试模组输入错误数据,来模拟前端代码中的功能模块失效或发生错误时,后端代码的功能模块的应对方法,以观察后端代码中是否存在难以发现的阴性故障。
举例来说,如果后端代码的生成的一个待测试模组包括放款模块、期限提醒模块、还款模块。不仅可以向该待测试模组中的放款模块输入经过贷款信息校验模块验证后的贷款信息,还可以向该待测试模组中的放款模块输入包含错误的贷款信息(例如位数错误的身份证号),如果该待测试模组基于该错误的贷款信息输出了期限提醒信息和还款信息,说明放款模块根据错误的贷款信息进行了放款操作,则该放款模块存在故障。而如果该待测试模组没有输出结果或放款模块进行了报错,则说明该放款模块不会基于错误的贷款信息进行放款。
步骤304、从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果。
此步骤可参照步骤204,本申请实施例不再赘述。
步骤305、在所述模组输出结果与所述预设模组结果不匹配的情况下,将所述待测试模组确定为待确认模组。
除上述实施例公开的根据功能模块输出的模块输出结果确定发生错误的功能模块之外,还可以通过交叉比对的方式确定发生错误的功能模块,以减少测试步骤并降低测试过程的计算量。
具体的,在对至少一个待测试模组进行测试后,如果待测试模组的模组输出结果与预设模组结果不匹配,可以将所有不匹配的待测试模组确定为待确认模组,再通过交叉比对的方式从这些待确认模组中确定发生错误的功能模块。
步骤306、在多个待确认模组中存在相同功能模块的情况下,将所述相同功能模块确定为所述待测试软件中发生错误的功能模块。
具体的,可以在多个待确认模组中查找相同的功能模块,如果某两个待确认模组中仅包含一个相同功能模块,则可以确定是该相同功能模块引发了两个待确认模组的错误,则可以将该相同功能模块确定为待测试软件中发生错误的功能模块。
综上,为本申请实施例提供的再一种软件测试方法,包括:将待测试软件划分为多个功能模块;根据多个功能模块之间的连接关系,对多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;将待测试数据输入待测试模组,并获取每个待测试模组的模组输出结果;根据模组输出结果确定待测试软件中发生错误的功能模块,以完成对待测试软件的测试。可以根据待测试软件中各个功能模块的连接关系构建至少一个待测试模组,由于相同功能模块在不同待测试模组中参与的处理流程不同,使测试过程可以更全面覆盖功能模块的业务内容,同时,由于可以对至少一个待测试模组进行并行测试,大大提升了对待测试软件的测试效率。
与上述本发明的软件测试方法实施例所提供的方法相对应,参见图5,图5是本申请实施例提供的一种软件测试装置结构图,在本实施例中,该装置可以包括:
划分模块401,用于将待测试软件划分为多个功能模块;
组合模块402,用于根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;
输入模块403,用于将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果;
确定模块404,用于根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,以完成对所述待测试软件的测试。
在一种可选实施方式中,所述划分模块包括:
代码获取子模块,用于获取所述待测试软件的源代码;
划分子模块,用于识别所述源代码中的装置,并以所述装置为单位将所述源代码划分为多个功能模块。
在一种可选实施方式中,所述组合模块包括:
图谱子模块,用于构建描述所述多个功能模块的连接关系的关系图谱;
链路子模块,用于从所述关系图谱中获取确定多条连接至少两个功能模块的关系链路;
组合子模块,用于将所述关系链路中功能模块的连接顺序,将所述关系链路包含的功能模块进行组合,得到至少一个待测试模组。
在一种可选实施方式中,所述图谱子模块包括:
输入输出子模块,用于获取所述多个功能模块中各个待测试模组的输入数据类型和输出数据类型;
图谱确定子模块,用于根据所述输入数据类型和所述输出数据类型,建立由所述多个功能模块作为节点构成的关系图谱。
在一种可选实施方式中,所述输入模块包括:
起始子模块,用于将所述待测试模组中位于起始端的功能模块确定为起始模块;
数据类型子模块,用于确定所述起始模块的输入数据类型;
测试数据子模块,用于从测试数据库中获取与所述起始模块的输入数据类型匹配的待测试数据;
输入子模块,用于将所述待测试数据输入所述起始模块。
在一种可选实施方式中,所述确定模块包括:
模组结果子模块,用于从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
模块结果子模块,用于在所述模组输出结果与所述预设模组结果不匹配的情况下,获取所述待测试模组中各个功能模块的模块输出结果;
预设模块结果子模块,用于从所述待测试数据库中获取所述待测试数据对应于所述各个功能模块的预设模块结果;
第一确定子模块,用于将所述模块输出结果与对应的预设模块结果不一致的功能模块,确定为所述待测试软件中发生错误的功能模块。
在一种可选实施方式中,所述根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,包括:
模组结果子模块,用于从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
待确定模组子模块,用于在所述模组输出结果与所述预设模组结果不匹配的情况下,将所述待测试模组确定为待确认模组;
第二确定子模块,用于在多个待确认模组中存在相同功能模块的情况下,将所述相同功能模块确定为所述待测试软件中发生错误的功能模块。
在一种可选实施方式中,所述源代码包括前端代码和后端代码,所述划分子模块包括:
后端代码划分子模块,用于识别所述后端代码中的方法函数,并以所述方法函数为单位将所述后端代码划分为多个功能模块。
综上,本申请实施例提供的一种软件测试模型生成装置,本申请可以通过将待测试软件划分为多个功能模块;根据多个功能模块之间的连接关系,对多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;将待测试数据输入待测试模组,并获取每个待测试模组的模组输出结果;根据模组输出结果确定待测试软件中发生错误的功能模块,以完成对待测试软件的测试。可以根据待测试软件中各个功能模块的连接关系构建至少一个待测试模组,由于相同功能模块在不同待测试模组中参与的处理流程不同,使测试过程可以更全面覆盖功能模块的业务内容,同时,由于可以对至少一个待测试模组进行并行测试,大大提升了对待测试软件的测试效率。
图6是本申请实施例提供的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器。参照图6,电子设备700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本申请实施例提供的一种软件测试方法。
电子设备700还可以包括一个电源组件726被配置为执行电子设备700的电源管理,一个有线或无线网络接口750被配置为将电子设备700连接到网络,和一个输入输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种软件测试方法,其特征在于,所述方法包括:
将待测试软件划分为多个功能模块;
根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;
将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果;
根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,以完成对所述待测试软件的测试。
2.根据权利要求1所述的方法,其特征在于,所述将待测试软件划分为多个功能模块,包括:
获取所述待测试软件的源代码;
识别所述源代码中的方法函数,并以所述方法函数为单位将所述源代码划分为多个功能模块。
3.根据权利要求1所述的方法,其特征在于,所述根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组,包括:
构建描述所述多个功能模块的连接关系的关系图谱;
从所述关系图谱中获取确定多条连接至少两个功能模块的关系链路;
将所述关系链路中功能模块的连接顺序,将所述关系链路包含的功能模块进行组合,得到至少一个待测试模组。
4.根据权利要求3所述的方法,其特征在于,所述构建描述所述多个功能模块的连接关系的关系图谱,包括:
获取所述多个功能模块中各个待测试模组的输入数据类型和输出数据类型;
根据所述输入数据类型和所述输出数据类型,建立由所述多个功能模块作为节点构成的关系图谱。
5.根据权利要求1所述的方法,其特征在于,所述将待测试数据输入所述待测试模组,包括:
将所述待测试模组中位于起始端的功能模块确定为起始模块;
确定所述起始模块的输入数据类型;
从测试数据库中获取与所述起始模块的输入数据类型匹配的待测试数据;
将所述待测试数据输入所述起始模块。
6.根据权利要求1所述的方法,其特征在于,所述根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,包括:
从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
在所述模组输出结果与所述预设模组结果不匹配的情况下,获取所述待测试模组中各个功能模块的模块输出结果;
从所述待测试数据库中获取所述待测试数据对应于所述各个功能模块的预设模块结果;
将所述模块输出结果与对应的预设模块结果不一致的功能模块,确定为所述待测试软件中发生错误的功能模块。
7.根据权利要求1所述的方法,其特征在于,所述根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,包括:
从待测试数据库中获取所述待测试数据对应于所述待测试模组的预设模组结果;
在所述模组输出结果与所述预设模组结果不匹配的情况下,将所述待测试模组确定为待确认模组;
在多个待确认模组中存在相同功能模块的情况下,将所述相同功能模块确定为所述待测试软件中发生错误的功能模块。
8.根据权利要求2所述的方法,其特征在于,所述源代码包括前端代码和后端代码,所述识别所述源代码中的方法函数,并以所述方法函数为单位将所述源代码划分为多个功能模块,包括:
识别所述后端代码中的方法,并以所述方法函数为单位将所述后端代码划分为多个功能模块。
9.一种软件测试装置,其特征在于,所述装置包括:
划分模块,用于将待测试软件划分为多个功能模块;
组合模块,用于根据所述多个功能模块之间的连接关系,对所述多个功能模块中的部分功能模块或全部功能模块进行组合,得到至少一个待测试模组;
输入模块,用于将待测试数据输入所述待测试模组,并获取每个待测试模组的模组输出结果;
确定模块,用于根据所述模组输出结果确定所述待测试软件中发生错误的功能模块,以完成对所述待测试软件的测试。
10.一种电子设备,其特征在于,包括:处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210039583.3A CN114461520A (zh) | 2022-01-13 | 2022-01-13 | 一种软件测试方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210039583.3A CN114461520A (zh) | 2022-01-13 | 2022-01-13 | 一种软件测试方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461520A true CN114461520A (zh) | 2022-05-10 |
Family
ID=81408950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210039583.3A Pending CN114461520A (zh) | 2022-01-13 | 2022-01-13 | 一种软件测试方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461520A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115048315A (zh) * | 2022-07-06 | 2022-09-13 | 东软睿驰汽车技术(沈阳)有限公司 | 自动驾驶仿真测试结果的分析方法、装置和电子设备 |
-
2022
- 2022-01-13 CN CN202210039583.3A patent/CN114461520A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115048315A (zh) * | 2022-07-06 | 2022-09-13 | 东软睿驰汽车技术(沈阳)有限公司 | 自动驾驶仿真测试结果的分析方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9524226B2 (en) | System and method for display of software quality | |
US6185583B1 (en) | Parallel rule-based processing of forms | |
US20140344633A1 (en) | Path-sensitive analysis framework for bug checking | |
US20140325480A1 (en) | Software Regression Testing That Considers Historical Pass/Fail Events | |
Schroeder et al. | Generating expected results for automated black-box testing | |
US8661414B2 (en) | Method and system for testing an order management system | |
CN112433944A (zh) | 业务测试方法、装置、计算机设备和存储介质 | |
US20200327044A1 (en) | Method for constructing test scenario and information processing device | |
CN114461520A (zh) | 一种软件测试方法、装置及电子设备 | |
CN111679977A (zh) | 一种基于Jest的React项目单元测试方法、设备及存储介质 | |
CN111324540A (zh) | 一种接口测试方法及装置 | |
Sumalatha et al. | Uml based automated test case generation technique using activity-sequence diagram | |
CN113778878A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
Belli et al. | Test generation and minimization with" Basic" statecharts | |
CN111090591B (zh) | 测试方法及装置、电子设备和计算机可读存储介质 | |
CN110308904B (zh) | 多类型前端框架的聚合方法、装置和计算机设备 | |
CN109522206A (zh) | 异常数据定位方法、装置、计算机设备及存储介质 | |
CN112346994B (zh) | 一种测试信息关联方法、装置、计算机设备及存储介质 | |
CN113254350A (zh) | 一种Flink作业测试方法、装置、设备及存储介质 | |
CN114138659A (zh) | 一种测试案例处理方法及系统 | |
CN112419052A (zh) | 交易测试方法、装置、电子设备及可读存储介质 | |
CN111639028A (zh) | 一种对账规则脚本测试方法、装置、引擎及存储介质 | |
CN111427762A (zh) | 自动调用工具分析技术 | |
US20220350731A1 (en) | Method and system for test automation of a software system including multiple software services | |
CN111143221B (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 |