CN115794119B - 一种案例自动解析方法及装置 - Google Patents
一种案例自动解析方法及装置 Download PDFInfo
- Publication number
- CN115794119B CN115794119B CN202310044817.8A CN202310044817A CN115794119B CN 115794119 B CN115794119 B CN 115794119B CN 202310044817 A CN202310044817 A CN 202310044817A CN 115794119 B CN115794119 B CN 115794119B
- Authority
- CN
- China
- Prior art keywords
- execution
- test
- case
- node
- grammar
- 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
- 238000004458 analytical method Methods 0.000 title claims abstract description 96
- 238000012360 testing method Methods 0.000 claims abstract description 282
- 230000009471 action Effects 0.000 claims abstract description 127
- 238000013515 script Methods 0.000 claims abstract description 105
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000013507 mapping Methods 0.000 claims description 101
- 230000006870 function Effects 0.000 claims description 59
- 238000006243 chemical reaction Methods 0.000 claims description 39
- 239000000370 acceptor Substances 0.000 claims description 27
- 239000003550 marker Substances 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 12
- 238000010276 construction Methods 0.000 claims description 11
- 230000003213 activating effect Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims 2
- 239000010410 layer Substances 0.000 description 22
- 238000013461 design Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000011990 functional testing Methods 0.000 description 5
- 239000003607 modifier Substances 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 101150072179 ATP1 gene Proteins 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 101150105046 atpI gene Proteins 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 235000010678 Paulownia tomentosa Nutrition 0.000 description 2
- 240000002834 Paulownia tomentosa Species 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101150015935 ATP2 gene Proteins 0.000 description 1
- 101100003366 Arabidopsis thaliana ATPA gene Proteins 0.000 description 1
- 101100179824 Caenorhabditis elegans ins-17 gene Proteins 0.000 description 1
- 101100179596 Caenorhabditis elegans ins-3 gene Proteins 0.000 description 1
- 101100072420 Caenorhabditis elegans ins-5 gene Proteins 0.000 description 1
- 102100021649 Elongator complex protein 6 Human genes 0.000 description 1
- 101100065219 Homo sapiens ELP6 gene Proteins 0.000 description 1
- 101150089655 Ins2 gene Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 101150026213 atpB gene Proteins 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种案例自动解析方法及装置,方法包括:基于指定的文法规则,对测试案例进行解析,构建语法树;将语法树转换为能够被测试引擎识别的测试脚本;其中,解析测试案例包括获取案例步骤中的一组执行主体、执行动作和执行受体。本发明将测试案例中的执行主体、执行动作和执行受体对应转换为语法树,并构建标准化的测试脚本,实现功能测试的完全自动化测试。
Description
技术领域
本发明属于自动化测试技术领域,特别涉及一种案例自动解析方法及装置。
背景技术
无线闭塞中心RBC是高速铁路的关键设备之一。应用于CTCS-3(Chinese TrainControl System,中国列车运行控制系统)级铁路时,作为CTCS-3级列控系统的地面核心设备和涉安产品,其功能的正确性直接关乎安全,对无线闭塞中心RBC设备的功能验证的正确性至关重要。
目前对于无线闭塞中心RBC的功能测试,测试案例设计完成后,需要测试者通过自动化测试引擎工具提供的接口函数,进行案例的人工转化,编制具备工具能自动执行的测试脚本,从而将测试案例转化为脚本文件。对于铁路信号目前产品在建的案例库,功能测试设计的案例多达上万个,如果均进行人工转化,则工作量是巨大的。从测试设计、测试实现和测试执行严重依赖于人工的功能测试,制约了产品测试的发展和测试质量的提升。尤其是测试设计构建出的测试案例,能够由软件自动解析,是构建自动化测试实现所需的输入脚本的转换的关键技术。即使有功能案例库的构建技术,局限性也很大,基本都是针对特定功能、特定测试类型进行案例的自动解析和执行,而且有很大的封闭性,无法通用。随着产品功能的不断迭代更新,案例库构建也需要相应的迭代更新,而脚本转换依赖人工解析则越来越不符合产品的发展需求。
因此,这种以人工为主要实现载体的方式严重耗费大量的成本和资源,从整体上造成针对无线闭塞中心RBC设备的功能测试案例库构建技术自动化发展滞后,基本无法满足高铁市场快速发展的需要,是无线闭塞中心RBC技术发展面临的挑战之一。
发明内容
针对上述问题,本发明提供一种案例自动解析方法,包括:
基于指定的文法规则,对用自然语言编写的测试案例进行解析,构建语法树;
将语法树转换为能够被测试引擎识别的测试脚本;
其中,解析测试案例包括获取案例步骤中的一组执行主体、执行动作和执行受体。
进一步地,基于指定的文法规则,对用自然语言编写的测试案例进行解析包括:
基于第一文法规则,对测试案例的案例步骤进行词法分析,获取案例步骤中的实体单元,并根据获得的实体单元生成词法单元对象;
案例步骤包括测试步骤和/或与测试步骤相对应的测试预期。
进一步地,所述词法分析包括将案例步骤的描述字符串流转化为关键字单词流;
所述描述字符串流包括以指定分隔符连接的字符串形式的实体单元。
进一步地,获取案例步骤中的实体单元包括:
将执行主体、执行受体、属性和测试数据作为非终结实体;
将执行动作、变量、数值、操作符作为终结实体;
将分隔符和定语为作非对象实体。
进一步地,获取案例步骤中的实体单元包括:
获取由第一标记符标记的属性;和/或
获取由第二标记符标记的定语。
进一步地,获取案例步骤中的实体单元包括:
获取由第三标记符标记的测试数据,基于第二文法规则,解析测试数据。
进一步地,获取案例步骤中的实体单元包括:
将案例步骤解析为执行主体、执行动作和执行受体的有序组合;
对执行主体和执行受体分别进行递归解析,确定执行主体和执行受体各自包含的子对象实体单元之间的操作关系。
进一步地,获取案例步骤中的实体单元还包括:
将属性实体单元作为叶子节点,确定叶子节点的数据类型或定义为空值。
进一步地,构建语法树包括:
对所述词法单元进行语法分析,基于指定的文法规则,构建语法树。
进一步地,所述构建语法树包括:
构建包括实体要素层、属性层和数据层的语法树。
进一步地,确定所述实体要素层的根节点,将案例步骤中的执行动作作为根节点作为根节点的子节点,即执行动作节点,将案例步骤中相应的执行主体和执行动作为执行动作节点的子节点。
进一步地,所述构建语法树包括:
确定属性层的用于表示执行主体或执行受体的属性的树形结构;
将所述树形结构的根节点作为实体要素层的执行主体节点和/或执行受体节点的子节点;
所述树形结构的根节点为操作符节点,通过所述操作符节点的两个子节点分别表示变量和值。
进一步地,所述构建语法树包括:
确定数据层中用于表示测试数据的节点。
进一步地,所述构建语法树包括:
将通过语法分析构建的语法树作为中间语法树,基于关键字映射表,对中间语法树进行语义分析,确定最终的语法树。
进一步地,基于关键字映射表,对中间语法树进行语义分析包括:
根据第一映射表判断执行主体节点与相应的执行动作节点是否满足对应关系;和/或
根据第二映射表确定消息类型是否与执行主体、执行动作和执行受体的组合相一致;和/或
根据全局变量映射表,将对应的语法树节点中的变量名称替换为对应的值;和/或
通过变量类型映射表中的局部表临时存储对应的变量名称和变量的值。
进一步地,将语法树转换为能够被测试引擎识别的测试脚本,包括:
对语法树进行遍历,根据接口实体映射表将语法树中的对象节点进行接口对象转换处理,转换为接口对象;根据脚本语言关键字映射表进行脚本语言转换逻辑处理,生成接口对象的属性信息和接口函数;执行语法树解析转换逻辑,获得以脚本语言形成的目标脚本。
进一步地,将语法树转换为能够被测试引擎识别的测试脚本,包括:
通过数据类型接口对象构建测试数据对应的数据对象;
对于测试数据对应的数据类型接口对象、执行动作对应的接口函数对象和执行主体对应的接口实体对象,均以对象形式访问其数据成员或者方法。
进一步地,待测试对象为无线闭塞中心,执行动作的执行主体为与无线闭塞中心连接的外部系统;
测试案例的执行通过外部系统与无线闭塞中心交互消息实现。
进一步地,将语法树转换为能够被测试引擎识别的测试脚本,包括:
根据第八映射表,将执行动作转换为执行动作接口函数,其中,第八映射表为函数接口对象和实体接口对象映射表,用于描述执行主体与接口对象的对应关系,以及描述执行动作和接口函数之间的映射关系;
将执行主体转换为执行动作接口函数的执行实体对象;
基于第七映射表获取对应的接口对象标识,根据数据类型的属性的解析,确定接口函数的输入参数,其中,第七映射表为数据类型接口对象表,用于描述数据类型的字段变量的属性和字段的关系;
将执行受体对应的测试数据作为执行动作接口函数的输入参数。
本发明还提供一种案例自动解析装置,包括:
案例解析单元,用于基于指定的文法规则,对用自然语言编写的测试案例进行解析,构建语法树;
脚本转换单元,用于将语法树转换为能够被测试引擎识别的测试脚本;
其中,解析测试案例包括获取案例步骤中的一组执行主体、执行动作和执行受体。
本发明通过测试设计形成一套完整有效的文法规则,对于标准化人机可读的案例进行自动化解析,将测试案例中的执行主体、执行动作和执行受体对应为语法树,并构建标准化的测试脚本,实现功能测试的完全自动化测试,能够实现针对与外部系统进行通信的待测试对象的通信功能测试,例如实现无线闭塞中心RBC的自动测试。
通过统一化、模块化设计构建得到人机可读的案例库文件,根据解析规则进行案例文件的自动解析,转换为自动化测试执行所需的测试引擎软件能解析的测试脚本,从而实现测试案例自动生成后测试案例自动解析,提供给测试案例自动执行为目标的解析器。本发明以自动构建、解析和执行是其核心,对于提升无线闭塞中心RBC等产品的功能验证的自动化具有重要意义。需要说明的是 ,本法明技术方案不限于应用在无线闭塞中心RBC的功能测试中,其他产品的功能测试也可以根据需要使用本发明个的方案进行自动化测试,例如,对于外部系统通信的计算机系统进行功能测试。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明实施例的案例自动解析方法流程示意图;
图2示出了根据本发明实施例的案例语法树原理结构示意图;
图3示出了根据本发明实施例的案例步骤1的测试步骤的语法树结构示意图;
图4示出了根据本发明实施例的案例步骤1的测试预期的语法树结构示意图;
图5示出了根据本发明实施例的案例步骤i的测试步骤的语法树结构示意图;
图6示出了根据本发明实施例的案例步骤i的测试预期的语法树结构示意图;
图7示出了根据本发明实施例的转换逻辑示意图;
图8示出了根据本发明实施例的测试步骤中的执行动作触发方向示意图;
图9示出了根据本发明实施例的测试预期中的执行动作触发方向示意图;
图10示出了根据本发明实施例的测试引擎自动化实现原理示意图;
图11示出了根据本发明实施例的测试案例扩展流程示意图;
图12示出了根据本发明实施例的案例自动解析装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种案例自动解析方法,自动解析按照指定规则的测试案例文本,转化为能够被测试引擎执行的测试脚本,实现案例自动转换和自动测试执行。
不失一般性地,本发明实施例的案例自动解析方法可以通过一种案例自动解析装置实现,例如,实现为一种案例解析器。通过标准化案例设计,生成格式化案例(测试案例文本)后,在测试执行时通过案例解析器自动完成可供测试引擎驱动的测试脚本的转化。测试案例的执行即为测试脚本的执行,进行自动完成测试执行和结果判断。
案例解析器包括词法分析器、语法分析器、脚本解析转换器。
案例解析器工作原理如下:
对用户指定的案例库文件范围的案例文本依次解析;
对于每个案例的解析,按照案例步骤依次进行解析;其中案例步骤包括一个或多个测试步骤以及与测试步骤相对应的测试预期;
如图1所示,对于每个测试步骤和测试预期,首先分别进行词法分析,将解析出的案例要素,即词法单元对象进行分类存储。案例要素包括案例执行主体、执行动作、执行受体等。其中,执行主体是执行动作的主体,执行受体是执行动作的客体。
然后进行案例语法分析,将案例的修饰语进行解析存储,并将其与关键词映射表中的关键词对应,对修饰语中的数据进行解析,获取测试数据对应的语法树(测试数据对应的语法树是测试步骤或测试预期对应的语法树的一部分,即作为整个语法树的子树)。
根据上述语法树进行语义分析,映射出执行动作接口函数(简称接口函数,根据接口实体映射表获取),并赋予参数,转换成测试脚本;
依次进行下一个测试步骤和测试预期的解析,直至对当前测试案例解析完成。
依次进行下一个案例的解析直至案例库解析完成。
不失一般性地,本发明实施例以对于无线闭塞中心(RBC)的案例解析为例进行说明。在另外的实施例中也可以对其他通信系统的功能案例进行解析,只要其案例符合本发明实施例的解析方法所要求的语法规则,例如,通过解析测试案例能够获取测试步骤或测试预期中的测试受体、测试主体和执行动作。其中,测试受体用于描述待测试的通信系统;测试主体用于描述与通信系统连接的外部系统;执行受体用于描述通信系统根据接收到的外部系统的消息,要处理的数据。
本发明实施例中,案例解析器能够对满足文法规则的案例脚本进行解析。针对RBC的功能特征设计满足以下需求的文法规则:测试者能够读、写,辅助案例设计。即测试案例由基于一定规则定义的自然语言编写,因此便于用户对接口的设计和阅读;满足计算机程序能够解析和翻译,实现自动化测试技术。即测试案例是由基于一定规则定义的机器语言,由其构成的特定文法。
本发明实施例中,规范化的测试案例通过指定的分隔符将案例步骤的执行主体、执行动作、执行受体进行拼接。进一步地,还将案例步骤中的执行主体、执行动作、执行受体、定语和属性按照指定的顺序通过指定的分隔符拼接。
示例性地,一个测试案例的文法规则定义如下:
规则R=“执行主体{属性定义}:执行动作”“执行受体{属性}”“分隔符”“[定语]/定语”“(测试数据)”;
规则R中实体单元包括执行主体、执行动作、执行受体、属性、分隔符、定语、数据;
实体单元中,分为三种类型:终结实体、非终结实体、非对象实体;
依据类型分类,执行主体、执行受体、属性、测试数据作为非终结实体。执行动作、变量、数值、操作符为终结实体。分隔符、定语为非对象实体。而终结实体则为特殊的词法单元对象。多个词法单元对象组成词法单元时,终结实体作为词法单元的代表节点,是描述测试案例的终结符号。
由于执行动作是终结实体,则在测试步骤和测试预期中,使用的关键字必须唯一且互斥。例如,关键字“发送”,如果用于案例步骤中为“发送”,用于测试预期中则为“发出”,同时对应到接口函数也唯一且互斥,用于脚本转换时区别出预期进行判断。而一般情况下,根据无线闭塞中心产品特征,对于同一被测对象,在测试步骤和测试预期中,执行主体是不同的,因此执行动作也是不同的,例如,“发送”一般用于测试步骤,“接收”一般用于测试预期。
为了词法分析,引入空值标记e作为空值的终结实体。
测试案例在语义规则基础上进行实现,以测试步骤为单元构建测试案例。即案例设计中,每个案例步骤都是基于此文法规则进行构建。因此案例的解析就是对此文法规则的解析,翻译后转换为脚本语言。
下面对案例解析的各个步骤进行详细说明。
词法分析:
测试案例是由文法规则R组成的字符串,执行词法分析时,从符合文法规则的字符串形式的案例步骤中分析出词法单元,即符合规则R的关键字单词流。
词法单元是从案例步骤的字符串中得到包含规则R定义中各个实体单元,即执行主体、执行动作、执行受体、属性、定语、数据。一个案例步骤包含的多个单元描述字符串时,分解出相应个数的词法单元(执行主体,执行动作、执行受体)组合。
其中,将案例步骤的描述字符串流转化为关键字单词流,根据关键字的单词进行映射再进行语义分析。其中,描述字符串流包括以指定分隔符连接的字符串形式的实体单元。
具体地,测试案例包括一个或多个案例步骤。每个案例步骤的自然描述语言字符串由多个单元描述字符串组成,每个单元字符串间通过指定的分隔符连接;案例步骤中的每个单元字符串遵循第一文法规则R;每个单元字符串按第一文法规则R分析出来的实体遵循指定顺序,形成有序的组合,示例性地,实现按照(执行主体,执行动作、执行受体)的顺序形成组合C。
如果执行主体缺省,代表执行动作是不针对任何实体对象,面向控制,例如测试案例中,“等待(time:sec=3)”,其中执行主体和执行受体均缺省,测试数据为时间参数;
每个组合C中的实体,即执行主体,执行动作、执行受体均为关键字单词,关键字单词是否能够由关键字映射表映射得到,据此进行后续的语法分析,否则认为实体不符合文法规则;
在案例步骤中,通过第一标记符标记属性,解析时,获取由第一标记符标记的属性。第一标记符为一组对应的标记符,示例性地,每个组合C中的关键字单词,在词法分析过程中按照R规则如果由“{”和“}”定义的修饰语,则为属性;
在案例步骤中,通过第二标记符标记定语,解析时,获取由第二标记符标记的定语。第二标记符为一组对应的标记符,示例性地,在执行受体后的第二标记符标记的修饰语,为定语。由“[”和“]”定义的为多个定语,否则为单个定语,词法分析的输出结果中,可以删除定语;
在案例步骤中,通过第三标记符标记测试数据,解析时,获取由第三标记符标记的测试数据。第三标记符为一组对应的标记符,示例性地,由“(”和“)”定义的为测试数据。解析时,基于第二文法规则,解析测试数据。
测试数据为按照第二文法规则T的字符串。示例性地,测试数据为消息。规则T如下:
T=消息类型{变量定义}:”“字段表意”“运算符”“值”,“字段表意”“运算符”“值”。
示例性地,根据规则R和T,基于以下产生式解析测试案例:
case ->sub act obj (data) 1)
sub ->insprop|ins 2)
obj->insprop|ins 3)
prop->{expr}|e 4)
expr ->expr op ins |ins 5)
ins ->val|str|e 6)
data->ins{expr}:expr 7)
其中,case为案例,为开始符号;sub是非终结实体执行主体,obj为非终结实体执行受体,data是非终结实体测试数据,prop是非终结实体属性,ins可以是规则R和T中的代表变量的终结实体或者非终结实体,可以是变量字符串str或者数值val或者空值e的终结实体,也可以是表意名称的非终结实体;expr为表达式非终结实体,act为R中的执行动作关键字,为终结实体,op为操作符,e为空值; |代表文法中或的标识。
根据上述原则,词法分析的目的通过扫描和处理测试步骤的字符串,输出有序的词法单元对象序列,每个词法单元对象有如下结构词法单元名称,属性/>。因此按照上述文法规则R和T进行案例字符串的解析后,可以生成词法单元对象形式如下:
属性由于是非终结实体,仍旧可以继续按照T递归分析,直到全部为终止符为止。例如,消息类型名称1,字段属性/>消息类型名称2,字段属性/>可以继续分析为:/>消息类型名称2,变量1/>字段名称1,属性/>运算符1,e/>值1,e/>……/>字段名称n,属性/>运算符n,e/>值n,e/>消息类型名称2,变量1/>字段名称1,属性/>运算符1,e/>值1,e……/>字段名称n,属性/>运算符n,e/>值n,e/>……
示例性地,根据文法规则R设计的案例步骤如表1(以其中两个步骤为示例):
表1 案例步骤示例
经过词法分析后,得到的输出如表2所示:
表2 词法分析结果举例
语法分析:
案例生成器在标准化设计的案例,经过词法分析后,得到了词法单元对象序列,在此输出的基础上,进行语法分析。语法分析是通过词法单元对象,基于指定的文法规则构建语法树。其中,经过语法分析构建的语法树作为中间语法树,通过规则设计算法,可以对其进行语义检查,即语义分析,并最终转换为自动化程序可读的脚本案例。由此根据文法规则R和T,定义符合无线闭塞中心的案例语法树构建算法规则如下,如图2所示:
1)语法树为多叉树,总共分为三层:实体要素层、属性层、数据层;
2)语法树中采用自上向下遍历方式生成,遇到执行动作或操作符对应的节点,由于只有两个子节点,可以按照二叉树的规则进行遍历进行入队处理;
示例性地,遍历词法单元对象序列,将执行动作和/或操作符作为父节点时,按照二叉树规则,将该父节点及其两个子节点构建到语法树中。
语法树是语法分析的输出,用于转换为脚本和语义分析。语法分析的过程包括:对于初步构建的语法树,若根据文法规则,以开始符号,能够从语法树推导出案例的语言描述字符串,则该语法树为相应案例步骤或案例预期的语法树。构建语法树的过程是选择、尝试和确认的过程。
3)实体要素层高度为3,根节点为固定节点,高度为0,执行动作作为高度为1的中间节点,执行主体和执行受体为高度为2的中间节点。如果执行主体和执行受体都存在,执行主体、执行动作和执行受体构成了二叉树,执行主体和执行受体为执行动作的子节点,执行主体为左子节点,执行受体为右子节点;
4)执行主体、执行受体作为父节点时,其子节点可以为属性节点,代表文法中的属性信息;属性节点的子节点可以是操作符op;
5)操作符作为父节点时,其子节点可以是对象ins节点,对象节点一般为变量和值(分别作为左子节点和右子节点)。操作符节点作为父节点,与其子节点构成二叉树结构;
6)在操作符的右子节点,如果是字符串,可以在父节点对应的映射表或者全局变量对应的映射表中直接转换为目标值。
通过构建中间语法树,使得测试案例可读而且具备自动化的条件。
示例性地,根据以上原则,对上述测试案例构建语法树。
如图3所示,实体要素层包括:根节点、执行动作节点、执行主体节点和执行受体节点。根节点为root,执行动作节点,即表示案例步骤中执行动作节点作为根节点的子节点。执行动作节点包括“设置”、“设置”、“发送”。以第一个“设置”执行动作节点为例,其子节点包括两个,分别是执行主体节点“联锁”和执行受体节点“进路”。
属性层包括用于表示执行主体或执行受体的属性的节点。以执行主体节点“联锁”为例,通过操作符节点“=”及其两个子节点“名称”和“桐城”构成的二叉树,其中操作符节点作为执行主体节点“联锁”的子节点。操作符节点的子节点为对象节点,分别为“名称”和“桐城”。
数据层包括用于表示测试数据的节点。示例性地,执行受体节点“进路”的子节点为SAM(表示一种消息类型),其子节点为操作符“=”,操作符节点“=”的子节点为对象节点,分别为“进路类型”和“进路正常”。
如图4所示,实体要素层包括根节点root,根节点root的子节点为执行动作节点“接收”;“接收”节点的子节点包括执行主体节点“列车”和执行受体节点“消息”。其中消息的内容通过属性层和数据层节点定义。消息的子节点为属性层的操作符节点“=”,操作符节点“=”包括两个子节点,分别为“类型”和“行车许可”。其中,“行车许可”节点的内容通过数据层节点定义。“行车许可”节点包括两个子节点,分别为消息类型“M3”、“P15”。节点“M3”的子节点为操作符节点“=”,操作符节点“=”的左子节点和右子节点分别为消息字段“NID”、“1656788”。节点“P15”包含多个(2个以上)并列子节点,其中,最后一个子节点为操作符节点“=”,该操作符节点的子节点包括消息字段“L_ENDSECTION”和“.”,“.”(表示没有消息字段)的子节点为“RB终点”和“应答器”。
图5为案例步骤i的测试步骤的语法树结构示意图,图6为案例步骤i的测试预期的语法树结构示意图,结构原理分别与图3和图4的语法树结构原理相同,内容根据RBC测试需求确定,不再赘述。
根据上述生成的语法树,可以进行规则R和T的校验,即语义分析。同时也可以作为脚本转换的输入,将案例最终生成可供自动化执行程序解读的脚本语言。
语义分析:
对于测试案例的自然语言字符串进行词法分析和语法分析后得到语法树,对构建的语法树进行语义分析,以判断出描述案例的语言是否符合文法规则,是否有词法单元对象无法找到对应的映射表而导致最终的脚本转换失败的情况。具体地,以关键字映射表为基础进行判断。
本发明实施例中,映射表主要有以下几种:
第一映射表,用于描述执行主体和执行动作的映射关系表。语义分析过程中,根据第一映射表判断执行主体节点与相应的执行动作节点是否满足对应关系。第一映射表示例如下:
表3 执行主体和执行动作映射关系表举例
针对RBC的测试中,执行主体包括联锁或者列车/车载/ATP(AutomaticTrainProtection,列车自动保护系统)等外部系统。当执行主体为联锁时,执行动作包括设置、激活、取消、出清或解锁,相应的执行受体分别为进路、灾害、进路或灾害、进路、进路。
第二映射表,用于确定根据执行主体、执行动作和执行受体的组合与对应的消息类型的映射关系。语义分析包括根据第二映射表确定语法树节点中响应的消息类型是否与执行主体、执行动作和执行受体的组合相一致,即在第二映射表中存在与当前语法树节点一致的执行主体、执行动作、执行受体和消息类型的映射关系记录。例如,当执行主体为“联锁”,执行动作为“设置”,执行受体为“进路”时,消息类型应当为“与进路相关的消息类型”,具体为“信息授权消息”。第二映射表示例如下:
表4 执行主体、执行动作、执行受体、消息类型综合映射关系表举例
第三映射表为实体参数映射表,用来描述外部实体和被测对象的实体名称、类型、属性和参数的关系。语义分析包括:根据实体参数映射表初始化接口实体对象。
表5 实体参数映射表举例
第四映射表为消息类型映射表,用于描述不同消息的属性和参数的关系。语义分析包括:根据第四映射表确定语法树节点中相应的消息的属性和参数是否一致。第四映射表示例如下:
表6 消息类型映射关系表举例
第五映射表为变量类型映射表,分为静态表和动态表,静态表一般为全局变量映射的表,用于描述变量名称和值的关系。语义分析时根据全局变量映射表,将对应的语法树节点中的变量名称替换为对应的值。一般将表达式右节点的名称替换为值,例如:
表7 变量类型静态映射关系表举例
动态表为遍历语法树时构建的局部表,用于变量替换或者计算,用于临时存储对应的变量名称、变量的值、变量的类型、变量的属性。例如:
表8 变量类型动态映射关系表举例
第六映射表为操作符表映射,用于描述操作符类型与操作对象(操作数)的匹配关系,语义分析时根据第六映射表确定操作符与操作对象之间是否符合映射表中规定的匹配关系:
表9 操作符映射关系表举例
本发明实施例中,语义分析时,根据上述映射表中的一个或多个按以下原则对语法树进行校验:
1)所有的属性节点和对象节点中的变量是否有定义,即是否在映射表中能够匹配到;
2)实体层中的组合C,即(执行主体,执行动作、执行受体)是否符合正确的映射关系;
3)操作符是否在支持的操作符号表中,操作符与操作对象之间是否符合映射表中规定的匹配关系;例如,判断操作符左右两个对象是否与操作符匹配,如果属性是str,就不能用于“+”作为操作符。
4)操作符的子节点中,右节点如果不是操作符,则为数值。
通过语义分析后,可以根据输出的语法树构建目标脚本,即执行如下转换步骤。
转换:
案例通过语义检查通过后,可以进行脚本语言的转换。构建的脚本满足支持脚本执行的测试引擎所要求的脚本语言的语法,以便测试引擎可以解析脚本后运行脚本,最终达到测试自动化的需求。
转换过程中,语法树作为转换输入源与目标脚本(即测试脚本)的构建间互相透明,即语法树与测试脚本之间具有对应关系,能够互相转换,如图7所示:
对语法树进行遍历,根据接口实体映射表(表11、表12)将语法树中的对象节点(对象节点一般是指变量,如名称或消息类型,如果执行主体、执行受体没有子节点,那也可以是对象节点)进行接口对象转换处理,转换为接口对象;根据脚本语言关键字映射表进行脚本语言转换逻辑处理,生成接口对象的属性信息和接口函数;执行语法树解析转换逻辑:根据语法树生成案例脚本,获得以脚本语言形成的目标脚本,案例脚本可以直接进行自动化测试。
本发明实施例中,语法树的结构不影响目标脚本生成的逻辑(即上述的脚本语言转换逻辑处理和语法树解析转换逻辑),即语法树结构与目标脚本生成逻辑相互独立设计;测试引擎执行目标脚本所支持的语言不影响语法树的生成逻辑。
语法树与目标脚本根据以下规则实现透明转换。其中,规则用于描述接口对象(测试数据和执行动作对应的接口实现)抽象和实现间的对应关系。规则包括以下内容:
1) 测试数据对应的数据对象通过数据类型接口对象构建,例如,Data1=M136();
2) 数据类型接口对象构建空对象后再进行数据字段赋值,例如,Data1.NID_ENGINE=200611;
3) 无论是测试数据对应的数据类型接口对象,还是执行动作对应的接口函数,或是执行主体对应的接口实体对象,均以对象形式访问其数据成员或者方法。例如Cbi1.activate(), Data1.NID_ENGINE,其中,Cbi1是执行主体对象,activate是执行动作对应的接口函数。Data1是测试数据对象,NID_ENGINE是消息类型的一个字段。
4) 执行动作对应的接口函数是执行主体对应的实体类的方法,例如Atp1.send()。如果不存在执行主体,则执行动作是全域操作。
5) 执行动作对应的接口函数名称具有唯一性,且以测试数据对应的对象作为接口函数的输入参数,例如,Atp1.send(Data1);
6) 执行主体实例化采用单例设计模式,即如果实例化时,id号未找到,则新建对象,如果找到则返回已构建的对象。例如,Cbi1=CBI(id=9996288),第一次构建时为新建对象,第二次构建时则返回已构建对象;
7) 根据执行动作对应的接口函数类型,如果是测试预期的执行动作,则默认构建出根据返回结果判断的执行逻辑,以获得测试案例执行结果。根据铁路信号系统特点,无线闭塞中心作为被测对象时,所有的动作均是外部触发的,在案例步骤的测试步骤中,执行主体和执行受体间的关系如图8所示。执行动作的执行主体为外部实体(外部系统,如联锁),被测对象(如RBC)与执行受体关联,用于接收或处理执行受体,执行受体为执行动作的操作对象,如执行动作为“发送”,执行受体为“消息”。而在案例步骤对应的测试预期中,执行主体和执行受体间的关系如9所示。执行动作的执行主体为被测对象RBC,执行受体(如反馈消息或报错信息)由RBC相连接的外部实体处理。
在测试步骤和测试预期中,执行动作的执行主体和执行受体的关系方向是相反的,本发明实施例采用执行动作唯一定义,从而通过接口函数方法的名称映射表得到其属于测试步骤或是测试预期的动作。
根据规则R和T,案例设计仅涉及条件判断和顺序两种控制类型即可满足自动化测试需求,从而使得进行脚本转换的复杂度降低,测试者通过配置目标脚本语言控制类型标志,算法内部逻辑识别并实现符合脚本语言的语法输出。
表10 脚本语言关键字配置举例
在遍历语法树过程中,通过接口实体映射表完成语法树到目标脚本的转换,包括:
1)根据第八映射表,将执行动作转换为执行动作接口函数;
2)在案例步骤解析过程中,将执行主体转换为执行动作接口函数的执行实体对象:基于第七映射表获取对应的接口对象标识,根据数据类型的属性的解析,确定接口函数的输入参数;
3)在案例预期解析过程中,执行受体对应的测试数据是执行动作接口函数的输入参数;
4)所有的属性节点均转换为局部的动态映射表,用于测试数据转换成输入参数时的值的计算;
5)操作符节点的左子节点如果不是操作符,需要确保其左子节点在完成遍历后(即遍历左子节点的相关子节点)得到返回值;
6)如果消息的字段变量映射后存在中文,则替换为相应的映射表中的英文别名;
7)根据目标语言语法,如果转换后一行有多个语句,语句间使用配置的分隔符,例如“;”。
第七映射表为数据类型接口对象表,用于描述对案例步骤中执行主体进行描述,包括数据类型的字段变量的属性和字段的关系。举例如下:
表11 字段变量接口映射关系表举例
第八映射表为函数接口对象和实体接口对象映射表,用于描述执行主体与接口对象的对应关系,以及描述执行动作和接口函数之间的映射关系。举例如下:
表12 函数接口对象和实体接口对象表举例
在遍历语法树进行转换时,根据以下方法步骤进行遍历转换:
1)采用自底向上(即后序遍历)的遍历规则,遍历时采用堆栈的数据结构;
2)如果遇到终结实体,则到达叶子节点;
3)所有的非终结实体对应的节点都为中间节点,如果是操作符,则进行运算处理后进行赋值;
4)如果非终结实体节点是测试数据,则建立数据的对象,例如Data1、Data2,对象类型根据接口实体映射表匹配后得到;
5)所有的非终结实体节点,从左到右的子节点,为属性节点和对象节点。例如图4中P15节点,最右节点为对象节点,其余均为属性节点;
6)非终结实体节点可以通过在构建语法树中构建节点的属性值或者遍历时根据关键字映射表匹配的方式识别是属性节点或者是对象节点;
7)属性节点在遍历结束后,则得到一个局部的动态映射表,给父节点、兄弟节点映射时进行转换时使用;
8)测试数据的节点遍历完成后,得到一个入参表达式,赋值给父节点的执行受体;
9)执行主体遍历完成后,构建出案例中动作的执行对象,例如ATP1、ATP2;
10)执行动作遍历完成后,根据接口实体映射表,得到接口函数,例如set,send,recv函数,结合执行主体和执行受体的遍历得到的脚本对象,构建出脚本语言。从而实现脚本的转换。执行动作依据自身类型判断出是否为预期,如果是预期,则转换为条件判断的逻辑语句;
11)对于无线闭塞中心,根据R和T文法规则构建出的标准化案例,逻辑仅涉及顺序、条件两种,不涉及循环,即可满足目前测试案例设计的自动化测试需求。条件用于在测试预期的判断中。
案例CS转换后的脚本语言举例如下:
表13 案例脚本转换结果举例
上述案例的脚本转换以脚本文件形式提供给测试自动化平台执行,其具备如下优点:
1.可扩展,通过扩展映射表的接口函数定义和实现功能的扩展;
2.标准化,转换的脚本语言格式、形式均统一;
3.自动化,转换的脚本可以自动执行;
4.灵活性,可针对测试执行引擎面向的不同脚本语言,通过提供不同的映射表实现不同脚本语言的转换;
5.简单化,使得测试者不用关心脚本语言,而集中精力进行案例设计。而且脚本转换后,由于脚本接口设计规范化,接口函数均进行了功能封装,转换后的脚本逻辑相对降低了调试和可读的复杂性;
6.探索性,可以在语法树的基础上,增加案例设计的算法策略,扩展案例的测试数据达到探索性测试。
进一步地,本发明实施例还提出针对测试案例的自动化与探索性测试,实现案例自动构建和扩展。
案例转换成脚本语言后,即可提交给测试引擎进行自动执行,并返回测试结果。测试引擎中包括接口对象的实现,其对脚本提供了接口对象映射表中所有函数、数据类型的定义和实现。为了实现简单化,测试引擎的开发语言应与测试脚本使用的语言保持一致。测试引擎对于脚本的自动化执行原理如图10所示。在测试层,根据测试者的测试要求,调度相应的测试脚本作为输入测试引擎的输入。测试脚本即基于语法树转换成的目标脚本。测试引擎作为测试执行的核心层,包括接口对象实现,能够对测试脚本进行解析,并通过接口对象实现调用函数接口,执行测试步骤,并获取测试脚本的测试结果,进行处理和反馈。在测试脚本的解析过程、函数接口调用过程、脚本结果处理过程中,如果出现异常,测试引擎对异常进行处理,如记录错误日志和/或给出警告。测试引擎解析执行指定程序语言的测试脚本时,基于相应的底层语言解释器,Python语言解释器。
通过测试引擎的解析后得到执行结果,根据执行结果可以衍生测试案例。具体地,通过构建历史记录的经验问题库,获取最容易出现错误的RBC功能的参数值,即出错率达到一定阈值的参数值,改变既有测试案例的测试数据输入值,将预期结果取反,生成新的案例,进行探索性的补充测试,从而提高测试的充分性和质量。
首先定义经验库的数据规范,针对测试数据对应的消息类型的字段、接口函数对应的输入参数(例如时间参数)分别进行构建不同作用类型的典型值(包括单个值或取值范围),按照作用类型,将典型值分为有效值、符合规范不符合功能的无效值、不符合规范的非法值,举例如下:
表14 问题经验库对应的典型值举例
为了达到探索性测试的目标,需要在典型值里根据一定的选取策略进行值的选定后进行案例的扩展,从而进行探索性测试。目前有一些技术使用了建模、机器学习的技术,但是效果均是局部的。本发明实施例根据无线闭塞中心产品功能特征,通过将选取策略以公用接口形式对外部提供,根据原脚本的测试结果进行启动调用。
1)测试引擎执行脚本,得出原脚本的测试结果;
2)如果测试结果满足指定判断条件,表示测试通过(案例预期的值为通过),则调用选取策略,在典型值表里选取指定的典型值,替换测试步骤中测试数据对应的参数。选取策略包括:非法值遍历、选取极限值、选取有效范围内的异常值、二分法随机值等;根据选取策略生成新的测试案例;
3)将新的测试案例的测试预期设置为:不满足指定判断条件。即,当执行测试案例的案例步骤后,测试结果不满足指定判断条件时,认为测试通过。示例性地,对于结果为TRUE的判断条件,取反后,要求结果为FALSE。
本发明实施例的测试案例扩展流程如图11所示。首先对测试案例的脚本进行解析执行,对执行结果进行判断,当测试未通过时,发送错误报告到测试调用者(如测试调用程序或测试者)。当测试通过时,根据典型值选取策略逻辑,在典型值库中选取典型值,作为指定参数的取值,生成新的测试步骤,并对测试预期取反,生成扩展的测试脚本(扩展脚本)。选取策略从策略集中选取,策略集可以根据测试者的需要设置多个可选择的选取策略。典型值表与经验问题库(经验库)对应交互。问题经验库由测试者根据测试历史进行维护,对于待测试对象中错误率较高的测试案例数据进行记录入库。典型值表为根据问题经验库中的测试案例数据,基于对应的参数值进行变化扩展而获得,按照作用类型分为:有效值、非法值、无效值。典型值选取策略逻辑根据注册的选取策略执行。选取策略逻辑还包括扩充典型值表。在根据选取策略选取了典型值后,有可能会生成错误的参数值(不是预期的扩展结果),只有脚本执行得到确认后,自动扩展的值才会反馈写到典型值表和经验库里,例如人工确认后脚本执行结果后如果确定此值有意义,则扩展了典型值和经验库。
不失一般性地,测试案例扩展功能集成在测试引擎中。
通过对测试脚本进行案例扩展,能够实现自动化探索测试,例如,测试案例通过有效范围随机值选取策略得到的一个扩展案例(Data2.type=0)为:
表15 扩展案例举例
扩展脚本经过测试者确认后由测试引擎自动执行,根据结果进行分析处理。本发明实施例脚本扩展,能够实现以错误推测为测试目的自动测试扩展,以提升功能测试的充分性和测试质量。
基于相同的发明构思,本发明实施例还提供一种案例自动解析装置,如图12所示,包括:案例解析单元,用于基于指定的文法规则,对测试案例进行解析,构建语法树;脚本转换单元,用于将语法树转换为能够被测试引擎识别的测试脚本;其中,解析测试案例包括获取案例步骤中的一组执行主体、执行动作和执行受体。本发明实施例的一种案例自动解析装置的实现方式可以根据上述案例自动解析方法的实施例获得,不再赘述。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (13)
1.一种案例自动解析方法,其特征在于,包括:
基于指定的文法规则,对用自然语言编写的测试案例进行解析,构建语法树;
将语法树转换为能够被测试引擎识别的测试脚本;
其中,解析测试案例包括获取案例步骤中的一组执行主体、执行动作和执行受体;
基于指定的文法规则,对用自然语言编写的测试案例进行解析包括:
基于第一文法规则,对测试案例的案例步骤进行词法分析,获取案例步骤中的实体单元,并根据获得的实体单元生成词法单元对象;
获取案例步骤中的实体单元包括:
将执行主体、执行受体、属性和测试数据作为非终结实体;
将执行动作、变量、数值、操作符作为终结实体;
将分隔符和定语为作非对象实体;
所述构建语法树包括:
构建包括实体要素层、属性层和数据层的语法树;
确定所述实体要素层的根节点,将案例步骤中的执行动作作为根节点的子节点,即执行动作节点,将案例步骤中相应的执行主体和执行受体为执行动作节点的子节点;
确定属性层的用于表示执行主体或执行受体的属性的树形结构;
将所述树形结构的根节点作为实体要素层的执行主体节点和/或执行受体节点的子节点;
所述树形结构的根节点为操作符节点,通过所述操作符节点的两个子节点分别表示变量和值;
确定数据层中用于表示测试数据的节点;
待测试对象为无线闭塞中心,执行动作的执行主体为与无线闭塞中心连接的外部系统;
测试案例的执行通过外部系统与无线闭塞中心交互消息实现;其中,执行受体为执行动作的操作对象,包括执行动作为“发送”,执行受体为“消息”,即测试数据;
执行主体包括联锁或者列车自动保护系统,当执行主体为联锁时,执行动作还包括设置、激活、取消、出清或解锁,相应的执行受体分别为进路、灾害、进路或灾害、进路、进路;
将语法树转换为能够被测试引擎识别的测试脚本,包括:
根据第八映射表,将执行动作转换为执行动作接口函数,其中,第八映射表为函数接口对象和实体接口对象映射表,用于描述执行主体与接口对象的对应关系,以及描述执行动作和接口函数之间的映射关系;
将执行主体转换为执行动作接口函数的执行实体对象;
基于第七映射表获取对应的接口对象标识,根据数据类型的属性的解析,确定接口函数的输入参数,其中,第七映射表为数据类型接口对象表,用于描述数据类型的字段变量的属性和字段的关系;
将执行受体对应的测试数据作为执行动作接口函数的输入参数。
2.根据权利要求1所述的案例自动解析方法,其特征在于,
案例步骤包括测试步骤和/或与测试步骤相对应的测试预期。
3.根据权利要求2所述的案例自动解析方法,其特征在于,
所述词法分析包括将案例步骤的描述字符串流转化为关键字单词流;
所述描述字符串流包括以指定分隔符连接的字符串形式的实体单元。
4.根据权利要求2所述的案例自动解析方法,其特征在于,获取案例步骤中的实体单元包括:
获取由第一标记符标记的属性;和/或
获取由第二标记符标记的定语。
5.根据权利要求2所述的案例自动解析方法,其特征在于,获取案例步骤中的实体单元包括:
获取由第三标记符标记的测试数据,基于第二文法规则,解析测试数据。
6.根据权利要求2所述的案例自动解析方法,其特征在于,获取案例步骤中的实体单元包括:
将案例步骤解析为执行主体、执行动作和执行受体的有序组合;
对执行主体和执行受体分别进行递归解析,确定执行主体和执行受体各自包含的子对象实体单元之间的操作关系。
7.根据权利要求6所述的案例自动解析方法,其特征在于,获取案例步骤中的实体单元还包括:
将属性实体单元作为叶子节点,确定叶子节点的数据类型或定义为空值。
8.根据权利要求2所述的案例自动解析方法,其特征在于,构建语法树包括:
对所述词法单元进行语法分析,基于指定的文法规则,构建语法树。
9.根据权利要求5所述的案例自动解析方法,其特征在于,所述构建语法树包括:
将通过语法分析构建的语法树作为中间语法树,基于关键字映射表,对中间语法树进行语义分析,确定最终的语法树。
10.根据权利要求9所述的案例自动解析方法,其特征在于,基于关键字映射表,对中间语法树进行语义分析包括:
根据第一映射表判断执行主体节点与相应的执行动作节点是否满足对应关系;和/或
根据第二映射表确定消息类型是否与执行主体、执行动作和执行受体的组合相一致;和/或
根据全局变量映射表,将对应的语法树节点中的变量名称替换为对应的值;和/或
通过变量类型映射表中的局部表临时存储对应的变量名称和变量的值。
11.根据权利要求1所述的案例自动解析方法,其特征在于,将语法树转换为能够被测试引擎识别的测试脚本,包括:
对语法树进行遍历,根据接口实体映射表将语法树中的对象节点进行接口对象转换处理,转换为接口对象;根据脚本语言关键字映射表进行脚本语言转换逻辑处理,生成接口对象的属性信息和接口函数;执行语法树解析转换逻辑,获得以脚本语言形成的目标脚本。
12.根据权利要求1所述的案例自动解析方法,其特征在于,将语法树转换为能够被测试引擎识别的测试脚本,包括:
通过数据类型接口对象构建测试数据对应的数据对象;
对于测试数据对应的数据类型接口对象、执行动作对应的接口函数对象和执行主体对应的接口实体对象,均以对象形式访问其数据成员或者方法。
13.一种案例自动解析装置,其特征在于,包括:
案例解析单元,用于基于指定的文法规则,对用自然语言编写的测试案例进行解析,构建语法树;
脚本转换单元,用于将语法树转换为能够被测试引擎识别的测试脚本;
其中,解析测试案例包括获取案例步骤中的一组执行主体、执行动作和执行受体;
基于指定的文法规则,对用自然语言编写的测试案例进行解析包括:
基于第一文法规则,对测试案例的案例步骤进行词法分析,获取案例步骤中的实体单元,并根据获得的实体单元生成词法单元对象;
获取案例步骤中的实体单元包括:
将执行主体、执行受体、属性和测试数据作为非终结实体;
将执行动作、变量、数值、操作符作为终结实体;
将分隔符和定语为作非对象实体;
所述构建语法树包括:
构建包括实体要素层、属性层和数据层的语法树;
确定所述实体要素层的根节点,将案例步骤中的执行动作作为根节点的子节点,即执行动作节点,将案例步骤中相应的执行主体和执行受体为执行动作节点的子节点;
确定属性层的用于表示执行主体或执行受体的属性的树形结构;
将所述树形结构的根节点作为实体要素层的执行主体节点和/或执行受体节点的子节点;
所述树形结构的根节点为操作符节点,通过所述操作符节点的两个子节点分别表示变量和值;
确定数据层中用于表示测试数据的节点;
待测试对象为无线闭塞中心,执行动作的执行主体为与无线闭塞中心连接的外部系统;
测试案例的执行通过外部系统与无线闭塞中心交互消息实现;其中,执行受体为执行动作的操作对象,包括执行动作为“发送”,执行受体为“消息”,即测试数据;
执行主体包括联锁或者列车自动保护系统,当执行主体为联锁时,执行动作还包括设置、激活、取消、出清或解锁,相应的执行受体分别为进路、灾害、进路或灾害、进路、进路;
将语法树转换为能够被测试引擎识别的测试脚本,包括:
根据第八映射表,将执行动作转换为执行动作接口函数,其中,第八映射表为函数接口对象和实体接口对象映射表,用于描述执行主体与接口对象的对应关系,以及描述执行动作和接口函数之间的映射关系;
将执行主体转换为执行动作接口函数的执行实体对象;
基于第七映射表获取对应的接口对象标识,根据数据类型的属性的解析,确定接口函数的输入参数,其中,第七映射表为数据类型接口对象表,用于描述数据类型的字段变量的属性和字段的关系;
将执行受体对应的测试数据作为执行动作接口函数的输入参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310044817.8A CN115794119B (zh) | 2023-01-30 | 2023-01-30 | 一种案例自动解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310044817.8A CN115794119B (zh) | 2023-01-30 | 2023-01-30 | 一种案例自动解析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794119A CN115794119A (zh) | 2023-03-14 |
CN115794119B true CN115794119B (zh) | 2023-06-30 |
Family
ID=85429171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310044817.8A Active CN115794119B (zh) | 2023-01-30 | 2023-01-30 | 一种案例自动解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794119B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117874308B (zh) * | 2024-03-12 | 2024-05-24 | 北京全路通信信号研究设计院集团有限公司 | 一种列控数据获取方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3064771A1 (en) * | 2017-06-01 | 2018-12-06 | Royal Bank Of Canada | System and method for test generation |
CN112306841B (zh) * | 2019-07-26 | 2022-09-09 | 比亚迪股份有限公司 | 轨道业务的自动化测试方法、装置及设备 |
CN113807077B (zh) * | 2021-09-24 | 2024-07-02 | 宁波金朔智能科技有限公司 | 自然语言测试脚本解析处理方法、装置及电子设备 |
-
2023
- 2023-01-30 CN CN202310044817.8A patent/CN115794119B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115794119A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111259394B (zh) | 一种基于图神经网络的细粒度源代码漏洞检测方法 | |
CN112541180B (zh) | 一种基于语法特征和语义特征的软件安全漏洞检测方法 | |
US7685082B1 (en) | System and method for identifying, prioritizing and encapsulating errors in accounting data | |
US5446652A (en) | Constraint knowledge in simulation modeling | |
CN109033843B (zh) | 用于分布式静态检测系统的Java文件依赖性分析方法及模块 | |
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
CN107203468B (zh) | 一种基于ast的软件版本演化对比分析方法 | |
CN111240687A (zh) | 源代码静态分析装置 | |
CN111240982A (zh) | 源代码静态分析方法 | |
CN113191148B (zh) | 一种基于半监督学习和聚类的轨道交通实体识别方法 | |
CN114297654A (zh) | 一种源代码层级的智能合约漏洞检测方法及系统 | |
CN109857641A (zh) | 对程序源文件进行缺陷检测的方法及装置 | |
CN117215935A (zh) | 一种基于多维度代码联合图表示的软件缺陷预测方法 | |
CN115794119B (zh) | 一种案例自动解析方法及装置 | |
CN116450616A (zh) | 一种基于解析树的通用异构关系型数据库sql迁移方法 | |
Meilong et al. | An approach to semantic and structural features learning for software defect prediction | |
CN116361147A (zh) | 测试用例根因定位方法及其装置、设备、介质、产品 | |
CN115080448B (zh) | 一种软件代码不可达路径自动检测的方法和装置 | |
CN114064487A (zh) | 一种代码缺陷检测方法 | |
Reynolds et al. | Datatypes with shared selectors | |
CN117648093A (zh) | 基于大模型和自定制需求模板的rpa流程自动化生成方法 | |
CN113778852B (zh) | 一种基于正则表达式的代码分析方法 | |
CN103559296A (zh) | 一种基于xml的scpi命令解析方法 | |
CN115774558B (zh) | 一种测试案例自动扩展方法及装置 | |
CN117113080A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |