CN108509331A - 测试方法和装置 - Google Patents
测试方法和装置 Download PDFInfo
- Publication number
- CN108509331A CN108509331A CN201710109365.1A CN201710109365A CN108509331A CN 108509331 A CN108509331 A CN 108509331A CN 201710109365 A CN201710109365 A CN 201710109365A CN 108509331 A CN108509331 A CN 108509331A
- Authority
- CN
- China
- Prior art keywords
- test
- function
- keyword
- class
- case
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test 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
技术领域
本发明涉及自动化测试技术领域,特别是涉及一种测试方法和装置。
背景技术
随着计算机技术的发展和用户需求的变化,计算机程序的更迭变化快,需要通过自动化测试手段来保证计算机程序的质量。自动化测试通过代码模拟用户对被测程序的一系列操作过程,如键盘输入、点击菜单、弹出对话框、显示图像或者其它界面控件的变化等,以实现对被测程序的测试。
目前进行自动化测试,需要针对被测程序的每个需要测试的功能编写测试用例,执行测试用例来模拟用户操作,就可以实现对被测程序的测试。
然而,目前测试用例中的测试逻辑需要复杂的代码来实现,针对不同的测试需求需要编写不同的测试用例。而且当被测程序的界面变化较大时,需要对测试用例进行大幅度调整,因此目前自动化测试测试用例维护便利性差。
发明内容
基于此,有必要针对目前自动化测试维护便利性差的问题,提供一种测试方法和装置。
一种测试方法,包括:
获取测试命令;
根据所述测试命令,执行测试用例函数;
在执行所述测试用例函数时,触发执行所述测试用例函数所包括的关键字;
在执行所述关键字时,查询与执行的所述关键字关联的测试实现函数;
执行查询到的所述测试实现函数。
一种测试装置,包括:
测试用例模块,用于获取测试命令;根据所述测试命令,执行测试用例函数;在执行所述测试用例函数时,触发执行所述测试用例函数所包括的关键字;
测试上下文模块,用于在执行所述关键字时,查询与执行的所述关键字关联的测试实现函数;
测试实现模块,用于执行查询到的所述测试实现函数。
上述测试方法和装置,获取到测试命令后,可以触发执行测试用例函数中的关键字,在执行关键字时,查询到该关键字相关联的测试实现函数并执行,以完成测试。其中测试用例函数表示测试用例,当测试需求变化时,在测试用例函数中通过关键字维度上的修改,就可以实现测试用例的调整,测试用例维护便利性高。必要时,通过修改测试实现函数的测试逻辑,所有包括该测试实现函数所关联的关键字的测试用例函数的测试逻辑就会相应的改变,通过测试实现函数的复用进一步提高了测试用例维护便利性。
附图说明
图1为一个实施例中用于实现测试方法的电子设备的内部结构示意图;
图2为一个实施例中实现测试方法的测试框架的类图;
图3为一个实施例中测试方法的流程示意图;
图4为一个实施例中在执行查询到的测试实现函数时,嵌套执行该测试实现函数所指定的测试实现函数的步骤的流程示意图;
图5为另一个实施例中测试方法的流程示意图;
图6为一个实施例中被测程序更新前的物品发布页面之一示意图;
图7为一个实施例中被测程序更新前的物品发布页面之二示意图
图8为一个实施例中被测程序更新后的物品发布页面的示意图;
图9为一个实施例中测试装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中用于实现测试方法的电子设备的内部结构示意图。参照图1,该电子设备包括通过***总线连接的处理器、非易失性存储介质、内存储器、显示屏和输入装置。其中,电子设备的非易失性存储介质存储有操作***,还存储有一种测试装置,该测试装置用于实现一种测试方法。电子设备的处理器用于提供计算和控制能力,支撑整个电子设备的运行。电子设备中的内存储器为非易失性存储介质中的测试装置的运行提供环境。该内存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种测试方法。电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。该电子设备可以是个人计算机或者移动设备,移动设备包括手机、平板电脑、个人数字助理或者穿戴式设备等中的至少一种。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2为一个实施例中实现测试方法的测试框架的类图。测试框架是结构化的计算机可执行代码的集合,用以支持测试方法的执行。参照图2,该测试框架包括测试用例类(如图2中A**Test、B**Test、……Z**Test等)、测试用例基类(如BaseTest)、测试上下文类(如TestContext)、关键字集合(如Key)、测试实现类(如Login、Enter**Page、……Finish**Page等测试动作词所表示的类)、测试实现基类(如FrameCommand)和测试驱动接口(如Command)。
其中,测试用例类继承自测试用例基类。测试用例类包括一个或多于一个的测试用例函数,每个测试用例函数可表示一个测试用例。测试用例函数采用关键字驱动的方式编写。比如execute(Key.EnterPublishPage),其中execute()表示关键字驱动函数,Key.EnterPublishPage表示关键字集合Key中的关键字EnterPublishPage。
测试用例基类供测试用例类继承,并依赖于测试上下文类。测试用例基类可用于封装关键字驱动函数execute(Key,Object…params),其中Key表示关键字,Object表示操作对象,params表示参数,且操作对象和参数可选。测试用例基类可用于实现启动被测程序的交互组件(如安卓操作***下的Activity)。测试用例基类还可以实现测试前处理类(BeforeClass)和/或测试后处理类(AfterClass)。在测试命令的运行周期内,测试前处理类在测试命令开始执行时执行一次,测试后处理类在测试命令结束执行时执行一次。
测试上下文类依赖于关键字集合和测试实现类。测试上下文类用于将关键字集合中的关键字与测试动作词关联,进而与该测试动作词所表示的测试实现类中的测试实现函数关联,使得通过执行关键字就能够调起相关联的测试实现函数。关键字集合中采用枚举方式定义关键字。
测试驱动接口向测试实现类提供测试动作驱动函数execute(Object…params),其中Object表示操作对象,params表示参数,且操作对象和参数可选。测试动作驱动函数用于驱动测试实现类中测试实现函数的执行。测试驱动接口可用于直接与交互组件交互,实现测试动作。
测试实现基类供测试实现类继承,并依赖于测试驱动接口。测试实现基类封装了另一种关键字驱动函数execute(Key,Object…params),用于实现在一个测试实现类中的测试实现函数中,通过执行关键字,来执行其它的测试实现类中的测试实现函数。
测试实现类继承自测试实现基类,测试实现类封装有测试实现函数。测试实现函数可调用测试驱动接口的测试动作驱动函数来实现相应的测试动作。测试实现类与测试动作词(Word)对应,测试动作词分为复合测试动作词(ActionWord)和独立测试动作词(KeyWord)。复合测试动作词对应的测试实现类中的测试实现函数中,可包括独立测试动作词所对应的关键字,使得在执行该复合测试动作词对应的测试实现类中的测试实现函数时,能够触发执行该测试实现函数所包括的关键字,从而触发执行该关键字对应的独立测试动作词对应的测试实现类中的测试实现函数。
图3为一个实施例中测试方法的流程示意图。本实施例主要以该方法应用于上述图1中的电子设备来举例说明。参照图3,该方法具体包括如下步骤:
S302,获取测试命令。
其中,测试命令是启动对被测程序的测试的命令。测试命令可通过输入命令字符串、控件事件触发或者定时触发等多种方式触发。在安卓操作***下,测试命令具体可以是启动Instrument(一种测试工具)的命令。
S304,根据测试命令,执行测试用例函数。
其中,测试用例函数表示测试用例。测试用例函数可包括于测试用例类。测试用例类是面向对象程序设计语言中的类,是对某种类型的测试用例对象定义变量和函数的原型。
在一个实施例中,电子设备可在获取到测试命令后,响应于该测试命令,根据该测试命令所指定的测试用例类生成测试用例对象并运行,使得该测试用例对象在运行时触发执行测试用例类中定义的测试用例函数。
在一个实施例中,电子设备可在获取到测试命令后,响应于该测试命令,根据当前测试场景中所有的测试用例类生成相应的测试用例对象并运行,使得该测试用例对象在运行时触发执行测试用例类中定义的测试用例函数。
S306,在执行测试用例函数时,触发执行测试用例函数所包括的关键字。
其中,关键字是对测试动作的抽象表示。关键字可定义在定义集合Key中。关键字的执行,是通过关键字来驱动测试动作的动作。关键字的执行可通过预先定义的关键字驱动函数来实现。
在一个实施例中,电子设备在执行测试用例函数时,可按照执行的测试用例函数中关键字的执行顺序,依次触发测试用例函数所包括的各关键字的执行。依次执行的关键字所实现的测试动作构成完整的测试过程。
在一个实施例中,电子设备在执行测试用例函数时,可调用由该测试用例函数继承自测试用例基类的关键字驱动函数,触发执行测试用例函数所包括的关键字。
在一个实施例中,电子设备在执行测试用例函数时,可触发对测试用例函数所包括的关键字,按照该测试用例函数所包括的与该关键字对应的参数执行。其中,参数是测试关键字所表示的测试动作所需的数据,具体可以是模拟的用户输入数据。
举例说明:假设一个名为PublishGoodsTests且继承自AppTestCase的测试用例类,其内容如下:
其中,“@”表示批注,“//”表示注释。execute()是关键字驱动函数,用于触发执行相应的关键字。Key.X则表示属于关键字集合Key的关键字X。
测试用例类中每个关键字表示相应的测试动作,如“EnterPublishPage”表示进入物品发布页面,“PublishGoodsName”表示输入物品名称,“PublishGoodsDesc”表示输入物品描述,PulishGoodsPic表示选择物品照片,PublishGoodsPrice表示输入物品价格,“PublishGoodsLocation”表示选择行政区域,“PublishGoodsCategory”表示选择物品分类,PublishGoodsAddition表示选择个性标签,FinishPublishGoods表示完成物品发布。
进入物品发布页面、输入物品名称、输入物品描述、选择物品照片、输入物品价格、选择行政区域、选择物品分类、选择个性标签以及完成物品发布,构成了对物品发布功能的整个测试过程。
S308,在执行关键字时,查询与执行的关键字关联的测试实现函数。
其中,测试实现函数是实现测试动作的函数。比如对于关键字PublishGoodsName,需要实现输入物品名称的测试动作,需要实现在发布页面中选中用于输入物品名称的输入框的测试动作,然后执行在选中的输入框中填入关键字PublishGoodsName对应的参数“物品名称”的测试动作,这些测试动作可通过一个或多于一个的测试实现函数来实现。一个关键字可以关联一个或多于一个的测试实现函数。
具体地,电子设备在根据关键字驱动函数执行关键字时,可根据预设的关键字与测试实现函数的关联关系,查询执行的关键字所关联的测试实现函数。
在一个实施例中,电子设备在执行关键字时,可根据测试上下文类中定义的关键字与测试动作词的关联关系,查询到执行的关键字所关联的测试动作词,从而确定以查询到的测试动作词命名的测试实现类,从而将该测试实现类所包括的测试实现函数,确定为与执行的关键字关联的测试实现函数。
S310,执行查询到的测试实现函数。
具体地,电子设备通过执行测试实现函数,实现相应的测试动作。电子设备执行一系列的关键字,从而执行一系列的测试动作,一系列的测试动作构成对被测程序的测试过程。
在一个实施例中,步骤S310包括:调用测试驱动接口所实现的驱动函数,执行测试实现函数。其中,驱动函数(如execute(Object…params))用于实现对测试实现函数的执行。
在一个实施例中,步骤S310包括:获取与执行的关键字对应的参数,根据获取的参数执行查询到的测试实现函数。比如execute(Key.PublishGoodsPrice,"1300","1650","0"),其中的参数1300、1650和0,分别表示物品售价、物品原价和运费,执行关键字Key.PublishGoodsPrice,将触发按照这些参数执行该关键字所关联的测试实现函数,向被测程序的售价输入框、原价输入框和运费输入框中分别输入1300、1650和0。
上述测试方法,获取到测试命令后,可以触发执行测试用例函数中的关键字,在执行关键字时,查询到该关键字相关联的测试实现函数并执行,以完成测试。其中测试用例函数表示测试用例,当测试需求变化时,在测试用例函数中通过关键字维度上的修改,就可以实现测试用例的调整,测试用例维护便利性高。必要时,通过修改测试实现函数的测试逻辑,所有包括该测试实现函数所关联的关键字的测试用例函数的测试逻辑就会相应的改变,通过测试实现函数的复用进一步提高了测试用例维护便利性。
在一个实施例中,步骤S304包括:根据测试命令,执行测试前处理类所封装的测试前处理逻辑之后,执行测试用例函数。
其中,测试前处理类(BeforeClass)是定义测试前处理逻辑的类。测试前处理类可由测试用例基类(BaseTest)实现。测试前处理逻辑是电子设备在测试被测程序前所执行的计算机处理逻辑。测试前处理逻辑可由用户自定义。测试前处理逻辑具体可以是记录被测程序测试前状态的逻辑,或者可以是操作测试用例类的逻辑。
具体地,电子设备可响应于测试命令,执行测试用例基类所实现的测试前处理类中封装的测试前处理逻辑,并在执行测试前处理逻辑完毕后执行测试用例函数。测试前处理类可根据需要开启或关闭。测试前处理逻辑在测试命令的整个生命周期内,仅在测试命令触发时执行一次。
本实施例中,可以根据需要,在触发测试测试命令后且在实现测试前,执行测试前处理逻辑,从而满足在测试前进行特定的处理的需求,使得测试功能更加多样化。
在一个实施例中,该测试方法还包括:在将各测试用例函数所包括的各关键字和相关联的各测试实现函数执行完毕后,执行测试后处理类所封装的测试后处理逻辑。
其中,测试后处理类(BeforeClass)是定义测试后处理逻辑的类。测试后处理类可由测试用例基类(BaseTest)实现。测试后处理逻辑是电子设备在测试被测程序后所执行的计算机处理逻辑。测试后处理逻辑可由用户自定义。测试后处理逻辑具体可以是记录被测程序测试后状态的逻辑。
具体地,电子设备可响应于测试命令,执行本次测试所有需执行的测试用例函数,从而触发执行所有需执行的测试用例函数中的关键字,从而执行相应的所有测试实现函数,执行完毕后,执行测试用例基类所实现的测试后处理类中封装的测试后处理逻辑。
本实施例中,可以根据需要,在实现测试后,执行测试后处理逻辑,从而满足在测试后进行特定的处理的需求,使得测试功能更加多样化。
在一个实施例中,步骤S304包括:根据测试命令,执行测试前处理类所封装的测试前处理逻辑之后,执行测试用例函数。且步骤S310之后,该测试方法还包括:在将各测试用例函数所包括的各关键字和相关联的各测试实现函数执行完毕后,执行测试后处理类所封装的测试后处理逻辑。
在一个实施例中,该测试方法还包括在执行查询到的测试实现函数时,嵌套执行该测试实现函数所指定的测试实现函数的步骤,参照图4,具体包括如下步骤:
S402,在执行查询到的测试实现函数时,触发执行查询到的测试实现函数所包括的关键字。
具体地,电子设备在执行查询到的测试实现函数时,若该测试实现函数不包括关键字,则直接执行该测试实现函数;若该测试实现函数包括关键字,则触发执行该测试实现函数所包括的关键字。其中,关键字的执行可通过预先定义的关键字驱动函数来实现。
在一个实施例中,步骤S402包括:在执行查询到的测试实现函数时,根据查询到的测试实现函数所在的测试实现类所继承的测试实现基类中封装的关键字驱动函数,触发执行查询到的测试实现函数所包括的关键字。
其中,查询到的测试实现函数存在于一个测试实现类中,该测试实现类继承自测试实现基类,该测试实现基类中封装有关键字驱动函数,如execute(Key,Object…params),通过该关键字驱动函数,驱动对测试实现函数所包括的关键字的执行。
在一个实施例中,查询到的测试实现函数关联于包括于测试用例函数的关键字,该关键字关联于复合测试动作词,该复合测试动作词关联于查询到的测试实现函数所在的测试实现类。
S404,在执行测试实现函数所包括的关键字时,查询与测试实现函数所包括的关键字关联的测试实现函数。
具体地,电子设备在根据关键字驱动函数执行关键字时,可根据预设的关键字与测试实现函数的关联关系,查询执行的关键字所关联的测试实现函数。
在一个实施例中,电子设备在执行测试实现函数所包括的关键字时,可根据测试上下文类中定义的关键字与测试动作词的关联关系,查询到执行的关键字所关联的测试动作词,从而确定以查询到的测试动作词命名的测试实现类,从而将该测试实现类所包括的测试实现函数,确定为与测试实现函数所包括的关键字关联的测试实现函数。
S406,执行查询到的与测试实现函数所包括的关键字关联的测试实现函数。
具体地,电子设备通过执行测试实现函数,实现相应的测试动作。电子设备执行一系列的关键字,从而执行一系列的测试动作,一系列的测试动作构成对被测程序的测试过程。
在一个实施例中,步骤S406包括:调用测试驱动接口所实现的驱动函数,执行查询到的与测试实现函数所包括的关键字关联的测试实现函数。
在一个实施例中,步骤S406包括:获取查询到的与测试实现函数所包括的关键字对应的参数,根据获取的参数执行查询到的与测试实现函数所包括的关键字关联的测试实现函数。
本实施例中,在执行查询到的测试实现函数时,嵌套执行该测试实现函数所指定的测试实现函数,可以实现需要复用的测试场景,进一步提高测试用例维护的便利性。
如图5所示,在一个实施例中,一种测试方法,具体包括如下步骤:
S502,获取测试命令。
S504,根据测试命令,执行测试用例基类实现的测试前处理类中封装的测试前处理逻辑。
S506,在执行测试前处理逻辑之后,执行包括于测试用例类的测试用例函数。
S508,在执行测试用例函数时,根据测试用例类所继承的测试用例基类中封装的关键字驱动函数,触发执行测试用例函数所包括的关键字。
S510,在执行关键字时,根据测试上下文类中定义的关键字与测试动作词的关联关系,查询到执行的关键字所关联的测试动作词。
S512,确定以查询到的测试动作词命名的测试实现类,从而将该测试实现类所包括的测试实现函数,确定为与执行的关键字关联的测试实现函数。
S514,调用测试驱动接口所实现的驱动函数,以执行确定的测试实现函数时,根据确定的测试实现函数所在的测试实现类所继承的测试实现基类中封装的关键字驱动函数,触发执行确定的测试实现函数所包括的关键字。
S516,在执行测试实现函数所包括的关键字时,查询与测试实现函数所包括的关键字关联的测试实现函数。
S518,调用测试驱动接口所实现的驱动函数,以执行与确定的测试实现函数所包括的关键字关联的测试实现函数。
S520,在将各测试用例函数所包括的各关键字和相关联的各测试实现函数执行完毕后,执行测试用例基类实现的测试后处理类所封装的测试后处理逻辑。
本实施例中,获取到测试命令后,可以触发执行测试用例函数中的关键字,在执行关键字时,查询到该关键字相关联的测试实现函数并执行,以完成测试。其中测试用例函数表示测试用例,当测试需求变化时,在测试用例函数中通过关键字维度上的修改,就可以实现测试用例的调整,测试用例维护便利性高。必要时,通过修改测试实现函数的测试逻辑,所有包括该测试实现函数所关联的关键字的测试用例函数的测试逻辑就会相应的改变,通过测试实现函数的复用进一步提高了测试用例维护便利性。
而且,对于测试实现函数中的关键字,关键字驱动函数封装于测试实现基类中,供测试实现类继承,从而驱动执行测试实现函数所指定的测试实现函数,代码高度复用,且便于对测试实现函数的维护。对于测试用例函数所包括的关键字,关键字驱动函数封装于测试用例基类中,供测试用例类继承,从而驱动执行测试用例函数中的关键字,代码高度复用,且便于对测试用例函数的维护。
举例说明,假设被测程序更新前,被测程序需要经过如图6和图7两个页面实现物品发布功能。具体在如图6所示的页面中填写物品名称、物品描述、选择照片、填写物品售价、物品原价以及运费,再进入如图7所示的页面后,继续填写物品分类、选择行政区域并选择个性标签。
将被测程序更新后,被测程序仅需要经过如图8所示的一个页面,就可以实现物品发布功能。这种情况下,针对物品发布功能的测试用例函数也不需要进行大的修改,而仅需要把关联的测试实现类中的一些代码进行细微调整。当被测程序变更时,首先可以查看旧的测试用例函数是否有可复用的内容,如果有则直接复用,如果需要新的测试动作,则通过关键字驱动函数将新的关键字加入测试用例函数即可,可以实现快速地调整测试用例函数,提高测试效率。
如图9所示,在一个实施例中,提供了一种测试装置900,包括:测试用例模块901、测试上下文模块902和测试实现模块903。
测试用例模块901,用于获取测试命令;根据测试命令,执行测试用例函数;在执行测试用例函数时,触发执行测试用例函数所包括的关键字。
测试上下文模块902,用于在执行关键字时,查询与执行的关键字关联的测试实现函数。
测试实现模块903,用于执行查询到的测试实现函数。
上述测试装置900,获取到测试命令后,可以触发执行测试用例函数中的关键字,在执行关键字时,查询到该关键字相关联的测试实现函数并执行,以完成测试。其中测试用例函数表示测试用例,当测试需求变化时,在测试用例函数中通过关键字维度上的修改,就可以实现测试用例的调整,测试用例维护便利性高。必要时,通过修改测试实现函数的测试逻辑,所有包括该测试实现函数所关联的关键字的测试用例函数的测试逻辑就会相应的改变,通过测试实现函数的复用进一步提高了测试用例维护便利性。
在一个实施例中,测试用例模块901还用于根据测试命令,执行测试前处理类所封装的测试前处理逻辑之后,执行测试用例函数;和/或,测试用例模块901还用于在将各测试用例函数所包括的各关键字和相关联的各测试实现函数执行完毕后,执行测试后处理类所封装的测试后处理逻辑。
本实施例中,可以根据需要,在触发测试测试命令后且在实现测试前,执行测试前处理逻辑,和/或,在实现测试后,执行测试后处理逻辑,从而满足在测试后进行特定的处理的需求,使得测试功能更加多样化。
在一个实施例中,测试实现模块903还用于在执行查询到的测试实现函数时,触发执行查询到的测试实现函数所包括的关键字;在执行测试实现函数所包括的关键字时,查询与测试实现函数所包括的关键字关联的测试实现函数;执行查询到的与测试实现函数所包括的关键字关联的测试实现函数。
本实施例中,在执行查询到的测试实现函数时,嵌套执行该测试实现函数所指定的测试实现函数,可以实现需要复用的测试场景,进一步提高测试用例维护的便利性。
在一个实施例中,测试实现模块903还用于在执行查询到的测试实现函数时,根据查询到的测试实现函数所在的测试实现类所继承的测试实现基类中封装的关键字驱动函数,触发执行查询到的测试实现函数所包括的关键字。
本实施例中,对于测试实现函数中的关键字,关键字驱动函数封装于测试实现基类中,供测试实现类继承,从而驱动执行测试实现函数所指定的测试实现函数,代码高度复用,且便于对测试实现函数的维护。
在一个实施例中,测试用例模块901还用于执行包括于测试用例类的测试用例函数;还用于在执行测试用例函数时,根据测试用例类所继承的测试用例基类中封装的关键字驱动函数,触发执行测试用例函数所包括的关键字。
本实施例中,对于测试用例函数所包括的关键字,关键字驱动函数封装于测试用例基类中,供测试用例类继承,从而驱动执行测试用例函数中的关键字,代码高度复用,且便于对测试用例函数的维护。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种测试方法,包括:
获取测试命令;
根据所述测试命令,执行测试用例函数;
在执行所述测试用例函数时,触发执行所述测试用例函数所包括的关键字;
在执行所述关键字时,查询与执行的所述关键字关联的测试实现函数;
执行查询到的所述测试实现函数。
2.根据权利要求1所述的方法,其特征在于:
所述根据所述测试命令,执行测试用例函数,包括:
根据所述测试命令,执行测试前处理类所封装的测试前处理逻辑之后,执行测试用例函数;
和/或,
所述方法还包括:
在将各测试用例函数所包括的各关键字和相关联的各测试实现函数执行完毕后,执行测试后处理类所封装的测试后处理逻辑。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在执行查询到的所述测试实现函数时,触发执行查询到的所述测试实现函数所包括的关键字;
在执行所述测试实现函数所包括的关键字时,查询与所述测试实现函数所包括的关键字关联的测试实现函数;
执行查询到的与所述测试实现函数所包括的关键字关联的测试实现函数。
4.根据权利要求3所述的方法,其特征在于,所述在执行查询到的所述测试实现函数时,触发执行查询到的所述测试实现函数所包括的关键字,包括:
在执行查询到的所述测试实现函数时,根据查询到的所述测试实现函数所在的测试实现类所继承的测试实现基类中封装的关键字驱动函数,触发执行查询到的所述测试实现函数所包括的关键字。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述执行测试用例函数包括:
执行包括于测试用例类的测试用例函数;
所述在执行所述测试用例函数时,触发执行所述测试用例函数所包括的关键字,包括:
在执行所述测试用例函数时,根据所述测试用例类所继承的测试用例基类中封装的关键字驱动函数,触发执行所述测试用例函数所包括的关键字。
6.一种测试装置,其特征在于,包括:
测试用例模块,用于获取测试命令;根据所述测试命令,执行测试用例函数;在执行所述测试用例函数时,触发执行所述测试用例函数所包括的关键字;
测试上下文模块,用于在执行所述关键字时,查询与执行的所述关键字关联的测试实现函数;
测试实现模块,用于执行查询到的所述测试实现函数。
7.根据权利要求6所述的装置,其特征在于,所述测试用例模块还用于根据所述测试命令,执行测试前处理类所封装的测试前处理逻辑之后,执行测试用例函数;
和/或,
所述测试用例模块还用于在将各测试用例函数所包括的各关键字和相关联的各测试实现函数执行完毕后,执行测试后处理类所封装的测试后处理逻辑。
8.根据权利要求6所述的装置,其特征在于,所述测试实现模块还用于在执行查询到的所述测试实现函数时,触发执行查询到的所述测试实现函数所包括的关键字;在执行所述测试实现函数所包括的关键字时,查询与所述测试实现函数所包括的关键字关联的测试实现函数;执行查询到的与所述测试实现函数所包括的关键字关联的测试实现函数。
9.根据权利要求8所述的装置,其特征在于,所述测试实现模块还用于在执行查询到的所述测试实现函数时,根据查询到的所述测试实现函数所在的测试实现类所继承的测试实现基类中封装的关键字驱动函数,触发执行查询到的所述测试实现函数所包括的关键字。
10.根据权利要求6至9中任一项所述的装置,其特征在于,所述测试用例模块还用于执行包括于测试用例类的测试用例函数;还用于在执行所述测试用例函数时,根据所述测试用例类所继承的测试用例基类中封装的关键字驱动函数,触发执行所述测试用例函数所包括的关键字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710109365.1A CN108509331B (zh) | 2017-02-27 | 2017-02-27 | 测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710109365.1A CN108509331B (zh) | 2017-02-27 | 2017-02-27 | 测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509331A true CN108509331A (zh) | 2018-09-07 |
CN108509331B CN108509331B (zh) | 2022-10-18 |
Family
ID=63373227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710109365.1A Active CN108509331B (zh) | 2017-02-27 | 2017-02-27 | 测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509331B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185883A (zh) * | 2023-04-28 | 2023-05-30 | 阿里云计算有限公司 | 测试用例生成方法、测试***、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851695A (zh) * | 2005-10-24 | 2006-10-25 | 华为技术有限公司 | 一种用于关键字驱动的中心数据库的组建方法 |
US20150113510A1 (en) * | 2008-03-25 | 2015-04-23 | Barclays Capital Inc. | Method and System for Automated Testing of Computer Applications |
CN106383784A (zh) * | 2016-09-20 | 2017-02-08 | 上海爱数信息技术股份有限公司 | 软件自动化测试方法及*** |
-
2017
- 2017-02-27 CN CN201710109365.1A patent/CN108509331B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851695A (zh) * | 2005-10-24 | 2006-10-25 | 华为技术有限公司 | 一种用于关键字驱动的中心数据库的组建方法 |
US20150113510A1 (en) * | 2008-03-25 | 2015-04-23 | Barclays Capital Inc. | Method and System for Automated Testing of Computer Applications |
CN106383784A (zh) * | 2016-09-20 | 2017-02-08 | 上海爱数信息技术股份有限公司 | 软件自动化测试方法及*** |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185883A (zh) * | 2023-04-28 | 2023-05-30 | 阿里云计算有限公司 | 测试用例生成方法、测试***、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108509331B (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5933692B2 (ja) | パーソナライズ及びカスタマイズされたモバイル装置を生成するシステム | |
Paterno' et al. | MARIA: A universal, declarative, multiple abstraction-level language for service-oriented applications in ubiquitous environments | |
CN101866299B (zh) | 修改便携式电子设备上本地应用的执行的方法和*** | |
CN112230909B (zh) | 小程序的数据绑定方法、装置、设备及存储介质 | |
US7506259B1 (en) | System and method for dynamic mapping of abstract user interface to a mobile device at run time | |
Smith et al. | Android recipes: a problem-solution approach | |
CN106250156B (zh) | 组件构建方法和装置、组件调用方法和装置 | |
US8245147B2 (en) | System and method for reordering a user interface | |
US20040230945A1 (en) | Integration of a configuration tool with a graphical program language | |
CN109408136A (zh) | 信息处理方法、装置、存储介质及电子设备 | |
CN104915297B (zh) | 一种android设备的APP耗电量的自动化测试方法 | |
CN107679113A (zh) | 轻应用的获取方法、设备及电子设备 | |
CN108132879A (zh) | 自动化软件测试方法、平台、终端及介质 | |
BR112012006020A2 (pt) | método para reformular uma interface de usuário de um dispositivo eletrônico de consumidor e aparelho para reformular uma interface de usuário de um dispositivo eletrônico de consumidor | |
CN113849156B (zh) | OpenHarmony操作***应用的无代码智能开发***及其使用方法 | |
CN104850498B (zh) | 一种填充信息测试方法及*** | |
CN112445564A (zh) | 界面显示方法及电子设备、计算机可读存储介质 | |
CN115145545A (zh) | 小程序代码的生成方法、装置、计算机设备和存储介质 | |
CN108319474A (zh) | 一种页面信息生成方法、装置和设备 | |
CN108509331A (zh) | 测试方法和装置 | |
CN112445501A (zh) | 数据烧录方法及设备、计算机可读存储介质 | |
Paternò et al. | Model-based design of multi-device interactive applications based on web services | |
Fatima et al. | Extending interaction flow modeling language (ifml) for android user interface components | |
CN106066793B (zh) | 标记语言生成装置及方法 | |
CN117793237A (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 |