一种Web的测试方法及测试平台与流程

文档序号:17949849发布日期:2019-06-18 23:56阅读:280来源:国知局
一种Web的测试方法及测试平台与流程

本发明涉及网络通信领域,特别是涉及一种web的测试方法及一种web测试平台。



背景技术:

由于web应用与用户直接相关,又通常需要承受长时间的大量操作,web项目的功能和性能都必须经过可靠的验证,因此就要经过web项目的全面测试。而随着互联网技术的进步和发展,越来越多的自动化测试框架应用于互联网各个领域中。

而目前所用的测试工具,存在以下几点不足:测试工具中的手动用例和自动化用例分两地存储,配置文件、测试参数,跨平台兼容性测试都需要手动加载和选择对应的测试环境,对于一个新人或者不熟悉代码的人来说,学习编写测试用例,定位页面报错原因的成本较高。

另外一点就是由于本地浏览器自动升级,常常会导致测试框架的webdriver与浏览器不一致,从而产生各种问题。并且当需要在不同的环境下测试时,系统内的数据文件与测试浏览器不匹配,又需要频繁的替换系统内的数据文件,大大降低了测试效率,增加了测试的工作量。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种web的测试方法及一种web测试平台。

为了解决上述问题,本发明实施例公开了一种web的测试方法,该方法包括以下步骤:

获取人工测试用例,根据所述人工测试用例生成自动化用例、页面配置文件和执行用例配置文件;

根据所述执行用例文件确定被测浏览器版本信息,获取并更新与所述被测浏览器版本信息相匹配的驱动driver文件;

根据所述自动化用例、页面配置文件和执行用例配置文件执行测试。

可选地,所述人工测试用例包括基本测试参数、测试url、用例id、用例关键字、用例名称、测试步骤、测试数据;

根据所述基本测试参数、用例名称、用例关键字生成用例执行配置文件;

根据所述测试url、用例id生成页面配置文件;

根据所述测试步骤、测试结果生成自动化用例。

可选地,所述获取并更新与所述被测浏览器版本信息相匹配的驱动driver文件包括:

读取目标浏览器的名称,所述目标浏览器为执行用例配置文件需要测试的浏览器;

根据所述目标浏览器的名称,获取目标浏览器版本信息;

从预置的映射信息表中,查找与所述目标浏览器版本信息匹配的driver版本信息;

根据所述driver版本信息,从预置的driver应用池中获取相应的driver文件并装载。

可选地,所述获取并加载与所述被测浏览器版本信息相匹配的驱动driver文件,还包括:

根据所述执行测试配置文件,确定被测试环境;

根据所述被测试环境,获取对应的host文件;

根据所述对应的host文件替换系统中的host文件。

可选地,根据所述自动化用例、页面配置文件和执行用例配置文件执行测试包括;

根据所述执行用例文件、自动化用例的步骤执行基本功能测试;

根据所述页面配置文件、自动化用例的步骤执行css标签测试;

根据页面配置文件、自动化用例的步骤执行图片相似度测试。

可选地,根据页面配置文件、自动化用例的步骤执行图片相似度测试,还包括:

获取当前元素配置文件的的href链接,并向href连接发送http请求打开链接,判断http请求的返回值是否正确;

若发送的http请求返回值错误,发出用例报错指示;

若发送的http请求返回值正确,拉取当前页面展示图片p1和href配置链接图片p2,判断p1和p2的校验值是否相同;

若校验值相同,确定图片相同;

若校验值不相同,通过图片相似度算法进行图片的图像熵值对比;

若小于熵值,确定图片相同;

若大于熵值,确定图片不相同,发出用例报错指示。

可选地,该方法还包括:

根据所述页面配置文件重新生成新的页面配置文件,并判断新的页面配置文件与原页面配置文件是否相同;

若相同,不以新的页面配置文件替换原页面配置文件;

若不相同,以新的页面配置文件替换原页面配置文件。

可选地,通过css伪码和树表获取新的页面配置文件,所述页面配置文件包括根元素配置文件和被测元素配置文件,获取新的页面配置文件包括:

根据所述页面配置文件提取被测页面的根节点的dom树状结构;

根据所述被测页面的根节点的dom树状结构组成根元素配置文件;

根据所述根元素配置文件获取被测元素配置文件信息;

根据所述被测元素配置文件信息生成被测元素配置文件。

可选地,根据被测页面的根节点的dom树状结构组成根元素配置文件,包括:

获取被测页面的根节点;

根据所述根节点获取到根节点下的唯一标识节点;

根据所述根节点下的唯一标识节点获取根元素配置文件。

可选地,获取被测页面的根节点,还包括:

根据所述被测页面的根节点获取根节点下的唯一标识,并判断被测页面的根节点是否有唯一的id标识;

若所述被测页面的根节点有唯一的id标识,则记录唯一的id标识,并以所述id标识获取根节点;

若所述被测页面的根节点没有唯一的id节点,则判断所述被测页面的根节点是否有css节点;

若所述被测页面的根节点有css节点,则记录css标识,并以所述css标识获取根节点。

若所述被测页面的根节点没有css节点,则通过css定位出元素数组,再判断是否通过内含伪类来唯一定位到该元素;

若能定位,则记录定位信息,并以定位信息获取根节点;

若不能定位,则通过其位置标签定位,并记录位置标签,以位置标签获取根节点。

可选地,根据所述根节点获取到根节点下的唯一标识节点,还包括:

提取根节点root下拥有id标识的节点,通过id标识所述节点的信息,并记录其父节点信息,以父节点信息作为根节点下的唯一标识,从而获取根节点下的唯一标识节点。

