好书推荐:《软件测试的艺术》
关键词:软件测试、心理学、测试方法、调试
一、初识《软件测试的艺术》
《软件测试的艺术》,一本薄薄的小书,英文名是The Art of Software Testing。本书出版于1979年,距今已经快40年了。虽然这本书真的很薄,但却囊括了软件”测试”的种种概念与艺术。
我一开始编程完全不知道有测试的概念,书中,”测试”是一个较为全面的概念,它不只是单纯认为的对程序进行编译测试。后面了解到 TDD,有感于测试用例编写的繁琐。慢慢的又开始认识测试,因为高效的编程离不开测试。测试可以解放我们的大脑,专注于面向接口编程而不需要记住所有接口的内部逻辑,更不要说随之而来的减少Bug,方便重构等好处了。
二、软件”测试”
因为对测试我本身就怀有很多的疑惑,那么什么是测试?
三、软件测试的心理学
其中,不成功的测试用例,会看到程序输出正确的结果而没发现任何错误。测试用例没发现错误就认为该测试用例是不成功的测试用例吗?软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程。软件做了其应该做的,未做其不应该做的。
为什么我们要写测试?
我觉得测试主要有三方面:
一、编写测试可以保证代码实现了我们需要的逻辑,不至于到线上才出现一些低级 Bug。
二、测试可以快速重复多次运行,节省我们每次修改完代码后花费无聊、痛苦的手动测试时间。
三、写测试的过程可以理清我们代码的逻辑,毕竟你不能对一个你自己都不了解要做什么的代码块编写测试。
起初我认为成功的测试就是没有发现错误的测试就是成功的测试,但是书中你可以发现错误的测试才是成功的测试。类比于对病人做检查,正确查出病因的检查才可称为成功或者有效,测试同样如此。
四、软件测试的方法论
测试的几个原则:第一是通过有限的测试用例,尽可能多的发现错误,如何更有技巧的编写测试用例;第二十测试需要多次重用,持久化测试用例的价值;第三则是程序某部分已发现的错误跟其未发现的错误成正比,这就要考虑如何分配测试用例的精细度。第四需要对无效输入进行测试,防御性编程。
白盒测试:条件比上判定覆盖,书里面提到的覆盖条件计算比较复杂,可以用《代码大全》里面提到的简化版来决定测试用例数。
黑盒测试:类似于等价类划分,尽量将输入范围划分为几个等价类,使得对某个等价类元素的测试等同于对整个集合的测试。同时区分有效等价类和无效等价类。如果可能的话对输出范围也进行等价类划分。
边界值测试:测试用例的选取尽量选择边界值。
测试里面比较有意思的就是代码检查、走查与评审了,他简介了人工测试,即非基于计算机测试的过程,在程序开始编码之后,基于计算机的测试开始之前进行。有代码检查,代码走查,桌面检查,同行评审以及可用性测试。
其中代码检查和走查都需要人们组成一个小组来阅读或者直观检查特定的程序,进行头脑风暴,目标是找出错误,但不是改正错误。换句话说是测试而不是调试。代码走查的一个优点是一旦发现错误通常就能在代码中对其进行精确定位,这就降低了调试的成本。代码检查和走查通常会有效的查出30%-70%的逻辑设计和编码错误,和基于计算机的测试是互补的。
五、调试
六、总述
与《软件测试的艺术》相关的书《代码大全》中提到,”越好的程序员越是谦虚,因为他们明白编程是为了弥补人有限的智力,因此愿意通过学习来弥补。而编程糟糕的程序员往往自负,为此失去了提升自我的机会”。对软件测试而言,我觉得”Form is liberating“这句话总结的很好,以此自勉。
参考文献
1.博客.软件测试的心理学和经济学[EB/OL].https://blog.csdn.net/lili625/article/details/469272552.百度百科.软件测试方法[EB/OL].https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95/1850037?fr=aladdin3.百度百科.方法论[EB/OL].https://baike.baidu.com/item/%E6%96%B9%E6%B3%95%E8%AE%BA/827484.百度百科.TDD测试驱动开发[EB/OL].https://baike.baidu.com/item/TDD/9064369
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!