脚本与用例的双向转换方法及存储介质与流程

文档序号:29641249发布日期:2022-04-13 18:31阅读:200来源:国知局
脚本与用例的双向转换方法及存储介质与流程

1.本技术涉及软件编程的领域,尤其是涉及一种脚本与用例的双向转换方法。


背景技术:

2.测试用例是指对一项特定的软件产品进行测试任务的描述。测试脚本是自动执行测试过程(或部分测试过程)的计算机可读指令。
3.现在常见的测试用例和测试脚本的编写方法,往往是根据采用文字形式先完成测试用例的创建、编辑和归档,然后再使用特定的软件完成自动化测试脚本的编写。
4.常见这种方式,将用例和脚本分隔开来,并且还需要在脚本完成编写后,再建立用例和脚本之间的关联,影响整体的编写效率。


技术实现要素:

5.为了提高编写效率,本技术提供一种脚本与用例的双向转换方法及存储介质。
6.第一方面,本技术提供一种脚本与用例的双向转换方法,采用如下的技术方案:一种脚本与用例的双向转换方法,包括以下步骤:基于操作指令以进入用例转换模式或脚本转换模式;在用例转换模式下:获取用例信息,其中,所述用例信息包括描述类型名称、与描述类型名称一一对应的描述内容、以及步骤序号,每个步骤序号对应有若干执行类型名称;每个执行类型名称对应一个执行内容;根据描述类型名称确定第一类脚本函数,并根据相应的第一类脚本函数和对应的描述内容形成一类代码片段;根据执行类型名称确定第二类脚本函数,并根据执行内容和对应的第二类脚本函数形成脚本代码字符串,将同一步骤序号对应的脚本代码字符串组成二类代码片段,且每个二类代码片段均具有与步骤序号相对应的序号信息;在脚本转换模式下:获取脚本代码片段;从脚本代码片段中识别第一类脚本函数、描述内容、第二类脚本函数、执行内容和序号信息;根据第一类脚本函数、描述内容、第二类脚本函数、执行内容和序号信息形成对应的用例。
7.通过采用上述技术方案,测试用例和脚本之间可双向自动转换,简化测试用例或脚本的编写,并且能够实现测试用例和测试脚本之间的批量关联,使得测试用例和脚本的编写效率得到提升。
8.可选的,所述第二类脚本函数包括步骤函数、结果函数;所述执行内容包括控件id、执行动作、结果id和结果内容;
所述步骤函数对应控件id和执行动作,所述结果函数对应结果id和结果内容;根据执行内容和对应的第二类脚本函数形成脚本代码字符串,包括以下步骤:若第二类脚本函数为步骤函数,则生成依据执行动作触发控件id所对应控件的脚本代码字符串;若第二类脚本函数为结果函数,则生成根据结果id所对应控件显示相应结果内容的脚本代码字符串;将步骤函数所对应的脚本代码字符串排列在同一步骤序号的结果函数所对应的脚本代码字符串前。
9.可选的,若第二类脚本函数为步骤函数,则生成依据执行动作触发控件id所对应控件的脚本代码字符串前,包括以下步骤:判断同一步骤序号的控件id和执行动作是否对应;若同一步骤序号的控件id和执行动作不对应,则根据步骤序号从描述内容中截取出对应的描述片段,并判断描述片段中是否存在与控件id或执行动作对应的描述词汇;若描述片段中存在与控件id或执行动作对应的描述词汇,则根据描述片段中存在的描述词汇确定预设的执行内容,并根据预设的执行内容修正用例。
10.可选的,在判断同一步骤序号的控件id和执行动作是否对应前,包括以下步骤:分别判断测试步骤对应的指定区域中的信息是否能从预设的控件数据库中匹配到相应的控件id或执行动作;若测试步骤对应的指定区域中的信息均能从预设的控件数据库中匹配到相应的控件id或执行动作,则判断同一步骤序号的控件id和执行动作是否对应;若测试步骤对应的指定区域中的信息不能全部从预设的控件数据库中匹配到相应的控件id或执行动作,则对当前无法完成匹配的指定区域的信息进行修正。
11.可选的,对当前无法完成匹配的指定区域的信息进行修正,包括以下步骤:判断当前无法完成匹配的指定区域的信息是否能从预设的纠正数据库中匹配到易错词汇;若指定区域的信息能从预设的纠正数据库中匹配到易错词汇,则将易错词汇所对应的控件id或执行动作替换当前指定区域中的信息。
12.可选的,转换方法还包括以下步骤:每当进入用例转换模式或脚本转换模式时,自动存储当前的用例或脚本;在进入用例转换模式或进入脚本转换模式时,判断是否存在已存储的用例/脚本,若存在已存储的用例/脚本,则将当前的用例/脚本与已存储用例/脚本进行匹配以确定差异信息,并仅根据差异信息对脚本/用例进行修改;若不存在已存储的用例/脚本,则使用完整的用例/脚本转换成相应的脚本/用例。
13.可选的,从脚本代码中识别序号信息,包括以下步骤:判断识别出的所有序号信息之间是否连续,若序号信息之间不连续,则根据空缺的序号信息生成虚拟序号;在形成对应的用例时,根据步骤序号和虚拟序号生成对应的指定区域并对指定区域按照序号顺序进行排序,其中,与虚拟序号对应的指定区域中无内容,与步骤序号的指定区域中填入相应的执行内容。
14.第二方面,本技术提供一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种脚本与用例的双向转换方法的计算机程序。
15.综上所述,本技术包括以下至少一种有益技术效果:测试用例和脚本之间可双向自动转换,简化测试用例或脚本的编写,并且能够实现测试用例和测试脚本之间的批量关联,使得测试用例和脚本的编写效率得到提升。
附图说明
16.图1是本技术实施例转换方法的整体流程图。
17.图2是本技术实施例用例转换模式下的流程图。
18.图3是本技术实施例的用例表的示意图。
19.图4是本技术实施例的填写有描述内容的部分用例表的示意图。
20.图5是本技术实施例的填写有执行内容的部分用例表的示意图。
21.图6是本技术实施例脚本转换模式下的流程图。
具体实施方式
22.以下结合附图1至图6对本技术作进一步详细说明。
23.本技术实施例公开一种脚本与用例的双向转换方法。参照图1,包括以下步骤:s100、基于操作指令以进入用例转换模式或脚本转换模式。
24.操作指令是指用于编写脚本和编写用例的程序中预设的“用例转换”虚拟按键或“脚本转换”虚拟按键被触发而生成的。根据触发按键的不同,程序所生成的操作指令也不同。
25.用例转换模式和脚本转换模式均是用于进行脚本和用例自动转换的服务器的工作模式。
26.当点击“用例转换”虚拟按键后,程序生成第一操作指令,服务器根据第一操作指令进入到用例转换模式,并执行步骤s200至步骤s400以根据用例自动创建相应的脚本。
27.当点击“脚本转换”虚拟按键后,程序生成第二操作指令,服务器根据第二操作指令进入到脚本转换模式,并执行步骤s500至步骤s700以根据脚本自动创建相应的用例。
28.在用例转换模式下,参见图2,根据用例自动创建相应的脚本包括以下步骤:s200、获取用例信息。
29.用例信息包括描述类型名称、与描述类型名称一一对应的描述内容、以及步骤序号,每个步骤序号对应有若干执行类型名称;每个执行类型名称对应一个执行内容。
30.为能够实现将用例自动转换成脚本,对用例的撰写进行规整,制定用例表,如图3所示。用户在撰写用例时,需要在用例表的指定区域内填写相应的用例内容。
31.参见图3,用例表中需填写的对象包括用例编号、标题、描述、测试步骤、等待时长和期望结果。
32.其中,用例编号、标题和描述分别对应一个指定区域,当对应的指定区域内填写入任何信息时,在用例转换模式下,服务器将提取相应的名称作为描述类型名称,所填写的内容为对应的描述内容。
33.测试步骤、等待时长和期望结果所对应的指定区域则与步骤序号有关,步骤序号
越多,测试步骤、等待时长和期望结果所对应的指定区域也就越多。例如,步骤序号有3个时,测试步骤、等待时长和期望结果分别对应三行指定区域,且默认处在同一行的指定区域对应同一步骤序号。另外,本实施例中,默认第一行的指定区域对应步骤序号1,第二行的指定区域对应步骤序号2,依次类推,因此无需额外在用例表中标明步骤序号。
34.当测试步骤、等待时长和期望结果所对应的任意一个指定区域被填写入任何信息时,在用例转换模式下,服务器将提取信息所在指定区域对应的名称作为执行类型名称,信息所在指定区域的行数作为步骤序号,信息本身作为执行内容。
35.用例编号可以是在用例表的创建时自动截取时间信息,也可以是用户填写的信息,只要保证用例编号是独一无二即可,以起到与脚本一一对应的作用。
36.需注意的是,在先撰写用例再转换脚本的情况下,除了用例编号可以自动生成信息外,标题、描述、测试步骤、等待时长和期望结果均需要用户填写。但其中,若等待时长所对应的指定区域无信息,即用户没有填写等待时长,则服务器以预设的等待时长作为执行内容,而其余名称所对应的指定区域无信息时,服务器则不会提取相应的信息及对应名称。例如,假设预设的等待时长为5s,当等待时长和标题所对应的指定区域均无信息时,服务器提取的用例信息包含“等待时长”这一执行类型名称以及“5”这一执行内容,当然也包含“5”这一执行内容所对应的步骤序号;但不会包含“标题”这一描述类型名称。
37.s300、根据描述类型名称确定第一类脚本函数,并根据相应的第一类脚本函数和对应的描述内容形成一类代码片段。
38.每个描述类型名称均对应一个第一类脚本函数,且描述类型名称与第一类脚本函数的对应关系均预存到数据库中。
39.具体的,描述类型名称为编号时,对应的第一类脚本函数为@testcase id;描述类型名称为标题时,对应的第一类脚本函数为@ testcase.title;描述类型名称为描述时,对应的第一类脚本函数为@ testcase.description。
40.一类代码片段的格式是:第一类脚本函数(

描述内容’)。
41.以图4中的用例为例,其转换出的脚本为:@testcase.id(
ꢀ‘
20211001101059' )@testcase.title(
ꢀ‘
中转站001号商品确认发货')@testcase.description(

点击中转站001号商品按钮,然后点击弹窗中的确认按钮,5秒内出现“001号商品已发货”的文案')。
42.s400、根据执行类型名称确定第二类脚本函数,并根据执行内容和对应的第二类脚本函数形成脚本代码字符串,将同一步骤序号对应的脚本代码字符串组成二类代码片段,且每个二类代码片段均具有与步骤序号相对应的序号信息。
43.每个执行类型名称均对应一个第二类脚本函数,且执行类型名称与第二类脚本函数的对应关系均预存到数据库中。
44.第二类脚本函数包括步骤函数、时长函数和结果函数,其中,步骤函数对应测试步骤,时长函数对应等待时长,结果函数对应期望结果。
45.具体的,步骤函数为@testcase.step;时长函数为@testcase.timeout;结果函数为@testcase.assert。
46.另外,不同的执行类型名称对应不同的二类代码片段的生成方式。
47.当执行类型名称为等待时长时,其对应的二类代码片段格式为:@testcase.timeout(

等待时长’)。
48.当执行类型名称为测试步骤时,其对应的执行内容有三个,三个执行内容分别为代表步骤序号的序号数值、代表执行控件的控件id、以及对应执行控件的执行动作,其中,不同的控件id对应不同的按钮、文本或单选框,相应的,执行动作对应点击、输入和勾选。而对应的二类代码片段格式为:@testcase.step(

序号数值’)self.agent.执行动作(
‘ꢀ
控件id’)。
49.当执行类型名称为期望结果时,其对应的执行内容有两个,两个执行内容分别为代表文本格式的结果id、对应文本的结果内容,其中,结果id可以是te脚本与用例的双向转换方法t_a、te脚本与用例的双向转换方法t_b等多种形式的预设的文本名称。而对应的二类代码片段格式为:@testcase. assert(id=

结果id’,te脚本与用例的双向转换方法t=

结果内容’)。
50.以图5中的用例为例,其转换出的脚本为:@testcase.step(
‘1’
)self.agent.click(

button001’)@testcase.step(
‘2’
)self.agent.click(

button002’)testcase.timeout(
‘5’
)self.agent.assert(id=

te脚本与用例的双向转换方法t_b’,te脚本与用例的双向转换方法t=

001号商品已发货’)。
51.在一个实施例中,根据执行内容和对应的第二类脚本函数形成脚本代码字符串,包括以下步骤:s410、若第二类脚本函数为步骤函数,则生成用于根据执行动作触发控件id所对应控件的脚本代码字符串。
52.s420、若第二类脚本函数为结果函数,则生成用于根据结果id所对应控件显示相应结果内容的脚本代码字符串。
53.s430、若第二类脚本函数为时长函数,则生成用于根据等待时长以进行代码执行延迟的脚本代码字符串。
54.s440、将步骤函数所对应的脚本代码字符串排列在同一步骤序号下时长函数所对应的脚本代码字符串前,将时长函数所对应的脚本代码字符串排列在同一步骤序号下结果函数所对应的脚本代码字符串前。
55.在一个实施例中,若第二类脚本函数为步骤函数,则生成用于根据执行动作触发控件id所对应控件的脚本代码字符串前,包括以下步骤:s411、判断同一步骤序号的控件id和执行动作是否对应。
56.每个控件id对应的控件均预设有对应的执行动作,判断判断同一步骤序号的控件id和执行动作是否对应,是指比较当前控件id预设的执行动作与当前的执行动作是否一致。
57.s412、若同一步骤序号的控件id和执行动作对应,则生成用于根据执行动作触发控件id所对应控件的脚本代码字符串。
58.s413、若同一步骤序号的控件id和执行动作不对应,则根据步骤序号从描述内容中截取出对应的描述片段,并判断描述片段中是否存在与控件id或执行动作对应的描述词汇。
59.用例在撰写时,用户尽量以正序的方式撰写描述内容,且每个步骤之间通过逗号、句号、分号等标点符号做出区分。根据步骤序号选择描述内容中对应的短句,即可形成描述片段。
60.而判断描述片段中是否存在与控件id或执行动作对应的描述词汇,则是由于每个控件id和执行动作均预设有若干自然语言词汇,例如,控件id为button时,对应的自然语言词汇包括按键、按钮;执行动作为click时,对应的自然语言词汇为点击、按下、触动。只要描述词汇中存在预设的自然语言词汇,服务器即可将这些词汇识别出来以确定对应的控件id和/或执行动作。
61.s414、若描述片段中存在与控件id或执行动作对应的描述词汇,则根据描述片段中存在的描述词汇确定预设的执行内容,并根据预设的执行内容修正用例。
62.若描述片段中不存在与控件id或执行动作对应的描述词汇,则发出提醒信息以提示用户注意描述词汇、控件id及执行动作。
63.若描述片段中存在与控件id或执行动作对应的描述词汇,且描述片段内的描述词汇又能够相互对应,则对相应的执行内容进行修正,并执行步骤s500。修正方式即为将预设的执行内容替换当前的执行内容。
64.例如,控件id为textbox,执行动作为click,对应的描述片段为“点击中转站001号商品按钮”,根据该描述片段,服务器识别出“点击”和“按钮”,其中“点击”与执行动作对应,而“按钮”与控件id并不对应,而“点击”与“按钮”又是对应的,因此判断当前的控件id不正确,将“按钮”所对应的button替换textbox。
65.需注意的是,判断同一步骤序号的控件id和执行动作是否对应的前提是,相应指定区域中的信息能够被确认为控件id和执行动作。
66.因此,在判断同一步骤序号的控件id和执行动作是否对应前,先进行以下判断:s415、分别判断测试步骤对应的指定区域中的信息是否能从预设的控件数据库中匹配到相应的控件id或执行动作。
67.s416、若测试步骤对应的指定区域中的信息均能从预设的控件数据库中匹配到相应的控件id或执行动作,则执行步骤s410。
68.s417、若测试步骤对应的指定区域中的信息不能全部从预设的控件数据库中匹配到相应的控件id或执行动作,则进一步判断当前无法完成匹配的指定区域的信息是否能从预设的纠正数据库中匹配到易错词汇。
69.控件数据库中存储有各类控件id和执行动作的名称,例如,button、textbox、click等。而纠正数据库中则存储有正确的各类控件id、执行动作的名称以及多个易错词汇,每个空间id、执行动作分别对应若干易错词汇,例如,button对应有buton、buttion、buutton等易错词汇。
70.s418、若指定区域的信息能从预设的纠正数据库中匹配到易错词汇,则将易错词
汇所确定的控件id或执行动作替换当前指定区域中的信息,并执行步骤s410。
71.若指定区域的信息不能从预设的纠正数据库中匹配到易错词汇,则发出提示以提醒用户人工进行核对。
72.在脚本转换模式下,参见图6,根据脚本自动创建相应的用例包括以下步骤:s500、获取脚本代码片段。
73.s600、从脚本代码片段中识别第一类脚本函数、描述内容、第二类脚本函数、执行内容和序号信息。
74.除了序号信息外,只要根据脚本代码字符串的生成格式,即可获取到第一类脚本函数、描述内容、第二类脚本函数、执行内容。
75.从脚本代码中识别序号信息,包括以下步骤:判断识别出的所有序号信息之间是否连续,判断序号信息之间是否连续,若序号信息之间不连续,则根据空缺的序号信息生成虚拟序号,在形成对应的用例时,根据步骤序号和虚拟序号生成对应的指定区域并对指定区域按照序号顺序进行排序,其中,与虚拟序号对应的指定区域中无内容,与步骤序号的指定区域中填入相应的执行内容。
76.例如,在脚本中仅存在@testcase.step(
‘1’
)和@testcase.step(
‘3’
),那么生成虚拟序号“2”。
77.s700、根据第一类脚本函数、描述内容、第二类脚本函数、执行内容和序号信息形成对应的用例。
78.在获取序号信息(包含虚拟序号)后,服务器自动根据序号信息的数量创建出相应的行数的用例表。
79.再通过第一类脚本函数确定对应描述内容所需填写的指定区域,通过第二类脚本函数以及序号信息确定对应执行内容所需填写的指定区域。
80.上述步骤s200至步骤s700,均是以第一次将用例转换成脚本、或是第一次将脚本转换成用例的角度来介绍转换方法。而当用例或脚本中部分内容进行修改、增加或删减,但其余内容未变化时,若仍将整个用例或脚本进行转换,一旦用例或脚本的整体内容多,则需要花费较多的时间和算力。因此,在完成第一次转换后,再出现部分内容的修改、增加或删减时,应仅对该部分内容进行同步的转换即可,具体方法如下:每当进入用例转换模式或脚本转换模式时,自动存储当前的用例或脚本。
81.在进入用例转换模式时,判断是否存在已存储的用例,若存在已存储的用例,则将当前的用例与已存储用例进行匹配以确定差异信息,并仅根据差异信息对脚本进行修改。
82.相应的,在进入脚本转换模式时,判断是否存在已存储的脚本,若存在已存储的脚本,则将当前的脚本与已存储脚本进行匹配以确定差异信息,并仅根据差异信息对用例进行修改。
83.差异信息包括增加信息、删减信息和替换信息。
84.由于用例采用形式相对固定的用例表来记录信息,只有当序号信息增多或减少时,才会改变用例表的行数,至于其他指定区域中信息的增加、修改还是删减,并不会对用例表的整体格式造成影响。而对脚本修改则更加复杂。
85.根据差异信息对脚本进行修改,包括以下步骤:若差异信息为增加信息,则直接在脚本的末尾增加与增加信息对应的脚本代码字
符串,并根据脚本代码字符串当前所在行数。
86.若差异信息为替换信息,则用差异信息生成的脚本代码字符串替换原先的脚本代码字符串。
87.若差异信息为删减信息,则用空白行代替删减信息所对应的脚本代码字符串,以保留相应区域的空白行数。
88.之所以采用上述的修改方式,是为了减少对脚本的代码行数的变动,而尽量少的变动代码行数的原因,是在每段脚本代码字符串生成时均通过记录起始行和结尾行的方式记录其所在区域,以便于快速查询到相应的脚本代码字符串。
89.当替换信息所生成的脚本代码字符串行数少于原先脚本代码字符串的行数时,相差的行数均有空白行代替。
90.而当替换信息所生成的脚本代码字符串行数多于原先脚本代码字符串的行数时,则只能重新记录当前脚本代码字符串以及处在后面的其他脚本代码字符串的所在区域。
91.本技术实施例还提供一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种脚本与用例的双向转换方法的计算机程序。
92.以上均为本技术的较佳实施例,并非依此限制本技术的保护范围,故:凡依本技术的结构、形状、原理所做的等效变化,均应涵盖于本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1