《软件工程》教案07 编码及测试.docx
- 文档编号:2200131
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:24
- 大小:36.82KB
《软件工程》教案07 编码及测试.docx
《《软件工程》教案07 编码及测试.docx》由会员分享,可在线阅读,更多相关《《软件工程》教案07 编码及测试.docx(24页珍藏版)》请在冰豆网上搜索。
《软件工程》教案07编码及测试
山东轻工业学院
教师授课教案
课程名称:
软件工程
课程代码:
0310040
学分:
3
课程类别:
选修课
开课单位:
信息科学与技术学院
授课班级:
计科07-12
授课教师:
赵培英
山东轻工业学院教务处制
授课时间
2009年11月18日星期三第34节
2009年11月20日星期五第34节
2009年11月27日星期五第34节
2009年12月2日星期三第34节
授课内容概要
第七章编码与测试
第一节编码(程序设计语言的选择,编码的风格。
)
第二节软件测试基础(软件测试的目标,软件测试的基本原则,测试的步骤,测试策略,两种测试方法。
)
第三节单元测试(单元测试的重点,单元测试的方法:
代码审查、计算机测试。
)
第四节集成测试(自顶向下集成策略、自底向上集成策略,不同集成测试策略的比较,回归测试。
)
第五节确认测试(确认测试的范围,软件配置复查,Alpha测试和Beta测试。
)
第六节面向对象测试(OO语境对测试的影响,OO测试策略,OO测试用例设计。
)
第七节白盒测试技术(逻辑覆盖测试用例的设计,基本路径测试用例的设计,数据流测试简介,循环测试简介。
)
第八节黑盒测试技术(等价划分测试法,边界值分析法,错误推测法。
)
第九节调试(调试过程,调试途径。
)
目的要求
✧了解编码的风格和软件测试的目标,了解OO测试;
✧掌握软件测试的方法、步骤、各测试阶段的任务和原理、测试和调试的区别;
✧熟练掌握黑盒测试和白盒测试的技术和方法。
重点
✧软件测试的方法、步骤;黑盒测试中的等价分类法;
✧白盒测试中的逻辑覆盖测试和基本路径测试。
难
点
✧逻辑覆盖测试用例设计
✧基本路径测试用例设计
作业布置
1.编码时为什么需要遵循一定的编码风格?
试给出一些编码时应遵循的原则。
2.软件测试的目标是什么?
3.什么是单元测试和集成测试?
各自特点?
4.简述测试的步骤,及各阶段的任务和步骤。
5.对给定的程序段,设计对应的语句覆盖和路径覆盖测试用例。
参考书
1.《软件工程》钱乐秋等清华大学出版社
2.软件工程导论(第四版),张海藩主编,清华大学出版社,2003年。
3.面向对象与经典软件工程(第5版)(英文影印版),(美)StephenR.Schach主编,机械工业出版社,2002年。
课型
理论课
学
时
分
配
复习
5分钟
主要教具
多媒体
讲授
35分钟
教学方法
多媒体课件
指导
2分钟
教学手段
讲授结合实例
总结
3分钟
备注
授课:
双周周三34,每周周五34,轻化B507
答疑:
每周四78节,机电C415
学时分配:
指本章节每节课(45分钟)的平均分配情况
授课内容
备注
复习及引言
讲授新课
第一部分程序设计语言和编码
一、程序设计语言的选择
(一)选择程序设计语言的理想标准
Ø易测试维护:
有理想的模块化机制,及可读性好的控制结构和数据结构;
Ø便于调试和提高可靠性:
使编译程序能够尽可能多地发现程序中的错误
Ø为了降低成本:
有良好的独立编译机制
(二)特定开发项目程序设计语言的选择
Ø应用领域――首要的标准
Ø算法和计算复杂性
Ø软件运行环境
Ø用户需求,特别是性能需求
Ø数据结构的复杂性
Ø软件开发人员的知识水平――多种语言都适合,考虑开发人员较熟悉的
Ø可用的编译器与交叉编译器
(三)选择高级语言还是低级语言:
优先选择高级语言,必要时用低级语言
二、编码风格
(一)源程序内部文档
1)对标识符:
含义鲜明,缩写规则应一致,并应给每个名字加注解。
2)对注解:
内容一定要正确;序言性注释;功能性注释;空格或空行区分
3)对程序清单的布局:
利用适当的阶梯形式使程序的层次结构清晰明显
(二)数据说明
Ø数据说明的次序应当规范化
Ø说明语句中变量安排有序化
Ø使用注解说明复杂数据结构
(三)语句构造:
使语句简单明了:
Ø不要为了节省空间而把多个语句写在同一行;
Ø尽量避免复杂的条件测试;
Ø尽量减少对“非”条件的测试;
Ø避免大量使用循环嵌套和条件嵌套;
Ø利用括号使逻辑表达式或算术表达式的运算次序清晰直观。
(四)输入和输出
Ø对所有输入数据都进行检验;
Ø检查输入项重要组合的合法性;
Ø保持输入格式简单;
Ø使用数据结束标记,不要要求用户指定数据的数目;
Ø明确提示交互式输入的请求,详细说明可用的选择或边界数值;
Ø当程序设计语言对格式有严格要求时,应保持输入格式一致;
Ø设计良好的输出报表;
Ø给所有输出数据加标志。
第一次课
=======
第1节
=======
复习:
设计含义?
概念设计与技术设计的区别?
技术设计的五种方法?
设计的三个层次?
不同体系结构设计策略的比较?
优秀设计的特征?
耦合与内聚的不同种类?
设计文档包括的内容?
引出:
通过软件生命周期。
指出:
编码及测试均属实现。
第二部分、软件测试基础
一、软件测试的目的和原则
(一)软件测试的目的
GlenMyers给出的软件测试目的:
测试是一个为了发现错误而执行程序的过程
一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例
一个成功的测试是指揭示了迄今为至尚未发现的错误的测试
(二)软件测试的原则
Davis提出了一组指导软件测试的基本原则:
1)所有的测试都应可追溯到客户需求
2)应该早在测试开始之前就制定测试计划
3)注意测试中的群集现象:
测试中发现的80%的错误可能来自于20%的程序代码
4)测试应由小规模到大规模
5)不可能穷举测试
6)应由独立的第三方来承担测试
(三)软件测试的对象
需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。
二、软件测试的方法
白盒测试(白箱测试,结构测试)
黑盒测试(黑箱测试,行为测试,功能测试)
三、测试完成的标准
几种实用的测试完成标准:
1.Musa和Ackerman提出了一个基于统计标准的答复:
“不,我们不能绝对地认定软件永远也不会再出错,但是相对于一个理论上合理的和在试验中有效的统计模型来说,如果一个在按照概率的方法定义的环境中,1000个CPU小时内不出错运行的概率大于0.995的话,那么我们就有95%的信心说,我们已经进行了足够的测试”。
2.使用指定的测试用例设计方法产生测试用例,运行这些测试用例均未发现错误(包括发现错误后已被纠正的情况),则测试可终止。
3.观察测试阶段中单位时间内发现错误数目的曲线。
通过有关错误观点引出:
“软件测试是为了证明程序是正确的,即测试能发现程序中所有的错误”。
“程序测试是证明程序正确地执行了预期的功能”。
强调目的及原则
详细方法以后讲
什么时候停止程序测试?
是一个最困难的问题,但一定要停止。
第三部分、测试策略
按4个步骤进行,即单元测试、集成测试、确认测试和系统测试。
一、单元测试(UnitTesting)
是针对软件设计的最小单位─程序模块,进行正确性检验。
需要从程序的内部结构出发设计测试用例。
多个模块可以平行地独立进行单元测试。
(一)单元测试的内容
依据:
详细设计说明书和源程序清单
方法:
主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例。
(1)模块接口测试
在单元测试的开始,应对通过被测模块的数据流进行测试。
测试项目包括:
调用本模块的输入参数是否正确;
本模块调用子模块时输入给子模块的参数是否正确;
全局量的定义在各模块中是否一致。
(2)局部数据结构测试
不正确或不一致的数据类型说明;
使用尚未赋值或尚未初始化的变量;
错误的初始值或错误的缺省值;
变量名拼写错或书写错;
不一致的数据类型;
全局数据对模块的影响。
(3)路径测试
选择适当的测试用例,对模块中重要的执行路径进行测试。
应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。
对基本执行路径和循环进行测试可以发现大量的路径错误。
(4)错误处理测试
出错的描述是否难以理解;
出错的描述是否能够对错误定位;
显示的错误与实际的错误是否相符;
对错误条件的处理正确与否;
在对错误进行处理之前,错误条件是否已经引起系统的干预等。
(5)边界测试
注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。
对这些地方要仔细地选择测试用例,认真加以测试。
如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。
=======
第2节
=======
又称模块测试。
模块接口测试、错误处理测试、边界测试利用黑盒测试法
而路径测试、局部数据结构测试为白盒测试法
(二)单元测试过程
通常与编码工作结合起来进行。
模块本身不是一个独立的程序,在测试模块时,必须为每个被测模块开发一个驱动(driver)程序和若干个桩(stub)模块。
单元测试原理:
驱动模块接收测试数据,把测试数据传送给被测模块,接收被测模块的返回数据,并打印相关结果。
桩模块代替被测试的模块所调用的模块,它接受被测模块的调用,验证入口信息,把控制连同模拟结果返回给被测模块。
二、集成测试(IntegratedTesting)
也称组装测试、联合测试
经单元测试后,每个模块都能独立工作,但把它们放在一起往往不能正常工作。
主要问题在于:
接口处数据丢失;
模块对其他模块的副作用;
子功能组合起来达不到期望的主功能;
模块组合过程中误差累积以至无法接受;
全局数据结构存在的问题。
(一)集成的方式
非增量式集成:
“一步到位”。
错误难定位。
改错易引入新错。
增量式集成:
错误往往与新加入的模块有关。
可分为自顶向下集成和自底向上集成。
普遍采用。
1、自顶向下集成:
Ø从主控模块开始
Ø按照控制层次,将直接或间接从属的模块按深度优先或广度优先的方式逐个集成到整个结构中,并对其进行测试。
Ø自顶向下集成的步骤:
(1)主控模块(主程序)被直接用作驱动程序,所有直接从属于主控模块的模块用桩模块替换,然后对主控模块进行测试;
(2)根据集成的实现方式(深度优先或广度优先),下层的桩模块一次一个地替换成真正的模块,从属于该模块的模块用桩模块替换,然后对其进行测试;
(3)用回归测试来保证没有引入新的错误;
(4)重复第
(2)和第(3)步,直至所有模块都被集成。
2、自底向上集成:
Ø从最底层模块开始
Ø然后按照程序结构图的控制层次将上层模块集成到整个结构中,并对其进行测试。
Ø自底向上集成的步骤:
(1)将低层模块组合成能实现软件特定功能的簇;
(2)为每个簇编写驱动程序,并对簇进行测试;
(3)移走驱动程序,用簇的直接上层模块替换驱动程序,然后沿着程序结构的层次向上组合新的簇;
(4)凡对新的簇测试后,都要进行回归测试,以保证没有引入新错误;
(5)重复第
(2)步至第(4)步,直至所有的模块都被集成。
结合实例
实例
实例
(二)不同集成测试方式的比较
自顶向下集成的优点:
不需要驱动模块;能尽早对程序的主要控制和决策机制进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件工程教案07 编码及测试 教案 07 编码 测试