CN114691528A - 一种测试案例文本的生成方法、装置 - Google Patents

一种测试案例文本的生成方法、装置 Download PDF

Info

Publication number
CN114691528A
CN114691528A CN202210507388.9A CN202210507388A CN114691528A CN 114691528 A CN114691528 A CN 114691528A CN 202210507388 A CN202210507388 A CN 202210507388A CN 114691528 A CN114691528 A CN 114691528A
Authority
CN
China
Prior art keywords
test
test operation
control element
text
target 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.)
Pending
Application number
CN202210507388.9A
Other languages
English (en)
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202210507388.9A priority Critical patent/CN114691528A/zh
Publication of CN114691528A publication Critical patent/CN114691528A/zh
Pending legal-status Critical Current

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

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

本申请涉及一种测试案例文本的生成方法、装置、计算机设备、存储介质和计算机程序产品,应用于人工智能技术领域。所述方法包括:在对目标界面进行测试的过程中,确定针对目标界面的测试操作的测试动作信息、以及该测试操作对应的控件元素。在目标界面对应的代码数据中,查找该测试操作对应的控件元素的描述数据。基于该控件元素的描述数据、该控件元素的控件类型、该测试操作的测试动作信息,生成该测试操作对应的测试操作文本。根据预设的测试操作执行顺序,对各测试操作对应的测试操作文本进行排序,得到测试案例文本。采用本方法能够提升测试案例文本准确率。

Description

