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

一种测试方法、装置、电子设备和可读存储介质

文献发布时间:2023-06-19 13:46:35


一种测试方法、装置、电子设备和可读存储介质

技术领域

本申请涉及互联网技术领域,具体涉及一种测试方法、装置、电子设备和可读存储介质。

背景技术

软件测试,是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程,其为各行各业的信息化发展提供了重要保障。

软件测试包括前端测试和后端测试两大类,就目前来说,前端测试的测试效率较低,这制约了软件整体开发效率的进一步提升。

发明内容

本申请的目的在于提供一种测试方法、装置、电子设备和可读存储介质,用于解决前端测试的测试效率较低的问题。

第一方面,本申请实施例提供一种测试方法,包括:

获取N个测试键值对信息,每一所述测试键值对信息对应一个待测试的前端元素,每一所述测试键值对信息包括一个测试标记,所述测试标记用于标识所述前端元素是否为待测试的前端元素,N为大于或等于1的整数;

根据所述N个测试键值对信息,获得与所述N个测试键值对信息一一对应的N个前端元素信息;

根据所述N个前端元素信息,生成与所述N个前端元素信息一一对应的N个测试用例;

执行所述N个测试用例,获得与所述N个测试用例一一对应的N个测试结果。

第二方面,本申请实施例提供一种测试装置,包括:

第一获取模块,用于获取N个测试键值对信息,每一所述测试键值对信息对应一个待测试的前端元素,每一所述测试键值对信息包括一个测试标记,所述测试标记用于标识所述前端元素是否为待测试的前端元素,N为大于或等于1的整数;

第二获取模块,用于根据所述N个测试键值对信息,获得与所述N个测试键值对信息一一对应的N个前端元素信息;

用例构建模块,用于根据所述N个前端元素信息,生成与所述N个前端元素信息一一对应的N个测试用例;

测试模块,用于执行所述N个测试用例,获得与所述N个测试用例一一对应的N个测试结果。

第三方面,本申请实施例提供一种电子设备,包括:

处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如上第一方面所述的测试方法中的步骤。

第四方面,本申请实施例提供一种可读存储介质,所述可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如上第一方面所述的测试方法中的步骤。

本申请实施例所提供的测试方法,利用测试标记的设置,能便捷获得待测试的前端元素所对应的前端元素信息,提升待测试的前端元素的定位与识别效率,提高前端测试的测试效率。

附图说明

图1是本申请实施例提供的一种测试方法的流程图;

图2是本申请实施例提供的一种测试装置的结构示意图;

图3是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本申请保护的范围。

请参阅图1,图1是本申请实施例提供的一种测试方法的流程图,如图1所示,上述测试方法包括:

步骤101、获取N个测试键值对信息,每一所述测试键值对信息对应一个待测试的前端元素,每一所述测试键值对信息包括一个测试标记,所述测试标记用于标识所述前端元素是否为待测试的前端元素,N为大于或等于1的整数。

步骤102、根据所述N个测试键值对信息,获得与所述N个测试键值对信息一一对应的N个前端元素信息。

步骤103、根据所述N个前端元素信息,生成与所述N个前端元素信息一一对应的N个测试用例。

步骤104、执行所述N个测试用例,获得与所述N个测试用例一一对应的N个测试结果。

如上,利用测试标记的设置,能便捷获得待测试的前端元素所对应的前端元素信息,提升待测试的前端元素的定位与识别效率,提高前端测试的测试效率。

示例性的,在前端界面中,对每个待测试的前端元素增加同一测试标记,设定增加同一测试标记后的多个待测试的前端元素的代码结构如下所示:

编辑

启用

重置密码

在上述代码结构中,上述测试标记即为autotest,该测试标记在第一个span标签中对应的标记值为edit,该测试标记在第二个span标签中对应的标记值为enable,该测试标记在第三个span标签中对应的标记值为resetpassword;此时,测试键值对信息包括:autotest-edit键值对,autotest-enable键值对和autotest-resetpassword键值对。

在对每个待测试的前端元素新增前述测试标记以后,可以通过遍历的方式,获取被测试属性所标记的多个前端元素的多个前端元素信息,举例来说,基于遍历方式获取多个前端元素信息的方式可以为:

String autoXPATH = “//*[@autotest]”;

ListallElements = driver.findElements(By.xpath(autoXPATH));

for (WebElement e : allElements) {

}

