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

一种针对OpenStack云平台的场景式自动化测试方法及系统与流程

2022-06-02 16:48:36 来源:中国专利 TAG:

一种针对openstack云平台的场景式自动化测试方法及系统
技术领域
1.本发明涉及自动化测试技术领域,特别涉及一种针对openstack云平台的场景式自动化测试方法及系统。


背景技术:

2.目前在针对openstack云平台的测试方面大多数公司、人员采用手动测试或脚本测试,此方式虽能实现测试目的,但存在测试效率低、人员劳动量大、易出错、测试场景缺少整合等问题,针对这些问题本技术从测试人员角度出发,提供了一种系统化、便捷化的测试方法及系统,可对新建或变更后的openstack云平台进行功能测试及稳定性测试,以解决现有存在的问题。


技术实现要素:

3.为了解决现有技术的问题,本发明提供了一种针对openstack云平台的场景式自动化测试方法及系统,以解决目前针对openstack云平台测试存在的问题。
4.一方面,本技术提供了一种针对openstack云平台的场景式自动化测试方法,包括:
5.选择一个或多个待测试openstack云平台;
6.对所述待测试openstack云平台和场景化测试脚本套件进行预测试;
7.预测试通过后,执行正式测试进程;
8.根据所述正式测试进程生成正式测试结果。
9.在其中一个实施例中,在所述选择一个或多个待测试openstack云平台前,包括:
10.获取登录认证信息,所述获取登录认证信息包括获取测试系统的登录认证信息和对所述待测试openstack云平台进行认证。
11.在其中一个实施例中,在所述对所述待测试openstack云平台和场景化测试脚本套件进行预测试前,还包括:
12.对所述待测试openstack云平台进行校验,若所述待测试openstack云平台校验不通过,则添加或更新待测试openstack云平台的相关环境认证信息。
13.在其中一个实施例中,在所述对所述待测试openstack云平台和场景化测试脚本套件进行预测试前,还包括:
14.根据测试目的创建场景化测试脚本套件,所述根据测试目的创建场景化测试脚本套件包括:
15.对公共的云平台进行调用以形成所述场景化测试脚本套件;
16.根据测试目的使用编程语言进行编写、修改测试脚本以形成所述场景化测试脚本套件。
17.在其中一个实施例中,所述一种针对openstack云平台的场景式自动化测试方法,还包括:
18.若预测试不通过,则根据预测试结果对所述场景化测试脚本套件进行调整,所述调整包括添加或编辑场景化测试脚本套件。
19.在其中一个实施例中,在所述执行正式测试进程前,还包括:
20.将所述场景化测试脚本套件和测试工具分发至所述待测试openstack云平台;
21.选择执行时间;
22.将所述场景化测试脚本套件放置到一个队列内。
23.在其中一个实施例中,所述根据正式测试进程生成正式测试结果,包括:
24.建立前端浏览器与测试系统后端之间的长连接,所述长连接通过所述前端浏览器发送websocket请求给所述测试系统后端而建立;
25.发送测试开始请求,并采用onmessage方法监听所述websocket的实时消息;
26.建立所述测试系统后端与要操作的服务器即所述待测试openstack云平台的管理节点之间的ssh通道,并将测试开始指令发送给所述ssh通道后的所述待测试openstack云平台的管理节点;
27.将测试系统执行的日志数据通过所述websocket返回给所述前端浏览器,所述前端浏览器接收到所述日志数据之后实时进行显示。
28.在其中一个实施例中,所述一种针对openstack云平台的场景式自动化测试方法,还包括:
29.根据所述场景化测试脚本套件生成相应配置的虚拟机及网络,将所述测试工具通过所述网络拷贝到所述虚拟机内,对所述虚拟机执行测试任务。
30.另一方面,本技术还提供了一种针对openstack云平台的场景式自动化测试系统,包括:
31.后台调度管理模块:用于选择一个或多个待测试openstack云平台;
32.云平台测试模块:用于对所述待测试openstack云平台和场景化测试脚本套件进行预测试、执行正式测试进程及根据正式测试进程生成正式测试结果。
33.再一方面,本技术还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时实现如上所述的一种针对openstack云平台的场景式自动化测试方法的步骤。
34.又一方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的一种针对openstack云平台的场景式自动化测试方法的步骤。
35.本发明提供的技术方案带来的有益效果是:
36.本技术技术方案通过选择一个或多个待测试openstack云平台,对所述待测试openstack云平台和场景化测试脚本套件进行预测试,预测试通过后,执行正式测试进程并根据所述正式测试进程生成正式测试结果,针对目前openstack云平台测试多为手动测试、脚本测试效率低下等问题,本技术实现了将多种测试场景脚本进行整合、并行测试待测试平台并生成测试报告的效果,可用于新建或变更后的openstack云平台测试,其测试过程无人值守、减少人员操作复杂性,节约测试时间。
附图说明
37.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
38.图1是本发明实施例提供的一种针对openstack云平台的场景式自动化测试方法流程图;
39.图2是本发明实施例提供的一种针对openstack云平台的场景式自动化测试方法测试步骤流程图;
40.图3是本发明实施例提供的一种针对openstack云平台的场景式自动化测试系统结构框图;
41.图4是本发明实施例提供的一种针对openstack云平台的场景式自动化测试方法中场景化测试脚本套件执行图;
42.图5是本发明实施例提供的一种针对openstack云平台的场景式自动化测试方法中openstack云平台测试的调度流程图;
43.图6是本发明实施例提供的一种针对openstack云平台的场景式自动化测试方法中openstack虚拟机测试的调度流程图;
44.图7是本发明实施例提供的一种针对openstack云平台的场景式自动化测试方法中场景化测试脚本套件执行步骤图;
45.图8是本发明实施例提供的一种针对openstack云平台的场景式自动化测试方法中测试过程中通信示意图;
具体实施方式
46.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
47.实施例一
48.如图1所示,本技术公开了一种针对openstack云平台的场景式自动化测试方法,包括:
49.s101:选择一个或多个待测试openstack云平台。
50.由于在实际工作中,常常需要对多个openstack云平台进行测试,为提高测试效率,可一次添加多个openstack云平台至测试系统上,以便在执行正式测试进程时并行执行,由此来提高测试效率。
51.需要说明的是,在所述选择一个或多个待测试openstack云平台前,需获取登录认证信息,上述获取登录认证信息包括两部分:
52.获取测试系统的登录认证信息:测试系统的登录认证基于开源的登录认证模块如oauth、cookie-sessi on auth、jwt(json web token)、django-auth等,本技术以django-auth为例说明,该模块提供了用户注册、用户登录、用户认证、用户注销、修改密码等功能,
通过该模块获取测试系统的用户名和密码用以进行测试系统登录认证。
53.对待测试openstack云平台进行认证:其包括openstack云平台api认证和openstack云平台cli认证,可根据实际需要选择其中至少一种进行认证,首先需提供用户名和密码,openstack云平台api认证根据用户名和密码获取用户的token,用以调用openstack云平台的api来获取相应的信息及执行相应的操作;openstack云平台cli可根据用户名和密码直接获取到测试系统的admin-openrc.sh文件,使用该文件完成cli认证,以便调用openstack云平台的cli。
54.s102:对所述待测试openstack云平台和场景化测试脚本套件进行预测试。
55.需要说明的是,为满足测试系统的测试条件,在上述对所述待测试openstack云平台和场景化测试脚本套件进行预测试前,一方面,需要对上述待测试openstack云平台进行校验,如图2所示,若校验不通过,则需添加或更新待测试openstack云平台的相关环境认证信息并进行认证,然后保存或更新数据信息,再次进行校验,直至通过校验。
56.另一方面,需要根据测试目的创建场景化测试脚本套件,上述根据测试目的创建场景化测试脚本套件包括:对公共的云平台进行调用以形成所述场景化测试脚本套件、根据测试目的使用编程语言进行编写、修改测试脚本以形成所述场景化测试脚本套件。
57.其中,上述场景化测试脚本套件包括一个或多个测试脚本,每个测试脚本在执行测试时实现不同的测试功能,可根据实际需要选择不同的测试脚本来形成不同的场景化测试脚本套件,场景化测试脚本套件的编写、修改主要使用python、java等,使用的编程语言本技术并不作具体限定。
58.需要说明的是,本技术的测试方法主要为模拟实际使用场景来进行测试,并非只测试某一项功能,实际场景如:openstack云平台在50%负载的情况下运行一个月,每天对openstack云平台做相关操作,来测试云平台稳定性;如openstack云平台整体功能测试巡检场景:批量创建虚拟机100台,并使用fio测试虚拟机磁盘性能等,故需根据不同的测试目的创建不同的场景化测试脚本套件。
59.为使场景化测试脚本套件更好满足测试需求,如图2所示,对上述场景化测试脚本套件进行预测试并根据预测试结果对场景化测试脚本套件进行调整,其中,上述调整包括添加或编辑场景化测试脚本套件,调整后再次进行预测试,判断预测试结果是否符合预期,若符合预期,则预测试通过,若不符合预期,则需再次进行调整,直至通过预测试,然后保存或更新测试脚本。
60.s103:预测试通过后,执行正式测试进程。
61.需要说明的是,在执行正式测试进程前,还需要:
62.如图5所示,将上述场景化测试脚本套件和测试工具分发至上述待测试openstack云平台,也可分发至待测试openstack云平台的管理节点上,其中根据实际测试需求,场景化测试脚本套件为一个或多个、待测试openstack云平台也为一个或多个,以便在执行正式测试进程时能够并行执行;上述测试工具包括但不限于磁盘测试工具fio、内存测试工具stream.c、cpu测试工具unixbench等。
63.选择执行时间,如立即执行、周期定时执行等,以减少人工操作。
64.如图4所示,将多个场景化测试脚本套件放置到一个队列内,使其在执行正式测试进程时串行执行,同时保证了场景化测试脚本套件在测试过程中测试环境的一致性。
65.执行正式测试进程时,对一个或多个已分发完多个场景化测试脚本套件的待测试openstack云平台并行进行测试以提高此时效率,其中上述多个场景化测试脚本套件已放置在一个队列内,执行正式测试进程时其执行顺序遵循先进先出规则。
66.s104:根据所述正式测试进程生成正式测试结果。
67.需要说明的是,一方面:在执行正式测试进程过程中,需判断测试过程中是否有报错,若有报错,则导出并保存相关日志,以便测试人员查阅;若无报错,则将测试结果进行整理、分析及呈现;另一方面:在测试过程中,实时传送测试日志,以便测试人员能够及时了解测试进度及测试情况。如图7所示,其为测试过程中场景化测试脚本套件的执行步骤:
68.s201:测试主体形成:场景化测试脚本套件主体内容通过调用公用的openstack云平台的cli或api形成,并且以多线程方式后台运行。
69.s202:测试过程监控:实时监控测试过程,将测试过程数据重定向至服务器,显示在前端web页面。
70.s203:测试结果收集:当监测到测试过程结束时,对测试结果进行整体收集。
71.s204:测试结果格式化处理:对测试结果进行整理和格式化处理,统一为json格式输出。
72.s205:测试过程日志收集:对经过格式化的测试结果进行校验,根据校验结果导出和保存需要收集的日志
73.s206:测试数据清理:对测试生成的数据进行清理,为下次的测试做准备。
74.其中,场景化测试脚本套件执行过程中可实时查看输出日志,其依赖于测试系统后端提供的websocket服务。如图8所示,当测试开始时,前端浏览器会发送websocket请求给测试系统的后端以建立长连接,发送测试开始请求,并用onmessage方法监听websocket的实时消息,收到开始测试指令之后,测试系统后端与要操作的服务器即openstack云平台管理节点建立安全协议通道(如ssh通道),并将测试开始指令发送给安全协议通道后的openstack云平台管理节点,并将其执行的日志数据通过websocket长连接返回给前端浏览器,浏览器接收到消息之后实时进行显示。
75.s105:根据上述场景化测试脚本套件生成相应配置的虚拟机及网络,将上述测试工具通过所述网络拷贝到所述虚拟机内,对虚拟机执行测试任务。
76.需要说明的是,在进行完openstack云平台测试之后,可继续对openstack云平台上的虚拟机进行测试,其测试步骤包括上述s101~104,其区别一方面在于将测试对象由openstack云平台换成openstack云平台上的虚拟机,另一方面在于,需先根据上述场景化测试脚本套件生成相应配置的虚拟机及网络,将上述的测试工具通过上述网络拷贝到虚拟机内,然后执行相应的测试指令,以实现对openstack云平台上的虚拟机的测试,提高虚拟机测试效率。其测试过程中调度流程图如图6所示、其测试执行过程通信示意如图8所示。
77.本技术还公开了一种针对openstack云平台的场景式自动化测试系统,参见图3,包括:
78.后台调度管理模块:用于选择一个或多个待测试openstack云平台;
79.云平台测试模块:用于对所述待测试openstack云平台和场景化测试脚本套件进行预测试、执行正式测试进程及根据正式测试进程生成正式测试结果。
80.在其中一个实施例中,所述一种针对openstack云平台的场景式自动化测试系统,
还包括认证管理模块,用于:
81.获取登录认证信息。
82.在其中一个实施例中,所述认证管理模块包括:
83.测试平台登录认证模块:用于获取测试系统的登录认证信息;
84.云平台接入认证模块:用于对所述待测试openstack云平台进行认证。
85.在其中一个实施例中,所述云平台测试模块,还用于:
86.对所述待测试openstack云平台进行校验,若所述待测试openstack云平台校验不通过,则添加或更新待测试openstack云平台的相关环境认证信息。
87.在其中一个实施例中,所述一种针对openstack云平台的场景式自动化测试系统,还包括测试脚本管理模块,用于:
88.根据测试目的创建场景化测试脚本套件。
89.在其中一个实施例中,所述测试脚本管理模块包括:
90.脚本流程模板管理模块:用于对公共的云平台进行调用以形成场景化测试脚本套件;
91.脚本编辑模块:根据测试目的使用编程语言进行编写、修改测试脚本以形成所述场景化测试脚本套件。
92.在其中一个实施例中,所述脚本编辑模块,还用于:
93.若预测试不通过,则根据预测试结果对所述场景化测试脚本套件进行调整。
94.在其中一个实施例中,所述后台调度管理模块,还用于:
95.将所述场景化测试脚本套件和测试工具分发至所述待测试openstack云平台;
96.选择执行时间;
97.将所述场景化测试脚本套件放置到一个队列内。
98.在其中一个实施例中,所述云平台测试模块,还用于:
99.建立前端浏览器与测试系统后端之间的长连接,所述长连接通过所述前端浏览器发送websocket请求给所述测试系统后端而建立;
100.发送测试开始请求,并采用onmessage方法监听所述websocket的实时消息;
101.建立所述测试系统后端与要操作的服务器即所述待测试openstack云平台的管理节点之间的ssh通道,并将测试开始指令发送给所述ssh通道后的所述待测试openstack云平台的管理节点;
102.将测试系统执行的日志数据通过所述websocket返回给所述前端浏览器,所述前端浏览器接收到所述日志数据之后实时进行显示。
103.在其中一个实施例中,所述一种针对openstack云平台的场景式自动化测试系统,还包括虚拟机测试模块,用于:
104.根据所述场景化测试脚本套件生成相应配置的虚拟机及网络,将所述测试工具通过所述所述网络拷贝到所述虚拟机内,对所述虚拟机执行测试任务。
105.本技术还提供了一种电子设备,该电子设备可以是终端,该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统
和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种针对openstack云平台的场景式自动化测试方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
106.本领域技术人员可以理解,上述的结构,仅仅是与本技术方案相关的部分结构,并不构成对本技术方案所应用于其上的电子设备的限定,具体的电子设备可以包括比上述更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
107.在一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
108.选择一个或多个待测试openstack云平台;
109.对所述待测试openstack云平台和场景化测试脚本套件进行预测试;
110.预测试通过后,执行正式测试进程;
111.根据所述正式测试进程生成正式测试结果。
112.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
113.在所述选择待测试openstack云平台前,还包括:
114.获取登录认证信息,所述获取登录认证信息包括获取测试系统的登录认证信息和对所述待测试openstack云平台进行认证。
115.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
116.在所述对所述待测试openstack云平台和场景化测试脚本套件进行预测试前,包括:
117.对所述待测试openstack云平台进行校验,若所述待测试openstack云平台校验不通过,则添加或更新待测试openstack云平台的相关环境认证信息。
118.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
119.在所述对所述待测试openstack云平台和场景化测试脚本套件进行预测试前,包括:
120.根据测试目的创建场景化测试脚本套件,所述根据测试目的创建场景化测试脚本套件包括:
121.对公共的云平台进行调用以形成所述场景化测试脚本套件;
122.根据测试目的使用编程语言进行编写、修改测试脚本以形成所述场景化测试脚本套件。
123.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
124.所述一种针对openstack云平台的场景式自动化测试方法,还包括;
125.若预测试不通过,则根据预测试结果对所述场景化测试脚本套件进行调整。
126.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
127.在所述执行正式测试进程前,包括:
128.将所述场景化测试脚本套件和测试工具分发至所述待测试openstack云平台;
129.选择执行时间;
130.将所述场景化测试脚本放置到一个队列内。
131.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
132.所述根据正式测试进程生成正式测试结果,包括:
133.建立前端浏览器与测试系统后端之间的长连接,所述长连接通过所述前端浏览器发送websocket请求给所述测试系统后端而建立;
134.发送测试开始请求,并采用onmessage方法监听所述websocket的实时消息;
135.建立所述测试系统后端与要操作的服务器即所述待测试openstack云平台的管理节点之间的ssh通道,并将测试开始指令发送给所述ssh通道后的所述待测试openstack云平台的管理节点;
136.将测试系统执行的日志数据通过所述websocket返回给所述前端浏览器,所述前端浏览器接收到所述日志数据之后实时进行显示。
137.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
138.所述一种针对openstack云平台的场景式自动化测试方法,还包括:
139.根据所述场景化测试脚本套件生成相应配置的虚拟机及网络,将所述测试工具通过所述所述网络拷贝到所述虚拟机内,对所述虚拟机执行测试任务。
140.在一个实施例中,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤。
141.选择一个或多个待测试openstack云平台;
142.对所述待测试openstack云平台和场景化测试脚本套件进行预测试;
143.预测试通过后,执行正式测试进程;
144.根据所述正式测试进程生成正式测试结果。
145.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
146.在所述选择待测试openstack云平台前,还包括:
147.获取登录认证信息,所述获取登录认证信息包括获取测试系统的登录认证信息和对所述待测试openstack云平台进行认证。
148.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
149.在所述对所述待测试openstack云平台和场景化测试脚本套件进行预测试前,包括:
150.对所述待测试openstack云平台进行校验,若所述待测试openstack云平台校验不通过,则添加或更新待测试openstack云平台的相关环境认证信息。
151.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
152.在所述对所述待测试openstack云平台和场景化测试脚本套件进行预测试前,包括:
153.根据测试目的创建场景化测试脚本套件,所述根据测试目的创建场景化测试脚本套件包括:
154.对公共的云平台进行调用以形成所述场景化测试脚本套件;
155.根据测试目的使用编程语言进行编写、修改测试脚本以形成所述场景化测试脚本套件。
156.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
157.所述一种针对openstack云平台的场景式自动化测试方法,还包括;
158.若预测试不通过,则根据预测试结果对所述场景化测试脚本套件进行调整。
159.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
160.在所述执行正式测试进程前,包括:
161.将所述场景化测试脚本套件和测试工具分发至所述待测试openstack云平台;
162.选择执行时间;
163.将所述场景化测试脚本放置到一个队列内。
164.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
165.所述根据正式测试进程生成正式测试结果,包括:
166.建立前端浏览器与测试系统后端之间的长连接,所述长连接通过所述前端浏览器发送websocket请求给所述测试系统后端而建立;
167.发送测试开始请求,并采用onmessage方法监听所述websocket的实时消息;
168.建立所述测试系统后端与要操作的服务器即所述待测试openstack云平台的管理节点之间的ssh通道,并将测试开始指令发送给所述ssh通道后的所述待测试openstack云平台的管理节点;
169.将测试系统执行的日志数据通过所述websocket返回给所述前端浏览器,所述前端浏览器接收到所述日志数据之后实时进行显示。
170.在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
171.所述一种针对openstack云平台的场景式自动化测试方法,还包括:
172.根据所述场景化测试脚本套件生成相应配置的虚拟机及网络,将所述测试工具通过所述所述网络拷贝到所述虚拟机内,对所述虚拟机执行测试任务。
173.以上对本技术所提供的技术方案进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
174.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再多了解一些

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

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

相关文献