一种测试案例文本的生成方法、装置
技术领域
本申请涉及人工智能技术领域,特别是涉及一种测试案例文本的生成方法、装置。
背景技术
在软件技术领域,都会有系统集成测试或者验收测试环节,对系统或者软件进行测试。
相关技术中,会对用户界面(User Interface,UI)的操作逻辑进行测试,使用最多的是利用脚本进行自动化测试,也有相关技术人员手动进行测试,得到相应的测试结果。由于需要对测试结果进行回溯,以使验收人员对测试结果进行验收,因此测试人员需要编写验收人员可读的测试案例文本,用于描述测试执行的过程,包括测试过程中各个测试操作的描述文本。
然而,测试过程与测试案例文本需要保持一致,因此,当测试人员根据实际测试需要调整测试过程时,还需要根据测试过程的改变维护测试案例文本,这使得最终得到的测试案例文本的准确率并不是很高。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升测试案例文本准确率的测试案例文本的生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种测试案例文本的生成方法。所述方法包括:
在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
在其中一个实施例中,所述在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息以及所述测试操作对应的控件元素,包括:
在对目标界面进行测试的过程中,从测试脚本中读取并执行测试操作;
针对每个所述测试操作,在所述测试脚本中查找所述测试操作的测试动作信息,并查找所述测试操作的动作信息对应的操作对象标识信息;
根据所述操作对象标识信息,在所述目标界面对应的代码数据中查找所述测试操作对应的控件元素。
在其中一个实施例中,所述在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息以及所述测试操作对应的控件元素,包括:
在对目标界面进行测试的过程中,响应于针对所述目标界面的测试操作,确定所述测试操作的测试动作信息以及所述测试操作对应的控件元素。
在其中一个实施例中,在所述代码数据为文档对象模型树的情况下,所述在所述目标界面对应的代码数据中,查找所述控件元素的描述数据,包括:
在所述目标界面对应的文档对象模型树中,查找所述控件元素所在的目标节点,并确定所述目标节点是否存在以文本元素为节点的子节点;
在所述目标节点存在以文本元素为节点的目标子节点的情况下,将所述目标子节点对应的文本元素作为所述控件元素的描述数据;
在所述目标节点不存在以文本元素为节点的目标子节点的情况下,以所述目标节点为起点,向上逐级查找父级节点,直至查找到存在子节点为文本元素的目标父级节点;将所述目标父级节点的子节点对应的文本元素作为所述控件元素的描述数据。
在其中一个实施例中,在所述测试操作包括赋值操作的情况下,所述基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本,包括:
获取所述测试操作对应的赋值信息;
基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息、所述赋值信息,生成所述测试操作对应的测试操作文本。
在其中一个实施例中,所述获取所述测试操作的赋值信息,包括:
在测试脚本中查找所述测试动作信息对应的赋值参数,将所述赋值参数作为所述测试操作的赋值信息。
在其中一个实施例中,所述获取所述测试操作的赋值信息,包括:
在对目标界面进行测试的过程中,响应于针对所述目标界面的测试操作,确定所述测试操作的输入信息,并将所述输入信息作为所述测试操作的赋值信息。
第二方面,本申请还提供了测试案例文本的生成装置。所述装置包括:
确定模块,用于在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
查找模块,用于在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
生成模块,用于基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
排序模块,用于根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
上述的测试案例文本的生成方法、装置、计算机设备、存储介质和计算机程序产品,在对目标界面进行测试的过程中,确定针对目标界面的测试操作的测试动作信息、以及该测试操作对应的控件元素。在目标界面对应的代码数据中,查找该测试操作对应的控件元素的描述数据。基于该控件元素的描述数据、该控件元素的控件类型、该测试操作的测试动作信息,生成该测试操作对应的测试操作文本。根据预设的测试操作执行顺序,对各测试操作对应的测试操作文本进行排序,得到测试案例文本。
本申请提供的测试案例文本的生成方法,随着各个测试操作的执行,自动生成验收人员可读的测试案例文本,减少了人为因素导致的测试案例文本错误,提高了测试案例文本的准确率。
附图说明
图1为本申请示例性示出的测试案例文本的生成方法的流程示意图;
图2为本申请示例性示出的文档结构模型树;
图3为本申请示例性示出的测试案例文本的生成装置的结构框图示意图;
图4为本申请示例性示出的计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在对用户界面进行测试时,一般需要测试用户界面的功能模块的布局是否合理、整体风格是否一致、各个控件的放置位置是否符合客户使用习惯等,最重要的是,在用户界面包含大量控件的情况下,如文本输入框、按钮、下拉选择框等,还需要测试对控件进行操作时的逻辑正确性,即,模拟用户对用户界面的控件进行操作时,是否会存在问题。
在大型金融企业中,由于对于测试工作的质控标准要求很高,所以验收人员通常会通过对测试案例的检查和复盘,来抽检测试人员对所负责测试功能是否真实进行了测试和验证。在这个过程中,测试人员就需要对测试过程编写测试案例文本,以使验收人员理解测试过程。理想状态下,测试案例文本与测试过程侧测试操作高度对应,因此测试案例文本与测试测执行结果高度对应,之后验收人员通过对测试案例文本以及测试结果进行检查,确定测试人员在进行测试过程中,是否覆盖所有需要测试的可能性以及测试是否得当。
然而,测试人员在实际的测试过程中,当被测系统发生变动,测试操作执行失败时,测试人员会先对测试操作进行调试,当测试操作调试执行成功后,对相应的测试案例文本进行更新,或者因为工作时间紧等原因,不能够即使对测试案例文本进行更新,最后导致测试过程中的测试操作与对应的测试案例文本的对应程度低,即,最终得到的测试案例文本准确率低,因此,验收人员无法通过测试过程的执行结果以及测试案例文本来客观地评估对应被测界面的测试验证情况。
基于此,本申请提出一种测试案例文本的生成方法,在对目标界面进行测试的过程中,确定针对目标界面的测试操作的测试动作信息、以及该测试操作对应的控件元素。在目标界面对应的代码数据中,查找该测试操作对应的控件元素的描述数据。基于该控件元素的描述数据、该控件元素的控件类型、该测试操作的测试动作信息,生成该测试操作对应的测试操作文本。根据预设的测试操作执行顺序,对各测试操作对应的测试操作文本进行排序,得到测试案例文本。
通过本申请的方法,由于是随着测试过程自动生成对应的测试案例文本,测试过程执行的测试操作与测试案例文本高度对应,测试案例文本的准确率大大提升,使得验收人员可以通过测试过程的执行结果以及测试案例文本来客观地评估对应被测界面的测试验证情况。
本申请提供了一种测试案例文本的生成方法,以及对应的装置、计算机设备、计算机可读存储介质、计算机程序产品。首先对测试案例文本的生成方法进行详细的说明。
本申请实施例提供的测试案例文本的生成方法,可以应用于各种个人计算机、笔记本电脑、服务器设备等。
在一个实施例中,如图1所示,为本申请示例性提供的一种测试案例文本的生成方法的流程图,包括以下步骤:
步骤101、在对目标界面进行测试的过程中,确定针对目标界面的测试操作的测试动作信息、以及该测试操作对应的控件元素。
其中,目标界面一般是待检测的是用户界面,界面中包括多个用户可操作的控件元素,以及用于显示的文本元素等,在对用户界面进行测试时,测试操作针对的是用户界面的控件元素。控件元素为用户界面中用户可操作的元素,例如按钮、输入框、单选框、多选框、下拉框等,其他元素,例如图片、文字等,用户一般不能对其进行操作,因此一般在测试过程中不会对其进行测试。测试动作信息一般为模拟用户对控件元素进行操作时动作信息,例如清空文本框的清空动作,在文本框输入内容的输入动作、点击按钮的点击动作,选择单选框的选择动作。
其中,一个测试操作一般针对一个控件元素,包括一个测试动作信息。例如,单击按钮,单击为测试动作信息,控件元素是个按钮。
实际应用中,在对目标界面进行测试时,可以使用测试脚本自动对目标界面进行测试,也可以是测试人员手工对目标界面进行测试。使用测试脚本自动对目标界面进行测试时,设备可以根据测试脚本,获取测试操作的测试动作信息以及对应的控件元素。
步骤103、在目标界面对应的代码数据中,查找该测试操作对应的控件元素的描述数据。
其中,代码数据用于将目标界面显示至显示屏以呈现至用户,一般而言,设备对代码数据进行解析后将目标界面显示至显示器,例如,代码数据可以是超文本标记语言(Hyper Text Markup Language,HTML),或者可以是可扩展标记语言(Extensible MarkupLanguage,XML)、又或者可以是文件对象模型(DocumentObjectModel,DOM)等,设备对标记语言进行解析,得到各个标记的相对位置等,在显示器显示相应的界面。
在一个实施例中,设备可以对目标界面对应的代码数据进行解析,得到代码数据的层级结构,进而根据层级结构,得到该测试操作对应的控件元素的描述数据。
步骤105、基于该测试操作对应的控件元素的描述数据、该测试操作对应的控件元素的控件类型、该测试操作的测试动作信息,生成该测试操作对应的测试操作文本。
其中,测试操作文本至少包括三个部分,第一部分为描述该测试操作对应的控件元素的描述数据,第二部分为该测试操作对应的控件元素的控件类型,第三部分为该测试操作的测试动作信息。例如一个文本框前有一个文本元素,内容为“用户名”,测试操作为清空文本框,那么描述数据为“用户名”,控件类型为文本框,测试动作信息为清空,生成的测试操作文本为:“用户名”文本框清空,又如,一个按钮中的文本内容为提交,控件类型为按钮,测试动作信息为点击按钮,生成的测试操作文本为:“查询”按钮点击。
在一个实施例中,设备得到该测试操作对应的控件元素的描述数据、该测试操作对应的控件元素的控件类型、该测试操作的测试动作信息后,得到的描述数据、控件类型、测试动作信息并不一定是文本数据,需要将描述数据、控件类型、测试动作信息转换为对应的文本,然后根据预设的顺序对这三部分内容进行排序,得到测试操作文本,例如,描述数据转为文本后是用户名,控件类型转换为文本后是文本框,测试动作信息转换为文本后是清空,那么生成的测试操作文本可以是:“用户名”文本框清空,也可以是:清空“用户名”文本框。
在一个实施例中,设备将描述数据、控件类型、测试动作信息转换为对应的文本时,可以根据存储的文本分别与描述数据、控件类型、测试动作信息的对应关系,也可以根据预设的规则进行转换,例如文本数据使用汉字编码规则进行编码存储,则可以根据所使用的汉字编码规则,将文本数据转换为对应的汉字,即对应的文本。
在一个实施例中,不同的测试动作信息对应的测试操作文本的阅读习惯可能不同,因此设备还可以为不同的动作信息设置不同的测试操作文本生成规则,例如,对于清空测试动作,生成的测试操作文本可以是:将A文本框的内容清空,或者是:清空A文本框的内容;对于选择这种测试动作,生成的测试操作文本可以是:选定B选择框的选项X。其中,A、B是控件元素的描述数据,X是赋值信息。
步骤107、根据预设的测试操作执行顺序,对各测试操作对应的测试操作文本进行排序,得到测试案例文本。
其中,在目标界面进行测试时,多个测试操作一般是具有执行顺序的,例如,先填写用户名以及密码后,才可以点击登录按钮,因此,测试案例文本中的多个测试操作文本也需要有顺序。
在一个实施例中,设备每执行一个测试操作,生成对应的测试操作文本后,对目标界面测试完成后,会得到每个测试操作对应的测试操作文本。因此,设备可以根据各个测试操作的执行顺序,以及各个测试操作与各个测试操文本的对应关系,对各个测试操作文本进行排序,得到测试案例文本。
在一个实施例中,设备还可以每执行一个测试操作生成对应的测试操作文本后,直接将测试操作文本打印至对应的文档或者显示器。当各个测试操作执行完成后,各个测试操作对应的测试操作文本会按照各个测试操作的执行顺序打印至文档或者显示器。
通过本申请的测试案例文本的生成方法,每对目标界面进行一个测试操作,设备就可以对该测试操作生产对应的测试操作文本,然后进行排序得到对应的测试案例文本,使得对目标界面测试过程中测试操作与测试案例文本高度对应,测试案例文本的准确率得到了很大的提升,使得验收人员可以通过测试过程的执行结果以及测试案例文本来客观地评估对应被测界面的测试验证情况。
在一个实施例中,可以使用测试脚本对目标界面进行测试,此时,步骤101具体包括:
步骤A1、在对目标界面进行测试的过程中,从测试脚本中读取并执行测试操作。
其中,测试脚本中包括了的对目标界面的整个测试过程中,设备需要执行的操作,一般是逐行读取,每读取到一个操作就会执行该操作。
在一个实施例中,测试脚本中的各个操作并不全是测试操作,比如是进程睡眠2000ms,因此,可以在设备中设置测试操作关键词,例如,常用的测试动作信息包括set、type、click、select、exist、drag、drop等。设备获取到测试脚本后,逐行读取测试脚本,每读取到一个操作,执行一个操作。若设备在测试脚本中读取到的操作信息中包含有测试操作关键词,可以确定该操作是对目标界面的测试操作。若设备在测试脚本中读取到操作信息不包含有测试操作关键词,确定该操作不是针对目标界面的测试操作,也不会在进一步地确定该操作的动作信息、描述数据、控件类型等。
步骤A3、针对每个所述测试操作,在测试脚本中查找该测试操作的测试动作信息,并查找该测试操作的动作信息对应的操作对象标识信息。
其中,目标界面中可以包括很多个控件元素,每个控件元素都会有标识信息,设备可以根据标识信息以区分各个控件元素,常见的标识信息有id、name、type、class等。
在一个实施例中,设备读取并执行一个测试操作时,可以根据测试脚本中该测试操作的相关内容,查找该测试操作的动作信息以及该测试操作对应的操作对象标识信息。
例如,测试脚本中的一个测试操作为:
driver.findElement(By.id("#ICSearch")).click();
那么该测试操作的动作信息为click,即点击操作,操作对象标志信息为#ICSearch。
步骤A5、根据该测试操作的操作对象标识信息,在目标界面对应的代码数据中查找该测试操作对应的控件元素。
在一个实施例中,设备确定测试操作对应的操作对象标识信息后,可以在目标界面对应的代码数据中,查找标识信息为该测试操作对应的操作对象标识信息的控件元素,从而确定出该测试操作对应的控件元素。
在一个实施例中,若代码数据为文档对象模型(Document Object Model,DOM)树,设备可以在文档对象模型树中,查找标识属性元素为该测试操作对应的操作对象标识信息的节点,其父节点即为该测试操作对应的控价元素对应的节点。
在此实施例中,在使用测试脚本对界面进行测试时,可以直接读取测试脚本中的相关内容确定测试操作的测试动作信息以及操作对象标识信息,然后根据操作对象标识信息进一步确定测试操作对应的控件元素。
在一个实施例中,若是测试人员手工对目标界面进行测试的,此时,步骤101具体包括:
在对目标界面进行测试的过程中,响应于针对目标界面的测试操作,确定该测试操作的测试动作信息以及该测试操作对应的控件元素。
在一个实施例中,设备将目标界面显示至显示屏后,测试人员可以对目标界面的各个控件进行操作。之后,设备可以监测各个控件元素是否被操控。当检测测试人员对某个控件进行操作后,设备可以检测到测试人员的测试操作,然后响应于该测试操作,确定出该测试操作的测试动作信息以及该测试操作对应的控件元素。
例如,测试人员利用鼠标单击登录按钮后,设备可以检测到该按钮的单击事件,确定出该测试操作的测试动作信息为单击,以及该测试操作对应的控件元素为登录按钮。
在此实施例中,使用手工测试时,通过检测各个控件元素的是否被触发,确定测试操作的测试动作信息以及测试操作对应的控件元素。
在一个实施例中,若上述的代码数据为文档对象模型树,此时步骤103具体包括:
步骤B1、在目标界面对应的文档对象模型树中,查找测试操作对应的控件元素所在的目标节点,并确定目标节点是否存在以文本元素为节点的目标子节点。
在文档对象模型树中,除了根元素外,一般至少包括三类节点:标签元素节点、文本元素节点、属性元素节点,文本元素节点一般为标签元素节点的子节点,是标签元素中的文字,属性元素节点一般为标签元素节点的子节点,是标签元素的属性信息,如图2所示,为本申请示例性示出的文档对象模型树。根节点为html标签对应的根元素,其它节点为标签元素、文本元素或者属性元素,根元素为html标签,标签元素包括head标签、title标签、div标签、label标签、input标签、button标签,文本元素包括“文档标题”、“用户名”、“登录”,属性标签包括id=0001,id=0002。其中,各个元素的关系如图2的层级关系所示,文本元素为其父节点对应的标签中的文本内容,属性元素为其父节点对应的标签的属性信息。需要说明的是,本申请中的控件元素属于标签元素中的一种。
在一个实施例中,设备确定测试操作对应的控件元素后,可以根据测试操作对应的控件元素的属性信息,在文档对象模型树中查找到测试操作对应的控件元素所在的目标节点,目标节点的属性子节点所表征的信息与测试操作对应的控件元素的属性信息一致。
在一个实施例中,设备在目标界面对应的文档对象模型树中,查找到测试操作对应的控件元素所在的目标节点后,确定目标节点是否存在以文本元素为节点的子节点,如果存在以文本元素为节点的子节点,说明该控件元素对应的标签中包含文字;如果不存在以文本元素为节点的子节点,说明该控件元素对应的标签中不包含文字。
步骤B3、在目标节点存在以文本元素为节点的目标子节点的情况下,将目标子节点对应的文本元素作为控件元素的描述数据。
在一个实施例中,设备确定目标节点存在以文本元素为节点的目标子节点的情况下,说明目标节点对应的控件元素对应的标签中包含文字,此时将目标子节点对应的文本元素作为控件元素的描述数据。
步骤B5、在目标节点不存在以文本元素为节点的目标子节点的情况下,以目标节点为起点,向上逐级查找父级节点,直至查找到存在子节点为文本元素的目标父级节点;将目标父级节点的子节点对应的文本元素作为控件元素的描述数据。
在一个实施例中,设备确定目标节点不存在以文本元素为节点的目标子节点的情况下,说明目标节点对应的控件元素对应的标签中不包含文字,设备首先向上查找一级父节点,即,目标节点的直接相连的父节点,确定一级父节点是否存在以文本元素为节点的子节点。其中,一级父节点的子节点包括以一级父节点为根节点时的所有节点,包括目标节点的兄弟节点以及兄弟节点的子节点。若一级父节点不存在以文本元素为节点的子节点,设备会继续向上查找第二父节点,即,一级父节点的父节点,确定二级父节点是否存在以文本元素为节点的子节点,依次类推,直至查找到存在子节点为文本元素的目标父级节点。
在一个实施例中,设备,查找到子节点为文本元素的目标父级节点后,将目标父级节点的子节点对应的文本元素作为控件元素的描述数据。
此外,实际应用中,根据编写代码习惯,不同的控件元素的代码结构可能不同,例如,针对下拉选择框这种控件元素,对应的描述数据一般向上追溯5级即可,即,以目标节点为起点,获取其所有子节点及5级父节点信息,从而得到目标节点的DOM结构树信息。又如,对于下拉选择框以外的控件(如按钮、输入框、菜单、单选、多选等),可以向上逐级查找父级节点,直至查找到存在子节点为文本元素的目标父级节点。
实际应用中,在确定一个节点是否存在以文本元素为节点的子节点时,设备可以通过调用innertext函数得到的值是否为空,确定该节点是否存在以文本元素为节点的子节点。如果调用innertext函数得到的值为空,说明该节点不存在以文本元素为节点的子节点,如果调用innertext函数得到的值不为空,说明该节点存在以文本元素为节点的子节点。
在此实施例中,控件元素的描述数据一般是控件元素所在的目标节点的父节点及子节点对应的文本元素中,通过查找目标节点的父节点及子节点对应的文本元素,确定控件元素的描述数据。
在一个实施例中,测试操作可以包括赋值操作,此时步骤105具体包括:
步骤C1、获取测试操作对应的赋值信息。
其中,在对目标界面进行测试时,有些测试操作会涉及赋值操作,有些测试操作不会涉及赋值操作,例如按钮、单选框、复选框不会涉及赋值操作,仅是保持单纯的点击、选择等测试操作,文本框、下拉选择框会涉及赋值操作,例如输入某些信息,选择某个选项等。
在一个实施例中,若使用测试脚本对目标界面进行测试,设备可以之间测试脚本中查找测试操作对应的赋值信息,若测试人员手工对目标界面进行测试,设备可以检测各个控件的输入信息,得到测试操作的赋值信息。
步骤C3、基于该测试操作对应的控件元素的描述数据、该测试操作对应的控件元素的控件类型、该测试操作的测试动作信息、该测试操作的赋值信息,生成该测试操作的对应的测试操作文本。
此步骤与步骤105类似,有关描述数据、控件类型、测试动作信息的描述可以参照步骤105的说明。
在此实施例中,测试操作文本包括四个部分,第一部分为描述该测试操作对应的控件元素的描述数据,第二部分为该测试操作对应的控件元素的控件类型,第三部分为该测试操作的测试动作信息,第四部分为该测试操作的赋值信息。例如,一个文本框前有一个文本元素,内容为“用户名”,测试操作为输入,赋值内容为“Mick”,那么生成的测试操作文本为:“用户名”文本框输入Mick。
在一个实施例中,若设备获取的测试操作的赋值信息不是文本数据,可以将赋值信息转换为文本。转换时,设备可以根据保存的文本与赋值信息的对应关系进行转换,也可以根据转换规则进行转换。
与步骤105中的测试操作文本信息相同,不同的测试动作信息对应的测试操作文本的阅读习惯可能不同,因此设备还可以为不同的动作信息设置不同的测试操作文本生成规则。
在此实施例中,若对目标界面的测试操作包括赋值操作时,生成的测试操作文本需要包括赋值信息。
在一个实施例中,可以使用测试脚本对目标界面进行测试,此时,步骤C1具体包括:
在测试脚本中查找测试动作信息对应的赋值参数,将该赋值参数作为测试操作的赋值信息。
其中,测试脚本的测试操作一般以函数的形式撰写,所测试操作是赋值操作,对应的函数会有参数,该参数即为赋值参数。
例如,测试脚本的一个测试操作为:
driver.findElementBy.id("CS_OBJECTS_HDR_DESCR60")).sendkeys("Test");
该测试操作表示,为标识为“CS_OBJECTS_HDR_DESCR60”控件元素输入“Test”,Test就是赋值参数,是这个测试操作的赋值信息。
在此实施例中,若使用测试脚本对目标界面进行测试,可以直接读取测试脚本获取赋值信息。
在一个实施例中,若测试人员是手工对目标界面进行测试的,此时,步骤C1具体包括:
在对目标界面进行测试的过程中,响应于针对所述目标界面的测试操作,确定所述测试操作的输入信息,并将所述输入信息作为所述测试操作的赋值信息。
在一个实施例中,设备将目标界面显示至显示屏后,测试人员可以对目标界面的各个控件进行操作。之后,设备可以监测各个控件元素是否被操控以及是否在各个控件中输入内容。当检测测试人员对某个控件进行操作后,设备可以检测到测试人员的测试操作,然后响应于该测试操作,确定出该测试操作对控件元素输出的内容。
例如,测试人员在文本框中输入“Mick”,设备可以检测到该文本框的输入事件,确定出该测试操作的测试动作信息为输入,并确定出输入内容为“Mick”。
接下来本申请提供的一个具体实施例进行详细的说明。在此具体实施例中,以使用测试脚本对目标界面进行测试为例。
如下,为本申请示出的测试脚本中包括的六个测试操作:
driver.findElement(By.id("0001")).clear();
driver.findElement(By.id("0001")).sendKeys("_JTC_"+df.format(now));
driver.findElement(By.id("0002")).click();
driver.findElement(By.id("0003")).clear();
driver.findElementBy.id("0003")).sendkeys("Test");
Select(driver.findElement(By.id("0004"))).selectbyVisibleText("HIGHRISK");
其中,上述的测试脚本片段包括的测试操作有clear、sendKeys、click以及select,包括六个测试操作,这两个测试操作的测试动作信息以及对应的操作对象标识信息如下表所示:
表1测试脚本中的操作对象标识信息以及测试动作信息
操作对象标识信息 测试动作信息
id=0001 clear
id=0001 sendKeys
id=0002 click
id=0003 clear
id=0003 sendKeys
id=0004 select
针对上述的每个测试操作,利用上述的方法,获取对应的控件元素、描述数据、赋值信息后,得到上述测试脚本片段的各个测试操作对应的操作对象标识信息、测试动作信息、描述数据、控件类型、赋值信息如下表所示:
表2测试脚本中的各测试操作的相关信息
Figure BDA0003637917880000151
Figure BDA0003637917880000161
最后,生成的测试案例文本如下所示:
步骤1:“营销信息”文本框清空。
步骤2:“营销信息”文本框输入“_JTC_+时间信息”。
步骤3:“查询”按钮点击。
步骤4:“申请原因”文本框清空。
步骤5:“申请原因”文本框输入“test”。
步骤6:“申请类型”选择框选择“HIGHRISK”。
以上是对本申请提供的测试案例文本的生成方法的详细说明,应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的测试案例文本的生成方法的测试案例文本的生成装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个测试案例文本的生成装置实施例中的具体限定可以参见上文中对于测试案例文本的生成方法的限定,在此不再赘述。
在一个实施例中,如图3所示,提供了一种测试案例文本的生成装置,包括:确定模块301、查找模块303、生成模块305和排序模块307,其中:
确定模块301,用于在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
查找模块303,用于在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
生成模块305,用于基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
排序模块307,用于根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
在其中一个实施例中,确定模块301包括读取子单元3011、第一查找子单元3013、第二查找子单元3015,其中,
读取子单元3011(图中未示出),用于在对目标界面进行测试的过程中,从测试脚本中读取并执行测试操作;
第一查找子单元3013(图中未示出),用于针对每个所述测试操作,在所述测试脚本中查找所述测试操作的测试动作信息,并查找所述测试操作的动作信息对应的操作对象标识信息;
第二查找子单元3015(图中未示出),用于根据所述操作对象标识信息,在所述目标界面对应的代码数据中查找所述测试操作对应的控件元素。
在一个实施例中,确定模块301具体用于:
在对目标界面进行测试的过程中,响应于针对所述目标界面的测试操作,确定所述测试操作的测试动作信息以及所述测试操作对应的控件元素。
在一个实施例中,查找模块303具体用于:
在所述目标界面对应的文档对象模型树中,查找所述控件元素所在的目标节点,并确定所述目标节点是否存在以文本元素为节点的子节点;
在所述目标节点存在以文本元素为节点的目标子节点的情况下,将所述目标子节点对应的文本元素作为所述控件元素的描述数据;
在所述目标节点不存在以文本元素为节点的目标子节点的情况下,以所述目标节点为起点,向上逐级查找父级节点,直至查找到存在子节点为文本元素的目标父级节点;将所述目标父级节点的子节点对应的文本元素作为所述控件元素的描述数据。
在一个实施例中,在所述测试操作包括赋值操作的情况下,生成模块305包括获取子单元3051、生成子单元3053,其中:
获取子单元3051(图中未示出),用于获取所述测试操作对应的赋值信息;
生成子单元3053(图中未示出),用于基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息、所述赋值信息,生成所述测试操作对应的测试操作文本。
在一个实施例中,所述获取子单元3051具体用于:
在测试脚本中查找所述测试动作信息对应的赋值参数,将所述赋值参数作为所述测试操作的赋值信息。
在一个实施例中,所述获取子单元3051具体用于:
在对目标界面进行测试的过程中,响应于针对所述目标界面的测试操作,确定所述测试操作的输入信息,并将所述输入信息作为所述测试操作的赋值信息。
上述测试案例文本的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种测试案例文本的生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (11)

