《软件测试》课件第8章_第1页
《软件测试》课件第8章_第2页
《软件测试》课件第8章_第3页
《软件测试》课件第8章_第4页
《软件测试》课件第8章_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

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

文档简介

项目八对Windows计算器程序进行功能测试8.1问题情境8.2问题分析8.3任务的设计与实施8.4知识总结8.5应用实践

利用QTP(QuickTestProfessional)工具对Windows操作系统中的计算器程序进行功能测试。8.1问题情境

Windows操作系统中的计算器如图8-1所示,可以完成标准的数学运算和高级的科学计算,此次将针对标准的数学运算功能来测试。8.2问题分析图8-1Windows操作系统中的计算器

8.3.1创建测试

(1)首先启动Windows计算器程序。在QTP主界面中依次选择“Resources—ObjectRepository”项,出现如图8-2所示界面。8.3任务的设计与实施图8-2编辑对象库

(2)在这个界面中依次选择“Object-AddObjecttoLocal”项,然后用鼠标光标单击计算器的“1”按钮,出现如图8-3所示界面。图8-3对象选择

(3)在图8-3所示界面中,单击“OK”按钮,则出现如图8-4所示界面,计算器的“1”按钮被添加到对象库中。图8-4添加对象到对象库中

(4)重复步骤(2)和步骤(3),分别把计算器的“

+

”按钮、“2”按钮、“

=

”按钮、“Edit”控件添加到对象库中,如图8-5所示。图8-5添加其他对象后的对象库

(5)关闭图8-5所示的界面,返回到QTP的主界面,在“KeywordView”中的“Item”列,单击“Action1”的下一行,选择“计算器”,选择“Activate”操作,如图8-6所示。图8-6编辑测试步骤

(6)重复步骤(5),分别把其他按钮的单击操作添加到测试步骤中来,如图8-7所示。这样就形成了一个“1

+

2

=

”的计算器操作序列。以同样的方式可以完成其他测试用例的创建。图8-7添加其他按钮测试步骤

(7)定位到最后一个步骤,然后依次选择“Insert

-Checkpoint-

StandardCheckpoint”项,出现如图8-8所示的界面。图8-8编辑“Checkpoint”在图8-8所示的界面中,选择“text”项,设置编辑器“Constant”值为“3.”(注意“3”后面的点号),然后选择“Aftercurrentstep”项,单击“OK”按钮,则出现如图8-9所示的界面。图8-9插入验证步骤这样就形成了一个具备验证检查功能的测试脚本,其测试目的是验证计算器1

+

2的结果是否等于3。这个过程是完全手工创建的,实际上可以通过录制的方式完成操作步骤的添加或者通过直接编写VBScript脚本的方式来创建测试。切换到“ExpertView”可以看到刚才创建的VBScript测试脚本,如图8-10所示。图8-10“ExpertView”界面8.3.2运行测试

在编辑好测试步骤和验证点后,就可以运行测试脚本。按F5键(运行的快捷键),出现如图8-11所示界面。图8-11运行结果文件设置界面在如图8-11所示的界面中,可以设置运行结果的存放路径,如果脚本中定义了输入参数,还可以在运行前设置输入参数。8.3.3分析结果

运行测试后,将出现如图8-12所示的测试结果界面。图8-12测试结果界面在图8-12所示界面中,可以看到测试运行的迭代次数、每次迭代的结果等信息。在测试结果界面右侧还展示了每个测试步骤的运行过程信息,如图8-13所示。图8-13详细测试结果

8.4.1自动化测试概述

随着计算机日益被广泛地应用,客户希望软件产品能满足其业务的所有需求,所以许多应用软件,特别是行业应用软件需要定制,并且客户希望在短期内就能满足其业务需要,这导致许多软件开发企业要在尽可能短的时间内充分地测试软件,提高开发效率和软件质量。在这样的需求下,自动化测试技术开始发展并逐步投入使用。目前,全球越来越多的软件企业在产品开发过程中都采用了自动化方法测试软件。8.4知识总结

