掌桥专利:专业的专利平台
掌桥专利
首页

测试脚本自动化生成方法、装置、存储介质及处理器

文献发布时间:2024-04-18 19:58:26


测试脚本自动化生成方法、装置、存储介质及处理器

技术领域

本发明涉及计算机技术领域,具体涉及一种测试脚本自动化生成方法、一种测试脚本自动化生成装置、一种机器可读存储介质及一种处理器。

背景技术

可信密码模块(Trusted Cryptography Module)要支持的功能非常庞大,其功能模块繁杂、接口指令数目庞大,各个版本的接口指令数几十条到上百条不等,而且大多数功能模块之间或接口指令之间彼此牵扯关联,技术逻辑非常复杂。为保证可信密码模块功能的正确性,也为了保证可信密码模块最终应用时的稳定性,必须要对可信密码模块各个功能模块的交互进行深入的测试。

目前,对于可信密码模块的功能测试大多是针对特定接口指令人工编写测试脚本。随着可信密码模块规范的技术内容越来越丰富、版本越来越多,其接口指令依然在不断新增,相同接口指令的参数定义在不同版本上也有差异。这些客观现实都导致无法采用统一的脚本测试所有可信密码模块产品。而靠人工编写和修改版本繁多的测试脚本,存在测试深度不够、编写效率低下、出错率高、不同人员编写的风格和测试深浅度不一致等问题。这些问题导致测试质量堪忧且测试脚本不宜维护,而且人为地去手动一一维护版本繁多的测试脚本,增加了编程人员的工作量。

发明内容

本发明实施例的目的是提供一种测试脚本自动化生成方法,该方法能够快速生成自动化测试脚本,从而降低测试人员手工编写、修改脚本的成本以及出错概率,提高了测试脚本的生成效率。

为了实现上述目的,本发明第一方面提供一种测试脚本自动化生成方法,所述方法包括:

获取被测对象的待配置参数、循环体文件以及支持文件;

根据所述被测对象的待配置参数,确定测试配置信息;

根据预置的脚本框架和所述测试配置信息生成目标脚本框架;

确定与所述被测对象对应的指令格式文件;

根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本。

可选的,所述被测对象的待配置参数包括:被测对象配置信息、被测对象属性信息、测试深度配置信息以及测试项目权重信息;所述测试配置信息包括第一测试配置信息和第二测试配置信息;

所述根据所述被测对象的待配置参数,确定测试配置信息,包括:

根据所述被测对象配置信息和所述被测对象属性信息,生成第一测试配置信息;

根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息。

可选的,所述根据预置的脚本框架和所述测试配置信息生成目标脚本框架,包括:根据预置的脚本框架和所述第二测试配置信息生成目标脚本框架。

可选的,所述被测对象配置信息包括:目标配置项以及与所述目标配置项对应的取值范围;所述目标配置项包括:所在分层配置项、授权类别配置项、会话类型配置项、加密与否配置项、层级深度配置项、对象类型配置项、NV类型配置项、NV大小配置项和关停启动类型配置项中的一种或者多种。

可选的,所述测试深度配置信息包括:目标配置项以及与所述目标配置项对应的测试深度值;所述测试项目权重信息包括:目标配置项以及与所述目标配置项对应的权重值;

所述根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息,包括:

根据目标配置项的第一测试配置信息以及与所述目标配置项对应的测试深度值,确定目标配置项的待测试项的数目;

根据所述目标配置项的待测试项的数目以及与所述目标配置项对应的权重值,确定第二测试配置信息。

可选的,所述被测对象属性信息包括:被测对象属性名称以及与所述被测对象属性名称对应的属性值;所述被测对象属性名称包括:被测对象版本名称;所述与所述被测对象属性名称对应的属性值,包括:与所述被测对象版本名称对应的版本配置值;

所述确定与所述被测对象对应的指令格式文件,包括:

根据所述版本配置值以及预置的指令格式文件集,确定与所述被测对象对应的指令格式文件。

