论黑盒测试之提高软件的质量_第1页
论黑盒测试之提高软件的质量_第2页
论黑盒测试之提高软件的质量_第3页
论黑盒测试之提高软件的质量_第4页
论黑盒测试之提高软件的质量_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文论文题目论功能性与性能如何提高软件的质量完成时间2013年3月内容摘要摘随着软件规模的不断扩大,软件设计的复杂程度不断提高,软件开发中出现错误或缺陷的机会越来越多。同时,市场对软件质量重要性的认识逐渐增强。所以,软件测试在软件项目实施过程中的重要性日益突出。软件功能性测试是软件质量保证的关键技术,在软件生命周期中占有重要的地位。理论上软件本身的缺陷都可在功能性测试阶段被暴漏,因此软件功能性测试方法是提高软件可靠性及软件质量最有效、最直接的方法之一。性能是软件在市场竞争中一个强有力的竞争点,性能的测试与优化对于软件整体提升自己的性能,赢得市场的份额具有决定性因素。性能测试的主要目的就是验证一个软件产品可以允许多少用户并发访问,性能指标如响应时间、CPU和内存占用率是多少。一般来说这种测试无法手工做,需要借助于工具,如LOADRUNNER等等。关键词功能性测试,功能性测试流程,功能性测试方法,性能测试,虚拟用户,负载测试,压力测试,事务,集合点ABSTRACTWITHTHEEXPANSIONOFTHESCALEOFSOFTWARE,INCREASINGTHECOMPLEXITYOFTHESOFTWAREDESIGN,ERRORSORDEFECTSINTHESOFTWAREDEVELOPMENTMOREANDMOREOPPORTUNITIESATTHESAMETIME,THEMARKETRECOGNITIONOFTHEIMPORTANCEOFSOFTWAREQUALITYGRADUALLYINCREASEDSO,THEIMPORTANCEOFSOFTWARETESTINGINSOFTWAREPROJECTIMPLEMENTATIONPROCESSISBECOMINGMOREANDMOREPROMINENTSOFTWAREFUNCTIONALTESTINGISTHEKEYTECHNOLOGYOFSOFTWAREQUALITYASSURANCE,OCCUPIESANIMPORTANTPOSITIONINTHESOFTWARELIFECYCLESOFTWAREITSELFDEFECTSCANBETHEORETICALLYWASEXPOSEDINFUNCTIONALTESTINGPHASE,SOTHESOFTWAREFUNCTIONALTESTINGMETHODISTOIMPROVETHESOFTWARERELIABILITYANDSOFTWAREQUALITYASONEOFTHEMOSTEFFECTIVEANDMOSTDIRECTWAYSOFTWAREPERFORMANCEISASTRONGPOINTOFCOMPETITIONINMARKETCOMPETITION,PERFORMANCETESTINGANDOPTIMIZATIONSOFTWAREFOROVERALLIMPROVETHEIRPERFORMANCE,WINTHEMARKETSHAREOFTHEDECISIVEFACTORSTHEMAINPURPOSEOFTHEPERFORMANCETESTISTOVERIFYASOFTWAREPRODUCTALLOWSCONCURRENTACCESSTOMANYUSERS,THEPERFORMANCEINDICATORSSUCHASRESPONSETIME,CPUANDMEMORYUSAGERATEISHOWMUCHINGENERALTHETESTCANNOTBEMADEBYHAND,NEEDTHEHELPOFTOOLS,SUCHASLOADRUNNER,ETCKEYWORDSFUNCTIONALTESTING,FUNCTIONALTESTINGPROCESS,FUNCTIONALTESTING,PERFORMANCETESTING,VIRTUALUSERS,LOADTEST,STRESSTEST,TRANSACTION,THECOLLECTIONPOINT目录1功能性测试概述_111功能性测试的优缺点_1111功能性测试方法_1112利用功能性测试方法可以发现软件中存在的问题_2113功能性测试流程_22性能测试研究_321性能测试概述_3211性能测试的目的_3212性能测试类型_3213性能测试流程_422性能测试工具_4221LOADRUNNER的组成_4222LOADRUNNER测试流程_43功能性测试的实践_531项目分析与规划测试_5311项目概述_5312项目分析_5313规划测试_6314编写测试案例与执行测试_632结合功能性测试案例进行性能测试_8321功能概述_8322性能测试准备_9323设计压力应用思路_9324经功能性测试实际运用分析_94创建用户脚本_10411完善测试脚本_10412用参数化取代常量值_11413集合点_11413脚本检验_1242方案执行_12421场景创建_12422加压计划_1343运行结果_135此项目的总结分析_14注释_15参考文献_16致谢_17软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保障的关键步骤。其定义可简略概括为为了发现错误而运行程序的过程。随着软件规模的不断扩大,软件质量问题已成为制约计算机发展的主要因素之一。作为保证软件质量和可靠性的手段,软件测试起着不可替代的作用。1功能性测试概述功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。功能测试也叫黑盒测试,只需考虑各个功能,不需要考虑整个软件的内部结构及代码。功能性测试实际上是运用输入输出的形式,去验证一个软件的某个模块是否实现了它应有的功能。11功能性测试的优缺点任何程序都可以看作是将从输入定义域取值映射到输出值域的函数,将系统看成黒盒,又称为黒盒测试1,黒盒的实现是不需要了解的,只需要知道输入和预期输出。功能性测试的优点图11黑盒测试功能性测试的优缺点13功能性测试与软件如何实现无关,如果实现发生变化,功能性测试用例仍然可用,测试用例开发可以与软件开发同时进行,可节省软件开发时间,通过软件的用例就可以设计出大部分功能性测试用例。功能性测试的缺点测试用例数量较大,可能产生很多冗余,业务流程步骤多,重复性大,功能性测试的覆盖范围不可能达到100111功能性测试方法功能性测试类型41)等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例该方法是一种重要的,常用的黑盒测试用例设计方法2)边界值分析长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部因此针对各种边界情况设计测试用例,可以查出更多的错误3)因果图法考虑输入条件之间的联系,相互组合等考虑输入条件之间的相互组合,可能会产生一些新的情况4)错误推测基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法112利用功能性测试方法可以发现软件中存在的问题在功能界面可以发现普遍的BUG有51)功能错误或遗漏;2)界面错误;3)功能实现是否满足用户需求和系统设计的隐藏需求4)初始化和终止错误。5)能否正确接收输入能否正确输出结果113功能性测试流程功能性测试一般分为一下几个步骤9制定测试计划编写测试用例(不同阶段)测试及BUG管理;1)测试计划是在项目立项之后,理论是和需求分析同时完成,但实际情况要等需求分析完成了,才能制定测试计划;2)根据测试计划,做好需要分析后,要开始设计确认测试用的测试用例,然后按开发的不同阶段执行相应的测试用例;3)在测试中会发现各种BUG,这要求测试对BUG进行管理和跟踪,已确保所测试的功能点实现需求规定功能;2性能测试研究为了验证系统管理书否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈祈祷优化系统的目的21性能测试概述相较其他测试软件,LOADRUNNER可以更加方便的创建虚拟用户和创建真实的负载以定位性能问题,并通过重复测试以保证系统发布的高性能。211性能测试的目的目的2是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能缺陷,优化软件,最后起到优化系统的目的。相较其他测试软件,LOADRUNNER可以更加方便的创建虚拟用户和创建真实的负载以定位性能问题,并通过重复测试以保证系统发布的高性能。1)评估系统的能力测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助做出决策。2)识别体系中的弱点受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。3)系统调优重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能4)验证稳定性、可靠性在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。212性能测试类型性能测试类型3包括负载测试,强度测试,容量测试等1)负载测试确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况,例如“响应时间”,逐渐增加虚拟用户的数量,观察应用程序是否超过预定指标或某种资源使用达到饱和状态。这种测试方法可以找到系统处理的极限位系统调优提供依据2)强度测试确定在系统资源特别低的条件下软件系统运行情况。3)容量测试在用户可接受的响应范围内,确定系统可处理同时在线的最大用户数。4)压力测试在资源饱和的状态下系统能够处理的会话能力,以及系统是否会报错。例如在大量业务长时间运行系统是否会反应慢、系统崩溃,能否恢复。213性能测试流程由于工程和项目的不同,所选用的度量,评估方法也有不同之处。不过仍然有一些通用的步骤11帮助我们完成一个性能测试项目。测试方案设计在软件性能测试的初始阶段,首先应对业务模型和系统架构进行调研,收集测试需求。然后生戚性能测试计划测试环境的搭建测试环境的搭建分为软硬测试系统的环境搭建和测试相关的数据准备工作测试场景开发测试场景开发指测试程序脚本的开发测试执行测试执行是在测试方案的制定、测试环境准备、测试场景开发工作正确完成的基础上进行的测试报告和分析性能测试报告和结果分析是在测试执行完成以后,对性能数据进行采集结果收集工作和针对性能测试过程中暴露的问题进行分析的阶段回归测试回归测试是开发部门在性能测试报告的基础上针对软件的性能或者效率缺陷进行优化或者修复,为了验证优化的效果而进行的再测试22性能测试工具HPLOADRUNNER是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LOADRUNNER能够对整个企业架构进行测试。通过使用LOADRUNNER,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。221LOADRUNNER的组成LOADRUNNER由下面三部分组成11VIRTUALUSERGENERATOR用来录制脚本、编辑脚本CONTROLLER用来布置测试场景、执行测试场景;ANALYSIS用来对测试结果进行分析。222LOADRUNNER测试流程此流程是性能测试工具LOADRUNNER的基本测试方法101)创建虚拟用户VIRTUALUSERGENERATOR,该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为2创建真实的负载负载的测试方法计划负载测试,根据软件项目相关需求,定义相关测试的细节,撰写性能测试报告。创建VUSER脚本,将网站最终用户活动捕获到自动脚本中。场景定义,使用LOADRUNNERCONTROLLER设置测试环境即可,场景执行监视执行,监视场景通过添加性能计数器来实现3结果分析使用LOADRUNNERANALYSIS创建图和报告并评估性能。3功能性测试的实践31项目分析与规划测试311项目概述本次实践是一款保险外围发票系统,这是保险公司对自己所出保险单费用所设计的一款发票系统,并提供给客户的依据。也是配合核心系统打印所要求312项目分析本次只介绍发票系统其中一个项目完善单证轨迹。此项目主要是主要是针对单证系统,单证轨迹查询中轨迹记录不全,顺序颠倒造成无法真正的了解一个单证的处理轨迹。现对,单证系统中,轨迹没有记录的地方,进行补全,轨迹顺序颠倒的地方进行调整。此项目共涉及以下功能激活卡手动回收管理此功能点是在发票系统出单,去核心缴费,再次回到发票系统“激活卡手动回收管理”功能菜单进行回收,在进行问题数据处理的时候,需要记录下数据的操作轨迹过期单证状态更正此功能点是把过期单证(在单证回收界面操作或者系统自动进行跑过期批处理)修改成“未使用”单证状态,在进行问题数据处理的时候,操作的数据轨迹会记录单证回收此功能点是对已发放的单证进行回收或者对在核心系统打印过的发票数据进行遗失、作废处理。对单证状态进行修改的时候,需要记录下操作的数据轨迹而不是只是只是更新状态单证回退回收回退,在操作的时候,同时记录回退时候的数据记录同时,还要对接口程序中,涉及到单证状态变更的记录,进行记录,记录下单证的操作轨迹注此项目程序的设计方案是开发自己设计,但是作为测试人员也要相应了解一下,虽然不能看懂代码程序,但是在界面操作时数据会存到数据库哪个表里,表字段显示的数据信息是否正确也是要进行校验的313规划测试根据需求分析制定测试计划,根据测试计划编写测试案例,最后准备功能测试。以下是我对此项目的测试过程由于此项目是针对单证系统,所以所有的数据开始都是在“单证入库”“单证发放”这两个菜单录入数据,最后在“单证轨迹查询”界面显示操作的结果。图31单证入库图32单证发放314编写测试案例与执行测试1查找打印成功数据,在单证系统查询单证的状态为打印。通过核心对单证进行打印事后核销操作,在单证系统查询单证轨迹,增加一条单证状态为系统回收的轨迹记录。图33单证轨迹查询本条案例测试,是经过核心操作掉用单证接口把把操作后的状态同步到单证系统,会在系统菜单“单证轨迹查询”界面增加一条记录,但是在核心操作只会记录核心同步过来的核销记录。2在单证回收界面进行对发放的数据进行人工回收,在单证系统查询单证轨迹,增加一条单证状态为系统回收的轨迹记录。(此界面的回收类型有多个,任选。如图34)图34回收类型图35单证轨迹查询此案例只是在发票系统进行操作,要校验的是在人工回收之后,会有轨迹记录。3在单证类型定义界面停用一类型单证,该单证的状态为废止。在单证系统查询单证轨迹,增加一条单证状态由未使用变为废止的轨迹记录图36单证定义(单证的停用有个废止期就是在什么时间废止期,要在停用期后)此案例是校验在发票类型停用之后发票废止,在单证轨迹查询界面会不会有记录。4把一批过期的单证在过期单证状态更正界面更正过期的单证,单证状态由过期变为未使用。在单证系统查询单证轨迹,增加一条单证状态为过期单证更改的轨迹记录。(过期的途径有两种,一种是直接在“单证回收”界面进行操作;另一种是系统自动跑批过期,但是需要的发放类型不同)图37过期单证状态更正5在单证系统进行入库、发放操作,再在单证回收界面进行“人工回收”。然后去回收回退界面输入人工回收的单证,单证状态由人工回收变为未使用5在单证系统查询单证轨迹,增加一条单证状态为系统回收的轨迹记录。图38回收回退此案例是把数据经过“来回”操作,校验“单证轨迹查询”界面会不有操作轨迹记录图39单证轨迹查询6在核心系统对单证系统发放的激活卡进行收费,在激活卡手动回收管理界面回收未使用状态的激活卡类型的单证,在单证系统查询单证轨迹,增加一条单证状态为系统回收的轨迹记录。图310激活卡手动回收管理此次功能的校验数据需要从总机构进行下发单证,直到营销分部,轨迹记录表会有全部下发的操作还有最后的状态操作7在核心未打印兼业保单,发票在单证系统的状态为系统回收,在单证系统查询单证轨迹,增加一条单证状态为系统回收的轨迹记录。在做打印时的数据是兼业出完单的,此次的轨迹记录跟第一条的结果一样,除了会有发放的记录,就只是增加一条错做后的状态记录。8使用银保通对单证系统发票出单,单证的状态由未使用变为系统回收,在单证系统查询单证轨迹,增加一条单证状态为系统回收的轨迹记录。(银保通出单的状态会经过人工批处理,在核心进行同步单证系统)。再使用另外的单证数据进行重出单,这样上一张数据就会作废,本次的单证数据会成为系统回收,在查询表里有全部操作的记录图311单证轨迹查询32结合功能性测试案例进行性能测试321功能概述由于本系统是面向全国30个分公司同时在单证系统进行操作,每个分公司都会有相应的人员在期系统上进行操作,所以用性能测试工具LOADRUNNER创建虚拟用户模拟操作,在同时操作的情况下,单证轨迹查询界面会不会有遗漏的估计记录,宕机的情况下,查询界面各个字段显示是否正确。322性能测试准备运行环境操作系统WINDOWS2003SERVER数据库管理系统ORACLE连接到系统应用程序客户端数量预计为50300操作系统及版本WINDOWSXP客户端浏览器INTERNETEXPLORER60323设计压力应用思路设计试图对WEB服务进行压力测试的压力测试系统时,必须使它们以某种特定的方式运行代码,这些代码超越了功能验证,目的是要弄清楚被测试的WEB服务器是不是仅能做我们认为它能做的事,而且在被施加了某些高强度压力的情况下仍然继续正常运行。概括来说,压力测试必须对相应服务应用以下四个关键条件重复(REPTITION)测试的重复就是一遍又一遍地执行某个操作或功能,比如重复调用一个WEB服务。压力测试将确定一个操作能否正常执行,而且能否在每次执行时都正常。这对于推断一个产品是否适用于某种情况至关重要。并发(CONCURRENCY)并发就是同时执行多个操作的行为。换句话说,就是在同一个服务器上同时调用许多WEB服务。由于引入并发意味着一个线程中的代码有可能被其他线程中的代码中断,所以错误只在一个指令集以特定的顺序执行时才会被发现。量级(MAGNITUDE)压力测试系统应该应用于产品的另一个条件考虑到了每个操作中的负载量。压力测试可以重复执行一个操作,但是操作自身也要尽量给产品增加负担。随机变化任何压力系统都多少带有随机性。使用重复时,在重新启动或者重复连接服务之前,可以改变操作间的间隔,重复次数,或者也可以改变被重复的WEB服务的顺序。324经功能性测试实际运用分析结合本项目实际情况,预计操作用户人员约515人,实际同时操作人数最大值在10以下。主要操作用户为普通业务员。测试方案此次对以上第4条进行操作,因为第4条是经过“来回”操作,就是发放核销后,在把核销不能用数据进行回退管理,并再次进行利用。测试用例以上第4条案例为基准,模拟20普通的业务员在单证系统进行单证入库、出库,回收和回收回退4创建用户脚本LOADRUNNER使用用户脚本模拟实际用户来访问网站,主要测试目标为WEB应用,因此在本次测试中脚本录制选择WEBHTTP/HTML协议。图41WEBHTTP/HTML协议411完善测试脚本当录制完一个基本的用户脚本后,在正式使用前还必须完善测试脚本,增强脚本的灵活性。事务TRANSACTION8为了衡量服务器的性能需要定义事物。,在运行测试脚本时,LOADRUNNER运行到该事务开始点时就会开始记时,直到运行到该事务的结束点,记时结束,目标事务的运行时间将会在结果中反映。脚本中事物代码为LR_START_TRANSACTION“SUBMITBOOKDATA“/具体事务操作/LR_END_TRANSACTION“SUBMITBOOKDATA“,LR_AUTO图42脚本412用参数化取代常量值用户将提交数据增加数据库记录(如发布维修信息和调配申请),这些操作都被记录在基本脚本中。若多个虚拟用户运行相同的脚本,势必会提交相同的记录,这并不符合实际情况,也有可能引发冲突。因此,为更加真实的模拟实际环境,在该用户脚本的完善过程中,导入了参数化输入。在测试用例中,总共将登陆20个用户,为避免相同用户登陆引发冲突,各个用户名和密码并不相同,为032120601至032120650,因此将使用参数取代常量值。图43脚本参数化413集合点在测试计划中,可能会有要求系统能承受大量的用户同时提交数据或进行操作。LOADRUNNER可以在提交数据前加入集合点,这样当虚拟用户运行到提交数据的集合点时,控制器将检查有多少个拥护已经运行到集合点,并根据最初设置的条件产生行为。对于本系统在线的用户数量有限,对多用户同时递交数据的压力并未要求,也不符合实际情况。所以为了保证预计的负载情况,使用了集合点功能。脚本中集合点的代码为LR_RENDEZVOUS“SUBMITQUERYDATA“413脚本检验执行“运行”命令后,VUGEN8将先编译脚本,检查是否有语法等错误。下图是语法错误导致运行失败的例图图44语法错误脚本运行设置完成后,就可以开始从GENERATOR14中调试脚本了,脚本将按照RUNTIMESETTING的设置开始运行,并在输出窗口打印关键日志。在脚本调试过程中,所执行的脚本是有效的。比如说在该脚本中有一个发放数据信息的动作,当调试脚本成功时,新增加发放数据信息的动作将真正加入到数据库中。42方案执行脚本制作完成,数据文件准备妥当,需要添加一个虚拟场景,在场景中模仿负载运行脚本,在LOADRUNNER中,由COTROLLER15完成这一功能。421场景创建测试用例4模拟20个用户分批依次登陆系统,并在一集束时间内对服务器进行拟真的高强度访问,与此有关的设置中,首先将其负载数量设置为20图45负载设置负载生成器是指生成这些虚拟用户的机器,页面中显示的,表示当前仅有一个负载生成器本机LOCALHOST3。其状态为DOWN,平台为WINDOWS。图46负载生成器422加压计划计划生成器中包含“按方案”和“按组”两种计划模式,但两种计划都包含加压,持续时间,减压三个TAB页。图47计划生成器在本测试场景中,虚拟用户将以每5秒10用户的顺序登陆服务器,加压情况如图图48加压方式当测试场景在CONTROLLER2创建的场景中运行时,测试人员可以添加相应的监视器,除事物响应时间的监视器以外,其余监视器均需要手动添加。场景配置完成,监视器已添加,则可以开始运行测试脚本了,CONTROLLER将按照已经定义好的场景配置运行脚本。43运行结果LOADRUNNER脚本运行结果分析处理将运用ANALYSIS11工具图49ANALYSIS基本报告透过分解界面可以得到比较大的响应时间到底是哪个页面的组件引起的,问题出在服务器上还是网络传输上。在压力测试中WEBSERVER和WEB应用程序是性能的瓶颈,这些瓶颈主要是由于服务器配置不当和资源不足,比如质量不完善的代码以及形成的DLL占用过多处理器资源造成CPU瓶颈,或是对内存的操作不当和管理不善造成的内存瓶颈。5此项目的总结分析本项目的重要测试功能点是“单证轨迹查询”界面的轨迹记录,在单证系统发放的数据无论是在核心或者本系统操作的轨迹都会记录在轨迹表,另外调用接口的部分测试,例如银保通的出单,单证核销后会从核心跑批调用单证接口把状态同步到单证系统,这样会在单证系统会有一条轨迹记录。功能测试就是根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求,确保程序以期望的方式运行而按功能要求对软件进行的测试,通过对一个系统的所有的特性和功能都进行测试确保符合需求和规范。当然测试流程、用力编写方法、黑盒测试方法、BUG严重级别对于一个测试人员来说是最基本要求,也测试的开始。性能测试是为描述测试对象与性能相关的特征并对其进行评价,而实施和执行的一类测试,如描述和评价计时配置文件、执行流、响应时间以及操作的可靠性和限制等特征。不同类型的性能测试侧重于不同的测试目标,这些性能测试的实施贯穿于整个软件开发生命周期光针对测试而言,我觉得测试工具的掌握是非常重要的。很好的掌握测试工具,可以使你模拟到很多不同的场景,得到尽量多的测试结果;(我觉得MANAGER们是贪得无厌的),同时,当你发现DEFECT之后,进入调优阶段,你

温馨提示

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

评论

0/150

提交评论