100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 关键语义测试方法 装置 存储介质及电子设备与流程

关键语义测试方法 装置 存储介质及电子设备与流程

时间:2019-12-01 15:29:44

相关推荐

关键语义测试方法 装置 存储介质及电子设备与流程

本公开涉及计算机技术领域,具体涉及一种关键语义测试方法、关键语义测试装置、计算机可读存储介质及电子设备。

背景技术:

随着信息技术的不断发展,被测系统呈现多元化的发展趋势。在很多项目的测试过程中,测试人员都是依据一些关键语义进行预期结果的检测。这个关键语义的检测、识别过程对于人来说,是很容易的,但是如何让自动化测试脚本或者框架来完成这个过程,目前还没有很好的解决途径。

因此,如何实现关键语义的自动化测试是目前亟待解决的问题。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现要素:

本公开的目的在于提供一种关键语义测试方法、关键语义测试装置、计算机可读存储介质及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的无法在自动化测试过程中实现关键语义测试的技术问题。

根据本公开的一个方面,提供一种关键语义测试方法,其特殊之处在于,包括:

根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组;

对所述待测试语句进行分词处理,得到包括一个或者多个分词单元的待测试数组;

判断所述关键语义数组是否为所述待测试数组的子集;

若所述关键语义数组是所述待测试数组的子集,则判定所述待测试语句包含所述预期关键语义。

在本公开的一种示例性实施方式中,所述判断所述关键语义数组是否为所述待测试数组的子集,包括:

获取所述关键语义数组中的全部语义关键词;

判断各个语义关键词是否包含在所述待测试数组中;

若全部语义关键词均包含在所述待测试数组中,则判定所述关键语义数组是所述待测试数组的子集。

在本公开的一种示例性实施方式中,所述判断各个语义关键词是否包含在所述待测试数组中,包括:

循环遍历所述待测试数组中的分词单元,逐一判断所述待测试数组中是否存在与所述语义关键词相同的分词单元;

若所述待测试数组中存在与所述语义关键词相同的分词单元,则判定所述语义关键词包含在所述待测试数组中。

在本公开的一种示例性实施方式中,所述判断各个语义关键词是否包含在所述待测试数组中,包括:

根据预设排序规则对所述待测试数组中的分词单元进行排序;

使用二分查找的方法,逐一判断所述待测试数组中是否存在与所述语义关键词相同的分词单元;

若所述待测试数组中存在与所述语义关键词相同的分词单元,则判定所述语义关键词包含在所述待测试数组中。

在本公开的一种示例性实施方式中,所述根据预设排序规则对所述待测试数组中的分词单元进行排序,包括:

按照预设编码格式获取所述待测试数组中各个分词单元的编码;

根据所述编码对所述待测试数组中的各个分词单元进行排序。

在本公开的一种示例性实施方式中,所述预设编码格式为美国信息交换标准代码。

在本公开的一种示例性实施方式中,所述判断各个语义关键词是否包含在所述待测试数组中,包括:

创建与所述待测试数组中的各个分词单元一一对应的虚拟测试桶;

逐一判断所述关键语义数组中的各个语义关键词是否落入所述虚拟测试桶中;

统计落入所述虚拟测试桶中的语义关键词的数量;

若所述数量大于或者等于所述关键语义数组的长度,则判定全部语义关键词均包含在所述待测试数组中。

在本公开的一种示例性实施方式中,所述根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组,包括:

并对所述预期关键语义进行分词处理,得到包括一个或者多个语义关键词的关键语义数组。

根据本公开的一个方面,提供一种关键语义测试装置,其特殊之处在于,包括:

第一获取模块,被配置为根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组;

第二获取模块,被配置为对所述待测试语句进行分词处理,得到包括一个或者多个分词单元的待测试数组;

判断模块,被配置为判断所述关键语义数组是否为所述待测试数组的子集;

判定模块,被配置为若所述关键语义数组是所述待测试数组的子集,则判定所述待测试语句包含所述预期关键语义。

根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特殊之处在于,所述计算机程序被处理器执行时实现以上任一所述的关键语义测试方法。

根据本公开的一个方面,提供一种电子设备,其特殊之处在于,包括处理器和存储器;其中,存储器用于存储所述处理器的可执行指令,所述处理器被配置为经由执行所述可执行指令来执行以上任一所述的关键语义测试方法。

本公开实施例所提供的关键语义测试方法,通过将预期关键语义转换为关键语义数组,并且将待测试语句转换为待测试数组,可以利用两个数组之间的比较来反映预期关键语义与待测试语句的关系,从而将原本复杂的语义测试和分析转化为简单的数组对比,不仅可以提高语义测试的准确率和效率,而且可以减少人工参与,扩大自动化测试的覆盖范围。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出本公开一种示例性实施方式中关键语义测试方法的步骤流程图。