可选的,所述根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本,包括:将所述指令格式文件、所述循环体文件以及所述支持文件整合到目标脚本框架中,生成目标测试脚本。

本申请第二方面提供一种测试脚本自动化生成装置,所述装置包括:

获取单元,用于获取被测对象的待配置参数、循环体文件以及支持文件;

第一确定单元,用于根据所述被测对象的待配置参数,确定测试配置信息;

第一生成单元,用于根据预置的脚本框架和所述测试配置信息生成目标脚本框架;

第二确定单元,用于确定与所述被测对象对应的指令格式文件;

第二生成单元,用于根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本。

可选的,所述被测对象的待配置参数包括:被测对象配置信息、被测对象属性信息、测试深度配置信息以及测试项目权重信息;所述测试配置信息包括第一测试配置信息和第二测试配置信息;

所述根据所述被测对象的待配置参数,确定测试配置信息,包括:

根据所述被测对象配置信息和所述被测对象属性信息,生成第一测试配置信息;

根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息。

可选的,所述根据预置的脚本框架和所述测试配置信息生成目标脚本框架,包括:根据预置的脚本框架和所述第二测试配置信息生成目标脚本框架。

可选的,所述被测对象配置信息包括:目标配置项以及与所述目标配置项对应的取值范围;所述目标配置项包括:所在分层配置项、授权类别配置项、会话类型配置项、加密与否配置项、层级深度配置项、对象类型配置项、NV类型配置项、NV大小配置项和关停启动类型配置项中的一种或者多种。

可选的,所述测试深度配置信息包括:目标配置项以及与所述目标配置项对应的测试深度值;所述测试项目权重信息包括:目标配置项以及与所述目标配置项对应的权重值;

所述根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息,包括:

根据目标配置项的第一测试配置信息以及与所述目标配置项对应的测试深度值,确定目标配置项的待测试项的数目;

根据所述目标配置项的待测试项的数目以及与所述目标配置项对应的权重值,确定第二测试配置信息。

可选的,所述被测对象属性信息包括:被测对象属性名称以及与所述被测对象属性名称对应的属性值;所述被测对象属性名称包括:被测对象版本名称;所述与所述被测对象属性名称对应的属性值,包括:与所述被测对象版本名称对应的版本配置值;

所述确定与所述被测对象对应的指令格式文件,包括:

根据所述版本配置值以及预置的指令格式文件集,确定与所述被测对象对应的指令格式文件。

可选的,所述根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本,包括:将所述指令格式文件、所述循环体文件以及所述支持文件整合到目标脚本框架中,生成目标测试脚本。

本申请第三方面提供一种处理器,被配置成执行上述的测试脚本自动化生成方法。

本申请第四方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行上述的测试脚本自动化生成方法。

通过上述技术方案,本发明方案利用被测对象的待配置参数确定测试配置信息,再根据预置的脚本框架和测试配置信息生成目标脚本框架,然后确定出与所述被测对象对应的指令格式文件,最后根据目标脚本框架、指令格式文件、循环体文件以及支持文件,生成目标测试脚本。本发明方案能够快速生成自动化测试脚本,从而降低测试人员手工编写、修改脚本的成本以及出错概率,提高了测试脚本的生成效率。

本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:

图1示意性示出了根据本申请实施例的测试脚本自动化生成方法的流程示意图;

图2示意性示出了根据本申请实施例的测试脚本自动化生成装置输入输出关系图;

图3示意性示出了根据本申请实施例的测试脚本自动化生成装置处理流程图;

图4示意性示出了根据本申请实施例的测试脚本自动化生成装置的结构框图。

具体实施方式

以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。

需要说明,若本申请实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。

可信计算是增强信息系统安全的一种关键技术,它可以为其宿主环境建立可信的计算环境。不同于安全技术,可信计算可以从硬件可信根开始,经由BIOS、操作系统、业务应用等各个环节对整个系统产生一条信任链,任何一个环节被篡改都会导致整个可信链条的断裂,从而保证整个系统是真实、正确的且可被信任的状态。

