软件测试是软件开发工作的重要组成部分,因为软件测试能及时发现软件存在的问题,软件开发工程师在次基础上进行软件调试,解决软件运行时出现的问题,能显著提高软件开发效率,因此,软件测试成为软件开发工作不可或缺的重要步骤,深受软件开发工程师的重视。
1 软件测试的分类及方法
1.1 软件测试的分类
从整体上来看软件测试由静态测试与动态测试之分,其中动态测试包括单元测试、集成测试、确认测试以及系统测试等。各种测试均能不同程度的发现软件开发过程中存在的问题,下面对不同测试方法逐一进行介绍。
1)静态测试。所谓静态测试指不实际运行软件,而是对软件代码、测试用例、设计审查以及需求分析等进行分析、检查。其中认证、验证以及确认是利用静态方法测试软件质量利用率较高的方法。通过静态测试可找出30%~70%的软件编码以及逻辑错误,为后期软件测试铺平道路。
2)动态测试。动态测试指通过设计测试用例模拟软件使用者的行为,对比软件实际运行效果与预期效果之间的差异,寻找软件存在的问题,其和静态测试的区别在于软件是否运行。动态测试较静态测试工作量大,包括系统、确认、集成、单元测试等,其中单元测试指检验与检查软件的最小单元模块,目前主要使用白盒测试技术进行测试且可同时对多个模块进行测试;集成测试指按照集成测试计划,检查软件单位之间的接口是否正确;确认测试的目的在于检查软件是否满足用户需求,因此,测试过程中需有用户参与,当前常使用黑盒测试方法;系统测试是软件测试的重要内容,是交付使用的最后一个环节,需要对软件运行的软硬件环境、性能及功能进行测试。软件开发过程中由黑盒测试工程师负责软件系统的测试。
1.2 软件测试的方法
软件测试的方法包括白盒测试、黑盒测试以及综合策略,其中白盒测试通过认真检查软件的过程性细节,以发现软件存在的问题。白盒测试的方法很多,其中逻辑覆盖方法较为常见。利用该种方法测试时测试人员需比较熟悉软件的内部结构,以设计出合理的测试用例,实现分支、条件、执行语句、条件组合、分支-条件代码的覆盖。
黑盒测试的重点在于检测软件的功能,因此,不涉及软件代码的检测。利用该方法能检测出白盒测试无法发现的问题,是白盒测试方法的互补。利用黑盒测试可及时发现软件与数据库连接、初始化或终止、软件界面、性能等是否出现错误等。黑盒测试方法又分为错误推测法、等价类划分法以及边界值分析法,其中错误测试法适用于经验丰富的开发人员,即根据软件开发过程中错误频率较高的位置进行针对性的测试;对于穷尽的黑盒测试来讲,测试程序时需要输入所有无效与有效数据,工作量非常大,并不可取。实际测试时通常输入代表性较强的数据,以减少测试劳动量,最大限度的发现软件存在的问题。即将需要输入的数据分成多个等价类,每个等价类中选择代表性的数据进行测试;软件开发过程中循环、数据结构以及下标等容易出现问题,此时就需运用边界值分析法进行测试,通过采用针对性的测试用例完成测试;综合策略指联合多种测试方法进行测试,能弥补单一方法测试的缺陷,提高软件测试效率。
1.3 软件测试过程
由上文可知软件测试过程由系统测试、、确认测试、集成测试以及单元测试之分。经过测试主要为了发现软件开发过程出现的系统及功能错误,具体包含以下内容:软件开发前期未进行充分的调研或未完全理解相关要求,导致开发的软件出现一些功能性错误;未将外部环境因素考虑在内,引发系统错误。例如,调用子程序出现错误、操作系统及数据库接口出现错误等;静态与动态数据定义混淆,数据结构、算术运算以及程序定义出现偏差;编写代码时全局与局部变量未做明确区分,一些变量名和系统保留关键字名相同,或粗心大意导致编写的语法错误等。
2 软件测试在软件开发中的应用
软件测试贯穿软件开发的整个过程,为保证软件后期的正常运行奠定坚实的基础,因此,加强软件测试应用方面的研究,进而缩短软件开发周期,提高软件开发效率。
1)应用在软件需求分析环节。对软件进行需求分析,软件测试人员需对工作量、软件测试风险认真的评估,仔细考虑软件测试的可行性等,以确保软件的开发周期、花费费用以及软件功能满足用户需求。软件测试人员通过分析需求的不同内容,就出现的问题与用户进行协商,为后期的软件测试工作创造良好条件。
2)应用在软件设计环节。软件设计环节是软件开发工作得以顺利进行的重要保障,如软件系统设计缺乏合理性,容易引起软件开发时边界问题的出现,导致软件扩展性较弱,甚至软件开发工作的失败。
软件系统设计时测试人员不仅要掌握设计模型,对设计模型的风险进行评估,而且还要进行测试计划的编写。另外,为保证测试设计的合理性与稳定性,避免后期出现不必要的变更,测试人员工作时应保证系统结构质量。针对具有特殊要求的业务可通过创建技术边界实现,以提高软件系统的不可替代性及可持续性。
除此之外,测试人员还应熟悉和掌握软件产品的运行环境,积极参与到软件不同模块、数据库结构等讨论中,对软件设计过程中存在的问题进行评估,重点把握测试环节存在的重点、难点环节。同时,还需掌握软件产品设计的性能以及软件不同模块接口问题,为后期的测试工作奠定坚实的基础。
3)应用在软件编写环节。编写软件代码时测试人员需参与到冻结报告、编写测试用例以及单元测试工作之中,尤其应将测试用例的编写当作重要工作来抓。一般情况下,对软件单元功能的测试软件开发人员可以完成,但自动化测试脚本、测试用例等仍需要测试人员提供支持,因此,测试人员应按照软件开发要求,切实做好软件编写环节上的测试工作。
4)应用在软件测试环节。对软件进行测试时,测试人员主要负责软件质量报告的发布、软件缺陷的发现及检查、测试用例的更新等工作,该环节是软件测试应用在软件开发工作积极重要的环节,涉及系统测试、确认测试以及集成测试等测试内容,因此,测试时应严格依据测试用例实施。通过上述测试后软件能实现基本的功能,不过针对一些特殊用例,还需根据实际情况进行自由测试,最大限度的发现软件存在的缺陷。另外,为保证软件正常运行,如没有测试用例覆盖新发现的缺陷时需及时更新测试用例。除此之外,还需跟踪软件缺陷,尤其对于开展的新项目而言,应按照新报、确认、重现、修复、验证、关闭缺陷等流程实施。
5)应用在软件运行维护环节。软件运行时测试人员主要负责测试用例的重新组合、解决客户提出的问题、帮助客户进行测试的验收等工作,尤其帮助客户验收测试是重要工作,而解决客户提出的问题为关键,因此测试人员对客户提出的问题应认真对待,即从客户的角度出发,了解其真正关心的问题。同时,认真分析前期测试未能检查出软件问题的原因。另外,软件运行维护阶段,应根据需要及时的更新、组织一些新的测试用例,以弥补未设计测试用例的出现的问题。
综上所述,软件测试是软件开发不可或缺的关键环节,软件测试人员应根据软件开发实际需要,切实做好不同环节的测试工作。例如,利用动态方法测试的同时,配合使用静态测试方法,尽量通过测试找出软件开发过程中存在的各种问题,在满足软件功能要求的基础上,保证软件工作的稳定性。
3 总结
软件测试能及时发现软件自身存在的问题,对保证后期软件稳定的运行具有重要意义。为此,测试人员应根据软件的功能需求,不断总结软件测试经验,进而制定合理的软件测试计划,并采用高效的测试方法,提高软件测试效率,在满足客户需求的前提下,确保软件的最终质量。
参考文献
[1]王长利.软件测试过程模型的研究与应用[D].电子科技大学,2012.
[2]路晓波.软件开发过程中白盒测试方法和工具的研究及应用[D].南京邮电大学,2013.
[3]朱寅非.软件测试在软件开发过程中的应用探析[J].无线互联科技,2013(05):48,50.
[4]潘祯,吴永强,王艳华.软件测试在软件开发中应用的探讨[J].硅谷,2011(22):156-157.
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。