图2示意性示出本公开另一示例性实施方式中关键语义测试方法的部分步骤流程图。

图3示意性示出本公开另一示例性实施方式中关键语义测试方法的部分步骤流程图。

图4示意性示出本公开另一示例性实施方式中关键语义测试方法的部分步骤流程图。

图5示意性示出本公开另一示例性实施方式中关键语义测试方法的部分步骤流程图。

图6示意性示出本公开一种示例性实施方式中关键语义测试方法在一应用场景下的流程框图。

图7示意性示出本公开一种示例性实施方式中关键语义测试装置的组成框图。

图8示意性示出本公开另一示例性实施方式中关键语义测试装置的部分组成框图。

图9示意性示出本公开另一示例性实施方式中关键语义测试装置的部分组成框图。

图10示意性示出本公开另一示例性实施方式中关键语义测试装置的部分组成框图。

图11示意性示出本公开另一示例性实施方式中关键语义测试装置的部分组成框图。

图12示意性示出本公开示例性实施方式中一种程序产品的示意图。

图13示意性示出本公开示例性实施方式中一种电子设备的模块示意图。

具体实施方式

现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施例使得本公开将更加全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

本公开的示例性实施方式中首先提供一种关键语义测试方法,该方法主要可以应用于语义测试、语义匹配、语法分析、自然语言处理、人工智能测试或者其他自动化测试的预期值检测中,另外也可以应用于其他一些相同或者相近的技术领域中,本公开对此不做特殊限定。

参考图1所示,本示例性实施方式提供的关键语义测试方法主要可以包括以下步骤:

步骤s110.根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组。

本步骤首先根据预期关键语义得到一个与之相对应的关键语义数组,该关键语义数组中包括有一个或者多个语义关键词。其中,预期关键语义用于反映相关测试对象的内在含义,尤其是可以反映测试对象中所包含的实质性信息。预期关键语义可以由用户根据需要进行人为指定,也可以由相关测试系统按照预定设计结合测试用例的输入进行分析处理后得出,另外也可以通过其他任意途径直接获取得到,本示例性实施方式对此不做特殊限定。

步骤s120.对待测试语句进行分词处理,得到包括一个或者多个分词单元的待测试数组。

由步骤s110得到的关键语义数组可以视为一种测试工具,而本步骤则将获取该测试工具的测试对象,即待测试数组。获取待测试数组的方式可以是先获取待测试语句,然后对待测试语句进行分词处理以得到待测试数组,待测试数组中包括由分词处理获得的一个或者多个分词单元。举例而言,待测试语句可以是由一些词、词组或者短语有序排列而构成的具有一定长度的文本,本步骤通过对待测试语句进行分词处理后可以得到其中基本的组成要素,即分词单元。其中,对待测试语句进行的分词处理可以采用字符串匹配分词算法,例如正向最大匹配法、逆向最大匹配法、双向最大匹配法等等。另外,本步骤中的分词处理也可以采用诸如hmm、crf、svm等机器学习算法、神经网络算法或者其他任意的分词算法,本示例性实施方式对此不做特殊限定。使用不同的分词算法,得到的分词结果也将不尽相同,本步骤可以采用固定的分词算法进行分词处理以得到相对统一的分词结果,另外也可以针对不同待测试语句的自身特点选择不同的分词算法,本示例性实施方式对此亦不做特殊限定。

步骤s130.判断关键语义数组是否为待测试数组的子集。

完成相关数组的获取后,本步骤将对由步骤s110中得到的关键语义数组以及由步骤s120中得到的待测试数组之间的关系做出判断,关键语义数组与待测试数组之间的关系可以直接反映出预期关键语义与待测试语句之间的关系。本步骤具体是判断关键语义数组是否为待测试数组的子集。关键语义数组是待测试数组的子集可以包括两种情况,一种是关键语义数组与待测试数组中的元素完全相同;另一种则是待测试数组中的元素数量多于关键语义数组中的元素数量,并且针对关键语义数组中的每个元素,都可以在待测试数组中找到相同的元素。

步骤s140.若关键语义数组是待测试数组的子集,则判定待测试语句包含预期关键语义。

如果步骤s130中的判断结果是:关键语义数组是待测试数组的子集,那么可以认为待测试语句涵盖了预期关键语义中的全部要素,亦即可以判定待测试语句包含预期关键语义。而如果步骤s130的判断结果是:关键语义数组不是待测试数组的子集,那么可以认为待测试语句中缺少预期关键语义的部分或者全部要素,因此便可以判定待测试语句没有完全包含预期关键语义。

本示例性实施方式通过将预期关键语义转换为关键语义数组,并且将待测试语句转换为待测试数组,可以利用两个数组之间的比较来反映预期关键语义与待测试语句的关系,从而将原本复杂的语义测试和分析转化为简单的数组对比,不仅可以提高语义测试的准确率和效率,而且可以减少人工参与,扩大自动化测试的覆盖范围。