基于可信计算的技术特点,自问世开始就不断地被全世界的各个机构组织进行技术研究和商业推广。具体实现方式种类繁多:从可信根物理形态上可分为硬可信和软可信;从技术发展的地域上可分为国外的可信平台模块(Trusted Platform Module,TPM)技术及国内的可信密码模块(Trusted Cryptography Module)技术。其中,作为可信架构的核心也是可信根的核心部件的可信密码模块直接决定了整个可信系统功能正确性与健壮性。

因为可信密码模块要支持的功能非常庞大,所以其功能模块繁杂、接口指令数目庞大,各个版本的接口指令数几十条到上百条不等,而且大多数功能模块之间或接口指令之间彼此牵扯关联,技术逻辑非常复杂。

实现逻辑关系如此复杂的可信密码模块程序对于开发者来讲是非常大的挑战。为保证可信密码模块功能的正确性,也为了保证其最终应用时的稳定性,必须要对其各个功能模块的交互进行深入的测试。目前,可信密码模块测试采用的主要是以接口指令为单位编写测试用例或脚本,例如,测试创建对象指令的脚本就只针对该接口指令的各个参数和功能进行测试。

目前,对于可信密码模块的功能测试大多是针对特定接口指令编写测试脚本,这样的测试虽然对于接口指令本身的功能测试的比较充分,但对于接口指令之间或者功能模块之间作为一个整体协调工作的系统性测试却是缺失的。另外,如果靠人工编写接口指令协同工作的测试用例又存在测试复杂度低下,低下的测试复杂度是与可信密码模块的复杂程度不匹配的。可信密码模块产品在实际应用时的业务不同,遵循的标准规范版本也不尽相同,不同芯片上的资源也存在差异。另外,随着可信密码模块规范的技术内容越来越丰富、版本越来越多,其接口指令依然在不断新增,相同接口指令的参数定义在不同版本上也有差异。这些客观现实都导致无法采用统一的脚本测试所有可信密码模块产品。而靠人工编写和修改版本繁多的测试脚本无论从效率上还是质量上都有较大的问题和隐患。

综上,现有技术的缺点的本质都是人工编写。而对于较为复杂的测试,人工编写客观上会存在较多问题:测试深度不够、编写效率低下、出错率高、不同人员编写的风格和测试深浅度不一致等等。这些问题导致测试质量堪忧且测试脚本不宜维护,而且人为地去手动一一维护版本繁多的测试脚本是不可想象的。

图2示意性示出了根据本申请实施例的测试脚本自动化生成装置输入输出关系图。针对现有技术存在的人工编写测试脚本测试深度不够、编写效率低下、出错率高、不同人员编写的风格和测试深浅度不一致以及测试脚本不宜维护的问题,本发明方案提出了一种测试脚本自动化生成方法及装置,如图2所示,利用被测对象配置信息、被测对象属性信息、测试深度配置信息、测试项目权重信息、循环体文件、支持文件、预置的脚本框架以及循环体文件,由相应的处理模块计算生成测试脚本,解决上述人工编写带来的问题。本发明方案既能够有效提高测试脚本的生成效率,又能够生成满足测试深度要求以及权重要求的测试脚本,提升了可信密码模块系统化测试的质量。

图1示意性示出了根据本申请实施例的测试脚本自动化生成方法的流程示意图。如图1所示,本发明实施方式提供一种测试脚本自动化生成方法,所述方法包括:

步骤110,获取被测对象的待配置参数、循环体文件以及支持文件。

具体地,所述被测对象的待配置参数包括:被测对象配置信息、被测对象属性信息、测试深度配置信息以及测试项目权重信息。

具体地,所述被测对象配置信息包括:目标配置项以及与所述目标配置项对应的取值范围;所述目标配置项包括:所在分层配置项、授权类别配置项、会话类型配置项、加密与否配置项、层级深度配置项、对象类型配置项、NV类型配置项、NV大小配置项和关停启动类型配置项中的一种或者多种。