可选地,根据所述被测元素配置文件信息生成被测元素配置文件包括:

判断当前节点是否有唯一的id标识;

若所述当前节点有唯一的id标识,将id标识作为其唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若当前节点没有id标识,判断所述当前节点是否有唯一的css标识;

若所述当前节点有唯一的css标识,将css标识作为唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若所述当前节点没有唯一的css标识,获取当前节点的内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点,并将所述内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点记录到原被测元素配置文件中,生成新的被测元素配置文件,从而获得新的页面配置文件。

可选地,还包括获取测试结果,并根据所述测试结果生成测试报告。

本发明还提出了一种web测试平台,所述web测试平台包括用例生成模块、文件装载模块、测试模块;

所述用例生成模块用于获取人工测试用例,并根据所述人工测试用例生成自动化用例、页面配置文件和执行用例配置文件;

所述文件装载模块用于根据所述执行用例文件确定被测浏览器版本信息,获取并更新与所述被测浏览器版本信息相匹配的驱动driver文件;

所述测试模块用于根据所述自动化用例、页面配置文件和执行用例配置文件执行测试。

本发明还提出了一种装置,包括:

一个或多个处理器;和

其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如上所述的方法。

本发明还提出了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。

在本发明的实施例中,先获取人工测试用例,根据人工测试用例生成自动化用例、页面配置文件和执行用例文件,接着匹配更新驱动driver文件,然后根据所述自动化用例、页面配置文件和执行配置文件对web进行测试。本发明提出的测试方法测试过程快速,而且能解决了手工测试到自动化测试的映射关系,使得自动化测试与手工测试能合在一起,更利于系统化的管理测试用例,也降低了测试成本,并且在测试前将测试平台与浏览器匹配,无需人手匹配,也能提高了测试效率。

附图说明

图1是一种web的测试方法的其中一种实施例的步骤流程示意图;

图2是一种web的测试方法的其中一种实施例的步骤流程示意图

图3是本发明其中一种实施例中更新驱动driver文件示意图;

图4是本发明其中一种实施例中更新host文件示意图;

图5是本发明其中一种实施例中获取新的页面配置文件流程示意图;

图6是本发明其中一种实施例中获取根元素配置文件流程示意图;

图7是本发明其中一种实施例中获取被测页面的根节点流程示意图;

图8是本发明其中一种实施例中获取到根节点下的唯一标识节点流程示意图;

图9是本发明其中一种实施例中获取被测元素配置文件信息流程示意图;

图10是本发明其中一种实施例中图片测试流程示意图;

图11是本发明其中一种实施例中重跑机制示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明的一种web的测试方法其中一种实施例的步骤流程图,该方法用于对互联网web进行测试,在本实施例中,测试时可以直接使用测试应用程序,也可以在测试平台或web的服务器等平台上搭载独立的webservice,对互联网web进行测试。在本实施例中该方法具体可以包括以下步骤:

步骤101,获取人工测试用例,根据所述人工测试用例生成自动化用例、页面配置文件和执行用例配置文件;

由于传统的自适应web自动化测试的手动用例与自动化用例需要分开两地存储,当每次跨平台兼容性测试都需要手动加载和选择对应的测试环境,对于一个新人或者不熟悉代码的人来说,学习编写测试用例,定位页面报错原因的成本较高。

在本实施例中,可以通过对所需的关键字、测试参数等组成生成用例,并依据所需的关键字、测试参数等生成相应的配置文件和测试步骤,实现自动化用例的生成,既能增加测试的实用性与可靠性,也能降低其测试成本。

步骤102,根据所述执行用例文件确定被测浏览器版本信息,并获取与被测浏览器相匹配的驱动driver文件,根据所述驱动driver文件更新测试平台驱动driver文件;

因为用户的本地浏览器具有自动更新功能,在测试web时所用的webdriver往往与浏览器版本不匹配,从而会导致测试用例报错或不能测试等问题;并且在测试的web的访问页中,若web访问页的ip地址与本地存储的系统文件host建立的常用web访问页对应的ip地址不匹配,导致测试环境不同从而无法自主运行测试。

本发明提出的web测试方法能在每次进行测试前,对测试时所用的webdriver和本地存储的系统文件host进行更新,确保使用的webdriver与测试的浏览器版本相匹配,web访问页的ip地址与系统文件host建立的常用web访问页对应的ip地址相匹配,避免测试出错,提高了测试的效率。

步骤103,根据所述自动化用例、页面配置文件和执行用例配置文件执行测试;

获取自动化用例、页面配置文件和执行用例配置文件三个文件进行测试,能使得测试结果更加准确,更直观,并且由于自动化用例、页面配置文件和执行用例配置文件三个文件是通过人工用例所生成的,而人工用例可以通过人手输入,在输入时可以增加测试参数、测试步骤等,增加测试的范围,进一步提高测试的准确性。

在本发明的实施例中,可以先人手输入所需的关键字、测试参数和测试步骤等人工用例或输入调用现有的人工用例,然后根据所需的关键字、测试参数等生成的用例,根据生成的用例生成相应的配置文件和测试步骤,接着根据配置文件与测试步骤读取被测试系统本地浏览器ip,将本地浏览器版本ip更新到预设的driver文件中,使得待测试的web与进行测试的设备版本相同,接着根据所述配置文件与所述测试步骤执行测试。整个测试过程快速,而且能解决了手工测试到自动化测试的映射关系,使得自动化测试与手工测试能合在一起,更利于系统化的管理测试用例,也降低了测试成本,并且在测试前将测试平台与浏览器匹配,无需人手匹配,也能提高了测试效率。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图2,示出了本发明的一种web的测试方法其中一种实施例的步骤流程图,在本实施例中,可以使用测试工具(如带有webservice的服务器或测试平台、装有各个测试进程的服务器或测试平台、搭载selenium自动化测试工具的测试平台或服务器等等)进行测试,该方法具体可以包括以下步骤:

步骤201,获取人工测试用例,根据所述人工测试用例生成自动化用例、页面配置文件和执行用例配置文件;

人工测试用例可以通过人手输入,人手编写用例,而人手编写的人工测试用例可以包括基本测试参数、测试url、用例id、用例关键字、用例名称、测试步骤、测试数据等等;

根据所述基本测试参数、用例名称、用例关键字生成用例执行配置文件,生成的用例执行文件为text.xml文件;

根据所述测试url、用例id生成页面配置文件,生成的页面配置文件为.properties文件;

根据所述测试步骤、测试结果生成自动化用例,将自动化用例生成的.jar文件包。其中测试结果可以是人工编写的预期测试结果,也可以是上一次进行测试的测试结果。将测试结果生成自动化用例是为了在最后得到测试结果时,可以将最后得到的测试结果与输入的测试结果进行比对,方便技术人员在测试后进行分析。

人工编写的人工测试用例,可以将手动用例和自动化用例一起存储,更加方便管理,又能快速生成配置文件;在进行跨平台兼容性测试时,能直接加载和选择对应的测试环境,提高了测试效率。即使一个新人或者不熟悉代码的人来说,也能降低出错机率,降低测试成本。人工测试用例可以是人工进行人手输入,也可以人工从导入人工用例。

步骤202,根据所述执行用例文件确定被测浏览器版本信息,获取并更新与所述被测浏览器版本信息相匹配的驱动driver文件。

参照图3,步骤202还可以包括以下子步骤:

子步骤s2021,读取待测试的目标浏览器的名称,所述目标浏览器为执行用例配置文件需要测试的浏览器;

子步骤s2022,根据所述目标浏览器的名称,获取目标浏览器版本信息;

子步骤s2023,从预置的映射信息表中,查找与所述目标浏览器版本信息匹配的driver版本信息;

子步骤s2024,根据所述driver版本信息,从预置的driver应用池中获取相应的driver文件并装载。

根据所述执行用例文件确定被测浏览器版本信息,是为了与被测浏览器的版本信息相匹配,因为被测的浏览器具有自动升级功能,常常会导致被测浏览器的版本信息与测试设备或测试平台不匹配,从而产生各种问题,从而需要人工进行手动匹配,降低了测试效率。在测试前匹配被测浏览器的版本信息能避免测试出错。

参照图4,步骤202还可以包括以下子步骤:

子步骤s2025,根据所述执行用例文件,确定被测环境;

子步骤s2026,根据所述被测试环境,获取对应的host文件;

子步骤s2027,根据所述对应的host文件替换系统中的host文件。

根据所述执行用例文件确定被测浏览器版本信息的同时,确定测试环境,测试环境可以包括主干环境、stg环境,线上环境,主干环境为测试的主环境,stg环境为预发布环境,stg环境与线上环境公用同一个数据库。

因为在互联网web的系统中预设一个没有扩展名的host文件,host文件负责将一些常用的网址域名与其对应的ip地址建立一个关联的数据库,当浏览器输入一个需要的登陆网址时,系统首先会自动从hosts文件中寻找对应的ip地址,一旦找到,系统会立即打开对应的网页,如果没有找到,系统再会将网址提交dns域名解析服务器进行ip地址解析,如果发现是被屏蔽的ip或域名,就会禁止打开此网页。当需要在不同的环境下测试时,需要人手频繁更换host文件,使得测试无法自主运行,从而降低了测试效率。在进行测试前,根据执行用例文件检测测试环境,从而更新host文件,无需人手更换,使得整个测试平台可以自主运行,大大提高了测试的效率。

更新host文件与更新驱动driver文件可以同时进行,也可以分别进行,可以根据实际应用需要进行调整。

步骤203,根据所述页面配置文件重新生成新的页面配置文件,并判断新的页面配置文件与原页面配置文件是否相同;

若相同,则不以新的页面配置文件替换原页面配置文件;

若不相同,则以新的页面配置文件替换原页面配置文件。

由于web测试需要按照自动化用例的步骤进行,而自动化用例过分依赖前端页面元素,若前端页面标签发生细微改变,就可能导致大量的用例因为定位不到页面元素而报错。因此在进行测试前,根据生成的页面配置文件重新生成新的页面配置文件,将新的页面配置文件与原页面配置文件进行比对,若有不同,则使用新的页面配置文件替换原页面配置文件,提高测试的准确性,降低了出错的概率。

本实施例中,是通过css伪码和树表获取新的页面配置文件,所述新的页面配置文件包括根元素配置文件root.properties和被测元素配置文件index.properties;

参照图5,生成新的页面配置文件可以包括以下子步骤:

子步骤s2031,根据所述页面配置文件提取被测页面的根节点的dom树状结构;

子步骤s2032,根据所述被测页面的根节点的dom树状结构组成根元素配置文件;

子步骤s2033,根据所述根元素配置文件获取被测元素配置文件信息;

子步骤s2034,根据所述被测元素配置文件信息生成被测元素配置文件。

