CN115328456A - 基于xml支持自动化测试脚本语言的实现方法 - Google Patents

基于xml支持自动化测试脚本语言的实现方法 Download PDF

Info

Publication number
CN115328456A
CN115328456A CN202210864283.9A CN202210864283A CN115328456A CN 115328456 A CN115328456 A CN 115328456A CN 202210864283 A CN202210864283 A CN 202210864283A CN 115328456 A CN115328456 A CN 115328456A
Authority
CN
China
Prior art keywords
test
script
xml
keyword
keywords
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
CN202210864283.9A
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.)
Unittec Co Ltd
Original Assignee
Unittec Co Ltd
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 Unittec Co Ltd filed Critical Unittec Co Ltd
Priority to CN202210864283.9A priority Critical patent/CN115328456A/zh
Publication of CN115328456A publication Critical patent/CN115328456A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提出了基于xml支持自动化测试脚本语言的实现方法,包括读取脚本解析执行器的INI配置配置文件,得到基于xml语言编写的由关键字驱动的测试驱动代码;对脚本解析执行器进行初始化处理,读取测试脚本文件用例基本信息;获取用户选择执行的用例信息列表,依次加载测试用例脚本详细信息;检查测试脚本执行步骤关键字以及输入输出参数,在匹配关键字调用关键字入口函数后,执行关键字对应的功能并获取执行后的返回结果。通过提供关键字作为脚本编写的基本单位,提高了测试开发效率。支持关键字参数数据的简易表示法,大幅降低脚本代码编写和维护的工作量。支持代码多个复合子步骤的简易编码方法,满足各种场景的测试需求。

Description

