第七章---软件实现与编码
仅供参考
文章目录
- 一、软件测试的目标,衡量测试成功的标准
- 二、什么是模块测试、集成测试和确认测试?各自的主要目标是什么?各采用什么测试方法?
- 1、模块测试
- 2、集成测试
- 3、确认测试
- 三、自顶向下集成和自底向上集成各自的特点和优缺点
- 1、自顶向下集成
- 2、自底向上集成
- 四、什么是白盒测试(结构测试)与黑盒测试(功能测试)?它们各自适应哪些测试?
- 1、白盒测试
- 2、黑盒测试
- 五、白盒测试和黑盒测试的对比
- 六、白盒测试技术有哪些
- 1、逻辑覆盖
- (1)语句覆盖
- (2)判定覆盖
- (3)条件覆盖
- (4)判断/条件覆盖
- (5)条件组合覆盖
- (6)点覆盖、边覆盖(针对流图/程序流图)
- (7)路径覆盖
- (8)对比总结
- 2、控制结构测试
- (1)基本路径测试
- (2)条件测试
- 七、黑盒测试技术有哪些
- 1、等价类的划分
- 2、边界值分析
- 3、错误推测及总结
- 八、回归测试
- 九、软件可靠性、可用性
- 1、软件可靠性
- 2、软件可用性
一、软件测试的目标,衡量测试成功的标准
(1)测试是为了发现程序中的错误而执行程序的过程。
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
(4)软件测试的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。
注意:测试只能查找出程序中的错误,不能证明程序中没有错误。
二、什么是模块测试、集成测试和确认测试?各自的主要目标是什么?各采用什么测试方法?
1、模块测试
(1)模块测试(单元测试)是把每个模块作为一个单独的实体来测试,检验其正确性
(2)目标:保证每个模块作为一个单元能正确运行。模块测试所发现的是编码和详细设计的错误
(3)采用的测试方法:
代码审查(由审查小组进行)、计算机测试(为每个单元测试开发驱动软件和(或)存根软件)
2、集成测试
(1)子系统测试 + 系统测试 = 称为集成测试(兼有测试和组装
)
子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试;系统测试是把经过测试的子系统装配成一个完整的系统来测试。
(2)目的:保证模块间的协调与通信,同时验证系统是否能提供需求说明书中的指定功能
(3)采用的测试方法:
非渐增式测试(先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序)、渐增式测试(把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试,每次增加一个模块。渐增式测试同时完成单元测试和集成测试
)
渐增式测试中又有自顶向下和自底向上两种策略
3、确认测试
(1)确认测试也称为验收测试
(2)目标:验证软件的有效性
如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的
(3)采用的测试方法:
Alpha 测试(由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,且开发者负责记录发现的错误和遇到的问题)
Beta 测试(由软件的最终用户们在一个或多个客户场所进行)
三、自顶向下集成和自底向上集成各自的特点和优缺点
1、自顶向下集成
①优点
a.不需要测试驱动程序。
b.能够在测试阶段的早期实现并验证系统的主要功能。
c.能在早期发现上层模块的接口错误。
②缺点
a.需要存根程序
,可能遇到与此相联系的测试困难。
b.低层关键模块中的错误发现较晚。
c.在早期不能充分展开人力。
2、自底向上集成
d1、d2、d3、d4、d5都是
测试驱动程序
,而不是软件中的模块
①优点
a.不需要存根程序,不会遇到与存根程序相联系的测试困难。
b.能较早的发现低层关键模块的错误。
c.能在早期充分展开人力。
②缺点
a.需要测试驱动程序
。
b.不能在测试阶段早期实现并验证系统的主要功能。
c.在早期不能发现上层模块的接口错误。
4.其他集成测试策略
四、什么是白盒测试(结构测试)与黑盒测试(功能测试)?它们各自适应哪些测试?
1、白盒测试
(1)白盒测试(结构测试)的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道 程序的结构和处理算法
。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通
路是否都能按预定要求正确工作。
简单的说,白盒测试就是已经知道了产品内部有什么模块以及各模块具备的功能,以这个为依据来确定测试方案,更关注代码结构、代码逻辑
(2)适应的测试:单元测试、集成测试
2、黑盒测试
(1)黑盒测试(功能测试)把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。黑
盒测试是在程序接口进行的测试,只检查程序功能是否能按照需求规格说明书
的规定正常使用,
程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息
的完整性。
简单的说,黑盒测试完全不知道产品的内部,相当于从一个使用者的角度,在使用的过程中去发现问题,更关注功能
(2)适应的测试:集成测试、确认测试
五、白盒测试和黑盒测试的对比
六、白盒测试技术有哪些
1、逻辑覆盖
一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试
基本思想:有选择地执行程序中某些
最有代表性的通路
。
依据:软件的逻辑结构
(流程图)
(1)语句覆盖
(2)判定覆盖
(3)条件覆盖
概念有点难理解,所以抛开概念
1、每个菱形里面都是一个判断表达式,但并不是由一个条件组成的(比如,如果只是一个x>0,这只有一个条件,可以看出是判断覆盖)
2、通过逻辑符号可以将多个条件连接起来,虽然最终的判断表达式取值只有“真”或“假”,但是,令表达式取“真”的情况可能有多种,对“假”也是一样(例如,A>1 AND B≠0,这个判断表达式如果想要他为假,则有 A≤1 AND B≠0、A ≤1 AND B=0、A>1 AND B=0三种情况)
3、如果你能理解上面的描述,那么你就知道了条件覆盖和判断覆盖的区别:判断覆盖是通过测试用例可以使得所有
判断表达式
取过“真”“假”;而条件覆盖是通过测试用例,使得所有条件
可能出现情况都会出现(因此判断覆盖≠条件覆盖
)
(4)判断/条件覆盖
(5)条件组合覆盖
(6)点覆盖、边覆盖(针对流图/程序流图)
(7)路径覆盖
(8)对比总结
2、控制结构测试
(1)基本路径测试
画流图—>计算环形复杂度—>确定独立路径(独立路径数=环形复杂度
)—>针对每条基本路径设计测试用例,强迫每条基本路径都被执行一次
简单的说,在流图中从程序的入口出发,有多少条路可以走到程序的出口,就有多少条独立路径,从而确定对应的测试用例,使其走完整条路经即可
(2)条件测试
三种策略:
1、分支测试:对于复合条件 C 来说,C 的真分支和假分支以及 C 中的每个简单条件,都应该至少执行一次;包含 n 个变量的布尔表达式需要 2 n 2^n 2n个测试。
2、BRO测试:条件中所有布尔变量(如B)和关系运算符(如 E 1 E_1 E1= E 2 E_2 E2)都只出现一次且没有公共变量(前提)
布尔变量的输出约束是t/f;关系运算符的输出约束是=/>/<
3、循环测试
七、黑盒测试技术有哪些
1、等价类的划分
思想:把程序的输入数据集合
按输入条件按有效的
或无效的
划分为若干个等价类
,测试每个等价类的代表值就等于对该类其他值的测试
2、边界值分析
在等价类范围内选择一些边界值
作为测试用例,这样可以比单用等价类划分法所选的测试用例能查出更多错误,因为边界分析法是选择那些测试用例强迫程序在边界上执行
。它是对等价类分析法的一种补充,即在选择测试用例时,不是任意选择等价类中的任一元素,而是选择此等价类边界上的值
3、错误推测及总结
(1)错误推测:通常根据经验或直觉来推测程序中可能出现错误的情况,并有针对性的编写检查这些错误的测试用例。
(2)总结:在以上几种软件测试方法,各有所长,但各有所短,在实际测试中,应该采用综合策略,通常先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。
八、回归测试
(1)定义:回归测试是软件修改后
(如修复缺陷、新增功能、优化代码等),重新执行已经做过的测试的某个子集以验证修改未引入新问题,且原有功能仍正常运行的测试活动
(2)意义:保障功能稳定性、拦截新引入的缺陷、降低版本发布风险、节约长期成本
(3)什么情况下需要回归测试:修复缺陷后、新增功能后、代码重构 / 优化后、环境变更时、版本迭代发布前
九、软件可靠性、可用性
1、软件可靠性
程序在给定的时间间隔
内,按照规格说明书
的规定成功地运行的概率
2、软件可用性
程序在给定的时间点
,按照规格说明书
的规定,成功地运行的概率
。