不同的图书、不同的环境对软件质量有着不同的定义,其意义也不尽相同。作为一名软件测试人员,主要是按照需求文档去测试软件,而测试后的最终产品是要交付给用户使用的。所以,本书给出的软件质量的定义是指软件开发测试完成后,软件所展现出来的各项功能特性是否符合需求文档,是否满足用户的需求。如果满足,则表明这个软件质量很好;反之,则表明软件质量不好。
软件测试是一个动态过程,而不单单指某一项测试工作和技术。本书对软件测试定义如下。
软件测试是从前期需求文档的评审,到中期测试用例设计及测试执行,再到后期问题单的提交和关闭等一系列的测试过程。
测试人员在测试软件的过程中,当发现实际运行的结果和预期的结果不一致时(这个预期的结果其实就是指需求文档里面的要求),就把这个不一致的地方称为软件错误。当然,软件错误不仅是指与需求文档不符的地方,在测试过程中,测试人员发现有影响用户体验和使用的任何地方,都可以把它当作软件错误提出来。在工作中也把软件错误称为Bug(Bug、错误、缺陷、问题,这四类表述是同一个意思)。
就软件测试而言,80/20原则指的是80%的Bug集中在20%的模块里面,经常出错的模块经修复后还会出错。具体分析有如下两点。
(1)80%的Bug集中在20%的模块里面,意思是,如果一个软件中发现了100个Bug,那么其中80个Bug很可能都集中在该软件20%的模块里。为什么这么说呢?打一个比方,在开发一个软件的时候,并不是所有的模块都很复杂,例如,一个软件包括10个模块,可能其中2个模块比较复杂,而剩下的8个模块比较简单,那么复杂模块出现问题的概率就会高一些,如果这2个关键模块没有处理好的话,那么这2个模块的Bug数量可能会占Bug总量的80%。所以在测试软件的时候,记得关注这些Bug高危多发 “地段”,在那里发现软件Bug的可能性会大很多。
(2)经常出错的模块经修复后还会出错,意思是,同一个地方如果经常出现Bug,即便Bug被修复,这个模块可能还是不稳定的,还会产生新Bug。
当然,80/20原则的结论只是经验之谈,也就是说,80/20原则并不是绝对的,只是具有相对的普遍性。