基于xml支持自动化测试脚本语言的实现方法
技术领域
本申请属于编程语言领域,尤其涉及基于xml支持自动化测试脚本语言的实现方法。
背景技术
在轨道交通行业,地铁信号系统软件测试方法主要有手工测试和自动化测试两种,随着测试工作量的持续增加以及人力成本的上升,自动化测试变得越来越重要。
目前常规的开发语言如C/C++、C#、Java或通用脚本语言等对普通测试人员来说学习门槛高、使用难度大,需花费很多时间和精力用于调试或关注测试用例脚本代码开发外的事情,直接用于测试用例脚本代码开发效率偏低,在测试开发方面不具备优势。亟需开发实现一种简单易用、测试开发效率高、使测试开发人员专注于用例实现的测试专用脚本语言就变得很有必要。
发明内容
为了解决现有技术中存在的缺点和不足,本申请提出了基于xml支持自动化测试脚本语言的实现方法,解决了测试开发人员开发效率低下的问题。
具体的,本实施例提出基于xml支持自动化测试脚本语言的实现方法,包括:
S1,读取脚本解析执行器的INI配置配置文件,得到基于xml语言编写的由关键字驱动的测试驱动代码;
S2,对脚本解析执行器进行初始化处理,读取测试脚本文件用例基本信息;
S3,获取用户选择执行的用例信息列表,依次加载测试用例脚本详细信息;
S4,检查测试脚本执行步骤关键字以及输入输出参数,在匹配关键字调用关键字入口函数后,执行关键字对应的功能并获取执行后的返回结果。
可选的,所述S2包括:
测试脚本代码执行由关键字驱动,支持代码多个复合子步骤的简易编码方法和各种场景的测试;
按测试步骤节点依次执行就可实行测试脚本代码的顺序执行。
可选的,所述S2包括:
相邻子步骤脚本代码之间使用分号分割,实现多个关键字以及用例属性支持多个代码之间的复合子步骤编码。
可选的,所述S2包括:
通过ExecuteTestCase关键字驱动执行实现可传递参数的测试脚本模板功能。
可选的,所述S2包括:
将数据按照小数点分组,在分组内用冒号加数字来表示倍数,实现关键字参数数据的简易表示。
可选的,所述S2包括:
在关键字名称后面添加Asyn后缀实现异步执行。
可选的,所述S2包括:
在关键字名字前加Passed或者Not前缀,满足不关心关键字执行结果或者预期执行结果是关键字执行结果取反的需求。
可选的,所述S4包括:
依次执行测试用例脚本代码各操作步骤,根据关键字名称匹配关键字入口函数并传递参数,检查通过后执行关键字具体功能实现代码,根据关键字执行结果判断后续执行步骤,如成功则继续执行下一个操作步骤,如失败则输出详细的执行日志信息给用户;
当全部操作步骤代码执行成功或者任何一个操作步骤执行失败时,跳转到ExPostCondition属性脚本代码执行,进行当前测试用例脚本代码执行后的清理工作,输出当前用例执行结果日志;最后执行测试用例ExRestartCondition属性脚本代码,保存重启后要执行的测试用例信息以及未执行的测试用例信息,重启测试脚本解析执行器进行初始化工作,继续执行重启前保存的测试用例清单脚本代码。
本申请提供的技术方案带来的有益效果是:
提供关键字作为脚本编写的基本单位,关键字使用语法简单,进一步提高了测试开发效率。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提出基于xml支持自动化测试脚本语言的实现流程图;
图2为本申请实施例提出的测试脚本编写范例。
具体实施方式
为使本申请的结构和优点更加清楚,下面将结合附图对本申请的结构作进一步地描述。
实施例一
具体的,本实施例提出基于xml支持自动化测试脚本语言的实现方法,如图1所示,包括:
S1,读取脚本解析执行器的INI配置配置文件,得到基于xml语言编写的由关键字驱动的测试驱动代码;
S2,对脚本解析执行器进行初始化处理,读取测试脚本文件用例基本信息;
S3,获取用户选择执行的用例信息列表,依次加载测试用例脚本详细信息;
S4,检查测试脚本执行步骤关键字以及输入输出参数,在匹配关键字调用关键字入口函数后,执行关键字对应的功能并获取执行后的返回结果。
在实施中,xml是一种使用非常广泛的可扩展标记语言,结构简单,使用方便,测试开发人员都很熟悉,基于xml定义测试脚本语言规范大幅降低了使用门槛,测试开发人员可以快速上手;在此基础上,提供关键字作为脚本编写的基本单位,关键字使用语法简单(只要提供关键字名称和相应参数即可),进一步提高了测试开发效率。
为了实现基于xml支持自动化测试脚本语言,首先需要定义测试脚本语言的语言规范。
具体包括测试用例xml文件的组织结构、测试用例各节点名称和节点属性名称,以及关键字参数定义。
例如:测试用例节点名称为ExTestCase,包括了定义测试用例编号ExID属性,测试用例名称ExName属性,测试用例后置条件ExPostCondition属性,测试用例重启条件ExRestartCondition属性等;测试用例执行步骤ExStep节点。
同时详细定义了关键字的使用要求,以及多个关键字在同一个测试脚本语句中通过分隔符分隔组成复合语句使用。
进一步的,定义测试脚本语言使用的关键字,典型的有:
条件判断关键字IfExecute、IfElseExecute和IfExecute2,可根据判断条件执行结果执行不同的脚本代码语句;
循环执行关键字RepeatExecute可依据条件重复多次执行脚本代码语句;
异步执行关键字BeginThread、UpdateThreadTask、SuspendThread、ResumeThread和WaitForThead等可创建线程异步执行脚本代码语句;
ExecuteTestCase关键字实现调用并执行公用测试用例模板脚本代码的功能,同时可传递多个参数;
报文处理关键字SendMessage、RecvMessage、RecvMessageTime、ClearMessage、UDPSendMessage、UDPRecvMessage、CheckDataRange和CheckMessageCount等实现报文发送和接收检查等功能;
CopyFile、MoveFile、DeleteFile、CheckFileFresh、CheckFileEqual、ReadBinFile、WriteBinFile和GetFileLength等关键字实现文件操作和检查等功能。
针对每个关键字,详细定义了功能定义、各输入输出参数的作用以及使用要求等。
进一步的,还需要对各关键字具体功能并注册。根据关键字功能定义实现各关键字的具体功能,并注册了关键字入口函数;在入口函数中进行防御性编程,对关键字的输入输出参数等进行详细检查,发现问题时通过输出执行日志或者显示消息窗口的方式及时反馈给测试开发人员;在关键字功能具体实现代码中,在主要执行步骤中都输出详细的执行日志信息,用于支持测试用例脚本代码的调试。
根据配置文件数据或者输入参数检查各测试脚本代码xml文件是否存在,如存在则依次加载并获取用例信息,在测试脚本解析执行器操作界面显示测试用例编号和标题等主要信息,供用户选择执行。
获取用户选择要执行的测试用例列表,依次解析各测试用例详细信息,包括测试用例编号、名称、执行步骤、后置条件和重启条件等。
基于前述步骤,执行测试用例脚本代码,实现测试脚本代码文件的执行功能,具体包括:
依次执行测试用例脚本代码各操作步骤,根据关键字名称匹配关键字入口函数并传递参数,检查通过后执行关键字具体功能实现代码,根据关键字执行结果判断后续执行步骤,如成功则继续执行下一个操作步骤,如失败则输出详细的执行日志信息给用户;
当全部操作步骤代码执行成功或者任何一个操作步骤执行失败时,跳转到ExPostCondition属性(如存在)脚本代码执行,进行当前测试用例脚本代码执行后的清理工作,输出当前用例执行结果日志;
最后执行测试用例ExRestartCondition属性(如存在)脚本代码,保存重启后要执行的测试用例信息以及未执行的测试用例信息,重启测试脚本解析执行器进行初始化工作,继续执行重启前保存的测试用例清单脚本代码。
需要注意的是,在前述执行过程中,测试脚本代码执行由关键字驱动,支持代码多个复合子步骤的简易编码方法和各种场景的测试;按测试步骤节点依次执行就可实行测试脚本代码的顺序执行。
相邻子步骤脚本代码之间使用分号分割,实现多个关键字以及用例属性支持多个代码之间的复合子步骤编码。
可选的,所述S2包括:
通过ExecuteTestCase关键字驱动执行实现可传递参数的测试脚本模板功能。
可选的,所述S2包括:
将数据按照小数点分组,在分组内用冒号加数字来表示倍数,实现关键字参数数据的简易表示。
在测试脚本代码开发过程中,关键字参数使用的数据经常是一串几百甚至几千字节长度的长数据,直接硬编码繁琐又容易出错,本发明提供了一种简易表示方法;该表示方法把数据按照.(小数点)分组,在分组内用:(冒号)加数字来表示倍数;举个简单的例子,脚本代码中某个关键字的参数数据是长数据(第一个字节是0xF2,中间是500组0xAABB,最后一个字节是0xF6),常规数据表示会很长(1002个字节,用2004个十六进制字符表示),使用简易表示法F2.AABB:500.F6就可非常方便的表示该串长数据,出错的概率和维护的工作量也都大幅降低。
可选的,所述S2包括:
在关键字名称后面添加Asyn后缀实现异步执行。
常规情况下,关键字是同步执行的,有些场景下会需要异步执行关键字(如为了及时处理窗口消息),这种需求只需在关键字名称后面添加Asyn后缀即可满足;同样,在测试脚本代码编写过程中,可能会碰到某个操作步骤不关心关键字执行结果或者预期执行结果是关键字执行结果取反的场景,在这两种需求下只需在关键字名字前加Passed或者Not前缀即可满足;举个例子,System关键字可执行外部批处理命令文件功能,针对上述情况分别带后缀或前缀的关键字名称为SystemAsyn、PassedSystem和NotSystem。
通过提供测试用例ExRestartCondition属性重启条件代码,批量执行的测试用例在该测试用例脚本代码执行结束后会重启测试脚本解析执行器以进行初始化等操作,同时继续执行后续未执行的测试用例脚本代码。
图2为测试脚本编写示例。图2中xml测试用例脚本代码文件的根节点名称为ExTestCases,在根节点下包括了3个测试用例和1个公用模板脚本代码ExTestCase节点;每一个ExTestCase节点包括了ExID(测试用例编号)、ExTitle(测试用例标题)、ExPostCondition(测试用例后置条件脚本代码)、ExRestartCondition(测试用例重启条件脚本代码)等属性信息;每个测试用例脚本包括了一个或多个执行步骤ExStep子节点脚本代码信息;在每个执行步骤中,使用了关键字并传递关键字输入和输出参数;关键字和输入及输出参数之间用空格分隔,不同关键字参数之间用逗号分隔,多个关键字之间使用分号分隔。
每个测试用例脚本执行过程如下:
依次执行ExStep执行步骤脚本代码,如果执行成功则继续执行,
如果执行失败或者全部执行成功则执行当前测试用例ExPostCondition属性后置条件(如存在)脚本代码语句;
全部执行完后如果该测试用例脚本存在ExRestartCondition属性重启条件则执行这些代码语句,并保存未执行的测试用例信息,在重启测试脚本解析执行器后继续执行其他未执行的测试用例脚本代码。
对典型脚本代码的使用说明如下:
第9行,使用了QueryDataBaseGeneral关键字,该关键字可通过SQL语句查询SQLite本地数据库文件内容,同时判断查询结果是否满足要求;
第10行,对RecvMessage关键字的执行结果进行取反操作;
第13行,[BiSTAR_VC_SWTC_0030020]测试用例脚本代码包括ExPostCondition属性后置条件执行步骤脚本代码,其中包括了用分号分隔的2个子步骤语句代码;同时,该用例脚本代码也包括了ExRestartCondition属性重启条件执行步骤脚本代码;
第14行,异步执行System关键字;
第15行,通过ExecuteTestCase关键字调用公用模块[SET_ASTS_32_BITS_COMM_CMD]脚本代码并传递参数[MVCTestLinkID],被调用的公用模块代码参见43~50行;在模块脚本代码中,参数1用[PPARAM1]表示;
第16行,SendMessage关键字的第一个参数通过数据简易表示法进行编码;
第17行,通过BeginThread关键字创建了一个线程执行相应的脚本代码,该线程通过第13行ExPostCondition属性后置条件脚本代码控制退出运行并关闭;
第22行,对CloseWPCap关键字的执行结果进行恒返回成功操作;
第23~25行,根据条件判断关键字IfExecute执行结果决定是否执行子语句脚本代码;
第34~36行,循环执行关键字RepeatExecute多次执行包含的子语句脚本代码;
上述实施例中的各个序号仅仅为了描述,不代表各部件的组装或使用过程中的先后顺序。
以上所述仅为本申请的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (8)

