CN110928772B - 一种测试方法及装置 - Google Patents

一种测试方法及装置 Download PDF

Info

Publication number
CN110928772B
CN110928772B CN201911072997.0A CN201911072997A CN110928772B CN 110928772 B CN110928772 B CN 110928772B CN 201911072997 A CN201911072997 A CN 201911072997A CN 110928772 B CN110928772 B CN 110928772B
Authority
CN
China
Prior art keywords
node
dom
target
type
interface
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.)
Active
Application number
CN201911072997.0A
Other languages
English (en)
Other versions
CN110928772A (zh
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201911072997.0A priority Critical patent/CN110928772B/zh
Publication of CN110928772A publication Critical patent/CN110928772A/zh
Priority to PCT/CN2020/125167 priority patent/WO2021088724A1/zh
Application granted granted Critical
Publication of CN110928772B publication Critical patent/CN110928772B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/03Credit; Loans; Processing thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Development Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种测试方法及装置
技术领域
本发明涉及金融科技(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,录制用户对测试界面的操作得到测试案例。
具体实施中,测试服务器上可以设置有服务界面,服务界面为基于全球广 域网(World Wide Web,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浏览器的MotationObserver API接口监测测试界面上的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节点的定位标识后,预设录制插件可以获取 本次操作的类型(比如单击、双击、读取、写入等)、操作的内容(比如写入 的数据)、本次操作与上次操作之间的时长等操作信息,还可以获取测试界面 的统一资源定位符(Uniform ResourceLocation,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节点进行操作的操作信息对所述测试界面进行回放。
在一种可能的实现方式中,测试服务器可以预先设置多个进程,并可以使 用多个进程并行地执行多个测试任务。具体实施中,当用户在服务子界面中触 发“案例管理”的功能按钮后,测试服务器可以将历史测试案例显示给用户,如 此,若检测到用户触发某一测试案例,则测试服务器可以先将该测试案例的标 识添加到待执行任务池中,然后可以轮询多个进程确定每个进程的繁忙程度; 若确定存在某一进程处于空闲状态,则可以将该测试案例的脚本文件发送给该 空闲进程,并可以锁定待执行任务池中的该测试案例,从而避免其他进程重复 处理该测试案例,导致不必要的性能损失。
其中,测试服务器中进程的数量可以根据中央处理器(Central ProcessingUnit,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、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入 式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算 机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一 个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设 备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中 的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基 本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要 求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (14)

1.一种测试方法,其特征在于,所述方法包括:
若检测到用户点击录制子界面上预设录制插件对应的功能图标,则将录制子界面转换为测试界面,并启动所述预设录制插件,针对用户对测试界面的任一操作,从所述测试界面对应的DOM树中确定所述用户触发的目标DOM节点;判断所述目标DOM节点的标识是否属于第一类型标识,若是,则将所述目标DOM节点的标识作为所述目标DOM节点的定位标识,所述第一类型标识用于在录制和回放时唯一标识所述目标DOM节点,若目标DOM节点的标识包括数字以外的字符,属于第一类型标识,若DOM节点的标识设置为生成时间戳、循环的数字或随机的数字时,不属于第一类型标识;若否,则判断所述目标DOM节点的类型是否为所述DOM树中的唯一类型,若是,则将所述目标DOM节点的类型作为所述目标DOM节点的定位标识,若否,则根据所述目标DOM节点在所述DOM树中的层级关系确定所述目标DOM节点的定位标识,并根据所述目标DOM节点在所述DOM树中的定位标识、所述操作的类型、所述操作的内容、所述操作与上一操作的时间信息生成所述操作对应的测试数据;
根据所述用户对所述测试界面的各个操作对应的测试数据生成测试案例;所述测试案例包括所述用户对所述测试界面对应的DOM树上的一个或多个DOM节点进行操作的操作信息;
若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个DOM节点进行操作的操作信息对所述测试界面进行回放;
在每个DOM节点对应的操作回放结束后,根据所述操作对应的测试结果,在回放得到的第一界面和所述操作对应的标准界面上进行渲染。
2.根据权利要求1所述的方法,其特征在于,还包括:
判断所述目标DOM节点的父节点是否存在,若不存在,则根据所述目标DOM节点的类型在所述DOM树中的顺序确定所述目标DOM节点的定位标识;若存在,则组合所述目标DOM节点的父节点的类型、所述目标DOM节点的类型,得到所述目标DOM节点对应的一级组合类型,判断所述目标DOM节点对应的一级组合类型是否为所述DOM树中的唯一类型,若是,则将所述目标DOM节点对应的一级组合类型作为所述目标DOM节点的定位标识,若否,则判断所述目标DOM节点的父节点的父节点是否存在,若不存在,则根据所述目标DOM节点对应的一级组合类型在所述DOM树中的顺序确定所述目标DOM节点的定位标识;若存在,则组合所述目标DOM节点的父节点的父节点的类型、所述目标DOM节点的父节点的类型、所述目标DOM节点的类型,得到所述目标DOM节点对应的二级组合类型,并根据所述目标DOM节点对应的二级组合类型确定所述目标DOM节点的定位标识。
3.根据权利要求1所述的方法,其特征在于,所述判断所述目标DOM节点的标识是否为第一类型标识,包括:
若所述目标DOM节点的标识由数字组成,则确定所述目标DOM节点的标识不属于所述第一类型标识,若所述目标DOM节点的标识包括数字以外的字符,则确定所述目标DOM节点的标识属于所述第一类型标识。
4.根据权利要求1所述的方法,其特征在于,所述根据所述操作对应的测试结果,在回放得到的第一界面和所述操作对应的标准界面上进行渲染,包括:
解析所述第一界面得到第一DOM树,解析所述标准界面得到标准DOM树;
针对于所述第一DOM树和所述标准DOM树的第I级节点层中的任一差异节点,根据所述差异节点在所述第一DOM树和所述标准DOM树中的区别生成所述差异节点对应的差异数据;针对于所述第一DOM树和标准DOM树的第I级节点层中的任一相同节点,若确定所述相同节点存在连接的第I+1级子节点,则对比所述第一DOM树和所述标准DOM树中所述相同节点连接的所有第I+1级子节点,并根据对比结果判断任一连接的第I+1级子节点属于差异节点还是相同节点;其中,I为大于0的整数;
根据各级节点层中各个差异节点对应的差异数据,在所述第一界面和所述标准界面上对所述各个差异节点对应的元素进行渲染,得到所述操作对应的测试结果。
5.根据权利要求4所述的方法,其特征在于,所述根据对比结果判断任一连接的第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级子节点为相同节点。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据所述用户对所述一个或多个DOM节点进行操作的操作信息对所述测试界面进行回放,包括:
将所述测试案例***任务池,所述任务池用于存储待执行的一个或多个测试案例;
从多个进程中选取处于空闲状态的第一进程,将所述测试案例发送给所述第一进程,以使所述第一进程根据所述用户对所述一个或多个DOM节点进行操作的操作信息对所述测试界面进行回放操作,并将所述任务池中的所述测试案例设置为锁定状态。
7.一种测试装置,其特征在于,所述装置包括:
录制模块,用于若检测到用户点击录制子界面上预设录制插件对应的功能图标,则将录制子界面转换为测试界面,并启动所述预设录制插件,针对用户对测试界面的任一操作,从所述测试界面对应的DOM树中确定所述用户触发的目标DOM节点;判断所述目标DOM节点的标识是否属于第一类型标识,若是,则将所述目标DOM节点的标识作为所述目标DOM节点的定位标识,所述第一类型标识用于在录制和回放时唯一标识所述目标DOM节点,若目标DOM节点的标识包括数字以外的字符,属于第一类型标识,若DOM节点的标识设置为生成时间戳、循环的数字或随机的数字时,不属于第一类型标识;若否,则判断所述目标DOM节点的类型是否为所述DOM树中的唯一类型,若是,则将所述目标DOM节点的类型作为所述目标DOM节点的定位标识,若否,则根据所述目标DOM节点在所述DOM树中的层级关系确定所述目标DOM节点的定位标识,并根据所述目标DOM节点在所述DOM树中的定位标识、所述操作的类型、所述操作的内容、所述操作与上一操作的时间信息生成所述操作对应的测试数据;
以及用于根据所述用户对所述测试界面的各个操作对应的测试数据生成测试案例;所述测试案例包括所述用户对所述测试界面对应的DOM树上的一个或多个DOM节点进行操作的操作信息;
回放模块,用于若确定对所述测试案例进行测试,则根据所述用户对所述一个或多个DOM节点进行操作的操作信息对所述测试界面进行回放;
处理模块,用于在每个DOM节点对应的操作回放结束后,根据所述操作对应的测试结果,对回放得到的第一界面和所述操作对应的标准界面进行渲染。
8.根据权利要求7所述的装置,其特征在于,所述录制模块具体用于:
判断所述目标DOM节点的父节点是否存在,若不存在,则根据所述目标DOM节点的类型在所述DOM树中的顺序确定所述目标DOM节点的定位标识;若存在,则组合所述目标DOM节点的父节点的类型、所述目标DOM节点的类型,得到所述目标DOM节点对应的一级组合类型,判断所述目标DOM节点对应的一级组合类型是否为所述DOM树中的唯一类型,若是,则将所述目标DOM节点对应的一级组合类型作为所述目标DOM节点的定位标识,若否,则判断所述目标DOM节点的父节点的父节点是否存在,若不存在,则根据所述目标DOM节点对应的一级组合类型在所述DOM树中的顺序确定所述目标DOM节点的定位标识;若存在,则组合所述目标DOM节点的父节点的父节点的类型、所述目标DOM节点的父节点的类型、所述目标DOM节点的类型,得到所述目标DOM节点对应的二级组合类型,并根据所述目标DOM节点对应的二级组合类型确定所述目标DOM节点的定位标识。
9.根据权利要求7所述的装置,其特征在于,所述录制模块具体用于:
若所述目标DOM节点的标识由数字组成,则确定所述目标DOM节点的标识不属于所述第一类型标识,若所述目标DOM节点的标识包括数字以外的字符,则确定所述目标DOM节点的标识属于所述第一类型标识。
10.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于:
解析所述第一界面得到第一DOM树,解析所述标准界面得到标准DOM树;
针对于所述第一DOM树和所述标准DOM树的第I级节点层中的任一差异节点,根据所述差异节点在所述第一DOM树和所述标准DOM树中的区别生成所述差异节点对应的差异数据;针对于所述第一DOM树和标准DOM树的第I级节点层中的任一相同节点,若确定所述相同节点存在连接的第I+1级子节点,则对比所述第一DOM树和所述标准DOM树中所述相同节点连接的所有第I+1级子节点,并根据对比结果判断任一连接的第I+1级子节点属于差异节点还是相同节点;其中,I为大于0的整数;
根据各级节点层中各个差异节点对应的差异数据,在所述第一界面和所述标准界面上对所述各个差异节点对应的元素进行渲染,得到所述操作对应的测试结果。
11.根据权利要求10所述的装置,其特征在于,所述处理模块具体用于:
若所述标准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级子节点为相同节点。
12.根据权利要求7至11中任一项所述的装置,其特征在于,所述回放模块具体用于:
将所述测试案例***任务池,所述任务池用于存储待执行的一个或多个测试案例;
从多个进程中选取处于空闲状态的第一进程,将所述测试案例发送给所述第一进程,以使所述第一进程根据所述用户对所述一个或多个DOM节点进行操作的操作信息对所述测试界面进行回放操作,并将所述任务池中的所述测试案例设置为锁定状态。
13.一种计算设备,其特征在于,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行权利要求1~6任一权利要求所述的方法。
14.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1~6任一权利要求所述的方法。
CN201911072997.0A 2019-11-05 2019-11-05 一种测试方法及装置 Active CN110928772B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911072997.0A CN110928772B (zh) 2019-11-05 2019-11-05 一种测试方法及装置
PCT/CN2020/125167 WO2021088724A1 (zh) 2019-11-05 2020-10-30 一种测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911072997.0A CN110928772B (zh) 2019-11-05 2019-11-05 一种测试方法及装置

Publications (2)

Publication Number Publication Date
CN110928772A CN110928772A (zh) 2020-03-27
CN110928772B true CN110928772B (zh) 2022-03-08

Family

ID=69852387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911072997.0A Active CN110928772B (zh) 2019-11-05 2019-11-05 一种测试方法及装置

Country Status (2)

Country Link
CN (1) CN110928772B (zh)
WO (1) WO2021088724A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110928772B (zh) * 2019-11-05 2022-03-08 深圳前海微众银行股份有限公司 一种测试方法及装置
CN111767217B (zh) * 2020-06-24 2024-02-02 中国工商银行股份有限公司 Js单元测试案例生成方法及装置
CN111881043B (zh) * 2020-07-27 2022-10-14 山石网科通信技术股份有限公司 页面测试方法、装置、存储介质和处理器
CN111857932A (zh) * 2020-07-27 2020-10-30 成都安恒信息技术有限公司 一种基于puppeteer用于运维审计***的web代填方法
CN112116439A (zh) * 2020-08-10 2020-12-22 杭州优行科技有限公司 一种清结算测试方法、装置、终端及存储介质
CN113032229B (zh) * 2021-02-24 2022-09-20 山东英信计算机技术有限公司 一种java性能测试方法、***及介质
CN112817866A (zh) * 2021-02-25 2021-05-18 北京百家科技集团有限公司 录制回放方法、装置、***、计算机设备以及存储介质
CN113238949A (zh) * 2021-05-19 2021-08-10 北京仁科互动网络技术有限公司 一种测试方法、装置、电子设备及存储介质
CN113312259B (zh) * 2021-05-26 2023-12-29 深圳前海微众银行股份有限公司 一种接口测试方法及装置
CN113901365A (zh) * 2021-05-29 2022-01-07 长沙市到家悠享家政服务有限公司 性能压测平台及方法、电子设备及可读介质
CN113485909B (zh) * 2021-06-01 2023-10-27 杭州网易云音乐科技有限公司 测试方法、装置、计算设备以及介质
CN113392007B (zh) * 2021-06-17 2023-09-08 网易(杭州)网络有限公司 一种兼容性测试的方法及装置
CN114297076A (zh) * 2021-12-30 2022-04-08 四川启睿克科技有限公司 一种Web网站自动化测试方法
CN114978360A (zh) * 2022-05-10 2022-08-30 紫光计算机科技有限公司 通信设备的自动化测试方法和装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740154A (zh) * 2016-03-03 2016-07-06 北京白鹭时代信息技术有限公司 一种网页游戏测试脚本生成方法及装置
CN106133766A (zh) * 2014-03-18 2016-11-16 谷歌公司 用于计算、应用和显示文档增量的***和方法
CN108415702A (zh) * 2018-01-22 2018-08-17 北京奇艺世纪科技有限公司 一种移动终端应用界面动态渲染方法和装置
CN109144856A (zh) * 2018-07-27 2019-01-04 北京皮尔布莱尼软件有限公司 一种ui自动化测试方法、计算设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012166113A1 (en) * 2011-05-31 2012-12-06 Hewlett-Packard Development Company, L.P. Automated security testing
CN102419732B (zh) * 2011-12-27 2015-03-18 Tcl集团股份有限公司 基于android平台的自动化测试方法及测试工具
CN104598232B (zh) * 2015-01-12 2018-02-13 北京大学 一种Web应用跨设备捕捉‑回放方法
US10031730B2 (en) * 2015-04-22 2018-07-24 Salesforce.Com, Inc. Systems and methods of implementing extensible browser executable components
CN109684220A (zh) * 2018-12-26 2019-04-26 苏州博纳讯动软件有限公司 一种基于事件回放的浏览器兼容性分析方法
CN110928772B (zh) * 2019-11-05 2022-03-08 深圳前海微众银行股份有限公司 一种测试方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106133766A (zh) * 2014-03-18 2016-11-16 谷歌公司 用于计算、应用和显示文档增量的***和方法
CN105740154A (zh) * 2016-03-03 2016-07-06 北京白鹭时代信息技术有限公司 一种网页游戏测试脚本生成方法及装置
CN108415702A (zh) * 2018-01-22 2018-08-17 北京奇艺世纪科技有限公司 一种移动终端应用界面动态渲染方法和装置
CN109144856A (zh) * 2018-07-27 2019-01-04 北京皮尔布莱尼软件有限公司 一种ui自动化测试方法、计算设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《rrweb:打开web页⾯录制与回放的⿊盒⼦》;smartx;《https://zhuanlan.zhihu.com/p/60639266》;20190328;第1-9页 *

Also Published As

Publication number Publication date
CN110928772A (zh) 2020-03-27
WO2021088724A1 (zh) 2021-05-14

Similar Documents

Publication Publication Date Title
CN110928772B (zh) 一种测试方法及装置
Zhou et al. Fault analysis and debugging of microservice systems: Industrial survey, benchmark system, and empirical study
US20220121410A1 (en) Technology add-on interface
US9727407B2 (en) Log analytics for problem diagnosis
Engel et al. Evaluation of microservice architectures: A metric and tool-based approach
US10997190B2 (en) Context-adaptive selection options in a modular visualization framework
CN109697066B (zh) 实现数据表拼接及自动训练机器学习模型的方法和***
US9612937B2 (en) Determining relevant events in source code analysis
US8731998B2 (en) Three dimensional visual representation for identifying problems in monitored model oriented business processes
CN109739855B (zh) 实现数据表拼接及自动训练机器学习模型的方法和***
KR20120115477A (ko) 트랜잭션을 논리적 서브시스템들의 맵을 통하는 흐름들로서 시각화하는 방법
KR20120115478A (ko) 트랜잭션 트레이스 그래프와 논리적 서브시스템들의 맵 사이의 관계들을 시각화하는 방법
US10437717B2 (en) Defect reporting in application testing
CN111108481B (zh) 故障分析方法及相关设备
JP7108039B2 (ja) システム全体の制御とデータ探索の自動化を可能にするための視覚的および実行テンプレートの推奨
US11436133B2 (en) Comparable user interface object identifications
JPWO2012124018A1 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
US20170300401A1 (en) Methods and systems that identify problems in applications
JP2017539031A (ja) テスト実行からのテスト検証の分離
US9164746B2 (en) Automatic topology extraction and plotting with correlation to real time analytic data
US11119899B2 (en) Determining potential test actions
US20200327125A1 (en) Systems and methods for hierarchical process mining
Hassine et al. A framework for the recovery and visualization of system availability scenarios from execution traces
Rabkin et al. A graphical representation for identifier structure in logs
Kuruba DevOps for IT service reliability and availability

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
GR01 Patent grant
GR01 Patent grant