一种测试方法及装置与流程

文档序号:20186430发布日期:2020-03-27 19:07阅读:94来源:国知局
一种测试方法及装置与流程

本发明涉及金融科技(fintech)技术领域,尤其涉及一种测试方法及装置。



背景技术:

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。前端界面测试是金融界面开发的一项常规操作,传统的界面测试方法通常需要预先安排测试人员,使用测试人员在每次界面测试过程中重复地点击测试界面上的dom节点,然而,该种方式极为依赖人工,测试的效率较低,且人为操作的差异性可能会导致测试的结果不准确。

为了解决上述问题,在一种可能的实现方式中,可以使用现有的自动化测试软件实现自动化的界面测试工作,比如sikuli软件、selenium软件、katalon软件等。然而,这些软件通常需要用户具有一定的编程能力,从而导致其自动化测试的程度低,用户的使用体验不好;比如selenium软件通常需要人为设置断言条件,也就是说,用户需要使用selenium软件支持的编程语言在selenium软件界面中输入控制断言条件的语句,如此,selenium软件在执行界面测试时才会在满足断言条件的位置进行断言,若用户未设置控制断言条件的语句或者用户设置的语句有误,则selenium软件无法得到准确的测试结果。

综上,目前亟需一种测试方法,用以解决现有的自动化测试软件由于需要用户具有一定的编程能力所导致的自动化测试的程度低、用户的体验不好的技术问题。



技术实现要素:

本发明实施例提供一种测试方法及装置,用以解决现有的自动化测试软件由于需要用户具有一定的编程能力所导致的自动化测试的程度低、用户的体验不好的技术问题。

第一方面,本发明实施例提供的一种测试方法,包括:

录制用户对测试界面的操作得到测试案例,所述测试案例包括所述用户对所述测试界面对应的dom树上的一个或多个dom节点进行操作的操作信息;进一步地,若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放,并在每个dom节点对应的操作回放结束后,根据所述操作对应的测试结果,对回放得到的第一界面和所述操作对应的标准界面进行渲染。

在上述设计中,通过设置对每个dom节点的操作结束后自动执行断言,可以无需用户手动地设置断言条件,如此,无编程能力的用户也可以使用该方法进行前端界面测试,从而使用门槛低,自动化测试的程度较高;且,通过设置每个dom节点的操作回放结束后,根据回放操作的测试结果对第一界面和标准界面进行渲染,可以使得用户直观地查看到测试结果中的差异数据,相比于现有的测试方法给出复杂的测试报告的方式来说,用户的体验更好,且更浅显易懂。

在一种可能的设计中,所述录制用户对测试界面的操作得到测试案例,包括:针对所述用户对所述测试界面的任一操作,从所述测试界面对应的dom树中确定所述用户触发的目标dom节点;根据所述目标dom节点的标识、类型和/或所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点在所述dom树中的定位标识,并根据所述目标dom节点在所述dom树中的定位标识、所述操作的类型、所述操作的内容、所述操作与上一操作的时间信息生成所述操作对应的测试数据;如此,根据所述用户对所述测试界面的各个操作对应的测试数据生成所述测试案例。

在上述设计中,通过使用目标dom节点的标识、类型和/或所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点在所述dom树中的定位标识,可以根据实际情况选择较为简单的计算条件来计算目标dom节点的定位标识,相比于现有的测试方法直接根据目标dom节点在dom树中的层级关系得到目标dom节点的方式来说,可以无需对每个dom节点执行较为复杂的计算过程,从而可以降低计算复杂度。

在一种可能的设计中,所述根据所述目标dom节点的标识、类型和/或所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点在所述dom树中的定位标识,包括:判断所述目标dom节点的标识是否属于第一类型标识,若是,则将所述目标dom节点的标识作为所述目标dom节点的定位标识,所述第一类型标识用于在录制和回放时唯一标识所述目标dom节点;若否,则判断所述目标dom节点的类型是否为所述dom树中的唯一类型,若是,则将所述目标dom节点的类型作为所述目标dom节点的定位标识,若否,则根据所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点的定位标识。

在上述设计中,通过设置先标识、再类型、最后层级关系的计算逻辑,可以快速地计算出目标dom节点的定位标识,相比于现有技术使用目标dom节点的绝对路径来计算每个目标dom节点的定位标识的方式来说,可以极大地降低计算复杂度,提高测试的效率。

在一种可能的设计中,所述根据所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点的定位标识,包括:判断所述目标dom节点的父节点是否存在,若不存在,则根据所述目标dom节点的类型在所述dom树中的顺序确定所述目标dom节点的定位标识;若存在,则组合所述目标dom节点的父节点的类型、所述目标dom节点的类型,得到所述目标dom节点对应的一级组合类型,判断所述目标dom节点对应的一级组合类型是否为所述dom树中的唯一类型,若是,则将所述目标dom节点对应的一级组合类型作为所述目标dom节点的定位标识,若否,则判断所述目标dom节点的父节点的父节点是否存在,若不存在,则根据所述目标dom节点对应的一级组合类型在所述dom树中的顺序确定所述目标dom节点的定位标识;若存在,则组合所述目标dom节点的父节点的父节点的类型、所述目标dom节点的父节点的类型、所述目标dom节点的类型,得到所述目标dom节点对应的二级组合类型,并根据所述目标dom节点对应的二级组合类型确定所述目标dom节点的定位标识。

在上述设计中,通过逐次调用父节点得到目标dom节点对应的组合类型,并在组合类型唯一时直接将组合类型作为定位标识,在组合类型不唯一时调用更上一级父节点得到组合类型,可以根据距离目标dom节点较近的父节点快速地确定其定位标识,而无需使用目标dom节点在dom树中的完整路径确定其定位标识,从而可以在保证定位标识唯一的基础上,降低测试所需处理的数据量,提高测试的效率。

在一种可能的设计中,所述判断所述目标dom节点的标识是否为第一类型标识,包括:若所述目标dom节点的标识由数字组成,则确定所述目标dom节点的标识不属于所述第一类型标识,若所述目标dom节点的标识包括数字以外的字符,则确定所述目标dom节点的标识属于所述第一类型标识。

在上述设计中,时间戳、设备标识等均是由数字组成,若将时间戳或设备标识作为目标dom节点的标识,则在录制和回放时由于时间戳不同,或者在不同的测试服务器上执行录制和回放,则目标dom节点的标识会发生改变,从而导致回放操作时无法根据目标dom节点的标识定位到录制的目标dom节点;据此,通过设置第一类型标识包含数字以外的字符,可以明确地判断目标dom节点的标识是否属于无意义的标识,从而可以避免采用第一类型标识作为定位标识所导致的回放阶段查询不到目标dom节点的问题,提高测试的准确性。

