软件工程8-史济民详解

上传人:我** 文档编号:117874908 上传时间:2019-12-11 格式:PPT 页数:38 大小:839KB
返回 下载 相关 举报
软件工程8-史济民详解_第1页
第1页 / 共38页
软件工程8-史济民详解_第2页
第2页 / 共38页
软件工程8-史济民详解_第3页
第3页 / 共38页
软件工程8-史济民详解_第4页
第4页 / 共38页
软件工程8-史济民详解_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《软件工程8-史济民详解》由会员分享,可在线阅读,更多相关《软件工程8-史济民详解(38页珍藏版)》请在金锄头文库上搜索。

1、湘 潭 大 学 第八章 编码编码 和测试测试 编码概述 编码语言与编码工具 编码示例 测试的基本概念 黑盒测试和白盒测试 测试用例设计 多模块程序的测试策略 面向对象系统的测试 8.1 编码概述 编码的目的 编码 设计模型-源程序- 可执行代码 (不可执行的) (可执行的) 编码的过程 熟悉所选语言的功能和程序开发环境 仔细阅读设计模型 弄清要编码的模块的外部接口与内部过程 编码的风格 追求“聪明”和“技巧”-提倡“简明”和“直接” 使用标准的控制结构 清晰的前提下求取效率 . Make it right before you make it faster. . Make it clear b

2、efore you make it faster. . Keep it right when you make it faster. (求快不忘保持程序正确) . Keep it simple to make it faster. (保持程序简单以求快) . dont sacrifice clarity for “efficiency”. (书写清楚,不要为“效率”牺牲清楚) 源程序的文档化 有意义的变量名称 适当的注释 标准的书写格式 用分层缩进的写法显示嵌套结构的层次; 在注释段的周围加上边框; 在注释段与程序段、以及不同程序段之间插入 空行; 每行只写一条语句; 书写表达式时,适当使用空

3、格或圆括号等作隔 离符; 8.2 编码语言与编码工具 编码语言的发展 面向机 器的语言 高级语 言 (第3代) 甚高级 语言 机器语言 (第1代) 汇编语 言 (第2代) 结构 语言 基础 语言 面向 语言 第4代 语 言 常用的编码语言 基础语言 FORTRAN COBOL BASIC 结构化语言 Pascal C Ada 面向对象语言 C+ Java C# 编码语言的选择 程序设计语言的选择 要为待开发项目选择合适的程序设计语言,应充 分考虑到项目的各种需求,结合各种语言的心理特 性、工程特性、技术特性以及应用特点,尽量选取 实现效率高且易于理解和维护的语言。 选择编码语言的标准 应用领域

4、 算法与计算复杂性 数据结构的复杂性 效率的考虑 适用各类应用领域的语言 年代应应用领领域主要语语言其他语语言 20世纪纪60 年代 商业业COBOLAssembler 科学计计算FORTRANALGOL,BASIC,APL 系统统AssemblerForth 人工智能LISPSNOBOL 现现代 商业业COBOL、C+、 Java、电电子表格 C、PL/1 科学计计算FORTRAN、C、 C+、Java BASIC 系统统C、C+、JavaAda、Modula 人工智能LISP、Prolog 编码工具 基于4GL的编码工具 Eclipse NetBeans Visual Studio Del

5、phi Powerbuilder 8.3 编码示例 网上购物系统 将设计模型转换为源代码 注册 维护购物车 8.4 测试的基本概念 软件测试 动态查找程序代码中的各类错误和问题的过程 测试的目的与任务 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在 的错误。 纠错的目的与任务 目的:定位和纠正错误; 任务:消除软件故障,保证程序的可靠运行。 测试和纠错信息流程 软软件 测试结测试结 果 错误错误 信息 改正信息 测试测试 用例 期望结结果 测试测试评评价纠错纠错 测试的特性 挑剔性 只有抱着为证明程序有错的目的去测试,才能把程 序中潜在的大部分错误找出来 复杂性 设计测试

6、用例是一项需要细致和高度技巧的工作 不彻底性 程序测试只能证明错误的存在,但不能证明错误不 存在 经济性 选择一些典型的、有代表性的测试用例,进行有限 的测试 测试的种类 软软件测试测试 方法的分类类 软软件测试测试 静态测试态测试 (程序不执执行) 动态测试动态测试 (程序执执行) “办办公桌”检查检查 会审审 走查查(排查查) 静态态分析器 (自动动工具) 代码评审码评审 (人工方式) 黑盒测试测试 (测试测试 功能) 白盒测试测试 (测试结测试结 构) 测试文档 测试计划 测试内容说明 测试项目的名称 各项测试的目的 步骤和进度 测试用例的设计 测试报告 测试结果 测试项目名称 实测结果

7、与期望结果的比较 发现的问题 测试达到的效果 软件测试过程 测试过程和项目开发过程完全平行,并 有机地交互 将测试出的问题纳入项目的风险和进度 分析中,以调整下一步的开发和测试活 动 先做测试需求和设计,再后才是测试实 施 8.5 黑盒测试和白盒测试 黑盒测试 根据被测试程序功能来进行测试 等价分类法 边界值分析法 错误猜测法 白盒测试 以程序结构为依据的测试方法 逻辑覆盖法 路径测试法 黑盒测试 等价分类法(equivalence partitioning) 把输入数据的可能值划分为若干等价类 有效等价类和无效等价类 每一无效等价类至少需要一个测试用例 例子 某工厂公开招工,规定报名者年龄应