具体地,被测对象配置信息来自于配置表。在执行脚本生成动作前通过填写配置表模板来得到配置表。配置表模板是最终脚本中所有配置项可取值的集合。这些配置值都是与可信密码模块功能密切相关、且不受版本不同影响的配置值。这些配置值示例如表1所示:

表1配置表模板

测试会基于该表中的配置项进行,这些配置值是各个功能项可取值的全集,可以结合测试项目权重表一起使用,生成最终用于测试的配置表。

在表1中,所在分层配置项指的是测试需要覆盖的分层。由于可信密码模块共3个分层,每个分层的技术要求和特性都有差异,这些差异可能会对测试结果产生影响。所以所在分层是必须要考虑的测试配置项。

授权类别配置项指的是可信密码模块中访问对象所有能进行的授权方式,每个授权方式的复杂程度及应用场景各有不同,其与会话类型等配置项也存在关联。所以授权类别是必须要考虑的测试配置项。

会话类型决定了会话建立的方式,而会话的建立是HMAC授权方式、Policy授权方式下必须依赖的操作,而且会和加密与否的配置项一起决定加密会话的建立方式。所以会话类型是必须要考虑的测试配置项。

在对象创建等涉及到敏感数据的操作中都可以进行加密操作以保护数据的私密性,其与会话类型相关联,在实际业务应用中是关键的功能项,所以加密与否是必须要考虑的测试配置项。

不同的应用场景和产品需求对可信密码模块可支持的层级深度有不同的要求。层级深度的不同,对于可信密码模块内部文件系统或者文件管理功能提出的挑战是不同的。明确层级要求后,保证各个层级深度下的对象创建、载入和使用是必须的,所以层级深度是必须要考虑的测试配置项。

可信密码模块需要支持不同对象类型以应对不同的业务需求,不同类型的对象在创建规则、算法调用等方面都存在较多差异。同时,对象类型也与层级深度相关,决定了该对象能够支持的接口指令。所以对象类型是必须要考虑的测试配置项。

NV类型和NV大小是可信密码模块上对实现业务需求非常重要配置项,它们反映了可信密码模块上非易失性存储器的特性,测试时要确保这些特性在其标称的范围内可正常工作,这是必须要考虑的测试配置项。N

可信密码模块运行时始终有一套上下文变量,这些变量包括平台分层的授权值、具有hybird属性的NV等等。在Reset、Restart或Resume操作执行后,这些上下文变量的值应根据具体的重启类型来被清除或被保留。每次重启后,应检查当前类型重启后的上下文变量是否正确。该测试配置项是必须要考虑的。

表1中的测试配置项是比较关键、比较典型的配置项,这些配置项综合在一起进行的测试是对可信密码模块各功能模块之间的交互能力的深度测试,大大提高了单纯接口指令无法达到的测试强度和测试深度。这些配置项并非不可调整,在实际应用时可根据具体情况对这些配置项进行扩展或者调整。

具体地,所述被测对象属性信息包括:被测对象属性名称以及与所述被测对象属性名称对应的属性值。被测对象属性信息来自于被测对象属性表。不同的被测对象在存储能力、程序设计等方面会存在差异,所以具体的测试脚本也要根据对象本身的这些特性进行调整。被测对象属性表就是将这些特性提取出来由测试人员在测试之前进行配置,从而可以在不改变测试逻辑的情况下方便地对不同的对象进行测试。被测对象属性表的示例如表2所示:

表2被测对象属性表

在表2中,可信密码模块规范版本这个属性是被测对象遵照的可信密码模块标准规范的版本,目前主流的标准规范包括国家密码局发布的规范、TCG组织发布的规范以及ISO/IEC组织发布的规范,可以用{GM,TCG01.59,ISOIEC11889-2015}这个集合来标识这些标准规范,具体配置时可以取其中的一项。

可支持最大的层级深度指的是对象创建可达到的最大层级,比如采用CreatePrimary指令创建的对象1(主对象)是层级1,在其下创建的非叶子节点的对象2为层级2,在对象2下继续创建子对象,直至无法创建时最终叶子节点所处的层级就是最大层级深度。程序设计、芯片存储容量及使用需求等因素都会对其造成影响,所以需要在测试之前进行配置。

