版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《软件工程》软件测试5.1软件测试的目标和原则5.2软件测试的方法5.3软件测试的步骤和策略5.4停止测试5.5自动化测试工具学习内容:第五章软件测试第五章软件测试项目后期阶段包括软件测试、软件维护、软件项目后期管理等若干阶段。通常软件开发的2/3以上时间都处于项目后期阶段,其中软件测试工作量占整个项目开发工作量的40%左右。
软件测试是为了发现错误而执行程序的过程,软件测试是保证软件可靠性的主要手段。测试阶段的主要任务是发现并改正软件中的错误。白盒测试和黑盒测试是软件测试的两类基本方法。软件测试通常至少分为单元测试、集成测试和系统测试三个基本阶段。软件维护的目的是要保证软件的正常运行,尽可能延长软件生命周期。软件测试的目标:GlenMyers(梅尔斯)在他的软件测试著作中就软件测试的目的提出下列观点:
(1)测试是一个为了寻找错误而运行程序的过程。(2)一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。(3)一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。软件(程序)测试是为了发现错误而执行程序的过程。5.1软件测试的目标和原则换言之,测试的目的是想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。实施测试收集到的测试结果数据为可靠性分析提供了依据。
测试不能表明软件中不存在错误,它只能说明软件中存在错误。
基于不同的立场,存在着两种
完全不同的测试目的从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。软件测试的原则1.应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。2.测试用例应由测试输入数据和对应的预期输出结果这两部分组成。3.程序员应避免检查自己的程序。4.在设计测试用例时,应包括合理的输入条件和不合理的输入条件。5.充分注意测试中的群集现象。
经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。6.严格执行测试计划,排除测试的随意性。7.应当对每一个测试结果做全面检查。8.妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
软件测试的对象
软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。5.充分注意测试中的群集现象。
经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。6.严格执行测试计划,排除测试的随意性。7.应当对每一个测试结果做全面检查。8.妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
5.2软件测试的方法系统分析测试
系统分析测试是测试项目是否能体现整个系统的需求,对用户的需求从具体到抽象的一个过程的验证。注意:软件测试应贯穿于软件定义与开发的整个期间。
5.2.1静态测试和动态测试1.静态测试:指被测试程序不在机器上运行,而是采用人工测试和计算机辅助静态分析的手段对程序进行测试。包括:人工测试和计算机辅助静态分析测试.(发现30%~70%逻辑和编码错误)2.动态测试:指通过运行程序发现错误。大多测试采用动态测试。包括白盒测试法和黑盒测试法。测试信息流:软件配置:软件需求规格说明、软件设计规格说明、源代码等;测试配置:测试计划、测试用例、测试程序等;测试工具:测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试数据库等等。测试结果分析:比较实测结果与预期结果,评价错误是否发生。排错(调试):对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。修正后的文档再测试:直到通过测试为止。5.2.2系统测试用例的设计
1.测试方法(1)黑盒法
该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。通过黑盒测试主要发现下面错误:是否有不正确或遗漏了的功能;在接口上,能否正确地接受输入数据,能否产生正确的输出信息;访问外部信息是否有错;性能上是否满足要求等等。(2)白盒法
该方法把被测试对象看成一个白盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。白盒测试又称为结构测试或逻辑驱动测试。下图给出一个白盒测试实例:某软件研制测试报告图2.白盒技术测试用例的设计
测试用例设计的基本目的是确定一组最有可能发现某个错误或某类错误的测试数据。实际工作中,采用黑盒与白盒相结合的技术是较为合理的做法。
白盒测试属于结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础来设计测试用例。一、逻辑覆盖:是以程序内部逻辑为基础的测试技术,属白盒测试。这一测试考虑测试用例对程序内部逻辑覆盖的程度。目前常用的一些覆盖技术有以下八种。
1).语句覆盖
语句覆盖的含义是选择足够多的测试用例,使得被测程序中的每条语句至少执行一次。下面是测试的一段程序的流程图对应的C源程序(用C语言书写)。floatA,B,X;
if(A>1&&B==0)X=X/A;if(A==2||X>1)X=X+1;……
为了使每条语句都执行一次,程序应该按sacbed路径执行,为实现此路径而选取下面的一组输入数据(实际上X可以是任意实数):A=2,B=0,X=2图5.1语句覆盖
通过上例可以看出,这组数据只测试了条件为真的情况,若实际输入的条件为假时有错误显然测试不出来。事实上,语句覆盖对程序的逻辑覆盖很少,语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值的情况。
与后面所介绍的其他覆盖相比,语句覆盖是最弱的逻辑覆盖准则。
2).判定覆盖
判定覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。判定覆盖的每个语句至少经历一次。例如对于图5.1来说,能够分别覆盖路径sacbed和sabd的一组测试数据,或者覆盖路径sacbd和sabed的两组测试数据均可满足判定覆盖标准。例如,以两组测试数据就可做到判定覆盖:(1)A=4,B=0,X=1(覆盖sacbd);(2)A=2,B=1,X=3(覆盖sabed)。判定覆盖的缺点仍然是覆盖的不全,只覆盖了路径的一半,如将X>1误写成X<1,上组(1)数据仍覆盖sacbd,可见判定覆盖仍然很弱,但比语句覆盖强。
3).条件覆盖
条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。(条件覆盖使得每个语句至少执行一次。)例如对于图5.1来说,共有两个判定表达式,每个表达式中有两个条件。为满足条件覆盖,在a点有以下几种情况出现:A>1,A≤1,B=0,B≠0;在b点有以下几种情况出现:A=2,A≠2,X>1,X≤1。因而,只需要使用下面两组测试数据就可达到上述覆盖标准。(1)A=2,B=0,X=3(满足A>1,B=0,A=2和X>1的条件,执行路径sacbed);(2)A=0,B=1,X=0(满足A≤1,B≠0,A≠2和X≤1的条件执行路径sabd)。
条件覆盖一般比判定覆盖强,因为条件覆盖使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。上例两组测试数据也同时满足判定覆盖标准。但是,也可能有相反情况:虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。例如,若使用以下两组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准。(1)A=2,B=0,X=1(满足A>1,B=0,A=2和X≤1的条件,执行路径sacbed);(2)A=1,B=1,X=2(满足A≤1,B≠0,A≠2和X>1的条件,执行路径sabed)。上述例子的第二个判定表达式的值总为真,不满足判定覆盖的要求,为解决这一矛盾,需要对条件和分支兼顾。
4).判定/条件覆盖
判定/条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。即要求各个判断的所有可能的条件取值组合至少执行一次。
对于图5.1的例子而言,下述两组测试数据满足判定/条件覆盖标准。(1)A=2,B=0,X=4;(2)A=1,B=1,X=1。
判定/条件覆盖也有缺陷。从表面来看,它测试了所有条件的取值。但实际并不是这样。因为一些条件往往掩盖了另一些条件。对于条件表达式(A>1)AND(B=0)来说,只要(A>1)的测试为真,才需测试(B=0)的值来确定此表达式的值,但是若(A>1)的测试值为假时,不需再测(B=0)的值就可确定此表达式的值为假,因而B=0没有被检查。同理,对于(A=2)OR(X>1)这个表达式来说,只要(A=2)测试结果为真,不必测试(X>1)的结果就可确定表达式的值为真。所以对于判定/条件覆盖来说,逻辑表达式中的错误不一定能够查得出来。
5).条件组合覆盖
条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。对于图5.1的例子来说,共有以下八种可能的条件组合:(1)A>1,B=0属第一个判断的取真分支;(2)A>1,B≠0属第一个判断的取假分支;
A≤1,B=0属第一个判断的取假分支;
A≤1,B≠0属第一个判断的取假分支;
A=2,X>1属第二个判断的取真分支;
A=2,X≤1属第二个判断的取真分支;
A≠2,X>1属第二个判断的取真分支;
A≠2,X≤1属第二个判断的取假分支。对于每个判断,要求所有可能的条件的取值组合都必须取到。在图5.1中,每个判断各有两个条件,所以各有四个条件取值的组合。下面的四组测试数据可以使上面列出的八种组合每种至少出现一次:
(1)A=2,B=0,X=4(针对(1),(5)两种组合,执行路径sacbed);(2)A=2,B=1,X=1(针对(2),(6)两种组合,执行路径sabed);(3)A=1,B=0,X=2(针对(3),(7)两种组合,执行路径sabed);(4)A=1,B=1,X=1(针对(4),(8)两种组合,执行路径sabd)。
必须明确:在此例中条件组合覆盖并未要求第一个判定的四个组合与第二个判定的四个组合再进行组合,若那样,就需42=16个测试用例了。显然,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件覆盖标准的测试数据并不一定能使程序中的每条路径都执行到,如上述四组测试数据都没有测试到路径sacbd。
总结:在实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,以达到路径覆盖测试标准。
6).点覆盖
点覆盖是设计足够的测试数据,使程序执行时至少经过程序图中每个节点一次。图论中,点覆盖的概念定义如下:如果连通图G的子图G"是连通的,且包含G的所有节点,则称G"是G的点覆盖。在正常情况下,程序图是连通的有向图,图中每个节点相当于程序流程图中的一框(一个或多个语句),所以点覆盖相当于语句覆盖。
7).边覆盖
边覆盖是设计足够的测试数据,使得程序执行路径至少经过程序图中每一个边一次,相应的图论中的定义是:如果连通图G和子图G“是连通的,而且G”包含G的所有边,则称G“是G的边覆盖。(图5-3(b)程序图是退化了的程序流程图(图5-3(a)),它是放映控制流程的有向图)。为了使程序执行路径经过程序图的边覆盖(1,2,3,4,5,6,7),至少需要两组测试数据(分别执行路径1-2-3和1-4-5-6-7,或分别执行路径1-4-5-3和1-2-6-7)。
一般情况下,边覆盖和判定覆盖是一致的。例如,上述中满足判定覆盖标准的测试数据同时满足边覆盖的标准。(1)A=4,B=0,X=1(执行路径1-4-5-3,即覆盖sacbd);(2)A=2,B=1,X=3(执行路径1-2-6-7,即覆盖sacbd)。图5-2:程序图
8).路径覆盖
路径覆盖是选取足够多测试数据,使程序的每条可能路径都至少执行一次(若程序图中存在环,则要求每个环至少经过一次)。对于图5-3(b)而言,共有四条可执行的路径:1-11;1-2-3-4-5-10-1-11;1-2-3-6-8-9-10-1-11和1-2-3-6-7-9-10-1-11。对应于这四条路径,
路径覆盖相对来说是相当强的逻辑覆盖标准。测试数据暴露程序错误的能力比较强,有一定的代表性,它能够保证程序中每条可能的路径都至少执行一次。但是路径覆盖并没有检验表达式中条件的各种组合情况,而只考虑每个判定表达式的取值。若把路径覆盖和条件覆盖组合起来,可以设计出检错能力更强的测试数据。二、循环覆盖
在逻辑覆盖的测试技术中,以上只讨论了程序内部有判定存在的逻辑结构的测试用例设计技术。而循环也是程序的主要结构,要覆盖含有循环结构的所有路径是不可能的,但可通过限制次数来测试,下面给出设计原则供参考:(1)单循环:其中n为可允许执行循环的最大次数。设计以下情况的测试用例:①跳过循环。②只执行循环一次。③执行循环m次,其中m<n.④执行循环n-1次,n次,n+1次。(2)嵌套循环①置外循环处于最小循环计数值,对于内层进行单循环测试。②由里向外,进行下一层的循环测试。三、基本路径测试基本路径测试是在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本路径集合。基本路径测试的步骤为:(1)以详细设计或源程序为基础,导出控制流程图的拓扑结构-----程序图。
程序图是退化了的程序流程图,它是反映控制流程的有向图。其中小圆圈成为结点,代表了流程图中每个处理符号(矩形、菱形框),有箭头的连线表示控制流向,称为程序图中的边后路径。图5.3(a)是一个程序流程图,可以将它转换成图5.3(b)程序图(假设菱形框表示的判断内设有覆合的条件)。图5.3(a)程序流程图5.3(b)程序图在转换时注意以下几点:①一条边必须终止于一个结点,在选择结构中的分支汇聚处即使无语句也应有汇聚结点②若判断中的逻辑表达式是复合条件,应分解为一系列只有单个条件的嵌套判断,如对于图5.4(a)的符合条件的判定应画成图5.4(b)所示的程序图
5.5.(2)计算程序图G的环路复杂性V(G).McCabe定义程序图的环路复杂性为此平面图中区域的个数。区域个数为边和结点圈定的封闭区域数加上图形的区域数1。例如图5.3(b)的V(G)=4也可按另一种方法计算,即V(G)=判定结点数+1(3)确定只包含独立路径的基本路径集
环路复杂性可导出程序基本路径基合中的独立路径条数,这是确保程序中每个执行语句至少执行一次所必需的测试用例书目的上界。独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径,例如,在图5.3(b)所示的图中,一组独立的路径是:path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-10-1-11path4:1-2-3-6-7-9-1-11从例中可知,一条新的路径必须保含有一条新的边。这四条路径组成了图5.3(b)所示的程序图的一个基本路径集,4是构成这个基本路径集的独立路径数的上界,这也是设计测试用例的数目。只要测试用例确保这些基本路径的执行,就可以使程序中每个可执行语句至少执行一次,每个条件的取“真”和取“假”分支也能得到测试。基本路径集不是唯一的,对于给定的程序图,可以得到不同的基本路径集。(4)设计测试用例,确保基本路径集合中每条路径的执行。3.黑盒技术测试用例的设计
黑盒测试是功能测试,因此设计测试用例时,需要研究需求规格说明和概要设计说明中有关程序功能或输入、输出之间的关系等信息,从而与测试后的结果进行分析比较。
用黑盒技术设计测试用例的方法一般有以下介绍的四种,在实际测试中应该把各种方法结合起来使用。一、等价类划分用等价类划分的方法设计测试用例的步骤为:(1)
划分等价类
从程序的功能说明(如需求规格说明书)找出一个个输入条件(通常是一句话或一个短语),然后把每一个输入条件划分成两个或多个等价类,将其列表,其格式为表5.1所示表5.1表中合理等价类是指各种正确的输入数据,不合理的等价类是其他错误的输入数据。划分等价类是一个比较复杂的问题,以下提供了几条经验以供参考。A如果某个输入条件规定了取值范围或值的个数。则可确定一个合理的等价类(输入值或数在此范围内)和两个不合理等价类(输入值或个数小于这个范围的最小值或大于这个范围)。例如,输入值是儿童的编号位数,取值范围为0<编号位数<=8,确定一个合理的等价类为“0<编号位数<=8”,两个不合理的等价类为“编号位数<0”和“编号位数>8”。B如果规定了输入数据的一组值,而且程序对不同的输入值做不同的处理,则每个允许输入值是一个合理等价类,此外还有一个不合理等价类(任何一个不允许的输入值)。例如,输入条件上说明教师的职称可为助教、讲师、副教授、教授四种职称之一,则分别取这4个值作为4个合理等价类,另外把4个职称之外的任何职称作为不合理等价类。C如果规定了输入数据必须遵循的规则,可确定一个合理等价类(符合规则)和若干个不合理等价类(从各种不同角度违反规则)。D如果已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分为更小的等价类。
以上这些划分输入数据等价类的经验也同样适用于输出数据,这些数据也只是测试时可能遇到的情况的很小的部分。为了能正确的划分等价类,一定要正确分析被测程序的功能。(2)
确定测试用例根据已划分的等价类,按以下步骤设计测试用例:①
为每一个等价类编号。②
设计一个测试用例,使其尽可能多地覆盖尚未被覆盖过的合理等价类。重复这步,直到所有合理等价类被测试用例覆盖。③
设计一个测试用例,使其只覆盖一个不合理等价类。重复这一步,直到所有不合理等价类被覆盖。之所以这样做,是因为某些程序中对某一输入错误的检查往往会屏蔽对其他输入错误的检查。因此必须针对每一个不合理等价类,分别设计测试用例。例5.1:某报表处理系统,要求用户输入处理报表的日期。假设日期限制在2000年1月至2008年12月,即系统只能对该段日期由年月的六位数字字符组成,前四位代表年,后两位代表月。现用等价划分法设计测试用例,来测试程序的“日期检查功能”。划分等价类并编号。划分成三个有效等价类,七个无效等价类,如表5.2所示。表5.2“报表日期”输入条件的等价类表输入数据合理等价类不合理等价类
报表日期
1六位数字字符2有非数字字符3少于六位数字字符4多于六位数字字符年份范围
5在2000-2008之间6小于20007大于2008月份范围
8在1-12之间9等于010大于12A为合理定价类设计测试用例,对于表中编号为1、5、8对应的三个合理等价类,用一个测试用例覆盖。测试数据期望结果覆盖范围200605输入有效1、5、8B为每一个不合理等价类至少设计一个测试用例。测试数据期望结果覆盖范围99MAY输入无效220005输入无效32005
005输入无效4198912输入无效6200901输入无效7200700输入无效9200613输入无效10注意在七个不合理的测试用例中,不能出现相同的测试用例,否则相当于一个测试用例覆盖了一个以上不合理等价类,使程序测试不完全。等价类划分方法比随机选择测试用例要好得多,但这个方法的缺点是没有选择某些高效的、能够发现更多错误的测试用例。
二、边界值分析实践经验表明,程序往往在处理边界情况时发生错误。边界情况指输入等价类和输出等价类边界上的情况。因此检查边界情况的测试用例比较高效的,可以查出更多错误。例如,在做三角形设计时,要输入三角形的三个边长:A、B和C。这三个数值应当满足A>0,B>0,C>0,A+B>C,A+C>B,B+C>A,才能构成三角形。但如果把六个不等式中的任何一个“〉”错写成“≥”,那样不能构成三角形的问题恰出现在容易被疏忽的边界附近。
使用边界值分析方法设计测试用例时一般与等价类划分结合起来。但它不是从一个等价类中任选一个例子作为代表,而是将测试边界情况作为重点目标,选取正好=、刚刚>或刚刚<边界值的测试数据。下面提供的一些设计原则供参考:(1)如果输入条件规定了值的范围,可以选择正好等于边界值的数据作为合理的测试用例,同时还要选择刚好越过边界值的数据作为不合理的测试用例。如输入值位数的范围是(0,8),可取1,6,8等位数的值作为测试数据。(2)对每个输入条件指出了输入数据的个数,则按最大个数、最小个数、比最小个数少1、比最大个数多1等情况分别设计测试用例。如。一个输入文件可包括1-255个记录,则分别设计有1个记录、255个记录,以及0个记录和256个记录的输入文件的测试用例。(3)对每个输出文件分别按照以上原则(1)或(2)确定输出值的边界情况。假如某社区卫生综合管理系统规定,只能查询入园日期为1995-2004年的孩子信息,可以设计测试用例,使得查询范围内的某一年后9年孩子的信息,还需设计查询1994年、2005年孩子信息的测试用例(不合理输出等价类)
由于输出值的边界不与输入值的边界相对应,所以要检查输出值的边界不一定可能,要产生超出输出值之外的结果也不一定能做到,但必要时还需试一试。(4)如果程序的规格说明给出输入或输出域是个有序集合(如顺序文件、线性表、链表等),则应选取集合的第一个元素和最后一个元素作为测试用例。例5.2:题意同例5.1,用边界值分析设计测试用例。程序中判断输入日期(年月)是否有效,假设使用如下语句:IF(ReportDate<=MaxDate)AND(ReportDate>=MinDate)THEN产生指定日期报表ELSE显示错误信息ENDIF如果将程序中的“<=”误写为“<”,则例5.1中所有测试用例都不能发现这一错误,采用边界值分析法的测试用例如表5.3所示。表5.3“报表日期”边界值分析法测试用例输入等价类测试用例说明测试数据期望结果选取理由报表日期2个数字字符5个数字字符6个数字字符有1个非数字字符全部是非数字字符7个数字字符05200482004082004,8Day---2004018显示出错显示出错输出有效显示出错显示出错显示出错仅有两个合法字符比有效长度少1类型及长度均有效有一个非法字符6个非法字符比有效长度多1日期范围在有效范围边界上选取数据199501200501199500200502输入有效输入有效显示出错显示出错最小日期最大日期刚好小于最小日期刚好大于最大日期月份范围月份为1月月份为12月月份<1月份为>12199501199512199500199513输入有效输入有效显示出错显示出错最小月份最大月份刚好小于最小月份刚好大于最大月份三、错误推测
在测试程序时,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性的编写检查这些错误的测试用例,这就是错误推测法。
错误推测法没有确定的步骤,凭经验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。如输入、输出数据为零时容易发生错误的情况,又如,输入表格为空或输入表格只有一行是容易出错的情况等等。例如:对于一个排序程序,列出以下几项需特别测试的情况:(1)
输入表为空。(2)
输入表只含一个元素(3)
输入表中所有元素均相同(4)
输入表中已排好序又如,测试一个采用二分法的检索程序,考虑一下情况:(1)
表中只有一个元素(2)
表长是2的幂(3)
表长是2的幂减1或2的幂加1。等等,要根据具体情况具体分析。四、因果图等价类划分和边界值分析方法都只是孤立地考虑各个输入数据的测试功能,而没有考虑多个输入数据的组合引起的错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 2 Language and Culture Reading B说课稿-2024-2025学年高中英语上外版必修第一册
- 变更税率协议书范本
- 北京建行商贷合同范本
- 果蔬鲜度管理
- 山西省名校联盟2024-2025学年高二上学期期中联考语文试卷(含答案)
- 泸县五中2024年秋期高一期中考试地理试题
- 广东省广州外国语、广大附中、铁一中学等三校2024-2025学年高三上学期期中联考试题 历史(含答案)
- 安徽省合肥市第四十二中学2024-2025学年七年级上学期期中绿色评价英语试题(含答案无听力音频及原文)
- 头孢类抗菌药物行业相关投资计划提议范本
- 聚乙烯(PE)相关项目投资计划书
- 公路工程施工现场安全检查手册
- 海水淡化预处理过程概要课件
- 李白的性格思想课件
- 中级电气工程师答辩题库
- 财务会计费用原始凭证分割单
- 矿井防灭火单元安全检查表
- 质量基础设施“一站式”服务项目清单、流程、评价要素、满意度调查问卷
- 动物实验给药剂量换算讲课教案
- 店长离职交接表
- DB51∕T 5057-2016 四川省高分子复合材料检查井盖、水箅技术规程
- 2022年联合办学方案范文
评论
0/150
提交评论