在一种可能的设计中,所述根据所述操作对应的测试结果,对回放得到的第一界面和所述操作对应的标准界面进行渲染,包括:解析所述第一界面得到第一dom树,解析所述标准界面得到标准dom树,针对于所述第一dom树和所述标准dom树的第i级节点层中的任一差异节点,根据所述差异节点在所述第一dom树和所述标准dom树中的区别生成所述差异节点对应的差异数据;针对于所述第一dom树和标准dom树的第i级节点层中的任一相同节点,若确定所述相同节点存在连接的第i+1级子节点,则对比所述第一dom树和所述标准dom树中所述相同节点连接的所有第i+1级子节点,并根据对比结果判断任一连接的第i+1级子节点属于差异节点还是相同节点;其中,i为大于0的整数;进一步地,根据各级节点层中各个差异节点对应的差异数据,在所述第一界面和所述标准界面上对所述各个差异节点对应的元素进行渲染,得到所述操作对应的测试结果。

在上述设计中,每执行一次回放操作即执行一次对比,并根据对比的结果对本次操作对应的回放界面和标准界面进行渲染,从而用户可以直观地根据回放界面和标准界面确定本次操作的结果是否准确,相比于现有技术需要人为设置断言条件且用户仅能看到复杂的测试报告的方式来说,上述设计可以极大地减轻人为工作量,提高测试效率,降低了测试成本。

在一种可能的设计中,所述根据对比结果判断任一第i+1级子节点属于差异节点还是相同节点,包括:若所述标准dom树中不存在所述第i+1级子节点且所述第一dom树中存在所述第i+1级子节点,则确定所述第i+1级子节点为新增节点;若所述标准dom树中存在所述第i+1级子节点且所述第一dom树中不存在所述第i+1级子节点,则确定所述第i+1级子节点为删除节点;若所述标准dom树中的所述第i+1级子节点与所述第一dom树中的所述第i+1级子节点在样式、类型、名称、标识、属性中存在任意一项或任意多项不同,则确定所述第i+1级子节点为变更节点;进一步地,若所述第i+1级子节点为新增节点、删除节点或变更节点中的任意一种,则确定所述第i+1级子节点为差异节点,若所述标准dom树中的所述第i+1级子节点与所述第一dom树中的所述第i+1级子节点在样式、类型、名称、标识、属性上均相同,则确定所述第i+1级子节点为相同节点。

在一种可能的设计中,所述根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放,包括:将所述测试案例插入任务池,所述任务池用于存储待执行的一个或多个测试案例;进一步地,从多个进程中选取处于空闲状态的第一进程,将所述测试案例发送给所述第一进程,以使所述第一进程根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放操作,并将所述任务池中的所述测试案例设置为锁定状态。

在上述设计中,通过设置多个进程并行地执行测试任务,可以较好地提高前端界面的测试效率。

第二方面,本发明实施例提供的一种测试装置,所述装置包括:

录制模块,用于录制用户对测试界面的操作得到测试案例;所述测试案例包括所述用户对所述测试界面对应的dom树上的一个或多个dom节点进行操作的操作信息;

回放模块,用于若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放;

处理模块,用于在每个dom节点对应的操作回放结束后,根据对所述操作进行回放得到的第一界面和所述操作对应的标准界面,生成所述操作对应的测试结果。

在一种可能的设计中,所述录制模块具体用于:针对所述用户对所述测试界面的任一操作,从所述测试界面对应的dom树中确定所述用户触发的目标dom节点;根据所述目标dom节点的标识、类型和/或所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点在所述dom树中的定位标识,并根据所述目标dom节点在所述dom树中的定位标识、所述操作的类型、所述操作的内容、所述操作与上一操作的时间信息生成所述操作对应的测试数据;进一步地,根据所述用户对所述测试界面的各个操作对应的测试数据生成所述测试案例。

在一种可能的设计中,所述录制模块具体用于:判断所述目标dom节点的标识是否属于第一类型标识,若是,则将所述目标dom节点的标识作为所述目标dom节点的定位标识,所述第一类型标识用于在录制和回放时唯一标识所述目标dom节点;若否,则判断所述目标dom节点的类型是否为所述dom树中的唯一类型,若是,则将所述目标dom节点的类型作为所述目标dom节点的定位标识,若否,则根据所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点的定位标识。

在一种可能的设计中,所述录制模块具体用于:判断所述目标dom节点的父节点是否存在,若不存在,则根据所述目标dom节点的类型在所述dom树中的顺序确定所述目标dom节点的定位标识;若存在,则组合所述目标dom节点的父节点的类型、所述目标dom节点的类型,得到所述目标dom节点对应的一级组合类型,判断所述目标dom节点对应的一级组合类型是否为所述dom树中的唯一类型,若是,则将所述目标dom节点对应的一级组合类型作为所述目标dom节点的定位标识,若否,则判断所述目标dom节点的父节点的父节点是否存在,若不存在,则根据所述目标dom节点对应的一级组合类型在所述dom树中的顺序确定所述目标dom节点的定位标识;若存在,则组合所述目标dom节点的父节点的父节点的类型、所述目标dom节点的父节点的类型、所述目标dom节点的类型,得到所述目标dom节点对应的二级组合类型,并根据所述目标dom节点对应的二级组合类型确定所述目标dom节点的定位标识。

在一种可能的设计中,所述录制模块具体用于:若所述目标dom节点的标识由数字组成,则确定所述目标dom节点的标识不属于所述第一类型标识,若所述目标dom节点的标识包括数字以外的字符,则确定所述目标dom节点的标识属于所述第一类型标识。

在一种可能的设计中,所述处理模块具体用于:解析所述第一界面得到第一dom树,解析所述标准界面得到标准dom树,针对于所述第一dom树和所述标准dom树的第i级节点层中的任一差异节点,根据所述差异节点在所述第一dom树和所述标准dom树中的区别生成所述差异节点对应的差异数据;针对于所述第一dom树和标准dom树的第i级节点层中的任一相同节点,若确定所述相同节点存在连接的第i+1级子节点,则对比所述第一dom树和所述标准dom树中所述相同节点连接的所有第i+1级子节点,并根据对比结果判断任一连接的第i+1级子节点属于差异节点还是相同节点;其中,i为大于0的整数;进一步地,根据各级节点层中各个差异节点对应的差异数据,在所述第一界面和所述标准界面上对所述各个差异节点对应的元素进行渲染,得到所述操作对应的测试结果。

在一种可能的设计中,所述处理模块具体用于:若所述标准dom树中不存在所述第i+1级子节点且所述第一dom树中存在所述第i+1级子节点,则确定所述第i+1级子节点为新增节点;若所述标准dom树中存在所述第i+1级子节点且所述第一dom树中不存在所述第i+1级子节点,则确定所述第i+1级子节点为删除节点;若所述标准dom树中的所述第i+1级子节点与所述第一dom树中的所述第i+1级子节点在样式、类型、名称、标识、属性上存在任意一项或任意多项不同,则确定所述第i+1级子节点为变更节点;进一步地,若所述第i+1级子节点为新增节点、删除节点或变更节点中的任意一种,则确定所述第i+1级子节点为差异节点,若所述标准dom树中的所述第i+1级子节点与所述第一dom树中的所述第i+1级子节点在样式、类型、名称、标识、属性上均相同,则确定所述第i+1级子节点为相同节点。

