最近我也在读《计算机软件测试》,刚读完第一遍,在网上看到有人总结的读书笔记,觉得写得蛮好的,转载过来,以后自己再整理添加吧!~
最近看了一本关于软件测试的书,书名是《计算机软件测试》(原书第2版),英文书名是《testing computer software》,作者Cem kaner、Jack Falk、Hung Quoc Nguyen,译者王峰、陈杰、喻琳。 下面是看书的一些笔记,和大家分享。
1.并不是所有的问题都应该在黑盒测试中发现的。
存在这样的问题,一次操作没有问题,但是同样的操作做很多次后,系统会出现问题,譬如缓冲区溢出,内存使用不当等。
这种情况通过黑盒测试是不可能解决的,测试人员不仅需要对需求规格有了解,还必须对软件的设计甚至是代码有所了解。 (或者说,需要有了解设计和代码的测试人员)
当然测试人员也可以分成很多种,包括单元测试、集成测试、系统测试、验收测试等。这些测试阶段可以由相同的测试人员来完成,也可以由不同的测试人员来完成。
2.要以发现缺陷为目的来进行你的测试(P23)
如果你认为你的工作就是要找到问题,那么比起认为自己的工作是验证程序不存在任何缺陷来,你会更加卖力的寻找问题。(Myers, 1979)。心理学研究中有个经典的发现:人总是容易看到自己想看的东西。例如,校对工作中是很难进行,因为你总是想看到拼写正确的单词,你的大脑会对拼写错误的单词自动的进行更正。
生病看医生的比喻(P25)
想一下Myers(1979)所作的比喻。假设你病了,去看医生。他应该给你做检查,找出哪里有病,然后推荐治疗措施。但是他不停的检查啊检查啊,检查到最后他什么问题都没有发现。那么他究竟是一个很棒的检查人员还是一个不称职的大夫呢?如果你真的有病,他就是不称职的,所做的价钱昂贵的检查纯粹是浪费时间、金钱和精力。对于软件而言,你就是那个大夫,程序就是那个(的确)有病的患者。
3.什么是原型开发(P35)
原型开发。原型是系统或系统某一部分的模型。原型应该尽可能快速和廉价的建立起来,对它的更改应该不难而且代价小。原型没有必要完成实际的工作,它的作用是给于使用它的人以便宜、直接的产品功能体验。
4.路径测试本身并不是完全测试。(P40)
即使每条路径都执行一次,程序还是可能存在缺陷。例如:被0除。
Set A = B/C。
5.性能测试的目的之一是为了提高性能。(P45)
我们常犯的错误的就是性能测试得到了设备的性能指标,没有进一步的用来提高性能。
6.特性和缺陷都在决定着质量。(P55)
作为测试人员,常常过分的关注于缺陷,而放弃了对特性的关注。
当特性无法满足用户需求的时候,这种情况和存在一个严重缺陷是一样的。
7.以发现的缺陷数作为衡量测试人员能力的标准的缺陷(P94)
描述了统计测试人员发现的缺陷数,会对测试人员带来的心理压力,以及可能导致的测试人员对缺陷的弄虚作假。(提交一些简单的FR充门面)
我认为这一点和第2点有点冲突,又要求测试人员以发现缺陷为目的,有不用缺陷数来衡量测试人员的能力,实际操作中比较困难,需要测试经理有很强的协调能力。
8.数据库的目的是使得缺陷得到改正,而不是要产生细密的管理统计数据。(P97)
常见的问题就是,测试经理收集了大量的统计数据、各种图表,但是这些数据对于发现和修改缺陷都没有帮助,浪费了大量的时间做一些无用的工作。
9.一个优秀的测试用例应满足下列条件(P112):
有相当的可能找出软件错误。
不是冗余的。
本类用例中最佳的选择
既不过于复杂,也不过于简单。
10.测试计划的作用:产品、工具(P178)
测试计划作为产品的情况:软件卖给军方或是医用产品,FDA要审查,需要知道详细的测试过程;
测试计划作为工具的情况:测试计划作为可用的工具,其价值取决于他能够帮助你管理测试项目并找到缺陷的程度。除此之外,都是对资源的无效利用。
11.需要尽早进行的测试:
最可能发生错误的区域
错误最明显的区域
最常使用的程序区域
有差别的程序区域
最难改正的区域
你最理解的区域