NV大小指的是能用来使用的最大NV空间,每个被测对象在这个特征上所能达到的值不尽相同,从而会影响后续自动化产出的脚本测试代码,所以需要在测试前进行配置。

上述这些属性值独立于测试逻辑,在每次测试前直接配置即可,不需要对测试脚本进行任何改动。脚本自动化生成装置会根据这些值来直接生成对应的测试代码,无需人为手动调整。同样,这些属性值也并非不可调整,在实际应用时可根据具体情况对这些属性进行扩展或者调整。

具体地,所述测试深度配置信息包括:目标配置项以及与所述目标配置项对应的测试深度值。在可信密码模块的实际测试中,不同测试阶段对于测试深度的要求不尽相同。而且不同情况下对于测试时间的要求也不同。在要求全面测试的回归测试中,可以基于测试配置表中所有的配置项进行全量测试,但对于中间版本的快速迭代验证测试的情况则希望测试深度配置为非全量值来快速地进行验证。测试深度配置表和测试项目权重表可联合使用来决定最终的测试深度。测试深度配置表的示例如表3所示:

表3测试深度配置表

在表3中,总体配置值这个配置项适用于所有测试深度值为NULL的测试项,对于很多缺省使用默认测试深度测试项,可方便地采用该值进行一键设置测试深度。而对于某些测试深度不同于总体配置值的测试项,则可单独配置其测试深度值。例如,表3中的授权类别、会话类型以及对象类型,一旦这些单项配置了具体值,则测试时候就按单项的配置值处理。

具体地,所述测试项目权重信息包括:目标配置项以及与所述目标配置项对应的权重值。若在测试时需要偏重于测试某些项目,则可通过测试项目权重表来改变测试项目的权重,从而提升这些项被测试的概率。测试项目权重表中的各个测试项的权重值决定了各测试配置项被测概率。该表的各个项及权重值集合都是与配置表模板相对应的。测试项目权重表的示例如表4所示。

表4测试项目权重表

步骤120,根据所述被测对象的待配置参数,确定测试配置信息。

具体地,所述测试配置信息包括第一测试配置信息和第二测试配置信息;所述根据所述被测对象的待配置参数,确定测试配置信息,包括:根据所述被测对象配置信息和所述被测对象属性信息,生成第一测试配置信息;根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息。

具体地,被测对象配置信息指的是配置表中的配置项、与所述配置项对应的标识以及与所述配置项对应的取值范围,如表1所示。被测对象属性信息指的是被测对象属性表中的属性名称、与所述属性名称对应的属性标识以及与所述属性名称对应的属性值,如表2所示。具体地,根据产品属性值更新配置表之后得到的全量测试配置表中的信息,即第一测试配置信息。

具体地,测试深度配置信息指的是测试深度配置表中的配置项、与所述配置项对应的标识以及与所述配置项对应的测试深度值,如表3所示。具体地,测试项目权重信息指的是测试项目权重表中的配置项、与所述配置项对应的标识以及与所述配置项对应权重值,如表4所示。

具体地,所述根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息,包括:根据目标配置项的第一测试配置信息以及与所述目标配置项对应的测试深度值,确定目标配置项的待测试项的数目;根据所述目标配置项的待测试项的数目以及与所述目标配置项对应的权重值,确定第二测试配置信息。

图3示意性示出了根据本申请实施例的测试脚本自动化生成装置处理流程图。具体地,第一测试配置信息指的是根据产品属性值更新配置表之后得到的全量测试配置表中的信息,如图3所示。第二测试配置信息指的是根据测试深度以及权重计算出的最终测试配置表中的信息,如图3所示。测试深度配置表、测试项目权重表两个表是在配置表模板的基础上,结合起来使用,从而获得最终的测试项配置表。首先,按照测试深度配置表中的测试深度配置值来计算出配置表模板中各测试项集合中最终被测项的数目。然后,再根据测试权重表中的权重值来计算最终要测试哪些项。