参考图2所示,在以上示例性实施方式的基础上,步骤s130.判断关键语义数组是否为待测试数组的子集,主要可以包括以下步骤:

步骤s231.获取关键语义数组中的全部语义关键词。

为了对关键语义数组与待测试数组之间的关系做出判断,本步骤首先获取关键语义数组中的各个元素,即获取关键语义数组中的全部语义关键词。

步骤s232.判断各个语义关键词是否包含在待测试数组中。

由步骤s231获取到语义关键词后,本步骤将判断各个语义关键词是否包含在待测试数组中,亦即判断待测试数组中是否包含全部的语义关键词。

步骤s233.若全部语义关键词均包含在待测试数组中,则判定关键语义数组是待测试数组的子集。

根据步骤s232的判断结果,如果由步骤s231获取到的全部的语义关键词均包含在待测试数组中,那么可以判定关键语义数组是待测试数组的子集。

本示例性实施方式通过对关键语义数组内的语义关键词与待测试数组之间的关系做出判断,从而根据全部语义关键词的判断结果得到关键语义数组与待测试数组之间的关系。除了本示例性实施方式提供的判断方法以外,也可以采用其他任意的方式。例如,可以首先对待测试数组中的分词单元做重复性检测并删除其中的重复项,然后将关键语义数组并入待测试数组中,针对合并后的数组再次进行重复性检测,如果检出重复项的数量等于关键语义数组中的元素数量,那么可以判定关键语义数组是待测试数组的子集,而如果检出重复项的数量小于关键语义数组中的元素数量,那么可以判定关键语义数组不是待测试数组的子集。

参考图3所示,在以上示例性实施方式的基础上,步骤s232.判断各个语义关键词是否包含在待测试数组中,主要可以包括以下步骤:

步骤s3321.循环遍历待测试数组中的分词单元,逐一判断待测试数组中是否存在与语义关键词相同的分词单元。

针对各个语义关键词,本步骤对待测试数组中的分词单元进行循环遍历,逐一判断各个语义关键词是否包含在待测试数组中,即判断待测试数组中是否存在与语义关键词相同的分词单元。

步骤s3322.若待测试数组中存在与语义关键词相同的分词单元,则判定语义关键词包含在待测试数组中。

根据步骤s3321的判断结果,如果待测试数组中存在与某个语义关键词相同的分词单元,那么可以判定该语义关键词包含在待测试数组中。

本示例性实施方式利用循环遍历的方式对各个语义关键词是否包含在待测试数组中进行判断,对于关键语义数组中的每个语义关键词都需要对待测试数组中的全部分词单元进行一次遍历查找,具有判断准确性高的优点,特别适合于待测试数组中分词单元数量较少的情况。

参考图4所示,在本公开的另一示例性实施方式中,步骤s232.判断各个语义关键词是否包含在待测试数组中,可以包括以下步骤:

步骤s4321.根据预设排序规则对待测试数组中的分词单元进行排序。

本步骤首先对待测试数组进行预处理,即根据预设排序规则对待测试数组中的分词单元进行排序。排序的步骤又可以包括:按照预设编码格式获取待测试数组中各个分词单元的编码,然后根据编码对待测试数组中的各个分词单元进行排序,排序的方式可以是升序,也可以是降序。其中预设编码格式可以是美国信息交换标准代码(americanstandardcodeforinformationinterchange,简称ascii),另外也可以是ansi、gbk、gb2312、utf-8、gb18030或者unicode等其他任意的编码格式。

步骤s4322.使用二分查找的方法,逐一判断待测试数组中是否存在与语义关键词相同的分词单元。

由步骤s4321完成分词单元的排序后,本步骤将使用二分查找的方法逐一判断待测试数组中是否存在与各个语义关键词相同的分词单元。举例而言,假设步骤s4321中采用升序的方式对分词单元进行排序,那么本步骤首先获得在该排序中位于中间位置的分词单元,然后判断一个语义关键词是否与该分词单元相同(例如判断该语义关键词的编码是否与位于中间位置的分词单元的编码相同),如果不相同,那么该语义关键词的编码可能大于也可能小于该位于中间位置的分词单元的编码。如果该语义关键词的编码大于该位于中间位置的分词单元的编码,则可以以位于中间位置的分词单元为分界,在整个分词单元序列的后半部分子序列继续采用二分查找的方法进行判断。而如果该语义关键词的编码小于该位于中间位置的分词单元的编码,则可以在整个分词单元序列的前半部分子序列继续采用二分查找的方法进行判断。不断重复这一过程,直至找到与该语义关键词相同的分词单元,或者子序列已无法再次二分。