根据新生成的根元素配置文件和被测元素配置文件与旧的根元素配置文件和被测元素配置文件进行比对,从而判断页面配置文件是否发送变化,若有变换,用新的页面配置文件替换旧的页面配置文件,避免因页面配置文件的发生变化,导致测试时出错。

参照图6,所述子步骤s2032还可以包括以下子步骤:

子步骤s20321,获取被测页面的根节点;

子步骤s20322,根据所述根节点获取到根节点下的唯一标识节点;

子步骤s20323,根据所述根节点下的唯一标识节点获取根元素配置文件。

参照图7,所述子步骤s20321还可以包括以下子步骤:

子步骤s203211,根据所述被测页面的根节点获取根节点下的唯一标识,并判断被测页面的根节点是否有唯一的id标识;

若所述被测页面的根节点有唯一的id标识,则记录唯一的id标识,以id标识获取根节点;

若所述被测页面的根节点没有唯一的id标识,则判断所述被测页面的根节点是否有css节点;

若所述被测页面的根节点有css节点,则记录css标识,以css标识获取根节点。

若所述被测页面的根节点没有css节点,则通过css定位出元素数组,再判断是否通过内含伪类来唯一定位到该元素;

若能定位,则记录定位信息,以定位信息获取根节点;

若不能定位,则通过其位置标签定位,并记录位置标签,以位置标签获取根节点。

通过获取唯一的id标识、css标识、定位信息或位置等标识,并将其记录到根节点内,从而根据上述的标识获取根节点,使得每一个获取到的根节点都有一一对应的标识,能有效避免页面元素无法标识的情况,无论被测浏览器或被测页面中途发生什么变化,都能记录在新的页面配置文件中,从而提高了后续测试的准确率。若不生成新的页面配置文件,在进行测试时,就会因为前端页面标签发生细微改变,就可能导致大量的用例因为定位不到页面元素而报错。

参照图8,子步骤s20322还可以包括以下子步骤:

子步骤s203221,提取根节点root下拥有id标识的节点,通过id标识的节点的信息,并记录其父节点信息,以父节点信息作为根节点下的唯一标识,从而获取根节点下的唯一标识节点。

将拥有id标识的节点的节点信息以及其父节点信息一一记录下来,并以此作为根节点的唯一标识,使得根节点既能得到标识,又能与其他标识区分开来。

参照图9,子步骤s2033还可以包括以下子步骤:

子步骤s20331,判断当前节点是否有唯一的id标识;

若所述当前节点有唯一的id标识,将id标识作为其唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若当前节点没有id标识,判断所述当前节点是否有唯一的css标识;

若所述当前节点有唯一的css标识,将css标识作为唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若所述当前节点没有唯一的css标识,获取当前节点的内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点,并将所述内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点记录到原被测元素配置文件中,生成新的被测元素配置文件,从而获得新的页面配置文件。

由于css标识是一种用户渲染html或者xml的语言,css利用其选择器可以将样式属性绑定到指定元素节点,即前端开发人员可以利用css设定页面上的每一个样式,无论一个元素定位有多复杂,既然开发人员能够定位并设置样式,那么测试人员也能通过css定位到该元素节点,继而操作该元素节点。css往往能通过简洁的语法快速定位到复杂的元素节点。同时对于能通过id或者css唯一定位到的元素节点,就直接通过其本身的id和css标签定位。如果无法通过css唯一定位到的元素节点,则需要通过结构伪码和内容伪码的方式定位,能保证唯一定位到该元素节点。

在本实施例中,定位的方式可以通过内容伪码定位该元素节点。

步骤204,根据所述自动化用例、页面配置文件和执行用例配置文件执行测试。

在本实施例中,执行测试包括对被测页面进行功能测试、页面css测试和图片测试三项测试,可以根据应用需要对测试项目进行调整,并调整测试项目的测试顺序。

所述功能测试根据所述执行用例文件、自动化用例的步骤执行基本功能测试,在本实施例中,所述基本功能可以包括页面标题、页面当前的url、页面当前源码、页面元素属性和页面元素值等等;

所述页面css测试根据所述页面配置文件、自动化用例的步骤执行css标签测试,所述css标签测试可以先获取标签值,从而获取css的标签值,然后进行各维度的css参数测试;

所述图片测试根据页面配置文件、自动化用例的步骤执行图片相似度测试,所述图片相似度测试可以包括基于校验值、图片相似度测试和基于相似度算法对图片进行比较。

参照图10,图片测试根据页面配置文件、自动化用例的步骤执行图片相似度测试可以包括以下子步骤:

子步骤s2041,获取当前元素配置文件的的href链接,向href连接发送http请求打开链接,并判断http请求的返回值是否正确;

若发送的http请求返回值错误,发出用例报错指示;

若发送的http请求返回值正确,拉取当前页面展示图片p1和href配置链接图片p2,判断p1和p2的校验值是否相同;

若校验值相同,确定图片相同;

若校验值不相同,则通过图片相似度算法进行图片的图像熵值对比;

若小于熵值,确定图片相同;

若大于熵值,确定图片不相同,发出用例报错指示。

在本实施例中,图片p1和p2的校验值可以是md5值,也可以是sha1值或crc校验等等。

在本实施例中,通过三项测试,能增加测试的范围,大大增加测试的准确率。

参照图11,在本实施例中,测试时设有重跑机制,所述重跑机制为失败三次重跑测试;

若第一次测试和第二次测试运行失败,则判断是否为页面元素报错;

若不是页面元素报错,则测试继续重跑,继续测试;

若是页面元素报错,则判断是否为唯一的id标识;