例1:确定最终会测试到的会话类型。配置表模板中会话类型共有4项,测试深度配置表中该项的测试深度配置值是50%,计算最终被测试项的数目:4*50%=2,表示需要在配置表模板中的会话类型集合中取2项来进行测试。而根据测试项目权重表中对于会话类型的权重分配,Salted&bound权重最大则该会话类型是必测的,而Bound与Salted的权重相等则随机选取其一进行测试,例如随机选取的是Bound项,则最后要进行测试的会话类型集合是{Bound,Salted&bound}。

例2:确定最终会测试到的授权类别。配置表模板中授权类别共有3项,根据测试深度配置表中配置的60%,计算最终被测试项的数目:3*60%=1.8,取值为2,表示需要在配置表模板中的授权类别集合中取2项进行测试。而根据测试项目权重表中对于授权类别的权重分配,HMAC和Policy的权重为前两位则这两种授权模式是必测的,PWD就不在测试范围了。最后要进行测试的授权类别集合就是{HMAC,Policy}。

步骤130,根据预置的脚本框架和所述测试配置信息生成目标脚本框架。

具体地,预置的脚本框架指的是脚本框架模板。测试配置信息可以是根据测试深度以及权重计算出的最终测试配置信息,该信息可以通过最终测试配置表展示。目标脚本框架指的是根据最终测试配置表以及脚本框架模板生成的最终的脚本框架。测试深度配置表、测试项目权重表两个表是在配置表模板的基础上,结合起来使用,从而获得最终的测试项配置表。具体地,将最终测试配置表中的配置值,加入到脚本框架模板中,生成最终的脚本框架,如图3所示。

步骤140,确定与所述被测对象对应的指令格式文件。

具体地,所述确定与所述被测对象对应的指令格式文件,包括:根据所述版本配置值以及预置的指令格式文件集,确定与所述被测对象对应的指令格式文件。可选地,根据被测对象属性表中指示的可信密码模块标准规范版本选定与所述被测对象对应的指令格式文件。

具体地,因为不同版本的可信密码模块遵照的标准版本不同,而且某些可自定义的接口指令也会因产品实现不同而存在差异,这种情况下无法采用统一的接口指令格式文件来实现对所有测试对象的支持。所以需要建立一个指令格式文件集来支撑对不同测试对象的支持。该集合中包含了所有会使用到的接口指令格式文件,脚本自动化生成时自动化生成装置会根据配置表中的配置值来选取该集合中的某个接口指令格式文件作为最终测试库中的文件。在例4中,测试代码指令SetCommandCodeAuditStatus所在的CMD文件就是自动化生成装置从被测对象属性表读出版本信息后,在指令格式文件集中检索到的指令格式文件。

步骤150,根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本。

具体地,目标脚本框架指的是根据最终测试配置表以及脚本框架模板生成的最终的脚本框架,如图3所示。目标脚本框架可以通过步骤130获得。目标测试脚本指的是本发明最终需要生成的测试脚本。具体地,将指令格式文件、循环体文件以及所述支持文件整合到目标脚本框架,生成目标测试脚本。

具体地,循环体文件中包含有代码,循环体文件中的代码是最终脚本中循环体中的测试代码,这些代码是实现测试动作的核心代码,例如例3循环体框架代码示例中的TestFunction()。

例3:循环体框架代码示例(该示例采用python语言表达测试逻辑,具体实现时与语言无关):

上述代码只是示意,所以不包含所有的配置项,仅以3个配置项(所在分层配置项、授权类别配置项、会话类型配置项)为例。每个集合中的值取决于上述提到的基于配置表模板,经过被测对象属性表、深度测试配置表、测试项目权重表共同处理后的最终的测试配置值。TestFunction是最终执行测试的代码,下面会进行说明。

结合上述的例3,下面的例4给出循环体文件如何来实现测试执行动作的示例(该示例只是为配合该专利文件进行说明,并非全部代码)。