步骤s4323.若待测试数组中存在与语义关键词相同的分词单元,则判定语义关键词包含在待测试数组中。

通过步骤s4322的查找和判断,如果待测试数组中存在与某一语义关键词相同的分词单元,则可以判定该语义关键词包含在待测试数组中。

本示例性实施方式采用二分查找的方式对各个语义关键词是否包含在待测试数组中做出判断,这种方式可以大幅度减少判断次数,提高测试效率,特别适合于待测试数组中分词单元数量较多的情况。

参考图5所示,在本公开的另一示例性实施方式中,步骤s232.判断各个语义关键词是否包含在待测试数组中,可以包括以下步骤:

步骤s5321.创建与待测试数组中的各个分词单元一一对应的虚拟测试桶。

本步骤根据待测试数组中的各个分词单元创建一系列虚拟测试桶,每一个虚拟测试桶即对应于一个分词单元。例如待测试数组中包括有20个分词单元,那么本步骤便相应地创建20个虚拟测试桶。

步骤s5322.逐一判断关键语义数组中的各个语义关键词是否落入虚拟测试桶中。

完成虚拟测试桶的创建后,本步骤将把关键语义数组中的各个语义关键词逐一与虚拟测试桶进行匹配判断,如果某一语义关键词与一虚拟测试桶能够完全匹配,那么便将该语义关键词放入至相应的虚拟测试桶中,亦即可以判定该语义关键词落入相应的虚拟测试桶中。

步骤s5323.统计落入虚拟测试桶中的语义关键词的数量。

由步骤s5322对关键语义数组中全部的语义关键词逐一进行判断后,本步骤将统计最终落入虚拟测试桶中的语义关键词的数量。本步骤中进行的统计过程与步骤s5322中进行的判断过程可以同步进行,例如可以利用一计数器进行计数,每当步骤s5322判定一个语义关键词落入至一个虚拟测试桶中,计数器便加一。当步骤s5322对全部的语义关键词均完成判断后,计数器的计数值即为落入虚拟测试桶中的语义关键词的数量。

步骤s5324.若数量大于或者等于关键语义数组的长度,则判定全部语义关键词均包含在待测试数组中。

本步骤将根据步骤s5323统计的结果得出结论,如果由步骤s5323统计得到的数量大于或者等于关键语义数组的长度,那么便可以判定全部语义关键词均包含在待测试数组中。其中,关键语义数组的长度即为关键语义数组中包含的语义关键词的数量。

本示例性实施方式采用虚拟测试桶的方式对语义关键词与分词单元的匹配关系进行数量统计,这种简单计数的方式有助于简化测试过程,特别适合计算机进行自动化执行。其中,在判断各个语义关键词是否落入至各个虚拟测试桶中时,可以采用如以上实施例中所提供的循环遍历或者二分查找的方法,另外也可以采用其他任意的判断方法,本示例性实施方式对此不做特殊限定。

在以上任意一项示例性实施方式的基础上,步骤s110.根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组,可以包括:对预期关键语义进行分词处理,得到包括一个或者多个语义关键词的关键语义数组。预期关键语义可能是由若干关键词组合构成的词组或者短语,为了提高语义测试的准确性,本示例性实施方式对预期关键语义进行分词处理以得到关键语义数组。其中,对语义关键语义进行分词处理时所使用的分词算法可以与步骤s120中对待测试数组进行分词处理时所使用的分词算法相同。另外,在保证分词结果基本一致的情况下,步骤s110和步骤s120也可以使用不同的分词算法,以适应关键语义数组和待测试数组的自身特点。

下面结合一具体应用场景对本公开示例性实施方式中的关键语义测试方法进行说明。该语义测试方法的核心思想是桶查找算法,该算法的实现方式是:假设存在一个数组a[]和语句b,其中数组a[]即为本公开示例性实施方式中根据预期关键语义得到的关键语义数组,语句b即为本公开示例性实施方式中的待测试语句,该算法的目标是判断语句b中是否出现了数组a[]中的全部语义关键词。首先对语句b进行分词处理得到数组b’[],数组b’[]即为本公开示例性实施方式中的待测试数组,数组b’[]中的每一个词是一个桶。然后将数组a[]中的每一个元素放入数组b’的桶中,如果有完全匹配的可以放入的桶,那么匹配计数器的计数值count就加一;而如果没有可以放入的桶,就匹配数组a[]中的下一个语义关键词。直到数组a[]的全部语义关键词都和数组b’[]中的桶做过一次匹配后结束。如果匹配计数器的最终计数值count和数组a[]的长度相等,那么说明语句b中存在全部的预期关键语义,否则语句b中没有完全出现预期关键语义。

例如在某次测试过程中,需要判断[“项目”,“需求”,“评审”]这个关键语义数组是否出现在系统返回结果中。那么,数组a[]=[“项目”,“需求”,“评审”]。