8、在16 周岁至35周岁之间(到2008年3月止)即出生年 月不在上述范围内,将拒绝接受,并显示“年龄 不合格”等出错信息。 “出生年月”的等价分类 输入数据有效等价类无效等价类 出生年月6位数字字符 有非数字字符 少于6个数字符 多于6个数字符 对应 数值 在197302199203 之间 199203 月份对应 数值 在112之间 等于“0” 12 无效等价类的测试用例 测试数据 期望结果 测试范围 MAY,75 输入无效 19755 输入无效 1978011 输入无效 195512 年龄不合格 199606 年龄不合格 198200 输入无效 197522 输入无效 黑盒测试 边界值分析法

9、(boundary value analysis) 使被测程序在边界值及其附近运行,从而更 有效地暴露程序中潜藏的错误 错误错误猜测测法(error guessing) 猜测被测程序在哪些地方容易出错 针对可能的薄弱环节来设计测试用例 白盒测试 逻辑覆盖测试法(logic coverage testing) 用流程图来设计测试用例 逻辑覆盖测试的5种标准 发 现 错 误 的 能 力 弱 强 语句覆盖每条语句至少执行一次 判定覆盖每一判定的每个分支至少执行一次 条件覆盖每一判定中的每个条件,分别按“真”、“ 假”至少各执行一次 判定/条件 覆盖 同时满足判定覆盖和条件覆盖的要求 条件组合 覆盖

10、求出判定中所有条件的各种可能组合值 ,每一可能的条件组合至少执行一次 白盒测试 路径测试法(path testing) 着眼于程序执行路径的测试方法 程序图(program graph) 点覆盖 边覆盖 路径覆盖 8.7 多模块程序的测试策略 测试的层次性 单元(模块)测试(unit testing) 综合(集成)测试(integration testing) 确认测试(validation testing) 系统测试(system testing) 单元测试 目的 通过模块测试,使其代码达到模块说明书的需求 任务 (1) 对模块代码进行编译,发现并纠正其语法错误 ; (2) 进行静态分析,验

11、证模块结构及其内部调用序 列是否正确; (3) 确定模块的测试策略,并据此设计一组测试用 例和必要的测试软件; (4) 用选定的测试用例对模块进行测试,直至满足 测试终止标准为止; (5) 编制单元测试报告。 实施步骤 编译 静态分析器检查 代码评审 动态测试 测试驱动模块 测试桩模块 集成测试 目的 将经过单元测试的模块逐步组装成具有良好 一致性的完整的程序 任务 制订集成测试实施策略 确定集成测试的实施步骤,设计测试用例 逐一地添加模块,进行测试 策略与步骤 自顶向下测试 先广后深实施步骤 先深后广实施步骤 由底向上测试 混合方式测试(sandwich testing) 对上层模块采取自顶

12、向下测试 对关键模块或子系统采取由底向上测试 确认测试 目的 确认组装好的程序是否满足(SRS)的要求 任务 有效性测试(黑盒测试) 配置复审(confinguration review) 验收测试专用 alpha与beta测试通用 系统测试 目的 软件安装到系统中以后,能否与系统的其余 部分协调运行 任务 测试是否与硬件协调运行 测试是否和原来就有的其它软件协调运行 测试是否完成SRS对它的要求 终止测试的标准 规定测试策略和应达标准 白盒测试时一般可规定以完全覆盖为标准语 句覆盖率和判定覆盖率必须分别达到100% 黑盒测试时,可选择一或数种方法设计测试 用例,当所有测试用例全部用完后便可终

13、止 规定至少要查出的错误数量 把查出预定数量的错误,作为某类应用程序 的测试终止标准 面向对象系统的测试 OO软件的测试策略 OO软件的测试策略与传统测试策略有许多不 同。 OO软件测试用例设计 与传统的测试用例设计不同,OO测试更多地 关注于测试类的状态设计合适的操作序列。 OO软件的测试策略 OO软件的单元测试 对类的测试等价于传统的单元测试,区别在 于传统的单元测试是针对程序的函数、过程 等进行测试。 在OO软件,单元是指封装的类和对象。单 元测试是全面地测试类和对象所封装的属性 和操纵这些属性的操作的整体。 发现类的所有操作中存在的问题 。 与其他的类协同工作时可能出现的错误。 OO软件的集成测试 面向对象程序没有层次的控制结构,相互调 用的功能也是分散在不同的类中。所以传统 的集成测试方法不再适用。加之面向对象程 序具有动态特性,程序控制流往往无法确定 ,故只能进行基于黑盒方法的集成测试。 基于黑盒方法的集成测试策略: 基于线程的测试(thread-based testing):每 个线程被集成并分别测试。 基于使用(use-based)的测试:从相对独立的 类开始构造系统,然后集成并测试调用该独立类 的类,直到构造出完整是系统。 OO软件的确认测试和系统测试 采用传统的黑盒法对 OOA阶段的用例所描 述的用户交互进行测试。 导出OO系统测试的测试用例。 对象行为模型

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号