
第章软件工程结构化软件开发详细设计编码测试.ppt
53页ü常用工具:常用工具: 1. 程序流程图程序流程图 2. N-S图图 3. PAD图图 4. 伪代码伪代码 PDLn 详细设计详细设计 (过程设计过程设计)ü 定义:定义: 在概要设计阶段完成了软件系统的总体设计,规定了各在概要设计阶段完成了软件系统的总体设计,规定了各个模块的功能及模块之间的联系之后,进一步就要考虑实现个模块的功能及模块之间的联系之后,进一步就要考虑实现各个模块规定的功能,也就是进行软件的详细设计,也称为各个模块规定的功能,也就是进行软件的详细设计,也称为过程设计过程设计ü 任务:任务: 要决定各个模块的实现算法,并精确地表达这些算法要决定各个模块的实现算法,并精确地表达这些算法Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.11. 程序流程图(程序流程图(Program Flow Chart)又称为程序框图。
又称为程序框图Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.2n程序流程图独立于任何一程序流程图独立于任何一种程序设计语言,比较直种程序设计语言,比较直观、清晰,易于学习掌握观、清晰,易于学习掌握n缺点:缺点: 表示程序控制流程的箭头表示程序控制流程的箭头可以不受任何约束,随意可以不受任何约束,随意转移控制转移控制Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.32. N-S图 N-S图也称盒也称盒图((Box-Diagram),是由),是由Nassi 和和Shneiderman提出的一种符合提出的一种符合结构化程序构化程序设计原原则的的图形描述工具。
在形描述工具在N-S图中,相中,相应规定了定了5种种图形构件Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.4N-S图特点:图特点: ((a)) 图中每个矩形框都是明确定义了的功能域图中每个矩形框都是明确定义了的功能域 ((b)) 图中的控制转移不能任意规定图中的控制转移不能任意规定 ((c)) 从图中可以很容易地确定局部数据和全局数据的作用域从图中可以很容易地确定局部数据和全局数据的作用域 ((d)) 图中很容易表现嵌套关系及模块的层次结构图中很容易表现嵌套关系及模块的层次结构Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.5例:分别输入10个数,打印出其中的正数。
算法1:设T为计数器①输入第一个数—>X,1—>T;②判断X>0 ? ;③若X>0,则打印输出;④判断T>10 ?⑤若T>10,则表示10个数已经处理完,结束 否则,再输入下一个数—>X,且T+1——>T,然后转②继续执行 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.63. PAD图图nPAD是是Problem Analysis Diagram的缩写,它是日本日立公司提出,的缩写,它是日本日立公司提出,由程序流程图演化来的现在已为由程序流程图演化来的现在已为ISO认可Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.7 PAD图特点:图特点: 用用PAD所表达的程序,结构清晰并且结构化程度高。
作为一种详细所表达的程序,结构清晰并且结构化程度高作为一种详细设计的工具,它比流程图更易读,且由于设计的工具,它比流程图更易读,且由于PAD是一种树形结构,比流程是一种树形结构,比流程图更容易在计算机上处理,容易将图更容易在计算机上处理,容易将PAD图转换成程序图转换成程序Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.84. PDL ( Program Design Language )nPDL是一种用于描述功能模块的算法设计和加工细节的是一种用于描述功能模块的算法设计和加工细节的语言,称为语言,称为设计程序用语言设计程序用语言它是一种它是一种伪码伪码一般地,一般地,伪码的语法规则分为伪码的语法规则分为“外语法外语法”和和“内语法内语法”。
外语法外语法应当符合一般程序设计语言常用语句的语法规则;而内应当符合一般程序设计语言常用语句的语法规则;而内语法可以用英语中一些简单的句子、短语和通用的数学语法可以用英语中一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能符号,来描述程序应执行的功能nPDL就是这样一种伪码它具有严格的关键字外语法,就是这样一种伪码它具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词和条件的内语法又是灵活自由的,可使用自然语言的词汇下面举一个例子,来看汇下面举一个例子,来看PDL的使用Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.9PDL举例举例PROCEDURE spellcheck 查找错拼的单词查找错拼的单词 BEGINsplit document into single words 把整个文档分离成单词把整个文档分离成单词lood up words in dictionary 在字典中查这些单词在字典中查这些单词display words which are not in dictionary 显示字典中查不到的单词显示字典中查不到的单词 create a new dictionary 造一新字典造一新字典END spellcheck PDL PDL特点:特点: (1) (1)有固定的关键字外语法,提供全部结构化控制结构、数据说明和模块特征。
有固定的关键字外语法,提供全部结构化控制结构、数据说明和模块特征 (2) (2)内语法使用自然语言来描述处理特性内语法使用自然语言来描述处理特性 (3) (3)有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构结构)的数据结构 (4) (4)有子程序定义与调用机制,用以表达各种方式的接口说明有子程序定义与调用机制,用以表达各种方式的接口说明Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.10Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.11n 软件设计文档要求软件设计文档要求¨概要设计说明书概要设计说明书:规定软件:规定软件结构结构n内容:以层次图表形式表示的软件总体结构、模块的内容:以层次图表形式表示的软件总体结构、模块的外部设计外部设计¨详细设计说明书详细设计说明书:描述程序的:描述程序的过程过程n内容:表示软件结构的图表、对逐个模块的程序描述内容:表示软件结构的图表、对逐个模块的程序描述Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.12n 复审复审n复审:设计复审指对设计文档的复审。
复审:设计复审指对设计文档的复审 目的在于及早发现设计中的缺陷和错误目的在于及早发现设计中的缺陷和错误n复审指导原则:复审指导原则:概要设计复审(概要设计复审(PDR)和详细设计复审()和详细设计复审(DDR)应该分)应该分开进行n复审的内容:复审的内容:¨概要设计复审(概要设计复审(PDR):): 重点在系统的总体结构、模块的划分、内外接口重点在系统的总体结构、模块的划分、内外接口¨详细设计复审(详细设计复审(DDR):): 重点在各个模块的具体设计上重点在各个模块的具体设计上n软件设计时复审,可以找出软件中软件设计时复审,可以找出软件中50%——65%的错误的错误Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.136.2.3 软件编码(程序设计)软件编码(程序设计)程序设计阶段的任务程序设计阶段的任务::将将““软件表示软件表示” ” 变成计算机能够变成计算机能够““理解理解””的形式,即的形式,即为每个模块编程。
为每个模块编程n结构化程序设计,主要包括两个方面:结构化程序设计,主要包括两个方面:ü在编写程序时,强调使用几种基本控制结构,通过组合在编写程序时,强调使用几种基本控制结构,通过组合嵌套,形成程序的控制结构尽可能避免使用会使程序嵌套,形成程序的控制结构尽可能避免使用会使程序质量受到影响的质量受到影响的GOTOGOTO语句ü在程序设计过程中,尽量采用自顶向下和逐步细化的原在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开则,由粗到细,一步步展开 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.14例例 打印打印A, B, C三数中最小者程序三数中最小者程序 程序程序程序程序1 1 if ( if ( A A < < B B ) ) goto 120goto 120;;;; if ( if ( B B < < C C ) goto 110) goto 110;;;; 100 write ( 100 write ( C C ) );;;; goto 140 goto 140;;;; 110 write ( 110 write ( B B ) );;;; goto 140 goto 140;;;; 120 if ( 120 if ( A A < < C C ) goto 130) goto 130;;;; goto 100 goto 100;;;; 130 write ( 130 write ( A A ) );;;; 140 end 140 end 程序程序程序程序2 2 if ( if ( A A < < B B ) and ( ) and ( A < C A < C ) then ) then write ( write ( A A ) ) else else if ( if ( A A B B ) and ( ) and ( B B < < C C ) ) thenthen write ( write ( B B ) ) else else write ( write ( C C ) ) endif endif endif endifEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.15例例 找出找出100以内的素数以内的素数n从从2到到100中去掉中去掉2,3,…,9,10的倍数,剩下的就是的倍数,剩下的就是100以内的素数。
以内的素数n为了解决这个问题,可先按程序功能写出一个框架为了解决这个问题,可先按程序功能写出一个框架Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.16main ( ) {/*建立建立2到到100的数组的数组A[ ],其中,其中A[i]==i*/ /* 建立建立2到到10的素数表的素数表B[ ],其中存放,其中存放2到到 10以内的素数以内的素数*//*若若A[i]==i是是B[ ]中任一数的倍数,则剔除中任一数的倍数,则剔除A[i]*/ /*检查检查A[ ]所有的数能否被所有的数能否被B[j]整除并将能整除并将能 被整除的数从被整除的数从A[ ]中剔除中剔除*/ /*输出输出A[ ]中所有没有被剔除的数中所有没有被剔除的数*/ /*若若A[i]没有被剔除,则输出之没有被剔除,则输出之*/} for ( i = 2;;i <= 100;;i++ ) A[i] = i;;B[1]= 2;;B[2]= 3;;B[3]= 5;;B[4]= 7;;for ( j = 1;;j <= 4;;j++ )for ( i = 2;; i <= 100;;i++))for ( i = 2;;i <= 100;;i++)) if ( A[i]//B[j] * B[j] == A[i] ) A[i] = 0;;if ( A[i] != 0 )) printf ( “A[%d]==%d\n”, I,A[i] );;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.17影响编码的质量因素影响编码的质量因素1. 程序设计语言的选择程序设计语言的选择 ;;2. 程序设计程序设计风格风格 ;;3. 程序效率问题程序效率问题 ;;4. 程序复杂性度量程序复杂性度量 ;; 对源程序的质量要求对源程序的质量要求ü 程序员必须深刻地理解、熟练地掌握并正确地运用程序设程序员必须深刻地理解、熟练地掌握并正确地运用程序设计语言的特性。
例如一些语法规则和语义的细节只有语法上计语言的特性例如一些语法规则和语义的细节只有语法上没有错误的程序才能通过编绎系统的语法检查没有错误的程序才能通过编绎系统的语法检查ü 还要求源程序具有良好的结构性和良好的程序设计风格还要求源程序具有良好的结构性和良好的程序设计风格所写出的程序将被别人阅读,一定要尽量使程序写得容易被人所写出的程序将被别人阅读,一定要尽量使程序写得容易被人读懂Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.18n 程序设计风格n程序实际上也是一种供人阅读的文章,有一个文章程序实际上也是一种供人阅读的文章,有一个文章的风格问题应该使程序具有良好的风格的风格问题应该使程序具有良好的风格。
¨ 源程序文档化源程序文档化¨ 数据说明数据说明¨ 语句结构语句结构¨ 输入/输出方法输入/输出方法Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.19p 源程序文档化源程序文档化ü 标识符的命名标识符的命名ü 安排注释安排注释ü 程序的视觉组织程序的视觉组织Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.20ü 源程序文档源程序文档化化—符号名的命名符号名的命名n符号名即标识符,包括符号名即标识符,包括模块名模块名、、变量名变量名、、常量名常量名、、标号名标号名、、子程序名子程序名、、数据区名数据区名以及以及缓冲区名缓冲区名等。
这些名字应能反映它等这些名字应能反映它所代表的实际东西,所代表的实际东西,应有一定实际意义应有一定实际意义 例如,表示次数的量用例如,表示次数的量用Times,表示总量的用,表示总量的用Total,表示,表示平均值的用平均值的用Average,表示和的量用,表示和的量用Sum等n名字不是越长越好名字不是越长越好,应当选择精炼的意义明确的名字应当选择精炼的意义明确的名字必要必要时可使用缩写名字时可使用缩写名字,但这时要注意缩写规则要一致,并且要,但这时要注意缩写规则要一致,并且要给每一个名字加注释给每一个名字加注释同时,在一个程序中,一个变量只应同时,在一个程序中,一个变量只应用于一种用途用于一种用途Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.21n程序中的注释是程序员与日后的程序读者之间通信的重要程序中的注释是程序员与日后的程序读者之间通信的重要手段。
手段n注释决不是可有可无的注释决不是可有可无的n一些正规的程序文本中,注释行的数量占到整个源程序的一些正规的程序文本中,注释行的数量占到整个源程序的1//3到到1//2,甚至更多甚至更多n注释分为注释分为序言性注释序言性注释和和功能性注释功能性注释ü 源程序文档源程序文档—注释注释Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.22序言性注释序言性注释n通常置于每个程序模块的开头部分,通常置于每个程序模块的开头部分,它应当给出程序的整体它应当给出程序的整体说明说明,对于理解程序本身具有引导作用有些软件开发部门,对于理解程序本身具有引导作用有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。
列出n有关项目包括:有关项目包括:¨ 程序标题程序标题;;¨有关本模块有关本模块功能和目的功能和目的的的说明说明;;¨ 主要算法主要算法;;¨ 接口说明接口说明:包括调用形式,参数描述,子程序清单;:包括调用形式,参数描述,子程序清单;¨ 有关数据描述有关数据描述:重要的变量及其用途,约束或限制条件,:重要的变量及其用途,约束或限制条件,以及其它有关信息;以及其它有关信息;¨ 模块位置模块位置:在哪一个源文件中,或隶属于哪一个软件包;:在哪一个源文件中,或隶属于哪一个软件包;¨ 开发简历开发简历:模块设计者,复审者,复审日期,修改日期:模块设计者,复审者,复审日期,修改日期及有关说明等及有关说明等Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.23////程序标题程序标题:: 1553B 1553B通讯数据传输模块通讯数据传输模块////功能和目的的说明功能和目的的说明:用于接收:用于接收1553B1553B接口双端口接口双端口RAMRAM的数据块和发的数据块和发送准备传输到送准备传输到BCBC上的数据到双端口上的数据到双端口RAMRAM,解决本机和智能控制器,解决本机和智能控制器的数据交换问题。
的数据交换问题////主要算法主要算法:通讯协议分析:通讯协议分析////接口说明接口说明::data_com (c_command, *rt_data_p) c_command=1,data_com (c_command, *rt_data_p) c_command=1,接收;接收;=0=0,发送;,发送; *rt_data_p *rt_data_p缓冲区指针缓冲区指针; ;////子程序子程序: files_store(fileName) : files_store(fileName) 支持本模块的数据存储支持本模块的数据存储////有关数据描述有关数据描述:: *dataBlockPoint_w *dataBlockPoint_w 双端口双端口RAMRAM数据存储指针,数据存储指针,管理数据写入位置管理数据写入位置; ;// *dataBlockPoint_r RAM// *dataBlockPoint_r RAM数据存储指针,管理数据读出位置数据存储指针,管理数据读出位置; ;////文件名文件名::1553datacom.c1553datacom.c////设计者设计者:徐峰:徐峰 ////复审者复审者:王晓明:王晓明////复审日期复审日期::2006/08/062006/08/06////版本版本::1.01.0Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.24功能性注释功能性注释n功能性注释嵌在源程序体中,用以描述功能性注释嵌在源程序体中,用以描述其后的语句或程序其后的语句或程序段是在做什么工作段是在做什么工作,或是执行了下面的语句会怎么样。
而,或是执行了下面的语句会怎么样而不要解释下面怎么做不要解释下面怎么做 例如例如 /* ADD AMOUNT TO TOTAL */ TOTAL = AMOUNT++TOTAL; 如果注明把月销售额计入年度总额,便使读者理解了下面如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:语句的意图: /* ADD MONTHLY-SALES TO ANNUAL-TOTAL */TOTAL = AMOUNT++TOTALn要点要点¨ 描述一段程序,而不是每一个语句;描述一段程序,而不是每一个语句;¨ 用缩进和空行,使程序与注释容易区别;用缩进和空行,使程序与注释容易区别;¨ 注释要正确注释要正确Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.25ü源程序文档源程序文档—视觉组织视觉组织 n空格、空行空格、空行n移行移行也叫做也叫做向右缩格向右缩格。
它是指程序中的各行不必都在左端对它是指程序中的各行不必都在左端对齐,都从第一格起排列这样做使程序完全分不清层次关系齐,都从第一格起排列这样做使程序完全分不清层次关系n对于对于选择语句选择语句和和循环语句循环语句,把其中的程序段语句向右做,把其中的程序段语句向右做阶梯阶梯式移行式移行使程序的逻辑结构更加清晰使程序的逻辑结构更加清晰 例如,两重选择结构嵌套,写成下面的移行形式,层次就清例如,两重选择结构嵌套,写成下面的移行形式,层次就清楚得多 IF((…)) THEN IF((…)) THEN …… ELSE …… ENDIF ……ELSE ……ENDIFEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.26p 数据说明数据说明n为了使程序中数据说明更易于理解和维护,注意以下几点为了使程序中数据说明更易于理解和维护,注意以下几点: (1) 数据说明的次序应当规范化数据说明的次序应当规范化 (2) 说明语句中变量安排有序化说明语句中变量安排有序化 (3) 使用注释说明复杂数据结构使用注释说明复杂数据结构n原则上,数据说明的次序与语法无关,其次序是任意原则上,数据说明的次序与语法无关,其次序是任意的。
但出于阅读、理解和维护的需要,最好使其规范的但出于阅读、理解和维护的需要,最好使其规范化,使说明的先后次序固定化,使说明的先后次序固定n数据说明次序规范化,使数据属性容易查找,也有利数据说明次序规范化,使数据属性容易查找,也有利于测试,排错和维护于测试,排错和维护Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.27n在程序中数据说明次序在程序中数据说明次序①① 常量说明常量说明②② 简单变量类型说明简单变量类型说明③③ 数组说明数组说明④④ 公用数据块说明公用数据块说明 n在类型说明中的顺序在类型说明中的顺序①① 整型量说明整型量说明②② 实型量说明实型量说明③③ 字符量说明字符量说明④④ 逻辑量说明逻辑量说明n当当多个变量名在一个说明语句中说明多个变量名在一个说明语句中说明时,应当对这些变量时,应当对这些变量按按字母的顺序排列字母的顺序排列。
例如,把例如,把 integer size, length, width, cost, price写成写成 integer cost, length, price , size, width Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.28p 语句结构语句结构(1) 在一行内只写一条语句在一行内只写一条语句(2) 程序编写首先应当考虑清晰性程序编写首先应当考虑清晰性 程序编写首先应当考虑清晰性,不要刻意追求技巧性,程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编写得过于紧凑使程序编写得过于紧凑 例如,有一个用例如,有一个用 C 语句写出的程序段:语句写出的程序段: A[I] = A[I]++A[T];; A[T] = A[I]--A[T];; A[I] = A[I]--A[T];; 改为:改为: WORK = A[T];; A[T] = A[I];; A[I] = WORK;;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.29(3) 程序要能直截了当地说明程序员的用意。
程序要能直截了当地说明程序员的用意 例如,例如, for ( i = 1; i <= n; i++ ) for ( j = 1; j <= n; j++ ) V[i][j] == ( i//j ) * ( j//i )除法运算(/)在除数和被除数都是整型量时,其结除法运算(/)在除数和被除数都是整型量时,其结果只取整数部分,而得到整型量果只取整数部分,而得到整型量 当当 i<<j 时时, i / j = 0 当当 j<<i 时时, j / i = 0 得到的数组得到的数组 当当i≠j时时 V[i][j] = ( i//j ) * ( j//i ) = 0 当当i==j时时 V[i][j] = ( i//j ) * ( j//i ) = 1 这样得到的结果这样得到的结果 V 是一个单位矩阵是一个单位矩阵Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.30 写成以下的形式,就能让读者直接了解程序编写者的意图。
写成以下的形式,就能让读者直接了解程序编写者的意图 for ( i==1; i <= n; i++ ) { for ( j==1; j <= n; j++ ) { if ( i == j ) V[i][j] == 1.0; else V[i][j] == 0.0; } }Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.31(5) 尽可能尽可能使用库函数使用库函数。
6) 避免使用避免使用空的空的ELSE语句和语句和IF… THEN IF…的语句 (7) 避免采用过于复杂的条件测试避免采用过于复杂的条件测试8) 尽量减少使用尽量减少使用“否定否定”条件的条件语句条件的条件语句4)避免避免使用临时变量使用临时变量而使可读性下降而使可读性下降例如,有的程序员往例如,有的程序员往往喜欢把表达式往喜欢把表达式 A[I]++1//A[I]; 写成写成 AI==A[I]; X==AI++1//AI;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.32p 输入和输出输入和输出n输入和输出信息是与用户的使用直接相关的。
输入和输出输入和输出信息是与用户的使用直接相关的输入和输出的方式和格式应当的方式和格式应当尽可能方便用户的使用尽可能方便用户的使用一定要避免因一定要避免因设计不当给用户带来的麻烦设计不当给用户带来的麻烦 原则:原则:①①对所有的输入数据都要进行检验,识别错误的输入,以对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;保证每个数据的有效性;②②使得输入步骤和操作尽可能简单;使得输入步骤和操作尽可能简单;③③应允许缺省值应允许缺省值;④④在交互式输入输入时,要在屏幕上使用提示符明确提示在交互式输入输入时,要在屏幕上使用提示符明确提示交互输入的请求;交互输入的请求;“如果我不是编码的人,我能看懂它吗如果我不是编码的人,我能看懂它吗?”Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.336.2.4 软件测试软件测试n 软件测试的任务:软件测试的任务: 预防错误、改正错误、提供错误判断依据预防错误、改正错误、提供错误判断依据n从从用户的角度用户的角度出发,普遍希望通过软件测试暴露软件中出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。
隐藏的错误和缺陷,以考虑是否可接受该产品n从从软件开发者的角度软件开发者的角度出发,则希望测试成为表明软件产出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心户的要求,确立人们对软件质量的信心n 软件测试的目的:软件测试的目的:测试用例测试用例 = 测试输入数据测试输入数据+预期输出效果预期输出效果n 软件测试的关键:软件测试的关键:Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.34n 软件测试的对象软件测试的对象 软件测试并不等于程序测试软件测试应贯穿于软件定软件测试并不等于程序测试。
软件测试应贯穿于软件定义与开发的整个期间义与开发的整个期间Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.35单元测试单元测试集中对用源代码集中对用源代码实现的每一个程序单元进实现的每一个程序单元进行测试,检查各个程序模行测试,检查各个程序模块是否正确地实现了规定块是否正确地实现了规定的功能集成测试集成测试,根据设计规定的软件体系结,根据设计规定的软件体系结构,把已测试过的模块组装起来,在组构,把已测试过的模块组装起来,在组装过程中,检查程序结构组装的正确性装过程中,检查程序结构组装的正确性确认测试确认测试则是要检查已实现的则是要检查已实现的软件是否满足了需求规格说明软件是否满足了需求规格说明中确定了的各种需求,以及软中确定了的各种需求,以及软件配置是否完全、正确。
件配置是否完全、正确系统测试系统测试,把已经经过确认,把已经经过确认的软件纳入实际运行环境中,的软件纳入实际运行环境中,与其它系统成份组合在一起与其它系统成份组合在一起进行测试进行测试n 软件测试的过程软件测试的过程Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.36n 测试用例设计测试用例设计Ø 黑盒测试黑盒测试ü这种方法是把测试对象看做一个黑盒子,测试人员这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,据程序的需求规格说明书,检查程序的功能检查程序的功能是否符是否符合它的功能说明。
合它的功能说明ü黑盒测试又叫做黑盒测试又叫做功能测试或数据驱动测试功能测试或数据驱动测试Ø 白盒测试白盒测试ü此方法把测试对象看做一个透明的盒子,它允许测此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有或选择测试用例,对程序所有逻辑路径进行测试逻辑路径进行测试ü通过在不同点检查程序的状态,确定实际的状态是通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致因此白盒测试又称为否与预期的状态一致因此白盒测试又称为结构测结构测试或逻辑驱动测试试或逻辑驱动测试Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.37ü对一个具有多重选择和循环嵌套的程序,不同的路径数目可对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。
给出一个小程序的流程图,它包括了一个执能是天文数字给出一个小程序的流程图,它包括了一个执行行20次的循环次的循环ü包含的不同执行路径数达包含的不同执行路径数达520条,对每一条路径进行测试需要条,对每一条路径进行测试需要1毫秒,假定一年工作毫秒,假定一年工作365 × 24小时,要想把所有路径测试完,小时,要想把所有路径测试完,需需3170年Ø 白盒测试白盒测试Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.38n 逻辑覆盖逻辑覆盖¨ 语句覆盖语句覆盖¨ 判定覆盖判定覆盖¨ 条件覆盖条件覆盖¨ 判定-条件覆盖判定-条件覆盖¨ 条件组合覆盖条件组合覆盖¨ 路径覆盖路径覆盖逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。
它属白盒测试例的技术它属白盒测试Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.39入 口A>1AND B=0A=2OR X>1返 回X = X/AX = X + 1TTS4567123abdceEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.40 语句覆盖语句覆盖是指,是指,选择足够多的测试数选择足够多的测试数据,据,使被测试程序中使被测试程序中每个语句至少执行一每个语句至少执行一次次。
是最弱的逻辑覆是最弱的逻辑覆盖准入入 口口A>1AND B=0A=2OR X>1返返 回回X = X/AX = X + 1TTS4567123abdce测试数据:测试数据:A=2 B=0 X=4测试路径:测试路径:sacbedn 逻辑覆盖逻辑覆盖Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.41入 口A>1AND B=0A=2OR X>1返 回X = X/AX = X + 1TTS4567123abdce 判定覆盖判定覆盖是指,不仅是指,不仅每个语句至少执行一次,每个语句至少执行一次,而且每个判定的每种可能而且每个判定的每种可能的结果都应该至少执行一的结果都应该至少执行一次,也就是次,也就是每个判定的每每个判定的每个分支都至少执行一次个分支都至少执行一次。
比语句覆盖稍强一些比语句覆盖稍强一些 A = 3, B = 0, X = 3 覆盖 sacbd A = 2, B = 1, X = 1 覆盖 sabedn 逻辑覆盖逻辑覆盖Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.42入 口A>1AND B=0A=2OR X>1返 回X = X/AX = X + 1TTS4567123abdce 条件覆盖条件覆盖是指,不仅是指,不仅每个语句至少执行一次,每个语句至少执行一次,而且使每个判定表达式的而且使每个判定表达式的每个判定条件都取到各种每个判定条件都取到各种可能的结果可能的结果 A = 2, B = 0, X = 4 覆盖 sacbed A = 1, B = 1, X = 1 覆盖 sabdn 逻辑覆盖逻辑覆盖Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.43入 口A>1AND B=0A=2OR X>1返 回X = X/AX = X + 1TTS4567123abdce 判定判定/条件条件覆盖是指,覆盖是指,选取足够多的测试数据,选取足够多的测试数据,使得每个判定表达式中的使得每个判定表达式中的每个条件都取到各种可能每个条件都取到各种可能的值,而且的值,而且每个判定表达每个判定表达式也都取到各种可能的结式也都取到各种可能的结果果。
A = 2, B = 0, X = 4 覆盖 sacbed A = 1, B = 1, X = 1 覆盖 sabdn 逻辑覆盖逻辑覆盖在含有在含有AND和和OR的逻辑表达式中的逻辑表达式中,某些条件将抑制其它条件某些条件将抑制其它条件;例例如如,表达式表达式 A AND B ,如果如果A为假为假,则就不再检查则就不再检查B了因此在实际了因此在实际应用中要设计更多的用例来测试未走过、而可能隐藏错误的路径应用中要设计更多的用例来测试未走过、而可能隐藏错误的路径Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.44入 口A>1AND B=0A=2OR X>1返 回X = X/AX = X + 1TTS4567123abdce 条件组合条件组合覆盖是更强覆盖是更强的逻辑覆盖标准,它要求的逻辑覆盖标准,它要求足够多的测试数据,足够多的测试数据,使得使得每个判定表达式中的各种每个判定表达式中的各种可能组合都至少出现一次。
可能组合都至少出现一次 相当强的覆盖准则相当强的覆盖准则 A = 2, B = 0, X = 4 覆盖 sacbed A = 1, B = 1, X = 1 覆盖 sabd A = 2, B = 1, X = 1 覆盖 sabed A = 1, B = 0, X = 2 覆盖 sabedn 逻辑覆盖逻辑覆盖Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.45 路径覆盖:路径覆盖:路径测试就是设计足够的测试用例,路径测试就是设计足够的测试用例,覆覆盖程序中所有可能的路径盖程序中所有可能的路径 A = 1, B = 1, X = 1执行路径 1—2—3 A = 1, B = 1, X = 2执行路径 1—2—6—7s1234567abdce A = 3, B = 0, X = 1执行路径 1—4—5—3 A = 2, B = 0, X = 4执行路径 1—4—5—6—7n 逻辑覆盖逻辑覆盖Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.46 假设一个假设一个程序程序P有有输入量输入量X和和Y及及输出输出量量Z。
在字长为在字长为32位的计算机上运行位的计算机上运行若若X、、Y取整数,按黑盒方法进行穷举取整数,按黑盒方法进行穷举 测试:测试: 可能采用的测试数据组:可能采用的测试数据组: 232×232 ==264 如果测试一组数据需要如果测试一组数据需要1毫秒,毫秒, 一年工作一年工作365× 24小时,小时, 完成所有测试需完成所有测试需5亿年 用黑盒测试发现程序中的错误,必须在用黑盒测试发现程序中的错误,必须在所有可能的输入条件所有可能的输入条件和输出条件和输出条件中确定测试数据,来检查程序是否都能产生正中确定测试数据,来检查程序是否都能产生正确的输出确的输出 这是这是不可能不可能的Ø 黑盒测试黑盒测试Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.47Ø使用这一方法时,完全使用这一方法时,完全不考虑程序的内部结构不考虑程序的内部结构,只依据程序,只依据程序的规格说明来设计测试用例。
由于不可能用所有可以输入的的规格说明来设计测试用例由于不可能用所有可以输入的数据来测试程序,而只能从全部可供输入的数据中选择一个数据来测试程序,而只能从全部可供输入的数据中选择一个子集进行测试子集进行测试如何选择适当的子集如何选择适当的子集,使其尽可能多地发现,使其尽可能多地发现错误解决的办法之一就是等价类划分解决的办法之一就是等价类划分Ø等价类的划分有两种不同的情况:等价类的划分有两种不同的情况:ü有效等价类:有效等价类:是指对于程序规格说明来说,是合理的,是指对于程序规格说明来说,是合理的,有意义的输入数据构成的集合利用它,可以检验程序有意义的输入数据构成的集合利用它,可以检验程序是否实现了规格说明预先规定的功能和性能是否实现了规格说明预先规定的功能和性能ü无效等价类:无效等价类:是指对于程序规格说明来说,是不合理的,是指对于程序规格说明来说,是不合理的,无意义的输入数据构成的集合利用它,可以检查程序无意义的输入数据构成的集合利用它,可以检查程序中功能和性能的实现是否有不符合规格说明要求的地方中功能和性能的实现是否有不符合规格说明要求的地方n 等价类划分等价类划分Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.48Ø划分等价类需要经验,以下是一些启发性原则:划分等价类需要经验,以下是一些启发性原则:ü若输入条件规定了输入值的范围,则可能划分一个若输入条件规定了输入值的范围,则可能划分一个有效的等价类和两个无效的等价类(小于有效的等价类和两个无效的等价类(小于MINMIN或大于或大于MAXMAX););n 等价类划分等价类划分 例如,在程序的规格说明中,对输入条件有一句话:例如,在程序的规格说明中,对输入条件有一句话: “…… 项数可以从项数可以从1到到999 ……” 则有效等价类是则有效等价类是“1≤项数项数≤999”两个无效等价类是两个无效等价类是“项数<项数<1”或或“项项数>数>999”。
在数轴上表示成在数轴上表示成:Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.49ü如果规定输入数据必须遵循的规则,则可划分出一如果规定输入数据必须遵循的规则,则可划分出一个有效的等价类(符合规则)和一个个无效的等价个有效的等价类(符合规则)和一个个无效的等价类(不符合规则)类(不符合规则)例如例如在语言中对变量标识符规定为在语言中对变量标识符规定为“以字母打头的以字母打头的……串串”那么所有以字母打头的构成有效等价类,那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等而不在此集合内(不以字母打头)的归于无效等价类Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.50例如,若规定输入数据为整数,等价类划分表为:例如,若规定输入数据为整数,等价类划分表为:输入条件 有效等价类 无效等价类输入条件 有效等价类 无效等价类整数整数正整数1到32767零 0负整数-1到-32768符合规则符合规则不符合规则不符合规则正整数大于32767非法 负整数小于-32768ü若规定了输入数据为整型,则可划分出整数、零和若规定了输入数据为整型,则可划分出整数、零和负整数三个有效等价类。
负整数三个有效等价类Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.51Ø边界值分析也是一种黑盒测试方法,边界值分析也是一种黑盒测试方法,是对等价类划是对等价类划分方法的补充分方法的补充Ø人们从长期的测试工作经验得知,人们从长期的测试工作经验得知,大量的错误是发大量的错误是发生在输入或输出范围的边界上,而不是在输入范围生在输入或输出范围的边界上,而不是在输入范围的内部的内部因此针对各种边界情况设计测试用例,可因此针对各种边界情况设计测试用例,可以查出更多的错误以查出更多的错误n 边界值划分边界值划分 比如,在做三角形计算时,要输入三角形的三个边长:比如,在做三角形计算时,要输入三角形的三个边长:A、、B和和C。
我们应注意到这三个数值应当满足我们应注意到这三个数值应当满足 A>>0、、B>>0、、C>>0、、 A++B>>C、、A++C>>B、、B++C>>A,,才能构成三角形才能构成三角形但如果把六个不等式中的任何一个大于号但如果把六个不等式中的任何一个大于号“>>”错写错写成大于等于号成大于等于号“≥”,那就不能构成三角形问题恰,那就不能构成三角形问题恰出现在容易被疏忽的边界附近出现在容易被疏忽的边界附近Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.52Ø这里所说的边界是指,相当于输入等价类和输出等价类这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情而言,稍高于其边界值及稍低于其边界值的一些特定情况。
况Ø使用边界值分析方法设计测试用例,首先应确定边界情使用边界值分析方法设计测试用例,首先应确定边界情况应当选取正好等于,刚刚大于,或刚刚小于边界的应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据值做为测试数据,而不是选取等价类中的典型值或任意,而不是选取等价类中的典型值或任意值做为测试数据值做为测试数据 Ø有下列启发式规则:有下列启发式规则:①①若输入条件若输入条件规定值的个数规定值的个数,则分别选取值的,则分别选取值的最大个数最大个数、、最小个数最小个数以及以及接近最大、最小的个数接近最大、最小的个数作为测试用例;作为测试用例;②② 对输入条件规定有对输入条件规定有值的范围值的范围,则选用范围,则选用范围边界数及刚边界数及刚超出范围的无效数超出范围的无效数作为测试用例;作为测试用例;③③ 若输入/输出是若输入/输出是有序集有序集,则注意,则注意第一个和最后一个第一个和最后一个;;④④ 对三角函数的自变量,注意特殊角度的值对三角函数的自变量,注意特殊角度的值Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.53。