在测试过程中,某次的系统返回值为语句b=“项目测试开发和管理系统的需求规格书名数的评审纪要如下,请查看附件。”。

参考图6所示,针对数组a[]和语句b的关键语义测试过程如下:

1、对关键语义数组a[]按照ascii码升序排序得到数组a[]。

2、对语句b进行分词得到数组b’[]=[“项目”,“测试”,“开发”,“和”,“管理系统”,“的”,“需求”,“规格”,“书”,“名数”,“的”,“评审”,“纪要”,“如下”,“,”“请”,“查看”,“附件”,“。”]。

3、对数组b’[]按照ascii码升序排列得到数组b’[]。

4、取得数组a[]的第i个语义关键词(初始值i=0),按照二分查找(也称为折半查找)的方法查找是否出现在了数组b’[]中;如果出现了,匹配计数器的计数值count加上1,依次循环,直到遍历完成数组a[]的全部元素后结束。经过查找和判断后,最终计数值count=3。

5、判断计数值count与数组a[]的长度相等,因此可以判定此次被检测语句b中存在全部预期关键语义。

需要说明的是,虽然以上示例性实施方式以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或者必须执行全部的步骤才能实现期望的结果。附加地或者备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

在本公开的示例性实施方式中,还提供一种关键语义测试装置。参考图7所示,关键语义测试装置700主要可以包括:第一获取模块710、第二获取模块720、判断模块730和判定模块740。

其中,第一获取模块710被配置为根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组,该关键语义数组中包括有一个或者多个语义关键词。预期关键语义用于反映相关测试对象的内在含义,尤其是可以反映测试对象中所包含的实质性信息。预期关键语义可以由用户根据需要进行人为指定,也可以由相关测试系统按照预定设计结合测试用例的输入进行分析处理后得出,另外也可以通过其他任意途径直接获取得到,本示例性实施方式对此不做特殊限定。

第二获取模块720被配置为对待测试语句进行分词处理,得到包括一个或者多个分词单元的待测试数组。获取待测试数组的方式可以是先获取待测试语句,然后对待测试语句进行分词处理以得到待测试数组,待测试数组中包括由分词处理获得的一个或者多个分词单元。举例而言,待测试语句可以是由一些词、词组或者短语有序排列而构成的具有一定长度的文本,第二获取模块720通过对待测试语句进行分词处理后可以得到其中基本的组成要素,即分词单元。其中,对待测试语句进行的分词处理可以采用字符串匹配分词算法,例如正向最大匹配法、逆向最大匹配法、双向最大匹配法等等。另外,第二获取模块720进行的分词处理也可以采用诸如hmm、crf、svm等机器学习算法、神经网络算法或者其他任意的分词算法,本示例性实施方式对此不做特殊限定。使用不同的分词算法,得到的分词结果也将不尽相同,第二获取模块720可以采用固定的分词算法进行分词处理以得到相对统一的分词结果,另外也可以针对不同待测试语句的自身特点选择不同的分词算法,本示例性实施方式对此亦不做特殊限定。

判断模块730被配置为判断关键语义数组是否为待测试数组的子集。判断模块730将对由第一获取模块710得到的关键语义数组以及由第二获取模块720得到的待测试数组之间的关系做出判断,关键语义数组与待测试数组之间的关系可以直接反映出预期关键语义与待测试语句之间的关系。判断模块730具体是判断关键语义数组是否为待测试数组的子集。关键语义数组是待测试数组的子集可以包括两种情况,一种是关键语义数组与待测试数组中的元素完全相同;另一种则是待测试数组中的元素数量多于关键语义数组中的元素数量,并且针对关键语义数组中的每个元素,都可以在待测试数组中找到相同的元素。

判定模块740被配置为若关键语义数组是待测试数组的子集,则判定待测试语句包含预期关键语义。如果判断模块730的判断结果是:关键语义数组是待测试数组的子集,那么可以认为待测试语句涵盖了预期关键语义中的全部要素,亦即可以判定待测试语句包含预期关键语义。而如果判断模块730的判断结果是:关键语义数组不是待测试数组的子集,那么可以认为待测试语句中缺少预期关键语义的部分或者全部要素,因此便可以判定待测试语句没有完全包含预期关键语义。

本示例性实施方式提供的关键语义测试装置700通过将预期关键语义转换为关键语义数组,并且将待测试语句转换为待测试数组,可以利用两个数组之间的比较来反映预期关键语义与待测试语句的关系,从而将原本复杂的语义测试和分析转化为简单的数组对比,不仅可以提高语义测试的准确率和效率,而且可以减少人工参与,扩大自动化测试的覆盖范围。

参考图8所示,在以上示例性实施方式的基础上,判断模块730可以进一步包括:获取子模块831、判断子模块832和判定子模块833。