在一种可能的设计中,所述回放模块具体用于:将所述测试案例插入任务池,所述任务池用于存储待执行的一个或多个测试案例,进一步地,从多个进程中选取处于空闲状态的第一进程,将所述测试案例发送给所述第一进程,以使所述第一进程根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放操作,并将所述任务池中的所述测试案例设置为锁定状态。

第三方面,本发明实施例提供的一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行上述第一方面任意所述的测试方法。

第四方面,本发明实施例提供的一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面任意所述的测试方法。

本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种测试方法对应的流程示意图;

图2为本发明实施例提供的一种服务界面的界面示意图;

图3为本发明实施例提供的一种测试界面对应的dom树的结构示意图;

图4为本发明实施例提供的一种确定目标dom节点的定位标识的方法对应的流程示意图;

图5为本发明实施例提供的一种可能的案例归类器的界面示意图;

图6为本发明实施例提供的一种chrome录制插件的界面示意图;

图7为本发明实施例提供的一种测试装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

金融科技(fintech)技术领域通常涉及到多种业务,比如,银行的业务可以包括售卡业务、存款业务、贷款业务、保险业务、理财业务等,银行每天的业务量可以达到数千笔甚至数万笔。一般来说,银行除了可以在银行所在地进行实地业务外,还可以在网络设置业务对应的前端页面,通过业务对应的前端页面向用户提供相应的业务;比如通过设置贷款交易对应的前端界面,用户可以直接在贷款交易对应的前端界面上进行贷款操作,如此,用户可以更为便捷地办理贷款业务。

在前端页面的研发过程中,当需要对前端页面进行版本升级或故障维护时,研发人员通常可以修正旧版本的前端页面程序或者基于旧版本的前端页面程序生成新程序,然而,改动的程序可能会导致界面上的元素错位或者节点功能异常,比如dom节点的样式改变、dom节点的属性变更、dom节点的内容乱码等。因此,界面测试是前端页面的研发过程中不可或缺的一环,界面测试是指通过点击测试界面上的dom节点确定该dom节点的样式、内容、位置、功能等相对于标准dom节点是否发生异常,通过执行界面测试,可以将程序更新过程所导致的异常dom节点检测出来,从而能够保证前端页面研发的顺利进行。

在一种可能的实现方式中,可以使用selenium软件进行自动化的界面测试过程,selenium软件包含四个独立的脚本文件,分别为录制脚本文件、回放脚本文件、断言脚本文件和测试结果脚本文件;相应地,基于selenium软件的自动化测试过程具体包括录制阶段、回放阶段、断言阶段和测试结果阶段,每个阶段均需要用户使用selenium软件支持的编程语言调用该阶段的脚本文件,这四个阶段的具体实现过程如下所示:

录制阶段

当用户使用selenium软件支持的编程语言调用录制阶段的脚本文件后,测试服务器可以启动录制阶段。在录制阶段,用户可以手动地点击测试界面上的各个dom节点,相应地,测试服务器可以依次记录用户对测试界面上的每个dom节点进行点击的操作信息,从而将测试界面的变化情况录制成测试案例。举例来说,若用户依次点击了测试界面上的dom节点a2、dom节点a1和dom节点a3,则selenium软件可以依次记录用户对dom节点a2、dom节点a1和dom节点a3的操作信息,并可以根据用户对dom节点a2、dom节点a1和dom节点a3的操作信息生成测试案例。

其中,用户对每个dom节点的操作信息可以包括该dom节点的位置信息和用户对该dom节点的操作类型,如此,测试案例可以包括用户所操作的每个dom节点的顺序、位置信息和操作类型。具体实施中,selenium软件可以使用xpath方案确定每个dom节点的位置信息,即先根据测试界面得到测试界面对应的dom树,然后根据该dom节点在测试界面对应的dom树中的绝对路径得到该dom节点的位置信息,比如将dom树中根节点至该dom节点的路径所包括的dom节点的标识进行组合,将组合得到的标识作为该dom的位置信息。

回放阶段

当用户使用selenium软件支持的编程语言调用回放阶段的脚本文件后,测试服务器可以启动回放阶段。在回放阶段,测试服务器可以获取录制阶段生成的测试案例,并可以按照测试案例依次回放用户对多个dom节点的操作信息;具体地说,针对于任一操作信息,测试服务器可以先根据dom节点的位置信息从测试界面中找到该dom节点,然后根据录制阶段的操作类型对该dom节点进行回放操作,比如若录制阶段对该dom节点的操作类型为点击,则回放阶段也可以在测试界面上点击该dom节点。

断言阶段

断言阶段和回放阶段可以并行执行,断言阶段的断言条件为用户设置的,如此,测试服务器在执行回放阶段时还可以根据用户设置的断言条件进行断言。具体地说,当用户使用selenium软件支持的编程语言调用断言阶段的脚本文件后,测试服务器可以响应给用户一个断言界面,用户可以在断言界面上输入断言条件,从而触发测试服务器根据断言条件进行断言;比如,若用户设置对dom节点a2进行断言,则测试服务器可以在对dom节点a2进行操作后,对比操作后的界面与标准界面,确定dom节点a2的样式、内容、功能等是否异常。

测试结果阶段

当用户使用selenium软件支持的编程语言调用测试结果阶段的脚本文件后,测试服务器可以响应给用户测试结果报告,其中,测试结果报告中可以包括用户设置了断言条件的dom节点的测试结果,测试结果可以包括测试正常或测试异常,且测试结果报告可以为文本的形式显示给用户。举例来说,若dom节点a2、dom节点a1和dom节点a3均设置了断言条件,而测试结果报告为dom节点a2测试异常、dom节点a1测试正常、dom节点a3测试异常,则用户可以根据该测试结果报告修复dom节点a2和dom节点a3。

根据上述内容可知,虽然selenium软件可以自动地完成界面测试,但是由于用户需要使用selenium软件所支持的编程语言调用每个阶段对应的脚本文件,因此需要用户熟练地掌握selenium软件所支持的编程语言,导致开发难度大,用户的体验不好;也就是说,selenium软件的自动化程度并不高,无法实现完整意义上的自动化页面测试。此外,基于selenium软件的自动化测试过程还存在如下缺点:

(1)在录制阶段,selenium软件基于xpath方案对每个dom节点进行定位,由于xpath方案需要使用dom节点在dom树中的绝对路径确定dom节点的位置信息,从而该种方式对每个dom节点均需要执行较为复杂的路径确定过程,从而会使得定位dom节点需要较长的时间,界面测试的效率较低;