若是唯一的id标识,则重跑该用例,继续测试;

若不是唯一id标识,则找到其唯一id标识的祖父节点或者根节点css节点,通过内含伪码,找到其在祖父节点的位置,则通过标签折叠法,更新其位置信息,找到其祖父节点和兄弟节点进行定位。

步骤205,获取测试结果,并根据测试结果生成测试报告。

测试报告可以包括运行元素高亮显示、错误截图、错误元素打标和错误日志分析等等。最后将测试报告发送到各个测试人员的移动设备中,可以通过email或短信形式发送。

在本发明的实施例中,先然后通过人手编写人工用例,然后根据人工用例生成相应的配置文件和测试步骤,接着根据配置文件与测试步骤更新与被测浏览器相匹配浏览器信息,同时更新测试环境,并利用配置文件与测试步骤及时对页面元素进行更新,生成新的页面元素,再根据所述新的页面元素、所述配置文件与所述测试步骤生成测试结果,最后将测试结果生成测试报告。本发明解决了手工测试到自动化测试的映射关系,更利于系统化的管理测试用例,降低了测试成本;有效的解决了因为浏览器版本升级,driver不匹配导致的测试用例执行失败问题;有效的解决前端页面发生改变,使得页面元素获取不到而导致的元素报错;有效的解决了自动化用例只能进行功能测试的缺陷问题,实现了前端测试;能有效定位错误元素,在最后生成错误报告能清晰明了地说明错误的地方,并且能在错误截图和错误元素加水印,在测试后能对错误进行分析,方便测试人员更好地进行管理。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

本发明还提出了一种web的测试方法其中一种实施例的步骤,在本实施例中,web的测试方法应用于web测试平台,将控制web测试平台进行测试,web测试平台包括:用例生成进程、文件装载进程、元素更新进程、测试进程、报告进程。所用的进程可以根据实际使用需要进行调整,可以适当调整测试平台的测试功能与测试范围。

在本实施例中,该方法具体包括以下步骤:

步骤301,所述用例生成进程获取人工测试用例,根据所述人工测试用例生成自动化用例、页面配置文件和执行用例配置文件;

人工测试用例可以通过人手输入,人手编写用例,而人手编写的人工测试用例可以包括基本测试参数、测试url、用例id、用例关键字、用例名称、测试步骤、测试数据等等;

其中所述用例生成进程根据所述基本测试参数、用例名称、用例关键字生成用例执行配置文件,生成的用例执行文件为text.xml文件;

所述用例生成进程根据所述测试url、用例id生成页面配置文件,生成的页面配置文件为.properties文件;

所述用例生成进程根据所述测试步骤、测试结果生成自动化用例,用例生成进程将自动化用例生成的.jar文件包。输入的测试结果可以是人工编写的预期测试结果,也可以是上一次进行测试的测试结果。将测试结果生成自动化用例是为了在最后得到测试结果时,可以将最后得到的测试结果与输入的测试结果进行比对,方便技术人员在测试后进行分析。

利用用例生成进程将人工编写的测试用例结合在一起,可以将手动用例和自动化用例一起存储,更加方便管理,又能快速生成配置文件;在进行跨平台兼容性测试时,能直接加载和选择对应的测试环境,提高了测试效率。即使一个新人或者不熟悉代码的人来说,也能降低出错机率,降低测试成本。

步骤302,所述文件装载进程根据所述执行用例文件确定被测浏览器版本信息,获取并更新与所述被测浏览器版本信息相匹配的驱动driver文件。

步骤302还可以包括以下子步骤:

子步骤s3021,所述文件装载进程读取目标浏览器的名称,所述目标浏览器为执行用例配置文件需要测试的浏览器;

子步骤s3022,所述文件装置进程根据所述目标浏览器的名称,获取目标浏览器版本信息;

子步骤s3023,所述文件装置进程从预置的映射信息表中,查找与所述目标浏览器版本信息匹配的driver版本信息;

子步骤s3024,所述文件装置进程根据所述driver版本信息,从预置的driver应用池中获取相应的driver文件并装载。

所述文件装载进程根据所述执行用例文件确定被测浏览器版本信息,能使得测试平台的测试版本信息与被测浏览器的版本信息相匹配,因为被测浏览器具有自动升级功能,常常会导致被测浏览器的版本信息与测试平台不匹配,从而产生各种问题,从而需要人工进行手动匹配,降低了测试效率。在加入了文件装载进程后,能对测试平台进行自动匹配更新,使得测试平台与被测浏览器相匹配。

步骤302还可以包括以下子步骤:

子步骤s3025,所述文件装载进程根据所述执行用例文件,确定被测环境;

子步骤s3026,所述文件装载进程根据所述被测试环境,获取对应的host文件;

子步骤s3027,所述文件装载进程根据所述对应的host文件替换系统中的host文件。

所述文件装载进程根据所述执行用例文件确定被测浏览器版本信息的同时,确定测试环境,在本实施例中,测试环境可以包括主干环境、stg环境,线上环境,主干环境为测试的主环境,stg环境为预发布环境,stg环境与线上环境公用同一个数据库。

因为在web的系统中预设一个没有扩展名的host文件,host文件负责将一些常用的网址域名与其对应的ip地址建立一个关联的数据库,当浏览器输入一个需要的登陆网址时,系统首先会自动从hosts文件中寻找对应的ip地址,一旦找到,系统会立即打开对应的网页,如果没有找到,系统再会将网址提交dns域名解析服务器进行ip地址解析,如果发现是被屏蔽的ip或域名,就会禁止打开此网页。当需要在不同的环境下测试时,需要人手频繁更换host文件,使得测试无法自主运行,从而降低了测试效率。在进行测试前,由文件装载进程根据执行用例文件检测测试环境,从而更新host文件,无需人手更换,使得整个测试平台可以自主运行,大大提高了测试的效率。

