第1个回答 2024-01-04
在讨论软件测试原则时,一开始就强调测试人员要在软件开发的早期,如需求分析阶段就应介入,问题发现的越早越好。发现缺陷后,要尽快修复缺陷。其原因在于错误并不只是在编程阶段产生,需求和设计阶段同样会产生错误。也许一开始,只是一个很小范围内的错误,但随着产品开发工作的进行,小错误会扩散成大错误,为了修改后期的错误所做的工作要大得多,即越到后来往前返工也越远。如果错误不能及早发现,那只可能造成越来越严重的后果。缺陷发现或解决的越迟,成本就越高。
平均而言,如果在需求阶段修正一个错误的代价是1,那么,在设计阶段就是它的3~6倍,在编程阶段是它的10倍,在内部测试阶段是它的20~40倍,在外部测试阶段是它的30~70倍,而到了产品发布出去时,这个数字就是40~1000倍,修正错误的代价不是随时间线性增长,而几乎是呈指数增长的。
软件未达到产品说明书表明的功能。
软件出现了产品说明书指名不会出现的错误。
软件功能超出产品说明书指名范围。
软件未达到产品说明书虽未指出但应达到的目标。
软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
一般我们都认为测出一个问题就是一个bug,其实这是不对的,假设测试10个问题就10个bug,而修改一出就全解决了,程序员肯定认为冤枉自己。
所有软件是文档,代码等组成的,最初的错误是来自于这些软件错误(software
error),如代码中加法写成减法。软件错误导致软件缺陷(software
defect),如设计缺陷,代码缺陷等,可用静态测试,如走查,静态检查,测试床(军事软件用的技术)等,软件的缺陷导致一个或多个软件故障
(software
fault),故障有内部故障,外部故障,也就是我们所说的bug,软件故障导致了软件在功能操作等方面的失效(software
failure)。
我们平时测的bug实际上是软件故障于失效的体现。一旦软件错误得到修改,相应的故障与失效也就解除了。这样分有助于我们定位问题,找到问题。
详见《软件可靠性工程》