实现
0.概述
1.编码是对设计的进一步具体化,因此程序的质量主要取决于软件设计的质量
2.软件测试的两个阶段
- 编码和丹玉测试:编写者和测试者是同一个人
- 集成测试:专门的测试人员
3.测试与调试
- 1.测试:目标是发现软件中的错误
- 2.调试:通过测试发现错误之后还必须诊断并改正错误,是测试阶段最困难的工作
1.编码
1.旋转程序设计语言
- 1.系统用户的要求
- 2.可以使用的编译程序
- 3.可以得到的软件工具
- 4.工程规模
- 5.程序员的知识
- 6.软件可移植要求
- 7.软件的应用领域
2.编码风格
-
1.程序内部的文档:标识符,注解,程序的视觉组织等
-
2.数据说明
-
3.语句构造
-
4.输入输出
-
5.效率
- 程序运行时间
- 存储器效率
- 输入输出的效率
2.软件测试基础
1.软件测试目标
- 1.测试是为了发现程序中的错误而执行程序的过程
- 2.好的测试方案极可能发现迄今为止未发现的错误的测试方案
- 3.成功的测试是发现了至今为止尚未发现的错误的测试
2.软件测试准则
- 1.所有测试都应该能追溯到用户需求
- 2.应该远在测试开始之前就制定出测试计划
- 3.把pareto原理应用到软件测试中
- 4.应该从“小模块”测试开始,并逐步进行“大规模测试”
- 5.穷举测试是不可能的
- 6.应由独立的第三方从事从事工作
3.测试方法
- 1.黑盒测试又称功能测试:完全不考虑程序的内部结构和处理功能
- 2.白盒测试又称结构测试
4.测试步骤
- 1.模块测试:目的是保证每个模块作为一个单元能正确运行,又称单元测试,此步骤中所发现的往往是编码和详细设计的错误
- 2.子系统测试:将模块测试后的结合,注重测试模块间的接口
- 3.系统 测试:把测试过的子系统装配后测试,往往发现的软件设计中的错误,也就是发现需求说明中的错误
- 4.验收测试又称为确认测试:测试内容与系统测试基本类似,添加了用户,目的是验收系统确实能够满足用户的需求,发现的往往是系统需求说明书中的错误
- 5.平行运行
5.测试阶段的信息流
-
1.输入
- 1.软件配置:需求说明书,设计说明书,源程序,清单等
- 2.测试配置:测试计划,测试方案
-
2.输出
- 1.上述测试配置
- 2.实际参数结果
- 3.测试记录
3.单元测试
0.概述
- 1.主要采用白盒测试技术
- 2.对多个模块的测试可以并行进行
- 3.根据详细设计描述,可采用人工测试和计算机测试两种方法
1.测试重点
- 1.模块接口
- 2.局部数据结构
- 3.重要的执通路
- 4.出错处理通路
- 5.边界条件
2.代码审查
- 1.组长,程序设计者。程序编写者,程序测试者
- 2.代码审查比计算机测试的优越之处是:一次审查会上可以发现许多错误
3.计算机测试
- 1.驱动程序:主程序。接收测试数据,把这些数据传送给被测试的模块。并且印出有关的结果
- 2.存根程序:代替被测试的模块所调用的模块
4.集成测试
0.概述
- 1.非渐增式测试:先分别测试每个模块,再把所有模块按实际要求放在一起结合成所要的程序
- 2.渐增式测试:把下一次应该测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来进行测试
1.自顶向下集成
- 深度优先
- 宽度优先
2.自底向上
3.不同集成测试策略的比较
-
自顶向下
-
优点
- 1.不需要测试驱动程序
- 2.能够在测试阶段的早期上次按并验证系统的主要功能
- 3.能在早期发现上层模块的接口错误
-
缺点
- 1.需要存根程序
- 2.底层关键模块中的错误发现较晚
- 3.早期不能充分展开人力
-
-
自底向上:优点缺点与自顶向下相反
4.回归测试:指重新执行已经做过的测试的某个子集,以保证上述这些变化没有带来非预期的副作用
5.确认测试
1.确认测试的范围 通常使用黑盒测试法
- 功能和性能与用户要求一致,软件是可以接受的
- 功能和性能与用户要求有差距
2.软件配置复查
3.alpha和beta测试
- Alpha测试:由用户在开发者的场所进行,并且在开发者的指导下进行测试
- Beta测试:由软件的最终用户们在一个或多个客户场所进行
6.白盒测试技术
1.逻辑覆盖
- 1.语句覆盖:选择足够多的测试数据,使被测试程序中的每个语句至少执行一个
- 2.判断覆盖:又称分支覆盖,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次
- 3.条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果
- 4.判定/条件覆盖:使得判定表达式中的每个条件都能取到各种可能的值,而且每个判定表达式也都取到各种可能的结果
- 5.条件组合覆盖:每个判定表达式中的各种可能组合都至少出现一次
- 6.点覆盖:与语句覆盖标准相同
- 7.边覆盖:与判定覆盖一致
- 8.路劲覆盖:使得程序中的每条可能路径都至少执行一次
2.控制结构测试
-
1.基本路径测试
-
1.根据过程设计结果画出相应的流图
-
2.计算流图的环形复杂度
-
3.确定线性独立路劲的基本集合
- 1.独立路径是至少引入程序的一个新处理语句集合成一个新条件的路劲,用流图属于描述,独立路劲至少包含一条在定义该路劲之前不曾用过的边
- 2.环形复杂度决定了出现中独立路径的数量,且是确保出现中所有语句至少被执行一次所需的测试数量的上界
-
4.设计可强制执行基本集合中每条路径的测试用例
-
-
2.条件测试page169
-
3.循环测试page170
- 简单循环
- 串接循环
- 嵌套循环
7.黑盒测试
1.等价划分:把程序的输入域划分成若干个数据类,据此到处测试用例
- 1.如果规定了输入值的范围,则可划分出一个有效等价类,两个无效等价类
- 2.如果规定了输入数据的个数,则类似地可以划分出一个有效的等价类和两个无效的等价类
- 3.如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许输入的输入值是一个有效的等价类,此外还有一个无效的等价类
- 4.如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类和两个无效的等价类
- 5.如果规定了输入数据为整形,则可以划分出正整数,零和负整数3个有效类
- 6.如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表
2.边界值分析
- 刚好小于
- 刚好等于
- 刚好大于
3.错误推测
8.调试
1.调试过程
2.调试途径
-
1.蛮干发
-
2.回溯法
-
3.原因排除法
- 1.对分查找法
- 2.归纳法:从个别到一般
- 3.演绎法:从一般到个别
9.软件可靠性
1.基本概念
- 1.软件可靠性:程序在给定时间间隔内,按照说明书的规定成功地运行的概率
- 2.软件可用性:程序在给定时间点,按照规格说明书的规定成功运行的概率
2.估算平均无故障时间的方法page180

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!