其中,获取子模块831被配置为获取关键语义数组中的全部语义关键词。为了对关键语义数组与待测试数组之间的关系做出判断,获取子模块831可以获取关键语义数组中的各个元素,即获取关键语义数组中的全部语义关键词。

判断子模块832被配置为判断各个语义关键词是否包含在待测试数组中,亦即判断待测试数组中是否包含全部的语义关键词。

判定子模块833被配置为若全部语义关键词均包含在待测试数组中,则判定关键语义数组是待测试数组的子集。

本示例性实施方式提供的判断模块730通过对关键语义数组内的语义关键词与待测试数组之间的关系做出判断,从而根据全部语义关键词的判断结果得到关键语义数组与待测试数组之间的关系。

参考图9所示,在以上示例性实施方式的基础上,判断子模块832主要可以包括:遍历子模块9321和第一判定子模块9322。

遍历子模块9321被配置为循环遍历待测试数组中的分词单元,逐一判断待测试数组中是否存在与语义关键词相同的分词单元。

针对各个语义关键词,遍历子模块9321对待测试数组中的分词单元进行循环遍历,逐一判断各个语义关键词是否包含在待测试数组中,即判断待测试数组中是否存在与语义关键词相同的分词单元。

第一判定子模块9322被配置为若待测试数组中存在与语义关键词相同的分词单元,则判定语义关键词包含在待测试数组中。

根据遍历子模块9321的判断结果,如果待测试数组中存在与某个语义关键词相同的分词单元,那么第一判定子模块9322可以判定该语义关键词包含在待测试数组中。

在本示例性实施方式提供的关键语义测试装置中,判断子模块832利用循环遍历的方式对各个语义关键词是否包含在待测试数组中进行判断,对于关键语义数组中的每个语义关键词都需要对待测试数组中的全部分词单元进行一次遍历查找,具有判断准确性高的优点,特别适合于待测试数组中分词单元数量较少的情况。

参考图10所示,在本公开的另一示例性实施方式中,判断子模块832可以包括:排序子模块10321、查找子模块10322和第二判定子模块10323。

排序子模块10321被配置为根据预设排序规则对待测试数组中的分词单元进行排序。

排序子模块10321首先对待测试数组进行预处理,即根据预设排序规则对待测试数组中的分词单元进行排序。排序的方法又可以包括:按照预设编码格式获取待测试数组中各个分词单元的编码,然后根据编码对待测试数组中的各个分词单元进行排序,排序的方式可以是升序,也可以是降序。其中预设编码格式可以是美国信息交换标准代码(americanstandardcodeforinformationinterchange,简称ascii),另外也可以是ansi、gbk、gb2312、utf-8、gb18030或者unicode等其他任意的编码格式。

查找子模块10322被配置为使用二分查找的方法,逐一判断待测试数组中是否存在与语义关键词相同的分词单元。

由排序子模块10321完成分词单元的排序后,查找子模块10322将使用二分查找的方法逐一判断待测试数组中是否存在与各个语义关键词相同的分词单元。举例而言,假设排序子模块10321采用升序的方式对分词单元进行排序,那么查找子模块10322首先获得在该排序中位于中间位置的分词单元,然后判断一个语义关键词是否与该分词单元相同(例如判断该语义关键词的编码是否与位于中间位置的分词单元的编码相同),如果不相同,那么该语义关键词的编码可能大于也可能小于该位于中间位置的分词单元的编码。如果该语义关键词的编码大于该位于中间位置的分词单元的编码,则可以以位于中间位置的分词单元为分界,在整个分词单元序列的后半部分子序列继续采用二分查找的方法进行判断。而如果该语义关键词的编码小于该位于中间位置的分词单元的编码,则可以在整个分词单元序列的前半部分子序列继续采用二分查找的方法进行判断。不断重复这一过程,直至找到与该语义关键词相同的分词单元,或者子序列已无法再次二分。

第二判定子模块10323被配置为若待测试数组中存在与语义关键词相同的分词单元,则判定语义关键词包含在待测试数组中。

通过查找子模块10322的查找和判断,如果待测试数组中存在与某一语义关键词相同的分词单元,则可以由第二判定子模块10323判定该语义关键词包含在待测试数组中。

在本示例性实施方式提供的关键语义测试装置中,判断子模块832采用二分查找的方式对各个语义关键词是否包含在待测试数组中做出判断,这种方式可以大幅度减少判断次数,提高测试效率,特别适合于待测试数组中分词单元数量较多的情况。

参考图11所示,在本公开的另一示例性实施方式中,判断子模块832可以包括:创建子模块11321、落入子模块11322、统计子模块11323和第三判定子模块11324。

创建子模块11321被配置为创建与待测试数组中的各个分词单元一一对应的虚拟测试桶。