1.基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述实现方法包括:
S1,读取脚本解析执行器的INI配置配置文件,得到基于xml语言编写的由关键字驱动的测试驱动代码;
S2,对脚本解析执行器进行初始化处理,读取测试脚本文件用例基本信息;
S3,获取用户选择执行的用例信息列表,依次加载测试用例脚本详细信息;
S4,检查测试脚本执行步骤关键字以及输入输出参数,在匹配关键字调用关键字入口函数后,执行关键字对应的功能并获取执行后的返回结果。
2.根据权利要求1所述的基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述S2包括:
测试脚本代码执行由关键字驱动,支持代码多个复合子步骤的简易编码方法和各种场景的测试;
按测试步骤节点依次执行就可实行测试脚本代码的顺序执行。
3.根据权利要求2所述的基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述S2包括:
相邻子步骤脚本代码之间使用分号分割,实现多个关键字以及用例属性支持多个代码之间的复合子步骤编码。
4.根据权利要求2所述的基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述S2包括:
通过ExecuteTestCase关键字驱动执行实现可传递参数的测试脚本模板功能。
5.根据权利要求2所述的基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述S2包括:
将数据按照小数点分组,在分组内用冒号加数字来表示倍数,实现关键字参数数据的简易表示。
6.根据权利要求2所述的基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述S2包括:
在关键字名称后面添加Asyn后缀实现异步执行。
7.根据权利要求2所述的基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述S2包括:
在关键字名字前加Passed或者Not前缀,满足不关心关键字执行结果或者预期执行结果是关键字执行结果取反的需求。
8.根据权利要求1所述的基于xml支持自动化测试脚本语言的实现方法,其特征在于,所述S4包括:
依次执行测试用例脚本代码各操作步骤,根据关键字名称匹配关键字入口函数并传递参数,检查通过后执行关键字具体功能实现代码,根据关键字执行结果判断后续执行步骤,如成功则继续执行下一个操作步骤,如失败则输出详细的执行日志信息给用户;
当全部操作步骤代码执行成功或者任何一个操作步骤执行失败时,跳转到ExPostCondition属性脚本代码执行,进行当前测试用例脚本代码执行后的清理工作,输出当前用例执行结果日志;最后执行测试用例ExRestartCondition属性脚本代码,保存重启后要执行的测试用例信息以及未执行的测试用例信息,重启测试脚本解析执行器进行初始化工作,继续执行重启前保存的测试用例清单脚本代码。
CN202210864283.9A 2022-07-21 2022-07-21 基于xml支持自动化测试脚本语言的实现方法 Pending CN115328456A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210864283.9A CN115328456A (zh) 2022-07-21 2022-07-21 基于xml支持自动化测试脚本语言的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210864283.9A CN115328456A (zh) 2022-07-21 2022-07-21 基于xml支持自动化测试脚本语言的实现方法

