第3章 软件测试的实质
一、测试的原则
1、完全测试程序是不可能的
主要原因如下:输入量太大;输出结果太多;软件执行路径太多;软件说明书是主观的。
2、软件测试是有风险的行为
软件测试员要学会的一个关键思想是,如何把数量巨大的可能测试减少到可以控制的范围,以及如何针对风险做出明智的抉择,哪些测试重要,哪些不重要。
3、测试无法显示潜伏的软件缺陷
软件测试的工作可能报告软件缺陷存在,却不能报告软件缺陷不存在。你可以进行测试,发现并报告软件缺陷,但是任何情况下都不能保证软件缺陷没有了。唯一的方法是继续测试,可能还会找到一些。
4、找到的软件缺陷越多,就说明软件缺陷越多
其原因是:
(1)程序员也有心情不好的时候;
(2)程序员往往犯同样的错误;
(3)某些软件缺陷实乃冰山一角。
5、杀虫剂怪事
用于描述软件测试越多,其对测试的免疫力越强的现象。为了克服杀虫剂怪事,软件测试员必须不断编写不同的,新的测试程序,对程序的不同部分进行测试,以找出更多软件缺陷。
6、并非所有软件缺陷都要修复
不需要修复软件缺陷的原因有几个:
(1)没有足够的时间;(2)不算真正的软件缺陷;(3)修复的风险太大;(4)不值得修复。
7、难以说清的软件缺陷
尚未发现或未观察到的软件缺陷只能说是潜在缺陷。
8、产品说明书从没有最终版本
9、软件测试员在产品小组中不受欢迎
保持小组成员和睦的建议:
早点找出缺陷;控制情绪;不要总是报告坏消息。
10、软件测试是一项讲究条理的技术专业
二、软件测试的术语和定义
1、精确和准确
软件测试要精度还是准确读很大程度上取决于产品是什么,最终取决于开发小组的目标。
2、确认和验证
确认是保证软件符合产品说明书的过程;验证是保证软件满足用户要求的过程。
3、质量和可靠性
如果说软件产品质量高,就是指它能够满足客户要求。可靠性仅仅是质量的一个方面。为了确保程序质量高而且可靠性强,软件测试员必须在整个产品开发过程中进行确认和验证。
4、测试和质量保证(QA)
软件测试员的目标是尽可能早地找出软件缺陷,并确保缺陷得以修复。
软件质量保证人员的主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法。
以上为本书第一部分的内容。
第二部分 测试基础
第4章 检查产品说明书 一、开始测试
产品说明书通常是利用文字和图形描述产品的书面文档。确保最终产品符合客户要求以及正确计划测试的唯一方法是在产品说明书中完整描述产品。
1、黑盒测试和白盒测试
黑盒测试中,软件测试员只需知道软件要做什么——而无法看到盒子里的软件是如何运行的。
白盒测试中,软件测试员可以访问程序员的代码,并通过检查代码的线索来协助测试——可以看到盒子里面。
进行白盒测试要冒一些风险。因为要以适应代码操作来定制测试,所以很容易形成偏见而无法进行客观测试。
2、静态测试和动态测试
静态测试是指测试不运行的部分——只是检查和审核;动态测试是指通常意义上的测试——使用和运行软件。
3、测试产品说明书属于静态黑盒测试。
二、对产品说明书进行高级审查
测试产品说明书的第一步不是钻进去找软件缺陷,而是在一个高度上审视。
1、假设自己是客户
质量的定义是“满足客户要求”,软件测试员必须了解并测试软件是否符合那些要求。另外,熟悉软件应用领域的相关知识有很大的帮助。
如果审查产品说明书的某一部分时不理解,要尽早的了解它。
2、研究现有的标准和规范
标准和规范的差别在于程度不同,标准比规范更加严格。标准应严格遵守,而规范是可选的,但应该遵守。
可以作为标准和规范的一些例子:公司惯用语和约定;行业要求;政府标准;图形用户界面(GUI);安全标准。
3、审查和测试类似软件
在审查竞争产品时要注意的问题包括:规模、复杂性、测试性、质量和可靠性、安全性。
三、产品说明书的低层次测试技术
1、产品说明书属性检查清单
经过深思熟虑,可称为“一字不漏”的优秀产品说明书应具有8个重要的属性:
(1)完整:是否有遗漏和丢失?完全吗?单独使用是否包含全部内容?
(2)准确:既定解决方案正确吗?目标明确吗?有没有错误?
(3)精确、不含糊、清晰:描述是否一清二楚?还是自说自画?容易看懂和理解吗?
(4)一致:产品功能描述是否自相矛盾?与其它功能有没有冲突?
(5)贴切:描述功能的陈述是否必要?有没有多余信息?功能是否原来的客户要求?
(6)合理:在特定的预算和进度下,以现有人力、物力和资源能否实现?
(7)代码无关:是否坚持定义产品,而不是定义其所依赖的软件设计、架构和代码?
(8)可测试:特性能否测试?测试员建立验证操作的测试程序是否提供足够的信息?
2、产品说明书用语检查清单
(1)总是、每一种、所有、没有、从不
如果看到此类绝对或肯定的描述,需要确认是这样的。软件测试员要考虑违反这些情况的用例。
(2)当然、因此、明显、显然、必然
这些话意图说服你接受假定情况,不要中了圈套。
(3)某些、有时、常常、通常、惯常、经常、大多、几乎
这些话太过模糊,“有时”发生作用的功能无法测试。
(4)等等、诸如此类、依此类推、例如
以这样的词结束的功能清单无法测试。功能清单要绝对或者解释明确,以免让人对功能清单内容产生迷惑。
(5)良好、迅速、兼价、高效、小、稳定
这些是无法量化的术语,它们无法测试。如果说明书中出现这些用语,必须进一步准确定义其含义。
(6)处理、进行、拒绝、跳过、排除
这些用语可能会隐藏大量需要说明的功能。
(7)如果……那么……(没有否则)
找出有“如果……那么……”而缺少配套的“否则”结构的陈述,想一想“如果”没有发生会怎样?
四、小结
高级审查技术可以查出遗漏和丢失之处,低级测试技术用于保证所有细节都被定义。