CN113127350B - 基于交互关系的组合测试数据生成方法和相关设备 - Google Patents
基于交互关系的组合测试数据生成方法和相关设备 Download PDFInfo
- Publication number
- CN113127350B CN113127350B CN202110425592.1A CN202110425592A CN113127350B CN 113127350 B CN113127350 B CN 113127350B CN 202110425592 A CN202110425592 A CN 202110425592A CN 113127350 B CN113127350 B CN 113127350B
- Authority
- CN
- China
- Prior art keywords
- parameter
- initial coverage
- test data
- initial
- matrix
- 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
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/3676—Test management for coverage analysis
-
- 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
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
技术领域
本申请涉及组合测试技术领域,特别涉及一种基于交互关系的组合测试数据生成方法和相关设备。
背景技术
DCS(Distributed Control System,分布式控制系统)系统采用基于组件式的软件开发方法进行开发,由一系列已经开发好的基础组件搭建而成,通过将基础组件接收到的不同输入数据与输入状态,与其内部参数进行逻辑运算之后产生相应输出信号,从而控制相关设备工作,保证反应堆安全可靠运行。
但由于DCS系统所含的基础组件不仅数量庞大,而且不同组件在运行过程中,参与其运行的参数以及它们之间相互作用往往不同,将传统基于贪心算法的组合测试数据生成方法应用于实际系统测试时,其组合覆盖标准通常靠测试人员按经验选定。但在很多软件系统中,不同参数间所存在的交互关系往往千差万别,对之一概而论会带来测试数据冗余、检错能力降低等一系列问题。
发明内容
本申请的主要目的为提供一种基于交互关系的组合测试数据生成方法和相关设备,旨在解决现有组合测试数据生成方法生成的测试数据检错能力降低、冗余测试数据多的弊端。
为实现上述目的,本申请提供了一种基于交互关系的组合测试数据生成方法,包括:
获取待测组件的若干个交互关系集、组件参数集和参数取值集;
通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵;
对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集。
进一步的,所述通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵的步骤,包括:
使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
进一步的,所述将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列的步骤之后,包括:
按照所述交互关系集合序列中交互关系集的排序,依次将各所述交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各所述交互关系集分别对应的未覆盖集合。
进一步的,所述对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集的步骤,包括:
在所述初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵,所述当前待扩展交互关系集为所述交互关系集合序列中除所述第一交互关系集之外的交互关系集;
根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的第一未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,包括:
若所述当前待扩展交互关系集与所述初始覆盖矩阵存在交集参数,则对所述初始覆盖矩阵进行遍历,获取所述当前待扩展交互关系集在所述初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合;
对所述第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合;
以所述未赋值项对应的参数为基准,使用所述第二组合中的参数取值取代所述初始覆盖矩阵中的未赋值项,并在取代后删除所述第一未覆盖集合中所述未赋值项对应的第二组合;
循环迭代上述取代步骤,直至所述第一未覆盖集合中所述第二组合为空,得到赋值后的初始覆盖矩阵;
判断所述赋值后的初始覆盖矩阵是否存在未赋值项;
若所述赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
若所述当前待扩展交互关系集的全部参数存在于所述初始覆盖矩阵中,且所述初始覆盖矩阵中仍存在未赋值项的参数,则判断所述第一未覆盖集合所包含的组合是否被所述初始覆盖矩阵全部覆盖;
若所述第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据所述未覆盖组合的数量在所述初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到所述组合测试数据集;
若所述第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则根据所述具有预设值的参数项在所述初始覆盖矩阵中筛选对应的第二参数,并将所述第一未覆盖集合中与所述第二参数对应的参数取值替换所述初始覆盖矩阵中所述第二参数对应行中具有预设值的参数取值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
若所述当前待扩展交互关系集与所述初始覆盖矩阵不存在交集参数,则将所述当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到所述扩展后的初始覆盖矩阵中增加的参数列,得到所述组合测试数据集。
本申请还提供了一种基于交互关系的组合测试数据生成装置,包括:
获取模块,用于获取待测组件的若干个交互关系集、组件参数集和参数取值集;
生成模块,用于通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵;
扩展模块,用于对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集。
进一步的,所述生成模块,包括:
计算单元,用于使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
排列单元,用于将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
生成单元,用于调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
进一步的,所述生成模块,还包括:
运算单元,用于按照所述交互关系集合序列中交互关系集的排序,依次将各所述交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各所述交互关系集分别对应的未覆盖集合。
进一步的,所述扩展模块,包括:
扩展单元,用于在所述初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵,所述当前待扩展交互关系集为所述交互关系集合序列中除所述第一交互关系集之外的交互关系集;
赋值单元,用于根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的第一未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集。
进一步的,所述赋值单元,包括:
获取子单元,用于若所述当前待扩展交互关系集与所述初始覆盖矩阵存在交集参数,则对所述初始覆盖矩阵进行遍历,获取所述当前待扩展交互关系集在所述初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合;
筛选子单元,用于对所述第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合;
第一替换子单元,用于以所述未赋值项对应的参数为基准,使用所述第二组合中的参数取值取代所述初始覆盖矩阵中的未赋值项,并在取代后删除所述第一未覆盖集合中所述未赋值项对应的第二组合;
循环子单元,用于循环迭代上述取代步骤,直至所述第一未覆盖集合中所述第二组合为空,得到赋值后的初始覆盖矩阵;
第一判断子单元,用于判断所述赋值后的初始覆盖矩阵是否存在未赋值项;
赋值子单元,用于若所述赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到所述组合测试数据集。
进一步的,所述赋值单元,还包括:
第二判断子单元,用于若所述当前待扩展交互关系集的全部参数存在于所述初始覆盖矩阵中,且所述初始覆盖矩阵中仍存在未赋值项的参数,则判断所述第一未覆盖集合所包含的组合是否被所述初始覆盖矩阵全部覆盖;
补全子单元,用于若所述第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据所述未覆盖组合的数量在所述初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到所述组合测试数据集;
第二替换子单元,用于若所述第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则根据所述具有预设值的参数项在所述初始覆盖矩阵中筛选对应的第二参数,并将所述第一未覆盖集合中与所述第二参数对应的参数取值替换所述初始覆盖矩阵中所述第二参数对应行中具有预设值的参数取值,得到所述组合测试数据集。
进一步的,所述赋值单元,还包括:
添加子单元,用于若所述当前待扩展交互关系集与所述初始覆盖矩阵不存在交集参数,则将所述当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到所述扩展后的初始覆盖矩阵中增加的参数列,得到所述组合测试数据集。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请中提供的一种基于交互关系的组合测试数据生成方法和相关设备,系统首先获取待测组件的若干个交互关系集、组件参数集和参数取值集,然后通过覆盖需求度量函数计算得到各个交互关系集分别包含的交集参数数量,并结合组件参数集和参数取值集生成初始覆盖矩阵。最后,系统对初始覆盖矩阵进行扩展、补全,得到所需的组合测试数据集。本申请中,系统依照待测组件的参数间实际存在的交互关系,并在水平扩展过程对参数取值选择策略进行改进,从而使得最终生成的组合测试数据集能够规避传统组合测试方法生成测试数据集时存在的检错能力低、冗余测试数据多的弊端。
附图说明
图1是本申请一实施例中基于交互关系的组合测试数据生成方法的步骤示意图;
图2是本申请一实施例中基于交互关系的组合测试数据生成装置的整体结构框图;
图3是本申请一实施例的计算机设备的结构示意框图。
本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例中提供了一种基于交互关系的组合测试数据生成方法,包括:
S1:获取待测组件的若干个交互关系集、组件参数集和参数取值集;
S2:通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵;
S3:对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集。
本实施例中,系统从待测系统组件开发文档获取待测组件以及待测组件所包含的若干个交互关系集、组件参数集和参数取值集,以待测系统为DCS系统为例进行说明,组件是DCS系统中实现数据和信号处理的算法单元,只能通过组件接口与外界交互。其接口的具体组成可被视为一个三元组:<输入信号,输出信号,组件参数>。其中,输入信号可以由一个n元向量(x1,x2,...,xn)来表示,代表组件的输入数。每一个分量xi可视为一个二元组:<value,state>,“value”代表输入信号的具体取值,其来源情况分为两种:a.外部传感器数据输入,b.系统内部组件间信号传递。“state”代表“value”的状态,有真、假两种状态。输出信号可以由一个m元向量(y1,y2,...,yn)来表示,代表组件的输出数据。每一个分量yi和输入的分量一样也通过一个二元组<value,state>表示。组件参数是一个k元向量(p1,p2,…,pk),代表组件所含的内部参数集合,此参数集内的所含参数值通过对输入信号进行相应逻辑运算,决定组件的工作模式。系统通过解析待测系统项目文件中的.xscade文件来得出待测系统所含待测组件的相关信息,这些信息包括:交互关系集、组件参数集、组件取值集。交互关系集是指:组件中同时存在两个或两个以上的参数共同决定组件的运行状态,则称这些参数之间存在交互关系;组件参数集包含接口输入输出信号、输入输出信号状态以及组件参数;组件取值集是接口输入输出信号取值、输入输出信号状态以及组件参数三者的具体取值所构成的集合。
系统首先使用覆盖需求度量函数求出各个交互关系集分别包含的交集参数数量,然后将各个交互关系集按照各自对应的交集参数数量的大小进行非递增排序,形成交互关系集合序列。系统调取交互关系集合序列中排序为首位的第一交互关系集,并将第一交互关系集包含的若干个第一参数和第一参数对应的参数取值,即第一参数取值进行嵌套循环,根据每次循环迭代中第一参数的可能值生成初始覆盖矩阵。其中,第一交互关系集包含的各个第一参数从组建参数集中获取,第一参数对应的第一参数取值则从参数取值集中获取。并且,系统在生成交互关系集合序列后,按照各个交互关系集在交互关系集合序列中的排序,依次将各个交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各个交互关系集分别对应的未覆盖集合。
系统对初始覆盖矩阵进行扩展、补全,得到所需的组合测试数据集。具体地,系统在初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵。其中,当前待扩展交互关系集为交互关系集合序列中除去排序首位的第一交互关系集后的任意一个交互关系集。系统再根据当前待扩展交互关系集与初始覆盖矩阵之间的交集参数,以及当前待扩展交互关系集对应的未覆盖集合(下面将该未覆盖集合命名未第一未覆盖集合),为扩展后的初始覆盖矩阵中新增的参数列进行赋值,补全后得到组合测试数据集。
本实施例中,系统依照待测组件的参数间实际存在的交互关系,并在水平扩展过程对参数取值选择策略进行改进,从而使得最终生成的组合测试数据集能够规避传统组合测试方法生成测试数据集时存在的检错能力低、冗余测试数据多的弊端。
进一步的,所述通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵的步骤,包括:
S201:使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
S202:将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
S203:调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
本实施例中,系统使用覆盖需求度量函数分别对各个交互关系集进行计算,得到各个交互关系集分别包含的交集参数数量(即交互关系集包含的参数的数量)。其中,覆盖需求度量函数为:其中,|ri|代表某个交互关系集,pi代表该交互关系集中的某个参数,系统通过该函数可以计算得到交互关系集包含的交集参数数量。系统将各个交互关系集按照各自对应的交集参数数量的大小进行非递增排序,完成排序后的所有交互关系集组成交互关系集合序列。系统从交互关系集合序列中筛选出排序首位的交互关系集作为第一交互关系集,然后从组件参数集中获取第一交互关系集包含的各个第一参数,以及从参数取值集中获取各个第一参数对应的第一参数取值。系统将第一交互关系集中包含的第一参数和第一参数取值进行嵌套循环,并根据每次循环迭代中第一交互关系集包含的各个第一参数的可能值审查初始覆盖矩阵。
进一步的,所述将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列的步骤之后,包括:
S204:按照所述交互关系集合序列中交互关系集的排序,依次将各所述交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各所述交互关系集分别对应的未覆盖集合。
本实施例中,系统优先处理与其他交互关系集的参数间存在交互关系最多的关系集,按照各个交互关系集在交互关系集合序列中的排序(即交互关系集合序列中排序越靠前的交互关系集与其他交互关系集的参数间存在的交互关系越多,具体通过上述求得的交集参数数量可知),依次将各个交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算(即在单个的交互关系集中,以参数为对照基准,其所含的某个参数取值与该交互关系集中的其他参数取值进行笛卡尔积运算,该交互关系集的每个参数取值均进行笛卡尔积运算),从而得到各个交互关系集分别对应改的未覆盖集合。
进一步的,所述对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集的步骤,包括:
S301:在所述初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵,所述当前待扩展交互关系集为所述交互关系集合序列中除所述第一交互关系集之外的交互关系集;
S302:根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的第一未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集。
本实施例中,系统在初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵。其中,当前待扩展交互关系集为交互关系集合序列中除第一交互关系集之外的交互关系集;优选的,在每次扩展处理时,按照各个交互关系集在交互关系集合序列中的排序进行依次选择。系统根据当前待扩展交互关系集与初始覆盖矩阵之间的交集参数,以及当前待扩展交互关系集对应的第一未覆盖集合,为扩展后的初始覆盖矩阵中新增的参数列进行复制,得到组合测试数据集。具体地,如果当前待扩展交互关系集与初始覆盖矩阵存在交集参数,则系统对初始覆盖矩阵进行遍历,获取当前待扩展交互关系集在初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合。然后对第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合。系统以未赋值项对应的参数为基准,使用第二组合中的参数取值取代初始覆盖矩阵中的未赋值项,并在取代后删除第一未覆盖集合中未赋值项对应的第二组合。系统循环迭代上述取代步骤,直至第一未覆盖集合中第二组合为空,得到赋值后的初始覆盖矩阵。系统判断赋值后的初始覆盖矩阵是否存在未赋值项,如果赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到组合测试数据集。
如果当前待扩展交互关系集的全部参数存在于初始覆盖矩阵中,且初始覆盖矩阵中仍存在未赋值项的参数,则系统判断第一未覆盖集合所包含的组合是否被初始覆盖矩阵全部覆盖。若第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据未覆盖组合的数量在初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到组合测试数据集。若第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则系统根据具有预设值的参数项在初始覆盖矩阵中筛选对应的第二参数,并将第一未覆盖集合中与第二参数对应的参数取值替换初始覆盖矩阵中第二参数对应行中具有预设值的参数取值,得到组合测试数据集。
如果当前待扩展交互关系集与初始覆盖矩阵不存在交集参数,则系统将当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到扩展后的初始覆盖矩阵中增加的参数列,得到组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,包括:
S3021:若所述当前待扩展交互关系集与所述初始覆盖矩阵存在交集参数,则对所述初始覆盖矩阵进行遍历,获取所述当前待扩展交互关系集在所述初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合;
S3022:对所述第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合;
S3023:以所述未赋值项对应的参数为基准,使用所述第二组合中的参数取值取代所述初始覆盖矩阵中的未赋值项,并在取代后删除所述第一未覆盖集合中所述未赋值项对应的第二组合;
S3024:循环迭代上述取代步骤,直至所述第一未覆盖集合中所述第二组合为空,得到赋值后的初始覆盖矩阵;
S3025:判断所述赋值后的初始覆盖矩阵是否存在未赋值项;
S3026:若所述赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到所述组合测试数据集。
本实施例中,若当前待扩展交互关系集和初始覆盖矩阵存在交集参数,则系统对初始覆盖矩阵进行遍历,按照初始覆盖矩阵的行顺序,依次获取当前待扩展交互关系集在初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合。系统对当前待扩展交互关系集对应的第一未覆盖集合进行遍历,筛选出包含未赋值项的t元组,即第二组合。然后以未赋值项对应的参数为根据,将第二组合中的参数取值放入初始覆盖矩阵中对应的未赋值项,取代未赋值项,并在每次取代后删除第一未覆盖集合中未赋值项对应的第二组合。系统循环迭代上述初始覆盖矩阵中未赋值项的取代步骤,直至第一未覆盖集合中第二组合为空,从而得到赋值后的初始覆盖矩阵。系统判断赋值后的初始覆盖矩阵是否仍存在未赋值项,如果仍存在未赋值项,则将当前存在的未赋值项对应改的参数赋值为预设值,该预设值为“*”,得到组合测试数据集。
如果初始覆盖矩阵中不存在未赋值项且第一未覆盖集合当前不为空,则将未覆盖组合(未覆盖组合为第一未覆盖集合中没有被初始覆盖矩阵覆盖的参数组合)抽取到第一未覆盖集合中,并根据未覆盖组合的数量在初始覆盖矩阵的末尾新增对应数量的参数行,然后在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
S3027:若所述当前待扩展交互关系集的全部参数存在于所述初始覆盖矩阵中,且所述初始覆盖矩阵中仍存在未赋值项的参数,则判断所述第一未覆盖集合所包含的组合是否被所述初始覆盖矩阵全部覆盖;
S3028:若所述第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据所述未覆盖组合的数量在所述初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到所述组合测试数据集;
S3029:若所述第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则根据所述具有预设值的参数项在所述初始覆盖矩阵中筛选对应的第二参数,并将所述第一未覆盖集合中与所述第二参数对应的参数取值替换所述初始覆盖矩阵中所述第二参数对应行中具有预设值的参数取值,得到所述组合测试数据集。
本实施例中,如果当前待扩展交互关系集的全部参数存在于初始覆盖矩阵中,且初始覆盖矩阵中仍存在未赋值项的参数,系统判断第一未覆盖集合所包含的组合是否被初始覆盖矩阵全部覆盖。如果第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则系统根据未覆盖组合的数量在初始覆盖矩阵的末尾新增相同数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,完成垂直扩展,得到组合测试数据。如果第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,系统则根据具有预设值的参数项在初始覆盖矩阵中筛选对应的第二参数,然后使用第一未覆盖集合中与第二参数对应的参数取值替换初始覆盖矩阵中第二参数对应行中具有预设值的参数取值,得到组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
S30210:若所述当前待扩展交互关系集与所述初始覆盖矩阵不存在交集参数,则将所述当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到所述扩展后的初始覆盖矩阵中增加的参数列,得到所述组合测试数据集。
本实施例中,如果当前待扩展交互关系集与初始覆盖矩阵不存在交集参数,系统直接将当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到扩展后的初始覆盖矩阵中增加的参数列上,完成对初始覆盖矩阵的扩展和补全,得到最终的组合测试数据集。
参照图2,本申请一实施例中还提供了一种基于交互关系的组合测试数据生成装置,包括:
获取模块1,用于获取待测组件的若干个交互关系集、组件参数集和参数取值集;
生成模块2,用于通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵;
扩展模块3,用于对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集。
进一步的,所述生成模块2,包括:
计算单元,用于使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
排列单元,用于将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
生成单元,用于调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
进一步的,所述生成模块2,还包括:
运算单元,用于按照所述交互关系集合序列中交互关系集的排序,依次将各所述交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各所述交互关系集分别对应的未覆盖集合。
进一步的,所述扩展模块3,包括:
扩展单元,用于在所述初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵,所述当前待扩展交互关系集为所述交互关系集合序列中除所述第一交互关系集之外的交互关系集;
赋值单元,用于根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的第一未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集。
进一步的,所述赋值单元,包括:
获取子单元,用于若所述当前待扩展交互关系集与所述初始覆盖矩阵存在交集参数,则对所述初始覆盖矩阵进行遍历,获取所述当前待扩展交互关系集在所述初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合;
筛选子单元,用于对所述第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合;
第一替换子单元,用于以所述未赋值项对应的参数为基准,使用所述第二组合中的参数取值取代所述初始覆盖矩阵中的未赋值项,并在取代后删除所述第一未覆盖集合中所述未赋值项对应的第二组合;
循环子单元,用于循环迭代上述取代步骤,直至所述第一未覆盖集合中所述第二组合为空,得到赋值后的初始覆盖矩阵;
第一判断子单元,用于判断所述赋值后的初始覆盖矩阵是否存在未赋值项;
赋值子单元,用于若所述赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到所述组合测试数据集。
进一步的,所述赋值单元,还包括:
第二判断子单元,用于若所述当前待扩展交互关系集的全部参数存在于所述初始覆盖矩阵中,且所述初始覆盖矩阵中仍存在未赋值项的参数,则判断所述第一未覆盖集合所包含的组合是否被所述初始覆盖矩阵全部覆盖;
补全子单元,用于若所述第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据所述未覆盖组合的数量在所述初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到所述组合测试数据集;
第二替换子单元,用于若所述第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则根据所述具有预设值的参数项在所述初始覆盖矩阵中筛选对应的第二参数,并将所述第一未覆盖集合中与所述第二参数对应的参数取值替换所述初始覆盖矩阵中所述第二参数对应行中具有预设值的参数取值,得到所述组合测试数据集。
进一步的,所述赋值单元,还包括:
添加子单元,用于若所述当前待扩展交互关系集与所述初始覆盖矩阵不存在交集参数,则将所述当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到所述扩展后的初始覆盖矩阵中增加的参数列,得到所述组合测试数据集。
本实施例中,组合测试数据生成装置中各模块、单元用于对应执行与上述基于交互关系的组合测试数据生成方法中的各个步骤,其具体实施过程在此不做详述。
本实施例提供的一种基于交互关系的组合测试数据生成装置,系统首先获取待测组件的若干个交互关系集、组件参数集和参数取值集,然后通过覆盖需求度量函数计算得到各个交互关系集分别包含的交集参数数量,并结合组件参数集和参数取值集生成初始覆盖矩阵。最后,系统对初始覆盖矩阵进行扩展、补全,得到所需的组合测试数据集。本申请中,系统依照待测组件的参数间实际存在的交互关系,并在水平扩展过程对参数取值选择策略进行改进,从而使得最终生成的组合测试数据集能够规避传统组合测试方法生成测试数据集时存在的检错能力低、冗余测试数据多的弊端。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储交互关系集等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于交互关系的组合测试数据生成方法。
上述处理器执行上述基于交互关系的组合测试数据生成方法的步骤:
S1:获取待测组件的若干个交互关系集、组件参数集和参数取值集;
S2:通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵;
S3:对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集。
进一步的,所述通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵的步骤,包括:
S201:使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
S202:将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
S203:调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
进一步的,所述将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列的步骤之后,包括:
S204:按照所述交互关系集合序列中交互关系集的排序,依次将各所述交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各所述交互关系集分别对应的未覆盖集合。
进一步的,所述对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集的步骤,包括:
S301:在所述初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵,所述当前待扩展交互关系集为所述交互关系集合序列中除所述第一交互关系集之外的交互关系集;
S302:根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的第一未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,包括:
S3021:若所述当前待扩展交互关系集与所述初始覆盖矩阵存在交集参数,则对所述初始覆盖矩阵进行遍历,获取所述当前待扩展交互关系集在所述初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合;
S3022:对所述第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合;
S3023:以所述未赋值项对应的参数为基准,使用所述第二组合中的参数取值取代所述初始覆盖矩阵中的未赋值项,并在取代后删除所述第一未覆盖集合中所述未赋值项对应的第二组合;
S3024:循环迭代上述取代步骤,直至所述第一未覆盖集合中所述第二组合为空,得到赋值后的初始覆盖矩阵;
S3025:判断所述赋值后的初始覆盖矩阵是否存在未赋值项;
S3026:若所述赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
S3027:若所述当前待扩展交互关系集的全部参数存在于所述初始覆盖矩阵中,且所述初始覆盖矩阵中仍存在未赋值项的参数,则判断所述第一未覆盖集合所包含的组合是否被所述初始覆盖矩阵全部覆盖;
S3028:若所述第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据所述未覆盖组合的数量在所述初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到所述组合测试数据集;
S3029:若所述第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则根据所述具有预设值的参数项在所述初始覆盖矩阵中筛选对应的第二参数,并将所述第一未覆盖集合中与所述第二参数对应的参数取值替换所述初始覆盖矩阵中所述第二参数对应行中具有预设值的参数取值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
S30210:若所述当前待扩展交互关系集与所述初始覆盖矩阵不存在交集参数,则将所述当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到所述扩展后的初始覆盖矩阵中增加的参数列,得到所述组合测试数据集。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种基于交互关系的组合测试数据生成方法,所述基于交互关系的组合测试数据生成方法具体为:
S1:获取待测组件的若干个交互关系集、组件参数集和参数取值集;
S2:通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵;
S3:对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集。
进一步的,所述通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵的步骤,包括:
S201:使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
S202:将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
S203:调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
进一步的,所述将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列的步骤之后,包括:
S204:按照所述交互关系集合序列中交互关系集的排序,依次将各所述交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各所述交互关系集分别对应的未覆盖集合。
进一步的,所述对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集的步骤,包括:
S301:在所述初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵,所述当前待扩展交互关系集为所述交互关系集合序列中除所述第一交互关系集之外的交互关系集;
S302:根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的第一未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,包括:
S3021:若所述当前待扩展交互关系集与所述初始覆盖矩阵存在交集参数,则对所述初始覆盖矩阵进行遍历,获取所述当前待扩展交互关系集在所述初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合;
S3022:对所述第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合;
S3023:以所述未赋值项对应的参数为基准,使用所述第二组合中的参数取值取代所述初始覆盖矩阵中的未赋值项,并在取代后删除所述第一未覆盖集合中所述未赋值项对应的第二组合;
S3024:循环迭代上述取代步骤,直至所述第一未覆盖集合中所述第二组合为空,得到赋值后的初始覆盖矩阵;
S3025:判断所述赋值后的初始覆盖矩阵是否存在未赋值项;
S3026:若所述赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
S3027:若所述当前待扩展交互关系集的全部参数存在于所述初始覆盖矩阵中,且所述初始覆盖矩阵中仍存在未赋值项的参数,则判断所述第一未覆盖集合所包含的组合是否被所述初始覆盖矩阵全部覆盖;
S3028:若所述第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据所述未覆盖组合的数量在所述初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到所述组合测试数据集;
S3029:若所述第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则根据所述具有预设值的参数项在所述初始覆盖矩阵中筛选对应的第二参数,并将所述第一未覆盖集合中与所述第二参数对应的参数取值替换所述初始覆盖矩阵中所述第二参数对应行中具有预设值的参数取值,得到所述组合测试数据集。
进一步的,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
S30210:若所述当前待扩展交互关系集与所述初始覆盖矩阵不存在交集参数,则将所述当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到所述扩展后的初始覆盖矩阵中增加的参数列,得到所述组合测试数据集。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、第一物体或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、第一物体或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、第一物体或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (9)
1.一种基于交互关系的组合测试数据生成方法,其特征在于,包括:
获取待测组件的若干个交互关系集、组件参数集和参数取值集;
通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵,其中,所述覆盖需求度量函数为:,表征所述交互关系集,pi表征所述交互关系集中的参数;
对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集;
所述通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵的步骤,包括:
使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
2.根据权利要求1所述的基于交互关系的组合测试数据生成方法,其特征在于,所述将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列的步骤之后,包括:
按照所述交互关系集合序列中交互关系集的排序,依次将各所述交互关系集所包含的各个参数取值在自身对应的集合内进行笛卡尔积运算,得到各所述交互关系集分别对应的未覆盖集合。
3.根据权利要求2所述的基于交互关系的组合测试数据生成方法,其特征在于,所述对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集的步骤,包括:
在所述初始覆盖矩阵中增加与当前待扩展交互关系集包含的参数数量相同的参数列,得到扩展后的初始覆盖矩阵,所述当前待扩展交互关系集为所述交互关系集合序列中除所述第一交互关系集之外的交互关系集;
根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的第一未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集。
4.根据权利要求3所述的基于交互关系的组合测试数据生成方法,其特征在于,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,包括:
S3021:若所述当前待扩展交互关系集与所述初始覆盖矩阵存在交集参数,则对所述初始覆盖矩阵进行遍历,获取所述当前待扩展交互关系集在所述初始覆盖矩阵中参数的未赋值项与已赋值项形成的第一组合;
S3022:对所述第一未覆盖集合进行遍历,筛选包含所述未赋值项的第二组合;
S3023:以所述未赋值项对应的参数为基准,使用所述第二组合中的参数取值取代所述初始覆盖矩阵中的未赋值项,并在取代后删除所述第一未覆盖集合中所述未赋值项对应的第二组合;
S3024:循环迭代步骤S3023,直至所述第一未覆盖集合中所述第二组合为空,得到赋值后的初始覆盖矩阵;
S3025:判断所述赋值后的初始覆盖矩阵是否存在未赋值项;
S3026:若所述赋值后的初始覆盖矩阵存在未赋值项,则将当前存在的未赋值项对应的参数赋值为预设值,得到所述组合测试数据集。
5.根据权利要求3所述的基于交互关系的组合测试数据生成方法,其特征在于,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
若所述当前待扩展交互关系集的全部参数存在于所述初始覆盖矩阵中,且所述初始覆盖矩阵中仍存在未赋值项的参数,则判断所述第一未覆盖集合所包含的组合是否被所述初始覆盖矩阵全部覆盖;
若所述第一未覆盖集合中存在未覆盖组合且不存在具有预设值的参数项,则根据所述未覆盖组合的数量在所述初始覆盖矩阵的末尾新增对应数量的参数行,并在新增的参数行写入对应的参数,以及为新增的参数行内的参数取值进行随机赋值,得到所述组合测试数据集;
若所述第一未覆盖集合中存在未覆盖组合且存在具有预设值的参数项,则根据所述具有预设值的参数项在所述初始覆盖矩阵中筛选对应的第二参数,并将所述第一未覆盖集合中与所述第二参数对应的参数取值替换所述初始覆盖矩阵中所述第二参数对应行中具有预设值的参数取值,得到所述组合测试数据集。
6.根据权利要求3所述的基于交互关系的组合测试数据生成方法,其特征在于,所述根据所述当前待扩展交互关系集与所述初始覆盖矩阵之间的交集参数,以及所述当前待扩展交互关系集对应的未覆盖集合,为所述扩展后的初始覆盖矩阵中新增的所述参数列进行赋值,得到所述组合测试数据集的步骤,还包括:
若所述当前待扩展交互关系集与所述初始覆盖矩阵不存在交集参数,则将所述当前待扩展交互关系集中的所有参数及参数取值形成的组合添加到所述扩展后的初始覆盖矩阵中增加的参数列,得到所述组合测试数据集。
7.一种基于交互关系的组合测试数据生成装置,其特征在于,包括:
获取模块,用于获取待测组件的若干个交互关系集、组件参数集和参数取值集;
生成模块,用于通过覆盖需求度量函数计算得到各所述交互关系集分别包含的交集参数数量,并结合所述组件参数集和所述参数取值集生成初始覆盖矩阵,其中,所述覆盖需求度量函数为:,表征所述交互关系集,pi表征所述交互关系集中的参数;
扩展模块,用于对所述初始覆盖矩阵进行扩展、补全,得到组合测试数据集;
所述生成模块,包括:
计算单元,用于使用所述覆盖需求度量函数计算得到各所述交互关系集分别包含的所述交集参数数量;
排列单元,用于将各所述交互关系集按照各自对应的交集参数数量的大小进行非递增排序,得到交互关系集合序列;
生成单元,用于调取所述交互关系集合序列中排序首位的第一交互关系集,并将所述第一交互关系集包含的第一参数和第一参数取值进行嵌套循环,根据每次循环迭代中所述第一交互关系集包含的第一参数的可能值生成所述初始覆盖矩阵,其中,所述第一交互关系集包含的第一参数从所述组件参数集中获取,所述第一参数取值从所述参数取值集中获取。
8.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110425592.1A CN113127350B (zh) | 2021-04-20 | 2021-04-20 | 基于交互关系的组合测试数据生成方法和相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110425592.1A CN113127350B (zh) | 2021-04-20 | 2021-04-20 | 基于交互关系的组合测试数据生成方法和相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127350A CN113127350A (zh) | 2021-07-16 |
CN113127350B true CN113127350B (zh) | 2022-07-01 |
Family
ID=76778168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110425592.1A Active CN113127350B (zh) | 2021-04-20 | 2021-04-20 | 基于交互关系的组合测试数据生成方法和相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127350B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855185A (zh) * | 2012-07-24 | 2013-01-02 | 河海大学 | 一种基于优先级的成对组合测试方法 |
CN104765690A (zh) * | 2015-04-22 | 2015-07-08 | 哈尔滨工业大学 | 基于模糊遗传算法的嵌入式软件测试数据生成方法 |
CN106598849A (zh) * | 2016-12-03 | 2017-04-26 | 浙江理工大学 | 一种基于ap‑pso算法的组合测试用例生成方法 |
CN108415841A (zh) * | 2018-03-19 | 2018-08-17 | 南京邮电大学 | 一种基于覆盖力度增量的组合测试用例优先级排序方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6577982B1 (en) * | 2001-01-30 | 2003-06-10 | Microsoft Corporation | Model-based testing via combinatorial designs |
US9858175B1 (en) * | 2016-09-28 | 2018-01-02 | Wipro Limited | Method and system for generation a valid set of test configurations for test scenarios |
CN106776351B (zh) * | 2017-03-09 | 2019-08-16 | 浙江理工大学 | 一种基于One-test-at-a-time策略的组合测试用例优先级排序方法 |
CN107766245B (zh) * | 2017-10-18 | 2020-12-15 | 浙江理工大学 | 基于ott策略的可变力度组合测试用例优先级在线排序方法 |
CN109902002B (zh) * | 2019-02-14 | 2020-06-02 | 浙江口碑网络技术有限公司 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
CN112416771B (zh) * | 2020-11-23 | 2023-06-30 | 北京计算机技术及应用研究所 | 一种任意强度组合测试用例生成方法 |
-
2021
- 2021-04-20 CN CN202110425592.1A patent/CN113127350B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855185A (zh) * | 2012-07-24 | 2013-01-02 | 河海大学 | 一种基于优先级的成对组合测试方法 |
CN104765690A (zh) * | 2015-04-22 | 2015-07-08 | 哈尔滨工业大学 | 基于模糊遗传算法的嵌入式软件测试数据生成方法 |
CN106598849A (zh) * | 2016-12-03 | 2017-04-26 | 浙江理工大学 | 一种基于ap‑pso算法的组合测试用例生成方法 |
CN108415841A (zh) * | 2018-03-19 | 2018-08-17 | 南京邮电大学 | 一种基于覆盖力度增量的组合测试用例优先级排序方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113127350A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902002B (zh) | 组合测试用例的生成方法及装置、存储介质、计算机设备 | |
CN110209652B (zh) | 数据表迁移方法、装置、计算机设备和存储介质 | |
CN109614309B (zh) | 比较测试结果的方法、装置、计算机设备以及存储介质 | |
CN110704312B (zh) | 压力测试的方法、装置、计算机设备和存储介质 | |
US11881278B2 (en) | Redundant circuit assigning method and device, apparatus and medium | |
US6499120B1 (en) | Usage of redundancy data for displaying failure bit maps for semiconductor devices | |
KR20220152566A (ko) | 가속 신경망에 대한 메모리 결함 맵 | |
WO2021196674A1 (zh) | 系统代码的测试方法、装置、计算机设备和存储介质 | |
US11169910B2 (en) | Probabilistic software testing via dynamic graphs | |
CN114265613B (zh) | 一种整车所有电控单元固件差分升级方法及系统 | |
CN117290236A (zh) | 软件测试方法、装置、计算机设备及计算机可读存储介质 | |
CN113127350B (zh) | 基于交互关系的组合测试数据生成方法和相关设备 | |
CN113407163B (zh) | 模块关联赋值方法、装置、计算机设备及可读存储介质 | |
CN117033170A (zh) | 测试任务分配方法、装置、设备、存储介质和程序产品 | |
CN114780325B (zh) | 一种PCIe设备检测方法及装置 | |
CN115576810A (zh) | 一种实时告警的自动化测试方法、系统、介质及计算装置 | |
CN114462859A (zh) | 工作流处理方法、装置、计算机设备和存储介质 | |
CN111736917A (zh) | 数据校验方法、装置、计算机设备和存储介质 | |
CN109032922B (zh) | 接口诊断方法、装置、设备和存储介质 | |
US7437612B1 (en) | Postmortem detection of owned mutual exclusion locks | |
CN110597223A (zh) | 核电站分布式控制系统通讯单元状态监控方法及相关产品 | |
CN109379640A (zh) | 基于链表方式的弹幕校验方法、装置、终端及存储介质 | |
CN116820558A (zh) | 应用程序开发方法、装置、设备、存储介质和程序产品 | |
CN115455048A (zh) | 一种多控多副本缓存方法、装置和计算机设备 | |
JP2018165908A (ja) | 情報処理装置、情報処理方法及びプログラム |
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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Liu Jie Inventor after: Zhou Jin Inventor after: Yang Xiaohua Inventor before: Liu Jie |