一种基于双层架构的web应用自动化测试方法及系统与流程

未命名 09-22 阅读:74 评论:0


1.本发明涉及应用自动化测试技术领域,特别指一种基于双层架构的web应用自动化测试方法及系统。


背景技术:

2.应用在开发完成之后,需要对其进行相应的测试,随着软件系统变得越来越复杂,传统的人工测试难以覆盖所有的测试场景,应用的自动化测试变得尤为重要。自动化测试可以帮助开发者构建更稳定、更高质量的web应用,同时也提高研发效率,缩短web应用上市时间,它是web应用开发过程中不可或缺的一部分。但是,在线教学软件中广泛应用的远程桌面场景,却很难做到对web应用进行自动化测试。
3.在远程桌面环境下,使用selenium进行自动化测试存在如下问题:1、没有xpath等定位方式,无法精确定位控件;2、截图比对难以保证高精度,容易产生误差;3、没有可供调用的webdriverapi,无法直接操作远程桌面。
4.除了selenium等常规手段外,通过ocr、键盘映射、图像识别等技术虽然也可以对远程桌面环境下的web应用进行自动化测试,但实现都比较复杂,需要根据具体案例随时进行调整,不具备通用性。
5.因此,如何提供一种基于双层架构的web应用自动化测试方法及系统,实现提升web远程桌面应用自动化测试的准确性、便捷性以及通用性,成为一个亟待解决的技术问题。


技术实现要素:

6.本发明要解决的技术问题,在于提供一种基于双层架构的web应用自动化测试方法及系统,实现提升web远程桌面应用自动化测试的准确性、便捷性以及通用性。
7.第一方面,本发明提供了一种基于双层架构的web应用自动化测试方法,包括如下步骤:
8.步骤s10、在内层的远程桌面的虚拟机中运行一自动化测试程序以及若干个待测试的桌面应用程序;
9.步骤s20、通过外层的selenium登录所述远程桌面;
10.步骤s30、selenium调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium;
11.步骤s40、selenium基于所述测试结果继续执行桌面应用程序的自动化测试,或者结束所述远程桌面的会话。
12.进一步地,所述步骤s10中,所述自动化测试程序用于对桌面应用程序进行自动化测试,通过dogtail、pyautogui以及xdotool的工具包基于python代码编写。
13.进一步地,所述步骤s20具体为:
14.通过外层的selenium打开本地浏览器,通过本地浏览器登录教学平台,在所述教
学平台内打开远程桌面。
15.进一步地,所述步骤s30具体为:
16.selenium通过ssh远程登录、远程桌面连接、远程执行命令工具或者ci/cd工具与虚拟机进行通信,进而调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果实时发送给selenium。
17.进一步地,所述远程执行命令工具为ansible、saltstack或者fabric;所述ci/cd工具为jenkins或者gitlabci。
18.第二方面,本发明提供了一种基于双层架构的web应用自动化测试系统,包括如下模块:
19.虚拟机运行模块,用于在内层的远程桌面的虚拟机中运行一自动化测试程序以及若干个待测试的桌面应用程序;
20.远程桌面登录模块,用于通过外层的selenium登录所述远程桌面;
21.自动化测试模块,用于selenium调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium;
22.测试结果接收模块,用于selenium基于所述测试结果继续执行桌面应用程序的自动化测试,或者结束所述远程桌面的会话。
23.进一步地,所述虚拟机运行模块中,所述自动化测试程序用于对桌面应用程序进行自动化测试,通过dogtail、pyautogui以及xdotool的工具包基于python代码编写。
24.进一步地,所述远程桌面登录模块具体用于:
25.通过外层的selenium打开本地浏览器,通过本地浏览器登录教学平台,在所述教学平台内打开远程桌面。
26.进一步地,所述自动化测试模块具体用于:
27.selenium通过ssh远程登录、远程桌面连接、远程执行命令工具或者ci/cd工具与虚拟机进行通信,进而调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果实时发送给selenium。
28.进一步地,所述远程执行命令工具为ansible、saltstack或者fabric;所述ci/cd工具为jenkins或者gitlabci。
29.本发明的优点在于:
30.1、通过在内层的远程桌面的虚拟机中运行自动化测试程序以及待测试的桌面应用程序,通过外层的selenium登录所述远程桌面,以调用自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium,selenium基于测试结果继续执行桌面应用程序的自动化测试,或者结束远程桌面的会话;通过dogtail、pyautogui以及xdotool的工具包基于python代码编写的自动化测试程序,来模拟桌面应用程序的操作,以桌面应用程序进行全面测试,以保障自动化测试的准确性;通过内层和外层的双层架构对远程桌面的桌面应用程序进行自动化测试,可以直接操作远程桌面,以保障自动化测试的便捷性;通过外层的selenium和内层的dogtail、pyautogui、xdotool,可以测试不同类型的桌面应用程序,从而达到全面的测试覆盖,内层的自动化测试程序还可以模拟用户的交互操作使测试用例更加真实,以保障自动化测试的通用性,最终极大的提升了web远程桌面应用自动化测试的准确性、便捷性以及通用性。
31.2、采用基于内层和外层测试相互配合的机制,让测试用例更加全面,能够检测出不同层次的缺陷和问题,有效提高测试质量和测试效率,且在测试过程中,测试人员可以根据测试结果进行不断优化和改进,从而提高测试的覆盖范围和深度,保证测试的质量。
32.3、基于代码级别与系统级别的隔离设计思想,能够更好地实现内层和外层自动化测试的集成,在测试过程中,外层的selenium自动模拟用户的登录、点击等操作,内层的自动化测试程序也能自动模拟用户的双击、菜单和按钮的点击等操作,从而实现端到端的自动化测试,以大大提高测试效率和测试速度,同时减少测试人员的工作量和测试成本。
33.4、传统的自动化测试中,代码与系统环境之间的联系较为紧密,修改代码可能会对系统环境产生影响,反之亦然;本发明通过采用隔离设计思想,将测试代码与系统环境隔离开来,从而实现了更为灵活和高效的测试,使得测试代码可以更加稳定和可靠地运行,减少了测试代码与系统环境之间的相互干扰,提高了测试效率和准确性。
附图说明
34.下面参照附图结合实施例对本发明作进一步的说明。
35.图1是本发明一种基于双层架构的web应用自动化测试方法的流程图。
36.图2是本发明一种基于双层架构的web应用自动化测试系统的结构示意图。
具体实施方式
37.本技术实施例中的技术方案,总体思路如下:使用双层架构对远程桌面的桌面应用程序进行自动化测试,外层采用selenium作教学平台的登录、点击,以及打开远程桌面这些操作的自动化模拟;内层,在远程桌面对应的虚拟机内运行一个自动化测试程序,用来模拟在虚拟机内部的桌面应用程序的操作;外层在打开远程桌面之后自动触发内层的自动化测试程序运行,从而做到无缝对接,实现端到端的自动化测试。
38.请参照图1至图2所示,本发明一种基于双层架构的web应用自动化测试方法的较佳实施例,包括如下步骤:
39.步骤s10、在内层的远程桌面的虚拟机(或容器)中运行一自动化测试程序以及若干个待测试的桌面应用程序(web/shell/gui等);
40.步骤s20、通过外层的selenium登录所述远程桌面;
41.步骤s30、selenium调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium;
42.步骤s40、selenium基于所述测试结果继续执行桌面应用程序的自动化测试,或者结束所述远程桌面的会话。
43.本发明在自动化测试设计方面,基于代码级别与系统级别的隔离设计思想,设计了一个内外层结合的架构,让测试用例更加全面,从而达到了更高的测试效果;在自动化测试技术方面,对外层的web应用,基于浏览器驱动的设计思路,采用selenium等工具,对内层的web应用,基于独立桌面应用程序的思路,采用dogtail、pyautogui、xdotool等工具,设计出一套可以测试linux桌面应用程序的方案,让web应用的功能测试更加全面,从而达到更高的质量保证;为确保自动化测试架构的最大价值,基于内外层测试的有机结合的理念,设计了一套内外层测试相互配合的机制,让测试用例更加全面,从而达到自动化测试最高的
效果。
44.所述步骤s10中,所述自动化测试程序用于对桌面应用程序进行自动化测试,通过dogtail、pyautogui以及xdotool的工具包基于python代码编写。
45.dogtail针对gtk+应用程序,功能较强大,使用xpath选择器定位ui元素,可以完成更复杂的交互和测试,学习曲线较陡,api也比较底层。
46.xdotool用于操控x窗口系统,可以控制任意x应用程序,命令行工具需要结合subprocess模块在python中调用,只能完成基本的点击、输入等操作,较低级别,虽然学习成本较低,但不太易用。
47.pyautogui用于高级封装,易于使用,学习成本低,支持跨平台(windows,macos和linux),可以控制大多数普通应用程序以完成常见操作,功能比较基础,复杂的交互和测试比较困难,是基于图像识别定位ui元素,速度较慢。
48.所述步骤s20具体为:
49.通过外层的selenium打开本地浏览器,通过本地浏览器登录教学平台,在所述教学平台内打开远程桌面。
50.所述步骤s30具体为:
51.selenium通过ssh远程登录、远程桌面连接、远程执行命令工具或者ci/cd工具与虚拟机进行通信,进而调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果实时发送给selenium。
52.ssh远程登录是使用ssh协议,通过终端连接到目标虚拟机,然后在远程终端中运行测试脚本。远程桌面连接是使用远程桌面协议连接到目标虚拟机的桌面环境,并在其中运行测试脚本。远程执行命令工具可以远程连接到多台虚拟机执行命令或脚本。ci/cd工具可以通过构建作业或流水线来远程执行自动化测试脚本。
53.所述远程执行命令工具为ansible、saltstack或者fabric;所述ci/cd工具为jenkins或者gitlabci。
54.具体实施时,可以与集成测试工具(jmeter等)结合,将外层、内层操作串成端到端的自动化测试流程,不仅能完全模拟一次端到端的操作,支持切换不同的虚拟环境,还能支持批量操作(多个虚拟环境),做压力测试。
55.本发明一种基于双层架构的web应用自动化测试系统的较佳实施例,包括如下模块:
56.虚拟机运行模块,用于在内层的远程桌面的虚拟机(或容器)中运行一自动化测试程序以及若干个待测试的桌面应用程序(web/shell/gui等);
57.远程桌面登录模块,用于通过外层的selenium登录所述远程桌面;
58.自动化测试模块,用于selenium调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium;
59.测试结果接收模块,用于selenium基于所述测试结果继续执行桌面应用程序的自动化测试,或者结束所述远程桌面的会话。
60.本发明在自动化测试设计方面,基于代码级别与系统级别的隔离设计思想,设计了一个内外层结合的架构,让测试用例更加全面,从而达到了更高的测试效果;在自动化测试技术方面,对外层的web应用,基于浏览器驱动的设计思路,采用selenium等工具,对内层
的web应用,基于独立桌面应用程序的思路,采用dogtail、pyautogui、xdotool等工具,设计出一套可以测试linux桌面应用程序的方案,让web应用的功能测试更加全面,从而达到更高的质量保证;为确保自动化测试架构的最大价值,基于内外层测试的有机结合的理念,设计了一套内外层测试相互配合的机制,让测试用例更加全面,从而达到自动化测试最高的效果。
61.所述虚拟机运行模块中,所述自动化测试程序用于对桌面应用程序进行自动化测试,通过dogtail、pyautogui以及xdotool的工具包基于python代码编写。
62.dogtail针对gtk+应用程序,功能较强大,使用xpath选择器定位ui元素,可以完成更复杂的交互和测试,学习曲线较陡,api也比较底层。
63.xdotool用于操控x窗口系统,可以控制任意x应用程序,命令行工具需要结合subprocess模块在python中调用,只能完成基本的点击、输入等操作,较低级别,虽然学习成本较低,但不太易用。
64.pyautogui用于高级封装,易于使用,学习成本低,支持跨平台(windows,macos和linux),可以控制大多数普通应用程序以完成常见操作,功能比较基础,复杂的交互和测试比较困难,是基于图像识别定位ui元素,速度较慢。
65.所述远程桌面登录模块具体用于:
66.通过外层的selenium打开本地浏览器,通过本地浏览器登录教学平台,在所述教学平台内打开远程桌面。
67.所述自动化测试模块具体用于:
68.selenium通过ssh远程登录、远程桌面连接、远程执行命令工具或者ci/cd工具与虚拟机进行通信,进而调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果实时发送给selenium。
69.ssh远程登录是使用ssh协议,通过终端连接到目标虚拟机,然后在远程终端中运行测试脚本。远程桌面连接是使用远程桌面协议连接到目标虚拟机的桌面环境,并在其中运行测试脚本。远程执行命令工具可以远程连接到多台虚拟机执行命令或脚本。ci/cd工具可以通过构建作业或流水线来远程执行自动化测试脚本。
70.所述远程执行命令工具为ansible、saltstack或者fabric;所述ci/cd工具为jenkins或者gitlabci。
71.具体实施时,可以与集成测试工具(jmeter等)结合,将外层、内层操作串成端到端的自动化测试流程,不仅能完全模拟一次端到端的操作,支持切换不同的虚拟环境,还能支持批量操作(多个虚拟环境),做压力测试。
72.为了便于理解本发明,通过模拟以下场景的自动化测试进行进一步的说明:用户在浏览器打开教学平台,登录,通过web化(guacamole)远程桌面访问虚拟机(每个用户的虚拟机不同),在远程桌面内部打开idea编写、编译并运行一段scala代码。
73.1、外层:(jmeterselenium插件)使用selenium控制浏览器自动登录教学平台,并通过guacamole打开远程桌面连接。
74.2、外层:(jmeterssh插件)在打开远程桌面连接后,触发内层自动化测试程序运行。可以通过设置好的webhook来触发,或者简单起见ssh/ansible等直接远程运行一个脚本来执行内层测试。
75.3、内层:(python脚本)使用自动化测试工具(如xdotool)在远程桌面内部执行操作。
76.4、内层:(python代码模拟)打开ideaide,通过搜索idea图标并双击来实现。
77.5、内层:(python代码模拟)编写scala代码。在idea中选中scala文件,输入代码:'objecthelloworld{defmain(args:array[string]){println("hello,world!")}}'
[0078]
6、内层:(python代码模拟)编译运行scala代码。可以通过快捷键ctrl+shift+f10来编译并运行,或通过菜单run-》run'helloworld'来实现。
[0079]
7、内层:(python代码模拟)验证scala代码是否正确运行。在idea中查看输出,应该能看到'hello,world!'字样,验证运行成功。
[0080]
8、外层:(jmeterselenium插件)关闭guacamole远程桌面连接。使用selenium继续控制浏览器完成其他操作或者结束测试场景。
[0081]
综上所述,本发明的优点在于:
[0082]
1、通过在内层的远程桌面的虚拟机中运行自动化测试程序以及待测试的桌面应用程序,通过外层的selenium登录所述远程桌面,以调用自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium,selenium基于测试结果继续执行桌面应用程序的自动化测试,或者结束远程桌面的会话;通过dogtail、pyautogui以及xdotool的工具包基于python代码编写的自动化测试程序,来模拟桌面应用程序的操作,以桌面应用程序进行全面测试,以保障自动化测试的准确性;通过内层和外层的双层架构对远程桌面的桌面应用程序进行自动化测试,可以直接操作远程桌面,以保障自动化测试的便捷性;通过外层的selenium和内层的dogtail、pyautogui、xdotool,可以测试不同类型的桌面应用程序,从而达到全面的测试覆盖,内层的自动化测试程序还可以模拟用户的交互操作使测试用例更加真实,以保障自动化测试的通用性,最终极大的提升了web远程桌面应用自动化测试的准确性、便捷性以及通用性。
[0083]
2、采用基于内层和外层测试相互配合的机制,让测试用例更加全面,能够检测出不同层次的缺陷和问题,有效提高测试质量和测试效率,且在测试过程中,测试人员可以根据测试结果进行不断优化和改进,从而提高测试的覆盖范围和深度,保证测试的质量。
[0084]
3、基于代码级别与系统级别的隔离设计思想,能够更好地实现内层和外层自动化测试的集成,在测试过程中,外层的selenium自动模拟用户的登录、点击等操作,内层的自动化测试程序也能自动模拟用户的双击、菜单和按钮的点击等操作,从而实现端到端的自动化测试,以大大提高测试效率和测试速度,同时减少测试人员的工作量和测试成本。
[0085]
4、传统的自动化测试中,代码与系统环境之间的联系较为紧密,修改代码可能会对系统环境产生影响,反之亦然;本发明通过采用隔离设计思想,将测试代码与系统环境隔离开来,从而实现了更为灵活和高效的测试,使得测试代码可以更加稳定和可靠地运行,减少了测试代码与系统环境之间的相互干扰,提高了测试效率和准确性。
[0086]
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