1.自动化测试的意义

通常,软件测试的工作量很大。据统计,测试会占用大约40%

的开发时间。对一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60%。而测试中的许多操作是重复性、非智力性和非创造性的,并要求做准确细致的工作,计算机最适合于代替人工去完成这样的任务。

软件自动化测试是相对手工测试而存在的,主要通过所开发的软件测试工具、脚本等来实现,具有良好的可操作性、可重复性和高效率等特点。要理解为什么要进行自动化测试,可以从以下两个方面考虑:

(1)手工测试的局限性。

通过手工测试无法做到覆盖所有代码路径。

简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重复性,工作量往往较大。

许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉到。

进行系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场合,这很难通过手工测试来进行。

进行系统可靠性测试时,需要模拟系统运行几年甚至几十年,以验证系统能否稳定运行,这也是手工测试无法模拟的。

如果有大量(几千)的测试用例,需要在短时间内完成,手工测试几乎不可能做到。

(2)软件自动化测试所带来的好处有以下几方面:

缩短软件开发测试周期,可以让产品更快地投放市场。

充分利用硬件资源,测试效率高。

节省人力资源,降低测试成本。

增强测试的稳定性和可靠性。

提高软件测试的准确度和精确度,增加软件信任度。

软件测试工具使测试工作相对比较容易,且能产生更高质量的测试结果。

手工不能做的事情,自动化测试能做,例如负载、性能测试等。

软件测试执行自动化进程,绝不是因为厌烦了重复的测试工作,而是因为测试工作的需要,更准确地说是回归测试和系统测试的需要。

2.自动化测试的定义

自动化测试的定义是使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施。

在进行自动化测试前,首先要建立一个对软件测试自动化的认识观。软件测试能提高测试效率、覆盖率和可靠性等,它虽然具有很多优点,但也只是测试工作的一部分,是对手工测试的一种补充。自动化测试绝不能代替手工测试,它们各有特点,其测试对象和测试范围都不一样:

(1)在系统功能逻辑测试、验收测试、适用性测试、涉及物理交互性的测试中,多采用黑盒测试的手工测试方法。

(2)单元测试、集成测试、系统负载测试、性能测试、稳定性测试、可靠性测试等比较适合采用自动化测试。

(3)不稳定软件的测试、开发周期很短的软件、一次性的软件等不适合采用自动化测试,因为自动化测试工具本身并没有想象力和灵活性。根据报道,自动化测试只能发现15%的缺陷,而手工测试可以发现85%的缺陷。

(4)自动化测试工具在进行功能测试时,其准确的含义是回归测试工具,这时它不能发现更多的新问题,但可以保证对已经测试过部分的准确性和客观性。

(5)多数情况下,手工测试和自动化测试应该相结合,以最有效的方法来完成测试任务。

3.自动化测试的原理和方法

软件自动化测试可以实现的基础是通过设计特殊程序模拟测试人员对计算机的操作过程、操作行为,或者类似于编译系统那样对计算机程序进行检查的机制来完成。

软件自动化测试的主要实现方法有直接对代码进行静态和动态分析、测试过程的捕获和回放、测试脚本技术等。

(1)代码分析技术。代码分析的原理类似于高级编译系统的原理,需针对不同的高级语言来构造分析工具,在工具中定义类、对象、函数、变量等的定义规则及语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据设定好的质量模型评价代码的质量,对软件进行测试。

(2)捕获和回放。捕获是将用户每一步的操作都记录下来。一般记录程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或是属性变化。然后将所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来,将其同预先给定的标准结果比较。这样可以大大减轻测试的工作量。

(3)脚本技术。脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制对测试软件的操作来产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接用脚本语言编写脚本,然后执行脚本,相当于执行了被测试的程序,以达到完成测试任务的目的。8.4.2QTP介绍

QTP(QuickTestProfessional)是新一代自动化测试解决方案,采用了关键词驱动(Keyword

Driven)测试的理念,能完全简化测试的创建和维护工作。QuickTest关键词驱动方式的独特之处在于,QTP可以通过一个整合的脚本和纠错环境,拥有对基础测试脚本和对象属性的完全访问权限,这些脚本和纠错环境与关键词视图(KeywordView)可以互为同步。