1.一种测试案例文本的生成方法,其特征在于,所述方法包括:
在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
2.根据权利要求1所述的方法,其特征在于,所述在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息以及所述测试操作对应的控件元素,包括:
在对目标界面进行测试的过程中,从测试脚本中读取并执行测试操作;
针对每个所述测试操作,在所述测试脚本中查找所述测试操作的测试动作信息,并查找所述测试操作的动作信息对应的操作对象标识信息;
根据所述操作对象标识信息,在所述目标界面对应的代码数据中查找所述测试操作对应的控件元素。
3.根据权利要求1所述的方法,其特征在于,所述在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息以及所述测试操作对应的控件元素,包括:
在对目标界面进行测试的过程中,响应于针对所述目标界面的测试操作,确定所述测试操作的测试动作信息以及所述测试操作对应的控件元素。
4.根据权利要求1所述的方法,其特征在于,在所述代码数据为文档对象模型树的情况下,所述在所述目标界面对应的代码数据中,查找所述控件元素的描述数据,包括:
在所述目标界面对应的文档对象模型树中,查找所述控件元素所在的目标节点,并确定所述目标节点是否存在以文本元素为节点的子节点;
在所述目标节点存在以文本元素为节点的目标子节点的情况下,将所述目标子节点对应的文本元素作为所述控件元素的描述数据;
在所述目标节点不存在以文本元素为节点的目标子节点的情况下,以所述目标节点为起点,向上逐级查找父级节点,直至查找到存在子节点为文本元素的目标父级节点;将所述目标父级节点的子节点对应的文本元素作为所述控件元素的描述数据。
5.根据权利要求1所述的方法,其特征在于,在所述测试操作包括赋值操作的情况下,所述基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本,包括:
获取所述测试操作对应的赋值信息;
基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息、所述赋值信息,生成所述测试操作对应的测试操作文本。
6.根据权利要求5所述的方法,其特征在于,所述获取所述测试操作的赋值信息,包括:
在测试脚本中查找所述测试动作信息对应的赋值参数,将所述赋值参数作为所述测试操作的赋值信息。
7.根据权利要求5所述的方法,其特征在于,所述获取所述测试操作的赋值信息,包括:
在对目标界面进行测试的过程中,响应于针对所述目标界面的测试操作,确定所述测试操作的输入信息,并将所述输入信息作为所述测试操作的赋值信息。
8.一种测试案例文本的生成装置,其特征在于,所述装置包括:
确定模块,用于在对目标界面进行测试的过程中,确定针对所述目标界面的测试操作的测试动作信息、以及所述测试操作对应的控件元素;
查找模块,用于在所述目标界面对应的代码数据中,查找所述控件元素的描述数据;
生成模块,用于基于所述控件元素的描述数据、所述控件元素的控件类型、所述测试动作信息,生成所述测试操作对应的测试操作文本;
排序模块,用于根据预设的测试操作执行顺序,对各所述测试操作对应的测试操作文本进行排序,得到测试案例文本。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
11.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202210507388.9A 2022-05-11 2022-05-11 一种测试案例文本的生成方法、装置 Pending CN114691528A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210507388.9A CN114691528A (zh) 2022-05-11 2022-05-11 一种测试案例文本的生成方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210507388.9A CN114691528A (zh) 2022-05-11 2022-05-11 一种测试案例文本的生成方法、装置

