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

    软件工程-实现课件.ppt

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

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

    软件工程-实现课件.ppt

    7.2 软件测试基础,7.3 单元测试,7.4 集成测试,7.1 编 码,7.5 确认测试,7.6 白盒测试技术,7.7 黑盒测试技术,7.8 调 试,7.9 软件可靠性,本章重点:编码 单元测试 集成测试 白盒测试技术 黑盒测试技术难点:白盒测试与黑盒测试技术的区别 测试方案的设计,内 容:编码 软件测试基础 单元测试重 点:软件测试的目的与概念 单元测试的方法难 点:测试概念的理解,测试的方法与步骤,7.1 编 码 把软件设计结果翻译成用某种程序设计语言书写的程序。7.1.1 选择程序设计语言 选择程序设计语言的理想标准:(1)应该有理想的模块化机制,以及可读性好的控制结构和数据结构;(2)应该使编译程序能够尽可能多地发现程序中的错误;(3)应该有良好的独立编译机制。,选择程序设计语言的实用标准:(1)系统用户的要求(2)可以使用的编译程序(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域,7.1.2 编码风格 源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准。(1)程序内部应该有很好的文档 恰当的标识符 适当的注释 程序的视觉组织(2)数据说明应该易于理解便于查阅(3)语句构造应该尽可能简单直观,原则:每个语句都应该简单而且直接,不能为了提高效率而使程序变得过分复杂。下面的规则有助于语句简单明了:不要为了节省空间而把多个语句写在同一行。尽量避免复杂的条件测试 尽量减少对“非”条件的测试 避免大量使用循环嵌套和条件嵌套 利用括号使逻辑表达式或算术表达式的运算次序清晰直观。,(4)输入输出风格遵守人机界面设计准则 规则:对所有输入数据都进行检验 检查输入项重要组合的合法性 保持输入格式简单 使用数据结束标记,不要要求用户指定数据的数目 明确指示交互式输入的请求,详细说明可用的选择或边界数值 当程序设计语言对格式有严格要求时,应保持输入格式一致 设计良好的输出报表 给所有输出数据加标志,(5)效率满足用户要求 效率主要指处理机时间和存储器容量两个方面。可从三个方面讨论效率问题:程序运行时间 存储器效率 输入/输出的效率,7.2 软件测试基础 测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。7.2.1 软件测试的目标 测试的规则:(1)测试是为了发现程序中的错误而执行程序的过程。(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。,(3)成功的测试是发现了至今为止尚未发现的错误的测试。定义1:为了发现程序中的错误而执行程序的过程。定义2:使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。7.2.2 软件测试准则 1.所有的测试都应该能追溯到用户需求。2.应该远在测试开始之前就制定出测试计划。,3.应该把Pareto原理(测试发现的错误中80%很可能是由程序中20%的模块造成的)应用到软件测试中。4.应该从“小规模”测试开始,并逐步过渡到“大规模”测试。5.穷举测试是不可能的,因此,测试只能证明程序中有错误,而不能证明程序中没有错误。6.为了达到最佳的测试效果,应该由独立的第三方从事测试工作。,7.2.3 软件测试方法 黑盒测试 白盒测试 黑盒测试:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用,把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程,这种测试称为黑盒测试,又称功能测试。白盒测试:如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种测试方法称为白盒测试,又称结构测试。,7.2.4 软件测试步骤 1.模块测试 模块测试的目的是发现并改正程序模块中的错误,保证每个模块作为一个单元能正确地运行。模块测试又称为单元测试。2.子系统测试 把经过单元测试的模块组装成一个子系统,在组装过程中同时进行测试。3.系统测试 把经过测试的子系统组装成一个完整的系统同时进行测试。,4.验收测试 把软件系统作为单一的实体进行测试,测试的目的是验证系统确实能够满足用户的需求,因此,主要是用实际数据进行测试。5.平行运行 同时运行新开发出的系统和将被它取代的旧系统,通过比较新旧两个系统的运行结果来测试新系统。,7.2.5 测试阶段的信息流 测试阶段的信息流的输入信息有两类:(1)软件配置,包括需求说明书、设计说明书和源程序清单等;(2)测试配置,包括测试计划和测试方案。,图7.1 测试阶段的信息流,7.3 单元测试 7.3.1 测试重点 1.模块接口 2.局部数据结构 3.重要的执行通路 4.出错处理通路 5.边界条件,7.3.2 代码审查 1.审查小组组成:(1)组长,应该是一个很有能力的程序员,而且没有直接参与这项工程;(2)程序的设计者;(3)程序的编写者;(4)程序的测试者。2.审查小组任务:发现错误而不是改正错误,改正错误的责任有程序的编写者承担。,3.代码审查比计算机测试的优越性:一次审查会上可以发现许多错误;用计算机测试的方法发现错误之后,通常需要先改正这个错误才能继续测试,因此错误是一个一个地发现并改正的。也就是说,采用代码审查的方法可以减少系统验证的总工作量。7.3.3 计算机测试 模块并不是一个独立的程序,因此必须为每个单元测试开发驱动软件和(或)存根软件。,驱动程序就是一个“主程序”,它接收测试数据,把这些数据传送给被测试的模块,并且印出有关的结果。存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。,图7.2 正文加工系统的层次图,内容:集成测试 确认测试 白盒测试技术重点:集成测试 白盒测试难点:测试方案与测试用例的设计,7.4 集成测试 是测试和组装软件的系统化技术,也叫组装测试、联合测试、子系统测试或部件测试,是在单元测试的基础上,将所有模块按照概要设计要求组装成子系统或系统的同时进行的测试。模块组装成程序时有两种方法:(1)非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法。,(2)渐增式测试:是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增式测试,这种方法实际同时完成单元测试和集成测试。,两种方法的优缺点:(1)非渐增式测试一下子把所有模块放在一起,并把庞大的程序作为一个整体来测试,测试者面对的情况十分复杂。测试时会遇到许许多多的错误,改正错误更是极端困难,因为在庞大的程序中想要诊断定位一个错误是非常困难的。而且一旦改正一个错误之后,马上又会遇到新的错误,这个过程将继续下去,看起来好像永远也没有尽头。,(2)渐增式测试与“一步到位”的非渐增式测试相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。,7.4.1 自顶向下集成 自顶向下集成方法从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。目的:从顶层模块开始,采用同设计顺序一样的思路对被测系统进行测试,以验证系统的接口稳定性。,把模块结合进软件结构的具体过程由4个步骤完成:第一步,对主控制模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块;第二步,根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个存根程序(新结合进来的模块往往又需要新的存根程序);,第三步,在结合进一个模块的同时进行测试;第四步,为了保证加入模块没有引进新的错误,可能需要进行回归测试(即,全部或部分地重复以前做过的测试)。,7.4.2 自底向上集成 自底向上测试从“原子”模块(即在软件结构最低层的模块)开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要存根程序。目的:从具有最小依赖性的底层组件开始,按照依赖关系树的结构,逐层向上集成,以检测整个系统的稳定性。,自底向上的结合策略的步骤:第一步,把低层模块组合成实现某个特定的软件子功能的族;第二步,写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出;第三步,对由模块组成的子功能族进行测试;第四步,去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。,7.4.3 不同集成测试策略的比较1.自顶向下测试方法的主要优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。,2.自顶向下测试方法的主要缺点:需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力。3.混合策略:(1)改进的自顶向下测试方法(2)混合法,7.4.4 回归测试 回归测试是指重新执行已经做过的测试的某个子集,以保证集成模块时程序的变化没有带来非预期的副作用。用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。,回归测试集包括3类不同的测试用例:(1)检测软件全部功能的代表性测试用例;(2)专门针对可能受修改影响的软件功能的附加测试;(3)针对被修改过的软件成分的测试。,7.5 确认测试 确认测试也称验收测试,它的目标是验证软件的有效性。验证:指的是保证软件正确地实现了某个特定要求的一系列活动。确认:指的是为了保证软件确实满足了用户需求而进行的一系列活动。软件有效性:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。,7.5.1 确认测试的范围 确认测试必须有用户积极参与,或者以用户为主进行,通常使用黑盒测试法。确认测试有下述两种可能的结果:(1)功能和性能与用户要求一致,软件是可以接受的;(2)功能和性能与用户要求有差距。,7.5.2 软件配置复查 目的:是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录。,7.5.3 Alpha和Beta测试 1.Alpha测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,开发者负责记录发现的错误和使用中遇到的问题。总之,Alpha测试是在受控的环境中进行的。,2.Beta测试:Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户记录在Beta测试过程中遇到的一切问题(真实的或想像的),并且定期把这些问题报告给开发者。接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。,7.6 白盒测试技术测试方案的内容:具体的测试目的,应该输入的测试数据和预期的结果。测试用例:测试数据和预期的输出结果设计测试方案的基本目标:确定一组最可能发现某个错误或某类错误的测试数据。,7.6.1 逻辑覆盖1.语句覆盖 选取足够多的测试数据,使被测程序中每个语句至少执行一次。,A=2,B=0,X=4,2.判定覆盖 选取足够多的测试数据,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。,.A=3,B=0,X=3.A=2,B=1,X=1,3.条件覆盖 选取足够多的测试数据,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。,.A=2,B=0,X=4.A=1,B=1,X=1,4.判定/条件覆盖 同时满足判定覆盖和条件覆盖的标准,也就是说,选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。,.A=2,B=0,X=4.A=1,B=1,X=1,5.条件组合覆盖 条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。,.A=2,B=0,X=4.A=2,B=1,X=1.A=1,B=0,X=2.A=1,B=1,X=1,6.点覆盖 选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次,由于流图的每个结点与一条或多条语句相对应,显然,点覆盖标准和语句覆盖标准是相同的。,A=2,B=0,X=4,7.边覆盖 选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。通常边覆盖和判定覆盖是一致的。,.A=3,B=0,X=3.A=2,B=1,X=1,8.路径覆盖 选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。,7.6.2 控制结构测试1.基本路径测试基本路径测试技术设计测试用例的步骤如下:第一步,根据过程设计结果画出相应的流图。第二步,计算流图的环形复杂度。第三步,确定线性独立路径的基本集合。第四步,设计可强制执行基本集合中每条路径的测试用例。,IF a or bTHEN XELSE Y,IF a and bTHEN XELSE Y,例:为下页所示的的C语言程序用基本路径法设计测试用例。要求:最多输入100个值(以-999为输入结束标志),计算落在给定范围内的那些值(称为有效输入值)的个数、总和及平均值。,float sum=0;total=0;float average(value,minimum,maximum);float value100;int minimum,maximum;int inputnum,i;float aver;i=0;inputnum=0;WHILE(valuei!=-999 return(aver),(1)画出相应的流图。,(2)计算流图的环形复杂度 V(G)=6(3)确定线性独立路径的基本集合,路径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,(4)设计测试用例,2.条件测试3.循环测试,内容:黑盒测试技术 调试 软件可靠性重点:黑盒测试 调试难点:等价划分和边界值分析,7.7 黑盒测试技术黑盒测试力图发现下述类型的错误:功能不正确或遗漏了功能;界面错误;数据结构错误或外部数据库访问错误;性能错误;初始化和终止错误。,设计黑盒测试方案时,应该考虑以下问题:(1)怎样测试功能的有效性?(2)哪些类型的输入可构成好测试用例?(3)系统是否对特定的输入值特别敏感?(4)怎样划定数据类的边界?(5)系统能够承受什么样的数据率和数据量?(6)数据的特定组合将对系统运行产生什么影响?,7.7.1 等价划分 是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。出发点:每一个测试用例都代表一类与它等价的其它例子。,有助于等价类划分的启发式规则:(1)如果规定了输入值的范围,则可划分出一个有效的等价类,两个无效的等价类;(2)如果规定了输入数据的个数,则类似地也可以划分出一个有效的等价类和两个无效的等价类;(3)如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的输入值是一个有效的等价类,此外还有一个无效的等价类;,(4)如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从各种不同角度违反规则);(5)如果规定了输入数据为整型,则可以划分出正整数、零和负整数等3个有效类;(6)如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。,例 1 某城市的电话号码由三部分组成,这三部分的名称与内容分别是:地区码:空白或三位数字 前 缀:非0或1开头的三位数字 后 缀:四位数字 假设被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码。,1.确定等价类有效等价类:地区码的有效等价类:(1)空白(2)3位数字前缀的有效等价类:(3)200999的3位数字后缀的有效等价类:(4)4位数字,无效等价类:地区码的无效等价类:(5)有非数字字符(6)少于3位数(7)多于3位数前缀的无效等价类:(8)有非数字字符(9)少于3位数(10)多于3位数(11)起始位为0(12)起始位为1,后缀的无效等价类:(13)有非数字字符(14)少于4位数(15)多于4位数,2.确定测试方案(1)地区码空白,输出有效 输 入:2762345 预期输出:有效(2)地区码有三位数字,输出有效 输 入:6595235432 预期输出:有效(3)前缀是200999之间的3位数字,输出有效 输 入:4294189853 预期输出:有效,(4)后缀是4位数字,输出有效 输 入:4295865656 预期输出:有效(5)地区码有非数字字符,输出无效 输 入:6#92355636 预期输出:无效(6)地区码少于3位数字,输出无效 输 入:424189823 预期输出:无效,(7)地区码多于3位数字,输出无效 输 入:42135659859 预期输出:无效(8)前缀有非数字字符,输出无效 输 入:6592%55636 预期输出:无效(9)前缀少于3位数字,输出无效 输 入:423489853 预期输出:无效,(10)前缀多于3位数字,输出无效 输 入:42165659859 预期输出:无效(11)前缀起始位为0,输出无效 输 入:6890255636 预期输出:无效(12)前缀起始位为1,输出无效 输 入:9591255665 预期输出:无效,(13)后缀有非数字字符,输出无效 输 入:421656598#9 预期输出:无效(14)后缀少于4位数字,输出无效 输 入:689625563 预期输出:无效(15)后缀多于4位数字,输出无效 输 入:95982556655 预期输出:无效,例 2 某函数完成长度为6的数字串转变成整数的功能,假设运行程序的计算机字长为16位,用二进制补码表示整数。要求被处理的字符串是右对齐的,即如果数字串比6个字符短,则左端补空格;如果数字串是负的,则负号和最高位数字紧相邻。,7.7.2 边界值分析(12)使输出刚好等于最小的负整数 输入:-32768 预期的输出:-32768(13)使输出刚好等于最大的正整数 输入:32767 预期的输出:32767,(14)使输出刚好小于最小的负整数 输入:-32769 预期的输出:“错误-无效输入”(15)使输出刚好大于最大的正整数 输入:32768 预期的输出:“错误-无效输入”7.7.3 错误推测,7.8 调试 调试作为成功测试的后果出现,是在测试发现错误之后排除错误的过程。7.8.1 调试过程,调试过程的两种结果:找到了问题的原因并把问题改正和排除掉了;没找出问题的原因。7.8.2 调试途径1.蛮干法2.回溯法 从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。,3.原因排除法 对分查找法、归纳法和演绎法(1)对分查找法 如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后运行程序并检查所得到的输出。如果输出结果是正确的,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。对错误原因所在的那部分再重复使用这个方法,直到把出错范围缩小到容易诊断的程度为止。,(2)归纳法 是从个别现象推断出一般性结论的思维方法。使用这种方法调试程序时,首先把和错误有关的数据组织起来进行分析,以便发现可能的错误原因。然后导出对错误原因的一个或多个假设,并利用已有的数据来证明或排除这些假设。,(3)演绎法 从一般原理或前提出发,经过排除和精化的过程推导出结论。采用这种方法调试程序时,首先设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因。如果测试表明某个假设的原因可能是真的原因,则对数据进行细化以准确定位错误。,7.9 软件可靠性7.9.1 基本概念1.软件可靠性 是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。2.软件的可用性 是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。3.可靠性和可用性之间的差别:,系统的稳态可用性为:,其中Tup=tui,Tdown=tdi td1,td2,为软件系统故障停机时间 tu1,tu2,为正常运行时间,7.9.2 估算平均无故障时间的方法符号 ET:测试之前程序中错误总数;IT:程序长度(机器指令总数);:测试(包括调试)时间;Ed():在0至期间发现的错误数;Ec():在0至期间改正的错误数。,2.估算平均无故障时间,3.估计错误总数的方法(1)植入错误法,(2)分别测试法,小 结:1.编码 2.测试的目标、准则、方法和步骤 3.单元测试、集成测试和确认测试 4.黑盒测试与白盒测试技术 5.调试作 业:P174 3(1)(3)预 习:第8章 维护,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开