软件工程 第六章 编码与测试

第六章 编码与测试

6.1编码

1.程序设计语言
1)机器语言
2)汇编语言
3)高级语言

2.选择程序设计语言的标准
1)从用户方面考虑
2)从程序员方面考虑
3)从软件的可移植性考虑
4)从应用领域考虑
Java主要应用领域是企业应用开发;
C语言的应用领域很广,
从底层的嵌入式系统、工业控制、智能仪表、编译器、硬件驱动,
到高层的行业软件后台服务器、中间件等。

3.编码风格
1)程序文档化
a.标识符命名规范
b.适当的注释

2)数据说明
a.说明次序规范化
b.变量排列有序化
c.注释说明复杂的数据结构

3)语句结构
a.一行只写一条语句;
b.程序等编写首先考虑清晰,不要为了提高效率而使语句变得过分复杂
c.要模块化,模块间耦合能够清晰可见,利用信息隐蔽,确保每个模块的独立性
d.尽量不用“否定”条件的语句
e.尽量不用循环嵌套和条件嵌套
f.最好利用括号使表达式的运算清晰可见

4)输入/输出

6.2测试概述

1.测试的错误掼蛋
很多人往往认为测试是为了证明程序是正确的,即测试能发现程序中
所有的错误。要通过测试发现程序中的所有错误,就要穷举出所有可
能的输入数据。事实上这是不可能的,即使一个规模不大的程序,
所有可能的输入数据也十分庞大,受时间、人力和资源的限制,
不可能穷举出所有可能的输入数据。

2.测试的目的
测试阶段的根本目的是尽可能多地发现程序中的错误,
最终提高目标系统的质量。但是提高系统的质量不能依赖于测试,
系统的高质量是分析和设计出来的,而不是靠测试修补出来的

3.测试用例
测试用例,通常指一项特定的产品进行测屙屎的描述,体现测试方案、
方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、
预期结果、测试脚本等,并形成文档。不同类别的软件,测试用例是不同的。

4.测试准则
(1)所有的测试都是根据客户需求进行的
(2)制定测试计划应在测试开始工作之前
(3)80%的错误可能来自于20%的代码
(4)测试应从“小规模”开始,逐步转向“大规模
(5)穷举所有测试用例是不可能的	
(6)为了达到最有效的测试,应由独立的第三方来承担测试任务
(7)在设计测试用例时,应包括正确地输入条件和不正确的输入条件
(8)严格按照测试计划,排除测试的随意性
(9)妥善保管测试计划、测试用例、出错统计和最终分析报告,为维护提供方便

5.测试方法和技术
1)静态测试技术
不运行被测程序,仅通过分析或检查源程序等语法、结构、过程、接口等
来检查程序等正确性,这种测试称为静态测试。静态测试包括桌前检查、
代码会审及步行检查
a.桌前检查:程序员之间相互交换程序检查
b.代码会审:由一组人通过阅读、讨论和争议,对程序进行静态分析
c.步行检查:预先准备测试数据,让与会者充当“计算机”检查程序的状态。
有时这样做可能比真正运行程序发现更多的错误

2)动态测试技术

6.测试步骤
1)单元测试
2)集成测试
3)确认测试
4)系统测试
a.功能测试
b.压力测试
c.性能测试
d.容量测试
e.用户界面测试
f.兼容性测试

6.3单元测试

1.单元测试的人物
1)模块接口测试
2)局部数据结构完整性测试
3)模块执行路径测试
4)模块内部错误处理测试

2.单元测试方法
1)人工测试
2)计算机测试

6.5集成测试

1.自顶向下集成
2.自底向上集成
3.两种集成策略的比较
自顶向下集成方法的优点在于能尽早地对软件系统的功能进行检验,
而且能较早地发现上层模块的接口错误。缺点是当测试上层模块时,
下层模块需要使用桩模块替代,桩模块不能反映真实情况、
重要数据不能及时回送到上层模块,因此测试并不充分,
并且开发桩模块需要一定的开销

自底向上集成的优点是不需要桩模块,测试用例的设计也相对简单,
单缺点是系统最后一个模块加入时才具有整体形象。
它与自顶向下集成方法的优点恰好相反。因此,在测试软件系统时,
应根据软件系统的特点和工程的进度,选用适当的测试策略,
有时混合测月更为有效,上层模块采用自顶向下集成方法,
下层模块采用自底向上集成方法。

6.5白盒测试技术

白盒测试是一种测试用例设计方法,把软件看成一个透明的盒子。
按照程序内部的逻辑结构测试程序,
测试人员完全知道程序等内部结构和处理过程。
白盒测试的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。