Publications (1)

Publication Number Publication Date
CN114691528A true CN114691528A (zh) 2022-07-01

Family

ID=82144684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210507388.9A Pending CN114691528A (zh) 2022-05-11 2022-05-11 一种测试案例文本的生成方法、装置

Country Status (1)

Country Link
CN (1) CN114691528A (zh)

Similar Documents

Publication Publication Date Title
JP7398068B2 (ja) ソフトウェアテスト
US9424167B2 (en) Automated testing of an application system
US20080120257A1 (en) Automatic online form filling using semantic inference
CN103098051A (zh) 搜索引擎优化助理
CN114049631A (zh) 一种数据标注的方法、装置、计算机设备和存储介质
CN116414815A (zh) 数据质量检测方法、装置、计算机设备和存储介质
CN113342692B (zh) 测试用例自动生成方法、装置、电子设备及存储介质
CN113064811B (zh) 基于工作流的自动化测试方法、装置以及电子设备
US11372750B2 (en) Test script for application under test having abstracted action group instantiations
CN113988029A (zh) 表单生成方法、装置、计算机设备和存储介质
CN113505895A (zh) 一种机器学习引擎服务系统及模型训练方法和配置方法
US10241899B2 (en) Test input information search device and method
US9104573B1 (en) Providing relevant diagnostic information using ontology rules
US6954746B1 (en) Block corruption analysis and fixing tool
Klosterman Data Science Projects with Python: A case study approach to gaining valuable insights from real data with machine learning
CN111859862A (zh) 文本的数据标注方法和装置、存储介质及电子装置
CN114691528A (zh) 一种测试案例文本的生成方法、装置
Mukelabai et al. Featracer: Locating features through assisted traceability
JP2023075780A (ja) プログラム、情報処理方法、及び情報処理装置
KR100888329B1 (ko) 룰을 이용한 실시간 자동 정보 추출 시스템 및 방법
CN113515588A (zh) 表单数据检测方法、计算机装置及存储介质
CN117555955B (zh) 数据转换方法、数据转换装置、计算机设备、存储介质
CN116578583B (zh) 异常语句识别方法、装置、设备、存储介质
CN116701178A (zh) 界面测试方法、装置、计算机设备和存储介质
Rastogi Unified Functional Testing and Automation

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