2. 软件测试的心理学和经济学
2.1 软件测试的心理学
- 每当测试一个程序时,应当想到要为程序增加一些价值。通过测试来增加程序的价值,是指测试提高了程序的可靠性或质量。提高了程序的可靠性,是指找出并最终修改了程序的错误。
- 不要只是为了证明程序能够正确运行而去测试程序;相反,应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都成立) ,然后测试程序,发现尽可能多的错误。
- 测试定义:测试是为发现错误而执行程序的过程
2.2 软件测试的经济学
黑盒测试:
- 又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方怯时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件。
- 在这种方在击中,测试数据完全来惊于软件规范(换句话说,不需要去了解程序的内部结构)。
- 如果想用这种方式来发现程序的所有错误,判定的标准就是 “穷举输入测试”,将所有可能的输入条件都作为测试用例。但这是无法实现的,由于穷举测试是不可能的,测试投入的目标在于通过有限的测试用例,最大限度地提高发现的问题的数量,以取得最好的测试
效果。
白盒测试:
- 又称逻辑驱动的测试,允许检查程序内部的逻辑
- 这种测试策略对程序的逻辑结构进行检查,从中获取测试数据(遗憾的是,常常忽略了程序的规范)。
- 穷举路径测试
2.3 软件测试的原则
- 测试用例中一个必需部分是对预期输出或结果进行定义
一个测试用例必须包含两部分: (1)对程序的输入数据的描述。 (2)对程序在上述输入数据下的正确输出结果的精确描述。 - 程序员应当避免测试自己编写的程序
(1)测试而不是调试,调试由程序的编写人员来完成会有效的多 - 编写软件的组织不应当测试自己编写的软件
- 应当彻底检查每个测试的执行结果
- 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况
- 检查程序是否 “未做其应该做的” 仅是测试的一半,测试的另一半是检查程序是否 “做了其不应该做的”
- 应避免测试用例用后即弃,除非软件本身就是一个一次性的软件
- 计划测试工作时不应默许假定不会发现错误
- 程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比
- 软件测试是一项极富创造性、极具智力挑战性的工作
3. 代码检查、走查和评审
3.1 代码检查和走查
- 代码检查、走查(白盒级别的)以及可用性测试是三种主要的人工测试方法
- 代码检查与走查都要求人们组成一个小组来阅读或直观检查特定的程序。
- 代码检查与走查是对过去桌面检查过程(在提交测试前由程序员阅读自己程序的过程)的改进。
- 代码走查的另一个优点在于,一旦发现错误,通常就能在代码中对其进行精确定位,这就降低了调试(错误修正)的成本。
- 代码检查/走查与基于计算机的测试是互补的
3.2 代码检查
- 所谓代码检查,是以组为单位阅读代码,它是一系列规程和错误检查技术的集合。
3.2.1 代码检查小组
小组成员:协调人,代码作者,设计人员,测试专家
- 协调人的职责:
(1)为代码检查分发材料、安排进程。 (2)在代码检查中起主导作用 (3)记录发现的所有错误 (4)确保所有错误随后得到改正
3.2.2 检查议程与注意事项
检查进行时的两项主要活动:
- 由程序编码人员逐条语句讲述程序的逻辑结构
- 参考常见的编码错误列表分析程序
- 代码检查过程通常将注意力集中在发现错误上,而不是纠正错误。
3.2.3 对事不对人,和人有关的注意事项
- 程序员必须怀着非自我本位的态度来对待检查过程,对整个过程采取积极和建设性的态度:代码检查的目标是发现程序中的错误,从而改进软件的质量。
3.2.4 代码检查的衍生功效
- 程序员通常会得到编程风格、算法选择及编程技术等方面的反馈信息
- 其他参与者也可以通过接触程序员的错误和编程风格而同样受益匪浅
3.3 用于代码检查的错误列表
3.4 代码走查
- 代码走查与代码检查很相似,都是以小组为单位进行代码阅读,是一系列规程和错误检查技术的集合。
- 代码走查的参与者"使用了计算机"。
3.5 桌面检查
- 人工查找错误的第三种过程是古老的桌面检查方法。
- 桌面检查可视为由单人进行的代码检查或代码走查:由一个人阅读程序,对照错误列表检查程序,对程序推演测试数据。
3.6 同行评审
- 最后一种人工评审方在却与程序测试并无关系(其目标不是为了发现错误) ,却仍在这里谈到,这是因为它与代码阅读的思想有关。
- 同行评审是一种依据程序整体质量、可维护性、可扩展性、易用性和清晰性对匿名程序进行评价的技术。该项技术的目的是为程序员提供自我评价的手段。
小结
人工测试方法:
- 利用错误列表进行代码检查。
- 小组代码走查
- 桌面检查
- 同行评审
- 可用性测试(黑盒测试)
|