CN113485909A - 测试方法、装置、计算设备以及介质 - Google Patents

测试方法、装置、计算设备以及介质 Download PDF

Info

Publication number
CN113485909A
CN113485909A CN202110609824.9A CN202110609824A CN113485909A CN 113485909 A CN113485909 A CN 113485909A CN 202110609824 A CN202110609824 A CN 202110609824A CN 113485909 A CN113485909 A CN 113485909A
Authority
CN
China
Prior art keywords
interface
tested
information
tree
application program
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.)
Granted
Application number
CN202110609824.9A
Other languages
English (en)
Other versions
CN113485909B (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.)
Hangzhou Netease Cloud Music Technology Co Ltd
Original Assignee
Hangzhou Netease Cloud Music Technology 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 Hangzhou Netease Cloud Music Technology Co Ltd filed Critical Hangzhou Netease Cloud Music Technology Co Ltd
Priority to CN202110609824.9A priority Critical patent/CN113485909B/zh
Publication of CN113485909A publication Critical patent/CN113485909A/zh
Application granted granted Critical
Publication of CN113485909B publication Critical patent/CN113485909B/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本公开实施例提供了一种测试方法、装置、计算设备以及介质,涉及软件测试技术领域。该方法包括:响应于针对应用程序的待测试界面的界面测试操作,确定待测试界面对应的对象树,对象树包括多个界面对象;响应于对待测试界面上的待测试界面对象的对象测试操作,根据唯一身份标识从对象树查找待测试界面对象;获取待测试界面对象的对象信息,基于对象信息对待测试界面进行测试。根据本公开实施例的技术方案,能够实现跨应用程序的多种客户端准确查找UI对象,提高UI测试的稳定性。

Description

