CN117252261A - 知识图谱的构建方法、电子设备及存储介质 - Google Patents

知识图谱的构建方法、电子设备及存储介质 Download PDF

Info

Publication number
CN117252261A
CN117252261A CN202311245542.0A CN202311245542A CN117252261A CN 117252261 A CN117252261 A CN 117252261A CN 202311245542 A CN202311245542 A CN 202311245542A CN 117252261 A CN117252261 A CN 117252261A
Authority
CN
China
Prior art keywords
test
entity
nodes
similarity
action
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
Application number
CN202311245542.0A
Other languages
English (en)
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.)
WeBank Co Ltd
Nanyang Technological University
Original Assignee
WeBank Co Ltd
Nanyang Technological University
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 WeBank Co Ltd, Nanyang Technological University filed Critical WeBank Co Ltd
Priority to CN202311245542.0A priority Critical patent/CN117252261A/zh
Publication of CN117252261A publication Critical patent/CN117252261A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • G06F40/295Named entity recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种知识图谱的构建方法、电子设备及存储介质。该知识图谱的构建方法包括:根据软件测试文本的依存句法树划分测试步骤,并标注所述测试步骤的语义角色;按照所述语义角色识别所述测试步骤中的测试动作和测试实体,并组合所述测试动作以及所述测试实体获得测试行为;获取所述软件测试文本的目标命名实体以及目标实体类别,并将所述目标命名实体以及所述目标实体类别嵌入到所述测试实体中,获得目标测试实体;根据所述目标测试实体、所述测试动作以及所述测试行为,生成知识图谱的节点,并根据所述知识图谱的节点构建软件测试的知识图谱。本申请能够提高用于软件测试的知识图谱的准确性。

Description

