CN109117372A - 测试代码生成方法、装置、计算机设备和存储介质 - Google Patents

测试代码生成方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN109117372A
CN109117372A CN201810922091.2A CN201810922091A CN109117372A CN 109117372 A CN109117372 A CN 109117372A CN 201810922091 A CN201810922091 A CN 201810922091A CN 109117372 A CN109117372 A CN 109117372A
Authority
CN
China
Prior art keywords
test
control
code
parameter
page assembly
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
CN201810922091.2A
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.)
Ping An One Wallet E Commerce Co Ltd
Original Assignee
Ping An One Wallet E Commerce 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 Ping An One Wallet E Commerce Co Ltd filed Critical Ping An One Wallet E Commerce Co Ltd
Priority to CN201810922091.2A priority Critical patent/CN109117372A/zh
Publication of CN109117372A publication Critical patent/CN109117372A/zh
Pending legal-status Critical Current

Links

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

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)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种测试代码生成方法,包括:编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件;提取预先在所述控件上配置的测试参数进行自动程序设计;根据所述测试参数生成相应页面组件的测试代码。采用本方法能够自动生成与最新的用户界面代码匹配的测试代码。

Description

测试代码生成方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种测试代码生成方法、装置、计算机设备和存储介质。
背景技术
随着移动智能终端的广泛应用,基于Android(移动终端操作系统)或IOS(移动终端操作系统)系统开发的移动应用服务APP(Application,计算机应用程序)正在影响并改变着人们的生活。通常APP在开发完毕后,为了避免用户使用时出现点击某个功能无法响应、用户界面(User Interface,UI)跳转失败或者逻辑错误等问题,在APP发布前必须进行用户界面的功能测试。
传统的用户界面测试框架大多是通过手动编写测试案例代码实现的。由于用户界面功能会根据实际需求不断变化,针对之前版本编写的测试案例由于功能代码变动可能导致不可用。因此,手动编写测试案例的方式存在需要不断的手动更新测试案例代码以适应新版本的应用程序。明显地,传统的手动编写测试案例代码的方式并不适应于应用程序快节奏地更新换代。基于此,探求一种不受用户界面代码更新限制,自动生成与最新的用户界面代码匹配的测试代码的技术方案十分必要。
发明内容
基于此,有必要针对上述技术问题,提供一种能够自动生成与最新的用户界面代码匹配的测试代码的测试代码生成方法、装置、计算机设备和存储介质。
一种测试代码生成方法,包括:
编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件;
提取预先在所述控件上配置的测试参数;
根据所述测试参数生成对应所述页面组件的测试代码。
在一个实施例中,所述编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件,包括:
启动编译进程,从所述编译进程中提取待编译的用户界面源码文件标识;
查找与所述源码文件标识对应的控制开关的状态是否为开启状态;
若是,在编译过程中遍历页面组件中的控件。
在一个实施例中,所述根据所述测试参数生成对应所述页面组件的测试代码,包括:
针对每个所述测试参数,调用与所述测试参数的参数类型对应的测试代码语句;
将所述测试代码语句中的变量替换成对应的所述测试参数的参数值,得到每个所述测试参数对应的测试代码;
组合所述测试参数对应的测试代码生成相应的所述页面组件的测试代码。
在一个实施例中,控件上标记的所述测试参数至少包括控件标识,操作事件和控件执行顺序;
所述根据所述测试参数生成对应所述页面组件的测试代码,包括:
根据所述控件标识和所述操作事件生成对应所述控件的测试代码;
按照所述控件执行顺序组合所有控件的测试代码,生成对应所述页面组件的测试代码。
在一个实施例中,所述方法还包括:控件上标记的所述测试参数还包括测试用例编号;
所述根据所述测试参数生成对应所述页面组件的测试代码,包括:
将对应同一所述测试用例编号的所述控件统计为测试控件集合;
根据所述测试控件集合中所有控件的所述测试参数生成测试用例代码。
在一个实施例中,所述方法还包括:
统计所述页面组件中的控件总数和带有参数标记的控件总数;
根据所述控件总数和所述带有参数标记的控件总数计算所述页面组件的测试控件覆盖率。
一种测试代码生成装置,所述装置包括:
编译模块,用于编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件;
测试参数提取模块,用于提取预先在所述控件上配置的测试参数;
测试代码生成模块,用于根据所述测试参数生成对应所述页面组件的测试代码。
在一个实施例中,所述编译模块,还用于启动编译进程,从所述编译进程中提取待编译的用户界面源码文件标识;查找与所述源码文件标识对应的控制开关状态是否为开启状态;若是,在编译过程中遍历页面组件中的控件。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的方法的步骤。
上述测试代码生成方法、装置、计算机设备和存储介质,通过预先在用户界面源码中标记控件,在用户界面源码文件编译时,遍历提取控件标记并根据标记中的测试条件和操作自动生成测试代码;由于控件标记是基于当前的用户界面代码标记的,根据控件标记生成的测试代码是针对当前的用户界面代码的测试代码,即生成的测试代码能够测试最新版本的用户界面代码,实现了测试代码生成不受用户界面代码更新限制,能够自动生成与最新的用户界面代码相匹配的测试代码。
附图说明
图1为一个实施例中测试代码生成方法的应用场景图;
图2为一个实施例中测试代码生成方法的流程示意图;
图3为一个实施例增加控制开关的代码生成方法所涉及的流程示意图;
图4为另一个实施例中测试代码生成方法的流程示意图;
图5为一个实施例中测试代码生成装置的结构框图;
图6为另一个实施例中测试代码生成装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的测试代码生成方法,可以应用于如图1所示的应用环境中。该应用环境包括终端102和服务器104,其中,终端102和服务器104可通过网络进行通信。终端102向服务器104发送测试代码生成请求,并指定要测试的APP的UI(User Interface,用户界面)源码文件。服务器104编译待测试的UI源代码文件,编译的过程中遍历代码中的控件并提取预先在控件上配置的测试参数,根据测试参数生成测试页面功能的测试代码。根据控件标记生成的测试代码是针对当前的用户界面代码的测试代码,即生成的测试代码能够测试最新版本的用户界面代码,实现了测试代码生成不受用户界面代码更新限制,能够自动生成与最新的用户界面代码相匹配的测试代码。
在一个实施例中,如图2所示,提供了一种用户界面测试代码方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202:编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件。
用户界面是指APP应用程序的显示在终端上的操作界面。本实施例是针对APP的用户界面所涉及的所有的源码文件进行的自动化测试。每个APP应用程序包括多个页面组件,页面组件中的页面经前端的渲染显示在终端上呈现出用户界面。用户界面源码文件是指APP应用程序的页面组件的源码文件。源码文件中只要包含一个页面组件代码即可实施本方法。用户界面源码可以是能实现完整的应用程序页面功能的开发完全的源码文件,可以是仅能实现部分页面功能的开发中的源码文件。
控件指可在窗体上放置的可视化图形“元件”,如按钮、文件编辑框等。控件具有执行功能或通过“事件”引发代码运行并完成响应的功能。
本步骤的具体实现过程为:获取开发人员触发的测试代码生成请求,启动编译器编译请求中指定的用户界面源码文件,将源码文件编译成类文件,遍历类文件中所包含的页面组件下的控件。其中,一个页面组件可以对应一个页面,也可以对应一系列的页面集合,每个页面中包含有多个控件。
步骤204:提取预先在控件上配置的测试参数。
将测试所需要的测试条件和测试逻辑参数化,在开发用户界面源码时,在开发出的页面控件(还可以叫做UI控件,即展现出来的用户界面上的控件)的相应位置上标记该页面控件的测试参数。这些测试参数能够反映测试所需要的测试条件和测试逻辑。
可采用如以下两种方式对需要测试的UI控件进行标记:
一、在XML(Extensible Markup Language,可扩展标记语言)文件里进行控件的测试参数绑定。即在XML文件中对待测试的UI控件添加自定义属性。如可以在控件上面新增“是否添加为自动化控件”、“输入的内容”、“是否有点击操作”等这些属性对应的参数。
二、在源码中通过注解的方式添加控件的测试属性。
首先创建一个注解类,这个类里面包含测试所需要的测试参数,在源码对应的位置对待测试的控件上以标记的形式添加这个注解类。
需要说明的是,可根据测试需要和代码中对控件的定义确定控件所标记的测试参数。如开发时将控件1定义为“按钮”控件,若需要对控件添加“操作事件参数”,则应标记“click”或者“longPress”。
步骤206:根据测试参数生成对应页面组件的测试代码。
从代码中提取的控件的测试参数包含了UI测试所需要的测试条件和测试逻辑,按照预先设定的代码转化规则将提取的测试参数转换成测试代码。
本实施例中,在源码中标记待测试的控件,将测试所需要的条件和操作写在标记中,提取这些标记,根据标记中的测试条件和操作自动生成测试用例代码。实现了任何时候想要对APP的UI代码进行测试时,根据最新的UI代码提取控件标记生成测试代码,执行测试即可实现对最新的代码进行测试。
进一步的,不必在APP所有的UI界面开发完全后才进行测试代码生成,本实施例中的测试代码生成方案由于待测试的用户界面源码文件只要包括一个完整的页面组件代码即可自动生成该页面组件的测对代码,因此,即使在代码编写期也可以运行测试案例进行自测,解决了原来的测试案例老旧和测试流程耗时长的问题。
在一个实施例中,如图3所示,步骤204:编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件,包括:
步骤302:启动编译进程,从编译进程中提取当前编译的用户界面源码文件标识。
步骤304:查找与源码文件标识对应的控制开关的状态配置信息。
步骤306:若状态配置信息显示控制开关的状态为开启状态,在编译过程中遍历页面组件中的控件。
预先为待测试的用户界面源码文件配置控制开关,可通过配置文件设置控制开关的状态,控制开关包括开启和关闭两个状态。可根据需要对一个APP的所有用户界面源码文件配置一个控制开关,也可细粒化的设置多个控制开关,控制开关与对应的用户界面源码文件标识建立关联关系。
本步骤的具体实现方式为:终端获取开发人员触发的代码编译请求,终端或者服务器启动编译进程,编译指定的用户界面代码文件,在编译前或者启动编译器同时,从配置文件中查找是否存在有与待编译的用户界面源码文件标识对应的控制开关,若是,查找对应的控制开关的状态配置信息,若该状态配置信息显示该控制开关为开启状态,则在编译过程中遍历页面组件中的控件。
由于测试代码是在编译过程中生成的,若每次编辑都生成测试代码很可能造成相同的测试代码重复生成。本实施例通过控制开关增加了测试代码生成的可控性。
若编程人员对APP的用户界面源代码进行了更新,或者编程人员对源代码中的UI控件的标记进行了修改,则在配置文件中修改更新的用户界面源代码对应的控制开关的状态为开启状态。若编程人员对APP源码的修改不影响测试代码,则将控制开关的状态修改为关闭状态。本实施例中通过控制开关避免了在没有任何更新的情况下,非必要的重复生成相同的测试代码。
在另一个实施例中,当编程人员保存更新的代码文件时,向终端推送是否做出实质性修改的确认窗口,根据确认信息自动修改该代码文件对应的控制开关,若发生了实质性的修改,则将控制开关设置为开启状态,否则设置为关闭状态。
在一个实施例中,步骤206:根据测试参数生成对饮页面组件的测试代码的更加具体的实现为:针对每个测试参数,调用与测试参数的参数类型对应的测试代码语句;将测试代码语句中的变量替换成对应的测试参数的参数值,得到每个测试参数对应的测试代码;组合测试参数对应的测试代码生成相应的页面组件的测试代码。
提取控件中标记的测试参数,每个控件上标记多个不同类型的测试参数,预先定义不同的测试参数类型对应的测试代码语句。在生成测试代码时,根据测试参数的类型调用相应的测试代码语句,并将测试代码语句中的变量用对应的测试参数值来替换,即实现了基于一测试参数生成一行测试代码。
当每个控件标记多个测试参数,每个页面组件中有多个带有标记的控件时,首先根据每个控件上标记的多个测试参数生成每个控件对应的多行测试代码,在将多个控件的测试代码进行组合,生成页面组件的测试代码。
本实施例中,预先定义测试参数对应的测试代码语句,通过变量替换即可根据测试参数生成测试代码,每个测试参数对应一行测试代码,组合测试参数的测试代码即可生成完整的测试用例代码,使得生成测试代码的效率更高。
在一个实施例中,控件上标记的测试参数至少包括控件标识、操作事件和控件执行顺序。“控件标识”可以是withId(控件id)或者withText(控件上的字符串)或者withClassName(类方法method名称)。在代码层面控件实际上是类方法;“对控件的操作事件”包括点击(click)、输入(inputContent)、长按(longPress)等;“控件执行的顺序”是控件在自动化测试用例中的顺序,并不是展示在页面中的顺序,是执行自动化测试的顺序。
例如,从控件上提取的测试参数可以是如下格式:“@Test(id=R.id.button,isClick=true,index=1)”。具体含义为:控件的id为R.id.button,对该控件赋予“点击”事件,控件执行的顺序是“1”。
进一步的,当控件上标记控件标识,操作事件和控件执行顺序这三个测试参数时,步骤206:根据测试参数生成对应页面组件的测试代码为:根据控件标识和操作事件生成对应控件的测试代码;按照控件执行顺序组合所有控件的测试代码,生成对应页面组件的测试代码。
具体为:调用控件标识对应的第一测试代码语句,将第一测试代码语句中的标识变量替换成控件标识。调用与操作事件对应的第二测试代码语句,将第二测试代码语句中的事件变量替换成标记的操作事件参数。替换后的第一测试代码语句和第二测试代码语句构成了控件的测试代码。获取控件的测试参数中的控件执行顺序参数,根据控件执行顺序参数所指示的先后顺序对控件的测试代码进行排序组合,生成页面组件的测试代码。
在一个实施例中,如图4所示,当控件上标记的测试参数还包括测试用例编号时,测试代码生成方法包括如下步骤:
步骤402:在编译过程中遍历页面组件,提取当前遍历的页面组件中所有带有标记的控件上的测试参数。
步骤404:将对应同一测试用例编号的控件统计为测试控件集合。
步骤406:根据每一个测试控件集合中所有控件的测试参数生成相应的测试用例代码。
步骤408:遍历下一个页面组件,生成下一个页面组件对应的一个或者多个测试用例代码。
本实施例中,通过增加测试用例编号这一测试参数,将页面组件中的控件分组,对应同一测试用例编号的控件统计为一个测试控件集合,基于每个测试控件集合生成一个测试用例代码。即针对一个页面组件可同时生成多个测试用例代码,实现了测试代码的批量生成。
举例来说,如控件1的测试参数1、控件2的测试参数2、控件3的测试参数3、控件4的测试参数4。测试参数1和测试参数3中测试用例编号均为1,则将测试参数1和测试参数3统计为测试参数集合A。测试参数2和测试参数4中的测试用例编号为2,则将测试参数2和测试参数4统计为测试参数集合B。根据测试参数集合A生成测试用例代码A,根据测试参数集合B生成测试用例代码B。
应该理解的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,将批量生成的测试用例与其对应的页面组件标识关联存储,基于此,提供了一种基于Andorid用户界面测试方法,具体为:
启动被测的页面组件,加载相应的页面数据。查找与该页面组件标识关联存储的一个或者多个测试用例,测试用例是基于对页面组件中控件上的标记生成的。执行测试用例方法,反馈测试结果。
本实施例中,建立页面组件与对应的测试用例之间的关联关系,一次启动页面组件,可同时执行针对该页面组件的多个测试用例,页面组件无需重复启动,提高了代码测试效率。
在一个实施例中,测试代码生成方法还包括:
统计页面组件中所所包含的控件总数和带有参数标记的控件总数;根据控件总数和带有参数标记的控件总数计算页面组件的测试控件覆盖率。
具体为,在提取页面组件中带有标记的控件的测试参数的同时,统计页面组件所包含的控件总数以及带有参数标记的控件总数。基于控件参数标记生成的测试代码能够测试所有带有标记的控件。也就是带有参数标记的控件即为测试控件。测试控件覆盖率为带有参数标记的控件总数与控件总数的比值。
在一个实施例中,在生成页面组件的测试代码的同时,输出该测试代码的测试覆盖率。测试覆盖率用于量化测试代码的测试效果。将测试覆盖率小于设定阈值的测试代码自动标记为待调整的测试代码以提示测试人员。
在一个实施例中,提供了一种测试代码生成装置,装置包括编译模块502、测试参数提取模块504和测试代码生成模块506,具体为:
编译模块502,用于编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件。
测试参数提取模块504,用于提取预先在控件上配置的测试参数。
测试代码生成模块506,用于根据测试参数生成对应页面组件的测试代码。
在一个实施例中,编译模块506,还用于启动编译进程,从编译进程中提取待编译的用户界面源码文件标识;查找与源码文件标识对应的控制开关的状态配置信息;若状态配置信息显示控制开关的状态为开启状态,则在编译过程中遍历页面组件中的控件。
在一个实施例中,测试代码生成模块506,还用于针对每个测试参数,调用与测试参数的参数类型对应的测试代码语句;将测试代码语句中的变量替换成对应的测试参数的参数值,得到每个测试参数对应的测试代码;组合测试参数对应的测试代码生成相应的页面组件的测试代码。
在一个实施例中,控件上标记的测试参数至少包括控件标识,操作事件和控件执行顺序;
测试代码生成模块506,还用于根据控件标识和对操作事件生成每个控件的测试代码;按照控件执行顺序组合生成的所有控件的测试代码,生成对应页面组件的测试代码。
在一个实施例中,测试参数包括测试用例编号;
测试代码生成模块506,还用于将对应同一测试用例编号的控件统计为测试控件集合;根据测试控件集合中所有控件的测试参数生成测试用例代码。
在一个实施例中,如图6所示,测试代码生成装置,还包括测试控件覆盖率计算模块602,用于统计页面组件中所所包含的控件总数和带有参数标记的控件总数;根据控件总数和带有参数标记的控件总数计算页面组件的测试控件覆盖率。
关于测试代码生成装置的具体限定可以参见上文中对于测试代码生成方法的限定,在此不再赘述。上述代码生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与终端通过网络连接通信。该计算机程序被处理器执行时以实现一种测试代码生成方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件;提取预先在控件上配置的测试参数;根据测试参数生成对应页面组件的测试代码。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:启动编译进程,从编译进程中提取待编译的用户界面源码文件标识;查找与源码文件标识对应的控制开关的状态配置信息;若状态配置信息显示控制开关的状态为开启状态,则在编译过程中遍历页面组件中的控件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:针对每个测试参数,调用与测试参数的参数类型对应的测试代码语句;将测试代码语句中的变量替换成对应的测试参数的参数值,得到每个测试参数对应的测试代码;组合测试参数对应的测试代码生成相应的页面组件的测试代码。
在一个实施例中,控件上标记的测试参数至少包括控件标识,操作事件和控件执行顺序;处理器执行计算机程序时还实现以下步骤:根据控件标识和对操作事件生成每个控件的测试代码;按照控件执行顺序组合生成的所有控件的测试代码,生成对应页面组件的测试代码。
在一个实施例中,测试参数包括测试用例编号;处理器执行计算机程序时还实现以下步骤:根据测试参数生成相应页面组件的测试代码,包括:将对应同一测试用例编号的控件统计为测试控件集合;根据测试控件集合中所有控件的测试参数生成测试用例代码。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:统计页面组件中所所包含的控件总数和带有参数标记的控件总数;根据控件总数和带有参数标记的控件总数计算页面组件的测试控件覆盖率。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件;提取预先在控件上配置的测试参数;根据测试参数生成对应页面组件的测试代码。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:启动编译进程,从编译进程中提取待编译的用户界面源码文件标识;查找与源码文件标识对应的控制开关的状态配置信息;若状态配置信息显示控制开关的状态为开启状态,则在编译过程中遍历页面组件中的控件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:针对每个测试参数,调用与测试参数的参数类型对应的测试代码语句;将测试代码语句中的变量替换成对应的测试参数的参数值,得到每个测试参数对应的测试代码;组合测试参数对应的测试代码生成相应的页面组件的测试代码。
在一个实施例中,控件上标记的测试参数至少包括控件标识,操作事件和控件执行顺序;计算机程序被处理器执行时还实现以下步骤:根据控件标识和对操作事件生成每个控件的测试代码;按照控件执行顺序组合生成的所有控件的测试代码,生成对应页面组件的测试代码。
在一个实施例中,测试参数包括测试用例编号;计算机程序被处理器执行时还实现以下步骤:根据测试参数生成相应页面组件的测试代码,包括:将对应同一测试用例编号的控件统计为测试控件集合;根据测试控件集合中所有控件的测试参数生成测试用例代码。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:统计页面组件中所所包含的控件总数和带有参数标记的控件总数;根据控件总数和带有参数标记的控件总数计算页面组件的测试控件覆盖率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种测试代码生成方法,包括:
编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件;
提取预先在所述控件上配置的测试参数;
根据所述测试参数生成对应所述页面组件的测试代码。
2.根据权利要求1所述的方法,其特征在于,所述编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件,包括:
启动编译进程,从所述编译进程中提取待编译的用户界面源码文件标识;
查找与所述源码文件标识对应的控制开关的状态配置信息;
若所述状态配置信息显示所述控制开关的状态为开启状态,则在编译过程中遍历页面组件中的控件。
3.根据权利要求1所述的方法,其特征在于,所述根据所述测试参数生成对应所述页面组件的测试代码,包括:
针对每个所述测试参数,调用与所述测试参数的参数类型对应的测试代码语句;
将所述测试代码语句中的变量替换成对应的所述测试参数的参数值,得到每个所述测试参数对应的测试代码;
组合所述测试参数对应的测试代码生成相应的所述页面组件的测试代码。
4.根据权利要求3所述的方法,其特征在于,控件上标记的所述测试参数至少包括控件标识,操作事件和控件执行顺序;
所述根据所述测试参数生成对应所述页面组件的测试代码,包括:
根据所述控件标识和所述操作事件生成对应所述控件的测试代码;
按照所述控件执行顺序组合所有控件的测试代码,生成对应所述页面组件的测试代码。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:控件上标记的所述测试参数还包括测试用例编号;
所述根据所述测试参数生成对应所述页面组件的测试代码,包括:
将对应同一所述测试用例编号的所述控件统计为测试控件集合;
根据所述测试控件集合中所有控件的所述测试参数生成测试用例代码。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
统计所述页面组件中的控件总数和带有参数标记的控件总数;
根据所述控件总数和所述带有参数标记的控件总数计算所述页面组件的测试控件覆盖率。
7.一种测试代码生成装置,其特征在于,所述装置包括:
编译模块,用于编译待测试的用户界面源码文件,在编译过程中遍历页面组件中的控件;
测试参数提取模块,用于提取预先在所述控件上配置的测试参数;
测试代码生成模块,用于根据所述测试参数生成对应所述页面组件的测试代码。
8.根据权利要求7所述的装置,其特征在于,所述编译模块,还用于启动编译进程,从所述编译进程中提取待编译的用户界面源码文件标识;查找与所述源码文件标识对应的控制开关状态是否为开启状态;若是,在编译过程中遍历页面组件中的控件。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN201810922091.2A 2018-08-14 2018-08-14 测试代码生成方法、装置、计算机设备和存储介质 Pending CN109117372A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810922091.2A CN109117372A (zh) 2018-08-14 2018-08-14 测试代码生成方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810922091.2A CN109117372A (zh) 2018-08-14 2018-08-14 测试代码生成方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN109117372A true CN109117372A (zh) 2019-01-01

