软件工程:第07章-实现课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程:第07章-实现课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 07 实现 课件
- 资源描述:
-
1、1第七章 实现(编码与测试)Implementation=Coding+Testing实现:编码与测试问题定义可行性研究需求分析总体设计详细设计编码与单元测试编码与单元测试综合测试综合测试软件维护软件定义时期软件开发时期软件维护时期将软件设计的结果转化成程序设计语言编写的计算机程序。开发人员对软件的最小设计单位-模块进行单元测试。熟悉软件测试的步骤:单元测试、集成测试、确认测试。掌握软件测试的方法:白盒测试、黑盒测试、灰盒测试。掌握软件调试(纠错)的方法:调试过程、调试方法。了解软件可靠性基本概念及估算方法。第七章 实现(编码与测试)7.1 编码 7.2 软件测试基础 7.3 单元测试 7.4
2、 集成测试 7.5 确认测试 7.6 白盒测试技术 7.7 黑盒测试技术 7.8 调试 7.9 软件可靠性37.1 编码 编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。7.1.1 选择程序设计语言 7.1.2 编码风格 1.程序内部的文档 2.数据说明 3.语句构造 4.输入输出 5.效率7.1.1 选择程序设计语言 为什么 程序设计语言是人和计算机通信的最基本的工具,它的特点必然会影响人的思维和解题方式,会影响人和计算机通信的方式和质量,也会影响其他人阅读和理解程序的难易程度。因此,编码之前的一项重要工作就是选择一种适当的程序设计语言。实用选择标准:用户对编程语言的要求。可以使用
3、的编译程序。可以得到的软件工具。工程规模。程序员的编程语言知识。软件可移植性要求。软件的应用领域。效率:阅读理解、开发、测试、运行、维护7.1.2 编码风格 程序实际上也是一种供人阅读的文章,应该使程序具有良好的风格。“好的”程序应遵循的规则:程序文档:源程序文档化,易于理解的标识符命名、适当的注释、清晰的程序视觉组织等。数据说明:易于理解,便于查阅。语句构造:结构化,简单、直观,技巧不过份。输入输出:遵循人机界面设计准则。效率:效率满足需求;不要为了追求效率而过份使用技巧,牺牲程序的清晰性、可读性。(1)程序文档 程序中的标识符(名字)程序中的注释 程序的视觉组织 符号名的命名 符号名 即标
4、识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名等。名字的意义 这些名字应能反映它所代表的实际东西,应有一定实际意义。例如,表示次数的量用Times,表示总量的用Total,表示平均值的用Average,表示和的量用Sum等。名字的使用 名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致。要给每一个名字加注释。在一个程序中,一个变量只应用于一种用途。夹在程序中的注释是程序员与夹在程序中的注释是程序员与日后日后的程序读者的程序读者之间之间通信的重要手段通信的重要手段。注释注释决不是可有可无决不是可有可无的。的。一些正规的程序文
5、本中,注释行的数量占到整一些正规的程序文本中,注释行的数量占到整个源程序的个源程序的1/31/3到到1/21/2,甚至更多。,甚至更多。注释分为注释分为序言性注释序言性注释和和功能性注释功能性注释。程序的注释 序言性注释通常置于每个程序模块的开头部分,序言性注释通常置于每个程序模块的开头部分,它应当给出程它应当给出程序的整体说明序的整体说明,对于理解程序本身具有引导作用。,对于理解程序本身具有引导作用。序言性注释包括:序言性注释包括:程序标题程序标题;有关本模块有关本模块功能和目的功能和目的的的说明说明;主要算法说明:算法概要、大意主要算法说明:算法概要、大意;接口说明接口说明:包括调用形式,
6、参数描述,子程序清单;:包括调用形式,参数描述,子程序清单;有关数据描述有关数据描述:重要的变量及其用途,约束或限制条件,:重要的变量及其用途,约束或限制条件,以及其它有关信息;以及其它有关信息;模块位置模块位置:在哪一个源文件中,或隶属于哪一个软件包;:在哪一个源文件中,或隶属于哪一个软件包;开发简历开发简历:模块设计者,复审者,复审日期,修改日期及:模块设计者,复审者,复审日期,修改日期及有关说明等。有关说明等。序言性注释 功能性注释嵌在源程序体中,用以描述其后的语句或程序段是功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样,而不要解释在做什
7、么工作,或是执行了下面的语句会怎么样,而不要解释下面怎么做。下面怎么做。要点要点 描述一段程序,而不是每一个语句;描述一段程序,而不是每一个语句;用缩进和空行,使程序与注释容易区别;用缩进和空行,使程序与注释容易区别;注释要正确。注释要正确。例如:例如:/*ADD AMOUNT TO TOTAL ADD AMOUNT TO TOTAL*/TOTAL=AMOUNT TOTAL=AMOUNTTOTALTOTAL 上面注视不清楚,如果注明把月销售额计入年度总额,便使读者理解了上面注视不清楚,如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:下面语句的意图:/*ADD MONTHLY-SA
8、LES TO ANNUAL-TOTAL ADD MONTHLY-SALES TO ANNUAL-TOTAL*/TOTAL=AMOUNT TOTAL=AMOUNTTOTALTOTAL功能性注释 恰当地利用恰当地利用空格空格,可以,可以突出运算的优突出运算的优先性先性,避免发生运算的错误。例如,避免发生运算的错误。例如 ,将表达式将表达式 (A A17)17)ANDNOTANDNOT(B B49)49)ORCORC写成写成 (A A17)17)AND NOTAND NOT(B B49)49)OR COR C 自然的程序段之间可用自然的程序段之间可用空行空行隔开;隔开;移行移行也叫做也叫做向右缩格向
9、右缩格。它是指程序中。它是指程序中的各行不必都在左端对齐,都从第一的各行不必都在左端对齐,都从第一格起排列。这样做使程序完全分不清格起排列。这样做使程序完全分不清层次关系。层次关系。对于对于选择语句选择语句和和循环语句循环语句,把其中的,把其中的程序段语句向右做程序段语句向右做阶梯式移行阶梯式移行。使程。使程序的逻辑结构更加清晰。序的逻辑结构更加清晰。例如,两重选择结构嵌套写成下面的移行形式,层次就清楚得多。IF()THEN IF()THEN ELSE ENDIF ELSE ENDIF 视觉组织:使用空格、空行和移行 数据说明指程序中用到的常量、变量、文件等数据对象的定义。在设计阶段已经确定了
10、数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点:a.数据说明的次序应该标准化。有次序易查阅,能加速测试、调试和维护的过程。b.当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。c.如果设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现这个数据结构的方法和特点。(2)数据说明数据说明的次序 数据说明常量说明 简单变量类型说明 数组说明 公用数据块说明 所有的文件说明 数据类型说明 整型量说明 实型量说明 字符量说明 逻辑量说明数据说明数据说明有次序易查阅,能加速测试、调试和维护的过程。有次序易查阅
11、,能加速测试、调试和维护的过程。变量名按字母顺序排列 b.当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量,便于查找。例如,把integer size,length,width,cost,price 写成 (3)语句构造AI=AIAT;AT=AIAT;AI=AIAT;WORK=AT;AT=AI;AI=WORK;构造语句时应该遵循的原则是,每个语句都应该简单而直接,不能为了提高效率而使程序变得过分复杂;也功能:AT与AI交换数据值未使用中间变量难懂使用中间变量清晰例:语句构造功能:初始化对角单位矩阵1 0 0 00 1 0 00 0 1 0.0 0 0 1 有助于使语句简单明了的规则
12、不要为了节省空间而把多个语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;避免大量使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。例:使用not(!)操作的例子将 if(!(char0|char 9)改成 if(char=0&char 1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce只需设计一个测试用例只需设计一个测试用例:输入数据:输入数据:A=2,B=0,X=4 即达到了语句覆盖。即达到了语句覆盖。语句覆盖是语句覆盖是最弱最弱的逻辑覆盖的逻辑覆盖(如:(如:AND AND 写成写成 OROR,X1 写成写
13、成 X 1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce可设计两组测试用例可设计两组测试用例:A=3,B=0,X=3 可覆盖可覆盖c、d分支分支 A=2,B=1,X=1 可覆盖可覆盖b、e分支分支 两组测试用例可覆盖所有两组测试用例可覆盖所有判定的真假分支判定的真假分支 判定覆盖仍是判定覆盖仍是弱弱的逻辑覆的逻辑覆盖,只覆盖了全部路径的盖,只覆盖了全部路径的一半。一半。773、条件覆盖 使每个判定的每个条件的可能取值至少执行一次。开始开始(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce满足条件满足条件:T1,T
14、1,T2,T2 T3,T3 T4,T4第一判定表达式第一判定表达式:设条件设条件 A1 A1 取真取真 记为记为T1T1 假假 T1T1 条件条件 B=0 B=0 取真取真 记为记为T2T2 假假 T2T2第二判定表达式第二判定表达式:设条件设条件 A=2 A=2 取真取真 记为记为T3T3 假假 T3T3 条件条件 X1 X1 取真取真 记为记为T4T4 假假 T4T478测试用例测试用例 通过通过 满足的满足的 覆盖覆盖A B X 路径路径 条件条件 分支分支1 0 3 abe T1,T2,T3,T4 b,e2 1 1 abe T1,T2,T3,T4 b,e 两个测试用例覆盖了四个条件八种
15、可能取值。两个测试用例覆盖了四个条件八种可能取值。未覆盖未覆盖c、d分支,不满足判定覆盖的要求分支,不满足判定覆盖的要求.条件覆盖不一定包含判定覆盖条件覆盖不一定包含判定覆盖 判定覆盖也不一定包含条件覆盖判定覆盖也不一定包含条件覆盖(A1)AND(B=0)(A=2)OR(X1)X=X/AX=X+1FFTTabdce794.判定/条件覆盖 选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.开始开始(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce满足条件满足条件:T1,T1,T2,T2 T
16、3,T3 T4,T480测试用例测试用例 通过通过 满足的条件满足的条件 覆盖覆盖A B X 路径路径 分支分支2 0 4 ace T1,T2,T3,T4 c,e1 1 1 abd T1,T2,T3,T4 b,d能同时满足判定、条件两种覆盖标准的取值能同时满足判定、条件两种覆盖标准的取值 5、条件组合覆盖、条件组合覆盖所有可能的条件取值组合至少执行一次所有可能的条件取值组合至少执行一次 A1,B=0 A1,B0 A 1,B=0 A 1,B0 A=2,X1 A=2,X 1 A2,X1 A2,X 1测试用例测试用例 通过通过 满足的满足的 覆盖覆盖A B X 路径路径 条件条件 分支分支2 0 4
17、 ace T1,T2,T3,T4 c,e2 1 1 abe T1,T2,T3,T4 b,e1 0 2 abd T1,T2,T3,T4 b,d1 1 1 abd T1,T2,T3,T4 b,d(A1)AND(B=0)(A=2)OR(X1)X=X/AX=X+1FFTTabdce82 以上根据测试数据对源程序以上根据测试数据对源程序语句检测语句检测的详的详尽程度,简单讨论了几种逻辑覆盖标准。在上尽程度,简单讨论了几种逻辑覆盖标准。在上面的分析过程中常常谈到测试数据执行的程序面的分析过程中常常谈到测试数据执行的程序路径,显然,测试数据可以检测的程序路径的路径,显然,测试数据可以检测的程序路径的多少,也
18、反映了对程序测试的详尽程度。从对多少,也反映了对程序测试的详尽程度。从对程序路径的覆盖程度程序路径的覆盖程度分析,能够提出下述一些分析,能够提出下述一些主要的逻辑覆盖标准。主要的逻辑覆盖标准。语句覆盖法评述836.点覆盖 图论中点覆盖的概念定义如下:如果连通图如果连通图G G的子图的子图GG是连通的,而且包含是连通的,而且包含G G的所的所有结点,则称有结点,则称GG是是G G的点覆盖。的点覆盖。在第5章中已经讲述了从程序流程图导出流图的方法。在正常情况下流图是连通的有向图。满足点覆盖标准要求选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次,由于流图的每个结点与一条或多条语句相
19、对应,显然,点覆盖标准和语句覆盖标准是相同的。847.边覆盖 图论中边覆盖的定义是:如果连通图G的子图G是连通的,而且包含G的所有边,则称G是G的边覆盖。为了满足边覆盖的测试标准,要求选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。通常边覆盖和判定覆盖是一致的。8.路径覆盖 路径覆盖的含义是,选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。857.6.2 控制结构测试 1.基本路径测试 2.条件测试 3.循环测试1.基本路径测试 方法概要“基本路径测试”是McCabe提出的基于“程序环形复杂度”来确定程序中路径进行测试的一种控
20、制结构测试方法,属于白盒测试技术。设计测试用例时,先计算程序的环形复杂度,以环形复杂度为指南,定义执行路径的基本集合,然后从该基本集合导出测试用例。覆盖能力 所设计出的测试用例可保证程序中的每一条语句至少执行一次(语句覆盖),且每个条件语句在执行时分别取真、假值至少一次(判定覆盖、或条件覆盖(如果拆成元条件)。87基本路径测试步骤1.根据过程设计结果转化成程序相应的流图按照教材6.4节中的方法。2.计算程序流图的环路复杂度由于程序流图的“环路复杂度”=程序“独立路径基本集”中的独立路径条数,这可确保程序中每个边至少经过一次测试所必需的测试用例数目的上界。3.确定线性独立路径的基本集合按照图论,
21、一条独立路径至少包含有一条在其他独立路径中从未有过的边。在程序流图中,一条独立路径至少包含有一条在其他独立路径中从未出现过的新语句或新条件。4.设计可强制执行基本基本集合中每条路径的测试用例根据判断结点给出的条件,选择适当的数据以保证每一条路径可以被测试到 用逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、等)的方法。例:求平均值过程第一步:画流图 PROCEDURE average /*该过程计算不超过100个在规定值域内的有效数字的平均值;同时计算有效数字的总和和个数;*/INTERFACE RETURES average,total.input,total.valid;INTERFACE ACC
22、EPTS value,minimum,maximum;TYPE value1100 IS SCALAR ARRAY;TYPE average,total.input,total.valid;minimum,maximum,sum IS SCALAR;TYPE i IS INTERGE;1 i=1;total.input=total.valid=0;sum=0;2,3 DO WHILE valuei-999 AND total.inputminimum AND valuei011 THEN average=sum/total.valid;12 ELSE average=-999;13 ENDIF
23、 END average图7.6 求平均值过程的流图求平均值过程的PDL例:求平均值过程第二步:求环形复杂度环形复杂度=边数-节点数+2=17-13+2 =6例:求平均值过程第三步:求独立路径集由于环形复杂度为6,因此最多有6条独立路径:路径1:1-2-10-11-13路径2:1-2-10-12-13路径3:1-2-3-10-11-13路径4:1-2-3-4-5-8-9-2-路径5:1-2-3-4-5-6-8-9-2-路径6:1-2-3-4-5-6-7-8-9-2-注意:下一条路径应至少包含前面路径中没有出现的一条新边。例:求平均值过程第四步:设计测试用例路径1:1-2-10-11-13输入:
24、valuek=有效输入ki;valuei=-999,2=i=100。预期结果:k个有效输入的正确的平均值和总和。路径2:1-2-10-12-13输入:value1=-999预期结果:average=-999,其他保持初始值。即0个有效输入值。路径3:1-2-3-10-11-13输入:valuei=有效输入,1=i 100,即有效输入多于100个。预期结果:前100个有效输入的正确的平均值和总和。路径4:1-2-3-4-5-8-9-2-输入:valuei=有效输入,i100;valuekminimum,ki。即有值过小的无效输入。预期结果:滤除了过小值的正确的平均值和总和路径5:1-2-3-4-
展开阅读全文