章系统实现与维护

上传人:仙*** 文档编号:59050277 上传时间:2022-03-01 格式:PPT 页数:100 大小:443.50KB
收藏 版权申诉 举报 下载
章系统实现与维护_第1页
第1页 / 共100页
章系统实现与维护_第2页
第2页 / 共100页
章系统实现与维护_第3页
第3页 / 共100页
资源描述:

《章系统实现与维护》由会员分享,可在线阅读,更多相关《章系统实现与维护(100页珍藏版)》请在装配图网上搜索。

1、第七章第七章 系统实现与维护7.1 7.1 系统实施的任务系统实施的任务7.2 7.2 程序设计语言的分类程序设计语言的分类7.3 7.3 程序设计语言的选择程序设计语言的选择7.4 7.4 程序设计风格程序设计风格7.5 7.5 系统测试基础系统测试基础7.6 7.6 单元测试单元测试7.7 7.7 集成测试集成测试7.8 7.8 确认测试确认测试7.9 7.9 测试技术测试技术7.10 7.10 软件调试软件调试7.11 7.11 软件维护软件维护2/9/2022第7章 系统实现与维护 2绪言 系统设计完成后进入系统实施阶段。系统设计完成后进入系统实施阶段。系统实施系统实施就是将就是将系统

2、分析和设计的结果转换为能够在计算机上实际运行的系统分析和设计的结果转换为能够在计算机上实际运行的系统的过程,属于系统开发周期的后期阶段。系统的过程,属于系统开发周期的后期阶段。v本章的主要内容有: 系统实施的任务、特点和方法; 程序设计的原则、标准和方法; 软件开发工具; 系统测试的原则、内容和方法; 系统转换的主要方式和工作等。2/9/2022第7章 系统实现与维护 37.1 系统实施的任务 系统实施的任务就是以系统设计方案为依据,系统实施的任务就是以系统设计方案为依据,按照系统实施方案进行具体的实现,最终组建一个按照系统实施方案进行具体的实现,最终组建一个能够实际运行的系统交付用户使用。实

3、现阶段的任能够实际运行的系统交付用户使用。实现阶段的任务和工作内容包括以下务和工作内容包括以下4 4个方面:个方面:1. 硬件准备;硬件准备;2. 软件准备软件准备3. 人员培训;人员培训;4. 数据准备。数据准备。2/9/2022第7章 系统实现与维护 47.1 系统实施的任务系统实施的特点系统实施的特点系统实施是管理信息系统开发工作的后期阶系统实施是管理信息系统开发工作的后期阶段,是一项涉及各级管理人员、系统开发技术人员、段,是一项涉及各级管理人员、系统开发技术人员、系统测试人员、系统操作和维护人员的组织协调,系统测试人员、系统操作和维护人员的组织协调,以及系统应用场地、设备和资金的调配管

4、理,持续以及系统应用场地、设备和资金的调配管理,持续时间长且十分复杂的系统工程。工作量大,投入的时间长且十分复杂的系统工程。工作量大,投入的人力、物力多,组织管理工作繁重是其主要特点。人力、物力多,组织管理工作繁重是其主要特点。2/9/2022第7章 系统实现与维护 57.2 程序设计语言分类v 按应用特点分类按应用特点分类 面向机器语言(机器语言和汇编语言)面向机器语言(机器语言和汇编语言) 高级语言高级语言 基础语言(基础语言(BASICBASIC、FortranFortran) 现代语言(现代语言(PascalPascal、C C、C+C+) 专用语言(专用语言(LispLisp、Pro

5、logProlog)v 按语言内在特点分类按语言内在特点分类 系统实现语言系统实现语言 静态高级语言静态高级语言 块结构高级语言块结构高级语言 动态高级语言动态高级语言2/9/2022第7章 系统实现与维护 67.3 程序设计语言的选择 v 理想标准理想标准 应该有理想的模块化机制,以及可读性好的控制结构应该有理想的模块化机制,以及可读性好的控制结构和数据结构,以使程序容易测试和维护,同时减少软和数据结构,以使程序容易测试和维护,同时减少软件生存周期的总成本。件生存周期的总成本。 应有良好的独立编译机制,以降低软件开发和维护的应有良好的独立编译机制,以降低软件开发和维护的成本。成本。 应该使编

6、译程序能够尽可能多地发现程序中的错误,应该使编译程序能够尽可能多地发现程序中的错误,以便于调试和提高软件的可靠性。以便于调试和提高软件的可靠性。2/9/2022第7章 系统实现与维护 77.3 程序设计语言的选择v 实践标准实践标准 语言自身的功能语言自身的功能 系统用户的要求系统用户的要求 编码和维护成本编码和维护成本 软件的兼容性软件的兼容性 可以使用的软件工具可以使用的软件工具 软件的可移植性软件的可移植性 开发系统的规模开发系统的规模 程序设计人员的水平程序设计人员的水平2/9/2022第7章 系统实现与维护 87.4 程序设计风格v 编码阶段的任务是把详细设计阶段中用伪代码写成的程序

7、编码阶段的任务是把详细设计阶段中用伪代码写成的程序转换成用程序设计语言实现的程序。转换成用程序设计语言实现的程序。v 程序设计语言的特性和程序设计风格会深刻地影响软件的程序设计语言的特性和程序设计风格会深刻地影响软件的质量和可维护性。质量和可维护性。v 为保证编码的质量,程序员必须深刻理解、熟练掌握并正为保证编码的质量,程序员必须深刻理解、熟练掌握并正确地运用程序设计语言的特性。此外,还要求源程序具有确地运用程序设计语言的特性。此外,还要求源程序具有良好的结构性和良好的程序设计风格。良好的结构性和良好的程序设计风格。2/9/2022第7章 系统实现与维护 97.4 程序设计风格v好程序的代码逻

8、辑简明清晰、易读易懂:好程序的代码逻辑简明清晰、易读易懂:程序的内部文档;程序的内部文档;数据说明;数据说明;语句构造;语句构造;输入输出方法;输入输出方法;2/9/2022第7章 系统实现与维护 107.4 程序设计风格v程序的内部文档程序的内部文档标识符的命名:标识符的命名:标识符即符号名,包括模块名、变量名、常量名、标识符即符号名,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名等。标号名、子程序名、数据区名以及缓冲区名等。这些名字应能反映它所代表的实际东西,应有一这些名字应能反映它所代表的实际东西,应有一定实际意义。定实际意义。名字不是越长越好,应当选择精炼的意义明确

9、的名字不是越长越好,应当选择精炼的意义明确的名字。名字。必要时可使用缩写名字,但这时要注意缩写规则必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释。要一致,并且要给每一个名字加注释。在一个程序中,一个变量只应用于一种用途。在一个程序中,一个变量只应用于一种用途。2/9/2022第7章 系统实现与维护 117.4 程序设计风格v程序的内部文档程序的内部文档C#C#、JavaJava等语言编码命名规范对字段、变量、类、等语言编码命名规范对字段、变量、类、方法和属性等指定了统一的命名形式:方法和属性等指定了统一的命名形式:类名、方法名和属性名均使用类名、方法名和属性名均使用

10、PascalPascal命名法,即命名法,即所有单词连写,每个单词的第一个字母大写,其所有单词连写,每个单词的第一个字母大写,其它字母小写。它字母小写。例如:例如:GetDataGetData、HelloWorldHelloWorld等。等。变量名、对象名以及方法的参数名均使用变量名、对象名以及方法的参数名均使用CamelCamel命命名法,即所有单词连写,第一个单词全部小写,名法,即所有单词连写,第一个单词全部小写,其它每个单词的第一个字母大写。其它每个单词的第一个字母大写。例如:例如:userNameuserName、userAgeuserAge等等。等等。2/9/2022第7章 系统实现

11、与维护 127.4 程序设计风格 这里需要强调一点,对于一名合格的程序员来说,不论是这里需要强调一点,对于一名合格的程序员来说,不论是练习还是实际开发,一定不要养成随意命名的坏习惯。良练习还是实际开发,一定不要养成随意命名的坏习惯。良好的命名习惯会给项目开发带来很多益处。好的命名习惯会给项目开发带来很多益处。2/9/2022第7章 系统实现与维护 137.4 程序设计风格v程序的内部文档程序的内部文档程序的注释:程序的注释:夹在程序中的注释是程序员与日后的程序读者之夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。间通信的重要手段。注释决不是可有可无的。注释决不是可有可无的。一些正规

12、的程序文本中,注释行的数量占到整个一些正规的程序文本中,注释行的数量占到整个源程序的源程序的1 13 3到到1 12 2,甚至更多。,甚至更多。注释分为序言性注释和功能性注释。注释分为序言性注释和功能性注释。2/9/2022第7章 系统实现与维护 147.4 程序设计风格v 序言性注释:序言性注释:通常置于每个程序模块的开头部分,它应当给出程序通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。有些的整体说明,对于理解程序本身具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。

13、要求程序编制者逐项列出。2/9/2022第7章 系统实现与维护 157.4 程序设计风格v序言性注释有关项目包括:序言性注释有关项目包括:程序标题;程序标题;有关本模块功能和目的的说明;有关本模块功能和目的的说明;主要算法;主要算法;接口说明:包括调用形式,参数描述,子程序清单;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述:重要的变量及其用途,约束或限制条件,以及其有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息;它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包;模块位置:在哪一个源文件中,或隶属于哪一个软件包;开发简历:模块设计者,复审者,复审日期

14、,修改日期及有关说开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。明等。2/9/2022第7章 系统实现与维护 167.4 程序设计风格v 功能性注释:功能性注释: 功能性注释嵌在源程序体中,用以描述其后的语句或功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句而会程序段是在做什么工作,或是执行了下面的语句而会怎么样。而不要解释下面怎么做。怎么样。而不要解释下面怎么做。2/9/2022第7章 系统实现与维护 177.4 程序设计风格v程序的内部文档:程序的内部文档:视觉组织视觉组织空格、空行和缩进。空格、空行和缩进。恰当地利用空格,可以突出运

15、算的优先性。恰当地利用空格,可以突出运算的优先性。自然的程序段之间可用空行隔开。自然的程序段之间可用空行隔开。缩进也叫做向右缩格或移行。它是指程序中的各缩进也叫做向右缩格或移行。它是指程序中的各行不必都在左端对齐,都从第一格起排列。这样行不必都在左端对齐,都从第一格起排列。这样做使程序完全分不清层次关系。做使程序完全分不清层次关系。对于选择语句和循环语句,把其中的程序段语句对于选择语句和循环语句,把其中的程序段语句向右做阶梯式移行。使程序的逻辑结构更加清晰。向右做阶梯式移行。使程序的逻辑结构更加清晰。2/9/2022第7章 系统实现与维护 187.4 程序设计风格v数据说明数据说明在设计阶段已

16、经确定了数据结构的组织及其复杂性。在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注为了使程序中数据说明更易于理解和维护,必须注意以下几点:意以下几点:数据说明的次序应当规范化;数据说明的次序应当规范化;说明语句中变量安排有序化;说明语句中变量安排有序化;使用注释说明复杂数据结构。使用注释说明复杂数据结构。 2/9/2022第7章 系统实现与维护 197.4 程序设计风格v 数据说明的次序应当规范化:数据说明的次序应当规范化: 数据说明次序规范化,使数据属性容易查找,也有利数

17、据说明次序规范化,使数据属性容易查找,也有利于测试,排错和维护于测试,排错和维护 。 原则上,数据说明的次序与语法无关,其次序是任意原则上,数据说明的次序与语法无关,其次序是任意的。但出于阅读、理解和维护的需要,最好使其规范的。但出于阅读、理解和维护的需要,最好使其规范化,使说明的先后次序固定。化,使说明的先后次序固定。 例如,在类型说明中可按如下顺序排列:例如,在类型说明中可按如下顺序排列: 整型量说明整型量说明 实型量说明实型量说明 字符量说明字符量说明 逻辑量说明逻辑量说明2/9/2022第7章 系统实现与维护 207.4 程序设计风格v 说明语句中变量安排有序化说明语句中变量安排有序化

18、 当多个变量名在一个说明语句中说明时,应当对这些当多个变量名在一个说明语句中说明时,应当对这些变量按字母的顺序排列。变量按字母的顺序排列。 例如:例如: 把把integer size, length, width, cost, priceinteger size, length, width, cost, price 写成写成 integer cost, length, price , size, integer cost, length, price , size, widthwidth2/9/2022第7章 系统实现与维护 217.4 程序设计风格v 使用注释说明复杂数据结构使用注释说明复

19、杂数据结构 如果设计了一个复杂的数据结构,应当使用注释来说如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据结构的特点。明在程序实现时这个数据结构的特点。2/9/2022第7章 系统实现与维护 227.4 程序设计风格v语句构造语句构造在设计阶段确定了软件的逻辑流结构,但构造单个在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。语句构造力求简单、直语句则是编码阶段的任务。语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化。接,不能为了片面追求效率而使语句复杂化。在一行内只写一条语句。在一行内只写一条语句。避免采用过于复杂的条件测试。避免采用过于复杂的

20、条件测试。 尽量减少尽量减少“非非” ” 条件的测试。条件的测试。避免大量使用循环嵌套和条件嵌套。避免大量使用循环嵌套和条件嵌套。利用括号使逻辑表达式或算术表达式的运算次序利用括号使逻辑表达式或算术表达式的运算次序清晰直观。清晰直观。除非对效率有特殊的要求,程序编写要做到清晰除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二。第一,效率第二。2/9/2022第7章 系统实现与维护 237.4 程序设计风格v语句构造语句构造比较下面两段代码,哪一段更好?比较下面两段代码,哪一段更好?AI = AI AT;AT = AI AT;AI = AI AT;WORK = AT;AT = AI;AI

21、= WORK;2/9/2022第7章 系统实现与维护 247.4 程序设计风格v语句构造语句构造程序要能直截了当地说明程序员的用意。程序要能直截了当地说明程序员的用意。比较下面两段代码,哪一段更好?比较下面两段代码,哪一段更好?for ( i = 1; i = n; i+ ) for ( j = 1; j = n; j+ ) Vij = ( i j ) * ( j i );for ( i=1; i = n; i+ ) for ( j=1; j = n; j+ ) if ( i = j ) Vij = 1; else Vij = 0; 2/9/2022第7章 系统实现与维护 257.4 程序设计

22、风格v语句构造语句构造首先要保证程序正确首先要保证程序正确, ,然后才要求提高速度。反过来说,在使然后才要求提高速度。反过来说,在使程序高速运行时,首先要保证它是正确的。程序高速运行时,首先要保证它是正确的。让编译程序做简单的优化。让编译程序做简单的优化。尽可能使用库函数。尽可能使用库函数。避免使用临时变量而使可读性下降。避免使用临时变量而使可读性下降。避免不必要的转移。同时如果能保持程序可读性,则不必用避免不必要的转移。同时如果能保持程序可读性,则不必用GOTOGOTO语句。语句。尽量只采用三种基本的控制结构来编写程序。尽量只采用三种基本的控制结构来编写程序。避免使用空的避免使用空的ELSE

23、ELSE语句和语句和IFIF THEN THEN语句。这种结构容易语句。这种结构容易使读者产生误解。使读者产生误解。“如果我不是编码的人,那么能看懂它吗?如果我不是编码的人,那么能看懂它吗?”2/9/2022第7章 系统实现与维护 267.4 程序设计风格v输入与输出输入与输出关于输入和输出有下列的启发规则:关于输入和输出有下列的启发规则:对所有的输入数据都要进行检验,识别错误的输入,以保证每对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;个数据的有效性;检查输入项的各种重要组合的合理性,必要时报告输入状态信检查输入项的各种重要组合的合理性,必要时报告输入状态信息;息;使

24、得输入的步骤和操作尽可能简单,并保持简单的输入格式;使得输入的步骤和操作尽可能简单,并保持简单的输入格式;输入数据时,应允许使用自由格式输入;输入数据时,应允许使用自由格式输入;应允许缺省值;应允许缺省值;输入一批数据时,最好使用输入结束标志,而不要由用户指定输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;输入数据数目;2/9/2022第7章 系统实现与维护 277.4 程序设计风格v输入与输出输入与输出关于输入和输出有下列的启发规则:关于输入和输出有下列的启发规则:在交互式输入时,要在屏幕上使用提示符明确提示交互输入的在交互式输入时,要在屏幕上使用提示符明确提示交互输入的

25、请求,指明可使用选择项的种类和取值范围。同时,在数据输请求,指明可使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息;入的过程中和输入结束时,也要在屏幕上给出状态信息;当程序设计语言对输入输出格式有严格要求时,应保持输入当程序设计语言对输入输出格式有严格要求时,应保持输入格式与输入语句要求的一致性;格式与输入语句要求的一致性;给所有的输出加注解,并设计输出报表格式。输入输出风格给所有的输出加注解,并设计输出报表格式。输入输出风格还受到许多其它因素的影响。如输入输出设备(例如终端的还受到许多其它因素的影响。如输入输出设备(例如终端的类型,图形设备,数字化转

26、换设备等)、用户的熟练程度以及类型,图形设备,数字化转换设备等)、用户的熟练程度以及通信环境等。通信环境等。 2/9/2022第7章 系统实现与维护 287.4 程序设计风格v程序效率的准则程序效率的准则效率是一个性能要求,目标值应当在需求分析阶段给效率是一个性能要求,目标值应当在需求分析阶段给出,软件效率应以需求为准。出,软件效率应以需求为准。好的软件设计可以提高效率。好的软件设计可以提高效率。程序的效率与程序的简单性相关。程序的效率与程序的简单性相关。2/9/2022第7章 系统实现与维护 297.4 程序设计风格v 算法对效率的影响算法对效率的影响 尽可能简化相关的表达式;尽可能简化相关

27、的表达式; 仔细检查算法中的嵌套循环,将某些语句移到循环外;仔细检查算法中的嵌套循环,将某些语句移到循环外; 尽量避免使用多维数组;尽量避免使用多维数组; 尽量避免使用指针和复杂的表达式;尽量避免使用指针和复杂的表达式; 采用采用“快速快速”的算术运算;的算术运算; 不要混淆数据结构,避免类型混杂;不要混淆数据结构,避免类型混杂; 尽量采用整数算术表达式和布尔表达式;尽量采用整数算术表达式和布尔表达式; 选用高效算法;选用高效算法;2/9/2022第7章 系统实现与维护 307.5 7.5 系统测试基础系统测试基础v 软件测试目的:软件测试目的: 测试是程序的执行过程,目的在于发现错误;测试是

28、程序的执行过程,目的在于发现错误; 一个好的测试用例在于能发现至今未发现的错误;一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。一个成功的测试是发现了至今未发现的错误的测试。2/9/2022第7章 系统实现与维护 317.5 7.5 系统测试基础系统测试基础v 软件测试的准则:软件测试的准则: 所有测试都应该能追溯到用户需求。所有测试都应该能追溯到用户需求。 应该远在测试开始之前就制定出测试计划应该远在测试开始之前就制定出测试计划 。 把把ParetoPareto原理应用到软件测试中。原理应用到软件测试中。ParetoPareto原理说明,测原理说明

29、,测试发现的错误中的试发现的错误中的8080很可能是由程序中很可能是由程序中2020的模块造的模块造成的。成的。 应该从应该从“小规模小规模”测试开始,并逐步进行测试开始,并逐步进行“ “ “大规模大规模”测试。测试。 穷举测试是不可能的。穷举测试是不可能的。 为了达到最佳的测试效果,应该由独立的第三方从事测为了达到最佳的测试效果,应该由独立的第三方从事测试工作。试工作。2/9/2022第7章 系统实现与维护 327.5 7.5 系统测试基础系统测试基础v软件测试步骤:软件测试步骤:模块测试(单元测试):模块测试(单元测试):把每个模块作为一个单独的实体来测试,发现的把每个模块作为一个单独的实

30、体来测试,发现的往往是编码和详细设计的错误。往往是编码和详细设计的错误。子系统测试(集成测试):子系统测试(集成测试):把经过单元测试的模块放在一起形成一个子系统把经过单元测试的模块放在一起形成一个子系统来测试,着重测试模块的接口。来测试,着重测试模块的接口。系统测试(集成测试):系统测试(集成测试):把经过测试的子系统装配成一个完整的系统来测把经过测试的子系统装配成一个完整的系统来测试。发现的往往是软件设计中的错误,也可能发试。发现的往往是软件设计中的错误,也可能发现需求说明中的错误。现需求说明中的错误。2/9/2022第7章 系统实现与维护 337.5 7.5 系统测试基础系统测试基础v软

31、件测试步骤:软件测试步骤:验收测试(确认测试):验收测试(确认测试):把软件系统作为单一的实体进行测试,是在用户积极参与下把软件系统作为单一的实体进行测试,是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试。目的是验证系统确实能够满足用户的需要。息)进行测试。目的是验证系统确实能够满足用户的需要。发现的往往是系统需求说明书中的错误。发现的往往是系统需求说明书中的错误。平行运行:平行运行:是同时运行新开发出来的系统和将被它取代的旧系统,以便是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理

32、结果。比较新旧两个系统的处理结果。这样做的具体目的有如下几点:这样做的具体目的有如下几点:可以在准生产环境中运行新系统而又不冒风险;用户能有一可以在准生产环境中运行新系统而又不冒风险;用户能有一段熟悉新系统的时间;可以验证用户指南和使用手册之类的段熟悉新系统的时间;可以验证用户指南和使用手册之类的文档;能够以准生产模式对新系统进行全负荷测试,可以用文档;能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。测试结果验证性能指标。2/9/2022第7章 系统实现与维护 347.5 7.5 系统测试基础系统测试基础2/9/2022第7章 系统实现与维护 357.5 7.5 系统测试基

33、础系统测试基础v 测试阶段的信息流程:测试阶段的信息流程: 软件配置:软件需求规格说明、软件设计规格说明、软件配置:软件需求规格说明、软件设计规格说明、源代码等;源代码等; 测试配置:测试计划、测试方案、测试数据等;测试配置:测试计划、测试方案、测试数据等; 测试结果分析:比较实测结果与预期结果,评价错误测试结果分析:比较实测结果与预期结果,评价错误是否发生。是否发生。 排错排错( (调试调试) ) :对已经发现的错误进行错误定位和确定:对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。出错性质,并改正这些错误,同时修改相关的文档。 2/9/2022第7章 系统实

34、现与维护 367.6 7.6 单元测试单元测试v 测试重点:测试重点: 模块接口。主要检查下述几个方面:模块接口。主要检查下述几个方面: 参数的数目、次序、属性或单位系统与变元是否一参数的数目、次序、属性或单位系统与变元是否一致;致; 是否修改了只作输入用的变元;是否修改了只作输入用的变元; 全局变量的定义和用法在各个模块中是否一致。全局变量的定义和用法在各个模块中是否一致。 局部数据结构:发现局部数据说明、初始化、默认值局部数据结构:发现局部数据说明、初始化、默认值等方面的错误。等方面的错误。 重要的执行通路:选择最有代表性、最可能发现错误重要的执行通路:选择最有代表性、最可能发现错误的执行

35、通路进行测试。的执行通路进行测试。 2/9/2022第7章 系统实现与维护 377.6 7.6 单元测试单元测试v 测试重点:测试重点: 出错处理通路。当评价出错处理通路时,应该着重测出错处理通路。当评价出错处理通路时,应该着重测试下述一些可能发生的错误:试下述一些可能发生的错误: 对错误的描述是难以理解的;对错误的描述是难以理解的; 记下的错误与实际遇到的错误不同;记下的错误与实际遇到的错误不同; 在对错误进行处理之前,错误条件已经引起系统干在对错误进行处理之前,错误条件已经引起系统干预预 ; 对错误的处理不正确;对错误的处理不正确; 描述错误的信息不足以帮助确定造成错误的位置描述错误的信息

36、不足以帮助确定造成错误的位置 。2/9/2022第7章 系统实现与维护 387.6 7.6 单元测试单元测试v 测试重点:测试重点: 边界条件。边界条件。 软件常常在它的边界上失效软件常常在它的边界上失效 。 使用刚好小于、刚好等于和刚好大于最大值或最小使用刚好小于、刚好等于和刚好大于最大值或最小值的数据结构、控制量和数据值的测试方案,非常值的数据结构、控制量和数据值的测试方案,非常可能发现软件中的错误。可能发现软件中的错误。2/9/2022第7章 系统实现与维护 397.6 7.6 单元测试单元测试v 代码检测代码检测 由审查小组对源程序正式进行人工测试。由审查小组对源程序正式进行人工测试。

37、 审查之前,小组成员应该先研究设计说明书,力求审查之前,小组成员应该先研究设计说明书,力求理解这个设计。理解这个设计。 审查会上倾听程序编写者的解释,并力图发现其中审查会上倾听程序编写者的解释,并力图发现其中的错误。的错误。 对照类似于上一小节中介绍的程序设计常见错误清对照类似于上一小节中介绍的程序设计常见错误清单,分析审查这个程序。单,分析审查这个程序。 预排:由一个人扮演预排:由一个人扮演“测试者测试者”,其他人扮演,其他人扮演“计算计算机机”。2/9/2022第7章 系统实现与维护 407.7 集成测试v 测试重点:测试重点: 恢复测试:通过各种方式强制地让系统发生故障并验恢复测试:通过

38、各种方式强制地让系统发生故障并验证其能适当恢复的一种测试。(初始化、重启、平均证其能适当恢复的一种测试。(初始化、重启、平均恢复时间等等)恢复时间等等) 安全测试:验证建立在系统内的保护机制是否能够实安全测试:验证建立在系统内的保护机制是否能够实际保护系统不受非法入侵。际保护系统不受非法入侵。 压力测试:以一种要求反常数量、频率和容量的方式压力测试:以一种要求反常数量、频率和容量的方式执行系统。执行系统。 性能测试:常与压力测试一起进行,需要软件和硬件性能测试:常与压力测试一起进行,需要软件和硬件配合。配合。2/9/2022第7章 系统实现与维护 417.7 集成测试v 代表工具:代表工具:

39、OTFOTF:由:由MCG SoftwareMCG Software开发开发 QADirectorQADirector:由:由Compuware CropCompuware Crop开发开发 TestWorksTestWorks:由:由Software ResearchSoftware Research开发,包含完整的、开发,包含完整的、集成的成套测试工具,包括测试管理和测试报告。集成的成套测试工具,包括测试管理和测试报告。 C+TestC+Test:是一个单元测试工具,用于:是一个单元测试工具,用于C C或或C+C+代码测代码测试。试。 CodeMedicCodeMedic、BugColll

40、ector ProBugColllector Pro、GNATSGNATS2/9/2022第7章 系统实现与维护 427.7 集成测试v 集成测试是测试和组装软件的系统化技术。集成测试是测试和组装软件的系统化技术。v 由模块组装成程序时有两类方法:由模块组装成程序时有两类方法: 非渐增式测试:先分别测试每个模块,再一下子把所非渐增式测试:先分别测试每个模块,再一下子把所有模块按设计要求放在一起结合成所要的程序。有模块按设计要求放在一起结合成所要的程序。 渐增式测试:把下一个要测试的模块同已测试好的那渐增式测试:把下一个要测试的模块同已测试好的那些模块结合起来进行测试,依次类推,每次增加一个些模

41、块结合起来进行测试,依次类推,每次增加一个模块。这种方法实质上同时完成单元测试和集成测试。模块。这种方法实质上同时完成单元测试和集成测试。 2/9/2022第7章 系统实现与维护 437.7 集成测试非渐增式测试方法非渐增式测试方法渐增式测试方法渐增式测试方法需要分别测试每个模块,编写的测试需要分别测试每个模块,编写的测试软件(驱动模块和支持模块)较多,软件(驱动模块和支持模块)较多,工作量较大;工作量较大;可利用已测试过的模块可利用已测试过的模块最后才把模块相连在一起,接口错误最后才把模块相连在一起,接口错误发现得晚。发现得晚。可以较早发现模块之间的接口错误可以较早发现模块之间的接口错误一次

42、组合所有模块,如果发现错误难一次组合所有模块,如果发现错误难以判断定位。以判断定位。如果发生错误则通常和最新加进来的模如果发生错误则通常和最新加进来的模块有关;块有关;可以并行测试所有模块,能充分利用可以并行测试所有模块,能充分利用人力,加快工程进度。人力,加快工程进度。占用机时多,占用机时多,测试每个新加入模块时,测试每个新加入模块时,已经测试完的模块也都要一起运行。但已经测试完的模块也都要一起运行。但测试更彻底测试更彻底2/9/2022第7章 系统实现与维护 447.7 集成测试v 四种集成策略:四种集成策略: 一次性集成一次性集成 自顶向下集成自顶向下集成 自底向上集成自底向上集成 三明

43、治集成三明治集成2/9/2022第7章 系统实现与维护 457.8 7.8 确认测试确认测试v 确认测试目标是验证软件的有效性。确认测试目标是验证软件的有效性。v 软件有效性的简单定义:如果软件的功能和性能如同用户软件有效性的简单定义:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。所合理期待的那样,软件就是有效的。v 因此,需求阶段产生的需求规格说明书或类似文档是软件因此,需求阶段产生的需求规格说明书或类似文档是软件有效性的标准,也是进行确认测试的基础。有效性的标准,也是进行确认测试的基础。 v 确认测试以用户为主来进行。确认测试以用户为主来进行。2/9/2022第7章 系统实

44、现与维护 467.8 7.8 确认测试确认测试v 确认测试的范围确认测试的范围 保证软件能满足所有功能要求。保证软件能满足所有功能要求。 能达到每个性能要求。能达到每个性能要求。 文档资料是准确而完整的。文档资料是准确而完整的。 应该保证软件能满足其他预定的要求(例如,安全性、应该保证软件能满足其他预定的要求(例如,安全性、可移植性、兼容性和可维护性等)。可移植性、兼容性和可维护性等)。2/9/2022第7章 系统实现与维护 477.8 7.8 确认测试确认测试v 软件配置复查软件配置复查 复查的目的是保证软件配置的所有成分都齐全,质量复查的目的是保证软件配置的所有成分都齐全,质量符合要求,文

45、档与程序完全一致,具有完成软件维护符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录。所必须的细节,而且已经编好目录。 在确认测试过程中应该严格遵循用户手册及其他操作在确认测试过程中应该严格遵循用户手册及其他操作程序的说明和要求,从而检验用户使用手册的完整性程序的说明和要求,从而检验用户使用手册的完整性和正确性。和正确性。 2/9/2022第7章 系统实现与维护 487.8 7.8 确认测试确认测试v Alpha Alpha 和和BetaBeta测试测试 AlphaAlpha测试由用户在开发者的场所进行,并且在开发者测试由用户在开发者的场所进行,并且在开发者对用户的对

46、用户的“指导指导”下进行测试。下进行测试。 开发者负责记录发现开发者负责记录发现的错误和使用中遇到的问题。总之,的错误和使用中遇到的问题。总之,AlphaAlpha测试是在受测试是在受控的环境中进行的。控的环境中进行的。 BetaBeta测试由软件的最终用户们在一个或多个客户场所测试由软件的最终用户们在一个或多个客户场所进行。与进行。与AlphaAlpha测试不同,开发者通常不在测试的现场,测试不同,开发者通常不在测试的现场,因此,因此,BetaBeta测试是软件在开发者不能控制的环境中的测试是软件在开发者不能控制的环境中的“真实真实”应用。应用。2/9/2022第7章 系统实现与维护 497

47、.9 7.9 测试技术测试技术v 白盒测试:把测试对象看做一个透明盒子,它允许测试人白盒测试:把测试对象看做一个透明盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试。通过在不同点检用例,对程序的所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。查程序的状态,确定实际的状态是否与预期的状态一致。白盒测试又称为结构测试或逻辑驱动测试。白盒测试又称为结构测试或逻辑驱动测试。v 黑盒测试:把测试对象看做一个黑盒子,测试人员完全不黑盒测试:把测试对象看做一个黑盒子,

48、测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或数据驱动测试。盒测试又叫做功能测试或数据驱动测试。2/9/2022第7章 系统实现与维护 507.9.1 7.9.1 白盒测试技术白盒测试技术v 软件人员使用白盒测试方法,主要想对程序模块进行如下软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:的检查: 对程序模块的所有独立的执行路径至少测试一次;对程序模块的所有独立的执行路径至少测试一次; 对所有的逻

49、辑判定,取对所有的逻辑判定,取“真真”与取与取“假假”的两种情况的两种情况都至少测试一次;都至少测试一次; 在循环的边界和运行界限内执行循环体;在循环的边界和运行界限内执行循环体; 测试内部数据结构的有效性等;测试内部数据结构的有效性等;v “错误潜伏在角落里,聚集在边界上错误潜伏在角落里,聚集在边界上”2/9/2022第7章 系统实现与维护 517.9.1 7.9.1 白盒测试技术白盒测试技术v 逻辑覆盖:逻辑覆盖是以程序内部的逻辑结构为基础的设逻辑覆盖:逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。计测试用例的技术。 语句覆盖;语句覆盖; 判定覆盖;判定覆盖; 条件覆盖;条件覆

50、盖; 判定判定/ /条件覆盖;条件覆盖; 条件组合覆盖;条件组合覆盖; 点覆盖;点覆盖; 边覆盖;边覆盖; 路径覆盖;路径覆盖;2/9/2022第7章 系统实现与维护 527.9.1 7.9.1 白盒测试技术白盒测试技术v 语句覆盖:语句覆盖就是设计若干个测试用例,运行被测语句覆盖:语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。程序,使得每一可执行语句至少执行一次。v 判断覆盖:判定覆盖就是设计若干个测试用例,运行被测判断覆盖:判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判定的取真分支和取假分支至少经程序,使得程序中每个判定的取真分支和取假分支至

51、少经历一次。历一次。 判定覆盖又称为分支覆盖。判定覆盖又称为分支覆盖。v 条件覆盖:条件覆盖就是设计若干个测试用例,运行被测条件覆盖:条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判定中的每个条件的可能取值至少程序,使得程序中每个判定中的每个条件的可能取值至少执行一次。执行一次。2/9/2022第7章 系统实现与维护 537.9.1 7.9.1 白盒测试技术白盒测试技术v 判定判定/ /条件覆盖:选取足够多的测试数据,使得判定表达条件覆盖:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取

52、到各种可能的结果。式也都取到各种可能的结果。v 条件组合覆盖:条件组合覆盖就是设计足够的测试用例,条件组合覆盖:条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判定中条件的所有可能组合至少运行被测程序,使得每个判定中条件的所有可能组合至少出现一次。出现一次。v 满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定条件覆盖标准。因此,条件组合覆盖是条件覆盖和判定条件覆盖标准。因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件组合覆盖标前述几种覆盖标准中最强的。但是,满足条件组合覆盖标准的测试数据并不一定能使程序

53、中的每条路径都执行到。准的测试数据并不一定能使程序中的每条路径都执行到。2/9/2022第7章 系统实现与维护 547.9.1 7.9.1 白盒测试技术白盒测试技术v 点覆盖:要求选取足够多的测试数据,使得程序执行路径点覆盖:要求选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次,由于流图的每个结点与一至少经过流图的每个结点一次,由于流图的每个结点与一条或多条语句相对应,显然,点覆盖标准和语句覆盖标准条或多条语句相对应,显然,点覆盖标准和语句覆盖标准是相同的。是相同的。v 边覆盖:要求选取足够多测试数据,使得程序执行路径至边覆盖:要求选取足够多测试数据,使得程序执行路径至少经过流

54、图中每条边一次。通常边覆盖和判定覆盖是一致少经过流图中每条边一次。通常边覆盖和判定覆盖是一致的。的。v 路径覆盖:路径覆盖就是设计足够的测试用例,程序的每路径覆盖:路径覆盖就是设计足够的测试用例,程序的每条可能路径都至少执行一次条可能路径都至少执行一次( (如果程序图中有环,则要求如果程序图中有环,则要求每个环至少经过一次每个环至少经过一次) )。2/9/2022第7章 系统实现与维护 557.9.2 7.9.2 黑盒测试技术黑盒测试技术v 黑盒测试力图发现下述类型的错误:黑盒测试力图发现下述类型的错误: 功能不正确或遗漏了功能;功能不正确或遗漏了功能; 界面错误;界面错误; 数据结构错误或外

55、部数据库访问错误;数据结构错误或外部数据库访问错误; 性能错误;性能错误; 初始化和终止错误。初始化和终止错误。v 黑盒测试法与白盒测试法不能互相代替,两者应互为补充。黑盒测试法与白盒测试法不能互相代替,两者应互为补充。 2/9/2022第7章 系统实现与维护 567.9.2 7.9.2 黑盒测试技术黑盒测试技术v黑盒测试的主要方法有:黑盒测试的主要方法有:等价划分;等价划分;边界值分析;边界值分析;错误推测;错误推测;因果图。因果图。2/9/2022第7章 系统实现与维护 577.9.2 7.9.2 黑盒测试技术黑盒测试技术v等价值划分等价值划分等价划分方法把所有可能的输入数据,即程序的输等

56、价划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。有代表性的数据做为测试用例。等价类的划分有两种不同的情况:等价类的划分有两种不同的情况:有效等价类:是指对于程序的规格说明来说,是有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。合理的,有意义的输入数据构成的集合。无效等价类:是指对于程序的规格说明来说,是无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。不合理的,无意义的输入数据构成的集合。2/9/2022第7章 系统实现与维护

57、 587.9.2 7.9.2 黑盒测试技术黑盒测试技术v划分等价类的原则:划分等价类的原则:如果输入条件规定了取值范围或值的个数,则可以确如果输入条件规定了取值范围或值的个数,则可以确立一个有效等价类和两个无效等价类。立一个有效等价类和两个无效等价类。如果输入条件规定了输入值的集合,或者是规定了如果输入条件规定了输入值的集合,或者是规定了“必须如何必须如何”的条件,这时可确立一个有效等价类和的条件,这时可确立一个有效等价类和一个无效等价类。一个无效等价类。 如果规定了输入数据的一组值,而且程序要对每个输如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个

58、入值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。它是所有不允许的输入值的集合。2/9/2022第7章 系统实现与维护 597.9.2 7.9.2 黑盒测试技术黑盒测试技术v划分等价类的原则:划分等价类的原则:如果规定了输入数据必须遵守的规则,则可以确立一如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。不同角度违反规则)。 如果规定了输入数据为整型,则可以划分出正整数、

59、如果规定了输入数据为整型,则可以划分出正整数、零和负整数等零和负整数等3 3个有效类。个有效类。如果程序的处理对象是表格,则应该使用空表,以及如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。含一项或多项的表。2/9/2022第7章 系统实现与维护 607.9.2 7.9.2 黑盒测试技术黑盒测试技术v 确定测试用例确定测试用例 设计一个新的测试用例,使其尽可能多地覆盖尚未被设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;价类都被覆盖为止; 设计一个新的测试用例,使其仅覆盖

60、一个尚未被覆盖设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。都被覆盖为止。 2/9/2022第7章 系统实现与维护 617.9.2 7.9.2 黑盒测试技术黑盒测试技术v 等价划分实例:等价划分实例: 假设有一个把数字串转变成整数的函数。被处理的假设有一个把数字串转变成整数的函数。被处理的数字串是右对齐的,也就是说,如果数字串比数字串是右对齐的,也就是说,如果数字串比6 6个字个字符短,则在它的左边补空格。如果数字串是负的,符短,则在它的左边补空格。如果数字串是负的,则负号和最高位数字紧相

61、邻则负号和最高位数字紧相邻( (负号在最高位数字左边负号在最高位数字左边一位一位) ) 。且只能转化。且只能转化-3276832767-3276832767之间的整数。之间的整数。2/9/2022第7章 系统实现与维护 627.9.2 7.9.2 黑盒测试技术黑盒测试技术v 分析这个程序的规格说明,划分出有效输入的等价类有:分析这个程序的规格说明,划分出有效输入的等价类有: l6l6个数字字符组成的数字串个数字字符组成的数字串( (最高位数字不是零最高位数字不是零) ); 最高位数字是零的数字串;最高位数字是零的数字串; 最高位数字左邻是负号的数字串;最高位数字左邻是负号的数字串;2/9/20

62、22第7章 系统实现与维护 637.9.2 7.9.2 黑盒测试技术黑盒测试技术v 无效输入的等价类有:无效输入的等价类有: 空字符串空字符串( (全是空格全是空格) ); 左部填充的字符既不是零也不是空格;左部填充的字符既不是零也不是空格; 最高位数字右面由数字和空格混合组成;最高位数字右面由数字和空格混合组成; 最高位数字右面由数字和其他字符混合组成;最高位数字右面由数字和其他字符混合组成; 负号与最高位数字之间有空格;负号与最高位数字之间有空格;2/9/2022第7章 系统实现与维护 647.9.2 7.9.2 黑盒测试技术黑盒测试技术v 合法输出的等价类有:合法输出的等价类有: 在计算

63、机能表示的最小负整数和零之间的负整数;在计算机能表示的最小负整数和零之间的负整数; 零;零; 在零和计算机能表示的最大正整数之间的正整数;在零和计算机能表示的最大正整数之间的正整数;v 非法输出的等价类有:非法输出的等价类有: 比计算机能表示的最小负整数还小的负整数;比计算机能表示的最小负整数还小的负整数; 比计算机能表示的最大正整数还大的正整数。比计算机能表示的最大正整数还大的正整数。2/9/2022第7章 系统实现与维护 657.9.2 7.9.2 黑盒测试技术黑盒测试技术v 根据上面划分出的等价类,可以设计出下述测试方案:根据上面划分出的等价类,可以设计出下述测试方案: 1 16 6个数

64、字组成的数字串,输出是合法的正整数。个数字组成的数字串,输出是合法的正整数。 输入:输入:11 预期的输出:预期的输出:1 1。 最高位数字是零的数字串,输出是合法的正整数。最高位数字是零的数字串,输出是合法的正整数。 输入:输入:00000l00000l 预期的输出:预期的输出:1 1 2/9/2022第7章 系统实现与维护 667.9.2 7.9.2 黑盒测试技术黑盒测试技术 最高位是负号的数字串,输出是合法的负整数。最高位是负号的数字串,输出是合法的负整数。 输入:输入:-1-1 预期的输出:预期的输出:-1-1。 全部是零,输出也是零。全部是零,输出也是零。 输入:输入:0000000

65、00000 预期的输出:预期的输出: 预期的输出:预期的输出:0 0 太小的负整数。太小的负整数。 输入:输入:-67561-67561 预期的输出:预期的输出:“错误错误 无效输入无效输入” 太大的正整数。太大的正整数。 输入:输入:132767132767 预期的输出:预期的输出:“错误错误 无效输入无效输入”2/9/2022第7章 系统实现与维护 677.9.2 7.9.2 黑盒测试技术黑盒测试技术 空字符串。空字符串。 输入:输入: 预期的输出:预期的输出:“ “ 错误错误 没有数字没有数字” 字符串左部字符既不是零也不是空格字符串左部字符既不是零也不是空格 输入:输入:XXXXXlX

66、XXXXl 预期的输出:预期的输出:“错误错误填充错填充错” 最高位数字后面有空格。最高位数字后面有空格。 输入:输入:1 2 1 2 预期的输出:预期的输出:“错误错误 无效输入无效输入”2/9/2022第7章 系统实现与维护 687.9.2 7.9.2 黑盒测试技术黑盒测试技术 最高位数字后面有其他字符。最高位数字后面有其他字符。 输入:输入:1XX21XX2 预期的输出:预期的输出:“错误错误无效输入无效输入” ” 负号和最高位数字之间有空格。负号和最高位数字之间有空格。 输入:输入: - 12- 12 预期的输出:预期的输出:“错误错误负号位置错负号位置错”2/9/2022第7章 系统实现与维护 697.9.2 7.9.2 黑盒测试技术黑盒测试技术v 边界值分析边界值分析 人们从长期的测试工作经验得知,大量的错误是发生人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出部。因此针对各种边界情况设计测试用例,可以查出更多的错误。更多的错误。2/9/2

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!