发明内容
针对现有技术的缺陷,本发明的目的是提供一种自动化测试方法及系统,以降低自动测试的实现门槛,从而更高效灵活地进行软件测试。
根据本发明的一个方面,提供了一种自动化测试方法,包括步骤:
初始化数据环境;
分析测试用例,接收所述测试用例的相关参数,生成配置文件;
部署所述配置文件并在指定的时间执行所述配置文件,根据执行的结果自动反馈测试结果。
优选地,所述初始化数据环境进一步包括:
根据本次测试用例确定配置文件的环境属性;
更新所述配置文件的环境属性设定。
优选地,所述分析测试用例进一步包括:
将所述测试用例的操作全过程细化分解到不可拆分的最小操作元素;
按操作顺序将各个所述最小操作元素进行关联;
对于每个所述最小操作元素,分别确定其需要接收的参数。
优选地,所述生成配置文件进一步包括:
根据所述最小操作元素的关联和顺序依次记录各元素信息。
优选地,所述方法中:
所述部署、所述执行和/或所述反馈采用默认方式进行或采用指定方式进行。
在本发明的另一方面,还同时提供了一种自动化测试系统,包括:
初始化模块,用于初始化数据环境;
配置模块,用于分析测试用例,接收所述测试用例的相关参数,生成配置文件;
测试模块,用于部署所述配置文件并在指定的时间执行所述配置文件,根据执行的结果自动反馈测试结果。
优选地,所述初始化模块包括:
属性确定模块,用于根据本次测试用例确定配置文件的环境属性;
属性更新模块,用于更新所述配置文件的环境属性设定。
优选地,所述配置模块包括:
拆分模块,用于将所述测试用例的操作全过程细化分解到不可拆分的最小操作元素;
关联模块,用于按操作顺序将各个所述最小操作元素进行关联;
参数分析模块,用于对于每个所述最小操作元素,分别确定其需要接收的参数。
优选地,所述配置模块还包括:
信息记录模块,用于根据所述最小操作元素的关联和顺序依次记录各元素信息。
优选地,所述测试模块包括:
默认处理模块,用于采用默认方式进行所述部署、所述执行和/或所述反馈处理;
指定处理模块,用于采用指定方式进行所述部署、所述执行和/或所述反馈处理。
本发明实施例的技术方案提供了一种自动化测试方法及系统,通过配置灵活、可读性强且自动化程度高的分析、配置、部署、运行等处理实现了高效灵活的软件/系统的自动化测试。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
软件测试往往要通过多个流程步骤来逐一对应用软件/系统的功能进行测试,现有技术一般采用人工测试或自动测试的方式来进行,人工测试效率低且出错率不可预估不可控制,而现有的自动测试方式门槛高,需要掌握专业技能,故成效同样不理想。因而无论采用哪种方式,现有技术的软件测试都更多依赖用户(即测试人员)的个人能力,实现难度大且效率不佳。
为降低自动测试的实现门槛,从而更高效灵活地进行软件测试,本发明实施例中提供了一种全新的自动化测试的技术方案。具体地,本发明的实施例公开了一种自动化测试方法及系统,可以快捷自由地配置测试用例并自动实现测试全过程。如图1所示,在本发明的一个实施例中,自动化测试方法包括步骤:
S1,初始化数据环境;
S2,分析测试用例,接收所述测试用例的相关参数,生成配置文件;
S3,部署所述配置文件并在指定的时间执行所述配置文件,根据执行的结果自动反馈测试结果。
在本发明实施例的技术方案中,只需利用测试用例的相关参数即可生成可在任何环境下执行的测试配置文件,从而降低了自动测试的难度,且可更加高效地实现自动测试。优选地,通过更接近自然语言的格式文本,比如XML(eXtensible Markup Language,可扩展标记语言)文件,本发明实施例的技术方案所生成的配置文件具有更好的可读性,在进一步降低实现门槛外,也同时可实现更加自由化的配置方式。
在本发明的一个优选实施例中,所述初始化数据环境进一步包括:
S11,根据本次测试用例确定配置文件的环境属性;
S12,更新所述配置文件的环境属性设定。
优选地,所述环境属性包括项目id和初始化执行的脚本文件地址,相应设定在配置文件初始部分的project项的id和setup属性中。
进一步地,在软件测试中,一个测试用例往往针对一个具体而完整的功能进行,在本发明的一个优选实施例中,步骤S2分析所述测试用例时,通常需要分析所述测试用例针对的功能的全过程细节,原则上需要将所述测试用例的操作全过程细化分解到不可拆分的最小操作元素。更进一步地,除了需要按操作顺序将各最小操作元素关联之外,对于每个最小操作元素,还要根据分析结果来确定其需要接收的参数。优选地,接收的参数包括但不限于资源地址、请求参数、运行参数、交互数据、运行结果、返回数据、验证信息、反馈内容等。
通过分析测试用例,将其细分为最小操作元素,一方面可以有效且清晰地梳理所述测试用例的逻辑,进行更为高效的验证,保证自动测试的准确性和可靠性;另一方面,最小操作元素还可用于系统的自学习,当从大量测试用例中得到的最小操作元素足够多时,直接采用已有的最小操作元素关联组合即可得到新的测试用例,从而进一步保证的自动化测试方案的灵活性和可扩展性。
在本发明的一个优选实施例中,步骤S2生成配置文件时,根据最小操作元素的关联和顺序依次记录各元素信息即可。比如采用XML文件作为配置文件时,采用XML标签来定义和/或记录各项元素(原则上每项元素使用一个标签项来定义和/或记录,但对于复杂元素,也可使用嵌套标签形式来定义和/或记录),通过标签的间隔和标记来保证配置文件整体具有比较清晰的逻辑和良好的可读性。此外,对于已定义和/或记录的最小操作元素,可通过复用标签项的方式来自由关联组合以生成新的测试用例。
当然,本领域相关技术人员可以理解,上述XML文件及标签项的表示方法仅仅为本发明实施例的优选示意,不应理解为对本发明具体实施方式的限制。实际上,任何可以规范化表述的通用文件形式均可作为本发明实施例中的配置文件形式,其规范化的表述则用来客观准确地定义和/或记录各项最小操作元素。不过为了增强配置文件的可读性,优选采用较为接近自然语言的通用文件的表述方式来生成所述配置文件。
在本发明的一个优选实施例中,通过自动部署、自动执行所述配置文件所代表的所述测试用例,并自动反馈结果来完成测试过程。其中,所述配置文件可部署在默认位置或根据设定部署在任意指定位置,比如通过在所述配置文件的标签项中设定部署位置来进行部署。优选地,所述配置文件被部署在测试服务器上。此外,所述配置文件可在各种指定的时间自动执行,比如在部署完成后立即执行、在默认时刻执行、在部署完成后默认时间间隔时执行、或在设定的时间(比如在配置文件的标签项中设定执行时间)执行。更优选地,所述配置文件可周期性地执行,从而测试软件/系统的稳定性、可靠性,以及验证所述测试用例的逻辑严谨性。执行周期可采用默认值或在所述配置文件中进行设定。进一步地,每次执行结果可按默认方式或按指定方式进行反馈,比如在所述配置文件中设定结果格式、反馈方式、反馈时间、接收地址等等,以实现软件测试全过程的自动化。
更具体地,在本发明另一优选实施例中,以XML文件作为配置文件时,一个典型的测试用例所生成的配置文件如图2所示,该典型的测试用例用来完成如下测试需求:进行一个投放单的创建,随后验证所述投放单是否投放成功,在测试完成之后根据测试结果信息发送测试报告给用户(优选通过email发送测试报告)。
在图2中,配置文件的头部属于XML文件的DTD(Document Type Definition,文档类型定义)描述,该部分属于所属技术领域的基础知识,在此不再赘述。该配置文件主体是autotest项目,其中初始部分用于完成项目的初始化数据环境设置,即在项目project标签项中配置id和初始化执行的脚本文件(见id属性和setup属性的具体设置),这样可以把数据环境全部初始化一遍,保证这是个干净的环境。
随后,suite和case标签项分别是对本次测试套件和测试用例的描述,一般情况下,每个测试功能属于一个case。
之后是创建CPC方式投放单的具体配置,首先分析测试用例:由于需要创建一个投放单,所以需要操作的步骤是先访问一个创建投放单资源的地址,并带上创建和投放的参数,接着要验证该投放单是否成功,一般通过创建后的链接访问的响应状态码是否是200来判断,同时要求返回的json串中的code属性值为1。
于是,在测试用例的配置文件中,通过http标签项下的url地址来完成一次请求,有:
<url>
http://10.155.9.203:81/bp/addOrUpdateCast.do
</url>
带上具体的casts参数,即:
<arg name="casts">
<value>
[{"id":"3171","title":"投放A","customerId":"customer1","accountId":"account1","status":1,"costType":1,"price":8,"budget":2000,"budgetDaily":1600,"premiumPolicy":0,"priceOptimize":1,"isCampaign":0,"releaseType":1,"startTime":20151105000000,"endTime":20551224000000,"pageShowType":0,"dealId":"0","ideaPage":[{"ideaId":"5053","pages":[{"id":"1564","scale":0}]}],"castDirecitons":[{"type":"area","value":"12","isPositive":1},{"type":"channel","value":"yk","isPositive":1},{"type":"position","value":"101","isPositive":1}],"castCampaigns":[],"castTimes":[{"startTime":20151105,"endTime":20551224,"timeTargeting":"111111111111111111111111","type":1}]}]
</value>
</arg>
完成请求之后,在valid标签项中进行验证返回码和json串,即:
<valid>
status='addCasts[1].status'
assertEqual(status,200)
code='addCasts[1].body:code'
assertEqual(code,1)
</valid>
以上为创建投放单的测试用例的配置文件,可将其以autotest.xml文件保存并部署。进一步地,如图3所示,还同时配置测试报告的反馈方式。优选地,本次测试项目的结果以html页面方式进行展现,通过用户邮箱接收测试报告,在图3的示例中,目前就配置了一个用户信息minjun,示例系统默认用户使用的优酷邮箱,所以minjun所代表的是邮箱为minjun@youku.com的用户;包含测试结果的测试报告将通过邮件形式发送到该用户的邮箱中。本发明优选实施例中的反馈方式的配置文件优选以notification.xml文件保存并部署。
具体地,在本发明优选实施例的示例中,将上述两个配置文件上传到服务器的指定路径。优选地,默认通过命令行java-jar autotest.jar-r启动该项目,执行该路径下的测试用例。更优选地,该项目每天凌晨定时更新最新的环境代码并执行测试用例。用户只需通过用户邮箱接收测试报告即可知道测试结果。
在上述示例的本发明优选实施例中,采用xml文件对测试用例进行配置,但更优选地,也可以采用页面(html)的方式完成生成配置文件的过程,这样将使用户使用上更加称手,进一步降低自动化测试的技术门槛。
此外,目前的示例中是以命令行的方式进行项目的启动和执行,在其他优选实施例中也可以将启动和执行功能以图形界面的方式提供,从而使本发明实施例的技术方案更加产品化,操作更便捷,用户体验更好。
进一步如图4所示,与上述方法一一对应地,本发明实施例还同时提供了一种自动化测试系统1,包括:
初始化模块,用于初始化数据环境;
配置模块,用于分析测试用例,接收所述测试用例的相关参数,生成配置文件;
测试模块,用于部署所述配置文件并在指定的时间执行所述配置文件,根据执行的结果自动反馈测试结果。
其中,在本发明实施例中,可以设置独立的设备来实现上述自动化测试系统,以自动完成测试用例实现的全过程。所述自动化测试系统分析测试用例生成配置文件,随后自动部署并运行,根据对测试资源的请求和相应的响应结果得到测试报告并自动反馈。
优选地,所述初始化模块包括:
属性确定模块,用于根据本次测试用例确定配置文件的环境属性;
属性更新模块,用于更新所述配置文件的环境属性设定。
优选地,所述配置模块包括:
拆分模块,用于将所述测试用例的操作全过程细化分解到不可拆分的最小操作元素;
关联模块,用于按操作顺序将各个所述最小操作元素进行关联;
参数分析模块,用于对于每个所述最小操作元素,分别确定其需要接收的参数。
优选地,所述配置模块还包括:
信息记录模块,用于根据所述最小操作元素的关联和顺序依次记录各元素信息。
优选地,所述测试模块包括:
默认处理模块,用于采用默认方式进行所述部署、所述执行和/或所述反馈处理;
指定处理模块,用于采用指定方式进行所述部署、所述执行和/或所述反馈处理。
在本发明一个优选实施例中,所述配置文件为XML文件,所述测试结果为HTML页面或邮件形式的测试报告,采用指定方式的处理均可在所述配置文件中进行设定。
优选地,本发明实施例中的自动化测试系统是相对独立的处理设备,比如集群、服务器、PC或笔记本电脑等;也可以是相对独立的功能单元,比如独立芯片、片上系统(Systemon Chip,SoC)或IP核等,通过处理设备加载后实现相应功能。在实际应用中,上述系统中的各模块均可由位于系统设备中的中央处理器(Central Processing Unit,CPU)、微处理器(Micro Processor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable GateArray,FPGA)等实现;文件数据(包括但不限于邮件、配置文件、数据资源等)优选通过存储设备进行保存并提供给上述处理设备/单元。
在本发明实施例中提及的术语“系统”可以包括不同级别的程序功能的集合,比如底层操作系统、中间层系统插件、应用层单机和/或网络服务系统等等;“软件”可以包括各种计算设备的应用程序,比如互联网应用、移动应用、PC应用、嵌入式应用、单片机应用等等。
在本发明更优选实施例中,可以形成包含应用自动化测试系统在内的具有完整单机和/或网络服务功能的电子系统。其中,电子系统优选包括诸如客户端或服务器的第一设备,其连接到诸如客户端或服务器的第二设备;第一设备可以通过通信路径(诸如无线或有线网络)与第二设备通信。
在一个示例中,第一设备可以是各种具有一定处理能力的计算设备中的任何一种,诸如PC、笔记本计算机、网络服务器、智能手机、平板设备、智能电视、个人数字助理(PDA)、可穿戴设备、车载计算设备或其它多功能娱乐设备。第一设备可以直接或间接地耦合到通信路径来与第二设备通信,或者可以是独立的设备。但是本领域相关技术人员也应该理解第一设备还可以是不同类型的设备;例如,第一设备也可以是用于辅助提供计算能力的设备,如机顶盒、电视盒子、游戏设备、HUD、智能电话机等等。在这里,上述第一设备和多媒体的列举不应理解为对本发明具体实施方式的穷尽。
第二设备可以是各种集中式或分布式计算设备、文件或数据处理设备中的任何一种。例如,第二设备可以是网络服务器、台式计算机、平板、膝上型计算机、网格计算资源、虚拟化计算机资源、云计算资源、对等分布式计算设备等,或者其组合。在另一个示例中,第二设备可以是用于接收及存储网络数据的任意设备,诸如磁盘阵列、云存储设备、文件共享系统、分布式存储系统等等。第二设备可以集中在单个房间中、分布在不同的房间、分布在不同的地理位置、嵌入在电信网络之内。第二设备可以具有用于与通信路径耦合来与第一设备通信的部件。
通信路径可以是各种网络,如可以包括无线通信、有线通信、光、超声波或其组合,卫星通信、蜂窝通信、蓝牙、红外数据协会标准(IrDA)、无线保真(WiFi)和全球微波接入互联(WiMAX)是可以被包括在通信路径中的无线通信的示例。以太网、数字用户线(DSL)、光纤到户(FTTH)、高清晰度多媒体接口(HDMI)线缆和普通老式电话服务(POTS)是可以包括在通信路径中的有线通信的示例。此外,通信路径可以穿越许多网络拓扑和距离。例如,通信路径可以包括直接连接、个域网(PAN)、局域网(LAN)、城域网(MAN)、宽域网(WAN)或其组合。
在本发明一个实施例中,自动化测试方法或系统可以在上述电子系统的任意设备上执行处理和/或显示包括中间处理过程(比如初始化、分析、接收参数、生成配置文件、部署、运行、反馈、邮件收发等细节)在内的各种数据处理操作。
更进一步地,列举一个对于实现所公开的实施例有用的计算机系统,该计算机系统可以构成上述电子系统或电子系统中的任一设备,其包括一个或多个处理器,并且可以进一步包括电子显示设备(用于显示图形、文本和其它数据),主存储器(例如,随机存取存储器RAM)、存储器件(例如,硬盘驱动器)、可移除存储器件(例如,可移除存储驱动器、可移除存储模块、磁带驱动器、光盘驱动器、在其中存储有计算机软件和/或数据的计算机可读介质),用户接口设备(例如,键盘、触摸屏、键盘、指点设备)以及通信接口(例如,调制解调器、网络接口(诸如以太网卡)、通信端口或PCMCIA插槽和卡)。通信接口允许在计算机系统和外部设备之间传递软件和数据。计算机系统还包括连接内外部器件以实现数据交互的通信基础设施(例如,通信总线、转换接头或网络)。
在一个实施例中,电子系统中的数据内容的有线或无线通信可以包括在下面一个或多个上的通信:以太网、电话(例如,POTS)、线缆、电力线和光纤系统,和/或包括长期演进(TD-LTE或FDD-LTE)系统、码分多址(CDMA或CDMA2000)通信系统、频分多址(FDMA)系统、时分多址(TDMA)系统(诸如GSM/GPRS(通用分组无线电服务)/EDGE(增强的数据GSM环境)、TETRA(地面集群无线电)移动电话系统)、宽带码分多址(WCDMA)系统、IEEE802.11系统、正交频分多址(OFDM)系统等中的一个或多个的无线系统。在一个实施例中,输入/输出源可以在无线网络(例如,互联网、局域网(LAN)、宽域网(WAN)、个域网(PAN)、校园无线网(CAN)、城域网(MAN)等)上发送。在一个实施例中,输入/输出源可以来自于基于云的系统、服务器、计算机设备、移动设备等等。
在某些实施例中,在具有多核处理器的对称多处理计算机可构成上述计算机系统;依照某些实施例,核心处理组件可包含流水线(pipeline)处理设备,其通过总线耦合到各个处理器;在一种实施例中,协处理器可通过总线耦合到芯片组核心逻辑及主处理器。在某些实施例中,协处理器或主处理器中之一或多个可使用具有多核的对称多处理来并行计算梯度。存储器可耦合到芯片组核心逻辑,且存储器可例如包含主存储器、硬盘驱动器以及可移动媒介等。
在一种实施例中,实现上文中的方法的各步骤的计算机指令序列可实现为存储在主存储器的部分中的机器可读指令。另外,在主存储器内还可建立连续缓冲器、寄存器、池、堆栈和队列等形式。但是,在其它示例中,实现上述方法的序列的缓冲与存储也可在主处理器、另一存储器或者在协处理器中实现。
在某些实施例中,实现上述方法的序列可用软件来实现,且在其它实施例中它们可用硬件来实现。在软件实施例中,序列可由对处理器或处理器可执行的指令通过调用存储在计算机可读介质中的指令来实现。计算机可读介质可为任意计算机可读存储介质,包括磁、半导体或者光存储器。
本文所述的自动化测试技术可用各种硬件结构来实现。备选地,可使用分布式处理器来并行处理作业,比如同时对多个测试用例或同一测试用例的多个配置文件进行处理。作为另一实施例,并行处理功能可用包括多核处理器的通用目的处理器来实现。
经由通信接口传递的信息可以是信号的形式,诸如电、电磁、光或经由通信链路能够被通信接口接收的其它信号,所述通信链路携载信号并且可以使用线或缆、光纤、电话线、蜂窝式电话链路、射频(RF)链路和/或其它通信信道来实现。本发明实施例所描述的计算机程序指令可以被加载在计算机、可编程数据处理系统或处理设备上,使得在其上执行的一系列操作以产生计算机实现的过程。
术语“计算机程序介质”、“计算机可用介质”、“计算机可读介质”和“计算机程序产品”用来一般地指代媒体,诸如主存储器、辅存储器、可移除存储器件、安装在硬盘驱动器中的硬盘和信号。这些计算机程序产品是用于向计算机系统提供软件的部件。计算机可读介质允许计算机系统从计算机可读介质中读取数据、指令、消息或消息包和其它计算机可读信息。例如,计算机可读介质可以包括非易失性存储器,诸如软盘、ROM、闪存、磁盘驱动器存储器、CD-ROM和其它永久性存储系统。例如,它对于在计算机系统之间传输诸如数据和计算机指令的信息是有用的。计算机程序指令可以被存储在计算机可读介质中,计算机可读介质可以指导计算机、其它可编程数据处理系统或其它设备按特定的方式起作用,使得被存储在计算机可读介质中的指令产生包括实施在图1流程图和/或图4框图框中指定的功能/行为的指令的制造品。
此外,计算机可读介质可以将计算机可读信息包括在诸如网络链路和/或网络接口的暂态介质中,包括有线网络或无线网络,其允许计算机读取这样的计算机可读信息。计算机程序(即计算机控制逻辑)被存储在主存储器和/或辅存储器中。计算机程序也可以经由通信接口接收。这样的计算机程序当被运行时使得计算机系统能够执行如在此讨论的特征。具体地,计算机程序当被运行时,使得多核处理器执行计算机系统的特征。这样的计算机程序表示计算机系统的控制器。
本发明实施例的技术方案提供了一种自动化测试方法及系统,通过配置灵活、可读性强且自动化程度高的分析、配置、部署、运行等处理实现了高效灵活的软件/系统的自动化测试。具体地,本发明技术方案采用“一次编写,多次执行”的思路,只需一次配置测试用例即可直接反复执行测试流程,这样在回归测试(指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误的测试过程)的时候可大大节省原来手工测试的复杂流程;此外,本发明的技术方案可以在自动化测试框架中使用可读性极强的配置文件来编写测试用例,由于其配置文件格式清晰,书写起来比代码更加简单,大幅降低了自动化测试的实现门槛,减少了用户的学习成本;最后,通过对测试用例的细分和配置,本发明技术方案中的自动化测试框架可实现基础元素的复用,进一步提高了效率并增强了实现测试的灵活性和可扩展性。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。