1.逻辑覆盖
人们不可能做到穷举所有的测试用例覆盖程序中的每一条路径。
因此测试用例应尽可能多地覆盖程序的路径,已成为测试人员的共识。
为了衡量覆盖程度,下面给出一些覆盖标准。

1)语句覆盖
语句覆盖是指选择足够多道测试用例,将被测程序中每个语句至少执行一次
白盒测试是根据程序等流程图来设计测试用例的。

2)判定覆盖
判定覆盖又称分支覆盖,含义是:设计足够多测试用例,
使得被测程序中的每个判定的“真”“假”分支至少被执行一次
。只要满足了判定覆盖标准就一定满足语句覆盖标准,反之不然。

3)条件覆盖
设计足够多道测试用例,使得被测程序中的每个判定表达式中
的每个逻辑条件的可能值至少都被满足一次。
而判定覆盖只关心整个判定表达式的值。
因此条件覆盖通常要比判定覆盖强。

4)判定条件覆盖
条件覆盖不一定满足判定覆盖,
判定覆盖也不一定满足条件覆盖。因此出现了一种覆盖标准,
既满足条件覆盖,又满足判定覆盖。它的含义是:设计足够多道测试用例,
使得被测程序中的每个判定表达式的判定结果(真/假)至少满足一次,
同时判定表达式的每个逻辑值也至少被满足一次。

5)条件组合覆盖
条件组合覆盖是更强的逻辑覆盖标准,
它的含义是:设计足够多道测试用例,
使得被测程序中的每个判定表达式中的条件的所有可能组合都至少被满足一次。

6)路径覆盖
路径覆盖的含义是:设计足够多的测试用例
,使得被测程序中的每条路至少被执行一次。

2.基本路径测试
基本路径测试是在程序流图的基础是,通过分析程序等环境复杂度,
导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试 用例要保证被测程序中的每个执行语句至少执行一次,
而且每个条件在执行时都将分别取真假两种值。

使用基本路径测试技术设计测试用例的步骤如下:
(1)根据过程设计结果画出对应的流程图
(2)计算流图的环形复杂度
(3)确定独立路径的基本集合
(4)设计执行基本集合中的每一条路径的测试用例

6.6测试技术

黑盒测试又称功能测试,把测试对象看作一个黑盒子。
测试人员完全不考虑程序内部的逻辑结构和内部特性,
只根据程序等功能和需求规格说明书,检查程序的功能
是否复合它的需求规格说明。

白盒测试在测试的早期阶段进行,而黑盒测试主要在测试的后期进行。
黑盒测试力争发现以下类型的错误:
(1)功能错误或遗漏
(2)在接口上,输入接收错误或输出结果错误
(3)数据结构错误或外部信息(如数据库)访问错误。
(4)性能错误
(5)初始化或终止错误

采用黑盒技术测试用例的方法有:
等价类划分、边界值分析、错误推测、因果图和综合策略

1.等价类划分
1)定义
等价类划分是把程序等输入集合划分成若干子集,
然后从每个子集中选取少数(因为穷尽不可能做到)
具有代表性的数据作为测试用例,该方法是一种常用的黑盒测试用例设计方法

等价类是指输入集合的子集。该子集合中,各个输入数据对于发现程序中
的错误都是等效的,并合理地假设:测试某等价类的具有代表性的数据
就等于这一类其他数据的测试。
因此,可以把全部输入数据合理地划分成若干等价类,
在每一个等价类中取一个数据作为测试的出入条件,
就可以用少量代表性的测试数据,取得较好的测试结果。
等价类划分有两种:有效等价类和无效等价类。

有效等价类是指对于程序等需求规格说明来说是合理的、
有意义的输入数据构成的集合。
因此,利用有效等价类可检验程序是否实现了
需求规格说明中所规定的功能和性能。
无效等价类与有效等价类的定义恰巧相反。
设计测试用例时,需要同时考虑这两类等价类,
因为,软件不仅要能接收合理的数据,也要能经受意外的考研。

2)划分等价类的原则
划分等价类不能要死记硬背原则,要正确分析被测程序,同时要注意积累经验。
(1)如果规定了输入值的范围,
则可以划分出一个有效等价类和两个无效等价类

(2)如果规定了输入数据的一组值,
并且程序对不同输入值做不同的处理,则每个允许的输入值就是一个有效等价
类,而任何一个不允许输入的值就是一个无效等价类

(3)如果规定了输入值是布尔类型,则可以划分出一个有效等价类真,
和一个无效等价类假

3)设计测试用例步骤
划分出等价类后,需要根据等价类按照下面三个主要步骤设计测试用例。
(1)为每个等价类规定一个唯一的编号

(2)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,
重复这一步,直到所有的有效等价类都覆盖为止
(3)设计一个新的测试用例,使其覆盖一个而且伊戈尔尚未覆盖的
无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值