技术特征:
1.一种基于双层架构的web应用自动化测试方法,其特征在于:包括如下步骤:步骤s10、在内层的远程桌面的虚拟机中运行一自动化测试程序以及若干个待测试的桌面应用程序;步骤s20、通过外层的selenium登录所述远程桌面;步骤s30、selenium调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium;步骤s40、selenium基于所述测试结果继续执行桌面应用程序的自动化测试,或者结束所述远程桌面的会话。2.如权利要求1所述的一种基于双层架构的web应用自动化测试方法,其特征在于:所述步骤s10中,所述自动化测试程序用于对桌面应用程序进行自动化测试,通过dogtai l、pyautogui以及xdotool的工具包基于python代码编写。3.如权利要求1所述的一种基于双层架构的web应用自动化测试方法,其特征在于:所述步骤s20具体为:通过外层的selenium打开本地浏览器,通过本地浏览器登录教学平台,在所述教学平台内打开远程桌面。4.如权利要求1所述的一种基于双层架构的web应用自动化测试方法,其特征在于:所述步骤s30具体为:selenium通过ssh远程登录、远程桌面连接、远程执行命令工具或者ci/cd工具与虚拟机进行通信,进而调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果实时发送给selenium。5.如权利要求4所述的一种基于双层架构的web应用自动化测试方法,其特征在于:所述远程执行命令工具为ansible、saltstack或者fabric;所述ci/cd工具为jenkins或者gitlab ci。6.一种基于双层架构的web应用自动化测试系统,其特征在于:包括如下模块:虚拟机运行模块,用于在内层的远程桌面的虚拟机中运行一自动化测试程序以及若干个待测试的桌面应用程序;远程桌面登录模块,用于通过外层的selenium登录所述远程桌面;自动化测试模块,用于selenium调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给selenium;测试结果接收模块,用于selenium基于所述测试结果继续执行桌面应用程序的自动化测试,或者结束所述远程桌面的会话。7.如权利要求6所述的一种基于双层架构的web应用自动化测试系统,其特征在于:所述虚拟机运行模块中,所述自动化测试程序用于对桌面应用程序进行自动化测试,通过dogtai l、pyautogui以及xdotool的工具包基于python代码编写。8.如权利要求6所述的一种基于双层架构的web应用自动化测试系统,其特征在于:所述远程桌面登录模块具体用于:通过外层的selenium打开本地浏览器,通过本地浏览器登录教学平台,在所述教学平台内打开远程桌面。9.如权利要求6所述的一种基于双层架构的web应用自动化测试系统,其特征在于:所
述自动化测试模块具体用于:selenium通过ssh远程登录、远程桌面连接、远程执行命令工具或者ci/cd工具与虚拟机进行通信,进而调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果实时发送给selenium。10.如权利要求9所述的一种基于双层架构的web应用自动化测试系统,其特征在于:所述远程执行命令工具为ansible、saltstack或者fabric;所述ci/cd工具为jenkins或者gitlab ci。

技术总结
本发明提供了应用自动化测试技术领域的一种基于双层架构的web应用自动化测试方法及系统,方法包括如下步骤:步骤S10、在内层的远程桌面的虚拟机中运行一自动化测试程序以及若干个待测试的桌面应用程序;步骤S20、通过外层的Se l en i um登录所述远程桌面;步骤S30、Se l en i um调用虚拟机中的所述自动化测试程序,通过所述自动化测试程序对桌面应用程序进行自动化测试,生成测试结果发送给Se l en i um;步骤S40、Se l en i um基于所述测试结果继续执行桌面应用程序的自动化测试,或者结束所述远程桌面的会话。本发明的优点在于:极大的提升了web远程桌面应用自动化测试的准确性、便捷性以及通用性。便捷性以及通用性。便捷性以及通用性。


技术研发人员:方进
受保护的技术使用者:福建新大陆软件工程有限公司
技术研发日:2023.05.17
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