(2)selenium软件将dom树中dom节点的标识组合作为dom节点的位置信息,然而,在大多数情况下,dom节点的标识可能是无意义的标识,比如时间戳,录制阶段和回放阶段由于时间戳不同会导致同一dom节点的标识不同;因此,若该种方式根据无意义的标识得到dom节点的位置信息,可能会使得回放过程中查询不到dom节点,从而使得测试过程出错,测试的准确性低;

(3)在断言阶段,selenium软件仅能根据用户设置的断言条件对某一个或某几个dom节点进行断言,一方面,该方法需要用户手动补充断言条件,导致自动化程序不高;另一方面,由于用户通过编写dom节点的标识设置对该dom节点的断言条件,因此可移植性差,无法为每个dom节点设置通用的断言条件;

(4)selenium软件对每个dom节点的测试结果为测试过程成功或测试失败,而无法给出具体的测试结果,导致用户无法直观地查看到dom节点的异常信息,从而不利于用户的故障修复过程。

基于此,本发明提供了一种测试方法,用以在提高界面测试的效率、提高测试的准确性及可移植性的基础上,实现一套通用且完整的自动化测试过程。

图1为本发明实施例提供的一种测试方法对应的流程示意图,该方法应用于测试服务器,该方法包括:

步骤101,录制用户对测试界面的操作得到测试案例。

具体实施中,测试服务器上可以设置有服务界面,服务界面为基于全球广域网(worldwideweb,web)服务器和web浏览器的界面,服务界面上可以包含多个功能图标;如此,在接收用户在web浏览器上输入的服务界面对应的链接时,测试服务器可以向用户提供服务界面,进而若检测到用户点击服务界面上的功能图标,则可以通过web浏览器执行功能图标对应的功能。

图2为本发明实施例提供的一种服务界面的示意图,如图2所示,服务界面上可以设置有录制子界面和服务子界面,其中,录制子界面上可以设置有“录制插件”的功能按钮,服务子界面上可以设置有“案例管理”的功能按钮、“回放”的功能按钮以及“差异展示”的功能按钮。具体实施中,当用户在web浏览器上输入服务界面对应的预设链接后,测试服务器可以先通过web浏览器将录制子界面显示给用户,或者也可以将录制子界面和服务子界面同时显示给用户;进一步地,若检测到用户点击录制子界面上的“录制插件”的功能按钮,则测试服务器可以将web浏览器上的录制子界面转换为测试界面,并可以启动预设录制插件来录制用户对测试界面的操作信息,得到录制脚本;当接收到用户触发的结束录制的消息后,测试服务器可以将录制脚本转化为测试案例,并可以添加在服务子界面所管理的案例中。

其中,预设录制插件可以为具有界面录制功能的任一类型的插件,比如chrome录制插件、unity3d录制插件等,具体不作限定。

需要说明的是,上述仅是一种示例性的简单说明,并不构成对方案的限定,在具体实施中,功能图标可以设置服务界面上,或者也可以直接设置在测试界面上,不作限定。在上述示例中,由于功能图标设置在服务界面上,因此检测到用户触发“录制插件”的功能按钮后,测试服务器可以自动从服务界面跳转到测试界面,并录制用户对测试界面的操作信息得到录制脚本;相应地,若功能图标设置在测试界面上,则检测到用户触发“录制插件”的功能按钮后,测试服务器可以直接录制用户对测试界面的操作信息得到录制脚本。

本发明实施例中,当接收到测试服务器的启动指令后,预设录制插件可以先解析测试界面得到测试界面对应的dom树,dom树中可以包括具有层级关系的多个dom节点,任一dom节点连接的上一级节点称为该dom节点的父节点,任一dom节点连接的下一级节点称为该dom节点的子节点,一个dom节点可以具有一个父节点,且可以具有多个子节点。其中,每个dom节点可以对应测试界面上的一个元素,每个dom节点可以具有对应的样式、内容、属性和位置等信息。

图3为本发明实施例提供的一种测试界面对应的dom树的结构示意图,如图3所示,该测试界面对应的dom树中可以包括第一级节点层、第二级节点层、第三级节点层和第四级节点层。其中,第一级节点层中可以设置有dom节点b1,dom节点b1的类型为document;第二级节点层中可以设置有dom节点b21、dom节点b22和dom节点b23,dom节点b21的类型为element,dom节点b22的类型为entity,dom节点b23的类型为notation;第三级节点层中可以设置有dom节点b31、dom节点b32和dom节点b33,dom节点b31的类型为element,dom节点b32的类型为notation,dom节点b33的类型为element;第四级节点层中可以设置有dom节点b41,dom节点b41的类型为notation。

本发明实施例中,第一级节点层中的节点称为根节点,与根节点连接的第二级节点层中的节点称为根节点的第一级子节点,根节点称为连接的第二级节点层中的节点的第一级父节点;相应地,第三级节点层中的节点称为所连接的第二级节点层中节点的第一级子节点,称为根节点的第二级子节点,所连接的第二级节点层中的节点称为第三级节点层中的节点的第一级父节点,根节点称为第三级节点层中的节点的第二级父节点。举例来说,如图3所示,dom节点b1为根节点;dom节点b21为dom节点b1的第一级子节点,且为dom节点b31的第一级父节点,为dom节点b41的第二级父节点。

需要说明的是,图3仅是一种示例性的简单说明,其仅示意出了各个dom节点之间的层级关系及类型,并未示意每个dom节点的属性、样式等信息,该示意仅是为了便于说明方案,并不构成对方案的限定,在具体实施中,dom树的结构可以根据实际需要进行设置,具体不作限定。

在一种可能的实现方式中,在解析测试界面得到测试界面对应的dom树后,预设录制插件可以按照如下方式录制用户对测试界面的操作信息得到录制脚本:针对于用户对测试界面的任一操作,确定用户在测试界面对应的dom树中所触发的目标dom节点,根据目标dom节点的标识、类型或目标dom节点在dom树中的层级关系得到目标dom节点在dom树中的定位标识,并根据目标dom节点的定位标识、操作的类型、操作的内容、操作与上一操作的时间信息生成该操作对应的录制脚本;进一步地,当接收到用户触发录制结束的消息后,根据用户对测试界面的各个操作对应的录制脚本得到该次录制对应的测试案例。

下面以一个具体的示例进行说明:

在该示例中,测试界面为html5浏览器上的页面、预设录制插件为chrome录制插件,具体实施中,当接收到测试服务器发送的启动指令后,chrome录制插件可以先缓存测试界面对应的dom树中的所有dom节点的类型和标识,然后可以使用html5浏览器的motationobserverapi接口监测测试界面上的dom节点,若监测到dom节点的新增变更、dom节点的删除变更或dom节点的修改变更,则可以重新解析变更dom节点后的测试界面得到变更后的dom树,如此,chrome录制插件可以重新缓存变更后的dom树中的所有dom节点的类型和标识。