在上述基于遍历方式获取多个待测试的前端元素的代码示例中,首先获取被测试标记所标记的多个待测试的前端元素的节点路径信息集(即autoXPATH,其为String类型的数据),再根据预设的第一元素获取函数和所获得的节点路径信息集,获得多个待测试元素对应的多个前端元素对应的多个前端元素信息(即allElements,其为数组类型的数据,该数组内的每一个数组元素即为一个前端元素信息);最后利用for循环对allElements数组进行遍历操作。

在对每个待测试的前端元素新增前述测试标记以后,也可以通过逐一获取每个前端元素的前端元素信息,获取一前端元素信息的示例如下:

String stepXPATH = “//*[@autotest=’edit’]”;

WebElement e = driver.findElement(By.xpath(stepXPATH));

在上述获取一前端元素信息的示例中,先根据测试标记(即autotest)和标记值(即edit)获取路径节点stepXPATH,再根据预设的第二元素获取函数和所获得的stepXPATH,获取对应该路径节点stepXPATH的前端元素信息e(也即前述示例中的第一个span标签对应的前端元素信息)。

需要说明的是,上述测试标记和对应的标记值需在待测试界面(包括有待测试的前端元素)的界面开发过程中,优选通过开发人员来对应补充。

上述测试标记的数量大于或等于1,且小于或等于N,举例来说,在测试标记的数量为两个的情况下,可以设定两个测试标记分别为autotest1和autotest2,实际中,用户能适应性调整上述测试标记的数量和名称,本申请实施例对此并不加以限定。

需要注意的是,在上述N个测试键值对信息中,任意两个测试键值对信息均不相同;示例1,任意两个测试键值对信息分别为autotest-enable键值对和autotest-resetpassword键值对(同一测试标记情况下,对应的标记值不同);示例2,任意两个测试键值对信息分别为autotest1-enable键值对和autotest2-resetpassword键值对(不同测试标记情况下,对应的标记值不同),示例3,任意两个测试键值对信息分别为autotest1-enable键值对和autotest2-enable键值对(不同测试标记情况下,对应的标记值相同)。

可选的,所述前端元素信息包括M个属性名中的至少一个,以及每个属性名对应的默认属性值,M为大于或等于1的整数;

所述根据所述N个前端元素信息,生成N个测试用例,包括:

获取目标前端元素信息对应的属性名和默认属性值,所述目标前端元素信息为所述N个前端元素信息中的任意一个前端元素信息;

根据所述目标前端元素信息对应的属性名和默认属性值,生成所述目标前端元素信息对应的测试用例。

通过上述设置,在测试用例构建过程中,利用默认属性值的设置,即为前端元素信息所包括的多个属性名分别赋予不同的默认值的方式,精简属性赋值流程,提高测试用例的构建效率,以进一步提升前端测试的测试效率。

需要指出的是,任意两个前端元素对应的两个前端元素信息所包括的属性名及属性名的数量可以相同、或部分相同,或完全不同;举例来说:

示例1、第一前端元素信息包括属性名A1和属性名B1,第二前端元素信息包括属性名C1(完全不同)。

示例2、第三前端元素信息包括属性名A2和属性名B2,第四前端元素信息包括属性名B2(部分相同)。

示例3、第五前端元素信息包括属性名A3,第六前端元素信息包括属性名A3(完全相同)。

示例性的,设定一待测试的前端元素为人员表单,该人员表单包括五个属性,上述五个属性对应的属性名分别为:用户名、手机号、所属机构、岗位、角色;设定用户名对应的默认属性值为张三,手机号对应的默认属性值为188XXXXXXXX,所属机构对应的默认属性值为应急指挥所,岗位对应的默认属性值为总队长,角色对应的默认属性值为系统管理员。

参见上述示例,若在预期构建的测试用例中,仅要求用户名对应的测试属性值为李四,则在构建该测试用例的过程中,测试人员仅将用户名的属性值由张三修改为李四,便可完成测试用例构建过程中的赋值流程,相较于通过测试人员手动赋值上述五个属性名的方式来说(测试用例构建时,不允许某一属性名对应的属性值为空,因此,在采用手动赋值的情况下,测试人员除了为用户名赋值外,还需完成手机号、所属机构、岗位、角色的赋值操作),为每一属性名默认赋值的方式,能极大精简测试用例构建过程中的赋值流程,提高测试用例的构建效率。

优选设置所述默认属性值通过开关元素进行统一控制,即在测试过程中,启动上述开关元素,使待测试的前端元素的每一属性值均获得对应的默认属性值,待测试完成以后,关闭上述开关元素,使待测试的前端元素的每一属性值恢复正常(设置为空或设置默认参考值)。

可选的,所述前端元素信息包括边界信息和期望结果信息中的至少一项。

