欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件工程ppt第七章实现课件.ppt

    • 资源ID:1786848       资源大小:1.87MB        全文页数:128页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件工程ppt第七章实现课件.ppt

    SOFTWARE ENGINEERING,第7章 实现,实现,包括编码和测试两个阶段编码:把软件设计的结果翻译成计算机可以“理解”的形式用某种程序设计语言书写的程序。程序的质量取决于软件设计的质量和选用的程序设计语言的特点及编码风格。软件测试对软件可靠性影响巨大。测试的目的: 在软件投入生产性运行之前,尽可能多地发现软件中的错误。软件测试:单元测试和综合测试。通常占软件开发总工作量的40%,SOFTWARE ENGINEERING,SOFTWARE ENGINEERING,7.1 编码,7.1.1 选择程序设计语言编码前的一项重要工作就是选择一种适当的程序设计语言。程序设计语言分类:汇编语言 高级语言语言选择的目标:使根据设计去完成编码时困难最小;需要的程序测试量较小;得出的程序容易阅读和维护。,SOFTWARE ENGINEERING,7.1 编码,语言选择的实用标准:系统用户的要求。 - 用户熟悉的语言可以使用的编译环境可以得到的软件工具工程规模 -过大,可以自己设计一个专用语言程序员的知识软件可移植性要求软件的应用领域,适用各类应用领域的语言,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格(1)好程序的标准:简明清晰、易读易懂。为了得到好程序需遵循的规则:A 程序内部的文档:标志符:文件名、变量名、常量名、函数名、数组名、子程序名、类型名等用户定义的名称的总称。要选用含义鲜明的名字,若缩写,缩写规则要一致,给每个名字加注释。注释:程序员与程序读者之间通信的重要手段。(模块的注释和语句的注释)视觉组织:源程序清单的布局对程序的可读性影响很大。(阶梯形式使程序的层次结构清晰),【注释规范】,一、函数 在函数开头,用如下格式注释: /*/ /* Function: DelStringFromString */ /* 从一个String删除另一个String。 */ /* 参数:strByDelete,strToDelete */ /* strByDelete: 被删除的字符串(原来的字符串)*/ /* strToDelete: 要从上个字符串中删除的字符串。*/ /* 返回:找到并删除返回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,对于通用的错误处理,可建立通用的错误处理函数,处理常见的通用的错误。,错误处理代码一般放在函数末尾,如下(以VB程序为例):,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格B 数据说明:数据说明次序标准化;(例按找数据结构或类型确定次序)当多个变量名在同一个语句中说明时,应该按字母顺序排列这些变量;对于一个复杂的数据结构,则应加注释。C 语句构造:不要为了节省空间而将多条语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;避免大量使用循环嵌套、条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格 D. 输入/输出对所有输入数据都进行检验;检查输入项重要组合的合法性;保持输入格式简单;使用数据结束标记,不要要求用户指定数据的数目;明确提示交互式输入的请求,详细说明可用的选择或边界数值;当程序设计语言对格式有严格要求时,应保持输入格式一致。设计良好的输出报表;给所有输出数据加标志。,SOFTWARE ENGINEERING,7.1 编码,7.1.2 编码的风格 E. 效率:指程序执行速度的快慢和程序占用存储空间的大小。效率是性能的要求;(分析阶段就已确定效率方面的要求)效率是靠好设计提高的;与程序的简单程度是一致的。三方面:程序运行时间;(尽量避免使用多维数组、指针、复杂的表等)存储器效率使用能够保持功能域的结构化控制结构,是提高效率的好方法;输入/输出的效率。 (用户易理解),7.2 软件测试,所谓软件测试是通过检查和提供客观证据表明软件已经满足规定的需求。软件测试是确保软件质量和降低软件成本的重要手段,是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节。本章将重点讨论测试的策略与技术,纠错的策略与技术,以及多模块软件的软件测试内容与方法。,SOFTWARE ENGINEERING,7.2 软件测试基础,目的 在软件投入生产性运行之前,尽可能多的发现软件中的错误,并及时改正它们。测试过程,7.2.1 软件测试的目标测试的目标或定义:为了发现程序中的错误而执行程序的过程。好的测试方案是极可能发现迄今为止尚未发现的错误的方案成功的测试是发现了至今为止尚未发现的错误的测试,SOFTWARE ENGINEERING,E.W.Dijkstra 指出:“程序测试能证明错误的存在,但不能证明错误不存在.” 测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错.,把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的. 软件测试要设法使软件发生故障,暴露软件错误 测试的“成功”与“失败” 能够发现错误的测试是成功的测试,否则是失败的测试。,7.2 .1测试原则(1)所有的测试都应追溯到用户需求 最严重的错误(从用户角度)是那些导致软件无法满足需求的错误。,测试与开发前期工作的关系,决定软件与系统的配合关系,需求分析,概要设计,详细设计,编 码,单元测试,集成测试,系统测试,验收测试,软件生存期各阶段间需保持的正确性,开发前期出现错误的扩展,软件测试不等于程序测试 软件测试应贯穿于软件定义与开发的整个期间; 据美国一家公司统计,查出的软件错误中,属于需求分析和软件设计的错误约占 64%,属于程序编写的错误仅占 36%。程序编写的许多错误是“先天的”。,(2)应该远在测试开始之前就制定出测试计划。完成需求模型就可以制定测试计划,在建立了设计模型之后就可以开始设计详细的测试方案。,测试原则,(3)pareto原则:测试发现的错误中80%很可能起源于20%的模块中。应孤立这些疑点模块重点测试。(4) 应该从“小规模”测试开始,并逐步进行“大规模”测试。(5)穷举测试是不可能的。(6)应由独立的第三方来构造测试。 (开发和测试队伍分别建立),测试原则,测试原则,例:测试计算器程序加法测试1+0=1+99999999999999999999999999999999=2+0=2+99999999999999999999999999999999=99999999999999999999999999999999+99999999999999999999999999999999=1.0+0.1=1.0+0.2=减法测试乘法测试除法测试求平方根百分数倒数,程序测试举例例:程序 Triangle, 输入三个整 数,表示一个三角形的三个边 长,该程序产生一个结果,指 出该三角形是等边三角形、等 腰三角形还是不等边三角形。,判断三角型的测试用例设计: 输入数据 预期结果(1) 6;6;6 等边(2) 8;8;4 等腰(3) 4;5;6 一般 还应输入非法数据: 0; 7; 9 -7;3; 5 a; 2; 7 等,软件测试信息流,软件配置,测试,测试配置,测试工具,结果分析,排错,可靠性 分析,测试结果,错误,预期结果,出错率,改正的软件,预测的可靠性,需求规格说明书软件设计说明书 被测源程序,测试计划 测试用例(测试数据)测试驱动程序,7.2.4 测试步骤,测试的层次性 单元(模块)测试综合(集成)测试子系统测试,系统测试系统测试验收测试平行运行程序错误的类型 语法错误 结构性错误 功能性错误 接口错误,层次测试的信息流,编码,测试,验收,SOFTWARE ENGINEERING,(1)模块测试: 目的是保证每个模块作为一个单元能正确运行,所以又称单元测试, 发现:编码和详细设计阶段的错误。(2)子系统测试: 把经过单元测试的模块放在一起形成一个子系统来测试,着重测试模块的接口。(3)系统测试: 把经过测试的子系统装配成一个完整的系统来测试。 发现:软件设计、需求说明中的错误。(4)验收测试: 把软件系统作为单一的实体进行测试。 发现:系统需求说明书中的错误。(5)平行运行: 同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。,7.2.4 测试的步骤,SOFTWARE ENGINEERING,7.3 单元测试,7.3.1测试重点:(1)模块接口: (对于所有的输入数据均能校验,对于合法的数据正常使用,对于非法的数据不能不予理睬,应发出提示信息。)(2)局部的数据结构:(3)重要的执行通路:(4)出错处理通路:(5)影响上述各方面特性的边界条件。,单元测试实施步骤,实施步骤1、编译2、静态分析器检查3、代码评审4、计算机测试测试驱动软件测试存根软件(桩模块) 在确定测试用例的同时,应给出对应的期望结果。 应为测试模块开发一个驱动模块(driver)和(或)若干个存根软件(stub)。,7.3.2 代码审查,组成审查小组(通常4人)对源程序进行人工测试。通常可以查出30%70%的逻辑设计错误和编码错误审查小组构成:组长,一个很有能力的程序员,但没有直接参与这项工程程序的设计者程序的编写者程序的测试者 工作方式设计者介绍,编写者解释程序,其他人倾听,发现错误,组长记录预排,一个人扮演“测试者”,其他扮演“计算机”,给出测试方案,“计算机”执行,测试用例起到促进思考引发讨论的作用。发现错误,记录,SOFTWARE ENGINEERING,SOFTWARE ENGINEERING,7.3.2 代码审查,人工测试与机器测试的区别:人工测试可以在一次测试中发现多个错误以后慢慢加以改正;机器测试一次只发现一个错误并加以改正;人工测试可以分配给不同人员,机器测试限用机器台数,前后可能受牵制;从速度上,人工测试好于机器测试。,7.3.3 计算机测试,考虑到被测模块与其它模块的联系,因此测试时需要使用两类辅助模块来模拟其他模块。,驱动软件(driver) 模拟主程序功能,用于向被测模块传递数据,接收、打印从被测模块返回的数据。,存根软件(stub) 又称为假模块,用于模拟那些由被测模块所调用的下属模块功能。,SOFTWARE ENGINEERING,SOFTWARE ENGINEERING,7.4 集成测试,测试内容:(1)不正确的接口;(2)因存取全局数据引起的块间干扰;(3)不能接受的误差积累。集成的策略(1)非渐增测试 先分别测试每个模块,再把所有模块按设计要求放在一起,结合成所要的程序,这种方法称为非渐增测试。,SOFTWARE ENGINEERING,8.3 集成测试,(2)渐增测试 把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增测试。,SOFTWARE ENGINEERING,非渐增测试与渐增测试比较,非渐增测试:-分别测试每个模块需要编写的测试软件多,工作量大。-最终组合发现问题难定位。-并行测试所有模块,能充分利用人力,加快工程进度。渐增测试:-利用已测试过的模块作为部分测试软件,开销小-较早发现接口问题。-新、旧模块同时测试,旧模块在新的条件下受到新的检验,测试更彻底。,集成(组装)测试步骤,自顶向下测试 先广后深实施步骤 先深后广实施步骤 由底向上测试 混合方式测试(sandwich testing),SOFTWARE ENGINEERING,自顶向下结合: 从主控制模块(“主程序”)开始,沿着软件的控制层次向下移动,从而逐渐把每个模块结合起来。,SOFTWARE ENGINEERING,深度优先的结合方法:先组装在软件结构的一条主控制通路上的所有模块。宽度优先的结合方法:沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。,自顶而下增值,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替代桩模块S4、S5,并同时进行新的测试。组装测试完毕。,SOFTWARE ENGINEERING,自底向上结合: 从“原子”模块(即在软件结构最底层的模块)开始组装和测试。,确定集成过程的原则,自顶而下方法优缺点(与自底向上相反)优点:在早期实现并验证系统的功能。缺点:需要桩模块、回归测试、人员利用率底,混合策略,常见的混合策略:改进的自顶而下早期先用自底而上测试关键模块,再自顶而下集成总系统。混合法对较上层使用自顶而下,对较下层使用自底而上.,SOFTWARE ENGINEERING,7.5 验收测试,验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,它与系统测试的主要区别是:在用户的积极参与下进行;使用现场数据;软件配置复查。,7.5 验收测试(validation testing),任务 其任务是验证系统的功能、性能等特性是否符合需求规格说明。,选择测试人员,选择测试用例,实际运行测试,软件计划,用户文档,开发文档,源程序文本,支持环境,有效性测试,软件配置审查,管理机构裁决,专家鉴定会,交用户,运行维护,测试报告,软件配置,测试和测试,测试 用户在开发者的场所进行,开发者对用户进行指导.测试 最终用户在客户场所进行,开发者不在现场.,8.4 主要测试技术,静态分析(不执行程序),动态分析(执行程序),程序测试,代码会审,走 查,动态测试名称,黑盒测试白盒测试单元测试集成测试功能测试验收测试端到端测试健全测试衰竭测试接受测试回归测试系统测试,负载测试强力测试性能测试可用性测试安装/卸载测试恢复测试兼容测试安全测试比较测试Alpha测试Beta测试,静态和动态测试,汽车的检查过程:踩油门看车漆打开前盖检查发动汽车听听发动机声音上路行使,静态测试,动态测试,静态测试:基本特征是在对软件进行 分析、检查和审阅,不实 际运行被测试的软件。 静态测试约可找出3070%的逻辑设计错误. 对需求规格说明书、软件设计说明书、源程序做检查和审阅,包括:是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件 缺陷;,动态测试:通过运行软件来检验软件的动态行为和运行结果的正确性动态测试的两个基本要素: 被测试程序 测试数据(测试用例),动态黑盒测试 闭着眼睛测试软件,软件,输入,不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。,输出,动态白盒测试 带上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,假如知道一个盒子包含一台计算机,而另一个盒子是人用纸笔计算,就会选择不同的测试用例,了解软件的运作方式会影响测试手段,测试的文档,测试计划 测试项目的名称各项测试的目的、步骤和进度测试用例的设计 测试报告测试项目名称实测结果与期望结果的比较发现的问题测试达到的效果,设计测试方案的目标选用最少量的测试数据,作到尽可能完备的测试.好的测试方案是发现了迄今为止,尚未发现的错误的测试方案.测试方案包括预定要测试的功能,应该输入的测试数据和预期的结果。测试用例以发现错误为目的而精心设计的彝族测试数据。测试用例=输入数据+期望结果,SOFTWARE ENGINEERING,7.6 白盒测试,被测对象基本上是源程序,以程序的内部逻辑结构为基础设计测试用例。原则是: 保证被测程序中每一条独立的路径至少执行一次。 保证所有判断的每一分支至少执行一次。 保证每一循环都在边界条件和一般条件下至少各执行一次。 验证所有各内部数据结构的有效性。,逻辑复盖,语句覆盖:选择足够多的测试数据,使被测程序中每个语句至少执行一次。判定覆盖:又叫分支覆盖,不仅每个语句至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。判定/条件覆盖:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。条件组合覆盖:选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。,SOFTWARE ENGINEERING,白盒测试,逻辑复盖测试法(logic coverage testing) 用流程图来设计测试用例 逻辑覆盖测试的5种标准,条件组合覆盖,主要用于测试选择结构。 语句覆盖: 每个语句至少执行一次。 Test case : A=2 , B=0 , X=4. 问题:若AND错 写为OR,或X1 错写为X1,则错 误无法由上例测出。,(1)语句覆盖, 每个判定的每个分支至少执行一次 Test cases: A=3 , B=0 , X=1 A=2 , B=1 , X=1 问题:若X1错写为X1,仍然无法被测出,(2)判定覆盖:,(3)条件覆盖,(3)条件覆盖,测试用例 通过 满足的 覆盖A B X 路径 条件 分支1 0 3 abe T1,T2,T3,T4 b,e2 1 1 abe T1,T2,T3,T4 b,e,a,b,c,d,e,两个测试用例覆盖了四个条件八种可能取值。未覆盖c、d分支,不满足判定覆盖的要求.,(4)判定/条件 覆盖,满足条件: T1,T1, T2,T2 T3,T3 T4,T4,选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.,(4)判定/条件 覆盖,测试用例 通过 满足的 覆盖A B X 路径 条件 分支2 0 4 ace T1,T2,T3,T4 c,e1 1 1 abd T1,T2,T3,T4 b,d 能同时满足判定、条件两种覆盖标准。取值。,每个判定表达式中条件的各种可能组合都至少出现一次。 全部可能的条件组合为: A1, B=0 A1, B 0 A1, B=0 A1, B 0 A=2, X1 A=2, X 1 A 2, X1 A 2,X 1 Test cases: A=2, B=0, X=4 (T T) A=2 , B=1, X=1 (F T) A=1, B=0, X=2 (F T) A=1, B=1, X=1 (F F) 问题:没有测试到(T F)的路径,(5)条件组合覆盖:,(6)路径测试法,路径测试法(path testing)着眼于程序执行路径的测试方法 点覆盖边覆盖路径覆盖,7.6.2 控制结构测试,常用方式:基本路径测试基本路径测试步骤:1. 根据过程设计结构画出相应的流图 如何程序流程图流图的转换?2. 计算流图的环形复杂度 p1373. 确定线性独立路径的基本集合 独立路径:指至少引入程序的一个新处理语句集合或一个新条件的路径,用流图术语描述,独立路径至少包含一条在定义该路径之前不曾用过的边。 程序的环形复杂度决定了程序中独立路径的数量。它是确保独立路径至少被执行一次所需测试数据的上界。4. 设计可强制执行基本集合中每条路径的测试用例,SOFTWARE ENGINEERING,流程图对应的程序图,注意:结点2、3和4、5还有9和10,转换时注意: 一条边必须终止于一个结点,在选择结构中分支汇聚处即使无语句也应有一个汇聚结点。 如果判断中的条件 表达式是复合条件, 则需改为一系列只有 单个条件的嵌套判断。 如右图所示:,例:用基本路径测试方法对以下的程序(伪码描述) 设计用例。Sort for (i=1; iaj) k=j endfor if ( k!=i ) swap(ai,ak) endfor endSort,Path1: 1-7 Path2: 1-2-5-1-7 Path3: 1-2-5-6-1-7 Path4: 1-2-3-2-5-1-7 Path5: 1-2-3-4-2-5-6-1-7设计用例: 输入 预期输出结果 通过路径 n=1 排序表中只有一个数 Path1 n2且输入表 已排序的输出表 Path4 中已排序 n2且输入表 已排序的输出表 Path5 中未排序 Path2和Path3无法单独测试,但已包含在Path4和Path5中 测试过了。,SOFTWARE ENGINEERING,基本路径测试例题,求平均值过程的流图,8.4.1 黑盒测试,被测对象是功能独立的模块或构件,注重测试软件的功能需求。试图发现以下几类错误: 不正确或遗漏的功能; 接口错误; 数据结构或外部数据库访问错误; 性能错误; 初始化和终止条件错误。 几种具体的方法: (1)等价类划分 (2)边界值分析 (3)错误推测 (4)使用判定表,黑盒测试(等价类划分),主要思想: 根据被测对象的功能说明和输入域,按合理的或不合理划分为若干等价类,为每个等价类设计一个测试用例,这样大大减少测试次数,提高测试效率。,如何划分等价类?有效等价类(合理等价类)无效等价类(不合理等价类) 划分等价类的标准:覆盖不相交代表性,等价类划分该方法步骤如下:,1.划分等价类为每个等价类编号 对被测程序功能说明的输入域划分等价类。以下是一些原则或经验: 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类. 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类. 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类. 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下, 则应再将该等价类进一步的划分为更小的等价类. 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价 类(符合规则)和若干个无效等价类(从不同角度违反规则),2.设计一个测试用例,使其尽可能多地覆盖尚未被覆盖的合理等价类,重复这一步直到所有合理等价类都被覆盖。3. 设计一个测试用例,使其只覆盖一个尚未被覆盖的不合理等价类,重复这一步直到所有不合理等价类都被覆盖。,等价类划分,例:设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的日期检查功能。,划分等价类如下并为每个等价类编号, 设计测试用例覆盖所有的有效等价类测试数据 期望结果 覆盖的有效等价类200211 输入有效 、 为每一个无效等价类设计一个测试用例 测试数据 期望结果 覆盖的无效等价类95June 无效输入 20036 无效输入2001006无效输入 198912 无效输入 206401 无效输入200100 无效输入200113 无效输入,黑盒测试(边界值分析法),(2)边界值分析法使被测程序在边界值及其附近运行,从而更有效地暴露程序中潜藏的错误。例:输入数字范围-3276832767测试方案: 32767 -32768 32768 -32769,边界值分析法与等价类划分法区别 边界值分析不是从某等价类中 随便挑一个作为代表,而是使 这个等价类的每个边界都要作 为测试条件。,被测试子 域,测试内点,测试外点,软件边界与悬崖很类似,边界条件类型,如果软件测试问题包含确定的边界,那么数据类型可能是:数值字符位置数量速度地址尺寸,还要考虑数据类型的特征:第一个/最后一个最小值/最大值开始/完成空/满最慢/最快相邻/最远超过/在内,例:某报表处理系统要求用户输入处理 报表的日期,日期限制在2001年1 月至2005年12月,即系统只能对该 段期间内的报表进行处理,如日期 不在此范围内,则显示输入错误信 息。 系统日期规定由年、月的6位数字 字符组成,前四位代表年,后两位 代表月。 如何用边界值分析设计测试用例, 来测试程序的日期检查功能?,输入条件,报表日期的类型及长度,5个数字字符7个数字字符6个数字字符,显示出错显示出错输入有效,年范围,月份范围,“报表日期”边界值分析法测试用例,测试用例说明,测试数据,期望结果,选取理由,200152001005200105,在有效范围边界上选取数据,200201200212200200200213,200103200510200002200606,输入有效输入有效显示出错显示出错,输入有效输入有效显示出错显示出错,在有效范围边界上选取数据,比有效长度少1比有效长度多1类型及长度均有效,最小年份最大年份刚好小于最小年份刚好大于最大年份,最小月份最大月份刚好小于最小月份刚好大于最大月份,黑盒测试(错误推测法),(3)错误猜测法(error guessing) 猜测被测程序在哪些地方容易出错 针对可能的薄弱环节来设计测试用例(4)使用判定表 如果功能说明中含有多个输入条件的逻辑组合,可以建立判定表,判定表的每一列对应一个测试用例。 在实际测试中,综合使用这些方法,以达到最有效的测试。,SOFTWARE ENGINEERING,7.6 调试,7.6.1 任务 在成功的测试之后,还必须进一步诊断和改正程序中的错误,这是调试的任务。7.6.2 步骤(1)确定错误的准确位置;(2)仔细研究这段代码以确定问题的原因,并设法改正错误。7.6.2常用的纠错技术插入打印语句设置断点掩蔽部分程序,SOFTWARE ENGINEERING,8.6.4 调试过程,SOFTWARE ENGINEERING,8.6 调试,8.6.4 调试策略(1)蛮干法: 按着“让计算机自己寻找错误”的策略,印出内存内容,生成大量信息,希望发现错误原因的线索。(2)回溯法:调试人员检查错误征兆,确定最先出现“症状”的地方,然后人工沿程序的控制流往回追踪源程序代码,直到找出错误根源或确定故障范围为止。(3)对分查找法:如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后检查程序的输出。 如果输出结果是正确的,则故障在程序的前半部分;反之,在后半部分。(4)归纳法:就是从个别推断一般的方法,这种方法从线索(错误征兆)出发,通过分析这些线索之间的关系而找出故障。(5)演绎法:先列出所有看来可能成立的原因或假设,然后一个个地排除列举出的原因,最后,证明剩下的原因确实是错误的根源。,归纳法,从测试结果发现的错误入手,分析它们之间的联系查找错误。是一种从特殊推断一般的系统化思考方法。,收集有关数据,组织数据,研究数据间的关系,纠正错误,能,能,不能,不能,列出所有已知的测试用例和程序执行结果,常用的构造线索的技术是“分类法”,分析线索之间的关系,找出矛盾,设计出错原因的假设,归纳排错法步骤,将假设与原始线索或数据进行比较,能否解释现象,证明假设。,提出假设,证明假设,演绎法,演绎法是一种从一般原理出发,经过排除和精化的过程,推导出结论的方法。,列举可能的原因,排除不适当的原因,对保留的假设继续推断,证明假设,纠正错误,收集更多的数据,没有剩余,不能,能,有剩余,演绎法排错的步骤,有余,SOFTWARE ENGINEERING,8.6 调试,8.6.5 纠错的原则:(1)重在思考;(2)避免紧张;(3)修改要彻底;(4)防止纠错时又引入新的错误。,例:对招干考试系统“输入学生成绩” 子模块设计测试用例 招干考试分三个专业,准考证号第一位 为专业代号,如: 1-行政专业, 2-法律专业, 3-财经专业. 行政专业准考证号码为:110001111215法律专业准考证号码为:210001212006财经专业准考证号码为:310001314015,例:准考证号码的等价类划分 有效等价类: (1) 110001 111215 (2) 210001 212006 (3) 310001 314015 无效等价类: (4) - 110000 (5) 111216 210000 (6) 212007 31000 (7) 314016 + ,7.9 软件可靠性的定义,软件可靠性是软件在给定的时间间隔及给定的环境条件下,按设计要求,成功地运行程序的概率。环境条件指的是软件的使用环境。无论是什么软件,如果不对它的使用环境加以限制,都是会失效的。这种失效的数据,不能用来度量软件的可靠性。软件的可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。,成功地运行程序是指不仅程序能正确地运行,满足用户对它的功能要求, 而且当程序一旦受到意外的伤害,或系统故障时,能尽快恢复,仍能正常地运行。,推测错误的产生频度MTTF,估算错误产生频度的一种方法是估算平均无故障时间MTTF ,估算公式如下 IT表示程序长度, ET表示测试前程序错误总数,EC(t)表示测试阶段发现的错误数. 常数K取200.,设Ns 是在测试前人为地向程序中植入的故障数,ns 是经过一段时间测试后发现的播种故障数目,n 是在测试中又发现的程序原有故障数。设测试用例发现植入故障和原有故障的能力相同,则程序中原有故障总数 N ( =ET )估算值为,利用植入故障法估算ET,Hyman分别测试法ET,由两个测试员同时互相独立地测试同一程序的两个副本,用 t 表示测试时间,记 t0时,程序中原有故障总数是 B0;tt1 时,测试员甲发现的故障总数是 B1;测试员乙发现的故障总数是 B2;其中两人发现的相同故障数目是 bc;,在大程序测试时,头几个月两个测试员测试的结果应当比较接近 在早期应当每隔一段时间,由两个测试员再进行分别测试,分析测试结果,估算B0,或几次估算值的结果相差不多,则B0作为原有错误总数的估算值。,SOFTWARE ENGINEERING,7.6 白盒测试技术,设计测试方案的目标选用最少量的测试数据,作到尽可能完备的测试.好的测试方案是发现了迄今为止,尚未发现的错误的测试方案.8.5.2 测试方案包括预定要测试的功能,应该输入的测试数据和预期的结果。8.5.3 测试用例以发现错误为目的而精心设计的彝族测试数据。测试用例=输入数据+期望结果,SOFTWARE ENGINEERING,例题,某城市的电话号码由 三部分组成,这三部分的名称与内容分别是:地区码空白或三位数字前缀非0或1开头的三位数字后缀4位数字假设被测程序能接受一切符合上述规定的电话号码,拒绝不符合规定的电话号码。,SOFTWARE ENGINEERING,SOFTWARE ENGINEERING,覆盖有效等价类,SOFTWARE ENGINEERING,覆盖无效等价类,SOFTWARE ENGINEERING,作业,某报表处理系统要求用户输入处理报表的日期,日期限制在2001年1月至2005年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。 系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。,SOFTWARE ENGINEERING,第一步:等价类划分,输入等价类 有效等价类 无效等价类,报表日期的类型及长度,6位数字字符(1),有非数字字符 (4)少于6个数字字符 (5)多于6个数字字符 (6),年份范围,在20012005之间 (2),小于2001 (7)大于2005 (8),月份范围,在112之间(3),“报表日期”输入条件的等价类表,小于1 (9)大于12 (10),SOFTWARE ENGINEERING,第二步:为有效等价类设计测试用例 对表中编号为1,2,3的3个有效等价类 用一个测试用例覆盖:,测试数据 期望结果 覆盖范围,200105,等价类(1)(2)(3),输入有效,SOFTWARE ENGINEERING,第三步:为每一个无效等价类设至少 计一个测试用例,测试数据 期望结果 覆盖范围,001MAY,等价类(4),输入无效,20015,等价类(5),输入无效,2001005,等价类(6),输入无效,200005,等价类(7),输入无效,200805,等价类(8),输入无效,200100,等价类(9),输入无效,200113,等价类(10),输入无效,不能出现相同的测试用例,本例的10个等价类至少需要8个测试用例,SOFTWARE ENGINEERING,输入条件,报表日期的类型及长度,1个数字字符5个数字字符7个数字字符有1个非数字字符全部是非数字字符6个数字字符,显示出错显示出错显示出错显示出错显示出错输入有效,年范围,月份范围,“报表日期”边界值分析法测试用例,测试用例说明,测试数据,期望结果,选取理由,52001520010052001.5MAY-200105,月份为1月月份为12月月份12,200201200212200200200213,200103200510200002200606,输入有效输入有效显示出错显示出错,输入有效输入有效显示出错显示出错,在有效范围边界上选取数据,仅有1个合法字符比有效长度少1比有效长度多1只有1个非法字符6个非法字符类型及长度均有效,最小年份最大年份刚好小于最小年份刚好大于最大年份,最小月份最大月份刚好小于最小月份刚好大于最大月份,SOFTWARE ENGINEERING,A,SOFTWARE ENGINEERING,SOFTWARE ENGINEERING,D 2006,SOFTWARE ENGINEERING,B,SOFTWARE ENGINEERING,B2007,SOFTWARE ENGINEERING,B,SOFTWARE ENGINEERING,B,SOFTWARE ENGINEERING,AB,SOFTWARE ENGINEERING,2008CA,SOFTWARE ENGINEERING,D,SOFTWARE ENGINEERING,2009B,SOFTWARE ENGINEERING,C,SOFTWARE ENGINEERING,

    注意事项

    本文(软件工程ppt第七章实现课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开