小勒帝最近有了一个新的想法,那就是和小伙伴们一起读书,通过这种方式,一起得到进步。编辑内容的过程其实是总结思考的过程。小勒帝带领大家阅读的一本书是《全程软件软件测试》,作者是朱少民。
作者在讨论什么是软件测试上,基于多个角度来扩展和统一大家的认知,便于大家在之后的文章中可以更好的进行探讨。
软件测试的基本认知——正反思维,在这章节中主要从正面和反面的角度去思考软件测试。概念上讲的话,就如1983年的Bill Hetzel将软件测试定义为:“软件测试就是一系列活动,这些活动是为了评估一个程序或者软件系统的特性或者能力,并确定其是否达到了预期结果。”在这句话里,作者提炼出了两个观点:
1、测试试图验证软件是“工作的”,也就是验证软件功能执行的正确性。
2、测试的活动是以人们的“设想”或"预期的结果"为依据。这里的“设想”或“预期的结果”是指需求定义、软件设计的结果。
在这句话之后,作者提醒并告诉了我们一个原则,测试是不能穷尽的。测试会面对大量的测试数据、测试场景或代码路径,测试也只是一个样本实验。接着作者告诉我们一些对于软件测试认知的缺陷,他引用《软件测试的艺术》一书的作者,Glenford J.Myers所说的,从心里学的角度去看,如果将“验证软件是工作的”,作为测试的目的,非常不利于软件测试人员发现软件的错误。因为人类的活动具有高度的目的性,建立适当的目标具有显著的心理作用。因此,逆向的思维也很重要,但不利的地方是,太过注重深度就缺乏了广度。
但是我们需要注意的部分就是,衡量是需要综合考虑的,也就是深度和广度都要顾及到。日常工作中我们既需要效率也很需要质量,那就需要我们将正向和逆向的思维结合起来,做到效率和质量的一个平衡。 我们可以这么理解,需要效率的话,逆向思维就很关键了。需要测试广度来保证质量的话,就需要正向的思维。
1.2从狭义测试到广义测试
在前面作者向我们阐述了,软件产品的缺陷在不同的阶段,修复的价格是很不同的。因此,这就需要测试人员尽早的发现缺陷,来避免这种风险,因此,测试有必要延伸到软件产品的阶段性成果。作者提出如果"软件=程序+文档+数据结构"这样的定义来看的话,需求文档和设计文档也包括在软件测试部分之内。
正是基于上述原因的考虑,作者向我们介绍了,将早期的动态测试延伸到静态测试,也就是从狭义测试到广义测试。
狭义即可以理解为动态测试,运行软件而进行的测试,测试的阶段是在编码之后,这种测试类型也是由于开发瀑布模型决定的。
广义的软件测试,动态+静态的测试,包括需求分析、设计评审、代码评审,等也纳入软件测试的范畴,成为贯穿软件研发周期的直来那个保证活动。
作者说到,引入静态测试,就可以尽早地发现问题,将问题消灭在萌芽之中,将每个阶段的缺陷及时的清除,可以极大的提高产品的质量,有效的降低企业的成本。
1.3基于质量的认知
作者在这里提到的一个很好的观点就是,产品质量影响使用质量,使用质量依赖产品质量。
上面都不因为,就是懒惰一个字。