关于性能测试的总结报告---Loadrunner.doc_第1页
关于性能测试的总结报告---Loadrunner.doc_第2页
关于性能测试的总结报告---Loadrunner.doc_第3页
关于性能测试的总结报告---Loadrunner.doc_第4页
关于性能测试的总结报告---Loadrunner.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于性能测试的总结报告一、目的- 2 -二、背景- 2 -三、工具- 2 -四、Loadrunner使用介绍- 3 -4.1 主界面- 3 -4.2 Create/Edit Scripts(创建/录制脚本)- 4 -4.2.1 脚本创建的过程- 5 -4.2.2 编辑脚本- 7 - 参数化- 7 - 集合点- 10 - 事物- 11 - Running-time Settings- 15 - Show run-time viewer during replay(在重放脚本时显示网页画面)- 18 -4.3 运行脚本,进行负载测试- 19 -4.3.1 Scenario Script- 20 -4.3.2 Scenario Schedule- 21 - Start Vusers- 21 - Duration- 21 -4.3.3 负载测试的“Run”界面- 23 -4.4 Analysis Summary报告分析- 27 -五、LoadRunner在运行时常见的提示错误和解决方法- 29 -一、目的 于系统完成的初始阶段模拟真实的使用环境,运用性能测试工具对系统进行压力负载,重现缺陷发生的状态,并监控的客服端和服务端性能指标,检验该系统是否能够满足用户的需求,以次来避免系统在使用过程中出现不必要的问题,最终进一步完善系统。二、背景 很多系统开发完成后在性能方面还存在着很多的缺陷,简单的手动测试是发现不了这些隐藏的缺陷的,需要通过工具来找出并解决这些问题。三、工具HP LoadRunner 11.00.LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。四、Loadrunner使用介绍4.1 主界面 图 4-1-1打开loadrunner后出现此界面,有三个功能键:第一步:创建/录制脚本 第二步:运行脚本,进行负载测试 第三步:报告分析 4.2 Create/Edit Scripts(创建/录制脚本)录制脚本非常重要,是进行负载测试的基础,因此要保证脚本不能出现问题。 图 4-2-1此图为创建/录制脚本界面,可以通过以下几种方法录制或打开一个脚本:1. 点击“File”“New”,出现图4-2-2,选择“(网页测试)Web(HTTP/HTML)”2. 点击“File” “Open”,可以打开一个已录制好的脚本。3. 点击此图标,也会出现图4-2-2,步骤同1。4. 点击此图标,直接打开一个已录制好的脚本。 图 4-2-24.2.1 脚本创建的过程 图 4-2-3 点击“Start Record”按钮开始录制,出现以下一个提示框: 图 4-2-4在“Program to record”选项里填入网页浏览器的地址名称;在“URL Address”选项里填写要测试网站的地址;在“Working directory”里填写Loadrunner 的工作目录;在“Record into Action”里有三个选项:vuser_init(开头的脚本)、Action(操作间的脚本)、vuser_end(结束时的脚本)。即vuser_init录制的一般是用户登录的时候,action 录制的一般是操作的事件,而vuser_end录制的一般是退出的时候。但vuser_init、Action和vuser_end三者之间的区别是 vuser_init 和 vuser_end不能迭代多次,只能运行一次,而 action可以迭代多次运行。配置完成后,点击“Ok”后,录制正式开始,自动登陆到配置时填写的网站地址,并且可以看见正在录制的图标。 暂停录制 结束录制图 4-2-5 图 4-2-6可以看出:随着操作步骤的增多,录制的事件数目也加增加。4.2.2 编辑脚本 结束录制后,回到脚本创建的界面,在“Script”中我们会发现比之前多了代码,这就是刚刚录制的内容。 图 4-2- 参数化 在对网页进行负载测试的时候,会要求我们同时登陆多个账号来检验用户的最大承载量,此时我们需要使用参数化。 首先我们要在代码中找到账号和密码信息,然后再进行替换。 图 4-2-8 如 图4-2-8所示,选择Value=sm1中的sm1,然后右击,点击列表中“Replace with a Parameter”,就会出现 图4-2-9 的提示框。 在“Parameter name”框中输入一个 易于记忆的账户参数名(如:Name),然后可以点击“Properties.”按钮对“Name”参数进 图 4-2-9 图 4-2-10添加用户个数比较少的话,可以通过点击来添加,如果需要添加几十个甚至一两百个用户的话,建议使用来通过在文档里进行编辑,比较方便。 图 4-2-11密码的参数化方式和账户相同。注:在进行参数化的过程中,账号和密码是一一对应的关系,即,密码的排序要根据账号的排序来确定,否则会影响之后的测试结果。 集合点集合点的用处对于LoadRunner来说意义非常大,它可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下同时多个用户操作,同时模拟负载,实现性能测试的最终目的。举例如下:要检测1000个用户同时登陆,在LoadRunner中可以通过在提交数据操作前面加入集合点,当虚拟用户运行到提交数据的集合点时,Loadrunner就会检查同时有多少用户运行到集合点,等到这1000个虚拟用户都运行到集合点后,就会触发同时进行提交数据的操作,从而能够测试系统对于这1000个用户提交数据的响应情况,依次来看系统是否满足客户的该点需求。通常添加集合点的方式有两种:1. 录制时添加 在需要并发操作的事务前直接点击插入集合的按钮 图 4-2-122. 录制后在代码处添加: 图 4-2-13接着,出现如图4-2-14所示的对话框。输入该集合点的名称,注意,名称最好能够清楚地说明该集合点所完成的动作。 图 4-2- 事物 事务(Transaction)在loadrunner中的定义如下:事务(Transaction)是这样一个点,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个transaction。事务的作用:LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在LoadRunner的运行结果中会有反映。通俗的讲LoadRunner中的事务就是一个计时标识,LoadRunner在运行过程中一旦发现事务的开始标识,就开始计时,一旦发现事务的结束表示,则计时结束,这个过程中得到的时间即为一个事务时间。通常事务时间所反映的是一个操作过程的响应时间。通常事务的添加方法也有两种: 前者是开始事务,后者是结束事务。1录制过程中添加首先进入录制页点击开始事务,输入你给事务取的名字结束该项操作,点击结束事务,直接点击OK即可。2录制结束后在代码中添加确定被测流程的第一步,在被测流程的第一步前,点击开始事务按钮。 确定被测流程的最后一步,在被测流程的最后一步后,点击结束事务按钮。下面是录制好的脚本 图 4-2-15此时又有两种方式选择插入和结束事务,一种是通过工具栏上的insert,还有是直接由快捷方式,如图所画: 图 4-2-16选择插入事务,给事务取名 图 4-2-17点击OK后的脚本中多了一行 图 4-2-18结束操作后选择结束事务 图 4-2-19点击OK后的脚本中多了一行LR_AUTO (默认值) 使用该值,LoadRunner 会自动探测事务状态添加事务的注意点延迟时间 将延迟时间包含在事务范围内,会降低事务测量的精确度。 在虚拟脚本中添加多个 Actions 基于负载测试目标配置 Actions 设置正确的初始化和结束条件 通过 LoadRunner 事务测量: 一个业务流程中某些步骤的端到端的响应时间 整个业务流程 在录制过程中和录制结束后,添加 LoadRunner 事务 Running-time Settings (在这里只是选择两个重要的说一下) 图 4-2-20在脚本录制好后,此时我们需要运行一下脚本来检验脚本是否有错误,此时我们需要在Running-time Setting 里进行简单的配置: 此图为Running-time Setting的主界面: 图 4-2-211. Iteration(迭代) “General” “Run Logic” “ Iteration Count” ,可以根据情况选择迭代的次数。 迭代次数其实就是循环次数,但一个用户迭代十次,还是一个用户的压力,如跑登录脚本,给用户和密码设置了20个参数,那么迭代10次就表示20个用户循环登录10次。除非我们是特别要求,一般不用迭代次数,而是用运行时间。 另外,迭代的设置是否有效还由Controller中的设置决定,如果在Controller中将持续时间设置为特定的时间如30分钟,这时设置的迭代次数不会生效,而是20个用户依次登录,30分钟后停止,如果Controller中将持续时间设置为“Run until completion”,这时设置的迭代次数才生效。注:在vuser_init 和 vuser_end中都不能进添加迭代,只能在action中设置迭代。2. Log(日志) 图 4-2-22 (1)log的设置方式:Alwayssendmessages(这种方式会一直打印输出日志,不仅在错误时);standardlog记录所有的请求反馈的日志,包括successful和fail的日志。Extendedlog可提供扩展的日志信息,包括: Parametersubsititution日志中打印所有中使用的参数值 Datareturnedbyserver日志中打印每个客户端请求服务器返回的数据值 Advancedtrace日志中打印所有的消息信息和函数执行信息 通常我们选择“Parametersubsititution”。(2)log的存储方式log的存储路径在res文件夹下。如果是从脚本中直接关联createscenario则在脚本的目录下的res下。如果是直接create scenario然后再选择脚本的话,则存储在c盘,如:“C:DocumentsandSettingsUSERNAMELocal SettingsTempreslog”具体该场景的日志结果存哪,可以查看controll的result界面的resultsetting定义的目录。根据不同的log记录级别,在log文件中记录日志。(3)log信息的分析a. 从log中得到虚拟用户失败的原因。通常如果场景在运行时出现用户失败,则先要查看错误原因,可直接查看日志,从日志中查看ERROR的信息;从outputdb中可以查看到错误代码ERRORCODEb. 从日志中确认每次分配给虚拟用户的参数值想判断是否在场景中每个用户使用不同的或预定义规则的参数,可以在log生成规则处设定为parametersubsititution,然后查看每个日志文件中的对应行参数值是否为预计的参数值。可从此判断出是否同用户的实际使用类似,是否达到对服务器的压力策略。c.从日志中确认服务器端返回的值是什么。在脚本中通常设定了检查点,检查点策略是否生效,如果对此产生怀疑则可以考虑从日志中查看一下。查看服务器返回的值来验证是不是所期待得到的值。 Show run-time viewer during replay(在重放脚本时显示网页画面) 图 4-2-23如图所示,点击“Tools”中的“General Options”,会出现下图4-2-24: 图 4-2-24点击“Display”,在“Show run-time viewer during replay”和“Auto arrange windows”的前面打钩,操作完成后点击OK,这样在脚本回放过程中就能看见录制的网页过程。4.3 运行脚本,进行负载测试 这一步是整个测试的关键部分,通过运行上一步的脚本来对系统进行负载测试。 进入负载测试界面,我们会看见下图4-3-1 的情况,从左边的小方框的选择要测试的脚本,然后添加到右边的方框内,点击“OK”。(“Remove.”按钮:用来把右方框内的脚本移除“Browse.”按钮:用来添加新的脚本到左方框里“Record.”按钮:用来重新录制一个脚本) 图 4-3-1当点击“OK”按钮后,我们会进入图4-3-2所显示的界面。 图 4-3-2此为负载测试的“Design”界面,在正式测试之前我们需要进行如下一些配置:4.3.1 Scenario Script 图 4-3-3点击的下拉列表,确认添加后,跳出图 4-3-4 的窗口,在“Name”一栏里输入localhost,点OK按钮退出。 图 4-3-44.3.2 Scenario Schedule 图 4-3-5此图显示的内容为负载测试的方案计划,即运行时间段、测试的用户数量、何时结束等相关内容。 Start Vusers用来设定测试的用户数量,这里选择的是200个用户,分2次进入测试,10s进入一次。 图 4-3- Duration 用来设置测试运行的时间,即何时结束此时测试,一般我们选择第一种方案-“Run until completion(测试完成后结束)” 图 4-3-7 图 4-3-8设置完成后,“Design”的显示界面的内容会有相应的变化,如图4-3-8所示。4.3.3 负载测试的“Run”界面 图 4-3-9进入这个界面后,负载测试的配置基本已完成,此时我们要做的就是根据情况从“Available Graphs“中选择需要的选项拉入右边的矩形方框内,以便测试运行时监测状况。 图 4-3-10当一切都设置好后,按下“Start Scenario“开始运行。 图 4-3-11下图为测试过程中的界面变化情况: 图 4-3-12 图 4-3-12从上图我们可以看出200个用户Passed有多少个,Failed有多少个,其间出现的Errors有多少个。点击“Vusers.”按钮,跳出图4-3-14,从图中我们可以看出登陆失败的是哪一个用户。 图 4-3-13 图 4-3-14 点击图4-3-13中的Errors一栏的放大镜图标,可以查看error的具体信息。 图 4-3-154.4 Analysis Summary报告分析 在第二步负载测试结束之后,会自动生成一个分析报告,里面记录了此次测试的相关数据。 图 4-4-1 报告的内容主要分为两部分:Reports 和 Graphs ,图4-4-1显示的为Reports的内容,里面包含了Statistics Summary和HTTP Responses Summary等的具体内容。“Graphs”选项中的内容为一系列反应数据的图表,我们在做测试结果分析的时候会用到,可以再菜单栏里的“Graph” “Add New Graph”添加。图 4-4-2 图 4-4-3 图 4-4-4五、LoadRunner在运行时常见的提示错误和解决方法1、 Error -27727: Step download timeout (120 seconds)has expired when downloadingresource(s). Set the “Resource Page Timeout is a Warning” Run-Time Setting to Yes/No to have this message as a warning/error, respectively。问题原因:A、应用服务参数设置太大导致服务器的瓶颈 B、页面中图片太多 C、在程序处理表的时候检查字段太大或多处理方法:Run-Time Setting - Internet Protocol - Preferences -Option - Step download timeout(sec)改为320002、 Error -27979: Requested form not found MsgId: MERR-27979Action.c(41): web_submit_form highest severity level was ERROR,0 body bytes, 0 header bytes MsgId: MMSG-27178这时在tree view中看不到此组件的相关URL。错误分析:所选择的录制脚本模式不正确,通常情况下,基于浏览器的Web应用会使用HTML-based script模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这 时则使用URL-based script模式进行录制。解决办法:打开录制选项配置对话框进行设置,在Recording Options的Internet Protocol选项里的Recording中选择Recording Level为HTML-based script,单击HTML Advanced,选择Script Type为A script containing explicit。然后再选择使用URL-based script模式来录制脚本。3、Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s).错误分析:对于HTTP协议,默认的超时时间是120秒(可以在LoadRunner中修改),客户端发送一个请求到服务器端,如果超过120秒服务器端还没有返回结果,则出现超时错误。解决办法:首先在运行环境中对超时进行设置,默认的超时时间可以设置长一些,再设置多次迭代运行,如果还有超时现象,需要在Runtime SettingInternet Protocol:PreferencesAdvanced区域中设置一个winlnet replay instead of sockets选项,再回放是否成功。4、 Error -27791: Server “7 has shut down the connection prematurely 解决方案如下:1、应用服务器死掉。小用户时程序上的问题,程序上处理数据库的问题2、应用服务没有死。应用服务参数设置问题。例如:在许多客户端weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是weblogic中的server元素的acceptbacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%。3、数据库的连接,在应用服务的性能参数可能太小了,数据库启动的最大连接数(跟硬件的内存有关)4、有时关闭卡巴斯基也会解决如上问题1)观察response time 是否 超出默认的120秒2)检查服务器日志是否有异常以及负载是否过高3) web_set_timeout 设置更长的超时超时上限如:web.set_timeout(”CONNECT”, “360); web.set_timeout(”RECEIVE”, “360); web.set_timeout(”STEP”, “360);观察response time 是否 超出默认的120秒这个问题,要详细分析了。应该不会是LR自身造成的问题,把时间调长,就是为了定位问题在什么地方,而不是为了绕过这个错误的出现。5、 Error -27492: HttpSendRequest failed, Windows error code=12002 and retry limit (0) exceeded for URL解决方法:在runtime setting中的preferences- -options-http-request connect timeout(sec)的值设为999。6、 Error -27498: Timed out while processing URL=0:7001/workflow/bjtel/leasedline/querystat/subOrderQuery.do错误分析:这种错误常常是因为并发压力过大,服务器端太繁忙,无法及时响应客户端的请求而造成的,所以这个错误是正常现象,是压力过大造成的。如果压力很小就出现这个问题,可能是脚本某个地方有错误,要仔细查看脚本,提示的错误信息会定位某个具体问题发生的位置。解决办法:例如上面的错误现象问题定位在某个URL上,需要再次运行一下场景,同时在其他机器上访问此URL。如果不能访问或时间过长,可能是服务器或者此应用不能支撑如此之大的负载。分析一下服务器,最好对其性能进行优化。如果再次运行场景后还有超时现象,就要在各种图形中分析一下原因,例如可以查看是否服务器、DNS、网络等方面存在问题。最后,增加一下运行时的超时设置,在Run-Time SettingsInternet Protocol:Preferences中,单击options,增加HTTP-request connect timeout 或者HTTP-request receive的值。7、Error -26612: HTTP Status-Code=500 (Internal Server Error) for :10001/logonConsole.do;jsessionid=JSESSIONID2造成HTTP500错误,如下几个可能:1、运行的用户数过多,对服务器造成的压力过大,服务器无法响应,则报HTTP500错误。减小用户数或者场景持续时间,问题得到解决。2、该做关联的地方没有去做关联,则报HTTP500错误。进行手工或者自动关联,问题得到解决。3、录制时请求的页面、图片等,在回放的时候服务器找不到,则报HTTP500错误,若该页面无关紧要,则可以在脚本中注释掉,问题将会得到解决。例如:有验证码的情况下,尽管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不存在响应。4、参数化时的取值有问题,则报HTTP500错误。可将参数化列表中的数值,拿到实际应用系统中进行测试,可排除问题。5、更换了应用服务器(中间件的更换,如tomcat、websphere、jboss等),还是利用原先录制的脚本去运行,则很可能报HTTP500错误。因为各种应用服务器处理的机制不一样,所录制的脚本也不一样,解决办法只有重新录制脚本。6、Windows xp2 与ISS组件不兼容,则有可能导致HTTP500错误。对ISS组件进行调整后问题解决。7、系统开发程序写的有问题,则报HTTP500错误。例如有些指针问题没有处理好的,有空指针情况的存在。修改程序后问题解决。查找后台日志发现报了很多0ra-01000错误,这是oracle达到最大游标参数值,google了下,最大原因可能是JDBC连接没关闭。最后查找weblogic连接池出了问题,很多连接没关闭。8、Error -27496:内部错误(呼叫客户服务): eStat (7) != LRW_ITEM_STAT_ENUM_UNHANDLED for HandledTask at 048E180C9、Error -27995: Requested link (Text=计划管理) not found解决方法:在IE中的工具Internet选项高级HTML设置中选择第二个脚本类型.10、Error -27279:内部错误(呼叫客户服务):Report initialization failed , error code = -2147467259解决方法:建议重装一下LR.这种问题有可能和你安装有关.dll文件出错不是说写的程序就能修改的.11、Error -27796: Failed to connect to server “:80: 10060 Connection timed out解决方法:在注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters里,有如下两个键值:1.TcpTimedWaitDelay,默认值应该中是30s,所以这里,把这个值调小为5s(按需要调整)。2.MaxUserPort调大(如果这个值不是最大值的话)。12、Error -10489 : Exception was raised when calling per-thread-terminate function 在用Loadrunner实施性能测试时,采用Goal模式加压,存在如果持续长时加压时oadRunner的Controller会报 Error -10489 : Exception was raised when calling per-thread-terminate function错误;问题原因: Unlike the earlier Windows versions, Windows 2000 and Windows XP have the default environment set to C:Document and SettingsLocal SettingsTemp instead of C:Windowstemp. This long path with a space can cause several problems for LoadRunner. To resolve the issue, change to a directory without empty spaces. 解决方法: 在C盘(或是其它盘均可以)新建TEMP文件夹(为了后续设置临时文件准备),右键我的电脑-高级-环境变量-编辑修改TEMP变量目录,指身上面新建的目录,如我的指向C:TEMP-保存即可。13、Connection reset by peer. Error code : 10054设置下载等的超时用VuGen录制脚本后,回放或者加压的时候,可能会出现错误信息“Action.c(65): Error : socket6 - Connection reset by peer. Error code : 10054”这是因为,下载的速度慢,导致超时,所以,需要调整一下超时时间,方法如下:在Run-time setting窗口中的Internet ProtocolPreferences设置set advanced options(设置高级选项),重新设置一下“HTTP-request connect timeout(sec)”14、Error:Failed to connect to server“92”:10060ConnectionError:timed out Error:Server“92”has shut down the connection prematurely问题原因:1. 应用访问死掉小用户时:程序上的问题。程序上存在数据库的问题2.应用服务没有死应用服务参数设置问题,例如:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25Java连接池的大小设置,或JVM的设置等3.数据库的连接在应用服务的性能参数可能太小了数据库启动的最大连接数(跟硬件的内存有关)15、Error:Page download timeout(120seconds)has expired分析原因:1. 应用服务参数设置太大导致服务器的瓶颈2页面中图片太多3在程序处理表的时候检查字段太多16、LoadRunner脚本中出现乱码:在录制Web协议脚本时出现中文乱码,在回放脚本时会使回放停止在乱码位置,脚本无法运行。错误现象:某个链接或者图片名称为中文乱码,脚本运行无法通过。错误分析:脚本录制可能采用的是URL-based script方式,如果程序定义的字符集合采用的是国际标准,脚本就会出现乱码现象。解决办法:重新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在Recording Options的Advanced选项里先将Surport Charset选中,然后选中支持UTF-8的选项。17、LoadRunner HTTP服务器状态代码:在录制Web协议脚本回放脚本的过程中,会出现HTTP服务器状态代码,例如常见的页面-404错误提示、-500错误提示。错误现象1:-404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运行直到结束。错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。错误现象2:-500 Internal Server Error服务器内部错误,脚本运行停止。错误分析:服务器碰到了意外情况,使其无法继续回应请求。解决办法:出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,此时需要此程序的开发人员配合来解决,而且

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论