一种基于业务驱动的页面对比测试方法及装置与流程

文档序号:29312992发布日期:2022-03-19 20:44阅读:186来源:国知局
一种基于业务驱动的页面对比测试方法及装置与流程

1.本发明涉及软件测试技术领域,尤其是涉及一种基于业务驱动的页面对比测试方法及装置。


背景技术:

2.随着移动互联网的快速发展,app(application,应用程序)可实现的功能越来越复杂,使得app的用户界面显示及交互方式越来越多样化,这给测试人员在发版前对app进行测试回归带来了极大的挑战。
3.针对app的用户界面ui的业务功能不变更,只变更相关业务的接口服务的场景,目前的测试方案是接口测试相关的业务功能,然后用app新版本接入测试,从而验证新的接口服务是否正常。这个过程需要回归app旧版本,需要回归相关业务的所有用户界面ui的交互及功能点。
4.现有技术中采用手工测试的方案,需人工模拟数据和检查app新版本、新接口的参数,工作量巨大,需要投入大量的人力资源,测试效率较低;同时,手工测试覆盖的业务场景不足,漏测率高,测试遗漏的风险比较高。


技术实现要素:

5.本发明的目的是提供一种基于业务驱动的页面对比测试方法及装置,以解决在现有技术中人工测试覆盖场景不足、测试效率较低的技术问题。
6.本发明的目的,可以通过如下技术方案实现:
7.一种基于业务驱动的页面对比测试方法,包括以下步骤:
8.分别对目标应用程序的新、旧版本进行自动化测试,在测试过程中触发变更业务的业务场景并收集业务数据,根据所述业务数据建立新、旧接口间的业务映射关系;其中,所述变更业务为接口服务在目标应用程序的新、旧版本中发生变更的业务,所述新接口与应用程序的新版本对应,所述旧接口与应用程序的旧版本对应;
9.根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口;
10.配置模拟接口模拟与所述变更业务对应的接口,生成所述变更业务对应的模拟数据;
11.根据所述模拟数据分别测试目标应用程序的新、旧版本,对所述变更业务关联的页面进行截图,将页面截图与对应版本的预设页面图片进行图像比对,若相同,则通过页面对比测试,否则输出错误报告。
12.可选地,收集业务数据具体包括:
13.通过业务埋点、页面埋点、行为埋点和接口埋点分别收集业务埋点数据、页面埋点数据、行为埋点数据和接口埋点数据;
14.其中,所述业务埋点数据包括变更业务对应的业务编码和变更业务关联的页面编
码,所述页面埋点数据包括页面编码及页面所包含的接口请求的接口名称,所述行为埋点数据包括产生行为时的接口请求的接口名称,所述接口埋点数据包括接口请求的页面编码、接口名称、请求参数及返回的响应数据。
15.可选地,所述收集业务数据还包括:
16.通过目标应用程序的代理服务器获取所述业务埋点数据、所述页面埋点数据、所述行为埋点数据和所述接口埋点数据。
17.可选地,根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口具体包括:
18.根据所述业务埋点数据分别确定在目标应用程序的新、旧版本中所述变更业务对应的页面,根据所述页面埋点数据和所述业务映射关系确定所述页面对应的接口。
19.可选地,还包括:
20.根据业务编码确定业务是否存在不同版本的接口服务。
21.本发明还提供了一种基于业务驱动的页面对比测试装置,包括:
22.业务数据收集模块,用于分别对目标应用程序的新、旧版本进行自动化测试,在测试过程中触发变更业务的业务场景并收集业务数据,根据所述业务数据建立新、旧接口间的业务映射关系;其中,所述变更业务为接口服务在目标应用程序的新、旧版本中发生变更的业务,所述新接口与应用程序的新版本对应,所述旧接口与应用程序的旧版本对应;
23.业务接口确定模块,用于根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口;
24.数据模拟模块,用于配置模拟接口模拟与所述变更业务对应的接口,生成所述变更业务对应的模拟数据;
25.页面比对模块,用于根据所述模拟数据分别测试目标应用程序的新、旧版本,对所述变更业务关联的页面进行截图,将页面截图与对应版本的预设页面图片进行图像比对,若相同,则通过页面对比测试,否则输出错误报告。
26.可选地,所述业务数据数据收集模块收集业务数据具体包括:
27.所述业务数据数据收集模块通过业务埋点、页面埋点、行为埋点和接口埋点分别收集业务埋点数据、页面埋点数据、行为埋点数据和接口埋点数据;
28.其中,所述业务埋点数据包括变更业务对应的业务编码和变更业务关联的页面编码,所述页面埋点数据包括页面编码及页面所包含的接口请求的接口名称,所述行为埋点数据包括产生行为时的接口请求的接口名称,所述接口埋点数据包括接口请求的页面编码、接口名称、请求参数及返回的响应数据。
29.可选地,所述业务数据数据收集模块收集业务数据还包括:
30.目标应用程序的代理服务器,用于获取所述业务埋点数据、所述页面埋点数据、所述行为埋点数据和所述接口埋点数据。
31.可选地,所述业务接口确定模块根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口具体包括:
32.所述业务接口确定模块根据所述业务埋点数据分别确定在目标应用程序的新、旧版本中所述变更业务对应的页面,根据所述页面埋点数据和所述业务映射关系确定所述页面对应的接口。
33.可选地,所述业务接口确定模块还用于:
34.根据业务编码确定业务是否存在不同版本的接口服务。
35.本发明提供了一种基于业务驱动的页面对比测试方法及装置,其中方法包括以下步骤:分别对目标应用程序的新、旧版本进行自动化测试,在测试过程中触发变更业务的业务场景并收集业务数据,根据所述业务数据建立新、旧接口间的业务映射关系;其中,所述变更业务为接口服务在目标应用程序的新、旧版本中发生变更的业务,所述新接口与应用程序的新版本对应,所述旧接口与应用程序的旧版本对应;根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口;配置模拟接口模拟与所述变更业务对应的接口,生成所述变更业务对应的模拟数据;根据所述模拟数据分别测试目标应用程序的新、旧版本,对所述变更业务关联的页面进行截图,将页面截图与对应版本的预设页面图片进行图像比对,若相同,则通过页面对比测试,否则输出错误报告。
36.有鉴于此,本发明带来的有益效果是:
37.本发明对目标应用程序的新、旧版本进行自动化测试,触发接口服务发生变更的业务场景,收集对应的业务信息数据入库,根据业务信息数据建立新、旧接口间的业务映射关系,能自动化、全面地覆盖业务场景;根据业务信息数据和业务映射关系分析得到变更业务对应的接口,根据变更业务对应接口配置模拟接口,能自动化生成变更业务对应的模拟数据,快速实现新、旧接口间的数据一致性,在全面覆盖业务场景的同时,能大幅提高测试效率。
附图说明
38.图1为本发明的方法流程示意图;
39.图2为本发明的方法实施例的流程示意图;
40.图3为本发明方法实施例的子结构变化示意图;
41.图4为本发明的方法实施例的结构变化示意图;
42.图5为本发明的装置实施例的结构示意图。
具体实施方式
43.本发明实施例提供了一种基于业务驱动的页面对比测试方法及装置,以解决在现有技术中人工测试覆盖场景不足、测试效率较低的技术问题。
44.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的首选实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
45.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
46.针对目标应用程序(application,app)的功能用户界面(user interface,ui)业务不变更,只变更相关业务的接口服务的场景,目前的测试方案是接口测试相关的业务功
能,然后用app的新版本接入测试,验证新的接口服务是否正常,需要回归app的旧版本,工作量巨大,需要回归相关业务的所有ui交互跟功能点,测试风险比较高,容易遗漏。通过本发明提供的于业务驱动的页面对比测试方法及装置,可以有效提高测试效率,并增加覆业务盖面。
47.请参阅图1,本发明提供了一种基于业务驱动的页面对比测试方法的实施例,包括以下步骤:
48.s100:分别对目标应用程序的新、旧版本进行自动化测试,在测试过程中触发变更业务的业务场景并收集业务数据,根据所述业务数据建立新、旧接口间的业务映射关系;其中,所述变更业务为接口服务在目标应用程序的新、旧版本中发生变更的业务,所述新接口与应用程序的新版本对应,所述旧接口与应用程序的旧版本对应;
49.s200:根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口;
50.s300:配置模拟接口模拟与所述变更业务对应的接口,生成所述变更业务对应的模拟数据;
51.s400:根据所述模拟数据分别测试目标应用程序的新、旧版本,对所述变更业务关联的页面进行截图,将页面截图与对应版本的预设页面图片进行图像比对,若相同,则通过页面对比测试,否则输出错误报告。
52.在步骤s100中,目标应用程序的新版本是指相对于其旧版本,有部分业务的接口服务发生了变更,变更业务为接口服务在目标应用程序的新、旧版本中发生变更的业务,当变更业务对应的接口服务发生变更时,分别对目标应用程序app的新、旧版本执行一次ui自动化测试,触发变更业务对应的业务场景,收集业务相关的信息数据入库,然后根据入库的信息数据建立新、旧接口之间的业务字段映射关系。
53.本实施例中,对目标应用程序app的新、旧版本执行自动化测试时,覆盖变更业务对应的业务场景,目的是为了触发业务埋点、页面埋点、行为埋点的发送,以便收集业务相关的信息数据。具体的,通过业务埋点、页面埋点、行为埋点和接口埋点分别收集业务埋点数据、页面埋点数据、行为埋点数据和接口埋点数据,可以用相应的数据表保存这些数据;
54.其中:
55.(1)业务埋点是指通过执行业务用例,触发变更业务对应的业务场景,然后发送对应的业务埋点收集业务埋点数据,其中,业务埋点数据可以包括业务名称、业务编码(即业务id)、业务关联的页面(页面id),页面对应的接口名称(接口api),业务涉及的ui页面/ui模块以及页面/模块对应的接口字段。
56.请参阅图3和图4,例如,商品详情页面展示中商品套装搭配推荐业务模块,假设本次接口服务的变更为:将app旧版本中的suite结构修改成app新版本中的suitev2结构,并且将suite结构中的suiteinfo子结构修改为suitev2结构的suiteinfov2子结构。可以通过业务埋点在app新、旧版本上报的数据中进行业务映射。对于同一个业务id(商品套装搭配推荐模块),在app旧版本对应的业务埋点数据中,旧接口服务对应的为suite结构和suiteinfo子结构;在app新版本对应的业务埋点数据中,新接口服务对应的为suitev2结构和suiteinfov2子结构,也就是说,商品套装搭配推荐模块这个业务模块的数据,在数据库中记录了这2条数据,一个是app旧版本的旧接口服务suite的数据结构,另一个是app新版
本的新接口服务suitev2的数据结构,然后通过这个关系可以确定app新、旧版本的差异。
57.值得说明的是,图3表示新、旧接口某个功能业务中的某个字段的对比,是为了描述字段结构在新、旧接口之间的字段差异。图4中具体列出了差异项,其箭头左侧是旧接口的字段结构,右侧是新接口的字段结构。
58.(2)页面埋点记录app所有页面的页面id以及页面所包含的全部接口请求的接口名称(接口api),同业务埋点类似,通过页面埋点数据可以获取某些跨页面业务的接口请求的接口api。
59.例如,下单流程,从商品列表选择一个商品,进入商品详情,在商品详情页面触发加入购物车,去购物车页面进行结算,在结算页面进行支付。这个业务流程,就涉及到了多个页面。可以通过页面埋点,结合前面的业务埋点,就可以获取到跨页面业务的接口字段在app新、旧版本下存在的数据差异。
60.(3)再通过接口埋点进行整合,接口埋点记录着app新、旧版本中每个接口请求的参数以及接口返回的响应数据。接口埋点数据具体包括:当前发出接口请求的页面id、接口名称(接口api)、接口请求参数、接口返回的响应数据。将业务埋点数据、页面埋点数据和接口埋点数据这3种埋点的数据进行整合,可以建立与app新、旧版本对应的新、旧接口之间的业务映射关系。
61.本实施例中,app的新、旧版本分别执行ui自动化测试或者手工冒烟测试或者开发进行开发过程的调试,都会采集业务埋点信息,即只要启动app就会进行数据采集,将统一业务埋点的接口数据和抓取到的接口返回数据一起入库。根据app的新、旧版本区分新、旧版本接口服务,通过业务id建立新、旧接口之间的业务映射关系,即新接口服务与应用程序的新版本对应,旧接口服务与应用程序的旧版本对应。对重复的数据进行过滤清洗,例如,过滤掉app版本相同且接口服务版本相同的数据。
62.本实施例中,根据业务id建立新接口与旧接口之间的业务映射关系,用来记录同一业务,不同版本的接口服务之间的关系,即对于同一业务,app的新版本对应新的接口服务,app的旧版本对应旧的接口服务。
63.值得说明的是,本实施例中通过键值对建立新、旧接口间的业务映射关系,通过数据库中的数据表表进行映射,业务数据表的关键字key是业务id,每个业务id都有对应的值,例如每个业务id都有对应的接口信息列表(json格式),包括接口id列表、接口版本、app版本、接口请求参数、接口返回的响应数据。
64.在步骤s200中,根据业务数据和业务映射关系,分别确定在目标应用程序的新、旧版本中变更业务对应的接口。
65.本实施例中,对于在app的新、旧版本中接口服务发生变更的变更业务,通过业务字典分析出变更业务所依托的页面对象,再进一步分析页面所包含的接口请求的接口api,从而分析出变更业务所有支撑的接口api。
66.具体的,业务字典包括app的版本、变更业务所涉及的页面、页面所承载的接口服务、接口服务的返回信息、是否存在关联的新、旧版本的接口服务等信息。业务字典数据是通过ui自动化执行后,利用接口抓包的方式获取业务埋点数据、页面埋点数据、行为埋点数据和接口埋点数据,并对这些数据进行清洗得到的。其中,页面埋点数据记录这进入页面后所有请求的接口api,行为埋点数据记录这某一行为产生时的所有请求的接口api,接口埋
点数据记录着所有接口api的请求参数,将这些数据进行整合,得到一个基于业务id的数据表,根据业务id可以查询到某个变更业务是否存在多个版本的接口服务。
67.本实施例中,在执行测试脚本的时候,通过app代理服务器(app-proxy)的数据服务接口获取上面的数据,在自动化测试的测试用例即测试case中使用这些数据。同时,可以根据app的版本设置获取app-proxy的数据,即app的新版本请求接口服务时,返回的是新接口的数据,app的旧版本请求接口服务时,返回的是旧接口数据。
68.值得说明的是,本实施例中根据业务埋点数据、页面埋点数据、行为埋点数据和接口埋点数据得到业务字典,通过业务字典,根据业务id对每个变更业务匹配对应的页面,根据页面所包含的接口请求的接口api可以推导出接口依赖,即根据业务字典可以确定每个变更业务(业务id)对应的所有接口api。
69.在步骤s300中,配置模拟接口用来模拟与变更业务对应的接口,生成变更业务对应的模拟数据。
70.本实施例中,通过接口mock服务和新、旧接口间的业务映射关系,对这些接口对应的变更业务进行数据mock。
71.mock服务(即模拟服务)是指,通过代理请求,然后可以篡改接口数据或者过滤掉接口响应返回的服务。例如,对于下单流程对应的业务埋点数据表,若从数据表中取出的数据对应详情加购的业务,由于加购是需要有库存的,如果库存过期了,那么详情加购的业务就失败,因此,需要有mock服务来支持,将数据造假进入篡改。mock服务也可以通过app的新、旧版本控制对新接口进行mock服务还是对旧接口进行mock服务。
72.值得说明的是,本实施例中自动生成mock数据,这些数据可以通过上述的埋点信息跟接口信息获取,即可以通过收集业务埋点数据、页面埋点数据、行为埋点数据和接口埋点数据获取。
73.在步骤s400中,根据生成的模拟数据分别测试目标应用程序的新、旧版本,对变更业务关联的页面进行截图,将页面截图与对应版本的预设页面图片进行图像比对,若相同,则通过页面对比测试,否则输出错误报告。
74.具体的,根据生成的模拟数据对app的新、旧版本执行ui自动化测试,将变更业务所涉及的页面进行截图保存,所有的自动化任务执行完成后,根据已经分类好的app的新、旧版本对应业务承载的页面图片,对相同业务的页面截图与对应版本中已经分类好的页面图片进行图像比对,若比对结果相同,则通过页面对比测试,若存在差异,则输出错误报告。
75.值得说明的是,本实施例是利用现有技术进行图像比对,例如,基于opencv的图片识别功能进行图像比对。
76.本实施例提供的基于业务驱动的页面对比测试方法,分别对目标应用程序的新、旧版本进行自动化测试,触发接口服务发生变更的业务场景,收集对应的业务信息数据入库,根据业务信息数据建立新、旧接口间的业务映射关系,能自动化、全面地覆盖业务场景;根据业务信息数据和业务映射关系分析得到变更业务对应的接口,根据变更业务对应接口配置模拟接口,能自动化生成变更业务对应的模拟数据,快速实现新、旧接口间的数据一致性,在全面覆盖业务场景的同时,能大幅提高测试效率。
77.请参阅图5,本发明还提供了一种基于业务驱动的页面对比测试装置,包括:
78.业务数据收集模块11,用于分别对目标应用程序的新、旧版本进行自动化测试,在
测试过程中触发变更业务的业务场景并收集业务数据,根据所述业务数据建立新、旧接口间的业务映射关系;其中,所述变更业务为接口服务在目标应用程序的新、旧版本中发生变更的业务,所述新接口与应用程序的新版本对应,所述旧接口与应用程序的旧版本对应;
79.业务接口确定模块12,用于根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口;
80.数据模拟模块13,用于配置模拟接口模拟与所述变更业务对应的接口,生成所述变更业务对应的模拟数据;
81.页面比对模块14,用于根据所述模拟数据分别测试目标应用程序的新、旧版本,对所述变更业务关联的页面进行截图,将页面截图与对应版本的预设页面图片进行图像比对,若相同,则通过页面对比测试,否则输出错误报告。
82.优选地,所述业务数据数据收集模块收集业务数据具体包括:
83.所述业务数据数据收集模块通过业务埋点、页面埋点、行为埋点和接口埋点分别收集业务埋点数据、页面埋点数据、行为埋点数据和接口埋点数据;
84.其中,所述业务埋点数据包括变更业务对应的业务编码和变更业务关联的页面编码,所述页面埋点数据包括页面编码及页面所包含的接口请求的接口名称,所述行为埋点数据包括产生行为时的接口请求的接口名称,所述接口埋点数据包括接口请求的页面编码、接口名称、请求参数及返回的响应数据。
85.优选地,所述业务数据数据收集模块收集业务数据还包括:
86.目标应用程序的代理服务器,用于获取所述业务埋点数据、所述页面埋点数据、所述行为埋点数据和所述接口埋点数据。
87.优选地,所述业务接口确定模块根据所述业务数据和所述业务映射关系,分别确定在目标应用程序的新、旧版本中所述变更业务对应的接口具体包括:
88.所述业务接口确定模块根据所述业务埋点数据分别确定在目标应用程序的新、旧版本中所述变更业务对应的页面,根据所述页面埋点数据和所述业务映射关系确定所述页面对应的接口。
89.优选地,所述业务接口确定模块还用于:
90.根据业务编码确定业务是否存在不同版本的接口服务。
91.本实施例提供的基于业务驱动的页面对比测试装置,分别对目标应用程序的新、旧版本进行自动化测试,触发接口服务发生变更的业务场景,收集对应的业务信息数据入库,根据业务信息数据建立新、旧接口间的业务映射关系,能自动化、全面地覆盖业务场景;根据业务信息数据和业务映射关系分析得到变更业务对应的接口,根据变更业务对应接口配置模拟接口,能自动化生成变更业务对应的模拟数据,快速实现新、旧接口间的数据一致性,在全面覆盖业务场景的同时,能大幅提高测试效率。
92.本实施例提供的基于业务驱动的页面对比测试装置,对于商品详情业务的接口进行大整合,原来需要9个人日才能完成的测试,利用本实施例提供的页面对比测试装置进行测试,只需投入1个人日,建立新旧接口之前的映射关系,自动化、全面覆盖业务场景;通过自动化mock数据,达到新旧接口数据一致性,测试效率大大提高。
93.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
94.在本技术所提供的实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
95.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
96.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
97.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
98.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1