在上述示例中,监测dom节点的变更的方式可以为:chrome录制插件预先在html5浏览器的测试页面上设置埋点事件捕获机制,当检测到某一埋点事件(比如点击事件、双击事件、输入事件)被触发时,可以通过埋点事件捕获机制来捕获到用户的操作(对应为点击操作、双击操作、输入操作);进一步地,针对于任一捕获到的操作,chrome录制插件可以获取操作的类型、操作的内容、操作对应的目标dom节点的定位标识、操作与上次操作的时长等信息,然后基于这些信息生成该操作对应的录制脚本。

本发明实施例中,确定操作对应的目标dom节点的定位标识的方式可以有多种,图4为本发明实施例提供的一种确定目标dom节点的定位标识的方法对应的流程示意图,如图4所示,该方法包括:

步骤401,根据用户的操作确定本次操作对应的目标dom节点,并从预先缓存的各个dom节点的类型和标识中获取目标dom节点的类型和标识。

举例来说,接收到测试服务器发送的启动指令后,由于chrome录制插件先从测试界面对应的dom树中将所有dom节点的类型和标识缓存在了浏览器空间中,因此,若确定用户针对于某一dom节点(比如dom节点b22)执行了点击操作,则chrome录制插件可以直接从浏览器空间中获取dom节点b22的类型和标识。其中,dom节点b22的标识和类型可以由界面开发人员预先设置,因此chrome录制插件可以通过调用测试界面的配置文件来获取dom节点b22的标识和类型;基于图3所示意的dom树可知,dom节点b22的类型为entity。

步骤402,判断目标dom节点的标识是否属于第一类型标识,若是,则执行步骤403,若否,则执行步骤404。

本发明实施例中,第一类型标识用于指示在不同的操作过程中能够唯一标识目标dom节点的标识,也就是说,若某一dom节点的标识属于第一类型标识,则在不同的时刻和/或不同的设备上对该dom节点进行点击时,该dom节点的标识也不会发生变化。

在一种可能的场景中,当dom节点的标识设置为生成时间戳、循环的数字或随机的数字时,若在不同的时刻和/或不同的设备上对该dom节点进行点击,则该dom节点的标识会发生变化。举例来说,以dom节点的标识为生成时间戳为例,若在录制时点击该dom节点的时间为10:09,而在回放测试案例时点击该dom节点的时间为12:10,则在录制和回放时该dom节点的标识不同,即回放时无法根据录制时的该dom节点的标识查询到该dom节点。

基于该原理,本发明实施例中,若目标dom节点的标识由数字组成,则可以确定目标dom节点的标识不属于第一类型标识,若目标dom节点的标识包括数字以外的字符,则可以确定目标dom节点的标识属于第一类型标识。本发明实施例中,通过设置第一类型标识包含数字以外的字符,可以明确地判断目标dom节点的标识是否属于无意义的标识,从而可以避免采用第一类型标识作为定位标识所导致的回放阶段查询不到目标dom节点的问题,提高测试的准确性。

步骤403,将目标dom节点的标识作为目标dom节点的定位标识。

当目标dom节点的标识属于第一类型标识时,由于该目标dom节点的标识在不同的操作过程中能够唯一标识该目标dom节点,说明回放时也可以根据录制时确定的该目标dom节点的标识找到对应的目标dom节点,因此,可以直接将该目标dom节点的标识作为目标dom节点的定位标识。

步骤404,判断目标dom节点的类型是否为dom树中的唯一类型,若是,则执行步骤405,若否,则执行步骤406。

当目标dom节点的标识不属于第一类型标识时,由于该目标dom节点的标识在不同的操作过程中无法唯一标识该目标dom节点,说明回放时无法根据录制时确定的该目标dom节点的标识找到对应的目标dom节点,因此,不能直接将目标dom节点的标识作为该目标dom节点的定位标识。如此,可以先根据目标dom节点的类型确定目标dom节点的定位标识,若无法根据目标dom节点的类型确定目标dom节点的定位标识,则可以根据目标dom节点在dom树中的层级关系确定目标dom节点的定位标识。

步骤405,将目标dom节点的类型作为目标dom节点的定位标识。

步骤406,判断上一级父节点是否存在,若存在,则执行步骤407,若否,则执行步骤410。

步骤407,根据上一级父节点的类型得到目标dom节点对应的组合类型。

步骤408,判断目标dom节点对应的组合类型是否为dom树中的唯一类型,若是,则执行步骤409,若否,则执行步骤406。

步骤409,将目标dom节点对应的组合类型作为目标dom节点的定位标识。

步骤410,根据目标dom节点的类型或目标dom节点对应的组合类型在dom树中的顺序确定目标dom节点的定位标识。

基于图3所示意的dom树,以一个具体的示例来描述步骤404至步骤410的具体实现过程:

为了便于描述,本发明的下列实施例将组合dom节点的类型、dom节点的以一级父节点的类型得到的组合类型称为dom节点对应的一级组合类型,将组合dom节点的类型、dom节点的一级父节点的类型、dom节点的二级父节点的类型得到的组合类型称为dom节点对应的二级组合类型,依次递推。

如图3所示,dom节点b1的类型为document、dom节点b21的类型为element、dom节点b22的类型为entity、dom节点b23的类型为notation、dom节点b31的类型为element、dom节点b32的类型为notation、dom节点b33的类型为element、dom节点b41的类型为notation,由于document类型和entity类型为dom树中的唯一类型,因此若目标dom节点为dom节点b1或dom节点b22,则可以直接将目标dom节点的类型作为目标dom节点的定位标识。比如,若目标dom节点为dom节点b1,则目标dom节点的定位标识为document;或者,若目标dom节点为dom节点b22,则目标dom节点的定位标识为entity。

相应地,由于dom节点b21、dom节点b31和dom节点b33的类型均为element类型,dom节点b23、dom节点b32和dom节点b41的类型均为notation类型,说明element类型和notation类型不为dom树中的唯一类型;因此,若目标dom节点为dom节点b21、dom节点b23、dom节点b31、dom节点b32、dom节点b33或dom节点b41中的任意一个dom节点,则预设录制插件可以先组合目标dom节点的类型、目标dom节点的一级父节点的类型得到目标dom节点对应的一级组合类型,并判断目标dom节点对应的一级组合类型是否为dom树中的唯一类型,若是,则可以将目标dom节点对应的一级组合类型作为目标dom节点的定位标识,若否,则可以根据目标dom节点的类型、目标dom节点的一级父节点的类型、目标dom节点的二级父节点的类型得到目标dom节点对应的二级组合类型,然后针对于目标dom节点对应的二级组合类型执行上述判断过程,直至执行至根节点为止。

