APP下载

浅谈软件永远不完美的原因

2019-10-21陈诗瑶张登翔

科学与财富 2019年25期
关键词:软件缺陷软件测试软件

陈诗瑶 张登翔

摘 要:软件测试并不能保证软件永远完美无瑕,可是如果没有软件测试人员,软件出现的问题会更多。造成软件不完美的原因很多,本文从多角度分析了软件不完美的原因。

关键词:软件;软件测试;软件缺陷;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.

猜你喜欢

软件缺陷软件测试软件
禅宗软件
基于源文件可疑度的静态软件缺陷检测方法研究
基于OBE的软件测试课程教学改革探索
软件对对碰
EXCEL和VBA实现软件测试记录管理
基于NPE-SVM的软件缺陷预测模型
关于软件测试技术应用与发展趋势研究
开源程序的软件缺陷分布特征的量化分析研究
软件测试工程化模型及应用研究
谈软件的破解与保护