自动化测试方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机应用领域,尤其涉及一种自动化测试方法、装置、计算机设备及存储介质。
背景技术
随着移动互联网的兴起,许多万维网(world wide web,Web)应用的服务商也随着提供了与Web端应用相对应的移动端应用,从而满足不同终端用户的需求。例如,用户既可以通过个人电脑(personal computer,PC)中的浏览器访问显示页面,也可以通过手机端的浏览器访问到同一显示页面。然而,用户访问到的两个显示页面在后台可能是由两个不同的服务器提供的页面显示服务,即,同一个服务后台对应了不同的前端页面。
对于一个应用来说,由于客户端的差异,测试人员需要针对不同的客户端进行用户界面(user interface,UI)测试。
由于适用于不同客户端的前端页面通常由不同的测试人员进行测试,期间的测试进度不同,因此,对于一个Web应用来说,整体的测试过程难以同步,测试效率不高,从而最终影响到产品上线时间。
发明内容
基于此,有必要针对上述技术问题,提供一种可以提升测试效率的自动化测试方法、装置、计算机设备及存储介质,以解决由于不同客户端测试进度无法同步,而导致产品上线不够及时的问题。
一种自动化测试方法,包括:
获取目标设计文件对应的待测试页面的页面数据,所述待测试页面包括第一待测试页面和第二待测试页面,所述第一待测试页面的页面类型与所述第二待测试页面的页面类型不相同;
确定与所述第一待测试页面的页面类型匹配的第一终端类型,以及与所述第二待测试页面的页面类型匹配的第二终端类型;
向所述第一终端类型对应的第一终端发送所述第一待测试页面的页面数据,并向第二终端类型对应的第二终端发送所述第二待测试页面的页面数据,以使得所述第一终端显示所述第一待测试页面,所述第二终端显示所述第二待测试页面;
向所述第一终端以及所述第二终端发送自动测试指令,以使得所述第一终端在所述第一待测试页面执行所述自动测试指令得到第一测试报告,所述第二终端在所述第二待测试页面执行所述自动测试指令对应的第二测试报告;
获取所述第一测试报告以及所述第二测试报告。
一种自动化测试装置,包括:
第一获取模块,用于获取目标设计文件对应的待测试页面的页面数据,所述待测试页面包括第一待测试页面和第二待测试页面,所述第一待测试页面的页面类型与所述第二待测试页面的页面类型不相同;
第一确定模块,用于确定与所述第一待测试页面的页面类型匹配的第一终端类型,以及与所述第二待测试页面的页面类型匹配的第二终端类型;
第一发送模块,用于向所述第一终端类型对应的第一终端发送所述第一待测试页面的页面数据,以使得所述第一终端显示所述第一待测试页面;第二发送模块,用于向所述第二终端类型对应的第二终端发送所述第二待测试页面的页面数据,以使得所述第二终端显示所述第二待测试页面;
第三发送模块,用于向所述第一终端以及所述第二终端发送自动测试指令,以使得所述第一终端在所述第一待测试页面执行所述自动测试指令对应的测序项得到第一测试报告,所述第二终端在所述第二待测试页面执行所述自动测试指令对应的第二测试报告;
第二获取模块,用于获取所述第一测试报告以及所述第二测试报告。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述自动化测试方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述自动化测试方法的步骤。
上述自动化测试方法、装置、计算机设备及存储介质中,测试终端根据待测试页面的页面类型确定出终端的类型,然后将不同类型的待测试页面发送到对应的终端中,然后再发送自动测试指令,使得不同类型的终端可以在对应的待测试页面上进行自动化测试,测试完成后,测试终端在从不同类型的终端中获取对应的测试报告,也就是说,测试终端可以并行对不同类型的终端进行自动测试,提升了测试效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中自动化测试方法的一应用环境示意图;
图2是本发明一实施例中自动化测试方法的一流程图;
图3是本发明一实施例中自动化测试方法的步骤S30的一流程图;
图4是本发明一实施例中自动化测试方法中生成自动测试指令的一流程图;
图5是本发明一实施例中自动化测试方法中存储自动化测试过程中定位的元素对应的图像的一流程图;
图6是本发明一实施例中自动化测试方法中根据第一识别模型对待测试页面中的元素进行定位的一流程图;
图7是本发明一实施例中自动化测试方法中对待测试页面中的图像资源进行智能识别的一流程图;
图8是本发明一实施例中自动化测试装置的一示例图;
图9是本发明一实施例中自动化测试装置的另一示例图;
图10是本发明一实施例中自动化测试装置的又一示例图;
图11是本发明一实施例中自动化测试装置的再一示例图;
图12是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解,下面对本申请实施例涉及的词汇进行简单介绍。
自动测试指令:运行在目标终端的执行脚本,具体可以由Net,Perl,Python,Java等语言编写。
测试用例:为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测是某个程序路径或核实是否满足某个特定需求。
深度学习架构:在深度学习初始阶段,每个深度学习研究者都需要写大量的重复代码。为了提高工作效率,这些研究者就将这些代码写成了一个框架放到网上让所有研究者一起使用,如PaddlePaddle,tensorflow等。
移动端自动化测试工具:适用于移动端操作***的自动化测试工具,Appium是常用的移动端自动化测试工具之一,可以支持iOS平台和安卓(Android)平台上的原生应用,Web应用和混合应用。
网页应用程序测试工具:适用于网页应用程序的自动化测试的工具,Selenium是常用的自动化测试工具之一,可以直接在浏览器中运行,模拟用户操作。
本申请提供的自动化测试方法,可应用在如图1的应用环境中,其中,测试终端是执行自动化测试方法的计算机设备,具体可以是个人计算机(personal computer,PC)设备或其他设备,每个测试终端可以对应一名测试人员,也可以是一名测试人员操作多台测试终端,或者多名测试人员操作一台测试终端,具体本申请不作限定;测试服务端是为测试终端提供数据存储和读取服务的服务器或服务器集群;测试数据库是存储UI测试数据、测试用例等数据的数据库;移动终端是待进行UI测试的移动端设备,包括但不限于手机、平板电脑或其他智能终端设备;模拟PC端是测试终端中模拟PC运行环境的虚拟终端,主要适用于PC端设备的测试。
在一实施例中,如图2所示,提供一种自动化测试方法,以该方法应用在图1中的测试终端为例进行说明,包括如下步骤:
S10:获取目标设计文件对应的待测试页面的页面数据;
测试终端从测试服务端中获取目标设计文件对应的待测试页面的页面数据,其中,待测试页面包括第一待测试页面和第二待测试页面,第一待测试页面的页面类型与第二待测试页面的页面类型不相同。
应理解,待测试页面指的是需要进行测试的用户界面,是显示在客户端屏幕中给用户浏览的页面,本实施例中,第一待测试页面和第二待测试页面是目标设计文件所指示的待测试页面的不同类型,具体地,待测试页面的页面类型可以分为适用于PC端的页面类型和适用于移动端的页面类型,其中,适用于PC端的页面类型可以时超文本标记语言(hyper text markup language,HTML)或其他类型,适用于移动端的页面类型可以包括XML或其他类型,具体本申请不作限定。
还应理解,目标设计文件即待测试页面的原型设计文件,用于指示待测试页面中各元素的基本布局,各元素之间的从属关系等,通过目标设计文件可以将适用于不同客户端的待测试页面进行统一管理和规划。目标设计文件的格式具体可以是JavaScript对象简谱(JavaScript object notation,JOSN)格式,或可扩展标记语言(extensible markuplanguage,XML)格式,或其他格式,具体此处不作限定。
待测试页面中的元素包括但不限于按钮、表单、复选框、画布等。其中,每个元素又可以分为适用于PC端的和适用于移动端的;适用于PC端的元素可以表示为HTML文件中的标签,适用于移动端的元素可以表示为XML文件中的标签。
作为一个示例,一个JSON格式的元ing页面文件可以表示为:
{
“Title”:[
{“subTitle1”:name1},
{“subTitle2”:name2},]
“Canvas”:[
{“ImageName”:img1},
{“ImagePath”:‘//path//file1.jpg’},]
}
其中,Title为标题元素,包括两个子标题“subTitle1”和“subTtile2”,代表了在待测试页面中需要包含一个主标题和两个子标题;Canvas为画布元素,包括一张图片,代表了在待测试页面中需要显示一张图片;画布元素下的两个键值对分别代表图片的名称和图片的路径。
需要说明的时,目标设计文件与待测试页面形成映射关系,可以通过存储在数据库中的配置文件表示。例如,若配置文件中目标设计文件为A,则与之相对应的PC端待测试页面为A1,与之相对应的APP端待测试页面为A2;同理,对于目标设计文件B,有分别适用于PC端和APP端的待测试页面B1和B2与之对应。
S20:确定与第一待测试页面的页面类型匹配的第一终端类型,以及与第二待测试页面类型的类型匹配的第二终端类型;
测试终端获取待测试页面的页面数据后,可以确定与待测试页面的页面类型匹配的终端类型。
作为一种可选的方式,待测试页面可以分别存储在测试服务端的不同目录,每个目录代表不同的测试页面的类型,从而对应了终端的类型。测试终端从测试服务端相应目录获取待测试页面时,即可确定与之匹配的终端类型。具体地,第一待测试页面的页面数据是测试终端从测试服务端的第一目录中获取的,第二待测试页面的页面数据是测试终端从测试服务端的第二目录中获取的,测试终端确定与第一目录所表示的页面类型匹配的第一终端类型,与第二目录所表示的页面类型匹配的第二终端类型。
作为一终可选的方式,测试终端获取第一待测试页面的页面数据以及第二待测试页面的页面数据后,解析该页面数据确定第一待测试页面以及第二待测试页面的页面类型,再确定与第一待测试页面的页面类型匹配的第一终端类型,以及与第二待测试页面的页面类型匹配的第二终端类型。
应理解,本实施例中,终端类型可以包括PC端和移动端,其中,PC端又可以根据浏览器、操作***以及架构的不同继续细分,例如,操作***可为windows、linux、unix、Mac、Android等;浏览器可为IE、谷歌、火狐、360等;***架构可以分为浏览器/服务器(browser/server,B/S)架构,客户端/服务器(client/server,C/S)架构;移动端也可以根据操作***,屏幕尺寸大小,显示分辨率的不同继续划分,例如操作***可为Android,iOS,windowsphone等,屏幕尺寸可为3.7英寸,4.5英寸,5.2英寸,6.5英寸等,显示分辨率可以为720P、1080P、2K等。
需要说明的是,PC端设备包括但不限于台式机(desktop),一体机(all-in-one),笔记本电脑(laptop),掌上电脑(personal digital assistant,PDA),平板电脑(tablet);移动端指的是可以在移动中使用的计算机设备,移动端设备包括但不限于手机,平板电脑,车载设备。
还需要说明的是,测试终端可以模拟出不同运行环境的PC端设备,作为一种可选的方式,本实施例中,PC端设备可以是测试终端,其对应的运行环境为测试终端模拟出来的运行环境。
S30:向第一终端类型对应的第一终端发送第一待测试页面的页面数据,并向第二终端类型对应的第二终端发送第二待测试页面的页面数据;
为了便于描述,本实施例将与测试终端连接且终端类型为第一终端类型的设备称为第一终端,将与测试终端连接且终端类型为第二终端类型的设备称为第二终端,则测试终端确定第一待测试页面以及第二待测试页面对应的终端类型后,将第一待测试页面的页面数据发送至第一终端,将第二待测试页面的页面数据发送至第二终端,以使得第一终端根据第一待测试页面的页面数据显示第一待测试页面,第二终端根据第二待测试页面的页面数据显示第二待测试页面。
S40:向第一终端以及第二终端发送自动测试指令;
测试终端向第一终端以及第二终端发送页面数据后,向第一终端以及第二终端发送自动测试指令,以使得第一终端在显示的第一待测试页面执行自动测试指令得到对应的测试报告,第二终端在显示的第二待测试页面执行自动测试指令得到对应的测试报告。
需要说明的是,本实施例中测试报告是针对自动测试指令生成的报告文件,反应了每个预设测试项的测试结果,测试报告可以是文本格式的文件,或者HTML格式的文件,或者图像文件,即以图形的形式表示,如曲线趋势图等,还可以是其他文件,具体本申请不作限定。
作为一种可选的方式,测试报告中的数据包括如下至少一项:每条测试项的执行状态、失败信息(包括失败原因、失败操作的代码)、执行人员、执行时间、所有测试项的总体执行情况(包括成功、失败数)、每天的执行情况。
为了便于描述,本实施例将第一终端针对自动测试指令生成的报告称为第一测试报告,将第二终端针对自动测试指令生成的报告称为第二测试报告。
S50:获取第一测试报告以及第二测试报告。
第一终端以及第二终端生成对应的测试报告后,测试终端获取这些测试报告,具体地,测试终端可以通过Appium启动与第一终端的连接,接收第一终端发送的第一测试报告,通过Selenium获取第二终端对应的第二测试报告。
作为一种可选的方式,测试报告中包含有测试结果,若测试结果指示测试未通过,则表示待测试页面中存在有问题,用户通过该待测试页面进行交互时会出现问题,开发人员需要针对该问题对待测试页面进行修改。具体地,存在的问题可以是元素无法正常显示,点击控件无响应等。
本实施例中,测试终端根据待测试页面的页面类型确定出终端的类型,然后将不同类型的待测试页面发送到对应的终端中,然后再发送自动测试指令,使得不同类型的终端可以再对应的待测试页面上进行自动化测试,测试完成后,测试终端在从不同类型的终端中获取对应的测试报告,也就是说,测试终端可以并行对不同类型的终端进行自动测试,提升了测试效率。
在一实施例中,第一终端为移动端设备,第二终端为的PC端设备,第一终端通过数据线与测试终端连接,第二终端为测试终端模拟的PC端设备PC1,测试终端通过进程启动PC1,如图3,步骤S30,即向第一终端类型对应的第一终端发送第一待测试页面的页面数据,并向第二终端类型对应的第二终端发送第二待测试页面的页面数据,具体包括如下步骤:
S31:通过移动端自动化测试工具将第一待测试页面的页面数据发送至移动端设备;
本实施例中,测试终端通过Appium启动与第一终端的连接,通过该连接将第一待测试页面的页面数据发送至第一终端,第一终端根据页面数据在屏幕上显示第一待测试页面。
S32:在PC端设备启动目标浏览器的进程,使用网页应用程序测试工具将第二待测试页面对应的网页地址录入到目标浏览器的地址栏中;
本实施例中,测试终端解析第二待测试页面的页面数据获得第二待测试页面对应的网页地址,然后通过新建进程启动目标浏览器,并使用Selenium将第二待测试页面对应的网页地址录入到目标浏览器的地址栏中,测试终端在模拟的PC1的窗口显示第二待测试页面。
应理解,上述步骤S31和S32不区分先后顺序。
本实施例中,测试终端可以使用Appium直接将页面数据传输到移动端设备,在移动端设备显示第一待测试页面,从而可以实现移动端设备的自动化测试,无需用户手动输入指令,简化测试流程,提升移动端设备的测试效率。测试终端还可以使用Selenium直接在模拟的PC端设备上打开待测试页面,从而可以实现PC端设备的自动化测试,无需用户手动调动进程,简化测试流程,提升PC端设备的测试效率。
在一实施例中,测试终端在发送自动测试指令之前,会先根据用户录入的数据生成自动测试指令,如图4,在步骤S40之前,即测试终端向第一终端以及第二终端发送自动测试指令之前,该自动化测试方法还包括如下步骤:
S33:解析测试驱动文件获得待测试页面对应的测试数据,并从测试数据库中获取预设测试用例;
测试驱动文件用于用户(测试人员)对待测试页面对应的测试数据进行编辑,即用户可以通过测试驱动文件实时修改测试数据,测试驱动文件具体可以是excel表格文件,或其他文件。作为一种可选的方式,excel表格中每个sheet页的第一行是一个字段名(即变量名),sheet页中可能有多行数据,每一行数据就是一次测试所需要的测试数据,有多少行就需要测试多少次(针对同一待测试页面),sheet页中的取值即待测试页面对应的测试数据,具体地,生成测试指令时,测试终端会自动解析测试驱动文件获得测试数据。
测试数据库,是存储测试用例的数据库。测试数据库中的测试项将测试页面分解为独立的部分,即以待测试页面中的元素为最小单位,以单个元素或多个元素组成测试项,测试用例可以是其中一个测试项,也可以由多个测试项组合得到。具体地,生成自动测试指令时,测试终端可以根据用户操作从测试数据库中选择测试项进行组合得到测试用例,或者从测试数据库中随机选取测试项组合生成测试用例,或者从测试数据库中选择历史测试用例作为待测试页面对应的测试用例。
作为一个示例,测试数据库中的测试项包括:定位控件,点击控件,检查元素是否出现在页面,浏览器最大化,保存页面信息,判断是否符合预期;则在一个“登录邮箱并发送邮件”的测试用例中,测试终端可以随机选取或组合这6个步骤方法,并根据选取或组合后的测试项生成测试用例。
S34:根据测试数据以及预设测试用例生成自动测试指令。
测试终端获取测试数据以及预设测试用例后,根据测试数据以及预设测试用例生成自动测试指令。
本实施例中,测试数据库中存储有待测试页面对应的测试项,不同的用户通过测试数据库可以直接通过这些测试项组成的测试用例,即可以实现测试用例的共享,对于相同或类似的测试页面,用户无需重复编写案例,提升了测试效率。
其次,本实施例中,用户可以通过测试驱动文件实时增加或修改测试数据,提升了方案的灵活性。
一般来说,测试人员在录入测试用例时,需要输入待测试页面中元素的路径,则第一终端或第二终端在执行自动化测试时,会根据测试用例中元素的路径对待测试页面中的元素进行定位。
然而在开发过程中,由于需求的变动,待测试页面的整体布局或各元素的位置需要不断的微调,则每次调整测试人员都需要对测试用例中元素的路径进行修改,操作繁琐,降低测试效率。
在一实施例中,如图5,步骤S40之后,即测试终端向第一终端以及第二终端发送自动测试指令之后,该方法还包括:
S41:存储第一终端在第一待测试页面执行自动测试指令时定位的元素所对应的第一图像;
和/或,
S42:存储第二终端在第二待测试页面执行自动测试指令时定位的元素所对应的第二图像。
测试终端向第一终端发送自动测试指令后,第一终端会在第一待测试页面上执行该自动测试指令,具体地,第一终端在执行自动测试指令时会先对第一待测试页面中的元素进行定位,然后模拟用户针对元素执行相应的操作,再判断操作结果是否符合预期,在这个过程中,测试终端会将第一终端定位的元素所对应的第一图像保存起来,然后将第一图像作为训练数据对第一识别模型进行训练,训练好的第一识别模型可以用于测试终端通过图像识别对待测试页面中的元素进行定位。
测试终端向第二终端发送自动测试指令后,第二终端会在第二待测试页面上执行该自动测试指令,具体地,第二终端在执行自动测试指令时会先对第二待测试页面中的元素进行定位,然后模拟用户针对元素执行相应的操作,再判断操作结果是否符合预期,在这个过程中,测试终端会将第二终端定位的元素所对应的第二图像保存起来,然后将第二图像作为训练数据对第一识别模型进行训练,训练好的第一识别模型可以用于测试终端通过图像识别对待测试页面中的元素进行定位。
应理解,训练好的第一识别模型指的是通过一定数量的训练数据对初始的第一识别模型进行训练后得到的模型。对于设计文件,测试终端会通过PC端设备和/或移动端设备对该设计文件对应的待测试页面进行大量的自动化测试,在每次执行的自动化测试的过程中,PC端设备和/或移动端设备会通过xpath或者css定位方式确定出待测试页面中的元素的位置,然后再执行相应的测试操作,本实施例中,测试终端会将这些通过xpath或者css定位的元素对应的图像进行存储,并作为训练数据对第一识别模型进行训练,当图像的数据量达到预定阈值时,即可认为第一识别模型训练完成,训练完成后,测试终端可以将该第一识别模型上传到测试服务端,从而使得其他测试终端可以直接调用该第一识别模型对待测试页面中的元素进行定位。
例如,将第一终端和第二终端显示的待测试页面中“关闭”对应的图标保存起来(不同的应用程序或浏览器或程序中关闭图标会有所不同,但都有一定相似的特征),将该图标的图像数据传给深度学习模型tensorflow(第一识别模型)中进行训练,通过这样一个不断训练的过程,基于大量的样本训练得到的深度学习模型,在后续对待测试页面进行测试时,测试终端可以直接在待测试页面中识别出“关闭”图标,该图标所在的位置即“关闭”元素的位置,测试终端无需通过“关闭”的元素路径进行定位。
上述实施例中,测试终端可以将自动化测试过程中定位的元素对应的图像进行存储,作为训练数据对第一识别模型进行训练以获得能够根据图像对元素进行定位的模型,则在后续开发过程中,当待测试页面的元素的位置发生变化时,无需用户输入元素的路径,直接根据训练好的第一识别模型即可定位元素。
在一实施例中,如图6,步骤S40之后,即测试终端向第一终端以及第二终端发送自动测试指令之后,该方法还包括:
S43:通过第一识别模型确定第一终端显示的第一待测试页面中元素的位置;
和/或,
S44:通过第一识别模型确定第二终端显示的第二待测试页面中元素的位置。
测试终端向第一终端发送自动测试指令后,在第一终端执行自动测试指令的过程中,测试终端可以通过第一识别模型确定第一终端显示的第一待测试页面中元素的位置,从而使得第一终端可以根据该位置完成自动测试指令对应的测试操作。
具体地,测试终端可以通过第一识别模型对第一终端所显示的第一待测试页面中的图像进行扫描,确定与目标元素匹配的目标图像,则目标图像所在的区域即目标元素的位置,其中,目标元素为第一待测试页面中的任意元素。
测试终端向第二终端发送自动测试指令后,在二终端执行自动测试指令的过程中,测试终端可以通过第一识别模型确定第二终端显示的第二待测试页面中元素的位置,从而使得第二终端可以根据该位置完成自动测试指令对应的测试操作。
具体地,测试终端可以通过第一识别模型对第二终端所显示的第二待测试页面中的图像进行扫描,确定与目标元素匹配的目标图像,则目标图像所在的区域即目标元素的位置,其中,目标元素为第二待测试页面中的任意元素。
需要说明的是,本实施例中,第一识别模型可以是测试终端在执行此步骤之前通过大量训练数据训练后得到的模型,也可以是测试终端从其他设备获取的已经训练好的模型,具体本申请不作限定。
上述实施例中,测试终端可以根据第一识别模型对待测试页面中的元素进行定位,则在后续开发过程中,当待测试页面的元素的位置发生变化时,用户无需输入元素的路径,简化了测试流程,提升了测试效率。
在一实施例中,如图7,步骤S30之后,即测试终端向第一终端以及第二终端发送页面数据之后,该方法还包括:
S61:根据第二识别模型确定目标元素对应图像的存储路径,尺寸和坐标;
本实施例中,第二识别模型是基于大量训练样本训练得到的智能识别模型,通过该智能识别模型可以确定待测试页面中图像的尺寸,坐标和存储路径,因此,测试终端可以根据该智能识别模型中的已数据对待测试页面进行识别处理。
其中,图像的尺寸,即图像的长度和宽度所占的像素。例如,一个图像的尺寸可以表示为40*40,即代表长宽均为40个像素点的长度。
图像的坐标,即图像在显示屏幕中的位置。其中,屏幕的坐标体系定义为:屏幕左上角的点为坐标原点,坐标值为(0,0)。图像的坐标,具体表示为图像左上角的点坐标。例如,若一个尺寸为40*40的图像,其在屏幕中的坐标为(20,30),则代表图像的左上角的点坐标为(20,30),图像所占区域为坐标点(20,30)、(20+40,30)、(20,30+40)和(20+40,30+40)之间的区域。
图像的存储路径:图像对应的下载地址,具体可以是统一资源定位符(uniformresource locator,URL)地址,如:/host/img/logo/a.jpg,客户端根据该URL地址可以从服务端获取相应的图像。
具体地,本实施例中,对于第一待测试页面或第二待测试页面中的任意元素(目标元素),测试终端可以根据第二识别模型确定该目标元素对应图像的存储路径,尺寸和坐标。
S62:截取第一待测试页面中该坐标以及该尺寸对应的第一待识别图像,以及第二待测试页面中该坐标以及该尺寸对应的第二待识别图像,并获取该存储路径对应的目标图像;
测试终端确定目标元素对应图像的尺寸和坐标后,测试终端在第一待测试页面中截取该坐标以及该尺寸对应的图像,在第二待测试页面中截取该坐标以及该尺寸对应的图像,为了便于描述,本实施例将在第一待测试页面截取的图像称为第一待识别图像,将第二待测试页面截取的图像称为第二待识别图像。
测试终端确定目标元素对应图像的存储路径后,测试终端从测试服务器中获取该存储路径对应的图像,为了便于描述,本实施例将测试终端从测试服务器获取的图像称为目标图像。
S63:确定该目标元素为异常显示元素。
测试终端获取第一待识别图像,第二待识别图像以及目标图像后,判断第一待识别图像与目标图像是否匹配,若否,则确定目标元素为异常显示元素。或者,判断第二待识别图像与目标图像是否匹配,若否,则确定目标元素为异常显示元素。
应理解,本实施例中,异常显示元素即在客户端不能正确显示的元素,如显示位置有偏差,显示不完整等。
具体地,测试终端可以将构成待识别图像(即第一待识别图像或第二待识别图像)的像素点与构成目标图像的像素点进行逐一像素值比较,若像素值不一致的像素点达到预设阈值,则确定该待识别图像与目标图像不匹配。更具体地,预设阈值可以是1,即只要存在像素值不一致的像素点,则认为图像不匹配;预设阈值可以是比例值,例如百分之一,即像素值不一致的像素点与总像素点的比值大于百分之一时,则认为图像不匹配;预设阈值还可以时其他值,具体本申请不作限定。
需要说明的是,本实施例中,第二识别模型是基于深度学习框架构建的模型,具体可以是测试终端通过大量训练样本对深度学习模型训练得到的,也可以是测试终端从测试服务端或其他设备中获取的,具体本申请不作限定。具体地,测试终端可以通过如下方式对深度学习模型进行训练得到第二识别模型:针对每次自动化测试,扫描待测试页面中的图像资源,根据URL获取该图像资源,并将该图像资源作为第二识别模型的训练样本,即将该图像资源输入到tensorflow进行训练,得到与该图像对应的特征值,该特征值包括但不限于图像的尺寸大小,图像在待测试页面中的坐标位置,图像的存储路径。
本实施例中,测试终端可以根据训练好的第二识别模型对待测试页面中的图像资源进行智能识别,可以帮助测试人员快速找出异常显示的元素,提升测试效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种自动化测试装置,该自动化测试装置与上述实施例中自动化测试方法一一对应。如图8所示,该自动化测试装置包括第一获取模块301,第一确定模块302,第一发送模块303,第二发送模块304,第三发送模块305以及第二获取模块306。各功能模块详细说明如下:
第一获取模块301,用于获取目标设计文件对应的待测试页面的页面数据,其中,待测试页面包括第一待测试页面和第二待测试页面,第一待测试页面的页面类型与第二待测试页面的页面类型不相同;
第一确定模块302,用于确定与第一待测试页面的页面类型匹配的第一终端类型,以及与第二待测试页面的页面类型匹配的第二终端类型;
第一发送模块303,用于向第一终端类型对应的第一终端发送第一待测试页面的页面数据,以使得第一终端显示第一待测试页面;
第二发送模块304,用于向第二终端类型对应的第二终端发送第二待测试页面的页面数据,以使得第二终端显示第二待测试页面;
第三发送模块305,用于向第一终端以及第二终端发送自动测试指令,以使得第一终端在第一待测试页面执行自动测试指令对应的测序项得到第一测试报告,第二终端在第二待测试页面执行自动测试指令对应的第二测试报告;
第二获取模块306,用于获取第一测试报告以及第二测试报告。
在一实施例中,如图9,自动化测试装置还包括存储模块307,该模块说明如下:
存储模块307,用于存储第一终端在第一待测试页面执行自动测试指令时定位的元素所对应的第一图像,和/或,第二终端在第二待测试页面执行自动测试指令时定位的元素对应的第二图像,第一图像和/或第二图像用于作为训练数据对第一识别模型进行训练,第一识别模型用于测试终端通过图像识别对待测试页面中的元素进行定位。
在一实施例中,如图10,自动化测试装置还包括:第二确定模块308,截取模块309,第三获取模块310,第三确定模块311,各模块说明如下:
第二确定模块308,用于根据第二识别模型确定目标元素对应图像的存储路径,尺寸和坐标,第二识别模型为基于深度学习框架构建的模型,目标元素为待测试页面中任意元素;
截取模块309,用于截取第一待测试页面中坐标以尺寸对应的第一待识别图像,以及第二待测试页面中坐标以及尺寸对应的第二待识别图像;
第三获取模块310,用于获取存储路径对应的目标图像;
第三确定模块311,用于当第一待识别图像与目标图像不匹配,或第二待识别图像与目标图像不匹配时,确定目标元素为异常显示元素。
在一实施例中,如图11,自动化测试装置还包括解析模块312以及生成模块313,各模块说明如下:
解析模块312,用于解析测试驱动文件获得待测试页面对应的测试数据,并从测试数据库中获取预设测试用例,该测试驱动文件用于用户对所述待测试页面对应的测试数据进行编辑;
生成模块313,用于根据测试数据以及测预设试用例生成自动测试指令。
在一实施例中,第一终端为移动端设备,自动化测试装置中的第一发送模块303具体用于通过移动端自动化测试工具将第一待测试页面的页面数据发送至第一终端;
在一实施例中,第二终端为个人计算机PC端设备,自动化测试装置中的第二发送模块304具体用于在该PC端设备启动目标浏览器的进程,使用网页应用程序测试工具将第二待测试页面对应的网页地址录入到所述目标浏览器的地址栏中。
关于自动化测试装置的具体限定可以参见上文中对于自动化测试方法的限定,在此不再赘述。上述自动化测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图12所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种自动化测试方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例自动化测试方法的步骤,例如图2所示的步骤S10至步骤S50。或者,处理器执行计算机程序时实现上述实施例中自动化测试装置的各模块/单元的功能,例如图8所示模块301至模块306的功能。为避免重复,这里不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中自动化测试法,或者,该计算机程序被处理器执行时实现上述装置实施例中自动化测试装置中各模块/单元的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。