P 272
pdf page / book page
四 检查产品说明书 35 / 53
黑盒测试 和 白盒测试
黑盒测试:[ black-box testing ] 软件测试员只需知道软件要做什么。不需要知道软件任何运行,为什么会这样,只知道程序做了什么
又叫 功能性测试 functional testing 或行为测试 behavioral testing
白盒测试:[ clear-box testing ] 又叫透明盒测试
访问代码,并通过检查代码的线索来协助测试,tester 根据代码检查结果判断或多或少可能出错的数目,并据此定制测试
静态测试 和 动态测试
static testing : 指测试不运行的部分只是检查和审核
dynamic testing : 通常意义上的测试,使用和运行软件
静态黑盒测试:测试产品说明书
审查和测试类似软件
在审查竞争产品时需要注意的问题
规模、复杂性、测试性、质量和可靠性、安全性
产品说明书:低层次测试技术
产品说明书属性检查清单:
完整、准确、精确不含糊清晰、一致、贴切、合理
产品说明书术语检查清单
【】
software inspections www.mfagan.com
五 带上眼罩测试软件 42 / 60
1 动态黑盒测试
在没有产品说明书时使用探索式测试
2 test-to-pass && test-to-fail
测试软件的两种基本方法: 通过性测试 test-to-pass 和 失效性测试 test-to-fail
通过性测试: 实际上是确认软件至少能做什么,而不会考验其能力
并不需要想尽办法让软件崩溃,仅仅运用最简单,最直观的测试用例
在失效性测试之前利用通过性测试找出缺陷
失效性测试[ 错误强制测试 ]:
采取各种手段搞垮软件来找出软件缺陷,蓄意攻击软件薄弱环节
3 等价划分
选择测试用例是tester 最重要的任务,选择test case 的方法是等价类划分 equivalence partitioning ,也叫等价分类 equivalence classing
指分步骤把海量的测试用例集减的很小,蛋过程同样有效
一个等价类或者等价互粉是指测试相同目标或者暴露相同软件缺陷的一组测试用例
在寻找等价划分时,考虑把软件具有相似输入,相似输出,相似操作的分在一组,这些组就是等价划分
EG : windows 文件名
等价划分: 合法字符,非法字符,合法长度的名称,长度过长 和长度过短
【】如果为了减少测试用例的数量过度划分等价类,就有可能漏掉暴露软件缺陷的风险
4 数据测试
软件分为 : 数据(或其范围) 和 程序
软件测试常用的一个方法就是把测试工作按同样的形式划分
对数据的测试:检查输入,输出 和中间计算结果是否正确
可以根据一些关键的原则进行等价类划分,以合理减少测试用例:
原则是:边界条件,次边界条件,空值 和 无效数据
边界条件 boundary condition
默认、空白、空值、零值、无
非法、错误、不真确、垃圾数据
5 状态测试
通过不同的状态验证程序的逻辑流程
软件状态 software state 是指软件当前所处的条件或者模式
六 检查代码 61 / 79
静态白盒测试:检查设计和代码
是指在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,称为结构化分析
通过代码审查清单
1 数据引用错误
2 数据声明错误
3 计算错误
4 比较错误
5 控制流程错误
6 子程序参数错误
7 输入输出错误
8 其他检查
七 带上X光眼镜测试软件
静态黑盒:测试产品说明书 指检测产品说明数,并在软件编写之前找出问题
动态黑盒:测试软件 指在不了解软件任何工作的前提下进行测试
静态白盒:检查程序代码 指通过正式审查和检验检查代码的细节
动态白盒测试:结构化测试 structural testing 指在看到软件的工作方式时,根据获得的信息付软件进行测试
动态白盒不仅仅是查看内代码的运行情况,还包括直接测试和控制软件, 包括一下4个部分
1 直接测试底层函数、过程、子程序和库, 【API】
2 以完整程序的方式从顶层测试软件,但是根据对软件运行的了解调整测试用例
3 从软件获得读取变量和状态信息的访问权,以便确定测试和预期结果是否相符,同事强制软件以正常测试难以实心的方式运行
4 估算执行测试时“命中”的代码量和具体代码,然后调整测试,去掉多余的测试用例,补充遗漏的用例
动态白盒测试和调试
测试: 是为了发现缺陷
调试: 是为了修复缺陷
分段测试
单元测试
模块测试
递增测试的途径: 自底向上bottom-up, 自顶向下 top-down
bottom-up : 测试桩向处于测试的模块发送数据
桩:Stub
数据覆盖:
数据流 Data flow :
次边界:
公式和等式
代码覆盖:code coverage
code coverage analyzer
程序语句和代码行覆盖
分支覆盖
条件覆盖