Family

ID=64852360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810922091.2A Pending CN109117372A (zh) 2018-08-14 2018-08-14 测试代码生成方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN109117372A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597720A (zh) * 2019-09-04 2019-12-20 香港乐蜜有限公司 一种应用程序的测试方法、装置、电子设备及存储介质
CN111124914A (zh) * 2019-12-20 2020-05-08 广州品唯软件有限公司 自动化测试预编译方法、终端及计算机可读存储介质
CN111694758A (zh) * 2020-08-04 2020-09-22 西安闻泰电子科技有限公司 测试代码自动生成方法、装置、计算机设备和存储介质
CN111782291A (zh) * 2020-06-12 2020-10-16 京东数字科技控股有限公司 一种测试页面的启动方法和装置
CN112817864A (zh) * 2021-02-23 2021-05-18 北京字节跳动网络技术有限公司 一种测试文件的生成方法、装置、设备及介质
CN113377672A (zh) * 2021-06-30 2021-09-10 中国农业银行股份有限公司 测试方法、装置及设备
CN117724988A (zh) * 2024-02-18 2024-03-19 杭州玳数科技有限公司 一种基于Testing Library的UI组件库测试方法、存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339930A1 (en) * 2012-06-18 2013-12-19 South Dakota Board Of Regents Model-based test code generation for software testing
CN104834600A (zh) * 2015-04-28 2015-08-12 南京邮电大学 一种测试Android应用控件的方法
CN106326121A (zh) * 2016-08-22 2017-01-11 上海亿账通互联网科技有限公司 测试脚本的自动生成方法及终端
CN107729230A (zh) * 2017-09-18 2018-02-23 郑州云海信息技术有限公司 一种基于控件模式下的web自动化测试装置及测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339930A1 (en) * 2012-06-18 2013-12-19 South Dakota Board Of Regents Model-based test code generation for software testing
CN104834600A (zh) * 2015-04-28 2015-08-12 南京邮电大学 一种测试Android应用控件的方法
CN106326121A (zh) * 2016-08-22 2017-01-11 上海亿账通互联网科技有限公司 测试脚本的自动生成方法及终端
CN107729230A (zh) * 2017-09-18 2018-02-23 郑州云海信息技术有限公司 一种基于控件模式下的web自动化测试装置及测试方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597720A (zh) * 2019-09-04 2019-12-20 香港乐蜜有限公司 一种应用程序的测试方法、装置、电子设备及存储介质
CN111124914A (zh) * 2019-12-20 2020-05-08 广州品唯软件有限公司 自动化测试预编译方法、终端及计算机可读存储介质
CN111124914B (zh) * 2019-12-20 2023-10-24 广州品唯软件有限公司 自动化测试预编译方法、终端及计算机可读存储介质
CN111782291A (zh) * 2020-06-12 2020-10-16 京东数字科技控股有限公司 一种测试页面的启动方法和装置
CN111782291B (zh) * 2020-06-12 2024-06-18 京东科技控股股份有限公司 一种测试页面的启动方法和装置
CN111694758A (zh) * 2020-08-04 2020-09-22 西安闻泰电子科技有限公司 测试代码自动生成方法、装置、计算机设备和存储介质
CN111694758B (zh) * 2020-08-04 2024-01-16 西安闻泰电子科技有限公司 测试代码自动生成方法、装置、计算机设备和存储介质
CN112817864A (zh) * 2021-02-23 2021-05-18 北京字节跳动网络技术有限公司 一种测试文件的生成方法、装置、设备及介质
CN112817864B (zh) * 2021-02-23 2024-04-16 北京字节跳动网络技术有限公司 一种测试文件的生成方法、装置、设备及介质
CN113377672A (zh) * 2021-06-30 2021-09-10 中国农业银行股份有限公司 测试方法、装置及设备
CN113377672B (zh) * 2021-06-30 2024-04-30 中国农业银行股份有限公司 测试方法、装置及设备
CN117724988A (zh) * 2024-02-18 2024-03-19 杭州玳数科技有限公司 一种基于Testing Library的UI组件库测试方法、存储介质及电子设备
CN117724988B (zh) * 2024-02-18 2024-05-10 杭州玳数科技有限公司 一种基于Testing Library的UI组件库测试方法、存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN109117372A (zh) 测试代码生成方法、装置、计算机设备和存储介质
CN108491331B (zh) 软件测试方法、装置、设备和计算机存储介质
CN104679658B (zh) Web页面的测试方法和系统
CN109669688A (zh) 基于可视化的软件开发方法、装置、终端设备及存储介质
CN104484269A (zh) 一种自动生成测试脚本的方法
CN109739494B (zh) 一种基于Tree-LSTM的API使用代码生成式推荐方法
CN106293664A (zh) 代码生成方法及装置
CN108345532A (zh) 一种自动化测试用例生成方法和装置
CN110109897A (zh) 数据库脚本生成方法、装置、计算机设备和存储介质
CN101071378A (zh) 源代码生成方法、设备和程序
CN104035873A (zh) 测试代码生成方法及生成装置
CN102375778A (zh) 实现数字信号处理器自动测试的方法及系统
CN110162457A (zh) 用户界面的测试方法、装置、设备及存储介质
CN104268072A (zh) 图形化脚本编辑器及快速开发通信设备测试脚本的方法
CN106326120B (zh) 一种应用软件的回归测试方法及装置、电子设备
CN102567201A (zh) 跨模型的图形用户界面测试脚本自动修复方法
CN104750606A (zh) 一种基于反射的自动化测试方法
CN109117164A (zh) 基于关键元素差异性分析的微服务更新方法及系统
CN103631590A (zh) 自动化测试脚本的编辑方法
CN112486828A (zh) 测试用例生成方法、装置、计算机设备和存储介质
CN109408372A (zh) 公共组件测试方法、装置、计算机设备和存储介质
CN103631719A (zh) 一种Web自动化测试方法和装置
CN107526679A (zh) 自动化测试框架、基于其上的自动化测试方法、存储介质和计算机设备
CN110059002A (zh) 测试数据的生成方法、测试设备、存储介质及装置
CN105760300A (zh) 一种stk/utk业务的自动化测试方法及测试系统

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190101

RJ01 Rejection of invention patent application after publication