第5章带上眼罩测试软件
1.动态黑盒测试:带上眼罩测试软件
没有产品说明书使用探索测试.
2.通过性测试和实效性测试
1)通过性测试(test-to-pass):确认软件至少能做什么,而不会考验其能力.
实效性测试(错误强制测试):破坏软件而设计和执行的测试用例
3.等价类划分(equivalence partitioning):分步骤把海量的无限的测试用例减得很小,但过程同样有效.
4.数据测试:检查用户输入的信息,返回的结果以及中间计算结果是否正确.
1)边界条件
a.边界条件的类型:软件运行在计划操作界限的边界的情况.
b.测试边界:提出边界条件时,一定要测试临近边界的有效数据,测试最后一个可能有效的数据,同时测试刚超过边界的无效数据.
2)次边界条件(Sub-boundary conditions或者内部边界条件internal boundary conditions):
a.2的幂
b.ASCII表
3)默认,空白,空值和无
4)非法,错误,不正确和垃圾数据
5.状态测试:测试程序的状态和转换
1)测试软件的逻辑流程
a.建立状态转换图
转换图表示的项目:
.软件可能进入的每一种独立状态
.从一种状态转入另一种状态所需要的输入和条件
.进入或者退出某种状态时设置的条件及输出的结果
b.减少要测试的状态及转换的数量
.每种状态至少访问一次
.测试看起来最常见和最普遍的状态转换
.测试状态之间最不常用的分支
.测试所有的错误状态及其返回值
.测试随机状态
2)失败状态的测试
a.竞争条件(race condition)和时序错乱
.两个不同的程序同时保存和打开同一个文档
.共享一台打印机,通信端口或者其它外围设备
.当软件处于读取或者改变状态时按键或者单击鼠标
.同时关闭或者启动软件的多个实例
.同时使用不同的程序访问一个共同的数据库
b.重复,压迫,和重负
重复测试(repetition testing)是不断执行同样的操作.
压迫测试(stress testing)是软件在不够理想的条件下运行-内存小,磁盘空间少,cpu速度慢,调制解调器速率低等.
重负测试(load testing)尽量提供条件任其发挥,
6.其他黑盒测试技术
1)象笨拙的用户那样做(inexperienced user) (new user)
2)在已经找到的软件缺陷的地方再找找
a.找到的软件缺陷越多,软件缺陷越多
b.许多程序员倾向于只修复报告出来的软件缺陷
3)象黑客一样考虑问题
4)凭借经验,只觉和预感
第6章检查代码
1.静态白盒测试:检查设计盒代码
静态白盒测试是在不执行软件的条件下有条理的仔细审查软件设计,体系结构和代码,从而找到软件缺陷的过程,有时称为结构化分析.
2.正式审查(formal review)
正式审查有四个要素:
a. 确定问题
b. 遵守规则
c. 准备
d. 编写报告
1) 同事审查:召集小组进行初次正式审查最简单的方法是通过同事审查.
2) 走查(Walktrough).走查中编写代码的程序员向5人小组或者其他程序员和测试员组成的小组正式陈述.审查人员应该在审查之前接到软件拷贝,以便检查并编写备注和问题,在审查过程中提问.审查人员至少有一位资深程序员.
3) 检验(inspections):是最正式的审查类型,表述代码的人-表述者(presenter)或者宣读者(reader)-不是原来的程序员.其余的参与者称为检验员(inspector),其职责从不同的角度审查代码.有些检验员还同时被委任为会议协调员(moderator)和会议记录员(recorder).
3.编码标准和规范
4.通用代码的审查清单
1)数据引用错误:使用未经正确声明和初始化的变量,常量,数组,字符串或记录而导致的软件缺陷.
2)数据声明错误:不正确的声明或使用变量和常量.
3)计算错误:
4)比较错误:
5)控制流程错误
6)子程序参数错误
7)输入/输出错误
第7章带上x光眼镜测试软件
1.动态白盒测试也称结构化测试(structural testing)
动态白盒测试包括四个部分:
a. 直接测试底层次函数,过程,子程序和库
b. 以完整的程序方式从顶层测试软件,但是根据对软件运行的了解调整测试用例.
c. 以软件获得读取变量和信息的访问权,以确定测试与预期结果是否相符,同时,强制软件以正常测试难以实现的方式运行.
d. 估算执行测试时”命中”代码量和具体代码,然后调整测试,去掉多余的测试用例,补充遗漏的用例.
2.动态白盒测试盒调试
3.分段测试
1)单元测试和集成测试
在底层进行的测试称为单元测试(unit testing),或者模块测试(module testing),单元经过测试,底层软件缺陷被找出并修复之后,就集成在一起,对模块的组合进行集成测试(integration testing).这个不断增加的测试过程继续进行,加入越来越多的软件片段,直至整个产品-至少是产品的主要部分-在称为系统测试(system testing)的过程中一起测试.
2)单元测试示例
4.数据覆盖
1)数据流(Data Flow)覆盖主要是指在软件中完全跟踪一批数据.
2)次边界
3)公式和等式
4)错误强制(error forcing)
5.代码覆盖(code coverage):通过完全访问代码以查看运行测试用例经过了哪些部分.
1)程序语句和代码行覆盖(statement coverage/line coverage)
2)分支覆盖
3)条件覆盖
6.小结
静态黑盒测试:检查产品说明书,并在软件编写之前找出问题.
动态黑盒测试:不了解软件如何工作的前提下进行测试
静态白盒测试:通过正式审查盒检验检查代码的细节
动态白盒测试:看到软件工作方式时,根据获得的信息对软件进行测试
测试桩和测试驱动
测试桩:自顶向下的测试,它用自己替换低级模块.其对于要测试的高级代码,外表和行为就象低级模块一样.
测试驱动和测试桩相反,用于自底向上的测试,它是代替高级软件,更有效的运行低级模块的测试代码.
第三部分运用测试技术
第8章配置测试
1.配置测试综述(configuration testing)是指使用各种硬件来测试软件的运行过程.
1)分离配置缺陷
配置问题产生的原因:
a. 软件可能包含在多种配置中都会出现的缺陷
b. 软件可能包含只在某一个特殊配置中出现的缺陷
c. 硬件设备或者其设备驱动程序可能包含仅由软件揭示的缺陷.
d. 硬件设备或者其设备驱动程序可能包含一个借助许多其他软件才能看出来的缺陷-尽管它可能对测试的软件特别明显.
2)计算工作量
2.执行任务
a.确定所需的硬件类型
b.确定有哪些厂商的硬件,型号和驱动程序可用
c.确定有哪些厂商的硬件,型号和驱动程序可用
d.确定可能的硬件特性,模式和选项
e.将确定后的硬件配置缩减为可控制的范围
f.明确与硬件配置有关的软件唯一特性
g.设计在每一种配置中执行的测试用例
h.在每种配置中执行测试
i.反复测试直到小组对结果满意为止
3.获得硬件
1)只买可以或者经常使用的硬件
2)与硬件厂商联系,看他们是否能够租赁甚至赠送某些硬件
3)向全公司的人发备忘或者电子邮件,问他们办公室甚至家里有什么硬件-以及能否允许
对其进行测试。