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

今天继续给各位同行们带来好书《软件测试的艺术》,让我们一起来赏析这本经典著作吧!

此时此刻看着这篇文章的读者里边藏龙卧虎,哪一路的高人都有,我在这里信笔由缰,也不知道写得对不对,所以我永远都是那句话,我是抱着一个学生的心态来写文章的,您如果觉得我说的哪儿不对,哪个字用得不准确,哪个词说反意思了,您千千万万得提出来,我还指望着跟您各位一起好好学习,天天向上。我只是一个刚入门的萌新小白,只能是赏析一些经典佳作。”当然,天下所有人,没有人生而知之,都是学而知之。你说哪个孩子一落生就什么都会?每个人都是通过上学念书获得知识的。不会的就去问,不懂的就看书,每个人都是这样成才的。

今天和大家分享的是本书的第二章节:软件测试的心理学和经济学。上篇文章我们探讨了本书的第1章:一次自评价测试,感兴趣的读者可以翻阅之前的文章,以保证阅读的连贯性。

2d83b35bb62a44048f6f43e5c88e2f86.png

 《软件测试的艺术》

“软件测试是一项技术性工作,但同时也涉及经济学和人类心理学的一些重要因素。要成功地测试一个软件应用程序,测试人员也需要有正确的“愿景”。在某些情况下,测试人员的态度可能比实际的测试过程本身还要重要。”

测试人员在测试之初就应该假设程序中隐藏着错误,事实上这种假设非常合理,几乎对所有的程序都成立。有些新入职的测试员可能出于初来乍到的心理,在和程序员沟通BUG时,会有些扭扭捏捏,不愿意过多的指出全部的错误,这是错误的想法也违背了软件测试的原则,即:在测试程序中,发现尽可能多的问题。

测试是为发现错误而执行程序的过程”,这是软件测试的真正定义,需要我们去深入的理解,有助于我们成功的进行测试。

b70527489e6a4ce1af7bfb7ecd16e200.jpeg

层次分明的彩色代码

如果我们的目标在于证明程序中存在错误,我们设计的测试数据就有可能更多地发现问题,这种方法会更多地增加程序的价值。”人类行为总是具有高度的目标性,树立一个正确的目标对于心理有重要影响。

“我们可以类比一下病人看医生的情况,病人因为身体不舒服而去看医生。如果医生对病人进行了一些检查和化验,却没有诊断出任何病因,我们就不会认为这些检查和化验是“成功的”,因为病人支付了昂贵的检查和化验费用,而病状却依然如故。病人会因此而质疑医生的诊断能力。但是,如果医生诊断出病人是胃溃疡,那么这次检测就是“成功的”,医生可以开始进行相应的治疗。因此,医疗行业会使用“成功的”或“不成功的”来表达诊断结果。我们当然可以类推到软件测试中来,当我们开始测试某个程序时,它就好似我们的病人。”事实上,没发现错误的测试用例应被称为一次“不成功的测试”,而发现了某个新错误的测试则是“成功的测试”。

“程序即使能够完成预定的功能,也仍然可能隐藏错误。也就是说,如果程序做了其不应该做的,这同样是一个错误。软件测试更适宜被视为试图发现程序中错误的破坏性的过程,一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然,最终我们还是要通过软件测试来建立某种程度的信心:软件做了其应该做的,未做其不应该做的。但是通过对错误的不断研究是实现这个目的的最佳途径。”

7a992c8f518248218b09d8f0ecc74431.jpeg

 标识不同的关键字的代码

事实上,测试人员的岗位相当于质检员,质检对象是软件,检测的是软件的质量。在互联网后时代的今天,软件更多的开始追求质量,这和我们国家2025—2030的国家技术发展战略不谋而合,即从盲目扩张的摊煎饼状态,变成注重高精尖技术的发展。未来,对测试人员的要求一定是越来越高的,只会简单测试的测试员必须不断学习乃至终生学习,才不会被时代所弃。

“一般说来,要发现程序中的所有错误也是不切实际的,常常也是不可能的。这个基本的问题反过来暗示出软件测试的经济学问题、测试人员对被测软件的期望,以及测试用例的设计方式。”

“为了应对测试经济学的挑战,应该在开始测试之前建立某些策略。黑盒测试和白盒测试是两种最普遍的策略。黑盒测试是一种重要的测试策略,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件。在这种方法中,测试数据完全来源于软件规范”。

“如果想用这种方法来发现程序的所有错误,判定的标准就是“穷举输入测试”,将所有可能的输入条件都作为测试用例。”即试验所有的输入情况,这是唯一的方法。

02d62bd789a74ad38dde60e1248a282f.jpeg

 二进制代码

“举例来说,在航班预定系统这样的数据库应用程序中,诸如数据库查询、航班预约这样的事务处理需要随上一次事务的执行情况而定。因此,不仅要测试所有有效的和无效的事务处理,还要测试所有可能的事务处理顺序。测试投入的目标在于通过有限的测试用例,最大限度地提高发现的问题的数量,以取得最好的测试效果。”因此,为了穷举测试程序,实际上需要创建无限的测试用例,这当然是不可能的,穷举输入测试是无法实现的,这就是软件测试的经济学,用最经济实用的方法,以最小的代价来尽可能的全面的穷举。

“另一种测试策略称为白盒测试或称逻辑驱动的测试,允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构进行检查,从中获取测试数据。所谓穷举路径测试,即如果使用测试用例执行了程序中所有可能的控制流路径,那么程序有可能得到了完全测试。”

“然而,这个论断存在两个问题。首先,程序中不同逻辑路径的数量可能达到天文数字。因此,穷举路径测试就如同穷举输入测试,非但不可能,也是不切实际的。第二个问题是,虽然我们可以测试到程序中的所有路径,但是程序可能仍然存在着错误。”

284d2b7568094e4787803c66d87b1438.jpeg

黑白 代码

“总之,尽管穷举输入测试要强于穷举路径测试,但两者都不是有效的方法,因为这两种方法都不可行。那么,也许存在别的方法,将黑盒测试和白盒测试的要素结合起来,形成一个合理但并不十分完美的测试策略。本书的第4章将深入讨论这个话题。”

【Summary】:测试员应牢记的重要的测试原则:·软件测试是为发现错误而执行程序的过程;尽量避免编码人员测试自己的程序;好的测试用例能够对未发现的错误高度敏感;成功的测试用例能够发现未知的错误;成功的测试需要仔细定义输入输出的期望值;成功的测试需要仔细研究分析测试结果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值