林文渊 景宏磊
(厦门软件职业技术学院,福建 厦门 361024)
随着IT技术的快速发展,软件产品经历了突飞猛进的发展,各类软件层出不穷,逐步进入寻常百姓家,大到一套完整的控制系统,小到儿童的玩具,都离不开软件的支持。软件的如此快速发展,离不开大量的软件测试人员对产品进行测试,来保证软件的质量,软件测试已经发展成为一门系统的学科,渗入到人们的日常生活中。
软件测试是对系统功能的验证测试,需要在产品需求阶段分析需求,细化需求功能,整理编制测试用例。
在需求阶段需要挖掘软件产品的隐性需求,分析可能存在的各种情况以及预期的结果,完善测试用例。
软件测试工作主要是对测试用例的整理,软件测试质量依赖于测试用例的完整性。若测试用例相当完善,覆盖了需求的所有功能和隐性需求功能,软件产品的质量只要是完整的执行测试用例就可以得到保证,反之亦然。
软件产品测试需要站立在操作使用用户的身份上进行测试,因为使用者是最终的用户,一个软件产品只有得到使用者的认可和赞同才能称得上好软件、好产品,否则软件再怎么被称为功能强大、功能完善,只要对操作使用者来说操作困难,都是无稽之谈,至少不能算的上好软件。
软件产品测试需要与其他部门及用户进行有效的沟通,保证需求正确,操作使用方法切合实际,明确使用人员的操作习惯和期望,只有便于操作、符合使用人员期望的软件产品,才能被接受,才能获得使用人的支持,从而产品才能获得良好的发展机遇。
一个产品经历了启动、计划、实施控制阶段后,产品进入了产品软件测试环节,对各个功能点的测试需要举一反三,力求测试全面,从各个方面进行测试,例如:测试软件的一个自动功能,软件有三种用户:未登陆用户、操作员、管理员,对软件测试时,需要测试三种用户下系统都具备自动功能,还需要测试用户在切换时系统是否具有自动功能。
挖掘隐性需求功能,完善测试用例,保证软件产品质量。一般软件产品的隐性需求是存在的,例如测试需求中ups断电说几分钟内保证原输出状态,隐性需求就是在几分钟后呢是不是也应该保证原输出状态呢,再例如:一套软件是记录员工的工作记录的,每天的工作记录都可以录入,隐藏在里面的需求就是未来的某一天就不应该能录入信息并保存成功。
软件产品测试需要测试软件的健壮性,也就是在极限操作下系统如何处理,应能完成各项操作,如有重复操作应舍弃,新操作进行排队处理,以免使CPU工作异常。测试软件的响应速度,不能太慢,太慢操作人员会认为不方便,影响软件的使用及推广。
软件测试人员应尽早介入软件产品的开发过程中,软件产品是面向于市场需求的产品,需要了解市场需求,细化市场需求,与操作使用人员进行有效的沟通,保证需求准确,制定准确的测试用例,测试软件的容错性,不仅要考虑合理的输入条件,更要注意不合理的输入条件。因为软件投入实际运行中,往往不遵守正常的使用方法,却进行了一些甚至大量的意外输入导致软件一时半时不能做出适当的反应,就很容易产生一系列的问题,轻则输出错误的结果,重则瘫痪失效!因此常用一些不合理的输入条件来发现更多的鲜为人知的软件缺陷。 从正常操作与不正常操作等方面对软件产品进行测试,保证软件质量。
软件测试一般按照先测试软件的正常功能,再进行故障安全方面的测试,最后进行误操作健壮性测试等。
在软件产品测试策略所包含的最主要的部分有两个:测试过程和测试类型,测试过程包括单元测试、集成测试、系统测试、验收测试。测试类型为功能测试、健壮性测试、接口测试、强度测试、压力测试、性能测试、用户界面测试、安全测试、可靠性测试、安装测试、文档测试、兼容性测试、恢复测试等。
试探法:根据正常功能测试用例,猜想易出现问题的方面、可能引起错误的操作、异常的操作顺序等制定针对性的测试用例进行测试。
回溯法:利用已测试出的问题,沿着问题求根溯源,与问题相关的功能都进行测试,最终找到问题的根源以及与问题相关的一系列问题。
归纳法:从问题出发,分析出现问题的原因,归纳出现问题的原因,从而映射整个软件,测试软件的各个模块。
软件测试还包括问题的分析、跟踪及回归测试,问题的分析过程是软件测试人员测试水平的提高过程,通过分析,学习处理方法,积累测试经验,测试人员了解软件开发者的设计思路,可以更好的设计测试用例,掌握测试方法,保证软件产品的测试质量。
为了减少系统的开发费用,越早测试越好,这是多年来软件行业的一个成功经验,即在整个软件开发生命周期中通过各种软件工程技术尽量早地完成各种软件测试任务。
软件的整个测试生命周期是与软件的开发生命周期基本平齐的过程,在软件开发生命周期中,软件是通过迭代来不断加以完善的。在这种环境中,对于每个作为测试目标的工作版本,测试的生命周期还都必须具有一种迭代方法。对于针对每个工作版本执行的测试,都做出了增补和改进,并累积为一个测试体,用于后续阶段的回归测试。
通过迭代使软件开发把原来的整个软件开发生命周期分成多个迭代周期,在每个迭代周期都进行测试,这样在很大程度上提前了软件系统测试发生的时间,这可以在很大程度上降低项目风险和项目开发成本。
软件测试需要测试人员具备丰富的知识背景,相关的测试经验以及直觉,才能将测试用例设计的很周全,从完整性、容错性、边缘性等方面设计,测试系统功能的同时,检查系统对输入数据(合法值、非法值、临界值)的反应,检查合法的操作和非法的操作,检查系统对组合条件的反应等。好的测试用例可以让其他人很好的执行测试,能够迅速的遍历所测试的功能,能够发现至今没有发现的错误。
软件测试是一项系统的工程,需要测试人员积累测试经验,整体把握测试产品,制定完善的测试用例,仔细的执行,需要具备多学科的知识,从各个方面入手,制定全面的测试计划,来保证软件产品的质量。
软件测试贯穿于项目开发的始终,在各个阶段都要做好相关的软件测试,能够较早的发现系统中存在的缺陷及需求不清问题,及时的通知开发人员进行更改,在一定程度上减小了项目的成本,缩短产品的开发周期,对整个项目来说,软件测试发挥着重要的作用。
软件测试要切合实际,符合人们正常的思维过程,符合正常的操作规范,要建立在用户使用的基础上,能为人们的日常工作带来便利,提高人们的工作效率,从这些方面入手,编制测试用例,进行软件产品的测试,保证软件的质量。
[1]景宏磊,林丁报.软件性能测试的基本概念和一般过程[J].科技资讯,2011.
[2]林丁报,景宏磊.WEB 应用前端性能优化浅析[J].科技资讯,2011.