举例来说,若目标dom节点为dom节点b31,则可以先组合dom节点b31的类型element、dom节点b31的一级父节点dom节点b21的类型element,得到dom节点b31对应的一级组合类型element-element;由于element-element类型是dom树中的唯一类型,因此可以将dom节点b31对应的一级组合类型element-element作为dom节点b31的定位标识。相应地,若目标dom节点为dom节点b32,则可以先组合dom节点b32的类型notation、dom节点b32的一级父节点dom节点b21的类型element,得到dom节点b32对应的一级组合类型element-notation;由于dom节点b41对应的一级组合类型也为element-notation,说明element-notation类型不是dom树中的唯一类型,因此,不将dom节点b32对应的一级组合类型element-notation作为dom节点b32的定位标识,而是组合dom节点b32的类型notation、dom节点b32的一级父节点dom节点b21的类型element、dom节点b32的二级父节点dom节点b1的类型document,得到dom节点b32对应的二级组合类型document-element-notation;由于document-element-notation类型为dom树中的唯一类型,因此,可以将dom节点b32对应的二级组合类型document-element-notation作为dom节点b32的定位标识。

作为一个示例,假设dom节点b23的类型不是notation而是element,dom节点b33的类型不是element而是notation,则由于dom节点b33对应的二级组合类型也为document-element-notation,说明document-element-notation不是dom树中的唯一类型,因此,不将dom节点b32对应的二级组合类型document-element-notation作为dom节点b32的定位标识。进一步地,查询dom树发现dom节点b32的二级父节点dom节点b1为根节点,即dom节点b32不存在三级父节点,因此预设录制插件可以根据dom节点b32对应的二级组合类型document-element-notation在dom树中的顺序来确定目标dom节点对应的定位标识,具体地说,由于dom节点b32对应的二级组合类型document-element-notation在dom树中的顺序为第一位,而dom节点b33对应的二级组合类型document-element-notation在dom树中的顺序为第二位,因此,可以将dom节点b32对应的二级组合类型与该组合类型在dom树中的顺序的结合形式document-element-notation-1作为dom节点b32的定位标识。

由于selenium软件直接根据目标dom节点在dom树中的绝对路径得到dom节点的位置信息(即xpath方案),因此每个dom节点均需要较为复杂的计算过程方可确定每个dom节点的定位标识,从而会使得测试系统的性能损耗较为严重;采用图4所示意的定位方式,通过采用先标识、再类型、最后层级关系的计算逻辑,可以快速地计算出每个dom节点的定位标识,从而可以降低计算的复杂度,提高测试的效率。

进一步地,在确定目标dom节点的定位标识后,预设录制插件可以获取本次操作的类型(比如单击、双击、读取、写入等)、操作的内容(比如写入的数据)、本次操作与上次操作之间的时长等操作信息,还可以获取测试界面的统一资源定位符(uniformresourcelocation,url)、用户代理、设备信息等操作路径信息,并可以按照预设格式组装操作信息和操作路径信息,从而得到本次操作对应的录制脚本。

本发明实施例中,组装操作信息和操作路径信息得到录制脚本的方式可以有多种,在一种可能的实现方式中,测试服务器上预先设置了案例归类器,图5为一种可能的案例归类器的示意图,如图5所示,案例归类器中包含多个操作类型对应的脚本函数,比如creat函数、setviewport函数、setuseragent函数、goto函数、wait函数、dbclick函数、click函数、tap函数、input函数、select函数、upload函数、dest函数等。具体实施中,在确定每个操作对应的目标dom节点的定位标识后,可以自动将每个操作的操作信息和操作路径信息输入案例归类器,如此,案例归类器可以先调用creat函数创建每个操作对应的脚本对象,然后可以根据每个操作的操作路径信息遍历确定每个操作对应的操作过程,最后可以根据遍历过程更新函数的变量,得到录制脚本;比如若某次操作为单击操作,则遍历该次操作的操作路径信息后可以确定该操作对应的脚本函数为click函数;如此,案例归类器可以根据该操作的操作信息更新click函数中的变量,得到该操作对应的录制脚本。

需要说明的是,用户的一次操作可以对应一个录制脚本,也可以对应多个录制脚本,具体不作限定。

本发明实施例中,用户对测试界面执行的每一次操作均可以被实时地输入案例归类器,如此,当用户对测试界面的操作录制完成后,案例归类器可以将用户的每次操作对应的录制脚本按照顺序排列组合,得到本次录制的测试案例(此处指脚本文件)。进一步地,测试服务器可以先为本次录制的测试案例设置标识,然后可以将本次录制的测试案例的脚本文件存储在案例管理文件夹中,并可以将本次录制的测试案例的标识添加在服务子界面对应的“案例管理”的功能按钮对应的界面中,以显示给用户。

上面以软件实现形式描述了使用预设录制插件录制得到测试案例的过程,下面从硬件实现角度描述预设录制插件的各个模块。

图6为本发明实施例提供的一种chrome录制插件的结构示意图,如图6所示,chrome录制插件可以由popup模块、background模块和content模块组成,popup模块、background模块和content模块的功能如下所示:

popup模块负责chrome录制插件的界面展示和逻辑处理。具体地说,popup模块可以向用户提供“启动录制”的功能按钮和“结束录制”的功能按钮,并在检测到用户点击“启动录制”的功能按钮或“结束录制”的功能按钮时,告知background模块;且,popup模块还可以在chrome录制插件结束录制后,将background模块发送的测试案例显示给用户。

background模块是承接popup模块和content模块的桥梁。具体实施中,background模块可以把用户在popup模块中点击“启动录制”的功能按钮和“结束录制”的功能按钮的消息通知给content模块,且可以在chrome录制插件结束录制后接收content模块发送的多个埋点事件对应的操作信息,并可以调用案例归类器将这些操作信息转换成测试案例,然后可以将测试案例发送给popup模块,以便于用户查看。

content模块的执行环境可以设置在测试界面中。具体实施中,当接收到background模块发送的用户点击“启动录制”的功能按钮的消息后,content模块可以监听并记录测试界面中的埋点事件,比如click事件、input事件、change事件、touchstart事件、touchmove事件、touchend事件和touchcancel事件等;相应地,当接收到background模块发送的用户点击“结束录制”的功能按钮的消息后,content模块可以把记录的埋点事件对应的操作信息发送给background模块,其中,每个埋点事件对应的操作信息可以包含埋点事件的类型、操作的目标dom节点的定位标识、操作信息、本次操作与上次操作的时间差值等。

步骤102,若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放。

在一种可能的实现方式中,测试服务器可以预先设置多个进程,并可以使用多个进程并行地执行多个测试任务。具体实施中,当用户在服务子界面中触发“案例管理”的功能按钮后,测试服务器可以将历史测试案例显示给用户,如此,若检测到用户触发某一测试案例,则测试服务器可以先将该测试案例的标识添加到待执行任务池中,然后可以轮询多个进程确定每个进程的繁忙程度;若确定存在某一进程处于空闲状态,则可以将该测试案例的脚本文件发送给该空闲进程,并可以锁定待执行任务池中的该测试案例,从而避免其他进程重复处理该测试案例,导致不必要的性能损失。