上述边界信息可理解为测试用例构建过程中的测试判定条件,举例来说,若设定输入文本框的字符的最大长度为50,在测试用例为测试输入文本框的字符长度的最大值时,边界信息即为50。

示例性的,上述边界信息的代码结构可以为:

如上述边界信息的代码结构所示,其中,maxlength用于说明边界信息的用途,即该边界信息可理解为某一元素的最大长度,且该最大长度为50;至于hidden可理解为隐藏标识,用于在待测试的前端界面中隐藏上述边界信息,这能在不干扰待测试的前端界面的界面布局的情况下,使测试人员快速获知待测试的内容,提高测试人员的测试用例构建效率。

进一步的,基于上述边界信息可构建测试用例为,为该边界信息对应的前端元素分别赋值长度40,50和51,并判断在长度40和50的情况下,该边界信息对应的前端元素是否正常,以及在长度为51的情况下,该边界信息对应的前端元素是否会显示输入长度超过阈值的提示信息。

需要说明的是,实际中,上述边界信息所指示内容可适应性调整,例如,边界值测试(如上述示例所示出的最大字符长度测试等)、比较测试(如测试两个变量之间的大小关系,或不同集合之间的交并关系等)等,本申请实施例对此并不加以限定。

上述期望结果信息可理解为事件执行或触发后所期望获得的结果,举例来说,若设定关联某一按钮的点击事件触发以后,返回预设的统一资源定位符(Uniform ResourceLocator,URL),在设定该统一资源定位符具体为/traffic-quality-user/users/sign的情况下,则上述期望结果信息为/traffic-quality-user/users/sign。

示例性的,上述期望结果信息的代码结构可以为:

value='/traffic-quality-user/users/sign'>

如上述期望结果信息的代码结构所示,其中,responseURL和responseMessage用于说明期望结果信息的用途,即该期望结果信息可理解为某一事件触发或执行预期返回的统一资源定位符,以及对应的返回提示信息,且该统一资源定位符具体为/traffic-quality-user/users/sign,返回提示信息为“创建成功”;至于hidden可理解为隐藏标识,用于在待测试的前端界面中隐藏上述期望结果信息。

进一步的,基于上述期望结果信息生成的测试用例可以为,触发或执行上述期望结果信息对应的事件,判断返回提示信息是否为“创建成功”,判断实际返回的统一资源定位符是否为/traffic-quality-user/users/sign。

需要说明的是,实际中,上述期望结果信息所指示内容可适应性调整,例如,事件反馈测试(如事件的执行或触发反馈测试等)、函数功能测试等,本申请实施例对此并不加以限定。

示例性的,以弹窗对应的点击事件为例,基于期望结果信息生成测试用例,并执行该测试用例时以获得弹窗中某个弹窗元素中部分属性的实际值的过程可以为,根据如下代码获得该弹窗元素中部分属性的实际值:

WebElement e = driver.findElement(By.xpath(stepXPATH));

String nodeText= e.getText();

如上述代码所示,先根据路径节点获取弹窗元素e,再根据所获取的弹窗元素e,获得该弹窗元素e的Text属性对应的属性值;随后将期望结果信息与Text属性对应的属性值进行比较,若两者相同,则判断测试成功,若两者不同,则判断测试失败。

以弹窗对应的点击事件为例,基于期望结果信息生成测试用例,并执行该测试用例时以获得弹窗中某个弹窗元素中部分属性的实际值的过程也可以为,基于测试工具模拟弹窗对应的点击事件,并根据相适配的应用程序编程接口(Application ProgrammingInterface,API)获得Text属性对应的属性值,其后续比较过程参见前述示例,此处不再赘述。

其中,上述测试工具可以为curl(CommandLine Uniform Resource Locator)等,实际中,测试人员可适应性调整上述测试工具,本申请实施例对此并不加以限定。

另外,以弹窗对应的点击事件为例,基于期望结果信息生成测试用例,并执行该测试用例时以获得弹窗中某个弹窗元素中部分属性的实际值的过程还可以为,利用相适配的应用程序编程接口连接数据库,执行查询命令,以获得开发表信息中Text属性对应的属性值,其后续比较过程参见前述示例,此处不再赘述。

可选的,在所述获取N个测试键值对信息之前,所述方法还包括:

获取预设数据库的测试表信息;

根据所述测试表信息,更新所述边界信息和所述期望结果信息中的至少一项。

如上所述,利用测试表信息,对上述边界信息和期望结果信息中的至少一项进行更新,使上述边界信息和期望结果信息具备较优的扩展性,使整体测试方法保持可扩展性。