Publications (1)

Publication Number Publication Date
CN115328456A true CN115328456A (zh) 2022-11-11

Family

ID=83920295

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210864283.9A Pending CN115328456A (zh) 2022-07-21 2022-07-21 基于xml支持自动化测试脚本语言的实现方法

Country Status (1)

Country Link
CN (1) CN115328456A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991706A (zh) * 2023-06-21 2023-11-03 广州汽车集团股份有限公司 车辆自动化测试方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991706A (zh) * 2023-06-21 2023-11-03 广州汽车集团股份有限公司 车辆自动化测试方法、装置、设备及存储介质
CN116991706B (zh) * 2023-06-21 2024-04-19 广州汽车集团股份有限公司 车辆自动化测试方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US11340896B2 (en) Library model addition
Marchetto et al. State-based testing of Ajax web applications
US7152229B2 (en) Workflow code generator
US5966535A (en) Method and apparatus for generating program code for world wide web service applications
US20150301811A1 (en) Method and apparatus for testing browser compatibility
US20070044066A1 (en) Embedded multi-language programming
CN113835419B (zh) 一种列控设备的测试方法、系统及存储介质
CN115328456A (zh) 基于xml支持自动化测试脚本语言的实现方法
CN112286784B (zh) 一种测试用例生成方法、装置、服务器及存储介质
Cristiá et al. A language for test case refinement in the Test Template Framework
Pacheco Postmortem debugging in dynamic environments
JP2021111389A (ja) コードスニペットのパース可能性の向上
Al Salem et al. A review on grammar-based fuzzing techniques
Yang et al. PyVerDetector: A Chrome Extension Detecting the Python Version of Stack Overflow Code Snippets
CN115407997A (zh) 基于低代码的敏捷开发应用方法及系统
CN114297057A (zh) 一种自动化测试用例的设计及使用方法
Maezawa et al. Automated verification of pattern-based interaction invariants in Ajax applications
Abadi et al. A TLA solution to the RPC-memory specification problem
Rask et al. Decoupling of Core Analysis Support for Specification Languages from User Interfaces in Integrated Development Environments
CN117171052B (zh) 一种基于xml语言的脚本测试方法、装置、设备及介质
WO2023210159A1 (ja) 情報処理装置及び情報処理方法、並びにコンピュータプログラム
DeSanto et al. Debugging Galaxy
Capela Exploring architectural design decisions in issue tracking systems-PACITO-PAttern Changes Identifier TOol
Strømmen How to provide automated feedback helping students with negative semantic transfer when learning a second programming language
Pan et al. Test Scheme for Platform Software of the All-Electronic Interlocking Safety Computer

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