本技术涉及软件测试,尤其涉及一种测试方法、装置及存储介质。
背景技术:
1、随着软件技术的不断增加,应用软件中包含的功能越来越多,导致对于应用软件的功能测试越来越复杂。有研究表明,使用应用软件的用户高度重视用户体验,较少用户能容忍有两次以上功能异常错误的应用。因此,确保功能正确性对于提高应用的留存、日活和用户高评价至关重要。
2、相关技术中,以安卓应用为例,其是基于图形用户界面(graphical userinterface,gui)的事件驱动软件,其功能异常的检测通常基于录制回放或人工编写测试用例,事前定义断言检查点,通过重复执行验证是否匹配了断言检查来判断功能是否正确。
3、但是,通过人工编写测试用例,定义断言,耗时较长、效率较低,导致软件测试效率下降。而录制回放重复执行时可能会遇到测试不稳定因素,造成回放结果不一致,从而造成测试结果容易出错的情况。
技术实现思路
1、本技术提供一种测试方法、装置及存储介质,以解决现有软件测试效率下降,测试结果容易出错的问题。
2、第一方面,本技术实施例提供一种测试方法,包括:
3、获取在第一设备上第一应用程序(application,app)执行第一操作对应的第一数据,并获取在第二设备上第二app执行第二操作对应的第二数据,其中,所述第二操作是所述第一设备在所述第一app执行所述第一操作过程中,将所述第一操作镜像到所述第二设备上的,所述第一设备和所述第二设备为型号和操作系统相同的同一款设备,所述第一app和所述第二app为同一app的不同版本的app,所述第一数据包括所述第一app在所述第一设备上执行所述第一操作前的gui tree数据和执行所述第一操作后的gui tree数据,所述第二数据包括所述第二app在所述第二设备上执行所述第二操作前的gui tree数据和执行所述第二操作后的gui tree数据;
4、将所述第一app在所述第一设备上执行所述第一操作前的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作前的gui tree数据进行比较,并将所述第一app在所述第一设备上执行所述第一操作后的gui tree,与所述第二app在所述第二设备上执行所述第二操作后的gui tree数据进行比较;
5、根据gui tree数据比较结果,判断所述第二app的功能是否存在异常。
6、在一种可能的实现方式中,在所述将所述第一app在所述第一设备上执行所述第一操作前的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作前的guitree数据进行比较,并将所述第一app在所述第一设备上执行所述第一操作后的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作后的gui tree数据进行比较之前,还包括:
7、获取在第三设备上所述第一app执行第三操作对应的第三数据,其中,所述第三操作是所述第一设备在所述第一app执行所述第一操作过程中,将所述第一操作镜像到所述第三设备上的,所述第三设备和所述第一设备为型号和操作系统相同的同一款设备,所述第三数据包括所述第一app在所述第三设备上执行所述第三操作前的gui tree数据和执行所述第三操作后的gui tree数据;
8、所述将所述第一app在所述第一设备上执行所述第一操作前的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作前的gui tree数据进行比较,并将所述第一app在所述第一设备上执行所述第一操作后的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作后的gui tree数据进行比较,包括:
9、分别将所述第一app在所述第一设备上执行所述第一操作前的gui tree数据和所述第一app在所述第三设备上执行所述第三操作前的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作前的gui tree数据进行比较,并分别将所述第一app在所述第一设备上执行所述第一操作后的gui tree数据和所述第一app在所述第三设备上执行所述第三操作后的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作后的gui tree数据进行比较。
10、在一种可能的实现方式中,所述分别将所述第一app在所述第一设备上执行所述第一操作前的gui tree数据和所述第一app在所述第三设备上执行所述第三操作前的guitree数据,与所述第二app在所述第二设备上执行所述第二操作前的gui tree数据进行比较,并分别将所述第一app在所述第一设备上执行所述第一操作后的gui tree数据和所述第一app在所述第三设备上执行所述第三操作后的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作后的gui tree数据进行比较,包括:
11、确定所述第一app在所述第三设备上执行所述第三操作前的gui tree数据,与所述第一app在所述第一设备上执行所述第一操作前的gui tree数据的第一公共数据,以及所述第一app在所述第三设备上执行所述第三操作后的gui tree数据,与所述第一app在所述第一设备上执行所述第一操作后的gui tree数据的第二公共数据;
12、将所述第二app在所述第二设备上执行所述第二操作前的gui tree数据,与所述第一公共数据进行比较,并将所述第二app在所述第二设备上执行所述第二操作后的guitree数据,与所述第二公共数据进行比较。
13、在一种可能的实现方式中,所述根据gui tree数据比较结果,判断所述第二app的功能是否存在异常,包括:
14、若所述第二app在所述第二设备上执行所述第二操作前的gui tree数据,与所述第一公共数据比较相同,且所述第二app在所述第二设备上执行所述第二操作后的guitree数据,与所述第二公共数据比较相同,则判断所述第二app的功能正常。
15、在一种可能的实现方式中,所述第一app的功能正常;
16、所述根据gui tree数据比较结果,判断所述第二app的功能是否存在异常,包括:
17、若所述第二app在所述第二设备上执行所述第二操作前的gui tree数据,与所述第一公共数据比较不同,和/或,所述第二app在所述第二设备上执行所述第二操作后的guitree数据,与所述第二公共数据比较不同,则判断所述第二app的功能存在异常。
18、在一种可能的实现方式中,在所述根据gui tree数据比较结果,判断所述第二app的功能是否存在异常之前,还包括:
19、获取所述第一app在所述第一设备上执行所述第一操作前的页面图像和执行所述第一操作后的页面图像,并获取第二app在所述第二设备上执行所述第二操作前的页面图像和执行所述第二操作后的页面图像;
20、将所述第一app在所述第一设备上执行所述第一操作前的页面图像,与所述第二app在所述第二设备上执行所述第二操作前的页面图像进行比较,并将所述第一app在所述第一设备上执行所述第一操作后的页面图像,与所述第二app在所述第二设备上执行所述第二操作后的页面图像进行比较;
21、所述根据gui tree数据比较结果,判断所述第二app的功能是否存在异常,包括:
22、根据页面图像比较结果和所述gui tree数据比较结果,判断所述第二app的功能是否存在异常。
23、在一种可能的实现方式中,所述将所述第一app在所述第一设备上执行所述第一操作前的页面图像,与所述第二app在所述第二设备上执行所述第二操作前的页面图像进行比较,并将所述第一app在所述第一设备上执行所述第一操作后的页面图像,与所述第二app在所述第二设备上执行所述第二操作后的页面图像进行比较,包括:
24、确定所述第一app在所述第一设备上执行所述第一操作前的页面图像,与所述第二app在所述第二设备上执行所述第二操作前的页面图像的相似度,以及所述第一app在所述第一设备上执行所述第一操作后的页面图像,与所述第二app在所述第二设备上执行所述第二操作后的页面图像的相似度;
25、根据确定的相似度,获得所述页面图像比较结果。
26、在一种可能的实现方式中,在所述根据gui tree数据比较结果,判断所述第二app的功能是否存在异常之后,包括:
27、若判断所述第二app的功能存在异常,则基于所述第二app的功能存在的异常,进行异常相似性去重处理,获得去重处理后的所述第二app的功能存在的异常。
28、在一种可能的实现方式中,所述基于所述第二app的功能存在的异常,进行异常相似性去重处理,包括:
29、基于所述第二app的功能存在的异常,确定待处理图片序列;
30、提取所述待处理图片序列中的特征,并对所述特征进行聚类;
31、基于聚类结果,获得去重处理后的所述第二app的功能存在的异常。
32、在一种可能的实现方式中,在所述获取在第一设备上第一app执行第一操作对应的第一数据,并获取在第二设备上第二app执行第二操作对应的第二数据之前,还包括:
33、根据测试需求,构造测试环境;
34、所述获取在第一设备上第一app执行第一操作对应的第一数据,并获取在第二设备上第二app执行第二操作对应的第二数据,包括:
35、在所述测试环境,获取在所述第一设备上第一app执行所述第一操作对应的第一数据,并获取在所述第二设备上第二app执行所述第二操作对应的第二数据。
36、在一种可能的实现方式中,所述根据测试需求,构造测试环境,包括:
37、根据所述测试需求,清除所述第一app和所述第二app中的缓存数据,并利用相同类型的登录账号,登录所述第一app和所述第二app。
38、第二方面,本技术实施例提供一种测试装置,包括:
39、获取模块,用于获取在第一设备上第一app执行第一操作对应的第一数据,并获取在第二设备上第二app执行第二操作对应的第二数据,其中,所述第二操作是所述第一设备在所述第一app执行所述第一操作过程中,将所述第一操作镜像到所述第二设备上的,所述第一设备和所述第二设备为型号和操作系统相同的同一款设备,所述第一app和所述第二app为同一app的不同版本的app,所述第一数据包括所述第一app在所述第一设备上执行所述第一操作前的gui tree数据和执行所述第一操作后的gui tree数据,所述第二数据包括所述第二app在所述第二设备上执行所述第二操作前的gui tree数据和执行所述第二操作后的gui tree数据;
40、比较模块,用于将所述第一app在所述第一设备上执行所述第一操作前的guitree数据,与所述第二app在所述第二设备上执行所述第二操作前的gui tree数据进行比较,并将所述第一app在所述第一设备上执行所述第一操作后的gui tree,与所述第二app在所述第二设备上执行所述第二操作后的gui tree数据进行比较;
41、判断模块,用于根据gui tree数据比较结果,判断所述第二app的功能是否存在异常。
42、在一种可能的实现方式中,所述比较模块,具体用于:
43、获取在第三设备上所述第一app执行第三操作对应的第三数据,其中,所述第三操作是所述第一设备在所述第一app执行所述第一操作过程中,将所述第一操作镜像到所述第三设备上的,所述第三设备和所述第一设备为型号和操作系统相同的同一款设备,所述第三数据包括所述第一app在所述第三设备上执行所述第三操作前的gui tree数据和执行所述第三操作后的gui tree数据;
44、分别将所述第一app在所述第一设备上执行所述第一操作前的gui tree数据和所述第一app在所述第三设备上执行所述第三操作前的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作前的gui tree数据进行比较,并分别将所述第一app在所述第一设备上执行所述第一操作后的gui tree数据和所述第一app在所述第三设备上执行所述第三操作后的gui tree数据,与所述第二app在所述第二设备上执行所述第二操作后的gui tree数据进行比较。
45、在一种可能的实现方式中,所述比较模块,具体用于:
46、确定所述第一app在所述第三设备上执行所述第三操作前的gui tree数据,与所述第一app在所述第一设备上执行所述第一操作前的gui tree数据的第一公共数据,以及所述第一app在所述第三设备上执行所述第三操作后的gui tree数据,与所述第一app在所述第一设备上执行所述第一操作后的gui tree数据的第二公共数据;
47、将所述第二app在所述第二设备上执行所述第二操作前的gui tree数据,与所述第一公共数据进行比较,并将所述第二app在所述第二设备上执行所述第二操作后的guitree数据,与所述第二公共数据进行比较。
48、在一种可能的实现方式中,所述判断模块,具体用于:
49、若所述第二app在所述第二设备上执行所述第二操作前的gui tree数据,与所述第一公共数据比较相同,且所述第二app在所述第二设备上执行所述第二操作后的guitree数据,与所述第二公共数据比较相同,则判断所述第二app的功能正常。
50、在一种可能的实现方式中,所述第一app的功能正常;
51、所述判断模块,具体用于:
52、若所述第二app在所述第二设备上执行所述第二操作前的gui tree数据,与所述第一公共数据比较不同,和/或,所述第二app在所述第二设备上执行所述第二操作后的guitree数据,与所述第二公共数据比较不同,则判断所述第二app的功能存在异常。
53、在一种可能的实现方式中,所述判断模块,还用于:
54、获取所述第一app在所述第一设备上执行所述第一操作前的页面图像和执行所述第一操作后的页面图像,并获取第二app在所述第二设备上执行所述第二操作前的页面图像和执行所述第二操作后的页面图像;
55、将所述第一app在所述第一设备上执行所述第一操作前的页面图像,与所述第二app在所述第二设备上执行所述第二操作前的页面图像进行比较,并将所述第一app在所述第一设备上执行所述第一操作后的页面图像,与所述第二app在所述第二设备上执行所述第二操作后的页面图像进行比较;
56、根据页面图像比较结果和所述gui tree数据比较结果,判断所述第二app的功能是否存在异常。
57、在一种可能的实现方式中,所述判断模块,具体用于:
58、确定所述第一app在所述第一设备上执行所述第一操作前的页面图像,与所述第二app在所述第二设备上执行所述第二操作前的页面图像的相似度,以及所述第一app在所述第一设备上执行所述第一操作后的页面图像,与所述第二app在所述第二设备上执行所述第二操作后的页面图像的相似度;
59、根据确定的相似度,获得所述页面图像比较结果。
60、在一种可能的实现方式中,还包括去重模块,用于在所述判断模块根据gui tree数据比较结果,判断所述第二app的功能是否存在异常之后,若判断所述第二app的功能存在异常,则基于所述第二app的功能存在的异常,进行异常相似性去重处理,获得去重处理后的所述第二app的功能存在的异常。
61、在一种可能的实现方式中,所述去重模块,具体用于:
62、基于所述第二app的功能存在的异常,确定待处理图片序列;
63、提取所述待处理图片序列中的特征,并对所述特征进行聚类;
64、基于聚类结果,获得去重处理后的所述第二app的功能存在的异常。
65、在一种可能的实现方式中,还包括构建模块,用于在所述获取模块获取在第一设备上第一app执行第一操作对应的第一数据,并获取在第二设备上第二app执行第二操作对应的第二数据之前,根据测试需求,构造测试环境;
66、所述获取模块,具体用于:
67、在所述测试环境,获取在所述第一设备上第一app执行所述第一操作对应的第一数据,并获取在所述第二设备上第二app执行所述第二操作对应的第二数据。
68、在一种可能的实现方式中,所述构建模块,具体用于:
69、根据所述测试需求,清除所述第一app和所述第二app中的缓存数据,并利用相同类型的登录账号,登录所述第一app和所述第二app。
70、第三方面,本技术实施例提供一种测试设备,包括:
71、处理器;
72、存储器;以及
73、计算机程序;
74、其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。
75、第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法。
76、第五方面,本技术实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面所述的方法。
77、本技术实施例提供的测试方法、装置及存储介质,该方法通过在第一设备上第一app执行第一操作前的gui tree数据和执行该操作后的gui tree数据,以及在第二设备上第二app执行第二操作前的gui tree数据和执行该操作后的gui tree数据,其中,第二操作是第一设备在第一应用程序执行第一操作过程中,将第一操作镜像到第二设备上的,第一设备和第二设备为型号和操作系统相同的同一款设备,进而,判断两个app的功能是否存在异常,无需编写测试用例,花费较少时间,解决现有软件测试通过人工编写测试用例,定义断言,耗时较长、效率较低,导致软件测试效率下降的问题。而且,两个app为同一app的不同版本的app,本技术实施例通过比较同一app的不同版本的app的gui tree数据,能够以较大的概率发现代码之间的区别,从而可以更加准确的识别意料之外的程序行为(app功能异常),提高软件测试准确率。