序言
一、 软件测试背景
二、 软件开发过程
三、 测试基础
1. 静态黑盒测试
2. 动态黑盒测试
3. 静态白盒测试
4. 动态白盒测试
序言
毕业即将从事软件测试方面的工作,由于之前没有学习相关知识,对软件测试的相关理论不是很清楚,因此决定学习Ron Patton写的《软件测试》,掌握基本概念,作为软件测试的入门。
一、 软件测试背景
1、软件缺陷的定义:
1)软件未达到产品说明书标明的功能;
2)软件出现了产品说明书指明不应该出现的错误;
3)软件功能超出产品说明书指明范围;
4)软件未达到产品说明书虽未指出但应达到的目标;
5)软件测试人员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为不好。
2、软件缺陷产生的原因:
最大原因是产品说明书,第二大原因是设计方案,第三是代码,最后是某些软件缺陷产生的原因被错误的认定。
3、软件测试人员的目的是尽可能早一些找出软件缺陷,并确保其得以修复。
4、软件测试人员应该具备的素质:
1)探索精神
2)故障排除能手
3)不懈努力
4)创造性
5)追求完美
6)判断准确
7)老练稳重
8)说服力
二、 软件开发过程
1、 测试文档提供的内容
1)测试计划
2)测试案例
3)软件缺陷报告
4)归纳、统计和总结
2、 软件产品的组成
软件产品不仅限于代码,还包括非软件部分,如下图所示:
3、 软件开发模式
1)大棒式。所有精力都集中在开发软件和编写代码,没有计划,进度安排等正规开发流程。
2)边写边改式。来回编写,测试和修复。
3)流水模式。创意-分析-设计-开发-测试-最终产品。只许前进,不许后退。
4)螺旋式。开始定义重要功能,努力实现,接受反馈,然后进入下一阶段,重复上述过程,直到得到最终产品。
三、 测试基础
1、 测试分类:
1)黑盒测试:软件测试员只需知道软件要做什么,无法看到如何运作,只进行输入操作来得到输出结果。
2)白盒测试:软件测试员可以访问代码,并通过代码来协助测试。
3)静态测试:测试不运行的部分,只是检查和审阅。
4)动态测试:通常意义的测试,运行和使用软件。
上述4种测试可以组合成静态黑盒测试,动态黑盒测试,静态白盒测试 ,动态白盒测试,下面将依次阐述。
2、 静态黑盒测试—测试产品说明书
首先对产品说明书进行高级审查,
测试产品说明书的第一步不是钻进去找软件缺陷,而是在一个高度上审视,审查产品说明书是为了找出根本性的大问题,疏忽或遗漏之处。
1)设身处地为客户着想,了解客户的想法。
2)研究现有的标准和规范,将该产品说明书套用现有标准,检验有无遗漏,错误。
3)审查和测试同类软件,这有助于制定测试条件和测试方法,暴露潜在的问题。
完成产品说明书的高级审查之后,就可以很好地的了解以及影响其设计的外部因素,有了这些信息,就可以在底层测试产品说明书了。优秀的产品说明书具有的8个重要属性:
完整 | 是否有遗漏和测试 |
准确 | 既定解决方案正确吗,目标明确吗,有没有错误 |
精确 | 描述是否一清二楚 |
一致 | 产品功能描述是否自相矛盾 |
贴切 | 描述功能的陈述是否必要,功能是不是客户的要求 |
合理 | 在特定的预算和进度下,以现有资源能否实现 |
代码无关 | 是否坚持定义产品,而不是定义其所依赖的软件架构,代码 |
可测试 | 特性能否测试 |
在审查产品说明书时,除了上述属性之外,还要检查对问题的描述,这些说法通常粉饰没有仔细考虑的功能。
3、 动态黑盒测试
定义:不深入代码细节,且程序正在运行的测试。
软件测试有两个基本方法,通过测试和失败测试。通过性测试实际上是确定软件至少能做什么,而不会考验其能力;纯粹为了破坏软件而设计和执行的测试用例称为失败测试。
选择测试用例的方法是等价分配,分步骤地把过多的测试用例减小到同样有效地小范围过程。在寻找等价区间时,想办法把软件的相似输入、输出、操作分成组。在进行等价分配时要注意避免过度减少测试用例。
a.数据测试
对数据进行软件测试,就是在检查用户的输入信息,返回结果以及中间结果是否正确。根据等价分配原则,测试用例可分为:边界条件,次边界条件,空值和无效数据。
1)边界条件
边界条件是指软件计划的操作界限所在的边缘条件。测试边界条件时,一定要测试临界边界的合法数据以及刚超过边界的非法数据。
2)次边界条件
有些边界在软件内部,最终用户几乎看不到,但是软件测试仍有必要检查,这样的边界条件称为次边界条件。例如2的乘方和ASCII表。
3)默认、空白、空值、零值
理想情况是软件取某个默认值来处理,如果没有这样做,就应该返回错误提示信息作为执行结果。
4)非法、错误、不正确和垃圾数据
这是失败测试的对象,此类测试就是尽量破环软件。
b.状态测试
除了测试数据,软件测试的另一半是通过不同的状态验证程序的逻辑流程。
第一步建立软件状态转移图,明确软件的状态转换。
第二步定义测试案例,测试状态及其转换包括检查所有的状态变量—与进入和退出状态相关的静态条件、信息、值、功能等等。
c.失败状态测试
1)竞争条件
2)重复、压迫和重负
重复测试指不断同样的操作,进行这种测试的主要原因是看内存是否不足。
压迫测试是使软件在不够理想的条件下运行—内存小,CPU速度慢等,观察软件对外部资源的要求和依赖的程度。
重负测试与压迫测试相反,尽量提供条件,任其发挥,最大限度发掘软件能力,让它不堪重负。
4、 静态白盒测试—检查设计和代码
静态白盒测试是在不执行的条件下有条理地仔细审查软件设计,体系结构和代码,从而找出软件缺陷的过程。
1)通用代码审查清单
数据引用错误 | 使用未经正确初始化和引用方式的变量,常量等而导致的缺陷。 |
数据声明错误 | 不正确地声明或使用变量和常量 |
计算错误 | 计算逻辑的错误,无法得到预期结果 |
比较错误 | 比较和判断错误很可能是边界条件问题 |
控制流程错误 | 编程语言中循环等控制结构未按预期方式工作 |
子程序参数错误 | 软件子程序不正确地传递错误参数 |
输入/输出错误 | 文件读取,键盘输入,屏幕显示等错误 |
其他检查 | 移植性,兼容性等问题 |
2)正式审查包括同事审查,公开陈述,检验。
3)程序要应该符合编程标准和规范。
5、动态白盒测试
动态白盒测试指利用查看代码功能和实现方式得到的信息来确定哪些要测试,哪些不要测试,如何开展测试,它也被称为结构测试。
1)分段测试
单元和集成测试,在底层进行的测试称为单元测试或集成测试,等到单元经过测试,底层软件缺陷被修复之后,就集成在一起,对模块组进行集成测试。采用这种测试很容易隔离软件缺陷。
2)数据范围
数据流:数据流范围主要是指在整个软件中跟踪一批数据。通过动态白盒测试,可以在程序运行期间检查立即值。
次边界:如果进行白盒测试,要找到代码的次边界,并建立它们的测试用例。
公式和等式。
错误强制:比如强制显示错误提示信息。
3)代码范围
代码范围分析属于一种动态白盒测试,它要求通过完全访问代码查看运行测试用例时经过哪些部分。代码范围主要有程序语句和代码行范围,分支范围,条件范围。
参考文章:
Ron Pattn 《软件测试》