其中,测试服务器中进程的数量可以根据中央处理器(centralprocessingunit,cpu)的核数来设置,或者也可以由用户根据业务需要进行设置,具体不作限定。当进程分配到测试案例后,进程可以利用node.js的vm虚拟机能力来运行测试案例对应的脚本文件。具体地说,进程可以先解析测试案例对应的脚本文件得到多个操作对应的录制脚本,由于每个操作对应的录制脚本通过函数来表示,因此,进程可以采用预设浏览器算法执行函数,从而在测试界面上依次回放多个操作。

本发明实施例中,预设浏览器算法可以由本领域技术人员根据经验进行设置,比如可以为puppeteer浏览器算法、phantomjs浏览器算法等,具体不作限定。

以通过puppeteer浏览器算法操作无头浏览器为例,具体实施中,进程可以先从测试案例的脚本文件中获取create函数,并可以使用create函数调用puppeteer浏览器算法,使得puppeteer浏览器算法执行启动无头浏览器的任务,如此,puppeteer浏览器算法可以跟无头浏览器建立socket连接;进一步地,若某一操作对应的录制脚本为click函数,则puppeteer浏览器算法可以先根据该操作的目标dom节点的定位标识等待目标dom节点对应的元素出现在无头浏览器的测试界面上,然后再按照click函数对目标dom节点的点击方式向puppeteer浏览器算法发送控制指令,如此,puppeteer浏览器算法可以通过socket连接告知无头浏览器在目标dom节点对应的元素上执行点击操作。

可以理解的,上述过程是以操作类型为点击为例描述操作的回放过程,其它操作类型可以按照该过程进行实现,此处不再赘述。

举例来说,若某一测试案例对应的脚本文件为:首先click函数记录了用户点击dom节点b21,然后wait函数记录了用户在点击dom节点b21后等待了30秒,接着dbclick函数记录了用户双击dom节点b23,然后wait函数记录了用户在双击dom节点b23后等待了15秒,最后input函数记录了用户在dom节点b1中输入“文档”,则进程可以通过puppeteer浏览器算法调用无头浏览器,先在无头浏览器的测试界面上单击dom节点b21,然后等待30秒后双击dom节点b23,并在等待15秒后在dom节点b1中输入“文档”,从而完成对测试案例中的用户的操作进行完整的回放。

步骤103,在每个dom节点对应的操作回放结束后,根据所述操作对应的测试结果,在回放得到的第一界面和所述操作对应的标准界面上进行渲染。

具体实施中,针对于任一操作(比如双击dom节点b23),在进程调用puppeteer浏览器算法控制无头浏览器对测试界面上的dom节点b23进行双击后,测试界面可以跳转到第一界面,如此,进程可以对比第一界面和该操作对应的标准界面,确定两个界面对应的dom树中各个dom节点的差异,并可以根据各个dom节点的差异将对应的元素差异渲染在第一界面和标准界面上,以使用户直观地查看到测试结果。其中,用户的每次操作均可以对应有一个标准界面,标准界面可以由本领域技术人员根据经验进行设置,比如可以为编程得到的界面,或者也可以为从历次测试过程中选取的最标准的一个界面,具体不作限定。

本发明实施例中,当跳转到第一界面后,进程可以解析第一界面得到对应的第一dom树,并可以根据标准数据库中确定标准界面对应的标准dom树;其中,标准数据库中可以仅存储多个操作分别对应的标准界面,或者也可以同时存储多个操作对应的标准界面和标准dom树,相应地,进程可以直接从标准数据库中获取标准dom树,或者也可以先获取标准界面,然后解析得到标准dom树。进一步地,针对于第i级节点层中的任一差异节点,进程可以根据该差异节点在第一dom树和标准dom树中的区别生成该差异节点对应的差异数据,针对于第i级节点层中的任一相同节点,若确定第i+1级节点层中存在该相同节点连接的子节点,则进程可以分别对比第一dom树和标准dom树中该相同节点的所有子节点,并可以根据对比结果确定任一子节点属于差异节点还是相同节点,并按照上述过程执行对比,直至对比至所有节点均不存在子节点为止。

具体实施中,进程可以先对比第一dom树的第一级节点层中的第一根节点和标准dom树的第一级节点层中的标准根节点,若第一根节点与标准根节点在样式、内容、类型、属性,若样式、内容、类型上存在任意一项或任意多项不同,则该节点属于修改节点;若仅存在第一根节点而不存在标准根节点,则确定第一根节点为新增节点;若仅存在标准根节点而不存在第一根节点,则确定标准根节点为删除节点,其中,新增节点、删除节点和修改节点均为差异节点,进程可以根据差异节点在第一dom树和标准dom树中的区别生成差异节点对应的差异数据。相应地,若第一根节点与标准根节点的样式、内容、类型、属性等,若样式、内容、类型等均相同,则第一根节点与标准根节点属于相同节点,针对于相同的第一根节点与标准根节点,进程可以对比第一dom树中第一根节点的所有子节点和标准dom树中标准根节点的所有子节点,并可以按照根节点的对比方式确定任一子节点属于差异节点还是相同节点;针对于任一子节点中的差异子节点,进程可以根据差异子节点在第一dom树和标准dom树中的区别生成差异子节点对应的差异数据,针对于任一子节点中的相同子节点,进程可以继续对比第一dom树中相同子节点的所有子节点和标准dom树中相同子节点的所有子节点,直至对比至不存在子节点为止。

按照上述方式,进程在第一dom树和标准dom树对比完成后,可以得到多个差异节点的差异数据,其中,差异数据的类型可以为新增、删除或修改;如此,进程可以根据多个差异节点的差异数据在第一界面和标准界面上进行渲染,比如可以使用第一类型检出框框出第一界面上的新增节点,或者可以使用第二类型检出框框出标准界面上的删除节点,或者可以使用第三类型检出框框出第一界面和第二界面上存在差异的修改节点。其中,第一类型检出框、第二类型检出框和第三类型检出框可以由本领域技术人员根据经验进行设置,具体不作限定。举例来说,在一种可能的方式中,可以使用颜色来标识不同类型的检出框,比如可以设置第一类型检出框为绿色、第二类型检出框为红色、第三类型检出框为黄色;在另一种可能的方式中,可以使用文字来标识不同类型的检出框,比如在第一类型检出框上添加新增字样,则第二类型检出框上添加删除字样,在第三类型检出框上添加修改字样和/或具体的修改内容。

在一个示例中,在渲染第一界面和标准界面后,为了便于用户直观地查看到差异节点,还可以对第一界面和标准界面上的差异节点进行截图,并将截图显示给用户。