另外更新host文件与更新驱动driver文件可以同时进行,也可以分别进行,可以根据实际应用需要对更新顺序进行调整。

步骤303,所述元素更新进程根据所述页面配置文件重新生成新的页面配置文件,并判断新的页面配置文件与原页面配置文件是否相同;

若相同,则不以新的页面配置文件替换原页面配置文件;

若不相同,则以新的页面配置文件替换原页面配置文件。

在本实施例中,所用的测试进程需要按照自动化用例的步骤进行测试,而自动化用例过分依赖前端页面元素,若前端页面标签发生细微改变,就可能导致大量的用例因为定位不到页面元素而报错。因此在进行测试前,根据用例生成进程生成的页面配置文件重新生成新的页面配置文件,将新的页面配置文件与用例生成进程生成的页面配置文件进行比对,若有不同,则使用新的页面配置文件替换旧的页面配置文件,提高测试的准确性,降低了出错的概率。

在本实施例中,所述元素更新进程通过css伪码和树表获取新的页面配置文件,所述新的页面配置文件包括根元素配置文件root.properties和被测元素配置文件index.properties,生成新的页面配置文件可以包括以下子步骤:

子步骤s3031,所述元素更新进程根据所述页面配置文件提取被测页面的根节点的dom树状结构;

子步骤s3032,所述元素更新进程根据所述被测页面的根节点的dom树状结构组成根元素配置文件;

子步骤s3033,所述元素更新进程根据所述根元素配置文件获取被测元素配置文件信息;

子步骤s3034,所述元素更新进程根据所述被测元素配置文件信息生成被测元素配置文件。

根据两个新生成的根元素配置文件和被测元素配置文件与旧的页面配置文件进行比对,从而判断页面配置文件是否发送变化,若有变换,用新的页面配置文件替换旧的页面配置文件,避免因页面配置文件的发生变化,导致测试进程在进行测试时出错。

所述子步骤s3032还可以包括以下子步骤:

子步骤s30321,所述元素更新进程获取被测页面的根节点;

子步骤s30322,所述元素更新进程根据所述根节点获取到根节点下的唯一标识节点;

子步骤s30323,所述元素更新进程根据所述根节点下的唯一标识节点获取根元素配置文件。

所述子步骤s30321还可以包括以下子步骤:

子步骤s303211,所述元素更新进程根据所述被测页面的根节点获取根节点下的唯一标识,并判断被测页面的根节点是否有唯一的id标识;

若所述被测页面的根节点有唯一的id标识,则记录唯一的id标识,所述元素更新进程以id标识获取根节点;

若所述被测页面的根节点没有唯一的id标识,则判断所述被测页面的根节点是否有css节点;

若所述被测页面的根节点有css节点,则记录css标识,所述元素更新进程以css标识获取根节点。

若所述被测页面的根节点没有css节点,则通过css定位出元素数组,再判断是否通过内含伪类来唯一定位到该元素;

若能定位,则记录定位信息,所述元素更新进程以定位信息获取根节点;

若不能定位,则通过其位置标签定位,并记录位置标签,所述元素更新进程以位置标签获取根节点。

通过获取唯一的id标识、css标识、定位信息或位置等标识,并将其记录到根节点内,从而根据上述的标识获取根节点,使得每一个获取到的根节点都有一一对应的标识,能有效避免页面元素无法标识的情况,无论被测浏览器或被测页面中途发生什么变化,都能记录在新的页面配置文件中,从而提高了测试进程在后续测试中的准确率。若不生成新的页面配置文件,在进行测试时,就会因为前端页面标签发生细微改变,就可能导致大量的用例因为定位不到页面元素而报错。

子步骤s30322还可以包括以下子步骤:

子步骤s303221,所述元素更新进程提取根节点root下拥有id标识的节点,通过id标识的节点的信息,并记录其父节点信息,以父节点信息作为根节点下的唯一标识,从而获取根节点下的唯一标识节点。

将拥有id标识的节点的节点信息以及其父节点信息一一记录下来,并以此作为根节点的唯一标识,使得根节点既能得到标识,又能与其他标识区分开来。

子步骤s3033还可以包括以下子步骤:

子步骤s30331,所述元素更新进程判断当前节点是否有唯一的id标识;

若所述当前节点有唯一的id标识,所述元素更新进程将id标识作为其唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若当前节点没有id标识,所述元素更新进程判断所述当前节点是否有唯一的css标识;

若所述当前节点有唯一的css标识,所述元素更新进程将css标识作为唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若所述当前节点没有唯一的css标识,所述元素更新进程获取当前节点的内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点,并将所述内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点记录到原被测元素配置文件中,生成新的被测元素配置文件,从而获得新的页面配置文件。

由于css标识是一种用户渲染html或者xml的语言,css利用其选择器可以将样式属性绑定到指定元素节点,即前端开发人员可以利用css设定页面上的每一个样式,无论一个元素定位有多复杂,既然开发人员能够定位并设置样式,那么测试人员也能通过css定位到该元素节点,继而操作该元素节点。css往往能通过简洁的语法快速定位到复杂的元素节点。同时对于能通过id或者css唯一定位到的元素节点,就直接通过其本身的id和css标签定位。如果无法通过css唯一定位到的元素节点,则需要通过结构伪码和内容伪码的方式定位,能保证唯一定位到该元素节点。

