浅谈软件永远不完美的原因
2019-10-21陈诗瑶张登翔
陈诗瑶 张登翔
摘 要:软件测试并不能保证软件永远完美无瑕,可是如果没有软件测试人员,软件出现的问题会更多。造成软件不完美的原因很多,本文从多角度分析了软件不完美的原因。
关键词:软件;软件测试;软件缺陷;bug
引言
随着科技的发展,为了提高用户体验,无论是手机还是电脑,系统经常提醒我们需要进行软件更新,为什么软件需要更新呢?软件为何不能一次性做到最好,达到一劳永逸的效果呢?软件测试人员都做了什么?
完美是指完备美好,没有缺陷。不完美即不是完备美好,有缺陷,对于软件而言,就是bug。永远,这是个时间限制期,将不完美在时间线上无限延长。也就是说,任何情况下,没有哪一个软件是完美的。
一、软件测试的流程
软件测试的目的是发现软件的缺陷,验证软件是否满足用户需求,并通过分析软件错误产生的原因,以帮助发现当前开发工作所采用的软件过程的缺陷,以便进行软件过程改进。软件缺陷发现越早,成本越低。
软件测试的流程大体如下:
(1)产品经理提供产品需求文档PRD(Product Requirements Document),测试人员进行需求分析和文档审查;(2)设计测试计划,如对所需工时进行计划,并进行同行评审;(3)测试人员进行测试用例设计并进行同行评审;(4)执行测试,对测试场景的执行;(5)测试人员发现问题,发现bug,测试和开发人员进行处理;(6)问题处理完毕后,回归测试,重复再次执行前面的测试;(7)测试完成,编写测试报告;(8)等待测试验收,验收通过,编写测试报告,进行测试总结;(9)软件符合要求,软件上线,用户使用。
一个软件的上线,要经历业务方、项目经理、产品经理、舌蕨设计师、软件开发人员、软件测试人员等,可是经历了如此多的流程和人员,为何用户使用到的软件永远不完美呢?
二、软件不完美的原因
(一)软件测试做不到完全测试
完全测试软件是不可能的,软件的输入量太大、输出结果太多或者路径组合场景太多,通过软件测试不可能完全消除错误,无法做到对软件进行完全的测试。
例如,测试一个计算器,无法做到将计算器每一个输入和输出都测试一遍。测试完1+1,1+2,……1+999999999999,2+1,2+2……2+999999999999,……,还有加减乘除、平方、根号、倒数、小数等,其输入输出量巨大。无论从哪个角度,测试人员都无法做到对计算器的每一个结果都进行测试。所以,软件测试是做不到完全测试的。
(二)软件测试总是会漏掉某些缺陷
软件测试人员不能对软件进行完全的测试,但不完全测试又会漏测软件bug。
测试人员对软件测试的时间越久,发现的软件缺陷越多,但是测试费用也就越高,测试成本增大。相反,若测试人员对软件测试的时间较短,测试费用的确有所降低,但是发现的软件缺陷数量越少,这样的软件上线,给用户使用,就会暴露出很多问题。综上所述,这本身就是一个矛盾体。而软件需要上线,测试最后都会有终止时间,这就要求测试人员学会找到软件测试的平衡点。其实软件缺陷在漏掉的数量达到某一个点之后,就没有明显的变化了。测试人员就要找到软件的最优测试量——指测试不多不少,在有限的时间里,尽可能多的找出软件缺陷,将巨大的缺陷减少到一个可以控制的范围。测试人员需要针对风险做出明智的选择,对软件的测试需要平衡好哪些测试是重要的,哪些测试是不重要,將风险尽可能降低。如某些要求先保证软件主流程正常进行,再细看软件细节是否争取。
(三)测试人员不能报告潜在的软件缺陷
当测试人员对软件进行一段时间的测试后,即使这段时间很长很长,测试人员也不能完全确保该软件就没有软件缺陷了。测试人员可以报告出软件存在哪一个缺陷,却不能汇报软件缺陷没有了。也就是,软件测试人员可以说现存在几个bug,却不能说一定没有bug了。
(四)不是所有的软件缺陷都需要修复
不仅仅是找出软件缺陷需要时间,修复软件缺陷也是需要时间的,开发人员修复之后,测试人员还需要将软件再次进行回归测试,即再一次验证,这需要时间去处理。可是现实生活中,软件的开发测试周期有相应的时间节点,团队需要将软件在规定的时间发布出去供用户使用,在时间不是很充裕的情况下,会经过多方面的协商与沟通,做出一定的取舍,可能就会出现带软件缺陷上线的情况,上线的软件缺陷会留着下一次解决或优化。
(五)软件测试人员的疲惫感导致软件漏测
测试人员对软件进行长时间的测试,会产生一定的疲劳,且生成定性思维,可能就会测试不出某些问题。此时,测试人员进行适当的休息调整或更换另外人员进行测试,这样对于软件的保障会更好。
(六)社会科技进步,导致软件显得不完美
人类社会在不断进步,科技技术也在更新换代,当初各方面都比较完美的软件,随着时间的推移,早期的软件已不能满足人们的需求,这也就演变为软件的缺陷问题。软件只有通过不断的升级才能保持现在的完美。
抑或是,开发软件的过程中,软件是可以跟上时代的潮流,可经过一段时间,待软件开发出来,已经被时代抛弃,软件不够完美。
(七)其他
1.若使用自动化测试,自动化测试技术不够完善,也不能完全测试软件,就需要将测试程序进行不断的更新,不断完善自动化程序。
2.如果仅仅依赖黑盒测试,不能做到很好的测试。一个软件的完美程度和团队人员的水平有一定的关系,好的团队开发出来的软件也许会更完美。
3.开发过程中,产品的需求文档有时处于一直更新的状态,没有固定不变的版本。造成软件需要多次更改,致使最后的软件不完美。
4.测试人员的数量是有限的,软件测试是有时间期限的,有限数量的软件测试人员需要在有限的时间内测试软件,不能做到对软件的完美测试。
5.发现软件缺陷越多,就说明该软件的缺陷越多。发现一个bug,周围可能就会出现一群bug,也许这一群bug都是由于某一个bug而导致的。
6.某天开发人员心情不是很好,那他当天开发出的软件可能软件质量不是很好,缺陷就会稍微多一些。每个人的都有自己的习惯,一个人可能会经常在某一个地方犯同样的错误。
7.每个用户的习惯不同,A用户认为是缺陷,B用户可能刚好认为挺不错。
三、结束语
软件永远是不完美的,恰巧是软件不完美,才需要进行优化,使其更加完美,我们也需要接受软件的不完美。软件开发人员应该秉着严谨的态度进行软件开发,不能抱着测试人员在测试时会进行兜底的心态。同样,软件测试人员是第一个使用软件的人,应该时刻站在用户的角度来看软件,提升软件的满意度。当出现问题时,测试和开发人员都需要从自身的角度看问题,从中吸取经验,提高软件的完美度。开发和测试人员应该想着为人民服务的心态开发和测试软件,从用户角度看待软件。只有团队齐心协力,将软件做到更好,使软件更加完美。
参考文献:
[1]RON PATTON. 软件测试: 第2版 : 英文[M]. 2006.