本发明的上述实施例中,录制用户对测试界面的操作得到测试案例,所述测试案例包括所述用户对所述测试界面对应的dom树上的一个或多个dom节点进行操作的操作信息;进一步地,若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放,并在每个dom节点对应的操作回放结束后,根据所述操作对应的测试结果,对回放得到的第一界面和所述操作对应的标准界面进行渲染。本发明实施例中,通过设置对每个dom节点的操作结束后自动执行断言,可以无需用户手动地设置断言条件,如此,无编程能力的用户也可以使用该方法进行前端界面测试,从而使用门槛低,自动化测试的程度较高;且,通过设置每个dom节点的操作回放结束后,根据回放操作的测试结果对第一界面和标准界面进行渲染,可以使得用户直观地查看到测试结果中的差异数据,相比于现有的测试方法给出复杂的测试报告的方式来说,用户的体验更好。

针对上述方法流程,本发明实施例还提供一种测试装置,该装置的具体内容可以参照上述方法实施。

图7为本发明实施例提供的一种测试装置的结构示意图,包括:

录制模块701,用于录制用户对测试界面的操作得到测试案例;所述测试案例包括所述用户对所述测试界面对应的dom树上的一个或多个dom节点进行操作的操作信息;

回放模块702,用于若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放;

处理模块703,用于在每个dom节点对应的操作回放结束后,根据所述操作对应的测试结果,对回放得到的第一界面和所述操作对应的标准界面进行渲染。

可选地,所述录制模块701具体用于:

针对所述用户对所述测试界面的任一操作,从所述测试界面对应的dom树中确定所述用户触发的目标dom节点;根据所述目标dom节点的标识、类型和/或所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点在所述dom树中的定位标识,并根据所述目标dom节点在所述dom树中的定位标识、所述操作的类型、所述操作的内容、所述操作与上一操作的时间信息生成所述操作对应的测试数据;

根据所述用户对所述测试界面的各个操作对应的测试数据生成所述测试案例。

可选地,所述录制模块701具体用于:

判断所述目标dom节点的标识是否属于第一类型标识,若是,则将所述目标dom节点的标识作为所述目标dom节点的定位标识,所述第一类型标识用于在录制和回放时唯一标识所述目标dom节点;若否,则判断所述目标dom节点的类型是否为所述dom树中的唯一类型,若是,则将所述目标dom节点的类型作为所述目标dom节点的定位标识,若否,则根据所述目标dom节点在所述dom树中的层级关系确定所述目标dom节点的定位标识。

可选地,所述录制模块701具体用于:

判断所述目标dom节点的父节点是否存在,若不存在,则根据所述目标dom节点的类型在所述dom树中的顺序确定所述目标dom节点的定位标识;若存在,则组合所述目标dom节点的父节点的类型、所述目标dom节点的类型,得到所述目标dom节点对应的一级组合类型,判断所述目标dom节点对应的一级组合类型是否为所述dom树中的唯一类型,若是,则将所述目标dom节点对应的一级组合类型作为所述目标dom节点的定位标识,若否,则判断所述目标dom节点的父节点的父节点是否存在,若不存在,则根据所述目标dom节点对应的一级组合类型在所述dom树中的顺序确定所述目标dom节点的定位标识;若存在,则组合所述目标dom节点的父节点的父节点的类型、所述目标dom节点的父节点的类型、所述目标dom节点的类型,得到所述目标dom节点对应的二级组合类型,并根据所述目标dom节点对应的二级组合类型确定所述目标dom节点的定位标识。

可选地,所述录制模块701具体用于:

若所述目标dom节点的标识由数字组成,则确定所述目标dom节点的标识不属于所述第一类型标识,若所述目标dom节点的标识包括数字以外的字符,则确定所述目标dom节点的标识属于所述第一类型标识。

可选地,所述处理模块703具体用于:

解析所述第一界面得到第一dom树,解析所述标准界面得到标准dom树;

针对于所述第一dom树和所述标准dom树的第i级节点层中的任一差异节点,根据所述差异节点在所述第一dom树和所述标准dom树中的区别生成所述差异节点对应的差异数据;针对于所述第一dom树和标准dom树的第i级节点层中的任一相同节点,若确定所述相同节点存在连接的第i+1级子节点,则对比所述第一dom树和所述标准dom树中所述相同节点连接的所有第i+1级子节点,并根据对比结果判断任一连接的第i+1级子节点属于差异节点还是相同节点;其中,i为大于0的整数;

根据各级节点层中各个差异节点对应的差异数据,在所述第一界面和所述标准界面上对所述各个差异节点对应的元素进行渲染,得到所述操作对应的测试结果。

可选地,所述处理模块703具体用于:

若所述标准dom树中不存在所述第i+1级子节点且所述第一dom树中存在所述第i+1级子节点,则确定所述第i+1级子节点为新增节点;若所述标准dom树中存在所述第i+1级子节点且所述第一dom树中不存在所述第i+1级子节点,则确定所述第i+1级子节点为删除节点;若所述标准dom树中的所述第i+1级子节点与所述第一dom树中的所述第i+1级子节点在样式、类型、名称、标识、属性上存在任意一项或任意多项不同,则确定所述第i+1级子节点为变更节点;

若所述第i+1级子节点为新增节点、删除节点或变更节点中的任意一种,则确定所述第i+1级子节点为差异节点,若所述标准dom树中的所述第i+1级子节点与所述第一dom树中的所述第i+1级子节点在样式、类型、名称、标识、属性上均相同,则确定所述第i+1级子节点为相同节点。

可选地,所述回放模块702具体用于:

将所述测试案例插入任务池,所述任务池用于存储待执行的一个或多个测试案例;

从多个进程中选取处于空闲状态的第一进程,将所述测试案例发送给所述第一进程,以使所述第一进程根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放操作,并将所述任务池中的所述测试案例设置为锁定状态。

从上述内容可以看出:本发明的上述实施例中,录制用户对测试界面的操作得到测试案例,所述测试案例包括所述用户对所述测试界面对应的dom树上的一个或多个dom节点进行操作的操作信息;进一步地,若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个dom节点进行操作的操作信息对所述测试界面进行回放,并在每个dom节点对应的操作回放结束后,根据所述操作对应的测试结果,对回放得到的第一界面和所述操作对应的标准界面进行渲染。本发明实施例中,通过设置对每个dom节点的操作结束后自动执行断言,可以无需用户手动地设置断言条件,如此,无编程能力的用户也可以使用该方法进行前端界面测试,从而使用门槛低,自动化测试的程度较高;且,通过设置每个dom节点的操作回放结束后,根据回放操作的测试结果对第一界面和标准界面进行渲染,可以使得用户直观地查看到测试结果中的差异数据,相比于现有的测试方法给出复杂的测试报告的方式来说,用户的体验更好。

基于同一发明构思,本发明实施例还提供了一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行图2任一项所述的测试方法。

基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行图2任一项所述的测试方法。

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

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

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

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

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1