测试方法、装置、计算设备以及介质
技术领域
本公开的实施方式涉及软件测试技术领域,更具体地,本公开的实施方式涉及测试方法、装置、计算设备以及介质。
背景技术
本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着互联网技术的发展,应用程序的功能变得越来越复杂,如何对应用程序的UI(User Interface,用户界面)进行自动化测试成为了关注的焦点。
对应用程序的UI进行自动化测试时,要解决的一个问题是如何准确获取应用程序的UI对象,在相关技术方案中,采用文本、资源名称、资源标识等对应用程序的UI对象进行描述,根据上述描述获取UI对象。
发明内容
但是,上述技术方案中,如果应用程序的多种客户端例如多个版本的客户端存在变动时,无法准确跨多种客户端获取UI对象,导致自动化测试用例不稳定。
为此,非常需要一种改进的测试方法,以使能够满足准确跨多种客户端获取UI对象的需求。
在本上下文中,本公开的实施方式期望提供一种测试方法、测试装置、计算设备以及介质。
在本公开实施例的第一方面中,提供了一种测试方法,包括:响应于针对应用程序的待测试界面的界面测试操作,确定所述待测试界面对应的对象树,所述对象树包括多个界面对象,所述界面对象的对象信息包括:所述界面对象的身份信息,所述身份信息包括所述界面对象在所述应用程序的多种客户端中的唯一身份标识;响应于对所述待测试界面上的待测试界面对象的对象测试操作,根据所述唯一身份标识从所述对象树查找所述待测试界面对象;获取所述待测试界面对象的对象信息,基于所述对象信息对所述待测试界面进行测试。
根据第一方面,在一些示例实施例中,所述确定所述待测试界面对应的对象树,包括:获取所述待测试界面对应的对象树;或者,构建所述待测试界面对应的对象树,其中,所述对象树的多个界面对象中各个界面对象均为所述待测试界面的必要界面对象,所述必要界面对象为根据所述应用程序的所述待测试界面的业务场景确定的界面对象。
根据第一方面,在一些示例实施例中,所述必要界面对象包括可交互对象和/或内容承载对象,所述可交互对象为根据所述应用程序的所述待测试界面的业务场景确定的进行界面交互的交互对象,所述内容承载对象为根据所述应用程序的所述待测试界面的业务场景确定的承载内容的界面对象。
根据第一方面,在一些示例实施例中,所述构建所述待测试界面对应的对象树,包括:确定至少一种所述客户端的所述待测试界面的必要界面对象;基于所述待测试界面的必要界面对象之间的血缘关系,生成所述待测试界面对应的对象树,所述血缘关系包括:所述必要界面对象的父节点和子节点。
根据第一方面,在一些示例实施例中,所述确定至少一种客户端的所述待测试界面的必要界面对象,包括:确定多个版本中各个版本的所述客户端的所述待测试界面的必要界面对象,所述生成所述待测试界面对应的对象树,包括:生成各个版本的所述客户端的所述待测试界面对应的对象树。
根据第一方面,在一些示例实施例中,所述界面对象的对象信息还包括:所述界面对象的位置信息,所述位置信息包括所述界面对象的节点路径,所述方法还包括:根据所述唯一身份标识以及所述对象树,确定所述界面对象的节点路径,所述根据所述唯一身份标识从所述对象树查找所述待测试界面对象,包括:根据所述待测试界面对象的所述唯一身份标识以及所述节点路径,从所述对象树中查找所述待测试界面对象。
根据第一方面,在一些示例实施例中,所述对象信息还包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种。
根据第一方面,在一些示例实施例中,所述响应于对所述待测试界面上的待测试界面对象的对象测试操作,根据所述唯一身份标识从所述对象树查找所述待测试界面对象,包括:响应于对所述待测试界面上的待测试界面对象的对象测试操作,确定所述对象测试操作对应的查找条件;根据所述待测试界面对象的所述唯一身份标识以及所述对象信息,从所述对象树中查找符合所述查询条件的所述待测试界面对象。
根据第一方面,在一些示例实施例中,所述响应于针对应用程序的待测试界面的界面测试操作,确定所述待测试界面对应的对象树,包括:响应于对所述应用程序的多个待测试界面的界面切换操作,确定各个待测试界面的对象树。
根据第一方面,在一些示例实施例中,所述方法还包括:确定相邻两个待测试界面对应的两个对象树之间的变化元素;根据所述变化元素,确定所述待测试界面的界面元素的曝光信息和反曝光信息。
根据第一方面,在一些示例实施例中,所述对象信还息还包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种,所述基于所述对象信息对所述待测试界面进行测试,包括:根据所述对象信息生成所述待测试界面对象的测试方法,所述测试方法包括:对象获取方法、对象操作方法以及对象状态验证方法中的一种或多种;根据所述测试方法生成所述待测试界面对象对应的测试用例;基于所述测试用例对所述待测试界面对象的对象操作和对象状态进行测试验证。
根据第一方面,在一些示例实施例中,所述方法还包括:通过用户行为埋点获取目标操作路径下的用户行为日志,所述用户行为日志包括所述目标操作路径下的待测试界面的唯一身份标识、用户操作数据以及所述待测试界面的界面元素的曝光信息与反曝光信息;基于所述用户行为日志还原所述目标操作路径下的用户操作行为。
根据第一方面,在一些示例实施例中,所述方法还包括:获取所述应用程序的运行数据,所述运行数据包括性能数据;在所述性能数据达到预定值或者所述应用程序发生故障时,上报所述用户行为日志,所述用户行为日志包括所述目标操作路径下的各级用户行为埋点记录的日志。
根据第一方面,在一些示例实施例中,所述方法还包括:响应于对所述用户行为日志的聚合操作,对所述用户行为日志中的用户行为进行维度分析,所述维度包括访问的页面以及同时打开的页面数量。
根据第一方面,在一些示例实施例中,所述方法还包括:为所述待测试界面的界面对象配置均等的初始访问概率。
根据第一方面,在一些示例实施例中,所述方法还包括:按所述初始访问概率随机触发对所述待测试界面的界面对象的遍历访问;根据所述界面对象被访问的次数调整所述界面对象的访问概率。
根据第一方面,在一些示例实施例中,所述方法还包括:根据所述待测试界面的各个页面的同时打开数量,调整各个页面上的界面对象的访问概率。
根据本公开实施例的第二方面,提供了一种测试装置,包括:对象树确定模块,用于响应于针对应用程序的待测试界面的界面测试操作,确定所述待测试界面对应的对象树,所述对象树包括多个界面对象,所述界面对象的对象信息包括:所述界面对象的身份信息,所述身份信息包括所述界面对象在所述应用程序的多种客户端中的唯一身份标识;对象查找模块,用于响应于对所述待测试界面上的待测试界面对象的对象测试操作,根据所述唯一身份标识从所述对象树查找所述待测试界面对象;测试模块,用于获取所述待测试界面对象的对象信息,基于所述对象信息对所述待测试界面进行测试。
根据第二方面,在一些示例实施例中,所述对象树确定模块,包括:对象树获取单元,用于获取所述待测试界面对应的对象树;或者,对象树构建单元,用于构建所述待测试界面对应的对象树,其中,所述对象树的多个界面对象中各个界面对象均为所述待测试界面的必要界面对象,所述必要界面对象为根据所述应用程序的所述待测试界面的业务场景确定的界面对象。
根据第二方面,在一些示例实施例中,所述必要界面对象包括可交互对象和/或内容承载对象,所述可交互对象为根据所述应用程序的所述待测试界面的业务场景确定的进行界面交互的交互对象,所述内容承载对象为根据所述应用程序的所述待测试界面的业务场景确定的承载内容的界面对象。
根据第二方面,在一些示例实施例中,所述对象树构建单元包括:必要对象确定单元,用于确定至少一种所述客户端的所述待测试界面的必要界面对象;树生成单元,用于基于所述待测试界面的必要界面对象之间的血缘关系,生成所述待测试界面对应的对象树,所述血缘关系包括:所述必要界面对象的父节点和子节点。
根据第二方面,在一些示例实施例中,所述必要对象确定单元还用于:确定多个版本中各个版本的所述客户端的所述待测试界面的必要界面对象,所述树生成单元还用于:生成各个版本的所述客户端的所述待测试界面对应的对象树。
根据第二方面,在一些示例实施例中,所述界面对象的对象信息还包括:所述界面对象的位置信息,所述位置信息包括所述界面对象的节点路径,所述装置还包括:节点路径确定模块,用于根据所述唯一身份标识以及所述对象树,确定所述界面对象的节点路径,所述对象查找模块还用于:根据所述待测试界面对象的所述唯一身份标识以及所述节点路径,从所述对象树中查找所述待测试界面对象。
根据第二方面,在一些示例实施例中,所述对象信息还包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种。
根据第二方面,在一些示例实施例中,所述对象查找模块还用于:响应于对所述待测试界面上的待测试界面对象的对象测试操作,确定所述对象测试操作对应的查找条件;根据所述待测试界面对象的所述唯一身份标识以及所述对象信息,从所述对象树中查找符合所述查询条件的所述待测试界面对象。
根据第二方面,在一些示例实施例中,所述对象树确定模块还用于:响应于对所述应用程序的多个待测试界面的界面切换操作,确定各个待测试界面的对象树。
根据第二方面,在一些示例实施例中,所述装置还包括:变化元素确定模块,用于确定相邻两个待测试界面对应的两个对象树之间的变化元素;曝光信息确定模块,用于根据所述变化元素,确定所述待测试界面的界面元素的曝光信息和反曝光信息。
根据第二方面,在一些示例实施例中,所述对象信还息包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种,所述测试模块还用于:根据所述对象信息生成所述待测试界面对象的测试方法,所述测试方法包括:对象获取方法、对象操作方法以及对象状态验证方法中的一种或多种;根据所述测试方法生成所述待测试界面对象对应的测试用例;基于所述测试用例对所述待测试界面对象的对象操作和对象状态进行测试验证。
根据第二方面,在一些示例实施例中,所述装置还包括:日志获取模块,用于通过用户行为埋点获取目标操作路径下的用户行为日志,所述用户行为日志包括所述目标操作路径下的待测试界面的唯一身份标识、用户操作数据以及所述待测试界面的界面元素的曝光信息与反曝光信息;行为还原模块,用于基于所述用户行为日志还原所述目标操作路径下的用户操作行为。
根据第二方面,在一些示例实施例中,所述装置还包括:运行数据获取模块,用于获取所述应用程序的运行数据,所述运行数据包括性能数据;日志上报模块,用于在所述性能数据达到预定值或者所述应用程序发生故障时,上报所述用户行为日志,所述用户行为日志包括所述目标操作路径下的各级用户行为埋点记录的日志。
根据第二方面,在一些示例实施例中,所述装置还包括:维度分析模块,用于响应于对所述用户行为日志的聚合操作,对所述用户行为日志中的用户行为进行维度分析,所述维度包括访问的页面以及同时打开的页面数量。
根据第二方面,在一些示例实施例中,所述装置还包括:概率配置模块,用于为所述待测试界面的界面对象配置均等的初始访问概率。
根据第二方面,在一些示例实施例中,所述装置还包括:遍历访问模块,用于按所述初始访问概率随机触发对所述待测试界面的界面对象的遍历访问;第一概率调整模块,用于根据所述界面对象被访问的次数调整所述界面对象的访问概率。
根据第二方面,在一些示例实施例中,所述装置还包括:第二概率调整模块,用于根据所述待测试界面的各个页面的同时打开数量,调整各个页面上的界面对象的访问概率。
在本公开实施例的第三方面中,提供了一种计算设备,包括:处理器和存储器,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如上述第一方面中任一项所述的方法。
在本公开实施例的第四方面中,提供了一种介质,其上存储有程序,该程序被处理器执行时实现如上述第一方面中任一项所述的方法。
根据本公开实施例的技术方案,一方面,设置界面对象在应用程序的多种客户端中的唯一身份标识,在对应用程序的待测试界面进行测试操作时,基于该唯一身份标识从对象树中查找待测试界面对象,从而实现跨应用程序的多种客户端准确查找UI对象;另一方面,基于准确查找到的待测试界面对象的对象信息,对待测试界面进行测试,能够提高UI测试的稳定性。
在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
图1示出了根据本公开的一些实施例的测试方法的应用场景的示意图;
图2示意性地示出了根据本公开的一些实施例的测试方法的流程图;
图3示意性地示出了根据本公开的另一些实施例的待测试界面的示意图;
图4示意性示出了相关技术方案和本公开实施例中图3对应的待测试界面对应的对象树;
图5示出了根据本公开的一些示例实施例的构建对象树的流程示意图;
图6示出了根据本公开的一些示例实施例的对象信息的示意图;
图7示出了根据本公开的一些示例实施例的对象管理平台的示意图;
图8示出了根据本公开的一些示例实施例的对象查找的流程示意图;
图9示出了根据本公开的一些示例实施例的待测试界面的查找结果的示意图;
图10示出了根据本公开的一些示例实施例的界面切换的示意图;
图11示出了根据本公开的一些示例实施例中的对象操作和验证的流程示意图;
图12示意性地示出了根据本公开的一些实施例的界面对象的对象信息以及测试方法的示意图;
图13示意性地示出了根据本公开的一些实施例的计算机可读存储介质的示意图;
图14示意性地示出了根据本公开的一些实施例的测试装置的结构示意图;
图15示意性示出了根据本公开的一些实施例的计算设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施例来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本公开的实施方式,提出了一种测试方法、装置、计算设备和介质。
在本文中,需要理解的是,所涉及的术语:
页面:page,界面对象的一种,在前端的一定层级上独占显示的一整片区域,如一个新打开的底层页,一个标签TAB,一个频道等;页面一般由用户组织诸多内容进行分发或者作为单一内容的实际功能承载。
元素:element,界面对象的一种,页面中具备数据分析和组织意义或者可被用户交互的UI组件和单元,如一个列表卡片,一个按钮,一个横滑的内容模块等。
视图:view,用户承载布局样式到屏幕绘制的单元,可以是很小的视图如图片,文字,按钮,也可以是复杂的由多个小视图组合而成的复合视图,如微博卡片等;视图有可交互视图也有不可交互视图,同时视图之间会有包含关系。视图是端上用来渲染和操作的基本单元,也是现有一些自动化测试的操作单元。
节点和虚拟节点:dom/vdom,最初用来指html中与前述view对应的视图节点,后来也逐渐将大前端上平台和框架上的视图节点都成为dom(Document Object Model,文档对象模型)节点;后来在dom基础上出现了各种数据驱动视图渲染的框架,如React等,此时,用来承载视图数据的与dom一一对应的节点即称之为虚拟节点vdom。
视图树:view-tree,vtree/dom-tree,dtree,前端要呈现出完成的整体内容和可交互视图,一般会有非常多的视图节点堆叠遮挡,包含布局等组成。为了更好描述这种布局时视图之间的父子兄弟关系,一般采用树来进行抽象描述。当视图A包含视图B时,视图A即是视图B的父亲,在树里也是靠上的层级关系;当视图C和视图D是属于平行时,则他们在树上就可能是平级兄弟关系。
节点路径:x-path,节点从自身开始一直往上寻找父亲直到父亲节点形成的路径上的包含的节点描述,现有各种自动化方案要精准定位和描述一个ui节点时,可以基于x-path的方法进行定位和描述。
界面对象:ui对象,可以是页面或者元素,由业务方开发设置显示指定。一个ui对象可能对应一个视图节点,也可能对应多个视图节点。其不依赖于各端的具体实现,层级和样式,以产品和业务含义上的统一为准,由开发按定义设置。
oid(Object Id,对象ID即唯一身份标识)的缩写,对象ID即唯一身份标识是页面和元素在整个端内的身份标识,且一般与端上的实现架构可合理的匹配(尤其页面);同一oid有的时候用来表征同一种UI样式,同一种内容单元,同一种互动形式,或者固定为端上某一个特定位置UI。
对象树:otree,与vtree,dtree类似,即ui对象组成的对象树。
spm(Super Position Model,超级位置模型):可以用来直接描述某个对象在端上具体某个唯一位置信息,可以理解为基于oid的ui对象的x-path,只是格式会有一些不同。
dfs:Deep First Travesal的缩写,深度优先遍历,是一种对树节点的遍历方法,其遍历时各级别一直是保持先将当前节点的子节点遍历完,再去遍历自己的兄弟节点,都遍历完才往上冒到父亲节点。
oad:Object Automator Driver的缩写,面向对象自动化驱动,用来在终端中直接执行对象查找获取,操作执行和判断的框架,与被测应用一样运行在被测终端上。
oap:Object Automator Platform的缩写,面向对象自动化平台,用来管理对象和树,配置和下发随机遍历策略和精确控制操作指令,收集对象埋点和数据统计的后端。
monkey:随机自动化测试,指通过随机的打开页面,点击,滑动等诸多操作随机触发,来模拟线上所有用户可能出现的对App的操作,以便进行压力和稳定性,性能等测试。
mock:即接口数据拦截和替换,由于自动化测试启动App运行时,其需要与服务器进行请求交互以获得数据或触发结果,但由于服务器的数据和内容是会经常变化的,而且有一些随着不同用户和设备也是个性化变化,这会导致白盒自动化测试不稳定,故为了进行稳定精确测试,往往需要拦截掉当前服务端的真实结果,替换成用例执行期望设置的数。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
发明概述
本发明人发现,为了解决如何准确获取应用程序的UI对象的问题,在相关技术方案中,采用文本、资源标识、资源名称、路径等手段进行UI对象查找。然而,通过文本查找可能会存在页面中有多种不同含义的相同文本的情况,通过资源标识,资源名称或路径进行查找,会存在跨多个版本客户端或跨多个系统的客户端变动,导致自动化测试稳定性较差。
基于上述内容,本公开实施例的基本思想在于:设置界面对象在所述应用程序的多种客户端中的唯一身份标识,在对应用程序的待测试界面进行测试操作时,基于该唯一身份标识从对象树中查找待测试界面对象,基于查找到的待测试界面对象的对象信息,对所述待测试界面进行测试。一方面,设置界面对象在所述应用程序的多种客户端中的唯一身份标识,在对应用程序的待测试界面进行测试操作时,基于该唯一身份标识从对象树中查找待测试界面对象,从而实现跨应用程序的多种客户端准确查找UI对象;另一方面,基于准确查找到的待测试界面对象的对象信息,对待测试界面进行测试,能够提高UI自动化测试的稳定性。
在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
应用场景总览
需要注意的是,下述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
图1示意性地示出了根据本公开实施例的测试方法的应用场景的框图。
参照图1所示,该应用场景可以包括:至少一个客户端110以及服务器120,其中,客户端110安装有多个应用程序。客户端110与服务器120之间通过网络130进行通信。客户端110可以为手机、平板电脑、台式计算机、便携笔记本式计算机或车载式终端等。服务器120可以为包含独立主机的物理服务器,或者为主机集群承载的虚拟服务器,或者为云服务器。网络130可以为有线网络或无线网络,例如,网络130可以为PSTN(Public SwitchedTelephone Network,公共交换电话网络)或因特网。
以客户端110安装有音乐播放应用程序为例,响应于服务器120上针对音乐播放应用程序的待测试界面例如音乐播放界面的测试操作,确定待测试界面对应的对象树,该对象树包括多个界面对象,例如播放控件、播放模式控件、上一首控件、下一首控件等,界面对象的对象信息包括界面对象的身份信息,身份信息包括界面对象在应用程序的多种客户端中的唯一标识;响应于对待测试界面上的待测试界面对象的对象测试操作,例如点击播放控件操作,根据唯一身份标识从对象树查找待测试界面对象例如播放控件;获取待测试界面对象的对象信息,基于对象信息对待测试界面进行测试。
需要说明的是,虽然以应用程序为音乐播放应用程序为例进行说明,但是本领域技术人员应该理解的是,应用程序可以为其他适当的程序例如购物类应用程序、资讯类应用程序等。此外,应用程序可以为安装在台式机上的应用程序、也可以为安装在移动终端的应用程序,还可以为嵌入到应用程序中的小程序等,本公开对此不进行特殊限定。
需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施例在此方面不受任何限制。相反,本公开的实施例可以应用于适用的任何场景。
示例性方法
下面结合上述的应用场景,参考图2来描述根据本公开示例性实施例的测试方法。该测试方法可以由图1的服务器120执行,也可以部分由服务器120执行,部分由客户端110执行。
参照图2所示,在步骤S210中,响应于针对应用程序的待测试界面的界面测试操作,确定待测试界面对应的对象树,对象树包括多个界面对象。
在示例实施例中,界面测试操作为对待测试界面的生成和显示进行测试的操作,例如界面测试操作可以为打开应用程序的待测试界面的界面打开操作,可以为切换到待测试界面的界面切换操作等。响应于针对应用程序的待测试界面的界面测试操作例如界面打开操作,确定待测试界面对应的对象树,例如获取预先构建好的待测试界面对应的对象树,或者构建待测试界面对应的对象树。
进一步地,在示例实施例中,对象树包括多个界面对象,界面对象为根据应用程序的待测试界面的业务场景或实现场景确定的对象,界面对象可以包括页面对象或页面元素对象,例如,相同类型的页面对象或页面元素对象。
以应用程序为音乐播放应用程序为例,待测试界面为音乐播放应用程序的音乐播放界面,响应于对音乐播放应用程序的音乐播放界面的界面打开操作,确定音乐播放界面对应的对象树,对象树包括多个界面对象例如,播放控件、音量调节控件、播放模式控件、切换上一首控件,切换下一首控件等。
在步骤S220中,响应于对待测试界面上的待测试界面对象的对象测试操作,根据唯一身份标识从对象树查找待测试界面对象。
在示例实施例中,界面对象的对象信息包括:界面对象的身份信息,界面对象的身份信息包括界面对象在应用程序的多种客户端中的唯一身份标识,唯一身份标识可以用于表征同一个或同一种界面对象在多种客户端的唯一身份标识,例如同一种内容单元,如歌单在多种客户端的唯一身份标识,或同一种交互单元,例如可点击的交互控件在多种客户端的唯一身份标识。多种客户端可以为多个版本的客户端,也可以为多个操作系统的客户端例如Android系统、IOS系统等操作系统的客户端。对象测试操作为对待测试界面上的待测试界面对象的展示或功能进行测试的操作,例如对象测试操作可以为对待测试界面上的界面对象的点击操作,也可以为对待测试界面上的界面对象的滑动操作或选中操作等。
以应用程序为音乐播放应用程序为例,待测试界面为音乐播放应用程序的音乐播放界面,界面对象包括播放控件、播放模式控件等,响应于对音乐播放应用程序的音乐播放界面的播放控件的点击操作,根据播放控件的唯一身份标识从对象树查找播放控件。
在步骤S230中,获取待测试界面对象的对象信息,基于对象信息对待测试界面进行测试。
在示例实施例中,待测试界面对象的对象信息还包括:对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种。根据待测试界面对象的对象信息例如对象操作事件信息确定需要进行的测试操作,根据确定的测试操作对待测试界面对象在待测试界面上的展示或功能进行测试。
以应用程序为音乐播放应用程序为例,待测试界面为音乐播放应用程序的音乐播放界面,待测试界面对象为播放控件、播放模式控件、切换上一首控件,切换下一首控件等,以待测试界面对象为播放控件为例,待测试界面对象的对象信息包括点击操作事件信息,根据播放控件的对象信息例如点击操作事件信息确定需要点击播放控件,则点击播放控件进行播放测试操作,若点击后播放正常,则说明播放控件功能正常。
根据图2的示例实施例中的技术方案,一方面,设置界面对象在应用程序的多种客户端中的唯一身份标识,在对应用程序的待测试界面进行测试操作时,基于该唯一身份标识从对象树中查找待测试界面对象,从而实现跨应用程序的多种客户端准确查找UI对象;另一方面,基于准确查找到的待测试界面对象的对象信息,对待测试界面进行测试,能够提高UI自动化测试的稳定性。
进一步地,在一些示例实施例中,待测试界面对应的对象树包括多个界面对象,多个界面对象中各个界面对象均为待测试界面的必要界面对象,必要界面对象为根据应用程序的待测试界面的业务场景确定的界面对象。必要界面对象包括可交互对象和/或内容承载对象,可交互对象为根据应用程序的待测试界面的业务场景确定的进行界面交互的交互对象,可交互对象可以包括可点击的控件对象、可选择的控件对象或可滑动的控件对象等;内容承载对象为根据应用程序的待测试界面的业务场景确定的承载内容的界面对象,内容承载对象可以包括文本对象、图片对象等。下面,结合图3和图4对示例实施例中的对象树进行详细的说明。
参照图3和图4所示,图3为待测试界面,该待测试界面包括多个界面对象,例如,在该待测试界面从上往下依次为:P1首页、P2云村TAB、P3关注频道、E8抽屉按钮、E9发布按钮、E2用户卡片、E13引用微博、E7微博文字链、E1微博Cell、E3微博图片、E4转发按钮、E5评论按钮、E6点赞按钮、E10播放minibar、E11播放按钮、E12播放列表按钮。
图4中的上图是相关技术方案中图3对应的待测试界面对应的对象树,图4中的下图是本公开示例实施例中该测试界面对象的对象树。在本公开示例实施例中的待测试界面的对象树生成或构建中,忽略掉了待测试界面的部分无关层级,例如图3中未框选的部分,例如图3中底部栏的发现控件、播客控件、我的控件、K歌控件、云村控件等,即图4中虚线框节点,确保界面对象不随客户端上的修改重构或者资源内容变化而发生变化,从而能够在版本迭代时保持与待测试界面对应较为稳定的对象树,进一步提高自动化测试的稳定性。
在示例实施例中,界面对象可以为应用程序的待测试界面的业务场景下具备相同的行为表现和产品视觉含义的视图和组件,以应用程序为应用播放应用程序为例,如果该应用程序中界面对象例如用户视图、歌单、歌曲三个对象具备相同的行为表现和相同的视觉含义的视图,则可以将这三个对象定义为相同的对象。
此外,在一些示例实施例中,界面对象的对象信息还包括:界面对象的位置信息,位置信息包括界面对象的节点路径,例如界面对象的spm(Super Position Model,超级位置模型),spm用于直接描述界面对象在客户端上的具体某个唯一地址信息,该方法还包括:根据唯一身份标识以及对象树,确定界面对象的节点路径。进一步地,根据唯一身份标识从对象树查找待测试界面对象,包括:根据待测试界面对象的唯一身份标识以及节点路径,从对象树中查找待测试界面对象。
通过设置界面对象的位置信息,一方面,基于oid和spm实现在各个客户端统一高效的对象查找获取方法,解决了自动化测中对象查找效率较低且不稳定的问题;另一方面,针对同一页面内有多个相同对象的情况,根据唯一标识信息和位置信息进行稳定精确的查找,能够进一步提高测试的稳定性。
图5示出了根据本公开的一些示例实施例的构建对象树的流程示意图。
参照图5所示,在步骤S510中,确定至少一种客户端的待测试界面的必要界面对象。
在示例实施例中,多种客户端可以为多个版本的客户端,也可以为多个操作系统的客户端例如Android系统、IOS系统等操作系统的客户端。下面以至少一种客户端为Android客户端为例,详细阐述待测试界面的对象树的构建过程。
进一步地,在示例实施例中,必要界面对象为根据应用程序的待测试界面的业务场景确定的界面对象。必要界面对象包括可交互对象和/或内容承载对象。预先配置好待测试界面与待测试界面的必要界面对象的对应关系,将该对应关系存储到数据库中,在构建待测试界面的对象树时,从该数据库获取待测试界面与待测试界面的必要界面对象的对应关系,根据该对应关系确定客户端的待测试界面的必要界面对象。
进一步地,在示例实施例中,预先配置必要界面对象的对象信息,对象信息可以包括:身份位置信息、操作事件信息、内容属性信息以及对象状态信息中的一种或多种。参照图6所示,身份位置信息包括:对象身份唯一标识oid、对象在父组件中的位置pos、子节点children;操作事件信息包括:点击、滑动、选中、文本操作或其他操作事件;状态信息包括:是否可交互、是否已选择、是否可见、是否已添加、区域位置信息以及颜色和资源信息等;内容属性信息包括统一内容id字段即cid、评论数、点赞数等。
在步骤S520中,基于待测试界面的必要界面对象之间的血缘关系,生成待测试界面对应的对象树,血缘关系包括:必要界面对象的父节点和子节点。
在示例实施例中,根据对象信息确定待测试界面的必要界面对象之间的血缘关系,根据必要界面对象之间的血缘关系,生成待测试界面对象的对象树。例如,根据待测试界面的必要界面对象的父节点和子节点信息,生成待测试界面对象的对象树。
根据图5的示例实施例中的技术方案,一方面,通过云端预先配置的待测试界面的界面对象的对象信息,在各个客户端构建待测试界面的对象树,通过客户端与云端的信息同步的方式实现高效的对象树构建,解决了无法跨多个客户端构建统一的对象树的问题,提高了测试的稳定性,另一方面,由于能够在版本迭代时保持与待测试界面对应较为稳定的对象树,进一步提高了自动化测试的稳定性。
图7示出了根据本公开的一些示例实施例的对象管理平台的示意图。图7中的7a示出了该对象管理平台的血缘关系管理页面的示意图,图7中的7b示出了该对象管理平台的参数配置页面的示意图。
参照图7中的7a所示,该对象管理平台通过界面对象的血缘关系,维护了与各个版本的应用程序的待测试界面对应的对象树,血缘关系可以包括当前操作对象的父节点和子节点,例如,在图7中的7a中,当前操作对象为首页-动态的界面对象,该界面对象的父节点为首页对象,子节点为三条内容承载对象。
参照图7中的7b所示,对象的参数可以包括:对象标准私参、对象业务私参、引用公参、全局公参版本以及事件公参等。对象标准私参包括:oid和cid,对象业务私参为对象业务场景需要的参数。
可以通过该对象管理平台得到应用程序的待测试界面的界面对象和界面对象的对象信息例如布局信息。通过云端的对象管理平台对界面对象的对象类型、可操作性、状态和内容等属性进行统一标记管理维护,能够进一步提高测试的稳定性。
图8示出了根据本公开的一些示例实施例的对象查找的流程示意图;
参照图8所示,在步骤S810中,响应于对待测试界面上的待测试界面对象的对象测试操作,确定测试操作对应的查找条件。
在示例实施例中,对象测试操作为对待测试界面上的待测试界面对象的展示结果进行测试的操作,例如对象测试操作可以为对待测试界面上的展示结果进行过滤的操作等。对象测试操作对应的查找条件可以为针对待测试界面对象的内容和状态进行过滤的过滤条件。
以应用程序为音乐播放应用程序为例,待测试界面为音乐播放应用程序的搜索结果展示界面,响应于对音乐播放应用程序的待测试界面对象的搜索操作,确定该搜索操作对应的查找条件,例如查找条件为获取播放量大于500的歌单。
在步骤S820中,根据待测试界面对象的对象信息,确定符合查找条件的待测试界面对象。
在示例实施例中,对象信息包括与用户的历史行为有关的记录信息,例如点击量、播放量、关注量等信息。根据待测试界面对象的唯一身份标识,从对象树中查找对应的待测试界面对象,将查找条件与待测试界面对象的对象信息进行匹配,基于匹配结果确定符合查找条件的待测试界面对象。例如,设待测试界面对象的唯一身份标识为歌单,查找条件为获取播放量大于500的歌单,可以通过歌单对应的唯一身份标识即oid来查找歌单,将查找到的歌单的播放量信息与查找条件进行匹配,即根据查找条件对歌单进行过滤查找。
举例而言,参照图9所示,该待测试界面对象的oid为cell_songplaylist,播放次数即playcount例如为530,pos为该歌单在对象树中的节点,spm为该歌单在对象树中的路径信息,title为歌单的标题。
根据图8的示例实施例中的技术方案,通过结合唯一身份标识与对象信息进行对象查找和获取,能够通过统一方式稳定获取到不同客户端上的同一对象,而不依赖于各个客户端上的展现视图和资源标识,因此,能够提高自动化测试的稳定性。
此外,在示例实施例中,响应于对应用程序的多个待测试界面的界面切换操作,确定各个待测试界面的对象树;确定相邻两个待测试界面对应的两个对象树之间的变化元素;根据变化元素,确定待测试界面的界面元素的曝光信息和反曝光信息。图10示出了根据本公开的一些示例实施例的界面切换的示意图。图10中的10a为第一界面对应的对象树;图10中的10b为从第一界面切换到第二界面后第二界面对应的对象树;图10中的10c为从第二界面切换到第三界面后第三界面对应的对象树;图10中的10d为从第三界面切换到第四界面后第四界面对应的对象树;图10中的10e为从第四界面切换到第五界面后第五界面对应的对象树。
在图10中的10a中虚线框中的是相邻两个待测试界面对应的两个对象树之间的变化元素。在图10中的10a中,从首页切换到云村页的推荐页面时,云村页比首页多了推荐、导航、视频、视频卡片这几个界面对象,也就是这几个界面对象发生曝光。在图10中的10b中,通过点击首页的关注控件,从图10中的10a云村页的推荐页面切换到图10中的10b的关注页面,关注页面比推荐页面多了关注、导航、用户卡片、云圈入口等界面对象,这几个界面对象发生曝光,图10中的10a中的推荐界面对象发生反曝光。在图10中的10c中,通过点击图10中的10b中的关注界面的用户卡片,从关注页面切换到图10中的10c的歌手页面,歌手页面的整个对象树上的界面对象发生曝光。在图10中的10d中,点击歌手页面下的动态控件,切换到歌手页面下的动态子页面,该动态子页面下的动态、用户卡片、云圈等界面对象发生曝光,图10中的10c中的头部、关注、云圈这几个界面对象发生反曝光。在图10中的10e中,通过点击图10中的10b中的用户卡片,进入到图10中的10e中的分享浮层,即分享浮层、微信、QQ等界面对象发生曝光,云圈界面对象发生反曝光。
根据图10的示例实施例中的技术方案,对象树在客户端上的自动流转变更可以通过diff函数得到各个页面和元素的曝光信息即pv(pageview)/ev(elementview)以及反曝光信息即pd(pagedisapper)/ed(elementdisapper)。将每个界面对象的曝光信息和反曝光信息提供统一的回调机制给到自动化测试引擎,即在得到相邻两个待测试界面对应的两个对象树之间的每个变化元素后都回调给自动化测试引擎,从而能够根据每个变化元素的曝光信息和反曝光信息对待测试界面进行实时渲染,避免得到所有变化元素再进行渲染需要设置固定时长,导致等待时间较长的问题。
进一步地,在示例实施例中,基于待测试界面的界面元素的曝光信息和反曝光信息,对待测试界面进行渲染。根据界面元素的曝光信息和反曝光信息对待测试界面进行渲染,避免对未变化的元素进行渲染,从而能够提高界面渲染速度。
图11示出了根据本公开的一些示例实施例中的对象操作和验证的流程示意图。
参照图11所示,在步骤S1110中,根据对象信息生成待测试界面对象的测试方法,测试方法包括:对象获取方法、对象操作方法以及对象状态验证方法中的一种或多种;
在示例实施例中,对象信还息还包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种。根据对象信息生成待测试界面对象的测试方法,例如,根据对象信息中的身份位置信息生成对象获取方法;根据对象信息中的操作事件信息生成对象操作方法;根据对象信息中的状态信息生成对象状态验证反复中的一种或多种。
举例而言,参照图12所示,图12中的12a中所示为界面对象的对象信息,对象信息包括界面对象的身份位置信息即oid、spm、children(子节点),界面对象的操作事件信息即action:[click](动作:[点击]);界面对象的状态信息即isfocus(是否获得焦点),内容属性信息即focuscount(获取焦点数)、videocount(视频数量)、cmtcount(评论数)等。根据图12中的12a中的对象信息生成图12中的12b中的测试方法即Getter方法、Setter方法、Click()方法等。
在步骤S1120中,根据测试方法生成待测试界面对象对应的测试用例。
在示例实施例中,获取待测试界面对象对应的测试数据,根据待测试界面对象的测试数据和测试方法生成对应的测试用例。例如,获取待测试界面对象信息中的状态信息例如是否可点击,如果可点击,则生成点击测试用例。
在步骤S1130中,基于测试用例对待测试界面对象的对象操作和对象状态进行测试验证。
在示例实施例中,执行待测试界面对象对应的测试用例,对待测试界面对象的对象操作和对象状态进行测试验证。例如,根据点击测试用例,对待测试界面对象的点击操作进行测试验证;如果可点击,则说明与状态信息中的可点击状态信息一致。
根据图11的示例实施例中的技术方案,一方面,通过对对象信息例如对象类型、可操作,状态和内容等属性进行统一标记管理维护,实现了界面对象的快速准确动作触发和验证,解决了现有自动化方案中操作效率较低准确性差,以及验证能力不足的问题;另一方面,当应用程序的版本间的页面和对象树发生变化,或者界面对象的属性和行为增删变化带来相关接口和方法不可用时,会直接体现在测试用例的编译上而不会等到执行时才报失败,从而可以将有关测试操作和验证的失败因素中,由于测试用例未良好适配的情况提前暴露出来,使得运行时的失败尽可能都是真实的业务逻辑错误,提升测试用例稳定性。
此外,在一些示例实施例中,该测试方法还包括:通过用户行为埋点获取目标操作路径下的用户行为日志,用户行为日志包括目标操作路径下的待测试界面的唯一身份标识、用户操作数据以及待测试界面的界面元素的曝光信息与反曝光信息;基于用户行为日志还原目标操作路径下的用户操作行为。进一步,在示例实施例中,该测试方法还包括:获取应用程序的运行数据,运行数据包括性能数据;在性能数据达到预定值或者应用程序发生故障时,上报用户行为日志,用户行为日志包括所述目标操作路径下的各级用户行为埋点记录的日志。
根据示例实施例中的技术方案,基于对象树的自动构建,以及曝光和反曝光等的统一检测上报,能够很容易获得标准的用户行为埋点。将用户行为埋点反馈的用户行为与应用程序的稳定性和性能数据上报相结合(例如,在应用程序Crash(崩溃)和性能触顶上报时,同时上报记录可多级归因还原的用户行为埋点)。同时,在示例实施例中,也可以针对单用户行为提取相关埋点,获得单用户的详细行为日志,在获取到用户的行为日志后,由于日志本身依赖的对象描述与自动化测试的对象描述完全一致,能够快速准确地进行用户行为还原。
此外,在示例实施例中,该测试方法还包括:响应于对所述用户行为日志的聚合操作,对所述用户行为日志中的用户行为进行维度分析,所述维度包括访问的页面以及同时打开的页面数量。根据本示例实施例中的技术方案,能够在后端对日志聚合时,同样对用户的行为进行维度分析(例如,对经历过的页面,同时打开的页面数等进行维度分析),以快速找出问题复现规律。
在本公开的一些示例实施例中,对于随机遍历测试情况,通过服务器例如云端服务器维护的对象信息和对象树信息,在遍历界面对象时以尽可能高覆盖的目标进行访问,同时借助于界面对象的支持事件维护以及直接面向对象的操作事件封装,能够获得更加高效的空间执行,即更高效地覆盖尽可能多的界面对象。随机遍历测试的核心原则包含以下两个:
(1)针对每个界面对象的访问以及界面对象支持事件的执行,进入一定层级后页面的后退等触发均按一定的概率维护在各个对象上,并且均具有相同初始概率(也可以依据线上的对象访问数据情况,给予对等的初始概率)
(2)随着随机自动化遍历的执行,当界面对象被访问的次数越多,该界面对象被再次访问的概率会降低;而且,在单次遍历中,对于同一个页面,已同时打开的页面数量越多,则返回的概率越大,而会导致进入该页面下的更深层级的事件概率越小。
基于上述内容,在示例实施例中,为待测试界面的界面对象配置均等的初始访问概率。按初始访问概率随机触发对所述待测试界面的界面对象的遍历访问。根据界面对象被访问的次数调整界面对象的访问概率。进一步地,在示例实施例中,根据待测试界面的各个页面的同时打开数量,调整各个页面上的界面对象的访问概率。
在上述示例实施例的技术方案中,通过对象自动化过程中的覆盖收集和优化遍历算法,以及基于对象spm的准确埋点,实现用户路径和操作的高覆盖率随机,以及精准还原回放能力,解决了现有自动化方案中随机测试覆盖率低有效性不足,以及难以准确还原用户行为定向自动化的问题
进一步地,通过本公开实施例技术方案,一方面,通过在对象管理平台维护对象信息和对象树信息,能够在应用程序的不同平台上实现跨多种客户端统一高效的自动化对象获取、操作和验证办法,有效提升单元测试,UI白盒和黑盒自动化测试等测试过程的测试效率和稳定性,提升测试结果判断的准确性;另一方面,通过高覆盖随机遍历策略和面向对象的对象操作支持,能够有效提升monkey等随机稳定性自动化测试场景的有效性;再一方面,通过对象的完整自动化埋点结合崩溃,性能等的数据采集能力,能够有效地保存和还原用户行为和现场情况,提升问题定位效率,实现精准回放自动化;将多层面和目标的自动化能力关联和数据打通,能够有效地实现自动化测试稳定高效的全覆盖。
示例性介质
在介绍了本公开示例性实施例的方法之后,接下来,对本公开示例性实施例的介质进行说明。
在一些可能的实施例中,本公开的各个方面还可以实现为一种介质,其上存储有程序代码,当所述程序代码被设备的处理器执行时用于实现本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的测试方法中的步骤。
在一些可能的实施例中,所述设备的处理器执行所述程序代码时用于实现如下步骤:步骤S210,响应于针对应用程序的待测试界面的界面测试操作,确定待测试界面对应的对象树,对象树包括多个界面对象;步骤S220中,响应于对待测试界面上的待测试界面对象的对象测试操作,根据唯一身份标识从对象树查找待测试界面对象;步骤S230,获取待测试界面对象的对象信息,基于对象信息对待测试界面进行测试。
参考图13所示,描述了根据本公开的实施例的用于实现上述测试方法的程序产品1300,其可以采用便携式紧凑盘只读存储器并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此。
需要说明的是:上述的介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器、只读存储器、可擦式可编程只读存储器、光纤、便携式紧凑盘只读存储器、光存储器件、磁存储器件、或者上述的任意合适的组合。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网或广域网—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性装置
在介绍了本公开示例性实施例的介质之后,接下来,参考图14对本公开示例性实施例的测试装置进行说明。
图14示意性地示出了根据本公开的一些实施例的测试装置的结构图。
参照图14所示,测试装置1400,包括:对象树确定模块1410,用于响应于针对应用程序的待测试界面的界面测试操作,确定所述待测试界面对应的对象树,所述对象树包括多个界面对象,所述界面对象的对象信息包括:所述界面对象的身份信息,所述身份信息包括所述界面对象在所述应用程序的多种客户端中的唯一身份标识;对象查找模块1420,用于响应于对所述待测试界面上的待测试界面对象的对象测试操作,根据所述唯一身份标识从所述对象树查找所述待测试界面对象;测试模块1430,用于获取所述待测试界面对象的对象信息,基于所述对象信息对所述待测试界面进行测试。
在一些示例实施例中,所述对象树确定模块1410包括:对象树获取单元,用于获取所述待测试界面对应的对象树;或者,对象树构建单元,用于构建所述待测试界面对应的对象树,其中,所述对象树的多个界面对象中各个界面对象均为所述待测试界面的必要界面对象,所述必要界面对象为根据所述应用程序的所述待测试界面的业务场景确定的界面对象。
在一些示例实施例中,所述必要界面对象包括可交互对象和/或内容承载对象,所述可交互对象为根据所述应用程序的所述待测试界面的业务场景确定的进行界面交互的交互对象,所述内容承载对象为根据所述应用程序的所述待测试界面的业务场景确定的承载内容的界面对象。
在一些示例实施例中,所述对象树构建单元包括:必要对象确定单元,用于确定至少一种所述客户端的所述待测试界面的必要界面对象;树生成单元,用于基于所述待测试界面的必要界面对象之间的血缘关系,生成所述待测试界面对应的对象树,所述血缘关系包括:所述必要界面对象的父节点和子节点。
在一些示例实施例中,所述必要对象确定单元还用于:确定多个版本中各个版本的所述客户端的所述待测试界面的必要界面对象,所述树生成单元还用于:生成各个版本的所述客户端的所述待测试界面对应的对象树。
在一些示例实施例中,所述界面对象的对象信息还包括:所述界面对象的位置信息,所述位置信息包括所述界面对象的节点路径,所述装置还包括:节点路径确定模块,用于根据所述唯一身份标识以及所述对象树,确定所述界面对象的节点路径,所述对象查找模块还用于:根据所述待测试界面对象的所述唯一身份标识以及所述节点路径,从所述对象树中查找所述待测试界面对象。
在一些示例实施例中,所述对象信息还包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种。
在一些示例实施例中,所述对象查找模块1420还用于:响应于对所述待测试界面上的待测试界面对象的对象测试操作,确定所述对象测试操作对应的查找条件;根据所述待测试界面对象的所述唯一身份标识以及所述对象信息,从所述对象树中查找符合所述查询条件的所述待测试界面对象。
在一些示例实施例中,所述对象树确定模块1410还用于:响应于对所述应用程序的多个待测试界面的界面切换操作,确定各个待测试界面的对象树。
在一些示例实施例中,所述装置1400还包括:变化元素确定模块,用于确定相邻两个待测试界面对应的两个对象树之间的变化元素;曝光信息确定模块,用于根据所述变化元素,确定所述待测试界面的界面元素的曝光信息和反曝光信息。
在一些示例实施例中,所述对象信还息包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种,所述测试模块1430还用于:根据所述对象信息生成所述待测试界面对象的测试方法,所述测试方法包括:对象获取方法、对象操作方法以及对象状态验证方法中的一种或多种;根据所述测试方法生成所述待测试界面对象对应的测试用例;基于所述测试用例对所述待测试界面对象的对象操作和对象状态进行测试验证。
在一些示例实施例中,所述装置1400还包括:日志获取模块,用于通过用户行为埋点获取目标操作路径下的用户行为日志,所述用户行为日志包括所述目标操作路径下的待测试界面的唯一身份标识、用户操作数据以及所述待测试界面的界面元素的曝光信息与反曝光信息;行为还原模块,用于基于所述用户行为日志还原所述目标操作路径下的用户操作行为。
在一些示例实施例中,所述装置1400还包括:运行数据获取模块,用于获取所述应用程序的运行数据,所述运行数据包括性能数据;日志上报模块,用于在所述性能数据达到预定值或者所述应用程序发生故障时,上报所述用户行为日志,所述用户行为日志包括所述目标操作路径下的各级用户行为埋点记录的日志。
在一些示例实施例中,所述装置1400还包括:维度分析模块,用于响应于对所述用户行为日志的聚合操作,对所述用户行为日志中的用户行为进行维度分析,所述维度包括访问的页面以及同时打开的页面数量。
在一些示例实施例中,所述装置还包括:概率配置模块,用于为所述待测试界面的界面对象配置均等的初始访问概率。
在一些示例实施例中,所述装置1400还包括:遍历访问模块,用于按所述初始访问概率随机触发对所述待测试界面的界面对象的遍历访问;第一概率调整模块,用于根据所述界面对象被访问的次数调整所述界面对象的访问概率。
在一些示例实施例中,所述装置1400还包括:第二概率调整模块,用于根据所述待测试界面的各个页面的同时打开数量,调整各个页面上的界面对象的访问概率。
由于图14的示例实施例的测试装置的各个功能模块与上述测试方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的测试方法的实施例。
示例性计算设备
在介绍了本公开示例性实施例的方法、介质和装置之后,接下来,介绍根据本公开的另一示例性实施例的计算设备。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施例中,根据本公开实施例的计算设备可以至少包括至少一个处理器、以及至少一个存储器。其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的测试方法中的步骤。例如,所述处理器可以执行如图2中所示的步骤:步骤S210,响应于针对应用程序的待测试界面的界面测试操作,确定待测试界面对应的对象树,对象树包括多个界面对象;步骤S220中,响应于对待测试界面上的待测试界面对象的对象测试操作,根据唯一身份标识从对象树查找待测试界面对象;步骤S230,获取待测试界面对象的对象信息,基于对象信息对待测试界面进行测试。又如,所述处理器也可以执行如图5中所示的步骤。
下面参照图15来描述根据本公开的示例实施例的电子设备1500。图15所示的电子设备1500仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图15所示,电子设备1500以通用计算设备的形式表现。电子设备1500的组件可以包括但不限于:上述至少一个处理单元1510、上述至少一个存储单元1520、连接不同系统组件(包括存储单元1520和处理单元1510)的总线1530。
总线1530包括数据总线、地址总线和控制总线。
存储单元1520可以包括易失性存储器形式的可读介质,例如RAM(Random AccessMemory,随机存取存储器)1521和/或高速缓存存储器1522,还可以进一步包括ROM(Read-Only Memory,只读存储器)1523。
存储单元1520还可以包括具有一组(至少一个)程序模块1524的程序/实用工具1525,这样的程序模块1524包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备1500也可以与一个或多个外部设备1540(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(I/O)接口1550进行。并且,电子设备1500还可以通过网络适配器1560与一个或者多个网络(例如局域网,广域网和/或公共网络,例如因特网)通信。如图所示,网络适配器1560通过总线1530与电子设备1500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID(Redundant Arrays ofIndependent Disks,独立冗余磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了测试装置的若干单元或子单元,但是这种划分仅仅是示例性的,并非是强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或单元的特征和功能可以在一个模块或单元中具体化。反之,上文描述的一个模块或单元的特征和功能可以进一步划分为由多个模块或单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种测试方法,其特征在于,包括:
响应于针对应用程序的待测试界面的界面测试操作,确定所述待测试界面对应的对象树,所述对象树包括多个界面对象,所述界面对象的对象信息包括:所述界面对象的身份信息,所述身份信息包括所述界面对象在所述应用程序的多种客户端中的唯一身份标识;
响应于对所述待测试界面上的待测试界面对象的对象测试操作,根据所述唯一身份标识从所述对象树查找所述待测试界面对象;
获取所述待测试界面对象的对象信息,基于所述对象信息对所述待测试界面进行测试。
2.根据权利要求1所述的方法,其特征在于,所述确定所述待测试界面对应的对象树,包括:
获取所述待测试界面对应的对象树;或者,
构建所述待测试界面对应的对象树,其中,所述对象树的多个界面对象中各个界面对象均为所述待测试界面的必要界面对象,所述必要界面对象为根据所述应用程序的所述待测试界面的业务场景确定的界面对象。
3.根据权利要求2所述的方法,其特征在于,所述必要界面对象包括可交互对象和/或内容承载对象,所述可交互对象为根据所述应用程序的所述待测试界面的业务场景确定的进行界面交互的交互对象,所述内容承载对象为根据所述应用程序的所述待测试界面的业务场景确定的承载内容的界面对象。
4.根据权利要求2所述的方法,其特征在于,所述构建所述待测试界面对应的对象树,包括:
确定至少一种所述客户端的所述待测试界面的必要界面对象;
基于所述待测试界面的必要界面对象之间的血缘关系,生成所述待测试界面对应的对象树,所述血缘关系包括:所述必要界面对象的父节点和子节点。
5.根据权利要求4所述的方法,其特征在于,所述确定至少一种客户端的所述待测试界面的必要界面对象,包括:
确定多个版本中各个版本的所述客户端的所述待测试界面的必要界面对象,
所述生成所述待测试界面对应的对象树,包括:
生成各个版本的所述客户端的所述待测试界面对应的对象树。
6.根据权利要求1所述的方法,其特征在于,所述界面对象的对象信息还包括:所述界面对象的位置信息,所述位置信息包括所述界面对象的节点路径,所述方法还包括:
根据所述唯一身份标识以及所述对象树,确定所述界面对象的节点路径,
所述根据所述唯一身份标识从所述对象树查找所述待测试界面对象,包括:
根据所述待测试界面对象的所述唯一身份标识以及所述节点路径,从所述对象树中查找所述待测试界面对象。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述对象信息还包括对象操作事件信息、对象内容属性信息以及对象状态信息中的一种或多种。
8.一种测试装置,其特征在于,包括:
对象树确定模块,用于响应于针对应用程序的待测试界面的界面测试操作,确定所述待测试界面对应的对象树,所述对象树包括多个界面对象,所述界面对象的对象信息包括:所述界面对象的身份信息,所述身份信息包括所述界面对象在所述应用程序的多种客户端中的唯一身份标识;
对象查找模块,用于响应于对所述待测试界面上的待测试界面对象的对象测试操作,根据所述唯一身份标识从所述对象树查找所述待测试界面对象;
测试模块,用于获取所述待测试界面对象的对象信息,基于所述对象信息对所述待测试界面进行测试。
9.一种计算设备,包括:处理器和存储器,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如权利要求1至7中任一项所述的方法。
10.一种介质,其上存储有程序,所述程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
CN202110609824.9A 2021-06-01 2021-06-01 测试方法、装置、计算设备以及介质 Active CN113485909B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110609824.9A CN113485909B (zh) 2021-06-01 2021-06-01 测试方法、装置、计算设备以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110609824.9A CN113485909B (zh) 2021-06-01 2021-06-01 测试方法、装置、计算设备以及介质

Publications (2)

Publication Number Publication Date
CN113485909A true CN113485909A (zh) 2021-10-08
CN113485909B CN113485909B (zh) 2023-10-27

Family

ID=77934248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110609824.9A Active CN113485909B (zh) 2021-06-01 2021-06-01 测试方法、装置、计算设备以及介质

Country Status (1)

Country Link
CN (1) CN113485909B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020648A (zh) * 2022-01-04 2022-02-08 广东拓思软件科学园有限公司 应用控件的测试方法、装置、电子设备及存储介质
CN117155485A (zh) * 2023-10-23 2023-12-01 东莞信宝电子产品检测有限公司 一种经典蓝牙自动化测试方法、系统及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091510A1 (en) * 2003-10-23 2005-04-28 Microsoft Corporation Element persistent identification
CN103365778A (zh) * 2013-07-03 2013-10-23 北京京东尚科信息技术有限公司 一种测试控件的方法和装置
CN108427642A (zh) * 2018-03-05 2018-08-21 深圳市买买提信息科技有限公司 一种界面中控件测试的方法和装置
CN109783356A (zh) * 2018-12-14 2019-05-21 深圳壹账通智能科技有限公司 一种自动化测试方法及终端
CN110297752A (zh) * 2018-03-23 2019-10-01 华为软件技术有限公司 控件元素的获取方法及装置、自动化测试系统、存储介质
US10509717B1 (en) * 2016-10-05 2019-12-17 Amdocs Development Limited System, method, and computer program for automatically testing software applications including dynamic web pages
CN110737585A (zh) * 2019-08-31 2020-01-31 苏州浪潮智能科技有限公司 Ui自动化测试用例及系统、页面元素加载等待方法及系统
CN111897740A (zh) * 2020-08-24 2020-11-06 北京字节跳动网络技术有限公司 用户界面的测试方法、装置、电子设备及计算机可读介质
WO2021088724A1 (zh) * 2019-11-05 2021-05-14 深圳前海微众银行股份有限公司 一种测试方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091510A1 (en) * 2003-10-23 2005-04-28 Microsoft Corporation Element persistent identification
CN103365778A (zh) * 2013-07-03 2013-10-23 北京京东尚科信息技术有限公司 一种测试控件的方法和装置
US10509717B1 (en) * 2016-10-05 2019-12-17 Amdocs Development Limited System, method, and computer program for automatically testing software applications including dynamic web pages
CN108427642A (zh) * 2018-03-05 2018-08-21 深圳市买买提信息科技有限公司 一种界面中控件测试的方法和装置
CN110297752A (zh) * 2018-03-23 2019-10-01 华为软件技术有限公司 控件元素的获取方法及装置、自动化测试系统、存储介质
CN109783356A (zh) * 2018-12-14 2019-05-21 深圳壹账通智能科技有限公司 一种自动化测试方法及终端
CN110737585A (zh) * 2019-08-31 2020-01-31 苏州浪潮智能科技有限公司 Ui自动化测试用例及系统、页面元素加载等待方法及系统
WO2021088724A1 (zh) * 2019-11-05 2021-05-14 深圳前海微众银行股份有限公司 一种测试方法及装置
CN111897740A (zh) * 2020-08-24 2020-11-06 北京字节跳动网络技术有限公司 用户界面的测试方法、装置、电子设备及计算机可读介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020648A (zh) * 2022-01-04 2022-02-08 广东拓思软件科学园有限公司 应用控件的测试方法、装置、电子设备及存储介质
CN114020648B (zh) * 2022-01-04 2022-04-12 广东拓思软件科学园有限公司 应用控件的测试方法、装置、电子设备及存储介质
CN117155485A (zh) * 2023-10-23 2023-12-01 东莞信宝电子产品检测有限公司 一种经典蓝牙自动化测试方法、系统及介质

Also Published As

Publication number Publication date
CN113485909B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
CN110928772B (zh) 一种测试方法及装置
US10050848B2 (en) Data-driven profiling for distributed applications
US8166347B2 (en) Automatic testing for dynamic applications
CN112817817B (zh) 埋点信息查询方法、装置、计算机设备和存储介质
CN113485909B (zh) 测试方法、装置、计算设备以及介质
CN107480036A (zh) iOS移动应用的自动测试方法、装置、存储介质及终端
CN113505082B (zh) 应用程序测试方法及装置
CN105468511A (zh) 网页脚本错误定位方法及装置
US10951540B1 (en) Capture and execution of provider network tasks
CN115454400A (zh) 接口参数的处理方法、装置、设备、介质及程序产品
CN111679976A (zh) 一种页面对象的查找方法及装置
US20200104243A1 (en) Automated test coverage of computing systems
US8000952B2 (en) Method and system for generating multiple path application simulations
US20150169675A1 (en) Data access using virtual retrieve transformation nodes
CN113254315B (zh) 埋点信息的上报方法、埋点方法、装置、介质、电子设备
CN107193734B (zh) 用于移动Web应用的重放方法及重放系统
CN112486461B (zh) 一种基于springboot框架的信息处理系统
CN112905449B (zh) 目标测试方法、装置、设备和存储介质
CN111459547A (zh) 一种函数调用链路的展示方法和装置
CN113760856A (zh) 数据库管理方法及装置、计算机可读存储介质、电子设备
CN112181407A (zh) 业务实现处理方法及装置、系统、电子设备和存储介质
CN117130946B (zh) 一种测试场景生成方法、装置、电子设备和可读存储介质
CN112764750B (zh) 界面生成方法、装置、电子设备以及可读存储介质
US11960560B1 (en) Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof
CN114969383B (zh) 一种基于零代码开发的应用处理方法和装置

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