一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于图形化应用的防火墙设备审计功能测试方法及系统与流程

2022-04-09 10:49:22 来源:中国专利 TAG:


1.本技术涉及设备性能测试技术领域,尤其涉及一种基于图形化应用的防火墙设备审计功能测试方法及系统。


背景技术:

2.防火墙设备是一种通过有机结合各类用于安全管理与筛选的软件和硬件的设备,以帮助终端设备网络于其内、外网之间构建一道相对隔绝的保护屏障,保护用户资料与信息安全性。防火墙设备具备审计功能,当针对某一终端设备ip地址/端口/用户/协议/应用/行为配置了审计策略后,防火墙设备下挂的所有终端设备应用软件的上网行为都会受到监测。如果应用软件上网行为的一个或者多个特征与审计策略匹配,那么应用软件的上网行为将会被记录到日志中或者发送到日志服务器中用于备案。为了确保防火墙设备可以准确的根据审计策略对终端设备中应用软件的上网行为进行审计,需要对防火墙设备的审计功能进行测试。
3.目前,对于防火墙设备的审计功能测试需要人工地去操作应用软件,并且在防火墙设备审计结束后还需要人工的去查看审计日志,进而确定审计功能测试的结果。对于图形化应用的审计,由于无法通过远程自动化控制图形化应用带操作界面运行,导致难以对图形化应用进行操作和控制。因此,利用现有的防火墙设备的审计功能测试方法,单纯依靠人工来完成这些审计功能测试将是一件重复性非常大、数量非常多的庞大工程,不仅费时费力,效率低下,并且会浪费大量的人力资源和成本。


技术实现要素:

4.本技术提供了一种基于图形化应用的防火墙设备审计功能测试方法及系统。以解决现有的人工测试防火墙设备审计功能的方法,测试过程会消耗大量的人力和时间,导致防火墙设备审计功能测试效率低的问题。
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.控制模块,用于控制所述终端设备对所述图形化应用进行操作,以运行所述图形化应用;
39.第一获取模块,用于获取所述终端设备生成的测试报告文件,所述测试报告文件用于记录所述图形化应用的运行数据;
40.第一判断模块,用于根据所述测试报告判断所述图形化应用是否运行成功;
41.第二获取模块,用于如果所述图形化应用运行成功,则获取所述被测防火墙设备生成的审计日志数据,所述审计日志数据用于记录根据所述审计策略对所述图形化应用运行的监测数据;
42.第二判断模块,用于判断所述审计日志数据是否符合所述审计策略;如果所述审计日志数据符合所述审计策略,则所述被测防火墙设备通过审计功能测试。
43.结合第二方面,在一种可能的实现方式中,该系统还包括:第一删除模块,用于删除所述终端设备中的所述测试报告文件和所述执行脚本。
44.结合第二方面,在一种可能的实现方式中,该系统还包括:第二删除模块,用于删除所述被测防火墙设备中所述审计策略和所述审计日志数据。由以上技术方案可知,本技术提供一种基于图形化应用的防火墙设备审计功能测试方法及系统,所述方法应用于测试执行设备,所述测试执行设备与被测防火墙设备连接,所述被测防火墙设备与终端设备连接,所述终端设备上安装有图形化应用,所述图形化应用为以图形方式显示用户操作界面的应用。该方法包括:在所述被测防火墙设备中创建对所述图形化应用的审计策略,所述审计策略为对所述图形化应用的监测规则;控制所述终端设备对所述图形化应用进行操作,以运行所述图形化应用;获取所述终端设备生成的测试报告文件,所述测试报告文件用于记录所述图形化应用的运行数据;根据所述测试报告判断所述图形化应用是否运行成功;如果所述图形化应用运行成功,则获取所述被测防火墙设备生成的审计日志数据,所述审计日志数据用于记录根据所述审计策略对所述图形化应用运行的监测数据;判断所述审计日志数据是否符合所述审计策略;如果所述审计日志数据符合所述审计策略,则所述被测防火墙设备通过审计功能测试。
45.本技术提供的防火墙设备审计功能测试方法,首先在被测防火墙设备中创建对图
形化应用的审计策略。然后,自动控制终端设备以显示用户操作界面的方式运行图形化应用,根据终端设备生成的测试报告文件判断该图形化应用是否运行成功。最后,如果该图形化应用运行成功,获取被测防火墙设备的审计日志数据,判断该审计日志数据是否符合审计策略,从而实现对防火墙设备审计功能的自动化测试。这样,防火墙设备审计功能测试过程中无需人工操作图形化应用,节约了人力资源和时间,提高了防火墙设备审计功能测试的效率。
附图说明
46.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1为本技术实施例提供的一种防火墙设备审计功能测试的应用场景示意图;
48.图2为本技术实施例提供的一种基于图形化应用的防火墙设备审计功能测试的方法流程图;
49.图3为本技术实施例提供的一种控制终端设备对图形化应用进行操作的方法流程图;
50.图4为本技术实施例提供的一种创建计划任务的示意图;
51.图5为本技术实施例提供的一种对图形化应用操作的方法流程图;
52.图6为本技术实施例提供的目标控件图片的示意图;
53.图7为本技术实施例提供的一种判断图形化应用是否运行成功的方法流程图;
54.图8为本技术实施例提供的一种判断图形化应用是否运行结束的方法流程图;
55.图9为本技术实施例提供的一种基于图形化应用的防火墙设备审计功能测试系统结构示意图。
具体实施方式
56.下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施方式并不代表与本技术相一致的所有实施方式。仅是与权利要求书中所详述的、本技术的一些方面相一致的系统和方法的示例。
57.基于本技术描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术所附权利要求保护的范围。此外,虽然本技术中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
58.需要说明的是,本技术中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本技术的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
59.本技术中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明(unless otherwise indicated)。应该理解这样使用的用语在适当情况下可以互
换,例如能够根据本技术实施例图示或描述中给出那些以外的顺序实施。
60.此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
61.本技术中使用的术语“模块”,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
62.防火墙设备是一种通过有机结合各类用于安全管理与筛选的软件和硬件的设备,以帮助终端设备网络于其内、外网之间构建一道相对隔绝的保护屏障,保护用户资料与信息安全性。防火墙设备具备审计功能,当针对某一终端设备ip地址/端口/用户/协议/应用/行为配置了审计策略后,防火墙设备下挂的所有终端设备应用软件的上网行为都会受到监测。如果应用软件上网行为的一个或者多个特征与审计策略匹配,那么应用软件的上网行为将会被记录到日志中或者发送到日志服务器中用于备案。为了确保防火墙设备可以准确的根据审计策略对终端设备中应用软件的上网行为进行审计,需要对防火墙设备的审计功能进行测试。
63.目前,对于防火墙设备的审计功能测试需要人工地去安装以及操作应用软件,并且在防火墙设备审计结束后还需要人工的去查看审计日志,进而确定审计功能测试的结果。对于windows系统终端设备上的图形化应用的审计,由于无法通过远程自动化控制图形化应用带操作界面运行,导致难以对图形化应用进行操作和控制。
64.其原因主要包括:需要审计的图形化应用,例如:即时通讯软件,文件传输,股票金融,社区应用等。多数图形化应用并不是标准的windows窗体结构,很难通过传统的windows api进行自动化控制。目前,对windows终端设备进行的远程自动化控制方法包括power shell远程管理(通过winrm)和ssh连接(通过openssh)。而这两种方法,所能够远程控制的全部都是windows命令行,即使是通过命令行执行脚本打开了图形化应用,也是以后台进程的形式无界面运行的,无法像本地打开程序一样的带界面运行,因为难以对这些图形化应用进行操作和控制。
65.因此,利用现有的防火墙设备的审计功能测试方法,防火墙设备针对图形化应用的审计测试,只能单纯依靠人工来完成这些审计功能测试将是一件重复性非常大、数量非常多的庞大工程,不仅费时费力,效率低下,并且会浪费大量的人力资源和成本。
66.基于上述问题,本技术提供了一种基于图形化应用的防火墙设备审计功能测试方法及系统。以解决现有的人工测试防火墙设备审计功能的方法,无法远程自动控制图形化应用运行,测试过程会消耗大量的人力和时间,导致防火墙设备审计功能测试效率低的问题。
67.第一方面,本技术提供一种基于图形化应用的防火墙设备审计功能测试方法,应用于测试执行设备。请参阅图1,图1为本技术实施例提供的一种防火墙设备审计功能测试的应用场景示意图,如图1所示,所述测试执行设备分别与被测防火墙设备和终端设备连接,所述被测防火墙设备与终端设备连接,在一些实施例中,所述测试执行设备可以通过ssh与被测防火墙设备连接,所述测试执行设备可以通过winrm(windows remote management,即windows远程管理,允许远程用户使用工具和脚本对windows服务器进行管理并获取数据)与终端设备连接。需要说明的是,在一些实施例中,所述终端设备上有两块
网卡(例如网卡1和网卡2),其中,默认路由指向防火墙设备的网关(经由网卡1),有一个专有路由指向测试执行设备(经由网卡2)。终端设备和测试执行设备之间的通讯走专有路由(经由网卡2),终端设备连接互联网或者其它地址走默认路由(经由网卡1)。所述终端设备上安装有图形化应用,所述图形化应用为以图形方式显示用户操作界面的应用,例如:即时通讯软件,文件传输,股票金融,社区应用等。
68.在一些实施例中,测试执行设备中设置有对图形化应用的测试用例脚本。测试用例脚本可用于描述测试的执行过程。以对即时通讯软件qq为例,在该测试用例脚本中需要执行以下步骤s1-s2:
69.s1:登录到被测防火墙设备上,创建针对即时通讯软件qq的审计策略。
70.s2:调用某个函数(函数的输入参数中包括图形化应用操作步骤),打开终端设备上的即时通讯软件qq,登录用户信息,从一个qq用户向另外一个qq用户发送“hello”这个消息。由于终端设备是下挂在被测防火墙设备上的,这一动作将会被监测审计到。消息发送完毕后关闭即时通讯软件qq。
71.s3:在被测防火墙设备上查找相应的审计日志,以确认审计功能是否生效。
72.请参阅图2,图2为本技术实施例提供的一种基于图形化应用的防火墙设备审计功能测试的方法流程图,如图2所示,本技术提供的防火墙设备审计功能测试方法具体包括以下步骤s101-s107:
73.s101:在所述被测防火墙设备中创建对所述图形化应用的审计策略,所述审计策略为对所述图形化应用的监测。
74.在本实施例中,首先需要在被测防火墙设备中创建对所述图形化应用的审计策略,被测防火墙根据所述审计策略对所述图形化应用的进行监测。具体的,所述审计策略可以为对一个图形化应用的操作行为的监测,或者,发送某一个文件的监测,又或者,发送某一个语句关键词的监测等。所述审计策略根据实际测试的需求而确定,本技术对此不做具体限定。
75.示例的,在被测防火墙设备中创建对图形化应用的审计策略可以通过以下方法实现:
76.首先定义各个输入参数。cmd_str0用来在设备上创建审计策略,cmd_str1用来在设备上清除已经存在的日志,cmd_str2用来查询审计日志,cmd_str3用来删除审计策略。execute_script_list定义了将要在所述终端设备上执行的python语句。
77.具体的代码,以如下为例:
[0078][0079]
然后测试执行设备连接被测防火墙设备,配置审计策略。
[0080]
try:
[0081]
device1=device('192.168.230.120','admin','admin@123')
[0082]
device1.connect_to_device()
[0083]
device1.execute_cli(cmd_str0)。
[0084]
s102:控制所述终端设备对所述图形化应用进行操作,以运行所述图形化应用。
[0085]
在本实施例中,测试执行设备可以通过python第三方库pywinrm连接到所述终端设备,并实现远程控制终端设备对所述图形化应用进行操作。由于,无论是power shell远程管理还是ssh连接,所能够远程控制的全部都是dos命令行。即使是通过命令行执行脚本来运行图形化应用,也是以后台进程的形式无界面运行的,这样一来,就无法使用图像识别去定位图形化应用的控件,难以对图形化应用进行操作和控制。
[0086]
为了实现远程控制终端设备以显示用户操作界面的方式运行所述图形化应用,在一种可能的实现方式中,请参阅图3,图3为本技术实施例提供的一种控制终端设备对图形化应用进行操作的方法流程图,如图3所示,步骤s102,所述控制所述终端设备对所述图形化应用进行操作,以运行所述图形化应用的方法包括步骤s201-s202:
[0087]
s201:从所述测试执行设备上,向所述终端设备中创建执行脚本,所述执行脚本用于调用应用操作库文件,所述应用操作库文件预设在所述终端设备中;
[0088]
s202:从所述测试执行设备上,向所述终端设备发送触发指令,所述触发指令用于触发所述终端设备中预设的计划任务运行所述执行脚本,通过所述执行脚本调用所述应用操作库文件,以实现对所述图形化应用的操作。
[0089]
在本实施例中,在终端设备中预设有应用操作库文件(下文以mywinlib.py为应用
操作库文件进行示例性说明)和计划任务(下文以testtask为计划任务进行示例性说明)。测试执行设备在终端设备中创建执行脚本(下文以test_script.py为执行脚本进行示例性说明),所述执行脚本可用于调用应用操作库文件。测试执行设备向所述终端设备发送触发指令(下文以schtasks命令为触发指令进行示例性说明),所述终端设备根据schtasks命令触发testtask计划任务以执行test_script.py执行脚本,test_script.py执行脚本调用mywinlib.py库文件,从而可以实现远程控制终端设备以显示用户操作界面的方式运行所述图形化应用。
[0090]
示例的,从所述测试执行设备上,向终端设备中创建test_script.py执行脚本,可以通过python第三方库pywinrm来远程控制终端设备的命令行,通过dos命令echo将执行脚本的内容逐行写入文件test_script.py中。
[0091]
示例的,在测试执行设备中设置有函数run_script_on_windows(),该函数为各个测试用例提供了控制终端设备的服务。
[0092]
另外的,为了方便频繁的远程控制终端设备命令行,在测试执行设备中设置有函数run_conn_cmd()。这个函数用来执行从所述测试执行设备到所述终端设备发送dos命令的工作。默认情况下,操作过程不显示。如果需要显示,则需要将默认参数display置为true。
[0093]
具体的代码,以如下为例:
[0094][0095]
当测试开始时,测试执行设备可通过函数run_script_on_windows()从测试用例脚本接收参数,具体包括:win_ip,win_user,win_pw,timeout=60以及*args等参数。其中win_ip,win_user,win_pw分别为与被测防火墙设备连接的终端设备的地址,用户,密码。timeout=60参数为等待测试报告文件出现的超时时间,默认是60秒。可变参数*args接收测试用例传过来的执行脚本中的具体执行步骤,即构造出执行脚本的python语句。
[0096]
将可变参数*args中包含的操作过程,拼接成一个列表,这个列表包含了需要在终端设备上运行的执行脚本的所有内容。由于"from mywinlib import*",'try:','finally:'这几条语句是固定的,所以测试用例中不需要包含这一条。将测试用例中传入的python语句插入try和finally之间,并将最后一条语句放在finally后面。使用一个列表test_script_list来保存执行脚本中包含的python语句。
[0097]
具体的代码,以如下为例:
[0098][0099]
接下来,通过python第三方库pywinrm的protocal方法,建立和终端设备的远程power shell连接。
[0100]
具体的代码,以如下为例:
[0101]
conn=winrm.protocol(endpoint=f'http://{win_ip}:5985/wsman',transport='plaintext',username=win_user,password=win_pw)
[0102]
shell_id=conn.open_shell()。
[0103]
接下来,测试执行设备远程控制终端设备,在终端设备创建执行脚本test_script.py,使用python第三方库pywinrm控制终端设备的命令行,通过dos命令echo,逐行将列表test_script_list中包含的python语句写入执行脚本test_script.py。调用上一步骤中的函数run_conn_cmd()完成操作。
[0104]
具体的代码,以如下为例:
[0105]
for n in test_script_list:
[0106]
ꢀꢀꢀꢀꢀꢀ
run_conn_cmd(conn,shell_id,f"echo{n}》》test_script.py")
[0107]
ꢀꢀꢀꢀꢀꢀ
sleep(0.1)。
[0108]
示例的,请参阅图4,图4为本技术实施例提供的一种创建计划任务的示意图,如图4所示,在终端设备中创建testtask计划任务,选择操作为执行test_script.py执行脚本,但是不设置触发器。只有接收到测试执行设备发送的schtasks命令才触发testtask计划任务,具体可以利用如下所述的远程计划任务命令实现:
[0109]
schtasks/run/tn{终端设备计划任务名称}/s{终端设备ip}/u{终端设备用户名}/p{终端设备密码}。
[0110]
而执行此条命令,可以通过python内建库os中system方法在本机执行远程计划任务命令实现。
[0111]
具体的代码,以如下为例:
[0112]
os.system(f'schtasks/run/tn"testtask"/s"{win_ip}"/u"{win_user}"/p"{win_pw}"')。
[0113]
相应的,结束testtask计划任务可以利用下面的程序代码实现:
[0114]
schtasks/end/tn{终端设备计划任务名称}/s{终端设备ip}/u{终端设备用户名}/p{终端设备密码}。
[0115]
具体的代码,以如下为例:
[0116]
os.system(f'schtasks/end/tn"testtask"/s"{win_ip}"/u"{win_user}"/p"{win_pw}"')。
[0117]
所述终端设备上预置的mywinlib.py库文件中包括了的图形化应用的操作方法。虽然在终端设备上有许多种图形化应用,但是根据图形化应用的基本操作方法,可以将图形化应用分为即时通讯,社区论坛,股票软件等类型。例如,对于即时通讯类的应用,包括qq,msn等,都可以归为同一个类型。对于防火墙设备,即时通讯类的基本操作步骤包括:打开并登录、发送消息、发送图片、发送文件、关闭应用。这样,创建各种图形化应用的自动化测试脚本的mywinlib.py库文件,就可以简化为创建应用类以及创建典型操作方法的过程。
[0118]
在一种可能的实现方式中,为了提高创建应用操作库文件的效率,所述应用操作库文件包括:多个应用类,以及与所述应用类对应的操作方法。
[0119]
在本实施例中,所述终端设备上预置的mywinlib.py库文件中包含了各种类型的图形化应用的操作方法。例如,对于即时通讯类型的图形化应用,操作方法主要包括:打开,登录,发送文件,发送文字等。对于社区类图形化应用,操作方法主要包括:打开,登录,发帖等作。同一个类型的应用,例如qq和msn,操作过程是类似的,仅仅是做这些操作需要点击的控件不同。因此,对于qq和msn,都可以作为同一个即时通讯类图形化应用的不同实例。
[0120]
在所述执行脚本运行时,会将某个应用类实例化为对象,实例化的过程,会首先执行类的初始化函数__init__()。该初始化函数中包含某些属性,例如通过self.app_name这一属性来表示某一个具体应用的名称。对于qq来说,这个属性self.app_name被赋值为字符串“qq”。对于msn来说,这个属性self.app_name被赋值为字符串“msn”。另外的,通过属性self.report_text来保存最终的执行结果。
[0121]
具体的代码,以如下为例:
[0122][0123]
当这个对象被初始化之后,在使用各种操作方法(比如打开应用,发送消息时),在这些方法对应的函数里面,会判断当前这个对象的self.app_name的值是什么。例如,对于打开应用这个方法,如果self.app_name是“qq”,就会去用qq所在的文件路径去启动qq;如果self.app_name是“msn”,就会去用msn所在的文件路径去启动msn。对于打开聊天窗口这个方法,如果self.app_name是“qq”,就会用提前保存好的qq对话框的图片去做图形识别,找出坐标位置,进而双击qq对话框;如果self.app_name是“msn”,就会用提前保存好的msn对话框的图片去做图形识别,找出坐标位置,进而双击msn对话框。这样,虽然图形化应用的种类很多,却不需要给每一个图形化应用去创建一个类,而是以某一类型的应用去创建一个类,不同的图形化应用使用不同的方式去初始化示例,这样将提高创建应用操作库文件的效率。
[0124]
示例的,当实例化应用类为qq时,在初始化函数中会将变量self.app_name赋值为qq,初始化函数还会创建一个属性self.report_text用来记录测试的结果。终端设备上需
要安装用于测试的图形化应用。启动这些图形化应用有很多种方式。例如,可以通过python第三方库pywinauto中的pywinauto.application().start()来实现。start()中填入应用程序的路径。例如,假如qq安装于路径c:\program files(x86)\tencent\qq\bin\qq.exe,那么具体的代码,以如下为例:
[0125][0126]
在一些应用场景中,很多图形化应用并不是标准的windows窗体结构,很难通过传统的windows api进行自动化控制。因此,本技术实施例中使用图像识别来定位图形化应用中的控件,然后在定位点执行点击,双机,输入文本等操作的。在一种可能的实现方式中,请参阅图5,图5为本技术实施例提供的一种对图形化应用操作的方法流程图,如图5所示,在步骤s202中,对所述图形化应用操作的方法包括步骤s2021-s2024:
[0127]
s2021:在所述终端设备上,获取目标控件图片和所述图形化应用的用户操作界面图片,所述目标控件图片预存在所述终端设备中,所述目标控件图片为所述执行脚本要操作的控件图片。
[0128]
s2022:在所述终端设备上,判断所述用户操作界面图片中是否存在所述目标控件图片。
[0129]
s2023:如果所述用户操作界面图片中存在所述目标控件图,获取所述目标控件图在所述用户操作界面图片中的位置信息;如果所述目标控件图片的位置信息被成功获取,根据所述位置信息执行所述执行脚本对应的操作,本步操作的结果为运行成功;如果未能找到所述目标控件图片的位置信息,本步操作的结果为运行失败。
[0130]
s2024:在所述终端设备上,待所有的操作步骤执行完后,生成测试报告文件,所述测试报告文件包括每一步操作的结果。
[0131]
在本实施中,所述终端设备中预设有目标控件图片,所述终端设备根据所述目标控件图片通过图像识别的方式定位到位置信息,根据所述位置信息执行所述执行脚本的操作。但是,如果没有获取到位置信息,则记录下获取位置信息失败的结果到终端设备上的测试报告文件。如果获取到位置信息,那么记录下获取位置信息成功的结果到终端设备上的测试报告文件。
[0132]
示例的,所述终端设备可以使用python第三方库pyautogui中的pyautogui.locateonscreen(图片路径)去定位各种目标控件在用户操作界面的位置,获得位置信息。定位完成后通过pyautogui.doubleclick(位置信息)、pyautogui.click(位置信息)、pyautogui.typewrite(位置信息)等方式去对目标控件执行双击,单击,输入文字等操作。如果要判断某个操作是否完成或者生效,也可以通过pyautogui.locateonscreen的方法去完成。例如,判断登录是否成功,可以去查找登录成功后的账户图片是否在屏幕中出现。
[0133]
以图形化应用是qq为例,当qq已经启动并登录上以后,需要给某个用户发送消息
的时候,可以通过双击用户图标打开对话框。只要将用于测试的目标控件保存在终端设备本地,请参阅图6,图6为本技术实施例提供的目标控件图片的示意图,如图6所示,控件图片某一图形化应用中,为执行某一特定操作,例如打开对话框,发送文字,打开搜索框等操作对应的功能性控件的截图。然后使用buttonlocation=pyautogui.locateonscreen()方法就可以定位到目标控件在用户操作界面的坐标,然后执行pyautogui.doubleclick(buttonlocation),就可以完成这个双击操作,打开用户对话框。
[0134]
在一些实施例中,打开用户对话框可以通过函数open_chat_win()实现。在函数open_chat_win()中,会将qq测试账号的目标控件图片路径赋值给控件定位符locater。接下来使用pyautogui.locateonscreen方法找出目标控件图片在用户操作界面中的位置。如果没有找到相应位置,则定位失败,函数open_chat_win中的变量buttonlocation将会是none。只有定位成功,获取到位置信息,才会执行双击操作,并记录当前步骤的结果'open_chat_win:success\n'。反之,仅仅记录下当前步骤的结果'open_chat_win:false\n',不会执行双击操作。最后,函数会将目标控件的位置信息返回。
[0135]
具体的代码,以如下为例:
[0136][0137][0138]
在一些实施例中,对于图形化应用中的文本输入,可以使用函数text_input。由于文本输入和具体的应用类没有任何关系,任何应用都是使用相同的方法,所以文本输入并不需要放在各个应用类里面,而是直接放在mywinlib.py库文件中,直接使用pyautogui.typewrite()实现文本输入。
[0139]
具体的代码,以如下为例:
[0140]
def text_input(input_char):
[0141]
ꢀꢀꢀꢀ
pyautogui.typewrite(input_char)
[0142]
ꢀꢀꢀꢀ
sleep(1)。
[0143]
当所述执行脚本对应所有的操作都执行完后,需要关闭当前图形化应用。本技术实施例通过关闭图形化应用进程,即在所有进程中找出名称中包含图形化应用关键字的进程,获取其pid,然后将图形化应用关闭。具体的,可以在所述终端设备上,通过python内建
库os中system方法在本机执行msdos命令taskkill/f/pid{进程id}的方法关闭图形化应用。函数的输入参数为待关闭应用的名称,根据其名称,可以找到对应的pid将其关闭。
[0144]
具体的代码,以如下为例:
[0145][0146]
待所述终端设备上,操作图形化应用的所有步骤执行完毕,会生成一个用作测试报告的文本文件,保存与终端设备本地。需要说明的是,在终端设备上运行的执行脚本有多个步骤,在最后一个步骤运行结束后,会在终端设备上生成一个测试报告文件。
[0147]
具体的代码,以如下为例:
[0148][0149]
s103:从所述测试执行设备上,获取所述终端设备生成的测试报告文件,所述测试报告文件用于记录所述图形化应用的运行数据。
[0150]
在本实施例中,当所述执行脚本对应的操作都执行完毕后,需要将相关的测试结果保存至测试报告文件(下文以report_text.txt文件为测试报告文件进行示例性说明)。由于测试执行设备并不是直接执行test_script.py脚本,而是通过发送schtasks命令触发testtask计划任务的形式来执行脚本的,所以测试执行设备无法直接获取test_script.py脚本的运行结果,只能在test_script.py脚本运行完后读取测试报告文件的方式来获得运行结果。
[0151]
由于所述测试执行设备无法直接获知所述终端设备上图形化应用的操作步骤是否已经操作完成,故而在向所述终端设备下发触发计划任务的命令后,就循环查询所述终端设备上是否出现了测试报告文件,如果出现该文件或者循环超出限定次数后会退出该循环。从所述测试执行设备上,使用python第三方库pywinrm控制终端设备的命令行,通过msdos命令dir实现查询文件是否存在。
[0152]
具体的代码,以如下为例:
[0153][0154]
在找到测试报告文件后,将会执行如下几步操作:
[0155]
s11:从所述测试执行设备上,通过执行远程计划任务命令schtasks/end终止所述终端设备上的计划任务;
[0156]
s12:从所述测试执行设备上,使用python第三方库pywinrm控制终端设备的命令行,通过msdos命令type report_text.txt获取测试报告的内容;
[0157]
s13:从所述测试执行设备上,使用python第三方库pywinrm控制终端设备的命令行,通过msdos命令del删除所述终端设备上的测试报告文件及执行脚本文件。
[0158]
具体的代码,以如下为例:
[0159]
#结束windows终端上的计划任务
[0160]
os.system(f"schtasks/end/tn'testtask'/s'{win_ip}'/u'{win_user}'/p'{win_pw}'")。
[0161]
#获取测试报告内容
[0162]
result=run_conn_cmd(conn,shell_id,"type report_text.txt",display=true)。
[0163]
删除本次运行产生的临时文件
[0164]
run_conn_cmd(conn,shell_id,"del report_text.txt")
[0165]
run_conn_cmd(conn,shell_id,"del test_script.py")
[0166]
return result。
[0167]
s104:根据所述测试报告判断所述图形化应用是否运行成功。
[0168]
在一种可能的实现方式中,请参阅图7,图7为本技术实施例提供的一种判断图形化应用是否运行成功的方法流程图,如图7所示,所述根据所述测试报告判断所述图形化应用是否运行成功的方法包括步骤s1041-s1043:
[0169]
s1041:遍历所述测试报告中的语句信息;
[0170]
s1042:判断所述语句信息中是否存在运行失败语句;
[0171]
s1043:如果所述语句信息中不存在所述运行失败语句,则所述图形化应用运行成功。
[0172]
在本实施例中,通过遍历所述测试报告中的语句信息,是否存在运行失败语句的方式判断所述图形化应用是否运行成功。需要说明的是,由于对图形化应用的操作由多个步骤组成,每一个步骤都会对应有运行成功或者运行失败的语句,并记录在所述测试报告中。只有所有的步骤均运行成功,才能说明所述图形化应用运行成功。一旦,某一个步骤运
行失败,即停止对所述图形化应用的操作,表明所述图形化应用运行失败。因此,需要遍历所述测试报告中每一个操作步骤的运行结果,只有所述语句信息中不存在所述运行失败语句,才能说明所述图形化应用成功完成了执行脚本对应的所有操作,即所述图形化应用运行成功。说明下一步可以可以获取审计日志数据,进一步判断被测防火墙设备的审计功能是否通过测试。
[0173]
s105:如果所述图形化应用运行成功,则获取所述被测防火墙设备生成的审计日志数据,所述审计日志数据用于记录根据所述审计策略对所述图形化应用运行的监测数据。
[0174]
在本实施例中,测试执行设备可以通过ssh连接到所述被测防火墙设备,获取所述被测防火墙设备生成的审计日志数据。所述审计日志数据是由被测防火墙设备生成,其中记录着被测防火墙设备根据所述审计策略对所述图形化应用运行的监测数据。所述审计日志数据用于判断所述被测防火墙设备的审计功能是否通过测试。
[0175]
s106:判断所述审计日志数据是否符合所述审计策略。
[0176]
在本实施例中,判断所述审计日志数据是否符合所述审计策略。即通过判断图形化应用的运行过程中与所述审计策略匹配的操作是否都被记录在所述审计日志数据中。如果图形化应用的运行过程中与所述审计策略匹配的操作都被记录在所述审计日志数据中,则说明所述审计日志数据符合所述审计策略。
[0177]
s107:如果所述审计日志数据符合所述审计策略,则所述被测防火墙设备通过审计功能测试。
[0178]
在本实施例中,如果所述审计日志数据符合所述审计策略,则说明被测防火墙设备可以准确地捕捉并记录图形化应用运行过程中与审计策略匹配的操作,被测防火墙设备审计功能良好,通过审计功能测试。
[0179]
在一种可能的实现方式中,为了保证测试结果的完整性和准确性,只有当所述图形化应用运行结束后,再获取测试报告文件。在步骤s103,所述获取所述终端设备生成的测试报告文件之前还包括:判断所述图形化应用是否运行结束。需要说明的是,本技术实施例中,所述图形化应用运行结束,即相当于所述执行脚本的操作全部执行完毕。如果所述图形化应用运行结束,则获取所述终端设备生成的测试报告文件。
[0180]
在一种可能的实现方式中,请参阅图8,图8为本技术实施例提供的一种判断图形化应用是否运行结束的方法流程图,如图8所示,所述判断所述图形化应用是否运行结束的方法包括步骤s301-s303:
[0181]
s301:获取所述终端设备的文件列表。
[0182]
s302:判断所述文件列表中是否包括测试报告文件。
[0183]
s303:如果所述文件列表中包括所述测试报告文件,则所述图形化应用运行结束。
[0184]
在本实施例中,通过判断所述文件列表中是否包括测试报告文件的方式来确定所述图形化应用是否运行结束。例如。可以通过dos命令dir循环读取终端设备上的文件列表,直到读取到report_text.txt文件出现,就跳出读取循环。report_text.txt文件的出现意味着终端设备上的操作过程已经完成,运行已经结束。
[0185]
在一种可能的实现方式中,在步骤s103,所述获取所述终端设备生成的测试报告文件的步骤之后还包括:删除所述终端设备中的所述测试报告文件和所述执行脚本。
[0186]
在本实施例中,由于测试执行设备中测试用例脚本的多样性和复杂性。在终端设备上创建的执行脚本仅作为一个临时文件,仅用于测试的过程。当所述执行脚本全部执行完毕后就在所述终端设备上将所述执行脚本删除。同时,获取到所述终端设备生成的测试报告文件后,在所述终端设备上将所述测试报告文件删除,这样,可避免对下一次测试造成干扰。
[0187]
在一些实施例中,为了防止出现上一次测试出现异常,从而导致终端设备上的测试报告文件和执行脚本没有被成功删除的情况。每一次进行测试时,首先预防性的在终端设备上删除上一次测试可能残留的测试报告文件和执行脚本,以避免对本次测试造成干扰。
[0188]
在一种可能的实现方式中,在步骤s105,获取所述被测防火墙设备生成的审计日志数据的步骤之后还包括:删除所述被测防火墙设备中的所述审计策略和所述审计日志数据。
[0189]
在本实施例中,当获取到所述被测防火墙设备生成的审计日志数据后,在所述被测防火墙设备上将所述审计策略的相关配置和所述审计日志数据删除,还原所述被测防火墙设备的环境,以避免对下一次测试造成干扰。
[0190]
第二方面,本技术还提供一种基于图形化应用的防火墙设备审计功能测试系统,应用于测试执行设备,所述测试执行设备与被测防火墙设备连接,所述被测防火墙设备与终端设备连接,所述终端设备上安装有图形化应用,所述图形化应用为以图形方式显示用户操作界面的应用;请参阅图9,图9为本技术实施例提供的一种基于图形化应用的防火墙设备审计功能测试系统结构示意图,如图9所示,该系统包括:
[0191]
创建模块,用于在所述被测防火墙设备中创建对所述图形化应用的审计策略,所述审计策略为对所述图形化应用的监测规则;
[0192]
控制模块,用于控制所述终端设备对所述图形化应用进行操作,以运行所述图形化应用;
[0193]
第一获取模块,用于获取所述终端设备生成的测试报告文件,所述测试报告文件用于记录所述图形化应用的运行数据;
[0194]
第一判断模块,用于根据所述测试报告判断所述图形化应用是否运行成功;
[0195]
第二获取模块,用于如果所述图形化应用运行成功,则获取所述被测防火墙设备生成的审计日志数据,所述审计日志数据用于记录根据所述审计策略对所述图形化应用运行的监测数据;
[0196]
第二判断模块,用于判断所述审计日志数据是否符合所述审计策略;如果所述审计日志数据符合所述审计策略,则所述被测防火墙设备通过审计功能测试。结合第二方面,在一种可能的实现方式中,该系统还包括:第一删除模块,用于删除所述终端设备中的所述测试报告文件和所述执行脚本。
[0197]
结合第二方面,在一种可能的实现方式中,该系统还包括:第二删除模块,用于删除所述被测防火墙设备中所述审计策略和所述审计日志数据。
[0198]
由以上技术方案可知,本技术提供一种基于图形化应用的防火墙设备审计功能测试方法及系统,所述方法应用于测试执行设备,所述测试执行设备与被测防火墙设备连接,所述被测防火墙设备与终端设备连接,所述终端设备上安装有图形化应用,所述图形化应
用为以图形方式显示用户操作界面的应用。该方法包括:在所述被测防火墙设备中创建对所述图形化应用的审计策略,所述审计策略为对所述图形化应用的监测规则;控制所述终端设备对所述图形化应用进行操作,以运行所述图形化应用;获取所述终端设备生成的测试报告文件,所述测试报告文件用于记录所述图形化应用的运行数据;根据所述测试报告判断所述图形化应用是否运行成功;如果所述图形化应用运行成功,则获取所述被测防火墙设备生成的审计日志数据,所述审计日志数据用于记录根据所述审计策略对所述图形化应用运行的监测数据;判断所述审计日志数据是否符合所述审计策略;如果所述审计日志数据符合所述审计策略,则所述被测防火墙设备通过审计功能测试。
[0199]
本技术提供的防火墙设备审计功能测试方法,首先在被测防火墙设备中创建对图形化应用的审计策略。然后,自动控制终端设备以显示用户操作界面的方式运行图形化应用,根据终端设备生成的测试报告文件判断该图形化应用是否运行成功。最后,如果该图形化应用运行成功,获取被测防火墙设备的审计日志数据,判断该审计日志数据是否符合审计策略,从而实现对防火墙设备审计功能的自动化测试。这样,防火墙设备审计功能测试过程中无需人工操作图形化应用,节约了人力资源和时间,提高了防火墙设备审计功能测试的效率。
[0200]
本技术提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本技术总的构思下的几个示例,并不构成本技术保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本技术方案所扩展出的任何其他实施方式都属于本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献