例4:循环体文件代码示例(该示例采用python语言表达测试逻辑,具体实现时与语言无关)

例4的代码给出了循环体文件中模块化实现配置测试的例子。该代码中有一些用于实现特定功能的封装函数,例如Startup()、CreateProcess(),这些函数的封装独立于循环体文件,即便进行修改也不会影响循环体文件的测试逻辑。CreateProcess()函数返回的4个对象能够为后续测试代码提供可用对象,是测试前提,例如创建会话会用到的绑定对象PO_bind、加盐对象PO_salt、签名会用到的PO_Sign,以及会持续创建子对象的PO_create。

在该文件中也会根据最终的测试配置值决定代码执行分支,例如根据AccessConfig的值来确认是否需要创建会话,并根据SessionConfig来确认创建何种会话。

循环体文件的代码采用模块化处理:

1)将可复用的测试代码封装成过程函数独立维护,例如例4中的Startup函数是测试装置与可信密码模块建立物理连接、执行Startup接口指令的过程函数;

2)具体的接口指令由另外的文件实现,在该测试代码中只进行接口调用,以避免不必要的代码耦合在可信密码模块的版本及实现不同时而带来脚本兼容性问题。例如例4中的SetCommandCodeAuditStatus接口函数并未直接在循环体文件中定义,而是调用专门实现各个接口指令的CMD文件中的对应接口函数;

3)有大量的变量由之前的测试配置表和循环体结构的循环值所决定。例4中的创建对象过程函数的入参HierarchyConfig、AccessConfig都取决于最终测试配置表中的配置值。

本发明方案提出了一种测试脚本自动化生成方法及装置,利用被测对象配置信息、被测对象属性信息、测试深度配置信息、测试项目权重信息、循环体文件、支持文件、预置的脚本框架以及循环体文件,由相应的处理模块计算生成测试脚本,解决了人工编写带来的测试深度不够、编写效率低下、出错率高、不同人员编写的风格和测试深浅度不一致等问题。本发明方案既能够有效提高测试脚本的生成效率,又能够生成满足测试深度要求以及权重要求的测试脚本,提升了可信密码模块系统化测试的质量。

在一个实施例中,如图4所示,提供了测试脚本自动化生成装置,包括获取单元、第一确定单元、第一生成单元、第二确定单元和第二生成单元,其中:

获取单元210,用于获取被测对象的待配置参数、循环体文件以及支持文件。

第一确定单元220,用于根据所述被测对象的待配置参数,确定测试配置信息。

第一生成单元230,用于根据预置的脚本框架和所述测试配置信息生成目标脚本框架。

第二确定单元240,用于确定与所述被测对象对应的指令格式文件。

第二生成单元250,用于根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本。

进一步地,所述被测对象的待配置参数包括:被测对象配置信息、被测对象属性信息、测试深度配置信息以及测试项目权重信息;所述测试配置信息包括第一测试配置信息和第二测试配置信息;

所述根据所述被测对象的待配置参数,确定测试配置信息,包括:

根据所述被测对象配置信息和所述被测对象属性信息,生成第一测试配置信息;

根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息。

进一步地,所述根据预置的脚本框架和所述测试配置信息生成目标脚本框架,包括:根据预置的脚本框架和所述第二测试配置信息生成目标脚本框架。

进一步地,所述被测对象配置信息包括:目标配置项以及与所述目标配置项对应的取值范围;所述目标配置项包括:所在分层配置项、授权类别配置项、会话类型配置项、加密与否配置项、层级深度配置项、对象类型配置项、NV类型配置项、NV大小配置项和关停启动类型配置项中的一种或者多种。

进一步地,所述测试深度配置信息包括:目标配置项以及与所述目标配置项对应的测试深度值;所述测试项目权重信息包括:目标配置项以及与所述目标配置项对应的权重值;

所述根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息,包括:

根据目标配置项的第一测试配置信息以及与所述目标配置项对应的测试深度值,确定目标配置项的待测试项的数目;

