第6章系统实施

收藏

编号:207702385    类型:共享资源    大小:862.50KB    格式:PPT    上传时间:2023-05-07
10
积分
关 键 词:
系统 实施
资源描述:
第第6章章 系统实施系统实施 6.1 6.1 系统实施概述系统实施概述将系统设计的结果在计算机及网络上实现。将系统设计的结果在计算机及网络上实现。将原来纸面上的、类将原来纸面上的、类似于设计图式的新系统物理模型转换成可运行的、实实在在的应用系似于设计图式的新系统物理模型转换成可运行的、实实在在的应用系统(新系统)。统(新系统)。6.1.1 6.1.1 系统实施的任务系统实施的任务 主要任务物理模型实际可运行的系统 系统实施系统实施1.1.设备的购置与安装设备的购置与安装2.2.软件的购置、安装、编写与测试软件的购置、安装、编写与测试3.3.数据的准备和录入数据的准备和录入 4.4.人员培训人员培训 5.5.系统的测试、调试、转换系统的测试、调试、转换5/6/202316.1.2 6.1.2 系统实施的计划系统实施的计划由由于系统实施阶段所用的于系统实施阶段所用的时间最长时间最长,耗费的资金,耗费的资金又多,因此在系统实施过程中,首先要有一个又多,因此在系统实施过程中,首先要有一个实施的实施的计划计划,便于各项工作有条不紊地协调进行。,便于各项工作有条不紊地协调进行。系统实施计划的制定主要考虑以下几点:系统实施计划的制定主要考虑以下几点:(1 1)工作量估计)工作量估计 (2 2)实施进度安排)实施进度安排 (3 3)系统人员的配备和培训计划)系统人员的配备和培训计划 (4 4)系统实施的资金筹措和投入计划)系统实施的资金筹措和投入计划5/6/20232新新系统实施要有领导参加,要编制好新系统的实系统实施要有领导参加,要编制好新系统的实施计划,布置和协调各方面的关系,检查工作的进度施计划,布置和协调各方面的关系,检查工作的进度和质量,做必要的调整和修改,处理和解决实施过程和质量,做必要的调整和修改,处理和解决实施过程中发生和发现的各种重大问题。中发生和发现的各种重大问题。在在系统实施阶段应该发挥系统分析员和系统设计系统实施阶段应该发挥系统分析员和系统设计员的作用,系统分析员和设计员要成为系统实施的具员的作用,系统分析员和设计员要成为系统实施的具体组织者和管理者,要负责协调各种关系,督促检查体组织者和管理者,要负责协调各种关系,督促检查工作,保证新系统正常交付使用。工作,保证新系统正常交付使用。5/6/20233 6.2 6.2 程序设计程序设计程序设计:是指编写程序的过程。程序设计:是指编写程序的过程。程序设计的目的是用计算机程序设计的目的是用计算机编程语言实现系统设计的每一个细节。这是系统实施阶段的编程语言实现系统设计的每一个细节。这是系统实施阶段的主要工主要工作作、核心工作。、核心工作。随着计算机技术的发展,程序设计的评价指标、设计思想、方随着计算机技术的发展,程序设计的评价指标、设计思想、方法技巧等都发生了一些根本性的变化。法技巧等都发生了一些根本性的变化。6.2.1 6.2.1 程序设计语言的选择程序设计语言的选择可选择的语言有:可选择的语言有:1 1、机器语言、机器语言2 2、汇编语言、汇编语言3 3、高级语言、高级语言4 4、面向对象的程序设计语言、面向对象的程序设计语言5 5、数据库管理系统、数据库管理系统6 6、网页设计、网页设计在选择语言时要考虑的因素有:在选择语言时要考虑的因素有:1 1、应用领域、应用领域2 2、算法和计算的复杂性、算法和计算的复杂性3 3、软件的运行环境、软件的运行环境4 4、系统各种性能的考虑、系统各种性能的考虑5 5、数据结构的复杂性、数据结构的复杂性6 6、程序设计人员的知识水平、程序设计人员的知识水平5/6/20234程序设计风格程序设计风格程序不仅是放在计算机内,由计算机自动执行的,而程序不仅是放在计算机内,由计算机自动执行的,而且也是一种供人阅读的文章,因此,它存在着一个书写风且也是一种供人阅读的文章,因此,它存在着一个书写风格的问题。格的问题。程序员在编写程序时,应当意识到今后会有人(包括程序员在编写程序时,应当意识到今后会有人(包括他自己)反复地阅读这个程序,并沿着编写者的思路去理他自己)反复地阅读这个程序,并沿着编写者的思路去理解程序的功能。所以,应当在编写程序时注意程序设计的解程序的功能。所以,应当在编写程序时注意程序设计的书写风格,这样就能大大减少人们读程序的时间,从整体书写风格,这样就能大大减少人们读程序的时间,从整体上来看,提高了系统的开发和维护效率。上来看,提高了系统的开发和维护效率。一般来说,程序设计风格包括五个方面:源程序文档一般来说,程序设计风格包括五个方面:源程序文档化;简单、直接地反映化;简单、直接地反映程序员的用意;缩排程序员的用意;缩排式书写程序语式书写程序语句;标识符命名规范化;合理使用句;标识符命名规范化;合理使用GOTO跳转语句等。跳转语句等。5/6/202351、源程序文档化。、源程序文档化。指程序内部可以带有说明性的材料,即指程序内部可以带有说明性的材料,即可以添加程序注释。注释是可以添加程序注释。注释是提高程序可读性的有力手段。提高程序可读性的有力手段。在使用注释时要注意以下几点:(1)注释必须与程序保持一致,特别是修改程序时要注意对注释也要进行相应的修改。(2)注释是针对一段程序,而不是对每一条语句。(3)注释不是重复说明程序语句,而应该提供程序本身难以说明的信息。(4)利用缩进和空行等组织形式使程序与注释区分开。5/6/20236:一般出现在程序模块的开头。例:求解:一般出现在程序模块的开头。例:求解一元二次方程。一元二次方程。:一般出现在程序内部的某条语句之后,:一般出现在程序内部的某条语句之后,或之前,或之下。或之前,或之下。注释分为注释分为序言性注释序言性注释功能性注释功能性注释例:例:total=total+amount再例:再例:total=total+amount 将月生产额累计到年度总额中将月生产额累计到年度总额中 这不是一条好的注释这不是一条好的注释这是一条易于理解的注释这是一条易于理解的注释 amount 加到加到 total 中中 5/6/202372、简单、直接地反映意图。、简单、直接地反映意图。指简单指简单、直截了当地说明程序、直截了当地说明程序员的用意,使读者能一目了然、准确地知道,不需要过多员的用意,使读者能一目了然、准确地知道,不需要过多的分析和想象。的分析和想象。For i=1 to nFor i=1 to nFor j=1 to nFor j=1 to n v(i,j)=(i/j)*(j/i)v(i,j)=(i/j)*(j/i)Next jNext jNext iNext i程序段程序段1 1例:编程生成一个例:编程生成一个“单位矩阵单位矩阵”。For i=1 to nFor i=1 to nFor j=1 to nFor j=1 to n If (i.If (i.eqeq.j)Then .j)Then v(i,j)=1 v(i,j)=1 Else Else v(i,j)=0 v(i,j)=0 EndifEndif Next jNext jNext iNext i 程序段程序段2 25/6/202383、缩排式书写源程序。、缩排式书写源程序。一行只写一条语句,并采取适当的一行只写一条语句,并采取适当的移行,使程序的逻辑结构移行,使程序的逻辑结构和功能变得清楚、明确。和功能变得清楚、明确。For i=1 to n-1For i=1 to n-1 t=i t=i For j=i+1 to n For j=i+1 to n If If a(t)a(j)a(t)a(j)Then Then t=j t=j EndifEndif If tIf ti i Then Then tem=a(t)tem=a(t)a(t)=a(j)a(t)=a(j)a(j)=tem a(j)=tem EndifEndif Next j Next j Next iNext i例:对例:对n个数按个数按“从小到大从小到大”的顺序排序,其程序如下:的顺序排序,其程序如下:5/6/20239在程序编写中应恰当地利用空格、空行来改进程序的在程序编写中应恰当地利用空格、空行来改进程序的视觉效果。视觉效果。自然的程序段之间用空行隔开;利用空格,突出运算自然的程序段之间用空行隔开;利用空格,突出运算符的优先级别,避免运算错误的发生。符的优先级别,避免运算错误的发生。(X=49)OR Z (X=49)OR Z这不是一个好的书写风格这不是一个好的书写风格这是一个较好的书写风格这是一个较好的书写风格5/6/2023104、标识符命名规范化。、标识符命名规范化。标识符标识符即名称,它起着标识的作用,即名称,它起着标识的作用,一般由字母,数字,或字母数据串组成。一般由字母,数字,或字母数据串组成。标识符的命名应能反映它所代表的对象的实际内容,标识符的命名应能反映它所代表的对象的实际内容,即即“见名知意见名知意”,但需注意不要与语言的保留字相同了。,但需注意不要与语言的保留字相同了。早期,组成标识符的字符个数较少,是短名字,往早期,组成标识符的字符个数较少,是短名字,往往满足不了需要;现在,可以起长名字,但并不是名字往满足不了需要;现在,可以起长名字,但并不是名字越长越好。越长越好。在一个系统中,模块的标识符应统一范围标准,应在一个系统中,模块的标识符应统一范围标准,应能反映模块的上下从属关系。能反映模块的上下从属关系。5/6/2023115、合理使用、合理使用 goto 语句。语句。goto语句,又称跳转语句,强迫转语句,又称跳转语句,强迫转移语句。许多非结构化程序设计移语句。许多非结构化程序设计语言都带有这种跳转语语言都带有这种跳转语句。跳转语句使用得好,编程方便,但使用得不好,则句。跳转语句使用得好,编程方便,但使用得不好,则会带来许多麻烦,不便阅读理解,不便修改维护。编程会带来许多麻烦,不便阅读理解,不便修改维护。编程时应尽可能避免,或少用时应尽可能避免,或少用goto语句。语句。goto越多越不好。越多越不好。IF (AIF (ALTLTB)GOTO 30B)GOTO 30 IF (B IF (BLTLTC)GOTO 50C)GOTO 50 SMALL=C SMALL=C GOT0 70 GOT0 7030 IF (A30 IF (ALTLTC)GOTO 60C)GOTO 60 SMALL=C SMALL=C GOT0 70 GOT0 7050 SMALL=B50 SMALL=B GOT0 70 GOT0 7060 SMALL=A60 SMALL=A7070CONTINUECONTINUE7171 程序段程序段1 1例:在三个数当中,寻求最小的数,其程序段如下:例:在三个数当中,寻求最小的数,其程序段如下:SMALL=ASMALL=A IF (B IF (BLTLTSMALL)SMALL=BSMALL)SMALL=B IF (C IF (CLTLTSMALL)SMALL=CSMALL)SMALL=C程序段程序段2 2若是在若是在1010个、个、100100个数中,个数中,寻求最小的数呢?寻求最小的数呢?只能用循环语句来实现,只能用循环语句来实现,而不能用这种选择语句,否而不能用这种选择语句,否则程序是冗长的。则程序是冗长的。5/6/2023126.2.2 6.2.2 程序设计的基本要求程序设计的基本要求评价编程工作的标准:评价编程工作的标准:在过去的程序设计中,人们强调程序的正确性和效在过去的程序设计中,人们强调程序的正确性和效率。而现在,人们更强调的是程序的率。而现在,人们更强调的是程序的可维护性、可靠性、可维护性、可靠性、可读性可读性 (可理解性可理解性),然后才是,然后才是效率效率。(1)程序内部文档化要求(2)数据说明格式要求(3)语句构造要求(4)输入/输出要求(5)程序运行要求5/6/202313(1)(1)可维护性:可维护性:是指程序是易修改、易维护的,其目的是增强程序的适是指程序是易修改、易维护的,其目的是增强程序的适应性和延长程序的使用寿命。应性和延长程序的使用寿命。(2)(2)可靠性:可靠性:是指程序应具有较好的容错能力。是指程序应具有较好的容错能力。(3)(3)可读性:可读性:是指程序清晰,没有太多繁杂的技巧,能让别人容易读懂。是指程序清晰,没有太多繁杂的技巧,能让别人容易读懂。例:将两个变量例:将两个变量 a a 和和 b b 的内容对调,可能是下面两个程序段:的内容对调,可能是下面两个程序段:a=a+ba=a+bb=a-bb=a-ba=a-ba=a-b程序段程序段1 1t=at=aa=ba=bb=tb=t程序段程序段2 2(4)(4)效率:效率:是指程序能否有效地利用计算机资源是指程序能否有效地利用计算机资源(在时间和空间上在时间和空间上)。现。现在,人们往往宁可牺牲一定的程序运行的时间和空间,也要尽量提高在,人们往往宁可牺牲一定的程序运行的时间和空间,也要尽量提高程序的可维护性和可读性,程序的可维护性和可读性,提高编程人员的工作效率提高编程人员的工作效率。5/6/202314为了达到为了达到可维护性、可靠性、可读性可维护性、可靠性、可读性和和效率效率的目标,的目标,现在的人们非常注重程序设计的方法。现在的人们非常注重程序设计的方法。6.2.36.2.3程序设计程序设计的基本方法的基本方法采用结构化程序设计方法,以实现程序的结构化。采用结构化程序设计方法,以实现程序的结构化。结构化程序设计的主要原则是自顶向下、逐步求精的模块结构化程序设计的主要原则是自顶向下、逐步求精的模块化设计原则:化设计原则:(1)任何程序的结构都可由任何程序的结构都可由顺序、选择、循环顺序、选择、循环这三种基本结构来这三种基本结构来实现。实现。(2)每个基本结构每个基本结构只有一个入口和一个出口只有一个入口和一个出口。(3)复杂结构可以通过上述三种基本结构的组合嵌套来实现。复杂结构可以通过上述三种基本结构的组合嵌套来实现。(4)严格控制严格控制GOTO语句语句(跳转语句跳转语句)的使用。的使用。5/6/202315S1S2SS1S2S1S2Sn条件条件条件条件条件条件ynyn条件条件1条件条件2条件条件n顺序结构顺序结构单分支单分支双分支双分支多分支多分支选择结构选择结构(它们之间可以互相转换,互相代替)5/6/202316S超过终值超过终值循环变量循环变量赋初值赋初值增加一个增加一个步长步长S条件条件ynS条件条件yn计数型计数型当型当型直到型直到型循环结构循环结构(它们之间可以互相转换,互相代替)ny5/6/202317 自顶向下、逐步求精的模块化设计自顶向下的方法在系统分析和系统设计阶段都曾经使用过。在编程阶段也应当采取自顶向下、逐步细化的方法,把组成系统的各功能模块逐步分解、细化为一系列具体的编程步骤,进而采用某种编程语言以程序的方式来实现。自顶向下、逐步求精的模块化设计具有以下优点:(1)“自顶向下、逐步求精”的方法符合人们解决复杂问题的普遍规律,可提高信息系统开发的成功率。(2)“逐步求精”是先全局后局部、先整体后细节、先抽象后具体的过程,利用这个过程开发出来的程序具有清晰的层次结构,容易阅读和理解。5/6/202318(3)程序自顶向下、逐步细化,可以分解成一个树形结构,同一层的节点之间没有关系,因此,它们之间的细化工作是相互独立的。当某一步发生错误,一般只影响到它的下层节点,而其他节点不会受到影响。在以后的测试中,也可以先独立地一个节点一个节点地完成,最后再集成。(4)程序清晰和模块化,使得在修改和重新设计一个同类型软件时可再利用的代码量最大。(5)有利于程序设计的分工和组织工作,便于多人协作,共同完成大程序的设计工作。5/6/2023196.2.46.2.4程序设计的基本特点程序设计的基本特点结构化程序设计的基本特点结构化程序设计的基本特点结构化程序设计的优点结构化程序设计的优点结构化程序设计的不足结构化程序设计的不足5/6/202320入口入口出口出口M1M1M2M2判断条件判断条件1 1M6M6X X?循环条件循环条件2 2M5M5M3M3M4M4判断条件判断条件2 2M7M7循环条件循环条件3 3M8M8M9M9循环条件循环条件1 1M10M10T TX=1X=1X=2X=2X=3X=3Y YN NF FT TF FN NN NY YY Y程序流程图示例程序流程图示例5/6/202321程序设计语言示例程序设计语言示例M1repeat M2 if 判断条件判断条件1 do case case x=1 M3 case x=2 M4 case x=3 while 循环条件循环条件2 M5 enddo endcase else M6 if 判断条件判断条件2 repeat M7 until 循环条件循环条件3 else M8 M9 endif endifuntil 循环条件循环条件1M105/6/202322 6.3 6.3 信息系统的信息系统的测试测试不仅仅是软件的测试。不仅仅是软件的测试。系统中可能会隐藏着许多错误和缺陷,特别是在大系统中可能会隐藏着许多错误和缺陷,特别是在大规模、高复杂性项目的开发中更是如此。系统交付使用规模、高复杂性项目的开发中更是如此。系统交付使用之前一定要进行测试。之前一定要进行测试。6.3.1 6.3.1 信息系统测试概述信息系统测试概述1 1、测试的目的、测试的目的(1 1)测试测试就是为了发现程序中的错误而执行程序的过程,其目的就是为了发现程序中的错误而执行程序的过程,其目的是在于开发高质量的完全符合用户需要的信息系统。是在于开发高质量的完全符合用户需要的信息系统。(2 2)好的测试方案好的测试方案是指它很有可能发现至今尚未发现的错误。是指它很有可能发现至今尚未发现的错误。(3 3)成功的测试成功的测试是指它发现了至今尚未发现的错误。是指它发现了至今尚未发现的错误。5/6/2023232 2、测试的概念、测试的概念测试是为了发现错误而执行程序的过程。测试工作相测试是为了发现错误而执行程序的过程。测试工作相当重要,不能忽视。当重要,不能忽视。信息系统测试信息系统测试软件测试软件测试硬件测试硬件测试网络测试网络测试单元测试单元测试(模块测试模块测试)综合测试综合测试3 3、软件测试的原则、软件测试的原则4 4、软件测试的任务、软件测试的任务5 5、软件测试的基本手段、软件测试的基本手段人工测试人工测试计算机测试计算机测试程序审查会程序审查会人工运行人工运行静态静态检查检查黑盒测试黑盒测试白盒测试白盒测试5/6/2023246.3.2 6.3.2 软件测试的方法软件测试的方法动态测试方法动态测试方法(计算机测试)静态测试方法静态测试方法(人工测试)黑盒测试黑盒测试白盒测试白盒测试程序审查会程序审查会人工运行人工运行(走查走查)静态检查静态检查(桌前检查,自查,互查桌前检查,自查,互查)语句覆盖语句覆盖判断覆盖判断覆盖条件覆盖条件覆盖判断判断/条件覆盖条件覆盖多重条件覆盖多重条件覆盖路径覆盖路径覆盖等价类划分等价类划分边值分析边值分析(边界值测试边界值测试)因果图因果图错误推测法错误推测法特别注意的是:特别注意的是:测试不能表明系统中不存在错误,它只能说测试不能表明系统中不存在错误,它只能说明系统中存在着错误。明系统中存在着错误。又称为结构测试、逻辑覆盖测试、穷尽路径测试又称为功能测试、穷举输入输出测试5/6/202325(1)(1)尽早地和不断地进行测试。应尽早地发现、预防和纠正尽早地和不断地进行测试。应尽早地发现、预防和纠正错误,以降低损失。错误,以降低损失。(2)“(2)“测试用例测试用例”应由测试输入数据和与之对应的预期输出应由测试输入数据和与之对应的预期输出结果组成。预期输出结果作为检验测试结果的基准。结果组成。预期输出结果作为检验测试结果的基准。(3)(3)在在设计测试用例设计测试用例时,不仅应当包括时,不仅应当包括合理的输入数据合理的输入数据,而,而且也应当包括且也应当包括不合理的输入数据不合理的输入数据。合理的输入数据:合理的输入数据:能验证程序正确的输入数据,是常规的、合法的、能验证程序正确的输入数据,是常规的、合法的、正常的输入数据。正常的输入数据。不合理的输入数据:不合理的输入数据:异常的、临界的、不合法的、可能会引出问题异常的、临界的、不合法的、可能会引出问题 异变的输入数据。异变的输入数据。测试的测试的4 4项原则:项原则:用不合理的输入数据去测试系统往往比用合理的输入数据进行测用不合理的输入数据去测试系统往往比用合理的输入数据进行测试能发现更多的错误。试能发现更多的错误。5/6/202326(4)(4)测试报告应长期保留,为系统今后的维护提供方便。测试报告应长期保留,为系统今后的维护提供方便。一旦系统被修改,需要重新进行测试,这将在很大程一旦系统被修改,需要重新进行测试,这将在很大程度上重复以前的测试工作。保留测试用例和测试结果,度上重复以前的测试工作。保留测试用例和测试结果,可以验证发现的错误是否被修改,也易于发现因修改可以验证发现的错误是否被修改,也易于发现因修改而带来的新的错误。而带来的新的错误。5/6/202327测试用例的设计测试用例的设计测试能否发现所有的错误?或者说能不能把所有可能测试能否发现所有的错误?或者说能不能把所有可能做的测试无遗漏地一一做完,找出所有的错误做的测试无遗漏地一一做完,找出所有的错误?答案是否定的。答案是否定的。ABCY计算整型数A:xxxxxxxxxxxxxxxxB:xxxxxxxxxxxxxxxxC:xxxxxxxxxxxxxxxx216 x 216 x 216 2.815 x 1014520 9.537 x 101320次次穷举输入测试穷举输入测试穷举路径测试穷举路径测试这可以通过这可以通过P P256256 P P257257的两个例子,的两个例子,来说明答案是否定的。来说明答案是否定的。5/6/202328穷举测试不可行穷举测试不可行。因此,必须。因此,必须精心设计精心设计测试用例测试用例,从,从数量极大的可用测试用例中精心挑选出有限的测试数据。数量极大的可用测试用例中精心挑选出有限的测试数据。挑选的标准是采用一些最有可能发现隐藏错误的测试数据。挑选的标准是采用一些最有可能发现隐藏错误的测试数据。测试有一个致命的缺陷,即测试有一个致命的缺陷,即测试的不完全、不彻底性测试的不完全、不彻底性。任何程序只能进行少量的任何程序只能进行少量的(相对穷举的巨大数量而言相对穷举的巨大数量而言)有限有限的测试,在发现错误时能够说明程序中存在问题;但如果的测试,在发现错误时能够说明程序中存在问题;但如果这些测试用例没有发现错误,并不能说明程序中没有错误,这些测试用例没有发现错误,并不能说明程序中没有错误,因为这些测试用例只是巨大数量中的一小部分,还有许多因为这些测试用例只是巨大数量中的一小部分,还有许多其他的情形没有进行测试,错误可能就潜藏在其他的情形其他的情形没有进行测试,错误可能就潜藏在其他的情形中。中。5/6/202329测试用例测试用例的设计技术语句覆盖语句覆盖判断覆盖判断覆盖条件覆盖条件覆盖判断判断/条件覆盖条件覆盖多重条件覆盖多重条件覆盖路径覆盖路径覆盖边界值测试边界值测试黑盒测试的“测试用例”设计技术白盒测试的“测试用例”设计技术5/6/2023301 1、语句覆盖:、语句覆盖:设计设计足够的足够的测试用例,运行被测程序,使得测试用例,运行被测程序,使得每一个可执行语句至少被执行一次每一个可执行语句至少被执行一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假If (A1)and (B=0)If (A1)and (B=0)X=X/A X=X/AendifendifIf (A=2)or (X1)If (A=2)or (X1)x=x+1 x=x+1endifendif教材中的测试用例是教材中的测试用例是:一个好的测试用例是一个好的测试用例是:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】【(2,0,3),(2,0,2.5)(2,0,3),(2,0,2.5)】5/6/202331 语句覆盖技术发现错误的能力比较弱。比如,如语句覆盖技术发现错误的能力比较弱。比如,如果第一个判断中的果第一个判断中的“and”and”被错误地写成了被错误地写成了“or”or”等,等,同样的语句覆盖测试用例就不能发现这个错误。同样的语句覆盖测试用例就不能发现这个错误。1 1、语句覆盖:、语句覆盖:设计设计足够的足够的测试用例,运行被测程序,使得测试用例,运行被测程序,使得每一个可执行语句至少被执行一次每一个可执行语句至少被执行一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假该程序段有四条该程序段有四条不同的不同的路径路径,所有的,所有的可执行语句都在第一可执行语句都在第一条路径上。条路径上。以下四个输入、输出以下四个输入、输出数据能作为语句覆盖的数据能作为语句覆盖的测试用例吗?为什么?测试用例吗?为什么?【(4,0,-4),(4,0,-1)(4,0,-4),(4,0,-1)】【(1,0,4),(1,0,5)(1,0,4),(1,0,5)】【(1,2,-1),(1,2,-1)(1,2,-1),(1,2,-1)】【(4,0,20),(4,0,6)(4,0,20),(4,0,6)】一个好的测试用例是一个好的测试用例是:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】or5/6/2023322 2、判断覆盖:、判断覆盖:设计设计足够的足够的测试用例,运行被测程序,使得测试用例,运行被测程序,使得程序中程序中每个判断的取真分支和取假分支至少历经一次每个判断的取真分支和取假分支至少历经一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假一个好的测试用例是一个好的测试用例是:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】【(1,1,1),(1,1,1)(1,1,1),(1,1,1)】5/6/202333判断覆盖经历了程序的每一个分支,当然使程序的每一个可执行语句被执行。判断覆盖经历了程序的每一个分支,当然使程序的每一个可执行语句被执行。可见,判断覆盖比语句覆盖更严格。但仅有判断覆盖还是不够的,例如,若把第可见,判断覆盖比语句覆盖更严格。但仅有判断覆盖还是不够的,例如,若把第二个判断的条件二个判断的条件X1X1错写成错写成X1X1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假一个好的测试用例是一个好的测试用例是:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】【(1,1,1),(1,1,1)(1,1,1),(1,1,1)】也可以是另一个好的也可以是另一个好的测试用例是测试用例是:【(2,1,1),(2,1,2)(2,1,1),(2,1,2)】【(3,0,3),(3,0,1)(3,0,3),(3,0,1)】判断覆盖测试用例的判断覆盖测试用例的取法不是惟一的。取法不是惟一的。X 1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假一个好的测试用例是一个好的测试用例是:【(1,1,1),(1,1,1)(1,1,1),(1,1,1)】【(2,0,6),(2,0,4)(2,0,6),(2,0,4)】它们使:它们使:t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4 5/6/2023353 3、条件覆盖:、条件覆盖:设计设计足够的足够的测试用例,运行被测程序,使得测试用例,运行被测程序,使得程序中程序中每个判断的每个条件的可能取值至少出现一次每个判断的每个条件的可能取值至少出现一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假再看如下测试用例再看如下测试用例:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】【(1,0,1),(1,0,1)(1,0,1),(1,0,1)】【(2,1,1),(2,1,2)(2,1,1),(2,1,2)】它们使:它们使:t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 45/6/2023363 3、条件覆盖:、条件覆盖:设计设计足够的足够的测试用例,运行被测程序,使得测试用例,运行被测程序,使得程序中程序中每个判断的每个条件的可能取值至少出现一次每个判断的每个条件的可能取值至少出现一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假再看如下测试用例再看如下测试用例:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】【(1,0,1),(1,0,1)(1,0,1),(1,0,1)】【(2,1,1),(2,1,2)(2,1,1),(2,1,2)】它们使:它们使:t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4但是有一条路径没走到。即:但是有一条路径没走到。即:5/6/2023373 3、条件覆盖:、条件覆盖:设计设计足够的足够的测试用例,运行被测程序,使得测试用例,运行被测程序,使得程序中程序中每个判断的每个条件的可能取值至少出现一次每个判断的每个条件的可能取值至少出现一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假再看如下测试用例再看如下测试用例:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】【(1,0,1),(1,0,1)(1,0,1),(1,0,1)】【(2,1,1),(2,1,2)(2,1,1),(2,1,2)】它们使:它们使:t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4但是有一条路径没走到。即:但是有一条路径没走到。即:5/6/2023383 3、条件覆盖:、条件覆盖:设计设计足够的足够的测试用例,运行被测程序,使得测试用例,运行被测程序,使得程序中程序中每个判断的每个条件的可能取值至少出现一次每个判断的每个条件的可能取值至少出现一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假 一般来说,条件覆一般来说,条件覆盖比判断覆盖更严格,盖比判断覆盖更严格,因为条件覆盖考虑的因为条件覆盖考虑的是判断中的每个条件,是判断中的每个条件,而判断覆盖只考虑判而判断覆盖只考虑判断组合成的结果。断组合成的结果。但是条件覆盖只关心每个条件的取值,而对于但是条件覆盖只关心每个条件的取值,而对于这些条件组合成的这些条件组合成的判断结果的取值判断结果的取值情况没有考虑。因此,设计出的条件覆盖测试用例有情况没有考虑。因此,设计出的条件覆盖测试用例有可能只满足条件覆盖的要求而不满足判断覆盖的要求。可能只满足条件覆盖的要求而不满足判断覆盖的要求。5/6/2023394 4、判断、判断/条件覆盖:条件覆盖:设计设计足够的足够的测试用例,运行被测程序,测试用例,运行被测程序,使得程序中使得程序中每个判断的每个条件的可能取值和判断本身都每个判断的每个条件的可能取值和判断本身都至少出现一次至少出现一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假 判断判断/条件覆盖既满足判断覆盖,又满足条件覆盖。但有时判条件覆盖既满足判断覆盖,又满足条件覆盖。但有时判断断/条件覆盖并不比条件覆盖更强。条件覆盖并不比条件覆盖更强。再看如下测试用例再看如下测试用例:【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】【(1,1,1),(1,1,1)(1,1,1),(1,1,1)】它们使:它们使:t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 45/6/202340应该知道哪应该知道哪八八种不同的组合:种不同的组合:t t1 1 t t2 2 t t3 3 t t4 45 5、多重条件覆盖:设计、多重条件覆盖:设计足够的足够的测试用例,运行被测程序,使测试用例,运行被测程序,使得得每个判断的所有可能的条件取值组合至少出现一次每个判断的所有可能的条件取值组合至少出现一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假两个判断分别包含两个判断分别包含两个条件,可以形成两个条件,可以形成八八种不同的组合。可以对种不同的组合。可以对每种组合设计合适的测每种组合设计合适的测试用例进行测试。试用例进行测试。5/6/202341应该知道哪应该知道哪四四种不同的组合:种不同的组合:t t1 1 t t2 2 t t3 3 t t4 45 5、多重条件覆盖:设计、多重条件覆盖:设计足够的足够的测试用例,运行被测程序,使测试用例,运行被测程序,使得得每个判断的所有可能的条件取值组合至少出现一次每个判断的所有可能的条件取值组合至少出现一次。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假两个判断分别包含两个判断分别包含两个条件,可以形成两个条件,可以形成四四种不同的组合。可以对种不同的组合。可以对每种组合设计合适的测每种组合设计合适的测试用例进行测试。试用例进行测试。多重条件覆盖既满足多重条件覆盖既满足了条件覆盖,又满足了判了条件覆盖,又满足了判断覆盖,比单纯的判断覆断覆盖,比单纯的判断覆盖和单纯的条件覆盖都强。盖和单纯的条件覆盖都强。但有时,测试还不够完全。但有时,测试还不够完全。5/6/202342(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假 【(2,0,6),(2,0,4)(2,0,6),(2,0,4)】【(2,1,1),(2,1,2)(2,1,1),(2,1,2)】【(1,0,3),(1,0,4)(1,0,3),(1,0,4)】【(1,1,1),(1,1,1)(1,1,1),(1,1,1)】它们使:它们使:t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4 t t1 1 t t2 2 t t3 3 t t4 4即使这样,仍有路径未被覆盖,即:即使这样,仍有路径未被覆盖,即:5 5、多重条件覆盖:设计、多重条件覆盖:设计足够的足够的测试用例,运行被测程序,使测试用例,运行被测程序,使得得每个判断的所有可能的条件取值组合至少出现一次每个判断的所有可能的条件取值组合至少出现一次。例如,一个好的测例如,一个好的测试用例可能是:试用例可能是:5/6/2023436 6、路径覆盖:、路径覆盖:设计设计足够的足够的测试用例,测试用例,覆盖程序中所有可能的覆盖程序中所有可能的路径路径。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1真真真真假假假假路径覆盖的测试路径覆盖的测试功能很强。但在实际功能很强。但在实际使用中,一个不太复使用中,一个不太复杂的程序,其路径数杂的程序,其路径数 目可能相当庞大,完目可能相当庞大,完全覆盖又是不现实的。全覆盖又是不现实的。覆盖该例全部路覆盖该例全部路径的径的一个一个测试用例可测试用例可以是:以是:【(2(2,0 0,4)4),(2(2,0 0,3)3)】【(1(1,1 1,1)1),(1(1,1 1,1)1)】【(1(1,1 1,2)2),(1(1,1 1,3)3)】【(3(3,0 0,3)3),(3(3,0 0,1)1)】5/6/202344一种常用的黑盒测试方法是边界值测试。一种常用的黑盒测试方法是边界值测试。人们从长期的测试工作经验中得知,大量的错误往往人们从长期的测试工作经验中得知,大量的错误往往发生在输入或输出范围的边界上,因此,针对各种边界情发生在输入或输出范围的边界上,因此,针对各种边界情况设计测试用例,可以查出很多的错误。况设计测试用例,可以查出很多的错误。(7 7)边值分析)边值分析(边界值测试边界值测试):选择那些稍大于其边界值或稍选择那些稍大于其边界值或稍小于其边界值的特定情况来进行黑盒测试。小于其边界值的特定情况来进行黑盒测试。边界值方法看起来简单,但由于许多程序的边界情况边界值方法看起来简单,但由于许多程序的边界情况极其复杂,要找到适当的测试用例还必须对问题的输入域、极其复杂,要找到适当的测试用例还必须对问题的输入域、输出域的边界进行耐心细致的考虑。如果使用得当,这种输出域的边界进行耐心细致的考虑。如果使用得当,这种方法相当有效。方法相当有效。鉴定会测试组经常采用此种方法。鉴定会测试组经常采用此种方法。5/6/202345软件测试的策略:软件测试的策略:(1)(1)如果规范含有输入条件的组合,便从因果图开始如果规范含有输入条件的组合,便从因果图开始(2)(2)在任何情况下都应该使用边界值分析的方法在任何情况下都应该使用边界值分析的方法(3)(3)必要时用等价划分法补充测试方案必要时用等价划分法补充测试方案(4)(4)必要时再用错误推测法补充测试方案必要时再用错误推测法补充测试方案(5)(5)对照程序逻辑,检查已经设计出的测试方案对照程序逻辑,检查已经设计出的测试方案即:即:不同的测试方案设计的方法各有所长,用某种方法设计出的测不同的测试方案设计的方法各有所长,用某种方法设计出的测试方案可能最容易检测出某种类型的错误,但对于其他类型的错误试方案可能最容易检测出某种类型的错误,但对于其他类型的错误则可能无法检测出来。可以利用每种测试方法设计出有用的测试方则可能无法检测出来。可以利用每种测试方法设计出有用的测试方案,但没有一种方法能设计出全部测试方案。案,但没有一种方法能设计出全部测试方案。因此,在对系统进行测试时,应该联合使用各种设计测试方案因此,在对系统进行测试时,应该联合使用各种设计测试方案的方法,形成一种综合策略。的方法,形成一种综合策略。通常的做法是:用黑盒测试法设计基通常的做法是:用黑盒测试法设计基本的测试方案,再用白盒测试法补充一些必要的测试方案。本的测试方案,再用白盒测试法补充一些必要的测试方案。5/6/202346有机能、批量、有机能、批量、强度、便利性、安强度、便利性、安全性、性能、存储全性、性能、存储量、配置、兼容量、配置、兼容/变变换、可靠性、恢复、换、可靠性、恢复、可安装性、可用性、可安装性、可用性、文件资料和工序等文件资料和工序等1515种测试类型。种测试类型。6.3.5 6.3.5 软件测试的步骤软件测试的步骤单元测试单元测试(模块测试模块测试)子系统测试子系统测试(组装测试组装测试)功能测试功能测试(有效性测试有效性测试)系统测试系统测试安装测试安装测试验收测试验收测试(用户测试用户测试)6.3.6 6.3.6 软件正确性证明软件正确性证明非增量测试非增量测试增量测试增量测试自顶向下自顶向下自底向上自底向上5/6/202347 6.4 6.4 信息系统的调试信息系统的调试调试又叫排错,是在进行了成功的测试之后才开始调试又叫排错,是在进行了成功的测试之后才开始的工作。的工作。另外,程序有语法、语义错误时,也需要调试另外,程序有语法、语义错误时,也需要调试或排错。或排错。测试,测试,是为了尽可能多地是为了尽可能多地发现发现程序中存在的程序中存在的错误错误。调试,调试,一是确定错误的位置和性质,二是一是确定错误的位置和性质,二是改正错误改正错误。调试的关键在于找到错误的具体位置。调试的关键在于找到错误的具体位置。调试技术调试技术输出存储器内容输出存储器内容打印语句打印语句自动调试工具自动调试工具调试方法调试方法试探法试探法回溯法回溯法折半查找法折半查找法归纳法归纳法演绎法演绎法调试步骤调试步骤诊断错误诊断错误改正错误改正错误5/6/202348(1 1)试探法:)试探法:这是一种使用较多、但效率较低的排错方法。它通过分这是一种使用较多、但效率较低的排错方法。它通过分析错误的外在表现形式,猜想错误的大概位置,获得可疑区域的析错误的外在表现形式,猜想错误的大概位置,获得可疑区域的相关信息,并判断猜想是否正确。例如,把输出语句插在出错的相关信息,并判断猜想是否正确。例如,把输出语句插在出错的各个关键变量的改变部位、重要分支部位、子程序调用部位等等,各个关键变量的改变部位、重要分支部位、子程序调用部位等等,跟踪程序的执行,监视关键变量的变化。根据这些信息来确定错跟踪程序的执行,监视关键变量的变化。根据这些信息来确定错误的位置和类型。误的位置和类型。(2 2)回溯法:)回溯法:这是在小程序中常用的一种有效的排错方法。程序运行这是在小程序中常用的一种有效的排错方法。程序运行发现了问题后,先分析错误征兆,确立最先发现错误症状的位置。发现了问题后,先分析错误征兆,确立最先发现错误症状的位置。然后,人工沿程序的控制流程,向回追踪源程序,直到找到错误然后,人工沿程序的控制流程,向回追踪源程序,直到找到错误根源或确定错误产生的范围(这是逆向回溯,还有正向追踪)。根源或确定错误产生的范围(这是逆向回溯,还有正向追踪)。该方法对于大程序来说,由于回溯的路径数目可能很多,回溯会该方法对于大程序来说,由于回溯的路径数目可能很多,回溯会变得很困难。变得很困难。5/6/202349(3 3)折半查找法:)折半查找法:这种方法主要用来缩小错误的范围。如果已经知道这种方法主要用来缩小错误的范围。如果已经知道程序中的变量在若干位置的预期正确取值,可以在这些位置上用赋程序中的变量在若干位置的预期正确取值,可以在这些位置上用赋值语句或输入语句,给这些变量以正确值,运行程序观察输出结果,值语句或输入语句,给这些变量以正确值,运行程序观察输出结果,如果没有发现问题,说明从给定变量的正确值开始到输出结果之间如果没有发现问题,说明从给定变量的正确值开始到输出结果之间的程序没有出错,问题可能在除此之外的程序中,否则错误就在所的程序没有出错,问题可能在除此之外的程序中,否则错误就在所考察的这部分程序中。对含有错误的程序段再使用这种方法,直到考察的这部分程序中。对含有错误的程序段再使用这种方法,直到把故障范围缩小到比较容易诊断为止。把故障范围缩小到比较容易诊断为止。(4 4)归纳法:)归纳法:归纳法是一种从特殊情况推断一般情况的系统化思考方法。其基本思想是:从错误征兆的线索出发,通过分析这些线索之间的关系,确定错误的位置。用归纳法排错时首先要收集、整理测试有关数据,分析数据之间的规律,在此基础之上提出关于错误的假设;再将假设与原始线索或数据进行比较,如果能解释所出现的现象,则假设得到证明;否则假设不成立,需要重新分析,提出新的假设,直到最终发现错误的原因。5/6/202350(5 5)演绎法:)演绎法:演绎法是一种从一般原理或前提出发,经过排除和细化的过程推导出结论的思考方法。利用演绎法排错时首先根据已有的测试用例,设想出所有可能出错的原因,然后再根据原始测试数据或新的测试,从中逐个排除不可能的假设。对余下的原因,按可能性的大小,逐个作为假设解释测试结果,直到找出错误原因。5/6/202351 6.5 6.5 信息系统的转换信息系统的转换系统转换又称为系统切换系统转换又称为系统切换,是指旧系统向新系统的过渡。是指旧系统向新系统的过渡。转换工作包括旧系统的数据文件向新系统的数据文件转换工作包括旧系统的数据文件向新系统的数据文件转换,人员、设备、组织机构的改造和调整,有关资料的转换,人员、设备、组织机构的改造和调整,有关资料的建档和移交等。建档和移交等。系统转换的最终形式是将新系统的控制权移交用户。系统转换的最终形式是将新系统的控制权移交用户。系统转换方式系统转换方式直接转换方式直接转换方式并行转换方式并行转换方式分段转换方式分段转换方式系统转换前的准备系统转换前的准备数据的准备数据的准备文档的完善文档的完善人员培训人员培训(三类三类)5/6/202352(1 1)直接转换:)直接转换:在某一确定的时刻,停止旧系统,运行新系统。在某一确定的时刻,停止旧系统,运行新系统。旧系统旧系统新系统新系统转换时间点转换时间点(时间)时间)5/6/202353(1 1)直接转换:)直接转换:在某一确定的时刻,停止旧系统,运行新系统。在某一确定的时刻,停止旧系统,运行新系统。直接转换最简单,而且系统转换的费用也很低。但它的风险很直接转换最简单,而且系统转换的费用也很低。但它的风险很大,一旦新系统发生严重问题而运行不起来的话,就会给业务工作大,一旦新系统发生严重问题而运行不起来的话,就会给业务工作带来混乱,产生极大的不良影响。在实际应用时,应有一定的保证带来混乱,产生极大的不良影响。在实际应用时,应有一定的保证措施,以便新系统一旦出现问题,旧系统尚能顶替工作。措施,以便新系统一旦出现问题,旧系统尚能顶替工作。一般只有在旧系统已无法满足需要,或新系统规模较小、不太一般只有在旧系统已无法满足需要,或新系统规模较小、不太复杂,且信息的时效性要求不高的情况下采用这种方法,比如电话复杂,且信息的时效性要求不高的情况下采用这种方法,比如电话号码的升位。号码的升位。旧系统旧系统新系统新系统转换时间点转换时间点(时间)时间)5/6/202354(2 2)并行转换:又称为平行转换方式,新、旧系统并行工作一段时间,并行转换:又称为平行转换方式,新、旧系统并行工作一段时间,利用旧系统对新系统进行检验。一开始以旧系统为主(利用旧系统对新系统进行检验。一开始以旧系统为主(70%),以),以后逐渐以新系统为主(后逐渐以新系统为主(70%),直至整个替代旧系统。转换时间短),直至整个替代旧系统。转换时间短则则23个月,长则半年至一年。个月,长则半年至一年。并行时间并行时间旧系统旧系统新系统新系统(时间)时间)5/6/202355并行转换最安全、保险,而且也是最常用的方法,因为一旦新并行转换最安全、保险,而且也是最常用的方法,因为一旦新系统发生问题,老系统仍然在正常工作,从而保证了过渡过程平稳系统发生问题,老系统仍然在正常工作,从而保证了过渡过程平稳可靠。但并行转换的系统开销最大,费用高,业务工作量是正常情可靠。但并行转换的系统开销最大,费用高,业务工作量是正常情况下的两倍,往往需要两套人马进行工作,因此并行转换过程一般况下的两倍,往往需要两套人马进行工作,因此并行转换过程一般不要超过几个月。不要超过几个月。旧系统旧系统新系统新系统并行时间并行时间(时间)时间)(2 2)并行转换:又称为平行转换方式,新、旧系统并行工作一段时间,并行转换:又称为平行转换方式,新、旧系统并行工作一段时间,利用旧系统对新系统进行检验。一开始以旧系统为主(利用旧系统对新系统进行检验。一开始以旧系统为主(70%),以),以后逐渐以新系统为主(后逐渐以新系统为主(70%),直至整个替代旧系统。转换时间短),直至整个替代旧系统。转换时间短则则23个月,长则半年至一年。个月,长则半年至一年。5/6/202356(3 3)分段转换:又叫试点过渡法、逐步转换法、向导转换法,是第一、分段转换:又叫试点过渡法、逐步转换法、向导转换法,是第一、二两种方式的结合。选用新系统的某一部分替代旧系统作为试点,二两种方式的结合。选用新系统的某一部分替代旧系统作为试点,然后逐步地、一部分一部分地替代旧系统直至替代整个旧系统。然后逐步地、一部分一部分地替代旧系统直至替代整个旧系统。这种方式避免了第一、二两种方法的不足,使得转换过程可靠这种方式避免了第一、二两种方法的不足,使得转换过程可靠且费用不高,但它的不足之处是新旧系统接口较多。且费用不高,但它的不足之处是新旧系统接口较多。这种方式比较适用于大型信息系统的转换,可以保证平稳、可这种方式比较适用于大型信息系统
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:第6章系统实施
链接地址:https://www.zhuangpeitu.com/article/207702385.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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