QTP同时满足了技术型和非技术型用户的需求,让各个公司有能力部署更高质量的应用,同时也使部署的速度更快、费用更低、风险也更小。QTP和新的自动化测试系统MercuryBusinessProcessTesting的紧密结合,可以将非技术型的业务专家引入质量流程,这一重大的引入可以将IT和业务更好地融合,最终建立起更出色的应用。

1.QTP的工作原理

QTP易于操作,即使是初级的测试人员也能在短时间内掌握它。测试人员可以使用无需脚本的关键词视图来表现测试的每个步骤,并由此创建一个测试。还可以通过QTP所集成的录制能力来捕获测试步骤。该产品用简单的英语以文档形式记录每个步骤。传统的脚本记录工具所生成的脚本不易修改,与此不同的是,QTP的关键词驱动方式能让用户便捷地插入、修改、驱动数据(Data-Drive)和移除测试步骤。

QTP可以自动引入检查点来验证应用的属性和功能点,比如确认输出或检查链接的有效性。在关键词视图的每一个步骤中,活动屏幕可以显示被测应用程序在该步骤中的确切状态,还可以为任意对象加入几种检查点。仅需在活动屏幕中点击该对象,就可以验证该组件行为是否达到了预期目标。

QTP拥有和Excel同样完善的功能特性,是一个集成的电子数据表格,测试人员可以使用该数据表格创建多种重复测试,无需编程就可以扩展测试案例的覆盖面。测试数据可以通过键入的方式输入,或从数据库、数据表格或文本文档中导出。

2.QTP的安装

(1)启动安装,双击setup图标,如图8-14所示。选择QuickTestProfessional安装程序,进入下一步。图8-14启动安装界面

(2)安装QuickTestProfessional的必备程序。如图8-15所示,安装QuickTestProfessional的必备程序

.NetFramework2.0程序。其安装界面如图8-16所示。图8-15安装QuickTestProfessional的必备程序图8-16.NetFramework2.0安装界面

(3)安装完

.NetFramework2.0以后进入QTP安装首界面,如图8-17所示。图8-17QTP安装首界面

(4)进入许可协议界面,如图8-18所示。选择“我接受该许可证协议中的条款”,然后点击“是”,进入下一步。图8-18许可协议界面

(5)选择许可证类型,如图8-19所示。图8-19许可证类型界面在图8-19所示的界面中,用户根据实际情况选择适合自己的许可证类型。本案例中选择“单机版:请使用为此计算机创建的许可证。”,点击“下一步”,进入注册信息界面。

(6)注册信息,如图8-20所示。图8-20注册信息界面在图8-20所示界面中,输入相应的注册信息,点击“下一步”。

(7)启用QuickTestProfessional远程执行,如图8-21所示。图8-21启用QTP远程执行界面如图8-21所示,选择“自动设置这些选项”,点击“下一步”。

(8)设置InternetExplorer高级选项,如图8-22所示。图8-22设置InternetExplorer高级选项界面在如图8-22所示界面中,选择“我将手动设置所需选项”,点击“下一步”。

(9)进入调试支持界面,如图8-23所示。图8-23调试支持界面在如图8-23所示界面中,点击“下一步”。

(10)选择安装类型,如图8-24所示。图8-24安装类型界面在如图8-24所示界面中,选择“完全”(用户也可以根据需要选择自定义安装类型),点击“下一步”。

(11)选择安装目标位置,如图8-25所示。图8-25选择目标位置界面在图8-25所示界面中,点击“浏览”,选择安装的目标位置,弹出如图8-26所示界面。图8-26目标位置文件夹不存在界面在图8-26所示界面上点击“是”,然后点击“开始”,进入下一步。