创建子模块11321根据待测试数组中的各个分词单元创建一系列虚拟测试桶,每一个虚拟测试桶即对应于一个分词单元。例如待测试数组中包括有20个分词单元,那么创建子模块11321便相应地创建20个虚拟测试桶。

落入子模块11322被配置为逐一判断关键语义数组中的各个语义关键词是否落入虚拟测试桶中。

由创建子模块11321完成虚拟测试桶的创建后,落入子模块11322将把关键语义数组中的各个语义关键词逐一与虚拟测试桶进行匹配判断,如果某一语义关键词与一虚拟测试桶能够完全匹配,那么便将该语义关键词放入至相应的虚拟测试桶中,亦即可以判定该语义关键词落入相应的虚拟测试桶中。

统计子模块11323被配置为统计落入虚拟测试桶中的语义关键词的数量。

由落入子模块11322对关键语义数组中全部的语义关键词逐一进行判断后,统计子模块11323将统计最终落入虚拟测试桶中的语义关键词的数量。统计子模块11323进行的统计过程与落入子模块11322进行的判断过程可以同步进行,例如可以利用一计数器进行计数,每当落入子模块11322判定一个语义关键词落入至一个虚拟测试桶中,统计子模块11323便控制计数器加一。当落入子模块11322对全部的语义关键词均完成判断后,统计子模块11323中的计数器的计数值即为落入虚拟测试桶中的语义关键词的数量。

第三判定子模块11324被配置为若数量大于或者等于关键语义数组的长度,则判定全部语义关键词均包含在待测试数组中。

第三判定子模块11324将根据统计子模块11323统计的结果得出结论,如果由统计子模块11323统计得到的数量大于或者等于关键语义数组的长度,那么便可以判定全部语义关键词均包含在待测试数组中。其中,关键语义数组的长度即为关键语义数组中包含的语义关键词的数量。

在本示例性实施方式提供的关键语义测试装置中,判断子模块832采用虚拟测试桶的方式对语义关键词与分词单元的匹配关系进行数量统计,这种简单计数的方式有助于简化测试过程,特别适合计算机进行自动化执行。其中,在判断各个语义关键词是否落入至各个虚拟测试桶中时,可以采用如以上实施例中所提供的循环遍历或者二分查找的方法,另外也可以采用其他任意的判断方法,本示例性实施方式对此不做特殊限定。应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

在本公开的示例性实施方式中,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可实现本公开的上述的关键语义测试方法。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码;该程序产品可以存储在一个非易失性存储介质(可以是cd-rom、u盘或者移动硬盘等)中或网络上;当所述程序产品在一台计算设备(可以是个人计算机、服务器、终端装置或者网络设备等)上运行时,所述程序代码用于使所述计算设备执行本公开中上述各示例性实施例中的方法步骤。

参见图12所示,根据本公开的实施方式的用于实现上述方法的程序产品1200,其可以采用便携式紧凑磁盘只读存储器(cd-rom)并包括程序代码,并可以在计算设备(例如个人计算机、服务器、终端装置或者网络设备等)上运行。然而,本公开的程序产品不限于此。在本示例性实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或者多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。

可读存储介质例如可以为但不限于电、磁、光、电磁、红外线或半导体的系统、装置或器件、或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件或者上述的任意合适的组合。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任意可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如c语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户计算设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络(包括局域网(lan)或广域网(wan)等)连接到用户计算设备;或者,可以连接到外部计算设备,例如利用因特网服务提供商来通过因特网连接。

在本公开的示例性实施方式中,还提供一种电子设备,所述电子设备包括至少一个处理器以及至少一个用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为经由执行所述可执行指令来执行本公开中上述各示例性实施例中的方法步骤。

下面结合图13对本示例性实施方式中的电子设备1300进行描述。电子设备1300仅仅为一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

参见图13所示,电子设备1300以通用计算设备的形式表现。电子设备1300的组件可以包括但不限于:至少一个处理单元1310、至少一个存储单元1320、连接不同系统组件(包括处理单元1310和存储单元1320)的总线1330、显示单元1340。

其中,存储单元1320存储有程序代码,所述程序代码可以被处理单元1310执行,使得处理单元1310执行本公开中上述各示例性实施例中的方法步骤。

存储单元1320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元1321(ram)和/或高速缓存存储单元1322,还可以进一步包括只读存储单元1323(rom)。

存储单元1320还可以包括具有一组(至少一个)程序模块1325的程序/实用工具1324,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用各种总线结构中的任意总线结构的局域总线。