需要说明的是,上述边界信息和期望结果信息均为动态存储于数据库的测试表中的数据,测试人员可基于实际需求实时调整测试表中的边界信息和期望结果信息。

其中,动态存储可理解为目标数据存储在数据库,在待测试界面以变量的形式进行体现,在数据库的目标数据出现更改的情况下,待测试界面的变量所对应的实际值也会相应变化。示例性地,设定目标数据在数据库中为3,在待测试界面中,目标数据对应的变量为day,此时该变量day对应的值为3;若目标数据经过修改后,其值由3变更为5,则在重新加载待测试界面之后,变量day对应的值将变更为5。上述目标数据包括边界信息和期望结果信息。

可选的,目标测试结果为所述N个测试结果中的任意一个测试结果;

所述执行所述N个测试用例,获得N个测试结果,包括:

在所述目标测试结果为测试成功的情况下,在所述目标测试结果对应的测试用例中加入标记信息,所述标记信息用于标识跳过所述目标测试结果对应的测试用例的执行步骤。

如上所述,在测试人员构建完成多个测试用例之后,会通过测试程序来执行所述多个测试用例,执行过程中,若其中一个测试用例的测试结果为测试失败,则测试程序会被中断,待测试失败的测试用例被修改后,测试人员则再次启动上述测试程序,从头开始执行所述多个测试用例,此时,利用上述标记信息的设置,能使测试程序跳过测试成功的多个测试用例,提高多个测试用例的整体执行效率,进而提升前端测试的整体测试效率,缓解快速迭代开发模式下,测试开发时间不足的问题。

请参阅图2,图2是本申请实施例提供的一种测试装置的结构示意图,如图2所示,上述测试装置200包括:

第一获取模块201,用于获取N个测试键值对信息,每一所述测试键值对信息对应一个待测试的前端元素,每一所述测试键值对信息包括一个测试标记,所述测试标记用于标识所述前端元素是否为待测试的前端元素,N为大于或等于1的整数。

第二获取模块202,用于根据所述N个测试键值对信息,获得与所述N个测试键值对信息一一对应的N个前端元素信息。

用例构建模块203,用于根据所述N个前端元素信息,生成与所述N个前端元素信息一一对应的N个测试用例。

测试模块204,用于执行所述N个测试用例,获得与所述N个测试用例一一对应的N个测试结果。

可选的,所述前端元素信息包括M个属性名中的至少一个,以及每个属性名对应的默认属性值,M为大于或等于1的整数;

所述用例构建模块203包括:

获取目标前端元素信息对应的属性名和默认属性值,所述目标前端元素信息为所述N个前端元素信息中的任意一个前端元素信息;

根据所述目标前端元素信息对应的属性名和默认属性值,生成所述目标前端元素信息对应的测试用例。

可选的,所述前端元素信息包括边界信息和期望结果信息中的至少一项。

可选的,测试装置还包括更新模块,用于在获取N个测试键值对信息之前,获取预设数据库的测试表信息;根据所述测试表信息,更新所述边界信息和所述期望结果信息中的至少一项。

可选的,测试模块204包括:

在所述目标测试结果为测试成功的情况下,在所述目标测试结果对应的测试用例中加入标记信息,所示目标测试结果为所述N个测试结果中的任意一个测试结果,所述标记信息用于标识跳过所述目标测试结果对应的测试用例的执行步骤。

需要说明的是,本申请实施例中的测试装置200可以是装置,也可以是电子设备中的部件、集成电路或芯片。

请参见图3,图3是本申请实施例提供的一种电子设备的结构示意图,如图3所示,电子设备包括:总线301、收发机302、天线303、总线接口304、处理器305和存储器306。处理器305能够实现上述测试方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

在图3中,总线架构(用总线301来代表),总线301可以包括任意数量的互联的总线和桥,总线301将包括由处理器305代表的一个或多个处理器和存储器306代表的存储器的各种电路链接在一起。总线301还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口304在总线301和收发机302之间提供接口。收发机302可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器305处理的数据通过天线303在无线介质上进行传输,进一步,天线303还接收数据并将数据传送给处理器305。

处理器305负责管理总线301和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器306可以被用于存储处理器305在执行操作时所使用的数据。

可选的,处理器305可以是CPU、ASIC、FPGA或CPLD。

本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述测试方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。

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

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者第二终端设备等)执行本申请各个实施例所述的方法。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

相关技术
  • 一种业务系统测试方法、装置、电子设备和可读存储介质
  • 一种设备测试方法、装置、电子设备及可读存储介质
技术分类

06120113807988