(12)完成安装,如图8-27所示。图8-27安装状态界面图8-28客户注册界面在图8-28所示界面中直接点击“下一步”,进入如图8-29所示的界面。图8-29重启电脑界面在图8-29所示界面中,选择“是,我想现在重启电脑”,点击“完成”,重启计算机,完成安装,如图8-30所示。图8-30安装完成界面双击桌面上的“QTP”图标,显示QTP运行主界面,如图8-31所示。图8-31QTP运行主界面

3.QTP程序主界面介绍

在创建测试之前,先了解一下QTP的主界面,如图8-31所示。

QTP主界面包含标题栏、菜单栏、文件工具条等几个界面元素。下面简单解释各界面元素的功能。

(1)标题栏:显示了当前打开的测试脚本的名称。

(2)菜单栏:包含了QTP的所有菜单命令项。

(3)文件工具条:包含了如图8-32所示的几个按钮。

图8-32文件工具条按钮介绍

(4)测试工具条:包含了在创建、管理测试脚本时要使用的按钮,如图8-33所示。

图8-33测试工具条按钮介绍

(5)调试工具条:包含了调试测试脚本时要使用的工具条,如图8-34所示。

图8-34调试工具条按钮介绍

(6)测试脚本管理窗口:提供了两个可切换的窗口,分别通过图形化方式和VBScript脚本方式来管理测试脚本。

(7)

DataTable窗口:用于参数化测试。

(8)状态栏:显示测试过程中的状态。

4.QTP工作流程

(1)录制测试脚本前的准备。在测试前需要确认应用程序及QTP是否符合测试需求,确认如何对应用程序进行测试,例如要测试哪些功能、操作步骤、预期结果等。同时也要检查一下QTP的设定,例如TestSettings以及Options对话窗口,以确保QTP会正确地录制并存储信息,并确认QTP以何种模式存储信息。

(2)录制测试脚本。操作应用程序或浏览网站时,QTP会在KeywordView中以表格的形式显示录制的操作步骤。每一个操作步骤都是使用者在录制时的操作,例如在网站上点击的链接,或者在文本框中输入的信息。

(3)加强测试脚本。在测试脚本中加入检查点,可以检查网页的链接、对象属性或者字符串,以验证应用程序的功能是否正确。

将录制的固定值以参数取代,使用多组数据测试程序。通过使用逻辑或者条件判断式,可以进行更复杂的测试。

(4)对测试脚本进行调试。修改过测试脚本后,需要对测试脚本进行调试,以确保测试脚本能被正常并且顺畅地执行。

(5)在新版应用程序或者网站上执行测试脚本。通过执行测试脚本,QTP会在新版应用程序或者网站上执行测试,检查应用程序的功能是否正确。

(6)分析测试结果。分析测试结果,找出问题所在。

(7)测试报告。在完成测试后,QTP会自动地生成测试结果报告。8.4.3TestComplete介绍

TestComplete是一款由美国AutomatedQA公司生产的自动化功能测试工具。该工具同时支持对Win32、.Net、WPF、Web类型的应用程序的测试,也支持很多平台和语言,例如

.Net、Java、Delphi和C++

等。

安装TestComplete需要满足以下硬件和软件要求:

CPU:奔腾2400

MHz以上的处理器;

内存:128

MB以上;

操作系统:Windows98、WindowsME、Windows2000、WindowsXP、WindowsServer2003、WindowsVista;

浏览器:IE5.0以上。

1.安装步骤

(1)双击setup图标开始安装,出现准备安装界面,如图8-35所示。准备安装界面用以检查计算机系统相应的软件资源是否全都具备。图8-35准备安装界面图8-36TestComplete安装欢迎界面

(2)在TestComplete安装欢迎界面上点击“Next”按钮进入下一步,出现如图8-37所示的协议声明界面。图8-37协议声明界面

(3)在协议声明界面选择“Iacceptthetermsofthelicenseagreement”,然后点击“Next”按钮进入下一步,出现如图8-38所示的设置用户信息界面。图8-38设置用户信息界面

(4)在设置用户信息界面输入相应的信息,然后点击“Next”按钮,进入选择安装路径界面,如图8-39所示。图8-39选择安装路径界面