根据所述目标配置项的待测试项的数目以及与所述目标配置项对应的权重值,确定第二测试配置信息。

进一步地,所述被测对象属性信息包括:被测对象属性名称以及与所述被测对象属性名称对应的属性值;所述被测对象属性名称包括:被测对象版本名称;所述与所述被测对象属性名称对应的属性值,包括:与所述被测对象版本名称对应的版本配置值;

所述确定与所述被测对象对应的指令格式文件,包括:

根据所述版本配置值以及预置的指令格式文件集,确定与所述被测对象对应的指令格式文件。

进一步地,所述根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本,包括:将所述指令格式文件、所述循环体文件以及所述支持文件整合到目标脚本框架中,生成目标测试脚本。

所述测试脚本自动化生成装置包括处理器和存储器,上述获取单元、第一确定单元、第一生成单元、第二确定单元和第二生成单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现测试脚本自动化生成方法。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述测试脚本自动化生成方法。

本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述测试脚本自动化生成方法。

本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:

步骤110,获取被测对象的待配置参数、循环体文件以及支持文件。

步骤120,根据所述被测对象的待配置参数,确定测试配置信息。

步骤130,根据预置的脚本框架和所述测试配置信息生成目标脚本框架。

步骤140,确定与所述被测对象对应的指令格式文件。

步骤150,根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本。

进一步地,所述被测对象的待配置参数包括:被测对象配置信息、被测对象属性信息、测试深度配置信息以及测试项目权重信息;所述测试配置信息包括第一测试配置信息和第二测试配置信息;

所述根据所述被测对象的待配置参数,确定测试配置信息,包括:

根据所述被测对象配置信息和所述被测对象属性信息,生成第一测试配置信息;

根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息。

进一步地,所述根据预置的脚本框架和所述测试配置信息生成目标脚本框架,包括:根据预置的脚本框架和所述第二测试配置信息生成目标脚本框架。

进一步地,所述被测对象配置信息包括:目标配置项以及与所述目标配置项对应的取值范围;所述目标配置项包括:所在分层配置项、授权类别配置项、会话类型配置项、加密与否配置项、层级深度配置项、对象类型配置项、NV类型配置项、NV大小配置项和关停启动类型配置项中的一种或者多种。

进一步地,所述测试深度配置信息包括:目标配置项以及与所述目标配置项对应的测试深度值;所述测试项目权重信息包括:目标配置项以及与所述目标配置项对应的权重值;

所述根据所述测试深度配置信息、所述测试项目权重信息以及所述第一测试配置信息,生成第二测试配置信息,包括:

根据目标配置项的第一测试配置信息以及与所述目标配置项对应的测试深度值,确定目标配置项的待测试项的数目;

根据所述目标配置项的待测试项的数目以及与所述目标配置项对应的权重值,确定第二测试配置信息。

进一步地,所述被测对象属性信息包括:被测对象属性名称以及与所述被测对象属性名称对应的属性值;所述被测对象属性名称包括:被测对象版本名称;所述与所述被测对象属性名称对应的属性值,包括:与所述被测对象版本名称对应的版本配置值;

所述确定与所述被测对象对应的指令格式文件,包括:

根据所述版本配置值以及预置的指令格式文件集,确定与所述被测对象对应的指令格式文件。

进一步地,所述根据所述目标脚本框架、所述指令格式文件、所述循环体文件以及所述支持文件,生成目标测试脚本,包括:将所述指令格式文件、所述循环体文件以及所述支持文件整合到目标脚本框架中,生成目标测试脚本。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 生成网络拓扑的方法、装置、存储介质和处理器
  • 一种分布式文件存储方法、装置、处理器及存储介质
  • 存储设备的访问方法、装置、存储介质及处理器
  • 图像生成方法、装置,图像显示方法、装置和存储介质
  • 样本存储路径生成方法、装置、计算机设备及存储介质
  • 自动驾驶仿真测试脚本的自动化生成方法、装置、生成设备及存储介质
  • 自动化测试脚本的生成方法、装置、电子设备及存储介质
技术分类

06120116489614