电子设备1300也可以与一个或多个外部设备1400(例如键盘、指向设备、蓝牙设备等)通信,还可以与一个或者多个使得用户可以与该电子设备1300交互的设备通信,和/或与使得该电子设备1300能与一个或多个其他计算设备进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入/输出(i/o)接口1350进行。并且,电子设备1300还可以通过网络适配器1360与一个或者多个网络(例如局域网(lan)、广域网(wan)和/或公共网络,例如因特网)通信。如图13所示,网络适配器1360可以通过总线1330与电子设备1300的其他模块通信。应当明白,尽管图中未示出,可以结合电子设备1300使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

本领域技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

上述所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中,如有可能,各实施例中所讨论的特征是可互换的。在上面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组件、材料等。在其它情况下,不详细示出或描述公知结构、材料或者操作以避免模糊本公开的各方面。

技术特征:

1.一种关键语义测试方法,其特征在于,包括:

根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组;

对待测试语句进行分词处理,得到包括一个或者多个分词单元的待测试数组;

判断所述关键语义数组是否为所述待测试数组的子集;

若所述关键语义数组是所述待测试数组的子集,则判定所述待测试语句包含所述预期关键语义。

2.根据权利要求1所述的关键语义测试方法,其特征在于,所述判断所述关键语义数组是否为所述待测试数组的子集,包括:

获取所述关键语义数组中的全部语义关键词;

判断各个语义关键词是否包含在所述待测试数组中;

若全部语义关键词均包含在所述待测试数组中,则判定所述关键语义数组是所述待测试数组的子集。

3.根据权利要求2所述的关键语义测试方法,其特征在于,所述判断各个语义关键词是否包含在所述待测试数组中,包括:

循环遍历所述待测试数组中的分词单元,逐一判断所述待测试数组中是否存在与所述语义关键词相同的分词单元;

若所述待测试数组中存在与所述语义关键词相同的分词单元,则判定所述语义关键词包含在所述待测试数组中。

4.根据权利要求2所述的关键语义测试方法,其特征在于,所述判断各个语义关键词是否包含在所述待测试数组中,包括:

根据预设排序规则对所述待测试数组中的分词单元进行排序;

使用二分查找的方法,逐一判断所述待测试数组中是否存在与所述语义关键词相同的分词单元;

若所述待测试数组中存在与所述语义关键词相同的分词单元,则判定所述语义关键词包含在所述待测试数组中。

5.根据权利要求4所述的关键语义测试方法,其特征在于,所述根据预设排序规则对所述待测试数组中的分词单元进行排序,包括:

按照预设编码格式获取所述待测试数组中各个分词单元的编码;

根据所述编码对所述待测试数组中的各个分词单元进行排序。

6.根据权利要求5所述的关键语义测试方法,其特征在于,所述预设编码格式为美国信息交换标准代码。

7.根据权利要求2所述的关键语义测试方法,其特征在于,所述判断各个语义关键词是否包含在所述待测试数组中,包括:

创建与所述待测试数组中的各个分词单元一一对应的虚拟测试桶;

逐一判断所述关键语义数组中的各个语义关键词是否落入所述虚拟测试桶中;

统计落入所述虚拟测试桶中的语义关键词的数量;

若所述数量大于或者等于所述关键语义数组的长度,则判定全部语义关键词均包含在所述待测试数组中。

8.根据权利要求1至7中任意一项所述的关键语义测试方法,其特征在于,所述根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组,包括:

对预期关键语义进行分词处理,得到包括一个或者多个语义关键词的关键语义数组。

9.一种关键语义测试装置,其特征在于,包括:

第一获取模块,被配置为根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组;

第二获取模块,被配置为对所述待测试语句进行分词处理,得到包括一个或者多个分词单元的待测试数组;

判断模块,被配置为判断所述关键语义数组是否为所述待测试数组的子集;

判定模块,被配置为若所述关键语义数组是所述待测试数组的子集,则判定所述待测试语句包含所述预期关键语义。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8中任意一项所述的关键语义测试方法。

11.一种电子设备,其特征在于,包括:

处理器;

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器被配置为经由执行所述可执行指令来执行权利要求1-8中任意一项所述的关键语义测试方法。

技术总结

本公开涉及一种关键语义测试方法、关键语义测试装置、计算机可读存储介质及电子设备。本公开实施例提供的关键语义测试方法包括:根据预期关键语义得到包括一个或者多个语义关键词的关键语义数组;对所述待测试语句进行分词处理,得到包括一个或者多个分词单元的待测试数组;判断所述关键语义数组是否为所述待测试数组的子集;若所述关键语义数组是所述待测试数组的子集,则判定所述待测试语句包含所述预期关键语义。本公开实施例所提供的关键语义测试方法不仅可以提高语义测试的准确率和效率,而且可以减少人工参与,扩大自动化测试的覆盖范围。

技术研发人员:陈磊;周敬岩;贾瑞卿;牛锋华;王浩;刘军

受保护的技术使用者:北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司

技术研发日:.08.08

技术公布日:.02.21

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。