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

    09第九章软件测试软件工程教案海南大学(共15章).ppt

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

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

    09第九章软件测试软件工程教案海南大学(共15章).ppt

    软件工程(第二版)齐治昌、谭庆平、宁洪 编著 高等教育出版社,主讲:陈明锐 教授,省级精品课程,第九章 软件测试,所谓软件测试是通过检查和提供客观证据表明软件已经满足规定的需求。软件测试是确保软件质量和降低软件成本的重要手段,是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节。本章将重点讨论测试的策略与技术,纠错的策略与技术,以及多模块软件的 软件测试内容与方法。,第九章 软件测试,测试的基本概念 黑盒测试 白盒测试 测试用例设计 软件纠错多模块程序的测试策略 面向对象系统的测试,测试的基本概念,测试(testing)的目的与任务 目的:发现程序的错误 任务:通过执行程序,暴露潜在的错误 纠错(debugging)的目的与任务 目的:定位和纠正错误 任务:消除软件故障,保证程序的可靠 运行 大程序设立独立的测试小组调试,测试的特性,挑剔性 抱着为证明程序有错的目的去测试 复杂性 设计合适的测试用例 不彻底性 Dijkstra 一句名言:“程序测试只能证明错误的存在,但不能证明错误不存在”经济性 进行有限的测试,有关测试的思考题,软件测试是一门非常重要的学科,主要研究内容是什么?软件测试需要什么样的专业基础?软件质量到底是什么?测试的目标是什么?开发一个测试系统之前你是否明白:可以测试什么?应该测试什么?最终能够测试什么?测试的目标是什么?,软件产品最大的成本是检测软 件错误、修正软件错误的成本。软件在需求分析和设计阶段占用的工作量达到总工作量的4050,说明软件开发前期的活动多么重要。当然这也包括分阶段开发原型的开销。大家熟悉的编码工作只占全部工作量的1020,而软件测试和调试的工作量占到总工作量的3040,甚至50%。在人命关天的软件(如飞机控制、核反应堆等)测试所花费的时间往往是其它软件工程活动时间之和的三到五倍。,有关测试的思考题,软件测试背景,软件是人编的所以不完美实例:1994-1995,迪斯尼的狮子王系统不支持问题Intel的pentium处理器1994年浮点除法缺陷2000年8月28日,1.13MHZ处理器一个可能导致运行程序被挂起的执行指令问题1999年12月3日,美国航天局火星极地登陆飞船失踪1991年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度千年虫,世界各地解决2000年错误超过数亿美元,软件测试的认识的发展,人们对软件测试认识的五个阶段:阶段1 测试=调试阶段2 测试是证明软件正确阶段3 测试是发现软件中错误阶段4 测试是减小软件不工作的风险(是度量软件质量要素的过程)阶段5 测试可产生低风险的软件的一 种认识上的训练,三个盲人和一头大象:你能够为质量 下定义吗?质量管理领域权威人物J.M.Juran将质量 定义为“决定产品性能和满意程度的 特征”,测试注重于产品的满意度。测试应针对这样一种情况:软件产品在一些特定的范围内不能满足客户的合理要求。通过测试过程可以评定质量风险(可能的错误),了解被测试系统中存在的错误模式(观察到的错误症状)。,质量控制技术,质量控制活动分类,开发方法学,配置管理,验证技术,评 审,正确性验证,性能调试,组件测试,集成测试,系统测试,原子事务,模块冗余性,检 错,质量控制,避免错误,容 错,调 试,测 试,软件质量问题,以软件测试为中心的软件质量保障技术软件 静态测试技术质量 软件度量技术控制 动态测试技术技术 配置管理技术 修改控制与管理技术 软件测试是保证软件质量,提高软件可靠性的关键,软件测试的目标,(1)预防错误:几乎不可实现(2)发现错误,测试的地位 G.J.Myers在中认为:1.测试是为了寻找错误而运行程序的过程。2.一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试。3.一个成功的测试是揭示了迄今为止尚未发现的错误的测试。,E.W.Dijkstra 指出:“程序测试能证明错误的存在,但不能证明错误不存在.”测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错.,把证明程序无错当作测试目的不仅是不正确的,完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的.软件测试要设法使软件发生故障,暴露软件错误 测试的“成功”与“失败”能够发现错误的测试是成功的测试,否则是失败的测试。,“测试的目的是说明程序正确地执行它应有的功能”这种说法正确吗?例:程序Triangle,输入三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6),程序都能给出正确结果,是否就可认为程序是正确的?,难以说清的软件缺陷,古谚:“一片树叶飘落在森林中没有人听见,谁能说它发出了声音?”,由于不能报告没有看见的问题,因此,没有看见就不能说存在软件缺陷,如果软件中的问题没有人发现,那么它算不算软件缺陷?”,只有看到了,才能断言软件缺陷,尚未发现的软件缺陷只能说是未知软件缺陷。,眼见为实,测试原则(1)所有的测试都应追溯到用户需求 最严重的错误(从用户角度)是那些导致软件无法满足需求的错误。程序中的问题根源可能在开发 前期的各阶段解决、纠正错误也必须追溯到前期工作。,测试与开发前期工作的关系,决定软件与系统的配合关系,需求分析,概要设计,详细设计,编 码,单元测试,集成测试,确认测试,系统测试,测试与开发个阶段的对应关系,软件开发与测试的对应关系,如下图所示:,开发前期出现错误的扩展,软件生存期各阶段间需保持的正确性,(2)概要设计时应完成测试计划,详细的测试用例定义可在设计 模型确定后开始,所有测试可 在任何代码被产生之前进行计 划和设计。,测试原则,软件测试不等于程序测试 软件测试应贯穿于软件定义与开发的整个期间;据美国一家公司统计,查出的软件错误中,属于需求分析和软件设计的错误约占 64%,属于程序编写的错误仅占 36%。程序编写的许多错误是“先天的”。,单元测试:检验每个模块能否单独 工作.集成测试:检验概要设计中模块接 口设计问题确认测试:以需求规格说明书为检 验尺度系统测试:综合检验测试可视为分析、设计、编码三个阶段的最终复审,以保证软件质量。,测试阶段工作步骤,(3)pareto原则:测试发现的错误中80%很可能起源于20%的模块中。应孤立这些疑点模块重点测试。(4)穷举测试是不可能的。(5)应由独立的底三方来构造测试。(开发和测试队伍分别建立),测试原则,测试原则,例:测试计算器程序加法测试1+0=1+99999999999999999999999999999999=2+0=2+99999999999999999999999999999999=99999999999999999999999999999999+99999999999999999999999999999999=1.0+0.1=1.0+0.2=减法测试乘法测试除法测试求平方根百分数倒数,(6)测试用例应由输入数据和预期的输 出结果两部分组成.(7)兼顾合理的输入和不合理的输入数据(8)程序修改后要回归测试(9)应长期保留测试用例,直至系统废弃。,测试原则,测试原则:软件测试是有风险的行为,数量,遗漏软件缺陷数目,测试费用,测试中,测试后,软件,测试工作量,每一个软件项目都有一个最优的测量量,最优测量量,可测试性 可测试软件的特征:可操作性可观察性可控制性可分解性简单性稳定性易理解性,“好”测试的属性:发现错误的可能性高不冗余在目的相似的测试中,应使用最可能找到错误的测试每一个测试应独立执行,错误(fault)、误差(error)和故障(failure),出轨(出故障)?,图中不表示故障,因为既没有指定期望行为也没有任何观察的行为,它也不表示误差,因为这不意味着系统正处在进一步处理将导致故障的状态.,错误(fault)、误差(error)和故障(failure),用例名称 DriveTrain参与执行者 火车司机入口条件 司机按下控制面板上的StrartTrain事件流 1.列车开始在轨道1上运行 2.列车平移到轨道2退出条件 列车运行在轨道2上特殊条件 没有,用例DriveTrain指定了列车的期望行为:,错误(fault)、误差(error)和故障(failure),测试用例标识符 DriveTrain测试位置 http:/www12.in.tum.de/要测试的特征 引擎连续运行5s特征合格/不合格标准 如果列车连续前进5s,并且至少 通过两个轨道的长度,则测试通过控制方法 驱动程序StrartTrain调用StrartTrain()方法数据 从输入文件http:/www12.in.tum.de/中 得到运行方向和持续时间,用例DriveTrain的测试用例DriveTrain:,执行这个测试用例时,可以证明系统是包含有错误的,软件测试有关概念术语和定义,软件测试要精度还是准确度很大程度上取决于产品是什么,最终取决于开发小组的目标。,既不准确又不精确,精确但不准确,准确但不精确,既准确又精确,精确和准确,软件测试有关概念术语和定义,验证和合法性检查验证是检查软件符合产品说明书的过程合法性检查是保证软件满足用户要求的过程质量和可靠性 可靠性只是质量的一个方面测试和质量评判(QA)软件测试员的目标是找出软件缺陷软件质量评判人员的主要职责是创建和加强 促进软件开发并防止软件缺陷的标准和方法,测试(test)调试(debug),以已知条件开始,使用预先定义的程序,有预知的结果,以不可知内部条件开始,结果一般不可预见,有计划,被动的,由独立的测试组,在不了解软件设计的条件下完成,由程序作者进行,发现错误,找出错误位置,排除,测试与调试(排错),软件错误分类 功能错(需求分析错误)软件结构错 数据错 编码错 软件集成错 测试定义与测试执行错误,测试用例设计 选择测试用例是软件测试员最重要 的一项工作。测试用例的属性:属性 描述name 测试用例的名称 location 可执行的完全路径名 input 输入数据或命令oracle 与测试输入相比较的期待测试结果log 测试生产的输出,程序测试举例例:程序 Triangle,输入三个整 数,表示一个三角形的三个边 长,该程序产生一个结果,指 出该三角形是等边三角形、等 腰三角形还是不等边三角形。,判断三角型的测试用例设计:输入数据 预期结果(1)6;6;6 等边(2)8;8;4 等腰(3)4;5;6 一般 还应输入非法数据:0;7;9-7;3;5 a;2;7 等,软件测试信息流,软件配置,测试,测试配置,测试工具,结果分析,排错,可靠性 分析,测试结果,错误,预期结果,出错率,改正的软件,预测的可靠性,需求规格说明书软件设计说明书 被测源程序,测试计划 测试用例(测试数据)测试驱动程序,测试设计中需要考虑的22种测试类型,黑盒测试白盒测试单元测试累计综合测试集成测试功能测试系统测试端到端测试健全测试衰竭测试接受测试,负载测试强迫测试性能测试可用性测试安装/卸载测试恢复测试兼容测试安全测试比较测试Alpha测试Beta测试,静态和动态测试,汽车的检查过程:踩油门看车漆打开前盖检查发动汽车听听发动机声音上路行使,静态测试,动态测试,静态测试:基本特征是在对软件进行 分析、检查和审阅,不实 际运行被测试的软件。静态测试约可找出3070%的逻辑设计错误.对需求规格说明书、软件设计说明书、源程序做检查和审阅,包括:是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件 缺陷;,动态测试:通过运行软件来检验软件的动态行为和运行结果的正确性动态测试的两个基本要素:被测试程序 测试数据(测试用例),动态测试方法(1)选取定义域有效值,或定义域 外无效值.(2)对已选取值决定预期的结果(3)用选取值执行程序(4)执行结果 与(2)结果相比,不吻合程序有错.,动态黑盒测试 闭着眼睛测试软件,软件,输入,不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。,输出,动态白盒测试 带上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,假如知道一个盒子包含一台计算机,而另一个盒子是人用纸笔计算,就会选择不同的测试用例,了解软件的运作方式会影响测试手段,测试的种类,软件测试的自动方式,另一类软件测试工具,可以自动执行测试用例、查找软件缺陷、分析并记录测试结果。,测试工作台(下游CASE工具),随机测试自动化工具:猴子测试员,一个想法:“如果让一百万只猴子在一百万只键盘上敲一百万年,它们最终就可能写出莎士比亚话剧等巨著”.,只要不停电,偶尔能够得到香蕉,猴子就会永远测试下去,猴子的进步,笨猴子:一点也不懂测试软件,只是随机地单击或按键,直至发生两件事情之一:完成循环或系统崩溃.,不太笨的猴子:具有崩溃辨认能力,能够重新启动系统开始测试,聪明猴子:能够从它的笨兄弟那里获得随机测试的结果,增加了对环境的认知能力,有目的地敲键盘,不仅限于查找崩溃缺陷,同时查看数据,检查 操作结果,找出与预期结果的差别,自动化测试工具实例,美国国际软件自动化(ISA)公司的Panorama for C/C+,j、Java和VB产品,自动化功能包括:软件结构分析与逻辑框图的自动化软件静态分析数据分析复杂性分析与分析结果列表的自动化软件质量分析动态性能分析软件代码分支或条件覆盖率分析软件测试用例有效性分析与测试用例最小集的自动选取软件界面手工操作过程的自动记录与自动再执行,测试的文档,测试计划 测试项目的名称各项测试的目的、步骤和进度测试用例的设计 测试报告测试项目名称实测结果与期望结果的比较发现的问题测试达到的效果,测试中产生的文档,黑盒测试,被测对象是功能独立的模块或构件,注重测试软件的功能需求。试图发现以下几类错误:不正确或遗漏的功能;接口错误;数据结构或外部数据库访问错误;性能错误;初始化和终止条件错误。几种具体的方法:(1)等价类划分 主要思想:根据被测对象的功能说明和输入域,按合理的或不合理划分为若干等价类,为每个等价类设计一个测试用例,这样大大减少测试次数,提高测试效率。,该方法步骤如下:,划分等价类 对被测程序功能说明的输入域划分等价类。以下是一些原则或经验:当规定了输入范围时可划分:无效类 有效类 无效类 当规定了输入的一组值,且对不同值做不同处理时,每个允许的输入值是一个合理的等价类,另有一个不合理的等价类(任何一个不允许的输入值)。当规定了输入数据必须遵循的规则时,可确定一个合理等价类(符合规则)和若干不合理等价类(从各种角度违反规则)。为便于设计用例,每个等价类可划分为更小的等价类。以上经验也适用于对输出数据的划分。,设计测试用例 为每个等价类编号。设计一个测试用例,使其尽可能多地覆盖尚未被覆盖的合理等价类,重复这一步直到所有合理等价类都被覆盖。设计一个测试用例,使其只覆盖一个尚未被覆盖的不合理等价类,重复这一步直到所有不合理等价类都被覆盖。,黑盒测试,例:某工厂公开招工,规定报名者年龄应在16周岁至35周岁之间(到2002年3月30日止)即出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。划分等价类如下:,“出生年月”的等价分类,设计测试用例:P192-193,黑盒测试,边界值分析法(boundary value analysis)使被测程序在边界值及其附近运行,从而更有效地暴露程序中潜藏的错误。例:P193例2,黑盒测试,错误猜测法(error guessing)猜测被测程序在哪些地方容易出错 针对可能的薄弱环节来设计测试用例 如:输入、输出数据为零的情况;输入表格为空、输入表格只有一行的情况或输入表格超过一页不满两页等。使用判定表 如果功能说明中含有多个输入条件的逻辑组合,可以建立判定表,判定表的每一列对应一个测试用例。在实际测试中,综合使用这些方法,以达到最有效的测试。,白盒测试,被测对象基本上是源程序,以程序的内部逻辑结构为基础设计测试用例。原则是:保证被测程序中每一条独立的路径至少执行一次。保证所有判断的每一分支至少执行一次。保证每一循环都在边界条件和一般条件下至少各执行一次。验证所有各内部数据结构的有效性。,白盒测试,(1)逻辑复盖测试法(logic coverage testing)用流程图来设计测试用例 逻辑覆盖测试的5种标准(示例表9.5P198),条件组合覆盖,主要用于测试选择结构。语句覆盖:每个语句 至少执行一次。Test case:A=2,B=0,X=4.问题:若AND错 写为OR,或X1 错写为X1,则错 误无法由上例测出。,(1)逻辑覆盖,每个判定的每个分支至少执行一次 Test cases:A=3,B=0,X=3 A=2,B=1,X=1 问题:若X1错写为X1,仍然无法被测出,判定覆盖:,条件覆盖,问:条件覆盖?判定覆盖 答:不一定。反例:A=2,B=0,X=1 A=1,B=1,X=2 判定/条件覆盖:即判定覆盖条件覆盖,条件覆盖,测试用例 通过 满足的 覆盖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分支,不满足判定覆盖的要求.,判定/条件 覆盖,满足条件:T1,T1,T2,T2 T3,T3 T4,T4,选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.,判定/条件 覆盖,测试用例 通过 满足的 覆盖A B X 路径 条件 分支2 0 4 ace T1,T2,T3,T4 c,e2 1 1 abd T1,T2,T3,T4 b,d 能同时满足判定、条件两种覆盖标准。取值。,判定/条件 覆盖,测试用例 通过 满足的 覆盖A B X 路径 条件 分支2 0 3 ace T1,T2,T3,T4 c,e2 1 1 abe T1,T2,T3,T4 b,e1 0 3 abe T1,T2,T3,T4 b,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)的路径,条件组合覆盖:,白盒测试,路径测试法(path testing)着眼于程序执行路径的测试方法 程序图(program graph)点覆盖边覆盖路径覆盖 以详细设计或源程序为基础导出程序的控制流图,简称为流图(flow graph),它是反映控制流程的有向图。其中小圆圈为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句,表示控制流的箭头称为边或路径。,流程图对应的程序图,注意:结点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中 测试过了。,测试用例设计,黑盒测试用例设计三角形分类程序见教材p205先看下面的例子:,黑盒测试的测试用例设计等价类划分法 把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.可从每个子集中选取一组数据来测试程序,例:某报表处理系统要求用户输入处理 报表的日期,日期限制在2001年1 月至2005年12月,即系统只能对该 段期间内的报表进行处理,如日期 不在此范围内,则显示输入错误信 息。系统日期规定由年、月的6位数字 字符组成,前四位代表年,后两位 代表月。如何用等价类划分法设计测试用例,来测试程序的日期检查功能?,如何划分等价类?有效等价类(合理等价类)无效等价类(不合理等价类)划分等价类的标准:覆盖不相交代表性,划分等价类的规则,(1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无 效等价类。,例 输入值是学生成绩,范围是0100,0 100,有效等价类1成绩100,无效等价类 成绩100,无效等价类 成绩0,划分等价类的规则:,(2)如果输入条件代表集合的某 个元素,则可定义一个有效 等价类和一个无效等价类。,划分等价类的规则:,(3)如规定了输入数据的一组值,且 程序对不同输入值做不同处理,则每个允许的输入值是一个有 效等价类,并有一个无效等价类(所有不允许的输入值的集合)。例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四 种这四个值作为四个有效等价类,另 外把四种学历之外的任何学历作为无 效等价类,划分等价类的规则:,(4)如果规定了输入数据必须遵循的规 则,可确定一个有效等价类(符合 规则)和若干个无效等价类(从不 同角度违反规则)。(5)如已划分的等价类各元素在程序中 的处理方式不同,则应将此等价 类进一步划分成更小的等价类。,用等价类划分法设计测试用例步骤:,(1)形成等价类表,每一等价类规定 一个唯一的编号;(2)设计一测试用例,使其尽可能多 地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等 价类均被测试用例所覆盖;(3)设计一新测试用例,使其只覆盖 一个无效等价类,重复这一步骤 直到所有无效等价类均被覆盖;,第一步:等价类划分,输入等价类 有效等价类 无效等价类,报表日期的类型及长度,3位数字字符(1),有非数字字符(4)少于6个数字字符(5)多于6个数字字符(6),年份范围,在20012005之间(2),小于2001(7)大于2005(8),月份范围,在112之间(3),“报表日期”输入条件的等价类表,小于1(9)大于12(10),第二步:为有效等价类设计测试用例 对表中编号为1,2,3的3个有效等价类 用一个测试用例覆盖:,测试数据 期望结果 覆盖范围,200105,等价类(1)(2)(3),输入有效,第三步:为每一个无效等价类设至少 计一个测试用例,测试数据 期望结果 覆盖范围,001MAY,等价类(4),输入无效,20015,等价类(5),输入无效,2001005,等价类(6),输入无效,200005,等价类(7),输入无效,200805,等价类(8),输入无效,200100,等价类(9),输入无效,200113,等价类(10),输入无效,不能出现相同的测试用例,本例的10个等价类至少需要8个测试用例,例:对招干考试系统“输入学生成绩”子模块设计测试用例 招干考试分三个专业,准考证号第一位 为专业代号,如: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+,等价类划分即把输入空间分解成一系列子域,软件在一个子域内的行为应是等价的。,软件错误分为两类:计算错误 域错误,针对计算错误的测试方法针对域错误的测试方法:测试域边界 划定的正确性,边界值分析法边界值分析法与等价类划分法区别(1)边界值分析不是从某等价类中 随便挑一个作为代表,而是使 这个等价类的每个边界都要作 为测试条件。(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试 情况,被测试子 域,测试内点,测试外点,软件边界与悬崖很类似,边界条件类型,如果软件测试问题包含确定的边界,那么数据类型可能是:数值字符位置数量速度地址尺寸,还要考虑数据类型的特征:第一个/最后一个最小值/最大值开始/完成空/满最慢/最快相邻/最远超过/在内,测试边界线测试临近边界的合法数据,以及刚超过边界的非法数据.越界测试通常简单地加1或很小的数(对于最大值)和减1或很小的数(对于最小值).,输入条件,报表日期的类型及长度,1个数字字符5个数字字符7个数字字符有1个非数字字符全部是非数字字符6个数字字符,显示出错显示出错显示出错显示出错显示出错输入有效,日期范围,月份范围,“报表日期”边界值分析法测试用例,测试用例说明,测试数据,期望结果,选取理由,52001520010052001.5MAY-200105,月份为1月月份为12月月份12,200101200112200100200113,200101200512200100200513,输入有效输入有效显示出错显示出错,输入有效输入有效显示出错显示出错,在有效范围边界上选取数据,仅有1个合法字符比有效长度少1比有效长度多1只有1个非法字符6个非法字符类型及长度均有效,最小日期最大日期刚好小于最小日期刚好大于最大日期,最小月份最大月份刚好小于最小月份刚好大于最大月份,测试用例设计,白盒测试用例设计学生成绩查询程序见教材p208,软件的纠错,纠错的策略试凑法设置可疑区,边试边瞧跟踪法分步执行,跟踪纠错语句推理法归纳、演绎(图下来的两张幻灯片)常用的纠错技术插入打印语句设置断点掩蔽部分程序蛮力纠错技术,归纳法,从测试结果发现的错误入手,分析它们之间的联系查找错误。是一种从特殊推断一般的系统化思考方法。,收集有关数据,组织数据,研究数据间的关系,纠正错误,能,能,不能,不能,列出所有已知的测试用例和程序执行结果,常用的构造线索的技术是“分类法”,分析线索之间的关系,找出矛盾,设计出错原因的假设,归纳排错法步骤,将假设与原始线索或数据进行比较,能否解释现象,证明假设。,提出假设,证明假设,演绎法,演绎法是一种从一般原理出发,经过排除和精化的过程,推导出结论的方法。,列举可能的原因,排除不适当的原因,对保留的假设继续推断,证明假设,纠正错误,收集更多的数据,没有剩余,不能,能,有剩余,演绎法排错的步骤,有余,多模块程序的测试策略,软件测试策略主要考虑,如何把设计测试用例的技术组织成一个系统的、有计划的测试步骤。从模块测试开始,一级一级向外扩展,直至整个系统测试完毕。在测试的各个阶段应选择适宜的白盒测试和黑盒测试方法,由软件开发人员和一个独立的测试小组(对大项目而言)共同完成测试任务。测试策略应包含测试规划、测试用例设计、测试实施和测试结果收集评估等。其中测试规划包括:测试的步骤、工作量、进度和资源等。,多模块程序的测试策略,测试的层次性 单元(模块)测试(unit testing)综合(集成)测试(integration testing)确认测试(validation testing)系统测试(system testing)程序错误的类型 语法错误 结构性错误 功能性错误 接口错误,层次测试的信息流,测试步骤及策略 所有测试过程都应采用综合测试策略;即先作静态分析,再作动态测试。并事先制订测试计划。测试过程通常可分4步进行:,编码,测试,验收,单元测试,目的 通过模块测试,使其代码达到模块说明书的需求 任务(1)对模块代码进行编译,发现并纠正其语法错误;(2)进行静态分析,验证模块结构及其内部调用序列是否正确;(3)确定模块的测试策略,并据此设计一组测试用例和必要的测试软件;(4)用选定的测试用例对模块进行测试,直至满足测试终止标准为止;(5)编制单元测试报告。,单元测试的技术,单元测试的对象是软件设计的最小单位模块。单元测试的依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。,单元测试的内容,单元测试内容包括:1)模块接口测试;2)模块局部数据结构测试;3)模块边界条件测试;4)模块中所有独立执行通路测试;5)模块的各条错误处理通路测试。模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。,测试接口考虑的因素,输入的实际参数与形式参数的个数是否相同;输入的实际参数与形式参数的属性是否匹配;输入的实际参数与形式参数的量纲是否一致;调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;调用预定义函数时所用参数的个数、属性和次序是否正确;是否存在与当前入口点无关的参数引用;是否修改了只读型参数;对全程变量的定义各模块是否一致;是否把某些约束作为参数传递。,11,测试接口考虑的因素(续),如果模块内包括外部输入输出,还应该考虑下列因素:文件属性是否正确;OPEN/CLOSE语句是否正确;格式说明与输入输出语句是否匹配;缓冲区大小与记录长度是否匹配;文件使用前是否已经打开;是否处理了文件尾;是否处理了输入/输出错误;输出信息中是否有文字性的错误。,单元测试的内容(续),局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:不合适或不相容的类型说明;变量无初值;变量初始化或省缺值有错;不正确的变量名(拚错或不正确地截断);出现上溢、下溢和地址异常。,单元测试的内容(续),在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。,单元测试的内容(续),计算中常见的错误包括:误解或用错了算符优先级;混合类型运算;变量初值错;精度不够;表达式符号错。,单元测试的内容(续),比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:不同数据类型的对象之间进行比较;错误地使用逻辑运算符或优先级;因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;比较运算或变量出错;循环终止条件不合适或不可能出现;迭代发散时不能退出;错误地修改了循环变量。,单元测试的内容(续),一个好的设计应能预见各种出错条件,并预设各种错误处理通路,错误处理通路同样需要认真测试,测试应着重检查下列问题:输出的错误信息难以理解;记录的错误与实际遇到的错误不相符;在程序自定义的错误处理段运行之前,系统已介入;异常处理不当;错误陈述中未能提供足够的定位错误信息。,单元测试实施步骤,实施步骤1、编译2、静态分析器检查3、代码评审4、动态测试测试驱动模块测试桩模块 在确定测试用例的同时,应给出对应的期望结果。应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub)。,辅助模块概念,考虑到被测模块与其它模块的联系,因此测试时需要使用两类辅助模块来模拟其他模块。,驱动模块(driver)模拟主程序功能,用于向被测模块传递数据,接收、打印从被测模块返回的数据。,桩模块(stub)又称为假模块,用于模拟那些由被测模块所调用的下属模块功能。,一般,驱动模块比桩模块容易设计。但都是额外开销。测试方法以白盒法为主。,集成(组装)测试,目的 将经过单元测试的模块逐步组装成具有良好一致性的完整的程序 任务 制订集成测试实施策略 确定集成测试的实施步骤,设计测试用例 逐一地添加模块,进行测试,集成(组装)测试步骤,自顶向下测试 先广后深实施步骤 先深后广实施步骤 由底向上测试 混合方式测试(sandwich testing)对上层模块采取自顶向下测试 对关键模块或子系统采取由底向上测试,自顶而下增值,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,并同时进行新的测试。组装测试完毕。,自底而上增值,M3,M6,M5,D1,D2,D3,D1,D1,D2,D2,D3,D3,M2,M4,M1,第四步,把已测试的子系统按程序结构连接起来完成程序整体的组装测试。,D4,D4,D4,D5,D6,M1,M4,M3,M2,M6,M5,程序模块示意图,第一步,对最底层的模块M3、M5、M6进行测试,设计驱动模块D1、D2、D3来模拟调用。,第三步,设计驱动模块D4、D5 和D6模拟调用,分别对新子系统进行测试。,第二步,用实际模块M2、M1和M4替换驱动模块D1、D2、D3。,D4,自顶向下集成,与单元测试结合起来的 自顶向下测试:,自底向上集成,三明治式集成,深度优先与宽度优先,无论是自顶而下增值还是自底而上增值,都可选择深度优先或者宽度优先增值。举例:按自顶而下增值法,写出下图中分别按照深度优先或者宽度优先增值的模块组装次序。,问 题,(1)自顶而下增值与自底而上增值各有何优、缺点?(2)为什么在实际的组装测试中,都应该采用混合增值的方法?(3)请自己设计 2-3个混合增值的测试方法。,确定集成过程的原则,自顶而下增值优点:能够尽早发现系统主控方面的问题。缺点:无法验证桩模块是否完全模拟了下属模块的功能。自底而上增值优点:驱动模块较容易编写桩模块,能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误。缺点:最后才能发现系统主控方面的问题。集成过程的原则:尽早测试关键模块。尽早测试包含I/O的模块。,混合增值,常见的混合增值方案:衍变的自顶而下先自底而上集成子系统,再自顶而下集成总系统。自底而上自顶而下增值对含有读操作的子系统采用自底而上。对含有写操作的子系统采用自顶而下。回归测试 在回归测试中自底而上,对其余部分(尤其是对修改过的子系统)采用自顶而下。,集成策略的比较(Myers 1979),确认测试,目的 确认组装好的程序是否满足(SRS)的要求任务有效性测试(黑盒测试)配置复审(confinguration review)验收测试专用 alpha与beta测试通用,确认测试(validation testing),1、任务 又称为有效性测试或功能测试。其任务是验证系统的功能、性能等特性是否符合需求规格说明。,选择测试人员,选择测试用例,实际运行测试,软件计划,用户文档,开发文档,源程序文本,支持环境,有效性测试,软件配置审查,管理机构裁决,专家鉴定会,交用户,运行维护,测试报告,软件配置,2、确认测试步骤,(1)有效性测试制定测试计划,运用黑盒法,验证软件特性是否与需求符合。,(2)软件配置复查软件配置 指软件工程过程中所产生的所有信息项:文档、报告、程序、表格、数据。随着软件工程过程的进展软件配置项(SCI software Configuration Item)快速增加和变化。应复查SCI

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开