(5)在选择安装路径界面,用户根据自己的实际情况,选择相应的路径并点击“Next”按钮,进入应用程序文件夹设置界面,如图8-40所示。图8-40应用程序文件夹设置界面

(6)在应用程序文件夹设置界面,用户可根据实际情况选择或使用默认设置,之后点击“Next”按钮,进入组件选择界面,如图8-41所示。图8-41组件选择界面

(7)在组件选择界面,根据需要进行设置,若是初学者建议使用默认设置,然后点击“Next”按钮进入程序安装预览界面,如图8-42所示。图8-42程序安装预览界面

(8)在程序安装预览界面直接点击“Next”按钮进入程序安装拷贝界面,如图8-43所示。图8-43程序安装拷贝界面

(9)在程序安装拷贝界面,等待片刻即可完成安装,出现如图8-44所示的安装完成提示界面。图8-44安装完成提示界面

(10)在安装完成提示界面上,点击“Finish”按钮,完成安装。然后启动TestComplete,其主界面如图8-45所示。图8-45TestComplete主界面

2.TestComplete的基本使用方法

TestComplete的使用方法与其他自动化功能测试工具的使用方法类似,包括以下步骤:

创建测试项目;

录制测试脚本;

编辑测试脚本;

运行测试脚本。

现以对Notepad的测试为例进行说明。

1)创建测试项目

在TestComplete主界面上选择File菜单,点击“New”,新建一个项目,出现如图8-46所示界面。图8-46创建项目界面在创建项目界面上,选择“General-PurposeTestProject”类型的项目,在“Projectname”中输入项目名称,再在“Language”中选择脚本语言(在这里选择“DelphiScript”),然后点击“OK”按钮,出现如图8-47所示界面。图8-47项目向导界面在项目向导界面提供各种项目属性的设置,可直接点击“Finish”按钮,接受所有默认的设置,则出现如图8-48所示的界面。图8-48项目工作空间1界面在项目工作空间1左边的ProjectExplorer界面中选中并双击“TestedApps”项后,可切换到如图8-49所示界面。图8-49项目工作空间2界面在项目工作空间2界面上,可以通过右键选择“NewItem”来添加一个被测试对象。在这里,选择“C:\Windows”目录下的NotePad.EXE。这时在“TestedApps”下就多了一个名为Notepad的对象。右键选择“Run”,则可启动记事本程序。

2)录制测试脚本

接上面步骤,用右键选择“Run”,则可启动记事本程序。启动被测试程序后,可录制基本的测试脚本。通过选择“Script”下面的“Record”子菜单,可使TestComplete处于录制状态,会把界面上的所有GUI操作都记录下来,并开始按照预设的测试用例步骤来操作被测试对象。例如,在记事本输入区输入“123”,然后停止录制,则会在脚本中添加如下

代码:

procedureTest1;

begin

Sys.Process('NOTEPAD').Window('Notepad','*').Window('Edit').Keys('123');

end;

3)编辑测试脚本

上面仅仅录制了一个很简单的操作,这样简单的脚本对于自动化测试而言是不够的,需要增强脚本,加入验证点。对于上面的简单操作,可以加入对输入字符串后的记事本的某些属性进行验证。例如,可以在输入字符串后,验证记事本输入区域的文本对象是否改变,是否包含了输入的字符串。

在加入验证点之前,先看一下有哪些被测对象的属性是可以被用于校验的。TestComplete提供了一个强大的对象查看工具“ObjectBrowser”,如图8-50所示。图8-50ObjectBrowser界面在这个界面的左边是“Objects”区域,该区域用树状层次结构展示了系统内存中的所有进程对象以及它们的下级对象,包括窗体、空间等。在界面的右边则是对象对应的属性和可调用的方法等。找到记事本对象的“Edit”空间,可以看到它的“wText”属性用来存储文本内容,因此可以利用这个对象属性来验证输入区域是否包含了刚才输入的内容,从而判断测试是否通过。把“Test1”的代码修改成如下代码:

procedureTest1;

begin

Sys.Process('NOTEPAD').Window('Notepad','*').Window('Edit').Keys('123');

ifSys.Process('Notepad.EXE').Window('Notepad','无标题-记事本',

1).Window('Edit','',1).wText='123'

then

begin

log.Message('OK!')

end

else

log.Error('输入错误!')

end;

4)运行测试脚本

在“test1”的代码中用右键选择“RunCurrentRoutine”就可以运行刚才录制的脚本。运行过程无误后,出现如图8-51所示界面。图8-51运行结果界面这个界面显示的是脚本运行的结果。如果运行有误,则会在“TestLog”窗口中列出错误信息。双击错误信息可以定位到错误发生的代码行。8.4.4自动化测试常见的误区

1.自动化测试工具是万能的

很多人一听到自动化测试,就认为自动化测试工具可以完成一切测试工作,从测试计划到测试执行再到测试结果分析,都不需要任何人工干预。显然,这是一种理想状态,现实中还没有哪个测试工具有这个能力,并且将来也不会有。在现实中有关的测试设计、测试案例以及一些关键的测试任务还是需要人工参与的。也就是说,自动化测试是对手工测试的辅助和补充,它永远也不可能完全取代手工测试。

2.测试工具可适用于所有的测试

每种自动化测试工具都有它的应用范围和可用对象,所以不能认为一种自动化测试工具能够满足所有测试的需求。针对不同的测试目的和测试对象,应该选择合适的测试工具进行测试。在很多情况下,需要利用多种测试工具或者开发自动化测试框架才能达到自动化测试的目的。商业和开源的测试工具能够用来进行自动化测试,但是需要根据自身产品的特点开发自动化测试框架,在框架中提供常用的测试用例,以加快测试速度,达到测试用例复用,这是今后测试自动化发展的道路。

3.测试工具能使工作量大幅度减少

事实上,引入自动化测试工具不会马上减少测试工作,相反,在更多情况下,首次将自动化测试工具引入企业时,测试工作实际上变得更艰巨了。只有在正确合理地使用测试工具并有一定的技术积累之后,测试工作量才能逐渐减轻。

4.测试工具能实现100%的测试覆盖率

自动化测试可以增加测试覆盖的深度和广度,利用白盒测试工具可能实现语句全覆盖、逻辑路径全覆盖等,但因为穷举测试必须使用所有可能的数据,包括有效的和无效的测试数据,所以在有限的资源下也不可能进行100%

的测试。

5.自动化测试工具容易使用

对于这一点,很多测试工程师有同样的错误观点,认为测试工具可以简单地通过捕获(录制)客户端操作生成脚本,且脚本不加编辑就可用于回放使用。事实上,自动化测试不是那么简单的,捕获的操作是否正确,以及脚本编辑是否合理都会影响测试结果。因此,自动化测试需要更多的技能,也需要更多的培训。

6.自动化测试能发现大量新缺陷

发现更多的新缺陷应该是手工测试的主要目的,不能期望自动化测试去发现更多新缺陷。事实上,自动化测试主要用于发现原来的缺陷。自动化测试用于回归测试,而大量的新业务测试更多地还是依赖手工测试。8.4.5如何正确地理解自动化测试

谈到自动化测试,一般就会提到测试工具。许多人觉得使用了一两个测试工具就是实现了测试自动化,这种理解是不对的,至少是片面的。的确,测试工具的使用是自动化测试的一部分工作,但“用测试工具进行测试”不等于“自动化测试”。

自动化测试的真正含义可以理解为“一切可以由计算机系统自动完成的测试任务都已经由计算机系统或软件工具、程序来承担并自动执行”。它包含了下列三层含义:

(1)“一切”不仅仅指测试执行的工作——对被测试的对象进行验证,还包括测试的其他工作,如缺陷管理、测试管理、环境安装、设置和维护等。

(2)“可以”意味着某些工作无法由系统自

温馨提示

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

评论

0/150

提交评论