定位的方式可以通过内容伪码定位该元素节点。

步骤304,所述测试进程根据所述自动化用例、页面配置文件和执行用例配置文件执行测试,生成测试结果并将所述测试结果发送给所述报告进程。

所述测试进程包括功能进程、页面css进程和图片进程,分别对被测页面进行功能、页面css和图片三项测试。可以根据应用需要对测试项目进行调整,并调整测试项目的测试顺序

所述功能进程根据所述执行用例文件、自动化用例的步骤执行基本功能测试,所述基本功能可以包括页面标题、页面当前的url、页面当前源码、页面元素属性和页面元素值等等;

所述页面css进程根据所述页面配置文件、自动化用例的步骤执行css标签测试,所述css标签测试可以先获取标签值,从而获取css的标签值,然后进行各维度的css参数测试;

所述图片进程根据页面配置文件、自动化用例的步骤执行图片相似度测试,所述图片相似度测试可以包括基于校验值、图片相似度测试和基于相似度算法对图片进行比较。

所述图片进程根据页面配置文件、自动化用例的步骤执行图片相似度测试可以包括以下子步骤:

子步骤s3041,所述图片进程获取当前元素配置文件的的href链接,并向href连接发送http请求打开链接,所述图片进程判断http请求的返回值是否正确;

若所述图片进程发送的http请求返回值错误,所述图片进程发出用例报错指示;

若所述图片进程发送的http请求返回值正确,所述图片进程拉取当前页面展示图片p1和href配置链接图片p2,判断p1和p2的校验值是否相同;

若校验值相同,所述图片进程确定图片相同;

若校验值不相同,则所述图片进程通过图片相似度算法进行图片的图像熵值对比;

若小于熵值,所述图片进程确定图片相同;

若大于熵值,所述图片进程确定图片不相同,图片进程发出用例报错指示。

在本实施例中,图片p1和p2的校验值是md5值。

使用测试进程进行测试,能提高测试效率,并且通过三项测试,能大大增加测试的准确率。

并且测试进程设有重跑机制,所述重跑机制为失败三次重跑;

若第一次测试和第二次测试运行失败,测试进程则判断是否为页面元素报错;

若不是页面元素报错,则测试进程继续重跑,继续测试;

若是页面元素报错,则判断是否为唯一的id标识;

若是唯一的id标识,则重跑该用例,继续测试;

若不是唯一id标识,则找到其唯一id标识的祖父节点或者根节点css节点,通过内含伪码,找到其在祖父节点的位置,则通过标签折叠法,更新其位置信息,找到其祖父节点和兄弟节点进行定位。

步骤305,所述报告进程获取所述测试进程的测试结果,并根据所述测试结果生成测试报告。

测试报告可以包括运行元素高亮显示、错误截图、错误元素打标和错误日志分析等等。最后报告进程将测试报告发送到各个测试人员的移动设备中,可以通过email或短信形式发送。

在本发明的实施例中,由用例生成进程接收测试请求,然后通过人手编写人工用例,然后用例生成进程根据人工用例生成相应的配置文件和测试步骤,接着文件装载进程根据配置文件与测试步骤使得被测浏览器与测试平台相匹配,测试环境与测试平台相匹配,并发送配置文件与测试步骤到元素更新进程,然后元素更新进程利用配置文件与测试步骤及时对页面元素进行更新,生成新的页面元素,再由测试进程根据所述新的页面元素、所述配置文件与所述测试步骤生成执行结果,最后将执行结果发送到报告进程。

在本发明的实施例中,使用各个进程执行以上步骤,能提高测试平台的工作效率,各个进行相互之间执行不同的工作,更加方便管理。相应地,可以调整测试平台的各个进程,从而调整各个进程之间工作。

本发明解决了手工测试到自动化测试的映射关系,更利于系统化的管理测试用例,降低了测试成本;有效的解决了因为浏览器版本升级,driver不匹配导致的测试用例执行失败问题;有效的解决前端页面发生改变,使得页面元素获取不到而导致的元素报错;有效的解决了自动化用例只能进行功能测试的缺陷问题,实现了前端测试;能有效定位错误元素,在最后生成错误报告能清晰明了地说明错误的地方,并且能在错误截图和错误元素加水印,在测试后能对错误进行分析,方便测试人员更好地进行管理。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的

本发明还提出了一种web测试平台,所述web测试平台包括用例生成模块、文件装载模块、测试模块;

所述用例生成模块用于获取人工测试用例,并根据所述人工测试用例生成自动化用例、页面配置文件和执行用例配置文件;

所述文件装载模块用于根据所述执行用例文件确定被测浏览器版本信息,获取并更新与所述被测浏览器版本信息相匹配的驱动driver文件;

所述测试模块用于根据所述自动化用例、页面配置文件和执行用例配置文件执行测试。

在本实施中,所述用例生成模块用于获取人工测试用例,所述人工测试用例可以通过人手工编写,所述人工测试用例包括基本测试参数、测试url、用例id、用例关键字、用例名称、测试步骤、测试数据;

所述用例生成模块用于根据所述基本测试参数、用例名称、用例关键字生成用例执行配置文件;

所述用例生成模块用于根据所述测试url、用例id生成页面配置文件;

所述用例生成模块用于根据所述测试步骤、测试结果生成自动化用例。

在本实施中,所述获取并更新与所述被测浏览器版本信息相匹配的驱动driver文件可以包括:

