资源预览内容
第1页 / 共110页
第2页 / 共110页
第3页 / 共110页
第4页 / 共110页
第5页 / 共110页
第6页 / 共110页
第7页 / 共110页
第8页 / 共110页
第9页 / 共110页
第10页 / 共110页
亲,该文档总共110页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软 件 测 试授课教师:张莹电子邮件:n验证和确认n验证与确认的基本概念n静态方法:走查、审查、检查n软件测试n测试的概念、文档、人员n软件测试活动n软件测试技术n黑盒测试与白盒测试n等价类划分、边界值分析n路径测试、状态测试n错误(error)n错误是指导致系统可能包含故障的人的行为,如输入错误、需求错误、设计错误等。n缺陷(defect,bug)n缺陷是错误的表现,包括过错缺陷和遗漏缺陷。n故障(fault)n故障是指系统的规格说明与其行为之间的偏差,通常由一个或多个缺陷引起。基本术语n验证(Verification)n我们是否在正确地制造产品?n软件验证试图证明在软件生命周期的各个阶段,软件产品或中间产品是否能够满足客户需求,包括一致性、完整性和正确性。n确认n我们是否在制造正确的产品?n软件确认的目的是保证所开发的最终软件产品能够符合用户的需求。n说明n验证强调对于过程的检验,确认强调对于结果的检验。基本术语n软件错误(或软件缺陷)的表现n软件未达到产品说明书标明的功能;n软件出现了产品说明书指明不会出现的错误;n软件功能超出了产品说明书指明的范围;n软件未达到产品说明书虽未指出但应达到的目标;n软件测试人员认为软件难以理解、不易使用、运行速度慢、或者最终用户不满意。n举例n计算器进行加法运算,出现错误结果n电池电量不足导致计算错误n测试人员感觉计算器按键不方便,或者计算器显示不清楚软件错误或缺陷n有错是软件的属性,而且无法改变。n关键在于n如何避免错误的产生和消除已经产生的错误n使程序中的错误密度达到尽可能低的程度软件错误或缺陷验证与确认这是什么错误的状态错误类型处理错误与缺陷验证?处理错误与缺陷冗余?处理错误与缺陷特性?处理错误与缺陷补丁?处理错误与缺陷测试?验证与确认的活动n需求分析与规格说明阶段n用例表示待开发系统的场景,有助于建立完整的系统,可以用于在后续实现阶段生成测试用例n需求检查、需求评审、原型法n设计阶段n设计走查、设计检查、设计评审验证与确认的活动n软件实现阶段n软件测试是一种主要的验证与确认工具n代码走查、代码检查、代码评审n动态监测工具n验证与确认的方式n静态方法:通过人工分析或程序正确性证明的方式来确认程序的正确性,包括走查、审查、检查等方法;n动态方法:通过动态分析和程序测试来检查程序执行状态,以确认程序是否有问题。软件测试的概念n测试的定义n传统:测试是一种旨在评估一个程序或系统的属性或能力,确定它是否符合其所需结果的活动。nIEEE:测试是使用人工和自动手段来运行或检测某个系统的过程,其目的在于检验系统是否满足规定的需求或弄清预期结果与实际结果之间的差别软件测试的目标和准则n测试是为了发现程序中的错误而执行程测试是为了发现程序中的错误而执行程序的过程;序的过程;n好的测试方案是极可能发现迄今为止尚好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;未发现的错误的测试方案;n成功的测试是发现了至今为止尚未发现成功的测试是发现了至今为止尚未发现的错误的测试。的错误的测试。软件的测试准则n应当把“尽早地和不断地测试”作为软件开发者的座右铭。n设计测试用例时,应包括合理的输入和不合理的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态。n应充分注意测试中的群集现象。n妥善保存一切测试过程文档,测试重现往往要靠测试文档。n对测试错误结果一定要有一个确认过程。n制定出严格的测试计划,排除测试的随意性。n应该从“小规模”测试开始,并逐步进行“大规模”测试。n穷举测试是不可能的。n为了达到最佳的测试效果,应该由独立的第三方从事测试测试文档n测试计划n包括:测试目标、测试方法、测试范围、测试资源、测试环境和工具、测试体系结构、测试进度表n测试用例n测试用例是数据输入和期望结果组成的对n测试用例可以组织成一个测试系列。测试文档n缺陷报告n缺陷报告是编写在需要调查研究的测试过程期间发生的任何事件。n包括:缺陷编号、题目、状态、提出、解决、所属项目、测试环境、缺陷报告步骤、期待结果、附件。n在报告缺陷时,还要讲明缺陷的严重性和优先级。测试阶段的信息流软件可靠性计算测试人员的综合素质n沟通能力n移情能力n技术能力n自信心n外交能力n幽默感n记忆力n耐心n怀疑精神n自我督促n洞察力软件测试的基本步骤平行运行软件测试的V模型n对软件基本组成单元模块进行测试,也称为“组件测试”;n一般由编写该单元代码的开发人员执行n该人员负责设计和运行一系列的测试用例以确保该单元符合需求。n单元测试的目的n验证代码是否与设计相符n跟踪需求和设计的实现n发现设计和需求中存在的错误n发现在编码过程中引入的错误软件测试单元测试(Unit Test)软件测试单元测试(Unit Test)单元测试的环境l驱动模块驱动模块(Driver) 模拟被测模块的上一级调用模块模拟被测模块的上一级调用模块l桩模块桩模块(Stub) 模拟被测单元需调用的其他模块模拟被测单元需调用的其他模块单元测试单元测试单元测试的工具junit软件测试集成测试(Integration Test)n定义 测试和组装软件的系统化技术n分类 渐增式测试:按照层次图自顶向下或自底向上逐层安装 非渐增测试:按照层次图一次性将各单位模块组装起来自顶向下集成测试n测试过程 主控模块进行测试 选择结合策略,用实际模块代替存根程序 测试结合后的模块 为了确保没有增加新错误,可能需要回归测试n举例1:广度优先n举例2:深度优先自底向上集成测试n测试过程 底层模块组合成族 用驱动程序协调族的输入/出 测试族 去掉驱动程序,自下而上移动,形成更大的族。n举例测试策略特点非渐增式程序错误易爆炸,不容易集成成功;单元测试使用辅助模块多;适用于小规模软件开发渐增式容易找到错误并测试成功;适用于大规模软件开发自顶向下式不需要驱动程序设计,能够及早发现上层模块的接口错误;必须设计存根模块,对低层模块错误发现较晚自底向上式与“自顶向下式”相反混合式上层采用“自顶向下式”,中下层采用“自底向上式”,是最好的折中方案各种集成测试策略的比较系统测试n系统测试是将已经集成好的软件系统作为一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他元素结合在一起,在实际运行环境下进行的一系列测试。n系统测试方法n功能测试、协议一致性测试n性能测试、压力测试、容量测试、安全性测试、恢复测试n备份测试、GUI测试、健壮性测试、兼容性测试、可用性测试n安装测试、文档测试、在线帮助测试、数据转换测试系统测试n功能测试n根据软件需求规格说明和测试需求列表,验证产品的功能是否符合需求规格n主要发现下列错误n是否有不正确或遗漏的功能?n功能实现是否满足用户需求和系统设计的隐藏需求?n是否能正确接受输入?能否正确输出结果?n常用测试技术n黑盒测试方法系统测试n压力测试:目的是检测系统非正常的情形下,以反常规数据量、频率或资源的方式运行系统,以检验系统能力的最高实际限度。 n举例: 如果正常的中断频率为每秒5次,强度测试设计为每秒50次中断。 把输入数据的量提高一个数量级来测试输入功能会如何响应。 若某系统正常运行可支持200个终端并行工作,强度测试则检验1000个终端并行工作的情况。 运行大量的消耗内存或其他系统资源的测试实例。系统测试n恢复测试是通过各种手段,强制性地使软件出错,使其不能正常工作,进而检验系统的恢复能力。n恢复测试包含的内容: 如果系统恢复是自动的(由系统自身完成),则应该检验:重新初始化、检验点设置机构、数据恢复以及重新启动是否正确。 如果这一恢复需要人为干预,则应考虑平均修复时间是否在限定的、可以接受的范围之内。系统测试nGUI测试nGUI测试一是检查用户界面实现与设计的符合情况,二是确认用户界面处理的正确性。nGUI测试提倡界面与功能的设计分离,其重点关注在界面层与界面与功能接口层上。n常用的测试技术n等价类划分、边界值分析、状态图方法和错误猜测法确认测试(验收测试)n定义 将软件系统作为单一实体,在用户的积极参与下,采用黑盒测试法进行的测试活动n目的:验证软件的有效性。n测试错误类型:系统需求说明书的错误确认测试的方案n 测试测试 定义:在开发机构的监督下,由个别用户在确定义:在开发机构的监督下,由个别用户在确 认测试阶段后期对软件进行测试,认测试阶段后期对软件进行测试, 目的:评价软件是否满足需求规格说明书,注目的:评价软件是否满足需求规格说明书,注 重界面和特色。重界面和特色。n 测试测试 定义:由支持软件预发行的客户对需求规格说定义:由支持软件预发行的客户对需求规格说 明书进行测试明书进行测试 目的:测试系统的可支持性目的:测试系统的可支持性平行运行n 同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果,通常适用于关系重大的软件产品。 软件测试的方法n基本测试方法 白盒测试 黑盒测试n测试方案设计的目的 确定一组最可能发现某个错误的或某类错误的测试数据。n测试方案(1)具体的测试目的(2)输入的测试数据(3)预期的测试结果测试用例测试用例测试方法白盒测试n选择逻辑覆盖标准。n按照覆盖标准列出所有情况。n确定测试用例。n验证、分析运行结果与预期结果。n语句覆盖n判定覆盖n条件覆盖n判定/条件覆盖n条件组合覆盖弱强逻辑覆盖标准举例:设计举例:设计samplesample函数白盒测试用例函数白盒测试用例int sample(int a,int b,float x) if (a1)&(b=0) x=x/4; if (a=2)|(x1) x=x+1; return x;程序流程图语句覆盖语句覆盖n定义定义 通过选择足够多的测试数据,使被测试程序中每个语通过选择足够多的测试数据,使被测试程序中每个语句至少执行一次句至少执行一次n测试用例测试用例测试数据返回值(x)a=2,b=0,x=3 1.75程序流程图语句覆盖的优缺点n优点优点 测试数据少测试数据少n缺点缺点 对程序的逻辑覆盖很少,是很弱的逻辑对程序的逻辑覆盖很少,是很弱的逻辑覆盖标准覆盖标准判定覆盖判定覆盖( (分支覆盖分支覆盖) ) n定义:定义: 使每个判定框的真假分支都至少执行一次使每个判定框的真假分支都至少执行一次n测试用例测试用例测试数据覆盖分支返回值(x)a=2,b=0,x=5T1T22.25a=1,b=1,x=0F1F20程序流程图判定覆盖的特点n强于语句覆盖的能力强于语句覆盖的能力n测试数据只覆盖了程序全部路径的一半测试数据只覆盖了程序全部路径的一半条件覆盖条件覆盖n定义定义 使每个判定框中每个条件的可能取值至少执行使每个判定框中每个条件的可能取值至少执行一次一次n测试用例测试用例 第一判定表达式第一判定表达式(a1&b=0):(a1&b=0): 所有取值:所有取值:t t1 1a1a1,f1f1a1a1 t2 t2b=0b=0,f2f2b!=0b!=0 第二判定表达式第二判定表达式(a=2|x1):(a=2|x1): 所有取值:所有取值:t3t3a=2a=2,f3f3a!=2a!=2 t4 t4x1x1,f4f4x1x1程序流程图注意注意n条件覆盖不一定包含判定覆盖条件覆盖不一定包含判定覆盖n判定覆盖也不一定包含条件覆盖判定覆盖也不一定包含条件覆盖判定判定/ /条件覆盖条件覆盖n选取足够多的测试用例,使判断框中每个条件的所有选取足够多的测试用例,使判断框中每个条件的所有可能取值至少执行一次,同时每个判断框本身的所有可能取值至少执行一次,同时每个判断框本身的所有可能判断结果至少执行一次可能判断结果至少执行一次. .n测试用例测试用例测试数据判定路径 覆盖条件 返回值(x)a=2,b=0,x=0T1T2t1t2t3f41a=1,b=1,x=4F1T2f1f2f3t45a=1,b=1,x=0F1F2f1f2f3f40程序流程图条件组合覆盖条件组合覆盖n所有判定框中可能的所有判定框中可能的条件取值组合至少执条件取值组合至少执行一次行一次n组合情况组合情况(1 1)a1,b=0a1,b=0(2 2)a a1,b=01,b=0(3 3)a1,b!=0a1,b!=0(4 4)a1,b!=0a1,b!=0(5 5)a=2,x1a=2,x1(6 6)a=2,x1a=2,x1(7 7)a!=2,x1a!=2,x1(8 8)a!=2,x1a!=2,x1测试数据合并组合a=2,b=0,x=51、5a=1,b=0,x=22、7a=2,b=1,x=13、6a=1,b=1,x=14、8白盒测试条件路径测试n嵌套型分支结构 测试用例n+1,n代表判定框个数n连锁型分支结构 测试用例2n,n代表判定框个数n为了减少测试用例,通过加权法筛掉部分路径白盒测试循环路径测试n简单循环结构简单循环结构 包括零次、一次、两次、某个中间次数、比包括零次、一次、两次、某个中间次数、比最大次数少一次、最大次数、比最大次数多一最大次数少一次、最大次数、比最大次数多一次的循环测试数据次的循环测试数据n连锁型循环结构连锁型循环结构 参照参照“简单型简单型”,分别测试,分别测试n嵌套型循环结构嵌套型循环结构(1 1)先内后外,外层取最小,内层取典型值)先内后外,外层取最小,内层取典型值(2 2)逐步外推,重复进行()逐步外推,重复进行(1 1)(3 3)对全部循环取最大次、最小次综合测试)对全部循环取最大次、最小次综合测试路径测试举例路径测试练习答案答案输入输入预期结果预期结果覆盖路径覆盖路径n=1Path1n=2路径583不可达Path2n=2路径593不可达Path3n=2v0=2 v1=1k=1,v0=1,v2=21246583n=2v0=2 v1=1k=1,路径93不可达1246593n=2v0=1 v1=2k=0,路径83不可达1247583n=2v0=1 v1=2k=1,v0=1,v2=21247583等等价价分分类类法法边边值值分分析析法法错错误误推推测测法法软件测试方法黑盒测试n不考虑程序的内部结构与特性,只根据不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用程序功能或程序的外部特性设计测试用例。例。n测试方法测试方法n基本概念基本概念n基本步骤基本步骤n举例举例方法一等价类划分法等价类划分法n练习练习转“边值分析法”什么是等价类?什么是等价类?n等价类等价类有效等价类有效等价类( (合理等价类合理等价类) )无效等价类无效等价类( (不合理等价类不合理等价类) )n等价类划分标准等价类划分标准覆盖覆盖不相交不相交代表性代表性 0 100 0 100 有效有效等价类等价类00成绩成绩100100无效等价类无效等价类 成绩成绩100100 无效等价类无效等价类 成绩成绩00划分等价类的规则划分等价类的规则n如果输入条件规定了取值范围,可定义如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。一个有效等价类和两个无效等价类。n举例:举例:0100的学生成绩的学生成绩划分等价类的规则划分等价类的规则n如果规定了输入数据的个数,则可类似划分出如果规定了输入数据的个数,则可类似划分出一个有效等价类和两个无效等价类。一个有效等价类和两个无效等价类。n规定了输入数据的一组值,且程序对不同输入规定了输入数据的一组值,且程序对不同输入 值做不同处理,则每个允许的输入值是一个有值做不同处理,则每个允许的输入值是一个有 效效等等价价类类,并并有有一一个个无无效效等等价价类类( (所所有有不不允允许许的输入值的集合的输入值的集合) )。 举举例例:学学历历可可为为专专科科、本本科科、硕硕士士、博博士士四四种种之之一一,则则分分别别取取这这四四种种这这四四个个值值作作为为四四个个有有效效等等价价类类,另另外外把把四四种种学学历历之之外外的的任任何何学学历历作作为为无效等价类无效等价类返回划分等价类的规则划分等价类的规则n如果规定了输入数据必须遵循的规则,如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规若干个无效等价类(从不同角度违反规则则) )。n如如果果规规定定了了输输入入数数据据为为整整形形,则则可可以以划划分出正整数、零和负整数等三个有效类分出正整数、零和负整数等三个有效类n如如果果程程序序的的处处理理对对象象是是表表格格,则则应应使使用用空表、以及含一项或者多项的表格。空表、以及含一项或者多项的表格。用等价类划分法设计测试用例步骤用等价类划分法设计测试用例步骤n形成等价类表,每一等价类规定一个唯一的形成等价类表,每一等价类规定一个唯一的 编号;编号;n设计一测试用例,使其尽可能多地覆盖尚未设计一测试用例,使其尽可能多地覆盖尚未 覆盖的有效等价类,重复这一步骤,直到所覆盖的有效等价类,重复这一步骤,直到所 有有效等价类均被测试用例所覆盖;有有效等价类均被测试用例所覆盖;n设计一新测试用例,使其只覆盖一个无效等设计一新测试用例,使其只覆盖一个无效等 价类,重复这一步骤直到所有无效等价类均价类,重复这一步骤直到所有无效等价类均 被覆盖;被覆盖;返回报表处理系统要求用户输入处理报表的日期,日期报表处理系统要求用户输入处理报表的日期,日期限制在限制在20012001年年1 1月至月至20052005年年1212月,即系统只能对该月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。则显示输入错误信息。规定规定1 1:系统日期由年、月的:系统日期由年、月的6 6位数字字符组成,前位数字字符组成,前 四位代表年,后两位代表月。四位代表年,后两位代表月。要求:用等价类划分法设计测试用例要求:用等价类划分法设计测试用例, , 来测试程序来测试程序 的日期检查功能的日期检查功能举例第一步:等价类划分第一步:等价类划分“报表日期报表日期”输入条件的等价类表输入条件的等价类表输入等价类输入等价类 有效等价类有效等价类 无效等价类无效等价类 报表日期的报表日期的类型及长度类型及长度6 6位数字字符位数字字符(1)(1)有非数字字符有非数字字符 (4)(4)少于少于6 6个数字字符个数字字符 (5)(5)多于多于6 6个数字字符个数字字符 (6)(6)年份范围年份范围在在2001200120052005之间之间 (2)(2)小于小于2001 (7)2001 (7)大于大于2005 (8)2005 (8)月份范围月份范围在在1 11212之间之间(3)(3)小于小于1 (9)1 (9)大于大于12 (10)12 (10)第二步第二步为有效等价类设计测试用例对表中编号为为有效等价类设计测试用例对表中编号为1,2,31,2,3的的3 3个有效等价类用一个测试用例覆盖:个有效等价类用一个测试用例覆盖: 测试数据 期望结果 覆盖范围200105200105等价类等价类(1)(2)(3)(1)(2)(3)输入有效输入有效第三步:为每一个无效等价类设至少设计一个测试用例第三步:为每一个无效等价类设至少设计一个测试用例 测试数据 期望结果 覆盖范围001001MAYMAY等价类等价类(4)(4)输入无效输入无效2001520015等价类等价类(5)(5)输入无效输入无效20010052001005等价类等价类(6)(6)输入无效输入无效200020000505等价类等价类(7)(7)输入无效输入无效200620060505等价类等价类(8)(8)输入无效输入无效200120010000等价类等价类(9)(9)输入无效输入无效200120011313等价类等价类(10)(10)输入无效输入无效练习练习对招干考试系统对招干考试系统“输入学生成绩输入学生成绩”子模块设计测试用子模块设计测试用例例 招干考试分三个专业招干考试分三个专业 准考证号第一位为专业代号准考证号第一位为专业代号,如如: 1-行政专业行政专业, 2-法律专业法律专业, 3-财经专业财经专业. 行政专业准考证号码为行政专业准考证号码为:110001111215法律专业准考证号码为法律专业准考证号码为:210001212006财经专业准考证号码为财经专业准考证号码为:310001314015 有效等价类有效等价类: : (1) 110001 (1) 110001 111215111215 (2) 210001 (2) 210001 212006212006 (3) 310001 (3) 310001 314015314015 无效等价类无效等价类: : (4) - (4) - 110000110000 (5) 111216 (5) 111216 210000210000 (6) 212007 (6) 212007 3100031000 (7) 314016 (7) 314016 + + 准考证号码的等价类划分准考证号码的等价类划分边值分析法n基本思想基本思想 选择等价类的边缘值作为测试用例,让每个等价类的选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输边界都得到测试,选择测试用例既考虑输入亦考虑输出。出。n分析步骤分析步骤 先划分等价类。先划分等价类。 选择测试用例,测试等价类边界。选择测试用例,测试等价类边界。举例:边值分析法n按照输入值范围的边界。按照输入值范围的边界。 例如:输入值的范围是例如:输入值的范围是-1.0-1.0至至1.01.0 合法等价类的测试用例:合法等价类的测试用例:1.01.0、1.01.0 非法等价类的测试用例:非法等价类的测试用例:-1.001-1.001、1.0011.001n按照输入按照输入/ /输出值个数的边界。输出值个数的边界。 例如:输入文件可有例如:输入文件可有1-2551-255个记录个记录 合法等价类的测试用例:文件的记录数为合法等价类的测试用例:文件的记录数为 1 1个、个、255255个个 非法等价类的测试用例:非法等价类的测试用例:0 0个、个、256256个个n输出值域的边界。输出值域的边界。 例如:检索文献摘要,最多例如:检索文献摘要,最多4 4篇。篇。 合法等价类的测试用例:检索合法等价类的测试用例:检索0 0篇、篇、4 4篇篇 非法等价类的测试用例:检索非法等价类的测试用例:检索5 5篇篇n输入输入/ /输出有序集(如顺序文件、线性表)的边界。输出有序集(如顺序文件、线性表)的边界。 举例:输出数组举例:输出数组a10a10 合法等价类的测试用例:选择合法等价类的测试用例:选择a1a1和和a10a10举例:边值分析法 凭经验或直觉推测可能的错误,列出程序中可凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试能有的错误和容易发生错误的特殊情况,选择测试用例。用例。举例:Main()/*通过调用数组排序函数,完成数组升序输出*/ ; 输入数组aN; OrderInAscend(); 输出数组aN;错误推测法面向对象的软件测试n测试类型n模型测试n采用正式技术评审的方法检查分析、设计模型的正确性、完整性和一致性。n方法包括:用例场景测试、系统原型走查、需求模型一致性检查、分析设计模型的检查与走查。n类测试n验证类的实现与类的规约是否一致。n包括:类属性的测试、类操作的测试、可能状态下的对象测试面向对象的软件测试n测试类型n交互测试n将类进行联合测试,以确定它们能否在一起共同工作。n方法:用例或基于场景的测试、线程测试、对象交互测试n系统测试n测试整个系统或者独立子系统,确保没有明显的故障,能满足用户需求。面向对象的软件测试n测试类型n验收测试n在系统移交用户之前或用户使用一段时间后进行的最终系统测试,以确保满足用户需求。n发布测试n确保在系统中的软件包能够提供足够的安装步骤,从而使得产品在工作条件下可以交付使用。面向对象软件测试举例日期面向对象软件测试举例日期面向对象软件测试举例日期面向对象软件测试举例日期面向对象软件测试举例日期面向对象软件测试举例日期面向对象软件测试举例线性表n理解线性表类图nP251图10.14nremove()划分等价类有效等价类无效等价类nS1 = size:size=0I1 = index:index=sizenS3 = size:size1nI2 = index:index=0nI3 = index: 0indexsizenI4 = index:index = size -1GUI测试实例GUI测试实例GUI测试实例n设计测试用例n测试三个状态各自内部转换n测试三个状态之间的转换n测试加法运算调试将症状与原因联系起来的尚未被人深入认识的智力过程调试途径1u蛮干法(1)定义:按照“让计算机自己寻找错误”的策略,通过印出的 内存信息寻找错误原因的线索。(2)特点:最低效的调试方法u回溯法(1)定义:从发现症状的地方开始,人工沿着程序控制流往回 追踪(2)特点:回溯路径数目巨大,不适应大规模程序u原因排除法 对分查找法 归纳法 演绎法举例调试途径2u原因排除法(1)对分查找法对每个变量程序中若干关键点,通过赋值 或者输入方法注入正确值,如果程序结果 正确,则前半部分出错,反之,后面错误(2)归纳法将与错误有关数据组织起来分析,导出对错误 原因的假设,通过测试来不断推翻假设,从而 找出错误原因(3)演绎法假设错误原因,通过测试不断排出。如果假设 成立,则对数据进行细化,定位错误。举例软件可靠性u软件可靠性 程序在给定的时间间隔内,按照规格说明书规定成功运行的概率u软件可用性 程序在给定时间点,按照规格说明书的规定,成功运行的概率潜伏错误的数目维护人员素质估算MTTF的方法符号介绍nET测试之前程序中错误总数;测试之前程序中错误总数;nIT程序长度程序长度(机器指令总数机器指令总数);n测试测试(包括调试包括调试)时间;时间;nEd ()在在0至至期间发现的错误数;期间发现的错误数;nEc ()在在0至至期间改正的错误数。期间改正的错误数。估算MTTF的方法假定条件u在类似的程序中,单位长度里的错误数在类似的程序中,单位长度里的错误数 近似为常数。近似为常数。 u失效率正比于软件中剩余的失效率正比于软件中剩余的(潜藏的潜藏的)错误数,错误数,而平均无故障时间而平均无故障时间MTTF与单位长度里的剩与单位长度里的剩余错误数成反比。余错误数成反比。uEc()=Ed()估算错误总数的方法n植入错误法分别测试法估算平均无故障时间的方法通常K=200举例n测试一个长度50万条指令程序时,第一个月由甲、乙两名测试员独自测试,分别发现了30个和36个错误,其中5个相同,改由甲继续测试该程序(1)估算开始测试时,程序中共有多少错误?(2)若MTTF=24h,必须再找出多少个错误?返回调试的举例/*/*统计在任意输入字符串中统计在任意输入字符串中“a a”出现的频率出现的频率* */ /Main()Main() char InputString100; char InputString100; int i,asum=0,length,frequency; int i,asum=0,length,frequency; scanf( scanf(“%s%s”,&InputString0);,&InputString0); length=strlen(InputString); length=strlen(InputString); for (i=0;ilength;i+) for (i=0;i1 & b=0a=2 | x1x=x/4x=x+1Return xT1T2F1F2返回源程序返回语句覆盖返回判定覆盖返回条件覆盖返回判定/条件覆盖
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号