在很多人,甚至还包括一些软件技术人员眼中,软件测试可能是这样的:
→ 软件测试就是走流程,把软件试用一遍
→ 有程序员就够了,测试员又代替不了程序员,聘请没意义
→ 我们是聘请的业内资深软件开发人员,不需要做软件测试
也可能是这样的:
→ 随便找个懂代码的就能做软件测试
→ 测试时间多寡按照工程进度来算
还可能是这样的:
→ 软件开发完成后,才能进行软件测试
→ 软件发布后,如果发现质量问题,就是软件测试员工作失误
→ 软件测试是测试人员的事情,与程序员无关
……
而事实上,当企业的软件正式上架后,才发现一系列功能缺失、bug、数据丢失,甚至被黑客入侵,就算追悔于当初不该忽视软件测试的重要性,也为时已晚。下面,我们就来一一聊下这个熟悉又陌生的名词——软件测试。
软件测试(Software Testing):
描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
正是由于大家对软件测试存在诸多误解,才导致软件测试活动的开展和真正提高软件测试质量。下面我们就来对上述误区做出剖析和解释,希望大家对软件测试有一定的改观。
误区一:软件测试就是走流程,把软件试用一遍
在很多中小企业看来,软件测试员的任务就是把软件试用一遍,把问题记录下来就结束了。这是由于业内一些所谓的“专业人员”对软件测试“不拘小节”的操作,造就的不良影响。通常情况下,这些“专业人员”从未接触或仅接触过一点点软件测试知识,凭着自己学过一点代码就“上路混饭吃”,造就了企业对软件测试员形成这种不良印象。而事实上,软件测试与软件开发同步进行,在软件开发过程中不断修正软件开发过程中的潜在问题,修补漏洞,并及时给予纠正。并不是单纯的“走流程”。
误区二:有程序员就够了,软件测试又代替不了程序员,聘请没意义
由于我国软件整体开发能力比较低,软件过程很不规范,项目的成功往往靠个别全能程序员决定。他们认为负责总体设计和程序详细设计,并实施完成,给人印象往往很牛X;而软件测试员则是走流程,是混饭吃的,聘不聘请无所谓。在这种环境下,软件测试很不受重视,地位和待遇自然就很低了。
随着市场对软件质量的不断提高,软件测试将变得越来越重要。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,市场也需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。
误区三:我们是聘请的业内资深软件开发人员,不需要做软件测试
一些企业在实际操作中,对软件开发往往表现出足够重视的态度。他们花重金聘请业内资深大牛,对自己的新软件做足了需求和可开发性调研,并且顺利完成了软件开发。而此时,如果你对其新软件提出软件测试,基本会遭到否定。原因基本雷同:“我们聘请的是业内大牛,不会存在任何问题。”殊不知,任何大牛开发的软件都会或多或少的存在问题,而这些问题的发现和解决,往往离不开软件测试人员,不存在不经测试就完美无缺的软件!
误区四:随便找个懂代码的就能做软件测试
很多人都认为只要懂代码的,就能做好软件测试。实际上,懂测试的一定懂代码,但懂代码的不一定懂测试。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,测试过难度更深化,测试内容更注重细节化,更需要测试者对业务体系、用户操作特点、使用习惯等多维度的考虑。软件测试技术也在不断更新和完善,新工具、新流程、新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。
误区五:测试时间多寡按照工程进度来算
这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。
误区六:软件开发完成后,才能进行软件测试
人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。
软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。
误区七:软件发布后,如果发现质量问题,就软件测试员工作失误
软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。
误区八:软件测试是测试人员的事情
开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误。