所述文件装载模块用于读取目标浏览器的名称,所述目标浏览器为执行用例配置文件需要测试的浏览器;

所述文件装置模块用于根据所述目标浏览器的名称,获取目标浏览器版本信息;

所述文件装置模块用于从预置的映射信息表中,查找与所述目标浏览器版本信息匹配的driver版本信息;

所述文件装置模块用于根据所述driver版本信息,从预置的driver应用池中获取相应的driver文件并装载。

在本实施中,所述获取并加载与所述被测浏览器版本信息相匹配的驱动driver文件,还可以包括:

所述文件装置模块用于根据所述执行测试配置文件,确定被测试环境;

所述文件装载模块用于根据所述被测试环境,获取对应的host文件;

所述文件装载模块用于根据所述对应的host文件替换系统中的host文件。

在本实施中,所述测试模块包括功能模块、页面css模块和图片模块,所述测试模块用于根据所述自动化用例、页面配置文件和执行用例配置文件执行测试可以包括;

所述功能模块用于根据所述执行用例文件、自动化用例的步骤执行基本功能测试;

所述页面css模块用于根据所述页面配置文件、自动化用例的步骤执行css标签测试;

所述图片模块用于根据页面配置文件、自动化用例的步骤执行图片相似度测试。

在本实施中,所述图片模块用于根据页面配置文件、自动化用例的步骤执行图片相似度测试,还包括:

所述图片模块用于获取当前元素配置文件的的href链接,并发送http请求打开链接,判断http请求的返回值是否正确;

若所述图片模块发送的http请求返回值错误,图片模块发出用例报错指示;

若所述图片模块发送的http请求返回值正确,所述图片模块拉取当前页面展示图片p1和href配置链接图片p2,判断p1和p2的校验值是否相同;

若校验值相同,所述图片模块确定图片相同;

若校验值不相同,则所述图片模块通过图片相似度算法进行图片的图像熵值对比;

若小于熵值,所述图片模块确定图片相同;

若大于熵值,所述图片模块确定图片不相同,图片模块发出用例报错指示。

在本实施中,所述测试平台还包括元素更新模块;

所述元素更新模块用于根据所述页面配置文件重新生成新的页面配置文件,并判断新的页面配置文件与原页面配置文件是否相同;

若相同,则不以新的页面配置文件替换原页面配置文件;

若不相同,则以新的页面配置文件替换原页面配置文件。

在本实施中,所述页面配置文件包括根元素配置文件和被测元素配置文件,所述元素更新模块通过css伪码和树表获取新的页面配置文件,包括:

所述元素更新模块用于根据所述页面配置文件提取被测页面的根节点的dom树状结构;

所述元素更新模块用于根据所述被测页面的根节点的dom树状结构组成根元素配置文件;

所述元素更新模块用于根据所述根元素配置文件获取被测元素配置文件信息;

所述元素更新模块用于根据所述被测元素配置文件信息生成被测元素配置文件。

在本实施中,所述元素更新模块用于根据被测页面的根节点的dom树状结构组成根元素配置文件,包括:

所述元素更新模块用于获取被测页面的根节点;

所述元素更新模块用于根据所述根节点获取到根节点下的唯一标识节点;

所述元素更新模块用于根据所述根节点下的唯一标识节点获取根元素配置文件。

在本实施中,所述元素更新模块用于获取被测页面的根节点,还包括:

所述元素更新模块判断被测页面的根节点是否有唯一的id标识;

若所述被测页面的根节点有唯一的id标识,则记录唯一的id标识,所述元素更新模块以id标识获取根节点;

若所述被测页面的根节点没有唯一的id节点,则判断所述被测页面的根节点是否有css节点;

若所述被测页面的根节点有css节点,则记录css标识,所述元素更新模块以css标识获取根节点。

若所述被测页面的根节点没有css节点,则通过css定位出元素数组,再判断是否通过内含伪类来唯一定位到该元素;

若能定位,则记录定位信息,所述元素更新模块以定位信息获取根节点;

若不能定位,则通过其位置标签定位,并记录位置标签,所述元素更新模块以位置标签获取根节点。

在本实施中,所述元素更新模块用于根据所述根节点获取到根节点下的唯一标识节点,还包括:

所述元素更新模块用于提取根节点root下拥有id标识的节点,通过id标识所述节点的信息,并记录其父节点信息,以父节点信息作为根节点下的唯一标识,从而获取根节点下的唯一标识节点。

在本实施中,所述元素更新模块用于根据所述被测元素配置文件信息生成被测元素配置文件包括:

所述元素更新模块判断当前节点是否有唯一的id标识;

若所述当前节点有唯一的id标识,所述元素更新模块将id标识作为其唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若当前节点没有id标识,所述元素更新模块判断所述当前节点是否有唯一的css标识;

若所述当前节点有唯一的css标识,所述元素更新模块将css标识作为唯一标识记录到原被测元素配置文件中,并生成新的被测元素配置文件,从而获得新的页面配置文件;

若所述当前节点没有唯一的css标识,所述元素更新模块获取当前节点的内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点,并将所述内容元素、左兄弟节点、右兄弟节点或拥有唯一标识的祖父节点记录到原被测元素配置文件中,生成新的被测元素配置文件,从而获得新的页面配置文件。

在本实施中,所述测试平台还包括报告模块,所述报告模块用于获取测试模块的测试结果,并根据所述测试模块的执行结果生成测试报告。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本发明实施例还提供了一种装置,包括:

一个或多个处理器;和

其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本发明实施例所述的方法。

本发明实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的方法。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种web的测试方法和测试平台,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1