软件测试的艺术(1)黑盒测试与白盒测试

软件测试的心理学和经济学

1.每当测试一个程序时,应当想到要为程序创造一些价值。
通过测试来提高程序的价值,是指测试提高了程序的可靠性或质量。提高了程序的可靠性,,是指找出并最终修改了程序的错误。
2.
测试是为发现错误而执行成勋的过程
3.
软件测试更适宜被视为试图发现程序中错误的破坏性过程。
一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。
4.即使是规模很小的程序,一般来说,发现程序的所有错误也是不切实际的。
5.软件测试的原则

  1. 测试用例中一个必需部分是对预期输出或结果的定义。
  2. 程序员应当避免测试自己编写的程序
  3. 编写软件的组织不应当测试自己编写的软件
  4. 应当彻底检查每个测试的执行结果
  5. 测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未预料到的输入情况。
  6. 检查 程序是否“未作其应该做的”仅是测试的一半,测试的另一半应该是检查是否“做了其不应该做的”。
  7. 应避免测试用例用后即弃,,除非软件本身就是一个一次性的软件。
  8. 计划测试工作时,不应默许假定不会发现错误。
  9. 程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比
  10. 软件测试是一项极富创造性,极具智力挑战性的工作。

6.黑盒测试

黑盒测试又称为数据驱动的测试或输入输出驱动的测试。
使用这种测试方法时,将程序视为一个盒子。测试目标的程序内部结构无关。将重点集中放在发现程序不按期规范正确运行的环境条件。

如果想用这种测试方法测试程序的所有错误,判定的标准时穷举输入测试,将所有的输入条件都作为测试用例。

我自己的理解时:黑盒测试在测试程序时,并不关注程序本身的结构与内部机制,所以只需要将所有的输入条件都作为测试用例,以书中例子为例,仅一个很小的程序所需要的测试用例就需要很多乃至天文数字。
在使用到数据存储时尤其严重,以书中为例航班订票系统,所依赖的测试不仅是有效的和无效的,还需要依赖每次事务处理的顺序。

总结:穷举输入测试是无法有效的。
两方面的含义:
一是无法测试一个程序以确保它是无错的
二是软件测试中需要考虑的一个基本问题就是软件测试的经济学。

7.白盒测试

白盒测试又称逻辑驱动测试。要求测试策略对程序的逻辑结构进行检查。
穷举路径测试,与穷举输入测试相类似:如果使用测试用例执行了程序中所有可能出现的控制流路径,那么程序就有可能得到了完全测试。
然而这种测试策略也存在很大问题
一:在程序中得到所有不同逻辑路径的数量可能也是一个天文数字,从现实来看是不和实际的。
二:第二个问题就算是穷举路径测试也不能完全确定该程序就是无错的:有这么几种可能性:
1)如果程序本身设计出现问题,测试了所有逻辑路径也不能百分百确定程序是正确的,举例来说,如果要求是设计一个升序排序的程序,但却设计了降序的程序,此时在使用穷举路径测试就没有价值了有点南辕北辙的感觉。。。
2)程序可能会因为缺少某些路径而存在问题,但是穷举路径测试当然不能发现缺少了哪些必须路径。(不是很理解)
3)穷举路径测试可能不会暴露数据敏感错误,比如数据类型或是有无符号的问题。

总结:

  • 软件测试是为发现错误而执行程序的过程。
  • 一个好的测试用例具有较高的发现某个尚未发现的错误的可能性。
  • 一个成功的测试用例能够发现某个尚未发现的错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值