知识图谱的构建方法、电子设备及存储介质
技术领域
本申请涉及软件测试技术领域,具体涉及一种知识图谱的构建方法、电子设备及存储介质。
背景技术
随着金融银行***的日益复杂和功能的不断增加,软件测试人员需要花费大量的时间和精力来了解***的各个方面,为了便于进行软件测试,可以通过构建知识图谱来推荐相似的测试用例或生成新的测试用例、漏洞定位和问答。目前,构建知识图谱时基于主谓宾三元组的方法并且仅仅采用命名实体和与此对应的关系抽取,所构建的知识图谱无法准确反映软件测试中实体与其他属性之间的联系,导致所构建的知识图谱准确性差。
发明内容
本申请的一个目的在于提出一种知识图谱的构建方法、电子设备及存储介质,旨在提高所构建的用于软件测试的知识图谱的准确性。
根据本申请实施例的一方面,提供了一种知识图谱的构建方法,所述方法包括:
根据软件测试文本的依存句法树划分测试步骤,并标注所述测试步骤的语义角色;
按照所述语义角色识别所述测试步骤中的测试动作和测试实体,并组合所述测试动作以及所述测试实体获得测试行为;
获取所述软件测试文本的目标命名实体以及目标实体类别,并将所述目标命名实体以及所述目标实体类别嵌入到所述测试实体中,获得目标测试实体;
根据所述目标测试实体、所述测试动作以及所述测试行为,生成知识图谱的节点,并根据所述知识图谱的节点构建软件测试的知识图谱。
在一实施例中,根据所述知识图谱的节点构建软件测试的知识图谱,包括:
根据所述知识图谱的节点,提取测试实体节点、测试动作节点以及测试行为节点;
分别评估所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度;
根据所述实体相似度以及所述动作相似度,计算所述测试行为节点之间的行为相似度;
根据所述实体相似度、所述动作相似度以及所述行为相似度,识别所述测试实体节点、所述测试动作节点以及所述测试行为节点中匹配的节点;
对所述匹配的节点进行对齐,并根据对齐得到的对齐节点构建软件测试的知识图谱。
在一实施例中,分别评估所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度,包括:
分别将所述测试实体节点以及所述测试动作节点作为待评估节点;
获取所述待评估节点的等效词词典属性以及所述待评估节点的相反词词典属性;
将所述等效词词典属性转换为等效词词向量,并将所述相反词词典属性转换为相反词词向量;
根据所述等效词词向量与所述相反词词向量计算所述待评估节点之间的余弦相似度;
根据所述待评估节点之间的余弦相似度,确定所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度。
在一实施例中,根据所述待评估节点之间的余弦相似度,确定所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度,包括:
获取多个所述待评估节点的名称属性以及类别属性;
根据所述名称属性对应字符串之间的编辑操作次数,评估所述名称属性之间的名称相似度;
根据所述类别属性是否为相同属性,确定所述类别属性之间的类别相似度;
根据所述待评估节点的各属性在知识图谱中构成的子图的图结构相似度,进行线性加权得到子图相似度;
对所述余弦相似度、所述名称相似度、所述类别相似度以及所述子图相似度进行线性加权,获得所述待评估节点之间的相似度;
根据所述待评估节点之间的相似度,确定所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度。
在一实施例中,对所述匹配的节点进行对齐,并根据对齐得到的对齐节点构建软件测试的知识图谱,包括:
将所述匹配的节点的属性合并至所述知识图谱的节点中,并将所述匹配的节点与所述知识图谱的节点连接,得到对齐节点;
分别将测试用例、测试漏洞以及测试需求表示为所述知识图谱的参考测试节点;
根据所述参考测试节点与所述对齐节点的语义关系,建立知识图谱的边;
根据所述参考测试节点、所述对齐节点以及所述知识图谱的边,构建所述软件测试的知识图谱。
在一实施例中,根据软件测试文本的依存句法树划分测试步骤,包括:
提取所述软件测试文本的依存句法树中的子树;
根据所述子树中节点的标签,搜索所述子树中是否具有并列连词对应的节点;
若所述子树中具有并列连词对应的节点,则按照所述并列连词在所述子树中的位置,划分所述子树的叶节点,获得所述测试步骤;
若所述子树中不具有并列连词,则根据所述子树的叶节点获得所述测试步骤。
在一实施例中,标注所述测试步骤的语义角色,包括:
根据所述软件测试文本的特征,生成软件测试的参考语义角色以及所述参考语义角色对应的参考属性;所述参考属性包括所述测试动作的属性以及所述测试实体的属性;
按照所述参考语义角色以及所述参考属性,对所述测试步骤进行语义角色标注,获得所述测试步骤对应的语义角色。
在一实施例中,获取所述软件测试文本的目标命名实体以及目标实体类别,包括:
获取与所述软件测试文本所在业务场景相匹配的目标业务数据,并对所述目标业务数据进行特征工程分析,提取参考实体类别;
提取测试用例以及测试漏洞报告中的参考文本,按照所述参考实体类别标注所述参考文本中的参考实体;
将所述参考文本分割为词片段,并对所述软件测试文本添加开始标记以及结束标记,获得标记数据;
根据所述参考实体以及所述标记数据对深度学习模型进行训练,获得实体识别模型;
通过所述实体识别模型识别所述软件测试文本,获得所述目标命名实体以及所述目标实体类别。
根据本申请实施例的一方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现上述各种可选实现方式中提供的方法。
根据本申请实施例的一方面,提供了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述各种可选实现方式中提供的方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
在本申请提供的技术方案中,通过根据软件测试文本的依存句法树划分测试步骤,并标注测试步骤的语义角色,按照语义角色识别测试步骤中的测试动作以及测试实体,并组合测试动作和测试实体获得测试行为,从而准确表达测试行为的含义和指代,不仅能够从软件测试文本中提取出测试动作和测试实体从而可以用于反映出主谓宾三元组,还能够准确提取出以测试行为作为关键论元的信息组;并且,通过依存句法树和语义角色标注,以提取测试动作,测试实体,以及测试动作与测试实体之间的关联,生成测试行为作为关键论证,并通过测试步骤来体现测试过程和顺序;进一步地,将目标命名实体以及目标实体类别嵌入到测试实体中获得目标测试实体,能够提高了测试实体的准确性;在此基础上,根据目标测试实体、测试动作以及测试行为生成知识图谱的节点,并根据知识图谱的节点构建软件测试的知识图谱,该知识图谱能够更准确地捕捉软件测试文本中测试实体与测试动作之间的具体相关性,提高软件测试场景下该知识图谱用于标识软件测试时的完整性和准确性。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参考附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。
图1示出了根据本申请一个实施例的知识图谱的构建方法的流程示意图。
图2示出了根据本申请一个实施例的基于非结构化数据构建知识图谱的流程示意图。
图3示出了“进入在线支付***”的依存句法树的示意图。
图4示出了“客户没有生成理财险产品以外的数据"的依存句法树的示意图。
图5示出了“优化目标和付费模式"的依存句法树的依存句法树的示意图。
图6示出了“进行投资和进件和开户和核额申请"的依存句法树的示意图。
图7示出了根据本申请一实施例中测试步骤对应的子图的示意图。
图8示出了根据本申请一实施例中构建的知识图谱的应用场景的示意图。
图9示出了根据本申请一个实施例的电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些示例实施方式使得本申请的描述将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本申请的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本申请的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本申请的各方面变得模糊。
附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
在介绍本申请的实施例之前,首先对本申请实施例涉及的术语进行解释:
大语言模型(Large Language Model,LLM),是指规模庞大的语言模型,如GPT-3(Generative Pre-trained Transformer 3)等。这些模型具有数十亿甚至数百亿个参数,能够生成连贯的自然语言文本,并在多种自然语言处理任务上取得出色的表现。
知识图谱(Knowledge Mraph,KM),是一种用于组织、表示和存储知识的图形化结构。它是一个语义网络,由一组节点和连接节点的边组成,节点表示实体或概念,边表示实体之间的关系。
自然语言处理(Natural Language Processing,NLP),是人工智能领域的一个分支,涉及处理和理解人类语言的能力。它是关于计算机如何与人类语言进行交互、理解和生成自然语言文本的研究和应用领域。NLP的目标是使计算机能够理解、解析和处理人类语言,从而实现与人类之间的有效沟通和交互。NLP涉及多个任务和技术,包括文本分类、命名实体识别、语义角色标注、句法分析等。
开放信息抽取(PpenInformation Extraction,OpenIE),是一种自然语言处理技术,旨在从文本中提取出结构化的、可被计算机理解的信息,而无需预定义的模板或领域特定的知识。
命名实体识别(Named Entity Recognition,NER),旨在识别出文本中表示实体(人名,地名,组织机构等)的词语。
关系识别(Relation Extraction,RE),旨在识别出不同实体之间的关系。
语义角色标注(Semantic RoleLabeling,SRL),旨在识别出句子中不同词语的语义角色,如谓词、论元等,以此来深入理解句子的语义。语义角色标注与关系抽取有些类似,但是语义角色标注更加细粒度。它不仅识别出实体之间的关系,还会进一步为这些实体刻画角色和属性。
基于变换器的双向编码器表示(Bidirectional Encoder Representations fromTransformers,BERT)是一种自然语言处理中的预训练模型。BERT模型是利用Trans-former模型进行预训练的,其中Bidirectional(双向)表示它考虑了文本中的上下文信息,并在同一模型中预测文本中的所有单词、子词或符号。
RoBERTa是BERT模型的改进版本,是一种基于Transformer编码器的大型神经网络模型。RoBERTa基本使用和BERT相同的技术和设计,除去了一些BERT的限制和缺陷,包括增加了更多的序列长度和更多数据的变形、一些预处理选择的调整和细化、不使用BERT中掩码语言模型等。这些改进使得RoBERTa相较于BERT,能够更好地提取语言表示和文本语气的表述。
Neo4j是一个在工程和学术中常用到的图数据库,支持灵活和可扩展的图形存储、标准的查询语言Cypher、通过关系查询和联级删除技术快速读写和事务性访问等。
Neo4j的图数据科学(Graph Data Science,GDS)库,是一个用于图数据分析和机器学习的高效、灵活和可扩展的图分析引擎。本申请实施例可以使用GDS库来完成图嵌入和计算。
以下对本申请实施例的应用背景进行详细介绍:
金融银行***作为一种部署于计算机上的软件***,需要进行软件测试来确保正常运行。在进行软件测试时,可以借助知识图谱来表示软件测试中各种测试相关的信息之间的关系,比如用户需求、***设计和源代码更改,以及测试用例、测试缺陷和在测试过程中生成的日志之间的关系。构建出的知识图谱可以进一步用于推荐相似的测试用例或生成新的测试用例、漏洞定位和问答。该方法使得测试人员可以根据知识图谱上的关系快速定位到潜在的问题,大幅提高软件测试的效率和质量,以及显著减少测试时间,也可以为软件测试人员提供更多的价值。
在一些实现方式中,依赖于识别出的实体构建知识图谱。然而,采用此方式构建出的知识图谱在表达能力方面存在限制,无法准确和完整地表达具体的测试行为。具体而言,在软件测试过程中产生了大量异构性数据,包括用户和开发人员报告问题和解决方案的不同描述、一般描述性语言以及银行业务专业名词和程序语言专有名词的混合等。现有方法未能有效处理这些数据。
并且,软件测试文本通常是复杂的长文本,其中句子结构反映了重要的测试步骤等信息。在测试文档中通常会省略主语(默认为测试人员),同时使用大量动词来表示测试动作。尤其是在对多个测试文档进行分析和相似性比对时,这些动词对于具体的测试行为的指代同样甚至更为重要。如果只考虑主谓宾三元组的抽取,则会忽略测试步骤等重要信息,且只能反映显性关系,无法提取隐性关系。显性关系比如测试动作和其涉及的测试实体,隐性关系包括比如测试动作完成的条件和频率、方式等。
此外,在一些实现方式中,知识图谱基于规则构建,将知识表示为一系列规则并使用这些规则进行推理。这需要大量的领域知识输入和人工定义规则,且无法避免规则交叉和冲突的问题,不利于知识图谱的维护和升级。在处理复杂问题时,基于规则的方法可能会导致规则之间的交叉和冲突,因此需要进行一定的规则优化和重构。
为了解决上述问题,提出以下实施例对本申请的技术方案进行详细阐述。
图1示出了根据本申请一个实施例的知识图谱的构建方法的流程图,该方法包括:
步骤S10:根据软件测试文本的依存句法树划分测试步骤,并标注测试步骤的语义角色。
在本申请实施例中,执行主体是电子设备。软件测试文本是与软件测试相关的文本。软件测试文本比如软件测试中产生的软件漏洞报告中的文本、测试用例文档中的文本、测试需求文档中的文本以及金融银行***文档中的文本,金融银行***文档比如***介绍、功能模块操作指南。依存句法树是表示软件测试文本的句子中词语之间依存关系的树形结构,依存句法树用于描述句子每个词(节点)之间的依存关系(边),以及每个词的句法角色和语义关联。测试步骤是软件测试过程中执行的操作和验证步骤,可以用于检查软件的功能、性能、稳定性或其他质量属性是否符合预期要求。测试步骤用于确认***是否按照预期执行,并发现潜在的问题或缺陷。
在一实施例中,可以将非结构化数据的软件测试文本通过处理获得统一格式的数据形式的软件测试文本,如此可以使得便于对软件测试文本进行处理,并按照统一格式的软件测试文本中词语之间的语法关系生成软件测试文本的依存句法树,便于细化搜索测试步骤。
在一实施例中,软件测试文本中的一个句子对应一个依存句法树,而一个句子中可能包含一个或者多个测试步骤。可以通过识别出依存句法树中的步骤边界词,以该步骤边界词作为划分的边界,划分出测试步骤,如果没有识别出步骤边界词,则表明句子可能已经对应单一的测试步骤,不需要进行划分。步骤边界词可以是各种词,比如“然后”、“同时”等等,用于指示不同测试步骤之间的边界。通过依存句法树搜索出每个测试步骤,可以更精确地划分测试步骤,使得进一步基于该测试步骤所获的的知识图谱更精确表现软件测试的特征。
在一实施例中,标注测试步骤的语义角色,包括:获取定义的语义角色,语义角色比如:PREP(Prepositional Phrase)表示介词短语在句子中的语义角色,ARG0(Argument0):表示动词或谓词动词的主动者或施事者,ARG1(Argument 1):表示动词或谓词动词的受事者或客体,ARGM ADV可以表示测试动作的状态等等,按照获取的语义角色标注测试步骤中的语义角色。
在一实施例中,还可以对测试步骤中的动作、目标、参数、预期结果以及前置条件,进行语义角色标注。可以将语义角色通过标签或者注释的方式添加到测试步骤中。
在一实施例中,可以采用文本清洗和规范化技术手段,对原始的软件测试数据进行处理和转换,并进一步对处理和转换后的软件测试数据进行特征提取,从异构数据中提取出关键特征,获得关键的软件测试文本,根据该关键的软件测试文本构建依存句法树,并根据该依存句法树搜索测试步骤。从而可以针对非结构化的数据中提取出规范的,便于进行处理的软件测试文本,据此可以准确构建依存句法树并搜索测试步骤。
步骤S200:按照语义角色识别测试步骤中的测试动作和测试实体,并组合测试动作以及测试实体获得测试行为。
按照测试步骤中的语义角色,从测试步骤中识别测试动作以及测试实体,比如,测试步骤中文本的语义角色为PREP,则识别对应的属性为测试动作,语义角色为ARG0或者ARG1,则识别对应的属性为测试实体。组合测试动作以及测试实体指将测试动作以及测试实体构成一个整体作为测试行为,其具体数据形式在此不作限定。测试行为包括测试动作以及测试实体。
在一实施例中,测试步骤比如为“对输出的支付金额进行验证”,则按照语义角色识别测试步骤中的测试动作为:验证,输入;识别出的测试实体为:支付金额,那么通过组合获得测试行为包括:(测试动作1:验证;测试实体1:支付金额(输入的);测试动作2:输入;测试实体2:支付金额),从而可以提取出测试行为作为关键论元的信息组,并且可以提取主谓宾三元组,其中,该测试步骤的主语是空值,谓语是进行验证,宾语是支付金额。采用此方式,准确表达测试行为的含义和指代。
通过分析依存句法树和语义角色标注,以提取测试动作、测试实体以及测试动作与测试实体之间的关联,生成测试行为作为关键论证,并保留测试步骤来体现测试过程和顺序。如此,本实施例能够更准确地捕捉软件测试文本中测试实体与测试动作之间的具体相关性,通过后续构建知识图谱能够提高知识图谱对表示测试场景的完整性。
步骤S300:获取软件测试文本的目标命名实体以及目标实体类别,并将目标命名实体以及目标实体类别嵌入到测试实体中,获得目标测试实体。
目标命名实体是软件测试文本在所在业务领域中对应的命名实体,目标实体类别是软件测试文本在所在业务领域中对应实体的实体类别。
在一实施例中,软件测试文本是银行业务领域中软件***相关的测试文本,在银行业务领域,目标命名实体指代银行业务领域中一些具体有特定意义的词,比如理财险、XX银行等等,而目标实体类别比如理财险所在的目标实体类别为“产品”,XX银行所在的目标实体类别为“机构组织”。
在一实施例中,将目标命名实体以及目标实体类别嵌入到测试实体中的实现方式,可以是将目标命名实体的内容以及目标实体类别的内容嵌入到测试实体的结构化数据中,还可以使用标记来表示目标实体类别以及目标命名实体,并与测试实体进行关联,获得目标测试实体。
在一实施例中,可以通过深度学习模型来识别软件测试文本中目标命名实体以及目标实体类别,深度学习模型比如BiLSTM-CRF模型:这是一种基于双向长短期记忆网络(Bidirectional Long Short-Term Memory,BiLSTM)和条件随机场(Conditional RandomField,CRF)的序列标注模型。BiLSTM可以用于捕捉上下文信息,CRF可以用于建模标签之间的依赖关系,从而实现对目标命名实体以及目标实体类别的识别。除此之外也可以采用其他深度学习模型或者通过其他方式识别目标命名实体以及目标实体类别。
在一实施例中,通过机器学习方法,如支持向量机(SVM,或者Support VectorMachine)或随机森林(Random Forest)等,从大量软件测试***的文本数据中提取文本特征,并使用特征来比较和排序文本。这些方法使用权重来比较和排序不同文本之间的重要性,也可以一定程度上避免过拟合问题。
步骤S400:根据目标测试实体、测试动作以及测试行为,生成知识图谱的节点,并根据知识图谱的节点构建软件测试的知识图谱。
在一实施例中,据目标测试实体、测试动作以及测试行为,生成知识图谱的节点,包括:分别将目标测试实体、测试动作以及测试行为作为知识图谱的节点,以生成知识图谱的节点。
在一实施例中,为了丰富知识图谱的信息,还可以在目标测试实体、测试动作以及测试行为作为知识图谱的节点的基础上,进一步添加更多的信息作为知识图谱的节点,比如,根据测试用例、测试漏洞分别作为知识图谱的节点进一步添加至原有的知识图谱的节点中。
在一实施例中,根据知识图谱的节点构建软件测试的知识图谱,包括:根据知识图谱的节点之间的关系建立知识图谱的边,根据知识图谱的节点以及知识图谱的边构建软件测试的知识图谱。
在一实施例中,根据知识图谱的节点构建软件测试的知识图谱,包括:对知识图谱的需要对齐的节点进行对齐,需要对齐的节点包括多个测试动作节点,多个测试实体节点以及多个测试行为节点,对齐的方式主要是评估需要对齐的节点之间的相似度,如果相似度足够高,比如相似度高于相似度阈值或者处于参考相似度区间,则将相似度足够高的节点进行节点属性的合并,并创建连接关系,以进行对齐,根据对齐后的节点以及节点之间的连接关系来构建软件测试的知识图谱。通过进行上述对齐,能够提高知识图谱的准确性。
请参照图2,图2示出了根据本申请一个实施例的基于非结构化数据构建知识图谱的流程示意图,图2包括步骤1至步骤6,其中:
步骤1主要是进行数据采集和预处理,采集的数据为非结构化数据,预处理过程包括对非结构化数据进行文本清洗和规范化,来处理和转换异构数据为统一格式的数据。比如统一格式的软件测试文本,以便于后续处理和分析;非结构化数据比如测试用例、测试漏洞报告以及***配置文件等数据。
步骤2主要是对预处理获得的软件测试文本进行依存句法分析生成依存句法树,根据依存句法树划分或者搜索测试步骤;依存句法分析可以通过基于规则构建的依存句法分析模型来实现。
步骤3主要是标注测试步骤的语义角色,并按照语义角色识别或者抽取测试步骤中的测试动作以及测试实体,组合测试动作以及测试实体获得测试行为。以测试行为作为关键论证。
步骤4主要是获取或者识别软件测试文本的目标命名实体以及目标实体类别。其中,可以通过构建基于深度学习的实体识别模型来识别目标命名实体以及目标实体类别。
步骤5主要是将目标命名实体以及目标实体类别嵌入到测试实体中,获得目标测试实体。并且,也可以进一步在测试实体中嵌入测试实体的等效词词典和相反词词典获得目标测试实体。还可以在测试动作中嵌入测试动作的等效词词典和相反词词典,以对测试动作进行扩展。
步骤6主要是根据所获得的结构化数据,包括目标测试实体、测试动作以及测试行为等,生成知识图谱的节点,并根据知识图谱的节点构建软件测试的知识图谱。其中,可以对目标测试实体、测试动作以及测试行为分别进行对齐,从而使得所构建的知识图谱更加准确。
在一实施例中,步骤1可以具体包括步骤1a-步骤1c。其中:
步骤1a,采集原始软件测试数据。
原始软件测试数据比如金融银行测试***相关的数据,主要包括漏洞报告、测试用例文档、需求文档和金融银行***文档(比如***介绍、功能模块操作指南)。其中,漏洞报告和测试用例可以直接存储在测试***中,可以导出为Excel或者CSV的格式。需求文档可直接由HTML输出为带有标记的JSON格式。***文档可以导出为TXT格式。
以下举例原始元件测试数据中的一组软件测试数据,其中,该组软件测试数据的ID为:987654;名称为:【OPS】-在线支付***-支付金额输入验证;需求类型为:功能相关;标签为:支付安全性;测试任务优先级为:P1-高;测试需求为:***;测试前置条件为:进入在线支付***;用例步骤为:(1)选择一个测试账户并登录;(2)打开支付功能并选择支付方式;(3)输入一个无效的(支付)金额-输入负数-输入非法字符(4)尝试进行支付操作(http://123);测试预期结果为:***应检测到无效的支付金额并给出相应的错误提示-***不应进行支付;创建时间为:2022/02/02 15:40。
步骤1b,对原始软件测试数据进行数据格式转换,获得目标格式的软件测试数据。
目标格式比如JSON格式。其中,通过规范化技术,将不同格式的数据转换并统一储存为JSON格式,以便更好地进行数据分析和比较。此处以测试用例文档为例说明,包括如下处理过程:
去除缺少测试步骤或者完全重复的测试用例。
统一日期格式。原文件中的日期格式多样,比如“年/月/日时:分”或者“年/日/月时:分”或者“年-月-日时:分”,将其统一为“年-月-日时:分”,例如“2023-05-16 10:00”。
建立***元件相关词典,统一命名规范。比如“OPS”和“ops”和“在线支付***”都指代“在线支付***”,则将文档中相关命名统一为“在线支付***”。
抽取Excel或者CSV文件中的测试用例ID、名称、测试需求、需求类型、需求数量、测试用例类型、标签、测试任务优先级、测试前置条件、测试步骤、测试预期结果、测试方式、创建时间,并按顺序存储为JSON格式。
步骤1c、预处理原始软件测试数据中的预设字符,获得所需的软件测试文本。
预设字符可以是一些不必要的字符,可称之为噪声字符。比如:根据规则可以去除一些语气助词,比如“啊”、“了”等等,将“选择了”处理为“选择”;还可以根据规则预处理一些不必要的标点符号,将“tab显示标签(无)”处理为“tab显示标签为无”,“:”符号处理为“包括”。“+”符号处理为“和”。还可以建立HTML黑名单,根据规则比对去除不必要的HTML标签。
通过上述处理可以获得如下所示的漏洞报告、测试用例和需求文档。
漏洞报告的内容举例而言:"ID":“308002","报告内容":"在进行支付时,***未对输入的支付金额进行验证,导致可以支付任意金额","受影响的产品":"在线支付***","发现步骤":"SIT","漏洞类型":"功能案例","发布计划":"2023年Q3","发布版本":"1.5.0","状态":"待处理","严重程度":"高","解决方案类型":"代码修复","创建时间":"2023-05-1610:00","修复时间":"2023-07-1509:00","关闭时间":"2023-07-2016:30","所需时间":"5个工作日","关联缺陷ID":"未关联","关联缺陷名称":"未关联”。
测试用例文档的内容举例而言:"ID":"987654","名称":"支付金额输入验证",“测试需求":"在线支付***支付安全性测试","需求类型":"***需求","需求数量":"1.0","类型":"功能案例","标签":"支付安全性","任务优先级":"高","前置条件":"进入在线支付***","步骤:":"1.选择一个测试账户并登录;2.打开支付功能并选择支付方式;3.输入一个无效的支付金额(例如负数或非法字符);4.尝试进行支付操作","预期结果":"在线支付***检测到无效的支付金额并给出相应的错误提示;在线支付***不应进行支付","测试方式":"手工","创建时间":"2022-02-0215:40"。
需求文档的内容举例而言:"ID":“149000","需求名称":"在线支付***支付安全性测试","需求优先级":"高","需求描述":"为了确保在线支付***的支付安全性,需要进行全面的测试和评估。测试的重点是验证***在处理支付交易时是否能够确保用户信息和资金的安全。以下是对在线支付***支付安全性的测试需求:1.验证支付金额验证功能,比如测试***是否能够对输入的支付金额进行验证,防止支付任意金额,确认***能够正确检测和处理异常或非法的支付金额;2.测试用户身份验证和授权机制,比如确认***能够准确验证用户身份,以防止未经授权的支付行为。"
通过上述方式,可以减少软件测试文本中的噪声,使得文本更加干净,并且可以将文本统一为更一致的表达形式,使得在构建知识图谱时更容易进行语义匹配。
在一实施例中,步骤2主要包括步骤2a至步骤2e。其中,
步骤2a:获取预处理后的软件测试文本,删除软件测试文本中的步骤标记,并生成步骤序列。
该软件测试文本可以是长文本,步骤标记比如该长文本中的序号或者标记。举例而言,软件测试文本为:“1.进入在线支付***2.客户没有生成理财险产品以外的数据3.优化目标和付费模式4.进行投资和进件和开户和核额申请”,删除步骤标记并生成的步骤序列为:['进入在线支付***',‘客户没有生成理财险产品以外的数据’,‘优化目标和付费模式’,‘进行投资和进件和开户和核额申请’]。
步骤2b,对步骤序列中的每个步骤进行分词和词性标注,获得分词和词性标注的结果。
实现方式比如:加载HanLP的“tok/fine”模型,进行中文分词任务。将文本输入到“tok/fine”模型中,对文本进行分词预测,并返回分词结果。步骤序列中的“进入在线支付***”通过进行分词和词性标注,可以获得分词为:['进入','在线','支付','***'],词性标注为:进入/VV在线JJ支付/NN***/NN。
步骤序列中的"客户没有生成理财险产品以外的数据"通过进行分词和词性标注,可以获得分词为:['客户','没有','生成','理财险','产品','以外','的','数据'],词性标注为:客户/NN没有/VV生成/VV理财险/NN产品/NN以外/LC的/DEG数据/NN。
步骤序列中的“优化目标和付费模式”通过进行分词和词性标注,可以获得分词为:['优化','目标','和','付费','模式'],词性标注为:优化/VV目标/NN和/CC付费/NN模式/NN。
步骤序列中的“进行投资和进件和开户和核额申请”通过进行分词和词性标注,可以获得分词为:['进行','投资','和','进件','和','开户','和','核额','申请'],词性标注为:进行/VV投资/NN和/CC进件/NN和/CC开户/NN和/CC核额/NN申请/NN。
VV表示动词,NN表示名词,CC表示连词,JJ表示形容词,LC表示方位词,DEG表示“的”。
步骤2c,基于分词和词性标注的结果,获得句子中词语之间的依存关系,生成依存句法树。
进行依存句法分析的方式比如:加载HanLP的“con”模型,进行依存句法分析任务,分析一个句子在语法上的递归构成,并将其表示为树形结构的任务。并将分词和词性标注的结果输入到“con”模型中,根据成分句法标签和依存关系构建依存句法树。
其中,“进入在线支付***”的依存句法树如图3所示,“客户没有生成理财险产品以外的数据"的依存句法树如图4所示,“优化目标和付费模式"的依存句法树如图5所示,“进行投资和进件和开户和核额申请"的依存句法树如图6所示。
在依存句法树中,Tok表示依存句法树中的词汇,该词汇基于分词结果得到,PoS表示词性标注,该词性标注基于词性标注结果得到。依存句法树中包含节点和边,一个节点是句子中的一个词汇(ToK),比如,在图3所示的依存句法树中,节点分别是进入、在线、支付、***,其中的边表示的是各节点的依存关系,VP表示动词短语,IP表示小句短语,NP表示名词短语。在图3所示的依存句法树中,节点分别是客户、没有、生成、理财险、产品、以外、的、数据,LCP表示方位词短语,DNP表示由“的”构成的表示所属关系的短语。在图4所示的依存句法树中,节点分别是优化、目标、和、付费、模式。在图5所示的依存句法树种,节点分别是进行、投资、和、进件、和、开户、和、核销、申请。
步骤2d,根据软件测试文本的依存句法树划分测试步骤。
在一实施例中,根据软件测试文本的依存句法树划分测试步骤,包括:
提取软件测试文本的依存句法树中的子树;根据子树中节点的标签,搜索子树中是否具有并列连词对应的节点;若子树中具有并列连词对应的节点,则按照并列连词在子树中的位置,划分子树的叶节点,获得测试步骤;若子树中不具有并列连词,则根据子树的叶节点获得测试步骤。
子树代表由中心节点及其所有直接或者间接依存于该节点的子节点组成的部分树结构。并列连词比如“和”、“以及”、“与”等连词。子树中的叶节点即指代子树中所具有的节点。如果有并列连词,那么表示存在不同的测试步骤,通过进行划分可以获得更精确的测试步骤,如果没有并列连词,则无需拆分,基于子树的叶节点获得测试步骤。
比如,对于“优化目标和付费模式”的依存句法树而言,“优化”是动词,而“目标”和“付费模式”作为动词“优化”的宾语和宾语补语,依存于该动词,子树中包括“和”这个并列连词,因此,基于“和”所在的位置,或者理解成依据“和”与“优化”、“付费模式”之间的依存关系,将“优化目标和付费模式”划分为“优化目标”以及“优化付费模式”。
以下实施例提供一种更精确的搜索测试步骤的方式,即通过子步骤搜索函数来搜索测试步骤,遍历依存句法树并生成子步骤序列。
子步骤搜索函数的实现方式包括:如果子树只有一个叶节点,则返回叶节点;如果子树的叶节点大于一个,则初始化子树划分列表和叶节点列表;遍历子树中的每个节点,在遍历过程中,如果下一个节点的标签为“CC”,表示是并列连词,则将叶节点划分列表中的内容合并为一个字符串,添加到子树划分列表中,并清空叶节点划分列表。如果下一个节点的标签不是并列连词,则对下一个节点递归调用子步骤搜索函数,获取叶节点划分结果,初始化新的叶节点列表,遍历叶节点划分列表和叶节点划分结果,生成新的叶节点列表,更新叶节点划分列表。在遍历完成后,将叶节点划分列表中的内容添加到子树划分列表中,返回子树划分列表,获得子步骤。上述所指的子步骤即为所需获得的测试步骤。
步骤2e,将上述获得的测试步骤,按照步骤序列的顺序组成一个列表,以便于后续处理。
举例而言,所获得的列表为:['['进入在线支付***','客户没有生成理财险产品以外的数据','优化目标','优化付费模式','进行投资','进行进件,'进行开户','进行核额申请']。
采用上述方式,可以划分出软件测试文本中的测试步骤,从而便于构建软件测试的知识图谱。
在一实施例中,步骤3主要包括步骤3a至步骤3d。
步骤3a,根据测试文本特征设计具体的语义角色。
以下对设计的语义角色进行举例:设计的语义角色为PREP,对应属性为测试动作,对应的文本比如“登录”,“创建”,“执行”,“优化”;设置的语义角色为ARG0,对应属性为测试实体,对应的文本比如为“管理台”,“登录人”;语义角色为ARG1,对应属性为测试实体,对应的文本比如“企业名称”,“手机号”,“合作企业项目”;语义角色为ARGM ADV,对应属性为测试动作的状态,对应的文本为“成功”,“先”,“都”,“前置”,“都不可”;语义角色为ARGM MNR,对应属性为测试动作发生的方式,对应的文本为“根据导入的企业名称”;语义角色为ARGMTMP,对应属性为测试动作发生的时间,对应的文本为“测试1执行后”;语义角色为ARGMLOC,对应属性为测试动作发生的位置,对应的文本为“在维权***”。
步骤3b,标注测试步骤的语义角色。
在一实施例中,标注测试步骤的语义角色,包括:根据软件测试文本的特征,生成软件测试的参考语义角色以及参考语义角色对应的参考属性;参考属性包括测试动作的属性以及测试实体的属性;按照参考语义角色以及参考属性,对测试步骤进行语义角色标注,获得测试步骤对应的语义角色。
软件测试文本的特征是指预先设置的在软件测试领域中文本所具有的特征,比如,在软件测试领域中,文本具有括动作,实体,条件,预期结果等等特征,其中,动作比如各类动词,实体比如各类名词,条件比如测试执行的限制条件,预期结果比如预期中测试产生的结果。结合软件测试文本的特征生成软件测试所具有的参考语义角色。参考语义角色即所生成的软件测试领域中的语义角色。参考属性是软件测试领域中语义角色所具有的属性,比如,测试动作、测试实体、测试动作的状态,测试动作发生的方式等等。
采用此方式标注测试步骤的语义角色,能够获得软件测试领域中测试步骤所具有的语义角色,进一步所构建的知识图谱能够准确体现出软件测试中各个元素之间的关系,以提高知识图谱的准确性。
在一实施例中,可以对步骤序列中的每个步骤进行语义角色标注。实现方式比如:加载HanLP的“srl”模型,进行语义角色标注任务。将步骤序列中测试步骤的文本输入到“srl”模型中,对文本进行语义角色标注,按照规则替换成设计的语义角色,并返回每个步骤所对应的语义角色列表。
举例而言,对于测试步骤“进入在线支付***",其语义角色列表为:[["进入","PRED",0,1],["在线支付***","ARG1",1,4]];对于测试步骤“优化付费模式”,其语义角色列表为:[[('优化','PRED',0,1),('付费模式','ARG1',1,3)]]。
步骤3c,定义测试实体、测试动作和测试行为。
定义测试实体包括多个属性:实体名称,实体类别,与该测试实体等效的其他测试实体等。比如“用户界面-通用实体-[“界面”,“窗口”]”为一个测试实体。通过定义实体类别这个属性,可以进一步用于嵌入目标实体类别,该目标实体类别和“与该测试实体等效的其他测试实体”这一属性一起用于评估测试实体之间的相似度,并对测试实体进行对齐。
测试动作包括多个属性:测试动作的名称、测试动作的状态、测试动作的发生方式、测试动作的发生时间、测试动作的发生位置、与该测试动作等效的其他测试动作列表、与该测试动作相反的其他测试动作列表。比如“校验-成功-根据导入的用户ID-输入有效密码后-密码输入框-[“检查校验结果”]-[“校验失败”,“拒绝校验”]”为一个测试动作。“与该测试动作等效的其他测试动作列表”和“与该测试动作相反的其他测试动作列表”两个属性可以用于计算测试动作之间的相似度计算和基于相似度对测试动作进行对齐。
测试行为包括至少一个属性:测试行为名称(表示为“测试动作::测试实体”)。比如“查询::流水状态”为一个测试行为。测试行为为构成图谱的一个关键论元。
步骤3d,按照语义角色识别或者抽取测试步骤中的测试动作以及测试实体,并组合测试动作以及测试实体获得测试行为,以测试行为作为关键论证。
遍历步骤上述生成的语义角色列表,并结合定义的语义角色,根据规则抽取测试实体、测试动作和测试行为。对于没有抽取到相关信息的属性,用“n/a”来做补充。比如,语义角色列表为:[["进入","PRED",0,1],["在线支付***","ARG1",1,4]],所获得的测试实体为:“在线支付***-n/a-n/a”,测试动作为:“进入-n/a-n/a-n/a-n/a-n/a-n/a”,测试行为是:“进入::在线支付***”。语义角色列表为:[[('优化','PRED',0,1),('付费模式','ARG1',1,3)]]。所获得的测试实体:“付费模式-n/a-n/a”;所获得的测试动作为:“优化-n/a-n/a-n/a-n/a-n/a-n/a”;所获得的测试行为是:“优化::付费模式”。
步骤4主要是获取软件测试文本的目标命名实体以及目标实体类别。
在一实施例中,获取软件测试文本的目标命名实体以及目标实体类别,包括:获取与软件测试文本所在业务场景相匹配的目标业务数据,并对目标业务数据进行特征工程分析,提取参考实体类别;提取测试用例以及测试漏洞报告中的参考文本,按照参考实体类别标注参考文本中的参考实体;将参考文本分割为词片段,并对软件测试文本添加开始标记以及结束标记,获得标记数据;根据参考实体以及标记数据对深度学习模型进行训练,获得实体识别模型;通过实体识别模型识别软件测试文本,获得目标命名实体以及目标实体类别。
业务场景是软件测试实际应用的业务的场景,比如金融银行、电子商务等等业务场景。目标业务数据即业务场景相关的数据。参考实体类别即该业务场景下所匹配的实体类别。在特定业务场景中,会具有相应的实体和实体类型,比如,在金融银行领域,具有金融相关的各种实体,且具有特定的实体类型,例如机构组织,金融产品,人员,银行特有实体,通用实体等等实体类型,在电子商务领域中,具有商品实体、用户实体、订单实体、支付实体等等,特定的实体类别,比如商品、品牌、产品型号、订单号等等。
测试用例是一组输入值、执行步骤和预期结果的规范化描述,用于验证软件***或应用程序在特定条件下的功能、性能或特性。测试漏洞报告是对所发现的漏洞或者问题的描述和记录。参考文本是从测试漏洞报告和测试用例中提取出来的文本,参考实体是参考文本中所具有的的实体。开始标记用于指示句子的开始位置,结束标记用于指示句子的结束位置。通过添加开始标记以及结束标记可以使得深度学习模型更容易提取文本的结构和句子之间的关系。基于参考实体以及标记数据生成预训练文本,并对深度学习模型进行训练,在深度学习模型训练完成时将其作为实体识别模型。
采用上述方式,采用了深度学习模型,能够识别命名实体及其类别,并将命名实体和类别嵌入到测试实体中,据此所进一步构建的知识图谱更准确。
在一实施例中,步骤4包括步骤4a至4m。其中:
步骤4a,基于银行业务领域中的文本和银行业务内容,进行特征工程分析,提取出需要识别的实体类型:通用实体、银行特有实体、人员、产品、机构组织。
其中,通用实体比如页面,银行特有实体比如XX广告平台,人员比如客户、经理,产品比如理财险,机构组织比如XX银行。
步骤4b,标注漏洞报告和测试用例中的实体。
可以使用自动化开源工具Slate来进行数据标注,提高标注效率和准确性。具体步骤包括:将文本切分成句子粒度,生成需要打标的TXT格式文档。例如“***应检测到无效的支付金额并给出相应的错误提示;***不应进行支付”切分成“***应检测到无效的支付金额并给出相应的错误提示”和“***不应进行支付”。在电脑终端运行Slate工具,对每一个输入句子,人工识别句子中的实体并且标注出对应的预定义的实体类型。
在进行标注的过程中,针对单个句子,识别实体的位置和类别。位置比如((1,0,0),(1,0,3)),其表示第一个句子中起始位置为(0,0)、结束位置为(0,3)的实体被标注为通用实体。
在一实施例中,标注的句子是“进入在线支付***”,识别出的实体为:((1,0,2),(1,0,7))-label:general_component(标签:通用实体);((2,0,0),(2,0,5))-label:general_component(标签:人员)。
在一实施例中,标注的句子是“客户没有生成理财险产品以外的数据”;识别出的实体为:((2,0,6),(2,0,8))-label:product(标签:产品);((2,0,14),(2,0,15))-label:general_component(标签:通用实体)。
步骤4c、根据标注的句子、识别的实体的位置和类别,生成预训练文本。
所生成的预训练的文本的格式为{“文本”:“”,“标签”:{“某个具体的标签”:[[文本开始的位置,文本结束的位置]]}}。
举例而言,标注的句子、识别的实体的位置和类别为“进入在线支付***”,((1,0,2),(1,0,7))-标签:通用实体,所生成的预训练文本为:{“文本”:“进入在线支付***”,“标签”:{“通用实体”:{{“在线支付***”:[[2,7]]}}。标注的句子、识别的实体的位置和类别为:“客户没有生成理财险产品以外的数据”((2,0,0),(2,0,1))-标签:人员((2,0,6),(2,0,8))-标签:产品((2,0,14),(2,0,15))-标签:通用实体。所生成的预训练文本为:{“文本”:“客户没有生成理财险产品以外的数据”,“标签”:{“人员”:{{“客户”:[[0,1]],“产品”:{{“理财险”:[[6,8]],“通用实体”:{{“数据”:[[14,15]]}}。
步骤4d、将文本分割成词片段,在文本的开头添加开始标记以及在文本末尾添加结束标记。
“[CLS]”标记可以作为句子的开始标记,“[SEP]”标记作为句子的结束标记。这些特殊标记有利于模型提取文本的结构和句子之间的关系。
比如,文本为“进入在线支付***”,通过将文本分割为词片段,添加开始标记以及结束标记,获得["[CLS]","进入","在线","支付","***","[SEP]"]。文本为:“客户没有生成理财险产品以外的数据”。通过将文本分割为词片段,添加开始标记以及结束标记,获得:["[CLS]","客户","没有","生成","理财","险","产品","以外","的","数据",“[SEP]"]。
步骤4e、建立词到索引的映射关系。
在一实施例中,使用Chinese-RoBERTa-WWM-Ext模型预训练的字典来建立词到索引的映射关系。以“在线支付***”为例,假设字典中“在线”的索引为101,“支付”的索引为102,“***”的索引为103。将每个词转换为其对应的索引后,可以得到索引序列[101,102,103]。
步骤4f、通过将每个索引替换为对应的词向量,形成一个固定长度的向量序列,转化为适用于RoBERTa模型的输入特征矩阵。
输入特征矩阵即词向量序列[[词向量_1,词向量_2,词向量_3]]。
举例而言,针对添加标记的文本:["[CLS]","进入","在线","支付","***","[SEP]"],经过建立索引并替换为对应的词向量获得:[CLS]词向量_1词向量_2词向量_3词向量_4词向量_5词向量_6[SEP]。针对添加标记的文本:["[CLS]","客户","没有","生成","理财","险","产品","以外","的","数据","[SEP]"],经过建立索引并替换为对应的词向量获得:[CLS]词向量_1词向量_2词向量_3词向量_4词向量_5词向量_6词向量_7词向量_8词向量_9词向量_10词向量_11词向量_12词向量_13词向量_14词向量_15词向量_16[SEP]。
步骤4g、搭建命名实体识别模型,加载预训练模型作为基础模型,并根据数据和命名实体识别任务特点调整参数。
在一实施例中,可以使用PyTorch搭建命名实体识别模型,加载Chinese-RoBERTa-WWM-Ext的预训练模型作为基础模型,并根据数据和命名实体识别任务特点调整参数如下所示:注意力机制的dropout概率:0.1;方向性:双向;隐藏层激活函数:GELU;隐藏层中实施dropout,被去掉的概率:0.1;隐藏层的神经元个数:768;初始化范围:0.02;中间层的神经元个数:3072;最大位置嵌入数:512;注意力头的数量:12;隐藏层encoder的层数:12;标签数量:22;输出注意力权重:false;输出隐藏状态:false;输出过去的状态:true;池化器全连接层的尺寸:768;池化器的注意力头数量:12;池化器的全连接层数量:3;池化器每个注意力头的尺寸:128;池化器类型:首个标记变换;类型词汇表大小:2;词汇表大小:21128。
上述实现方式中,没有使用BERT-Base-Chinese模型,而是使用了Chinese-RoBERTa-WWM-Ext模型。BERT-Base-Chinese模型里,中文是以字为粒度进行切分,在BERT预训练过程中的掩码任务也以字粒度进行操作。Chinese-RoBERTa-WWM-Ext针对这个问题进行一系列改造,充分考虑传统自然语言处理中的中文分词操作,以词为粒度进行Mask操作。通过对命名实体识别模型的评估表现数据尽心给分析可得,其针对通用实体、银行特有实体、人员、产品以及机构组织这几种不同的标签类别,在准确率、召回率以及F1值上均有优异的表现。
在一实施例中,可以使用少样学习低资源语言建模进行命名实体识别,亦即Few-shot或者Zero-shot LLM,可以解决在没有足够数据的情况下,建立自然语言处理***所需的数据匮乏问题。
步骤4h、在预训练模型之上添加条件随机场层,获得具有条件随机场层的预训练模型。
其中,条件随机场层可以利用条件随机场模型来建模标签之间的依赖关系,提高标签预测的准确性。另外,定义损失函数为交叉熵损失函数,计算模型输出和真实标签之间的差异。
步骤4i、将训练数据拷贝多次,每次拷贝根据一定的概率对于每个词片段进行不同的全词掩码操作。
拷贝的次数比如为10词,概率比如为15%,全词掩码操作比如添加标记“[MASK]”,这样等价于对于原始的数据集采用10种静态的掩码。
比如训练数据中包括["[CLS]","进入","在线","支付","***","[SEP]"],那么进行上述操作后,获得掩码1:["[CLS]","进入","[MASK]","支付","***",“[SEP]"];掩码2:["[CLS]","[MASK]","在线","支付","***",“[SEP]"]……掩码10:["[CLS]","进入","在线","支付","[MASK]",“[SEP]"]。
步骤4j、根据测试任务的具体要求和数据特点,使用已标注的数据训练RoBERTa模型并调整模型训练参数。
如通过最小化损失函数来优化模型的参数。如下举例一些重要参数:Adam优化器中的epsilon参数:1e-08;评估阶段的最大序列长度:512;条件随机场层学习率:5e-05;轮次:14;总的优化步骤:924。
步骤4k、根据命名实体识别的规范和标记规则BIOS,生成模型输出的预测结果,识别命名实体的起始位置和类别。
在标记规则BIOS中,"B"表示一个实体的起始位置,出现在实体的第一个词上;"I"表示一个实体的内部位置,出现在实体的非第一个词上;"O"表示一个非实体的词;"S"表示一个单独的实体,即只有一个词组成的实体。
举例而言,所需识别的软件测试文本为"进入在线支付***",识别出的命名实体的起始位置和类别为:“OOB-通用实体I-通用实体I-通用实体I-通用实体I-通用实体I-通用实体”;所需识别的软件测试文本为:"客户没有生成理财险产品以外的数据",输出:“B-人员I-人员OOOOB-产品I-产品I-产品OOOOOB-通用实体I-通用实体”。
步骤4l,进行解码和后处理,将预测结果转换为最终的实体识别结果。
针对软件测试文本:"进入在线支付***",实体识别结果为:{“id”:1,“标签”:{“通用实体”:{{“在线支付***”:[[2,7]]}}。针对软件测试文本:"客户没有生成理财险产品以外的数据",实体识别结果为:{“id”:1,“标签”:{“人员”:{{“客户”:[[0,1]],“产品”:{{“理财险”:[[6,8]],“通用实体”:{{“数据”:[[14,15]]}}。
步骤4m、利用训练好的模型对未参与训练的软件测试文本进行实体识别。
此步骤又进一步包括:数据格式转换、测试数据集和加载器的创建,以及预测结果的解码和后处理。比如针对软件测试文本:“客户未购买理财险”,实体识别得到:[{‘标签’:{‘人员’:{‘客户’:[[0,1]]},’产品’:{‘理财险’:[[5,7]]}},‘文本’:‘客户未购买理财险’}]。
采用上述方式,使用基于深度学习的方法,可以从大量数据中自动学习实体之间的关系和知识表示,避免了人工定义和规则推理的不足,同时可以避免规则交叉和冲突,比如可以自动判断专业名词的起始和结束位置并准确切分,也可适用于不同语言的文本,提高了知识图谱的可维护性和升级性。
在一实施例中,步骤5包括步骤5a至步骤5f。
步骤5a,加载词向量模型。
选择并加载已经训练好的词向量模型,如Word2Vec或GloVe模型。根据加载的词向量模型,获取词汇和词汇对应的词向量。
步骤5b,针对输入的测试实体,根据词向量模型,获取该测试实体对应的词向量,计算词向量之间的相似度并使用预定义的相似度阈值来确定相似词,构建测试实体的等效词词典。
具体而言,如果相似度大于预定义的相似度阈值,则将大于该阈值的词向量确定为相似词,根据相似词构建测试实体的等效词词典。
步骤5c、针对输入的测试实体,根据词向量模型,获取该测试实体对应的词向量,计算词向量之间的相似度,选择相似度最低的词汇作为相反词,根据相反词构建测试实体的相反词词典。
步骤5d、针对输入的测试动作,根据词向量模型,获取该测试动作对应的词向量,计算词向量之间的相似度并使用预定义的相似度阈值来确定相似词,构建测试动作的等效词词典;选择相似度最低的词汇作为相反词,根据相反词构建测试动作的相反词词典。
步骤5e、将测试实体对应的等效词词典和相反词词典和测试动作对应的等效词和相反词词典嵌入到此前生成的测试实体和测试动作中,获得目标测试实体以及目标测试动作。
举例而言,针对测试实体:“在线支付***-n/a-n/a”,嵌入等效词词典,获得的测试实体为:“在线支付***-n/a-[“电子支付***”]”;针对测试动作:“进入-n/a-n/a-n/a-n/a-n/a-n/a”,嵌入等效词词典和相反词词典,获得:“进入-n/a-n/a-n/a-n/a-[“登入”]-[“登出”]”。针对测试实体:“付费模式-n/a-n/a”,嵌入等效词词典,获得测试实体:“付费模式-n/a-[“付款方式”,“支付模式”]”;针对测试动作:“优化-n/a-n/a-n/a-n/a-n/a-n/a”,嵌入等效词词典以及相反词词典,获得测试动作:“优化-n/a-n/a-n/a-n/a-[“改进”,“提升”]-[“恶化”,“退化”,“撤销优化”]”。
步骤5f、将测试实体与已有的命名实体和实体类别进行关联。
关联的方式为:将已有的命名实体和实体类别嵌入到测试实体中,以进一步提高实体的准确性和一致性。
举例而言,针对测试实体:“在线支付***-n/a-[“电子支付***”]”,嵌入命名实体以及实体类别,获得测试实体为:“在线支付***-通用实体-[“电子支付***”]”;针对测试实体:“付费模式-n/a-[“付款方式”,“支付模式”]”,嵌入命名实体和实体类别,获得测试实体:“付费模式-通用实体-[“付款方式”,“支付模式”]”。其中,如果测试实体与命名实体相同,则保留一个即可。
采用上述实现方式,将测试实体和测试动作的名称输入到预训练的词向量模型中,生成等效词和对立词的词典,进一步支持测试实体和测试动作的对齐,能够提高测试实体和测试动作的对齐的准确性。在基于规则构建知识图谱方法的基础上,建立基于深度学习的命名实体识别模型和基于预训练词向量的词嵌入模型,以支持图谱的嵌入和对齐。能够充分利用自然语言处理和深度学习模型的优势,以更精准和全面的方式构建软件测试知识图谱。
在一实施例中,步骤6对应于上述实施例中的步骤S400,即包括:根据目标测试实体、测试动作以及测试行为,生成知识图谱的节点,并根据知识图谱的节点构建软件测试的知识图谱。
在一实施例中,根据知识图谱的节点构建软件测试的知识图谱,包括:根据知识图谱的节点,提取测试实体节点、测试动作节点以及测试行为节点;分别评估测试实体节点之间的实体相似度以及测试动作节点之间的动作相似度;根据实体相似度以及动作相似度,计算测试行为节点之间的行为相似度;根据实体相似度、动作相似度以及行为相似度,识别测试实体节点、测试动作节点以及测试行为节点中匹配的节点;对匹配的节点进行对齐,并根据对齐得到的对齐节点构建软件测试的知识图谱。
在构建知识图谱的过程中,还可以采用上述方式对测试实体节点、测试动作节点以及测试行为节点进行对齐,对齐过程主要是将不同的节点和关系进行匹配和连接。
实体相似度是指测试实体节点之间的相似度,比如某两个测试实体节点之间的相似度,动作相似度是指测试动作节点之间的相似度,比如某两个测试动作节点之间的相似度。在评估实体相似度或者动作相似度时,可以通过两个节点的特征向量或者属性,计算两个节点之间的相似度。比如通过余弦相似度、欧式距离等计算相似度。
在一实施例中,为了评估某两个测试行为节点之间的行为相似度,可以获取这两个测试行为节点之间的动作相似度以及实体相似度,并根据动作相似度以及实体相似度计算出行为相似度。在计算时可以采用线性加权的方式来计算,或者采用其他方式计算。采用此方式,能够准确评估不同测试行为节点的相似度,从而后续可以对相似的测试行为节点进行对齐。
在一实施例中,根据实体相似度、动作相似度以及行为相似度,识别测试实体节点、测试动作节点以及测试行为节点中匹配的节点,包括:若实体相似度大于实体相似度阈值,则获取该实体相似度对应的测试实体节点,并将该实体相似度对应的测试实体节点配置为匹配的节点;若动作相似度大于动作相似度阈值,则获取该动作相似度对应的测试动作节点,并将该动作相似度对应的测试动作节点配置为匹配的节点;若行为相似度大于行为相似度阈值,则将该行为相似度对应的测试行为节点配置为匹配的节点。其中,实体相似度阈值、动作相似度阈值以及行为相似度阈值彼此之间的数值可以相同,比如都设置为90%,此外也为不同数值。
此外,对于小于或者等于实体相似度阈值的实体相似度对应的测试实体节点,则并非匹配的节点;对于小于或者等于动作相似度阈值的动作相似度对应的测试动作节点,也并非匹配的节点;对于小于或者等于行为相似度阈值的行为相似度对应的测试行为节点,也并非匹配的节点。
通过上述方式,可以获得匹配的测试动作节点、匹配的测试实体节点以及匹配的测试行为节点,进一步对上述节点进行对齐,可以提高知识图谱的准确性。
在一实施例中,对匹配的节点进行对齐,并根据对齐得到的对齐节点构建软件测试的知识图谱,包括:将匹配的节点进行映射,以获得对齐节点,并在对齐节点之间建立连接关系,以构建软件测试的知识图谱。
在一实施例中,分别评估测试实体节点之间的实体相似度以及测试动作节点之间的动作相似度,包括:分别将测试实体节点以及测试动作节点作为待评估节点;获取待评估节点的等效词词典属性以及待评估节点的相反词词典属性;将等效词词典属性转换为等效词词向量,并将相反词词典属性转换为相反词词向量;根据等效词词向量与相反词词向量计算待评估节点之间的余弦相似度;根据待评估节点之间的余弦相似度,确定测试实体节点之间的实体相似度以及测试动作节点之间的动作相似度。
待评估节点即需要评估相似度的节点。通过分别将测试实体节点以及测试动作节点作为待评估节点,以分别确定测试实体节点之间的实体相似度,测试动作节点之间的动作相似度。
待评估节点的等效词词典属性包括测试实体的等效词词典或者测试动作的等效词词典。测试实体的等效词词典是指根据与该测试实体的词向量的相似度所确定的相似词来构建的词典。测试动作的等效词词典是指根据与该测试动作的词向量的相似度所确定的相似词来构建的词典。在相似度比较高的情况下,表明对应的词汇是相似词。
待评估节点的相反词词典属性包括测试实体的相反词词典或者测试动作的相反词词典。测试实体的相反词词典是根据与该测试实体的词向量的相似度所确定的相反词来构建的词典。测试动作的相反词词典是根据与该测试动作的词向量的相似度所确定的相反词来构建的词典。在相似度比较低的情况下,表明对应的词汇是相反词。
在一实施例中,可以直接根据待评估节点为测试实体节点或者测试动作节点,将动作待评估节点之间的余弦相似度,确定为测试实体节点之间的实体相似度,或者确定为测试动作节点之间的动作相似度。
采用上述方式,通过等效词词典和相反词词典,可以提高测试实体和测试节点的多样性,对齐效果更好,并提高所构建的知识图谱的准确性。
在一实施例中,根据待评估节点之间的余弦相似度,确定测试实体节点之间的实体相似度以及测试动作节点之间的动作相似度,包括:获取多个待评估节点的名称属性以及类别属性;根据名称属性对应字符串之间的编辑操作次数,评估名称属性之间的名称相似度;根据类别属性是否为相同属性,确定类别属性之间的类别相似度;根据待评估节点的各属性在知识图谱中构成的子图的图结构相似度,进行线性加权得到子图相似度;对余弦相似度、名称相似度、类别相似度以及子图相似度进行线性加权,获得待评估节点之间的相似度;根据待评估节点之间的相似度,确定测试实体节点之间的实体相似度以及测试动作节点之间的动作相似度。
如果类别属性是相同属性,那么属性相似度为第一预设值,如果类别属性不是相同属性,那么属性相似度为第二预设值,第一预设值大于第二预设值。第一预设值比如为1,第二预设值比如为0。
待评估节点的各属性即包括待评估节点所具有的所有属性,比如包括名称、类别等等属性。子图相似度可以采用杰卡德相似度计算得到。
在上述实现方式中,进一步在基于等效词和相反词评估的节点之间的相似度的基础上,结合名称相似度、属性相似度以及子图相似度,来获得更准确的节点间的相似度,从而进行更准确地对齐,以进一步获得更准确的知识图谱。
在一实施例中,对匹配的节点进行对齐,并根据对齐得到的对齐节点构建软件测试的知识图谱,包括:将匹配的节点的属性合并至知识图谱的节点中,并将匹配的节点与知识图谱的节点连接,得到对齐节点;分别将测试用例、测试漏洞以及测试需求表示为知识图谱的参考测试节点;根据参考测试节点与对齐节点的语义关系,建立知识图谱的边;根据参考测试节点、对齐节点以及知识图谱的边,构建软件测试的知识图谱。
将匹配的节点的属性与对应于知识图谱中原有节点的属性进行合并,从而使得知识图谱中原有节点的属性包括匹配的节点的属性。在此基础上,将匹配的节点与对应于知识图谱中原有节点进行连接,以避免重复对齐或者误操作。参考测试节点与对齐节点之间的语义关系比如为测试用例涉及测试实体,测试漏洞涉及测试动作等等。
采用上述方式对匹配的节点和知识图谱中原有节点进行对齐,并且根据测试用例、测试漏洞以及测试需求作为参考测试节点并建立知识图谱的边,可以丰富测试动作、测试实体、测试行为与测试用例、测试漏洞、测试需求之间的关系,提高知识图谱的完整性和准确性。
在一实施例中,步骤6包括步骤6a-步骤6e。
步骤6a,建立知识图谱的节点。
在一实施例中,知识图谱可以基于实现知识图谱可视化的Neo4j图谱构建,并可以分别将测试实体、测试动作和测试行为,表示为Neo4j图谱的节点。此外,也可以采用Neo4j图谱以外的其他知识图谱,本实施例并不限定于此。
步骤6b、对测试实体和测试动作进行对齐。
以测试实体的对齐举例,说明对齐函数的实现方法为,针对测试实体节点{C1,C2,...,CN};某个选定的测试实体节点:Cp),进行如下处理:
遍历知识图谱中的每个测试实体节点Ck(k≠p),对于测试实体Cp的实体名属性和Ck的实体名属性/>通过计算两个字符串之间的编辑操作次数来衡量差异程度,并基于该差异程度来评估/>和/>所转化的字符串之间的相似度。其中,具体实现时可以采用使用Levenshtein距离算法。
对于测试实体Cp的实体类别属性和Ck的实体类别属性/>如果/>和/>相同,则将该属性的相似度设为1,否则设为0。
对于测试实体Cp等效词词典属性和相反词词典属性和Ck的等效词词典属性和相反词词典属性/>将/>和/>分别转换为词向量,计算其余弦相似度:/>
计算Cp和Ck的各个属性在图谱中构成的子图的图结构相似度,并进行线性加权。计算方式可以是:其中,wi表示第个属性的权重值。
线性加权以上四个维度的相似度,得到Cp和Ck的相似度。当相似度大于设定阈值时,则确定两个测试实体节点匹配。设定阈值比如90%。将匹配节点的属性信息合并到原始节点的属性中,并在知识图谱中创建连接关系,将参考匹配节点与原始节点连接起来,以避免重复对齐或误操作。
如图7所示,图7示出了一实施例中子图的示意图。该图示出了测试步骤[‘进行投资和进件和开户和核额申请’]对应的子图。其中,“进行:投资”、“进行:进件”、“进行:开户”、“进行:核销申请”构成测试行为节点集合。
步骤6c:提取测试行为中的测试实体和测试动作,分别计算测试实体的相似度和测试动作的相似度,并进行线性加权得到测试行为的相似度。当相似度大于设定阈值时,认为两个测试行为匹配并进行对齐。
步骤6d:在对齐后的测试实体、测试动作和测试行为基础上,分别将测试用例、测试漏洞、测试需求,表示为知识图谱的节点。
该知识图谱是上述的Neo4j图谱。将测试文本中的属性信息,例如预置条件、预期结果,表示为测试步骤节点构成的子图,同时转化为一个字符串列表。节点和节点的属性举例如下:
节点名字为:测试实体,对应的节点属性为:“ID”:“1111”、“实体名称”:“用户界面”、“实体类别”:“通用实体”、“与该实体等效的其他实体列表”:[“界面”,“窗口”]。
节点名字为:测试动作,对应的节点属性为:“ID”:“111223”、“动作名称”:“校验”、“动作的状态”:“成功”、“动作的发生方式”:“根据导入的用户ID”、“动作的发生时间”:“输入有效密码后”、“动作的发生位置”:“密码输入框”、“与该动作等效的其他动作列表”:[“检查校验结果”]、“与该动作相反的其他动作列表”:[“校验失败”,“拒绝校验”]。
节点名字为:测试步骤,对应的节点属性为:“实体名称”:“流水状态”、“动作名称”:“查询”、“测试步骤”:“查询::流水状态”。
节点名字为:测试用例,对应的节点属性为:"ID":“987654","名称":"[‘输入::支付金额’,‘验证::支付金额’]","测试需求":"[‘测试::在线支付***支付安全性’]","需求类型":"***需求","需求数量":"1.0","类型":"功能案例","标签":"支付安全性","任务优先级":"P1-高","前置条件":"[‘进入::在线支付***’]","步骤:":"[‘选择::一个测试账户’,‘登录::测试账户’,‘打开::支付功能’,‘选择::支付方式’,‘输入::一个无效的支付金额(例如负数或非法字符)’,‘进行::支付操作’]","预期结果":"[‘检测到::无效的支付金额’,‘给出::相应的错误提示’,‘不应进行::支付’]”,"预期结果":“在线支付***检测到无效的支付金额并给出相应的错误提示;在线支付***不应进行支付","测试方式":"手工","创建时间":"2022-02-0215:40"。
节点名字为:测试漏洞,对应的节点属性为:"ID":“308002","报告内容":"[‘进行::支付’,‘输入::支付金额’,’验证(未进行)::输入的支付金额’,‘支付(可以)::任意金额’]”,"受影响的产品":“在线支付***","发现步骤":"SIT","漏洞类型":"功能案例","发布计划":"2023年Q3","发布版本":"1.5.0","状态":"待处理","严重程度":"高","解决方案类型":"代码修复","创建时间":“2023-05-1610:00”,"修复时间":“2023-07-1509:00","关闭时间":"2023-07-2016:30","所需时间":“5个工作日","关联缺陷ID":"未关联","关联缺陷名称":“未关联”。
节点名字为:测试需求,对应的节点属性为:"ID":“149000","需求名称":"[‘测试::在线支付***支付安全性’]","需求优先级":"高",“需求描述”:"['确保::在线支付***的支付安全性',‘进行(全面的)::测试和评估’,'处理::支付交易','确保::用户信息安全',‘确保::用户资金安全','验证::支付金额验证功能','验证::输入的支付金额','防止::支付任意金额',‘检测(正确)::异常的支付金额’,‘检测(正确)::非法的支付金额’,‘处理(正确)::异常的支付金额’,‘处理(正确)::非法的支付金额’,’测试::用户身份验证机制',’测试::用户授权机制’,’验证(准确)::用户身份’,'防止::未经授权的支付行为']"。
步骤6e,建立知识图谱的边,并根据知识图谱的节点和边构建知识图谱。
知识图谱的边根据语义关系和对应属性来设置,语义关系和对应属性举例如下:语义关系为test_requirement,对应属性为测试用例对应要求;语义关系为testcase_has_action,对应属性为测试用例涉及测试动作;语义关系为:testcase_involves_concept,对应属性为:测试用例涉及测试实体;语义关系为:testcase_has_step,对应属性为:测试用例包含测试步骤;语义关系为:bug_has_action,对应属性为:测试漏洞涉及测试动作;语义关系为:bug_involves_concept,对应属性为:测试漏洞涉及测试实体;语义关系为:bug_has_step,对应属性为:测试漏洞包含测试步骤;语义关系为:bug_matches_testcase,对应属性为:测试漏洞和测试用例对应。
通过上述对齐方式,建立了有效的对齐模型,并建立了测试动作和测试实体对应的词向量,有助于进一步利用构建的知识图谱支持其他多种功能。
比如,在一实施例中,如图8所示,可以采用上述构建的知识图谱具体应用于相似测试用例推荐、测试问答***、以及自动生成测试文档,从而提高软件测试的准确性和便捷性。
采用上述步骤1-6的实现方式,通过建立基于自然语言处理技术和深度学习模型,从半结构化的异构测试文本中提取应用程序概念、测试***特征、任务工作流程和测试行为以及测试预期结果,并将这些提取出的文本信息转化为结构化的知识,从而构建一个***的软件测试知识图谱。该知识图谱不仅能够反映显性关系,还能够反映隐性关系。显性关系包括比如测试动作和其涉及的测试实体,隐性关系包括比如测试动作完成的条件和频率、方式等。并且,该知识图谱可以更准确地捕捉测试实体和测试动词之间的具体相关性,从而提高知识图谱对测试场景表示的完整性和准确性。
下面参考图9来描述根据本申请实施例的电子设备50。图9显示的电子设备50仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图9所示,电子设备50以通用计算设备的形式表现。电子设备50的组件可以包括但不限于:上述至少一个处理单元510、上述至少一个存储单元520、连接不同***组件(包括存储单元520和处理单元510)的总线530。
其中,存储单元存储有程序代码,程序代码可以被处理单元510执行,使得处理单元510执行本说明书上述示例性方法的描述部分中描述的根据本申请各种示例性实施方式的步骤。例如,处理单元510可以执行如图9中所示的各个步骤。
存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备50也可以与一个或多个外部设备600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备50交互的设备通信,和/或与使得该电子设备50能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口550进行。输入/输出(I/O)接口550与显示单元540相连。并且,电子设备50还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器560通过总线530与电子设备50的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置等)执行根据本申请实施方式的方法。
在本申请的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机可读指令,当计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。
根据本申请的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如JAVA、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。

Claims (10)

1.一种知识图谱的构建方法,其特征在于,所述方法包括:
根据软件测试文本的依存句法树划分测试步骤,并标注所述测试步骤的语义角色;
按照所述语义角色识别所述测试步骤中的测试动作和测试实体,并组合所述测试动作以及所述测试实体获得测试行为;
获取所述软件测试文本的目标命名实体以及目标实体类别,并将所述目标命名实体以及所述目标实体类别嵌入到所述测试实体中,获得目标测试实体;
根据所述目标测试实体、所述测试动作以及所述测试行为,生成知识图谱的节点,并根据所述知识图谱的节点构建软件测试的知识图谱。
2.根据权利要求1所述的方法,其特征在于,根据所述知识图谱的节点构建软件测试的知识图谱,包括:
根据所述知识图谱的节点,提取测试实体节点、测试动作节点以及测试行为节点;
分别评估所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度;
根据所述实体相似度以及所述动作相似度,计算所述测试行为节点之间的行为相似度;
根据所述实体相似度、所述动作相似度以及所述行为相似度,识别所述测试实体节点、所述测试动作节点以及所述测试行为节点中匹配的节点;
对所述匹配的节点进行对齐,并根据对齐得到的对齐节点构建软件测试的知识图谱。
3.根据权利要求2所述的方法,其特征在于,分别评估所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度,包括:
分别将所述测试实体节点以及所述测试动作节点作为待评估节点;
获取所述待评估节点的等效词词典属性以及所述待评估节点的相反词词典属性;
将所述等效词词典属性转换为等效词词向量,并将所述相反词词典属性转换为相反词词向量;
根据所述等效词词向量与所述相反词词向量计算所述待评估节点之间的余弦相似度;
根据所述待评估节点之间的余弦相似度,确定所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度。
4.根据权利要求3所述的方法,其特征在于,根据所述待评估节点之间的余弦相似度,确定所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度,包括:
获取多个所述待评估节点的名称属性以及类别属性;
根据所述名称属性对应字符串之间的编辑操作次数,评估所述名称属性之间的名称相似度;
根据所述类别属性是否为相同属性,确定所述类别属性之间的类别相似度;
根据所述待评估节点的各属性在知识图谱中构成的子图的图结构相似度,进行线性加权得到子图相似度;
对所述余弦相似度、所述名称相似度、所述类别相似度以及所述子图相似度进行线性加权,获得所述待评估节点之间的相似度;
根据所述待评估节点之间的相似度,确定所述测试实体节点之间的实体相似度以及所述测试动作节点之间的动作相似度。
5.根据权利要求2所述的方法,其特征在于,对所述匹配的节点进行对齐,并根据对齐得到的对齐节点构建软件测试的知识图谱,包括:
将所述匹配的节点的属性合并至所述知识图谱的节点中,并将所述匹配的节点与所述知识图谱的节点连接,得到对齐节点;
分别将测试用例、测试漏洞以及测试需求表示为所述知识图谱的参考测试节点;
根据所述参考测试节点与所述对齐节点的语义关系,建立知识图谱的边;
根据所述参考测试节点、所述对齐节点以及所述知识图谱的边,构建所述软件测试的知识图谱。
6.根据权利要求1所述的方法,其特征在于,根据软件测试文本的依存句法树划分测试步骤,包括:
提取所述软件测试文本的依存句法树中的子树;
根据所述子树中节点的标签,搜索所述子树中是否具有并列连词对应的节点;
若所述子树中具有并列连词对应的节点,则按照所述并列连词在所述子树中的位置,划分所述子树的叶节点,获得所述测试步骤;
若所述子树中不具有并列连词,则根据所述子树的叶节点获得所述测试步骤。
7.根据权利要求1所述的方法,其特征在于,标注所述测试步骤的语义角色,包括:
根据所述软件测试文本的特征,生成软件测试的参考语义角色以及所述参考语义角色对应的参考属性;所述参考属性包括所述测试动作的属性以及所述测试实体的属性;
按照所述参考语义角色以及所述参考属性,对所述测试步骤进行语义角色标注,获得所述测试步骤对应的语义角色。
8.根据权利要求1所述的方法,其特征在于,获取所述软件测试文本的目标命名实体以及目标实体类别,包括:
获取与所述软件测试文本所在业务场景相匹配的目标业务数据,并对所述目标业务数据进行特征工程分析,提取参考实体类别;
提取测试用例以及测试漏洞报告中的参考文本,按照所述参考实体类别标注所述参考文本中的参考实体;
将所述参考文本分割为词片段,并对所述软件测试文本添加开始标记以及结束标记,获得标记数据;
根据所述参考实体以及所述标记数据对深度学习模型进行训练,获得实体识别模型;
通过所述实体识别模型识别所述软件测试文本,获得所述目标命名实体以及所述目标实体类别。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1至8中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1至8中任一项所述的方法。
CN202311245542.0A 2023-09-25 2023-09-25 知识图谱的构建方法、电子设备及存储介质 Pending CN117252261A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311245542.0A CN117252261A (zh) 2023-09-25 2023-09-25 知识图谱的构建方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311245542.0A CN117252261A (zh) 2023-09-25 2023-09-25 知识图谱的构建方法、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117252261A true CN117252261A (zh) 2023-12-19

Family

ID=89126063

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311245542.0A Pending CN117252261A (zh) 2023-09-25 2023-09-25 知识图谱的构建方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117252261A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435777A (zh) * 2023-12-20 2024-01-23 烟台云朵软件有限公司 一种产业链图谱自动构建方法与***
CN117453576A (zh) * 2023-12-25 2024-01-26 企迈科技有限公司 基于DXM模型的SaaS软件测试用例构建方法
CN117555814A (zh) * 2024-01-11 2024-02-13 三六零数字安全科技集团有限公司 软件测试方法、装置、存储介质以及终端
CN117574878A (zh) * 2024-01-15 2024-02-20 西湖大学 用于混合领域的成分句法分析方法、装置及介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435777A (zh) * 2023-12-20 2024-01-23 烟台云朵软件有限公司 一种产业链图谱自动构建方法与***
CN117435777B (zh) * 2023-12-20 2024-05-24 烟台云朵软件有限公司 一种产业链图谱自动构建方法与***
CN117453576A (zh) * 2023-12-25 2024-01-26 企迈科技有限公司 基于DXM模型的SaaS软件测试用例构建方法
CN117453576B (zh) * 2023-12-25 2024-04-09 企迈科技有限公司 基于DXM模型的SaaS软件测试用例构建方法
CN117555814A (zh) * 2024-01-11 2024-02-13 三六零数字安全科技集团有限公司 软件测试方法、装置、存储介质以及终端
CN117555814B (zh) * 2024-01-11 2024-05-10 三六零数字安全科技集团有限公司 软件测试方法、装置、存储介质以及终端
CN117574878A (zh) * 2024-01-15 2024-02-20 西湖大学 用于混合领域的成分句法分析方法、装置及介质
CN117574878B (zh) * 2024-01-15 2024-05-17 西湖大学 用于混合领域的成分句法分析方法、装置及介质

Similar Documents

Publication Publication Date Title
US10846341B2 (en) System and method for analysis of structured and unstructured data
Jung Semantic vector learning for natural language understanding
Qin et al. A survey on text-to-sql parsing: Concepts, methods, and future directions
US9740685B2 (en) Generation of natural language processing model for an information domain
CN117252261A (zh) 知识图谱的构建方法、电子设备及存储介质
US20230056987A1 (en) Semantic map generation using hierarchical clause structure
Gaur et al. Semi-supervised deep learning based named entity recognition model to parse education section of resumes
Nguyen et al. Rule-based extraction of goal-use case models from text
US20220245353A1 (en) System and method for entity labeling in a natural language understanding (nlu) framework
Zhou et al. English grammar error correction algorithm based on classification model
Guarasci et al. Assessing BERT’s ability to learn Italian syntax: A study on null-subject and agreement phenomena
US20220245361A1 (en) System and method for managing and optimizing lookup source templates in a natural language understanding (nlu) framework
US20230028664A1 (en) System and method for automatically tagging documents
Cui et al. Simple question answering over knowledge graph enhanced by question pattern classification
Liu et al. A brief survey on recent advances in coreference resolution
US20220237383A1 (en) Concept system for a natural language understanding (nlu) framework
Wang et al. Aspect-based sentiment analysis with graph convolutional networks over dependency awareness
Luo et al. Hallucination detection and hallucination mitigation: An investigation
AbuRa’ed et al. Automatic related work section generation: experiments in scientific document abstracting
Chittimalli et al. An approach to mine SBVR vocabularies and rules from business documents
Li et al. Towards the identification of bug entities and relations in bug reports
Liu et al. Adaptivepaste: Code adaptation through learning semantics-aware variable usage representations
US20220229986A1 (en) System and method for compiling and using taxonomy lookup sources in a natural language understanding (nlu) framework
US20220245352A1 (en) Ensemble scoring system for a natural language understanding (nlu) framework
US20220229987A1 (en) System and method for repository-aware natural language understanding (nlu) using a lookup source framework

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication