软件工程ppt第七章实现课件.ppt
《软件工程ppt第七章实现课件.ppt》由会员分享,可在线阅读,更多相关《软件工程ppt第七章实现课件.ppt(128页珍藏版)》请在三一办公上搜索。
1、SOFTWARE ENGINEERING,第7章 实现,实现,包括编码和测试两个阶段编码:把软件设计的结果翻译成计算机可以“理解”的形式用某种程序设计语言书写的程序。程序的质量取决于软件设计的质量和选用的程序设计语言的特点及编码风格。软件测试对软件可靠性影响巨大。测试的目的: 在软件投入生产性运行之前,尽可能多地发现软件中的错误。软件测试:单元测试和综合测试。通常占软件开发总工作量的40%,SOFTWARE ENGINEERING,SOFTWARE ENGINEERING,7.1 编码,7.1.1 选择程序设计语言编码前的一项重要工作就是选择一种适当的程序设计语言。程序设计语言分类:汇编语言
2、高级语言语言选择的目标:使根据设计去完成编码时困难最小;需要的程序测试量较小;得出的程序容易阅读和维护。,SOFTWARE ENGINEERING,7.1 编码,语言选择的实用标准:系统用户的要求。 - 用户熟悉的语言可以使用的编译环境可以得到的软件工具工程规模 -过大,可以自己设计一个专用语言程序员的知识软件可移植性要求软件的应用领域,适用各类应用领域的语言,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格(1)好程序的标准:简明清晰、易读易懂。为了得到好程序需遵循的规则:A 程序内部的文档:标志符:文件名、变量名、常量名、函数名、数组名、子程序名、类型名等用户
3、定义的名称的总称。要选用含义鲜明的名字,若缩写,缩写规则要一致,给每个名字加注释。注释:程序员与程序读者之间通信的重要手段。(模块的注释和语句的注释)视觉组织:源程序清单的布局对程序的可读性影响很大。(阶梯形式使程序的层次结构清晰),【注释规范】,一、函数 在函数开头,用如下格式注释: /*/ /* Function: DelStringFromString */ /* 从一个String删除另一个String。 */ /* 参数:strByDelete,strToDelete */ /* strByDelete: 被删除的字符串(原来的字符串)*/ /* strToDelete: 要从上个字
4、符串中删除的字符串。*/ /* 返回:找到并删除返回0,否则返回-1. */ /*/,【编程风格】,main() int i,j; . for (i=0;i100;i+) . . if (i=0) . . . . . ,一、严格采用梯形层次对应好各层次(锯齿形风格) 。如右图所示:,【编程风格】,. On Error Goto errHandle . Exit Sub errHandle: Select Case Err Case 1: . Case 2: . Case Else: . End Select End Sub,对于通用的错误处理,可建立通用的错误处理函数,处理常见的通用的错误。,
5、错误处理代码一般放在函数末尾,如下(以VB程序为例):,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格B 数据说明:数据说明次序标准化;(例按找数据结构或类型确定次序)当多个变量名在同一个语句中说明时,应该按字母顺序排列这些变量;对于一个复杂的数据结构,则应加注释。C 语句构造:不要为了节省空间而将多条语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;避免大量使用循环嵌套、条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格 D. 输入/输出对所有输入数据
6、都进行检验;检查输入项重要组合的合法性;保持输入格式简单;使用数据结束标记,不要要求用户指定数据的数目;明确提示交互式输入的请求,详细说明可用的选择或边界数值;当程序设计语言对格式有严格要求时,应保持输入格式一致。设计良好的输出报表;给所有输出数据加标志。,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格 E. 效率:指程序执行速度的快慢和程序占用存储空间的大小。效率是性能的要求;(分析阶段就已确定效率方面的要求)效率是靠好设计提高的;与程序的简单程度是一致的。三方面:程序运行时间;(尽量避免使用多维数组、指针、复杂的表等)存储器效率使用能够保持功能域的结构化控制
7、结构,是提高效率的好方法;输入/输出的效率。 (用户易理解),7.2 软件测试,所谓软件测试是通过检查和提供客观证据表明软件已经满足规定的需求。软件测试是确保软件质量和降低软件成本的重要手段,是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节。本章将重点讨论测试的策略与技术,纠错的策略与技术,以及多模块软件的软件测试内容与方法。,SOFTWARE ENGINEERING,7.2 软件测试基础,目的 在软件投入生产性运行之前,尽可能多的发现软件中的错误,并及时改正它们。测试过程,7.2.1 软件测试的目标测试的目标或定义:为了发现程序中的错误而执行程序的过程。好的测试方案是极可能
8、发现迄今为止尚未发现的错误的方案成功的测试是发现了至今为止尚未发现的错误的测试,SOFTWARE ENGINEERING,E.W.Dijkstra 指出:“程序测试能证明错误的存在,但不能证明错误不存在.” 测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错.,把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的. 软件测试要设法使软件发生故障,暴露软件错误 测试的“成功”与“失败” 能够发现错误的测试是成功的测试,否则是失败的测试。,7.2 .1测试原则(1)所有的测试都应追溯到用户需求 最严重的错误(从用户角度)是那些导致
9、软件无法满足需求的错误。,测试与开发前期工作的关系,决定软件与系统的配合关系,需求分析,概要设计,详细设计,编 码,单元测试,集成测试,系统测试,验收测试,软件生存期各阶段间需保持的正确性,开发前期出现错误的扩展,软件测试不等于程序测试 软件测试应贯穿于软件定义与开发的整个期间; 据美国一家公司统计,查出的软件错误中,属于需求分析和软件设计的错误约占 64%,属于程序编写的错误仅占 36%。程序编写的许多错误是“先天的”。,(2)应该远在测试开始之前就制定出测试计划。完成需求模型就可以制定测试计划,在建立了设计模型之后就可以开始设计详细的测试方案。,测试原则,(3)pareto原则:测试发现的
10、错误中80%很可能起源于20%的模块中。应孤立这些疑点模块重点测试。(4) 应该从“小规模”测试开始,并逐步进行“大规模”测试。(5)穷举测试是不可能的。(6)应由独立的第三方来构造测试。 (开发和测试队伍分别建立),测试原则,测试原则,例:测试计算器程序加法测试1+0=1+99999999999999999999999999999999=2+0=2+99999999999999999999999999999999=99999999999999999999999999999999+99999999999999999999999999999999=1.0+0.1=1.0+0.2=减法测试乘法测试
11、除法测试求平方根百分数倒数,程序测试举例例:程序 Triangle, 输入三个整 数,表示一个三角形的三个边 长,该程序产生一个结果,指 出该三角形是等边三角形、等 腰三角形还是不等边三角形。,判断三角型的测试用例设计: 输入数据 预期结果(1) 6;6;6 等边(2) 8;8;4 等腰(3) 4;5;6 一般 还应输入非法数据: 0; 7; 9 -7;3; 5 a; 2; 7 等,软件测试信息流,软件配置,测试,测试配置,测试工具,结果分析,排错,可靠性 分析,测试结果,错误,预期结果,出错率,改正的软件,预测的可靠性,需求规格说明书软件设计说明书 被测源程序,测试计划 测试用例(测试数据)
12、测试驱动程序,7.2.4 测试步骤,测试的层次性 单元(模块)测试综合(集成)测试子系统测试,系统测试系统测试验收测试平行运行程序错误的类型 语法错误 结构性错误 功能性错误 接口错误,层次测试的信息流,编码,测试,验收,SOFTWARE ENGINEERING,(1)模块测试: 目的是保证每个模块作为一个单元能正确运行,所以又称单元测试, 发现:编码和详细设计阶段的错误。(2)子系统测试: 把经过单元测试的模块放在一起形成一个子系统来测试,着重测试模块的接口。(3)系统测试: 把经过测试的子系统装配成一个完整的系统来测试。 发现:软件设计、需求说明中的错误。(4)验收测试: 把软件系统作为单
13、一的实体进行测试。 发现:系统需求说明书中的错误。(5)平行运行: 同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。,7.2.4 测试的步骤,SOFTWARE ENGINEERING,7.3 单元测试,7.3.1测试重点:(1)模块接口: (对于所有的输入数据均能校验,对于合法的数据正常使用,对于非法的数据不能不予理睬,应发出提示信息。)(2)局部的数据结构:(3)重要的执行通路:(4)出错处理通路:(5)影响上述各方面特性的边界条件。,单元测试实施步骤,实施步骤1、编译2、静态分析器检查3、代码评审4、计算机测试测试驱动软件测试存根软件(桩模块) 在确定测试用例
14、的同时,应给出对应的期望结果。 应为测试模块开发一个驱动模块(driver)和(或)若干个存根软件(stub)。,7.3.2 代码审查,组成审查小组(通常4人)对源程序进行人工测试。通常可以查出30%70%的逻辑设计错误和编码错误审查小组构成:组长,一个很有能力的程序员,但没有直接参与这项工程程序的设计者程序的编写者程序的测试者 工作方式设计者介绍,编写者解释程序,其他人倾听,发现错误,组长记录预排,一个人扮演“测试者”,其他扮演“计算机”,给出测试方案,“计算机”执行,测试用例起到促进思考引发讨论的作用。发现错误,记录,SOFTWARE ENGINEERING,SOFTWARE ENGINE
15、ERING,7.3.2 代码审查,人工测试与机器测试的区别:人工测试可以在一次测试中发现多个错误以后慢慢加以改正;机器测试一次只发现一个错误并加以改正;人工测试可以分配给不同人员,机器测试限用机器台数,前后可能受牵制;从速度上,人工测试好于机器测试。,7.3.3 计算机测试,考虑到被测模块与其它模块的联系,因此测试时需要使用两类辅助模块来模拟其他模块。,驱动软件(driver) 模拟主程序功能,用于向被测模块传递数据,接收、打印从被测模块返回的数据。,存根软件(stub) 又称为假模块,用于模拟那些由被测模块所调用的下属模块功能。,SOFTWARE ENGINEERING,SOFTWARE E
16、NGINEERING,7.4 集成测试,测试内容:(1)不正确的接口;(2)因存取全局数据引起的块间干扰;(3)不能接受的误差积累。集成的策略(1)非渐增测试 先分别测试每个模块,再把所有模块按设计要求放在一起,结合成所要的程序,这种方法称为非渐增测试。,SOFTWARE ENGINEERING,8.3 集成测试,(2)渐增测试 把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增测试。,SOFTWARE ENGINEERING,非渐增测试与渐增测试比较,非渐增测试:-分别测试每个模块需要编写的测试软件多
17、,工作量大。-最终组合发现问题难定位。-并行测试所有模块,能充分利用人力,加快工程进度。渐增测试:-利用已测试过的模块作为部分测试软件,开销小-较早发现接口问题。-新、旧模块同时测试,旧模块在新的条件下受到新的检验,测试更彻底。,集成(组装)测试步骤,自顶向下测试 先广后深实施步骤 先深后广实施步骤 由底向上测试 混合方式测试(sandwich testing),SOFTWARE ENGINEERING,自顶向下结合: 从主控制模块(“主程序”)开始,沿着软件的控制层次向下移动,从而逐渐把每个模块结合起来。,SOFTWARE ENGINEERING,深度优先的结合方法:先组装在软件结构的一条主
18、控制通路上的所有模块。宽度优先的结合方法:沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。,自顶而下增值,M1,M4,M3,M2,M6,M5,程序模块示意图,S5,M1,S1,S1,S1,S2,S2,S2,S3,S3,S3,第一步,测试主控模块M1设计桩模块S1、S2、S3,模拟被M1调用的M2、M3、M4。,M2,M3,M4,第二步,依次用M2、M3、M4替代桩模块S1、S2、S3,每替代一次进行一次测试。,S4,S4,S4,S5,S5,第三步,对由主控模块M1和模块M2、M3、M4构成的子系统进行测试,设计桩模块S4、S5。,M5,M6,第四步,依次用模块M5和M6替代桩模
19、块S4、S5,并同时进行新的测试。组装测试完毕。,SOFTWARE ENGINEERING,自底向上结合: 从“原子”模块(即在软件结构最底层的模块)开始组装和测试。,确定集成过程的原则,自顶而下方法优缺点(与自底向上相反)优点:在早期实现并验证系统的功能。缺点:需要桩模块、回归测试、人员利用率底,混合策略,常见的混合策略:改进的自顶而下早期先用自底而上测试关键模块,再自顶而下集成总系统。混合法对较上层使用自顶而下,对较下层使用自底而上.,SOFTWARE ENGINEERING,7.5 验收测试,验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,它与系统测试的主要区别是:
20、在用户的积极参与下进行;使用现场数据;软件配置复查。,7.5 验收测试(validation testing),任务 其任务是验证系统的功能、性能等特性是否符合需求规格说明。,选择测试人员,选择测试用例,实际运行测试,软件计划,用户文档,开发文档,源程序文本,支持环境,有效性测试,软件配置审查,管理机构裁决,专家鉴定会,交用户,运行维护,测试报告,软件配置,测试和测试,测试 用户在开发者的场所进行,开发者对用户进行指导.测试 最终用户在客户场所进行,开发者不在现场.,8.4 主要测试技术,静态分析(不执行程序),动态分析(执行程序),程序测试,代码会审,走 查,动态测试名称,黑盒测试白盒测试单
21、元测试集成测试功能测试验收测试端到端测试健全测试衰竭测试接受测试回归测试系统测试,负载测试强力测试性能测试可用性测试安装/卸载测试恢复测试兼容测试安全测试比较测试Alpha测试Beta测试,静态和动态测试,汽车的检查过程:踩油门看车漆打开前盖检查发动汽车听听发动机声音上路行使,静态测试,动态测试,静态测试:基本特征是在对软件进行 分析、检查和审阅,不实 际运行被测试的软件。 静态测试约可找出3070%的逻辑设计错误. 对需求规格说明书、软件设计说明书、源程序做检查和审阅,包括:是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件 缺陷;,动态测试:通过运行软件来检验软件的动态行为和运行
22、结果的正确性动态测试的两个基本要素: 被测试程序 测试数据(测试用例),动态黑盒测试 闭着眼睛测试软件,软件,输入,不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。,输出,动态白盒测试 带上X光眼镜测试软件,?,3581322.293419985680302829734315,250*(1+0.015)*(1+0.015)360-1)/0.015,250*(1+0.015)*(1+0.015)360-1)/0.015,假如知道一个盒子包含一台计算机,而另一个盒子是人用纸笔计算,就会选择不同的测试用例,了解软件的运作方式会影响测试手段,测试的文档,测试计划 测试项目的名称各
23、项测试的目的、步骤和进度测试用例的设计 测试报告测试项目名称实测结果与期望结果的比较发现的问题测试达到的效果,设计测试方案的目标选用最少量的测试数据,作到尽可能完备的测试.好的测试方案是发现了迄今为止,尚未发现的错误的测试方案.测试方案包括预定要测试的功能,应该输入的测试数据和预期的结果。测试用例以发现错误为目的而精心设计的彝族测试数据。测试用例=输入数据+期望结果,SOFTWARE ENGINEERING,7.6 白盒测试,被测对象基本上是源程序,以程序的内部逻辑结构为基础设计测试用例。原则是: 保证被测程序中每一条独立的路径至少执行一次。 保证所有判断的每一分支至少执行一次。 保证每一循环
24、都在边界条件和一般条件下至少各执行一次。 验证所有各内部数据结构的有效性。,逻辑复盖,语句覆盖:选择足够多的测试数据,使被测程序中每个语句至少执行一次。判定覆盖:又叫分支覆盖,不仅每个语句至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。判定/条件覆盖:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。条件组合覆盖:选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。,SOF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程ppt第七章 实现课件 软件工程 ppt 第七 实现 课件
链接地址:https://www.31ppt.com/p-1786848.html