软件测试技术

点赞:17075 浏览:79885 近期更新时间:2024-02-07 作者:网友分享原创网站原创

摘 要:软件测试是软件工程范畴的一项重要工作,与软件质量密切相关.本文就软件测试的概念、分类和方法等几个方面进行了论述.

关 键 词:软件测试;黑盒测试;白盒测试

中图分类号:TP311.52

软件测试是软件生产过程中的一个重要环节,是伴随着软件的产生而发展的,它并不是不能正常运行的软件的专利,而是为了发现所有软件缺陷而执行程序的过程.软件测试贯穿于软件开发的到投入使用的各个过程中,不同阶段的测试手段各不相同,测试成为软件产品质量控制和管理的重要手段之一.大量资料表明,软件测试的工作量占软件开发总工作量的40%以上,测试成本也占总成本的30%―50%.

软件测试技术参考属性评定
有关论文范文主题研究: 关于软件测试的论文例文 大学生适用: 自考毕业论文、专升本论文
相关参考文献下载数量: 93 写作解决问题: 如何写
毕业论文开题报告: 标准论文格式、论文总结 职称论文适用: 杂志投稿、职称评副高
所属大学生专业类别: 如何写 论文题目推荐度: 经典题目

1软件测试的目标和重要性

1.1软件测试的定义

看待软件测试的角度不同,软件测试的定义也各不相同.总的说来,软件测试就是利用测试工具按照预先设定好的方案和流程对产品进行功能和性能测试,甚至根据需要重新编写测试代码,对测试过程中可能出现的问题进行分析和评估.它是帮助识别开发完成的计算机软件的正确度、完全度和质量的软件过程,是保证软件质量的重要内容.

1.2软件测试的目标

软件测试的正确定义是“为了发现程序中的错误而执行程序的过程”.而测试的目的决定了如何去组织测试.测试的目标是什么?G.Myers曾给出了关于测试的一些规则,这些规则可以看作是软件测试的目标:

(1)软件测试并不是为了验证软件的正确性,而是为了发现错误而执行程序的过程.(2)好的测试方案是尽可能发现目前尚未发现的错误的测试方案.(3)成功有效的测试是发现了至今尚未发现的错误的测试.从以上规则可以看出,测试是以查找错误为中心,和人们通常想象的“测试是为了验证程序的正确功能”,“成功的测试是没有发现错误的测试”等是完全相反的.所以,近年来,正确软件测试目标如下:(1)软件测试并不仅仅是为了查找出软件的错误,而是要通过进一步分析错误产生的原因和错误的发展趋势,发现一些可以通过测试避免的开发风险;(2)通过测试能够帮助测试人员设计出适合该软件更加有效的测试方法,进一步提高测试效率,缩短测试实践,降低测试费用;(3)结果完全正确的测试也是有价值的,是软件质量的一种评价,但并不是测试正确就说明该软件没有错误,随着使用的深入,功能的扩充等会逐步暴露出更多的问题,实践证明,完全没有错误的软件世间难求.

1.3软件测试主要包括

(1)正确性和精确性测试:如果软件的运行结果不正确和不精确,那么会给用户带来很大的麻烦,甚至造成不可估量的损失,因此是保证软件质量的最重要因素.(2)容错性测试:容错性测试是在认可错误的情况下进行的测试,是检查软件在异常条件运行,是否具有防护性和能否自我恢复.容错性测试能确保系统不发生无法意料的事故,从而提高软件的安全性和可靠性.(3)性能与效率测试:用户都希望软件的运行速度更高一些,并且占用的资源更少些,性能与效率测试主要是优化软件的算法,数据结构和代码组织来提高软件的性能和效率.(4)易用性测试:易用性测试是测试软件的易用程度,就像一个常用扳手工具,拿到就能明白怎么去使用,因此易用性测试没有一个量化的指标,主观性较强.在平时使用中,当用户不能正确使用软件中的某个功能时,大多数人首先会通过各种方式学习、请教,或者向产品支持部门打,还有一部分用户会查阅用户手册.通常认为,用户不通过翻阅用户手册就能使用的软件易用性较好.(5)文档测试:文档测试主要检查文档的正确性、完备性和可理解性.

1.4软件测试的基本原则

(1)尽早并不断地进行软件测试;(2)程序员或程序设计机构避免测试自己的软件;(3)测试前应当设置合理的测试用例,测试用例的设计不仅要有合法的测试数据,也要有非法的测试数据;(4)对程序修改之后要进行回归测试;(5)妥善保留测试计划、严格按照计划测试,排除测试的随意性,全部测试用例、出错统计和最终分析报告,并对每一个测试结果做全面检查.

1.5软件测试的地位

软件的开发过程包括需求分析、设计、实现和测试四个阶段.软件测试在软件生命周期中占重要地位,是软件交付用户使用前保证软件质量的重要手段.在系统发布之前,从客户的需求出发,尽早发现问题,修改的成本越低,破坏性也越小.一旦系统投产后发现问题,其危害性被成倍放大,甚至会给双方造成不可估量的损失.

2软件测试方法

按照不同的分类方法,软件测试可以分为多种类型.

2.1从是否需要执行被测试软件的角度分类

静态测试:是指不需要实际运行软件,主要对软件的编程格式、程序逻辑结构等方面进行测试.静态测试是通过对源程序进行语法检查,静态结构分析、代码质量等方面找出缺陷和可疑之处,例如变量定义和生命周期检查、模块接口的正确性、是否允许递归、程序逻辑和结构审查等.

动态测试:通常的上机运行软件而进行的测试,这种方法是使程序有控制地运行,并从多种角度观察程序的行为,以发现其中的错误.在软件维护阶段,当修改软件后,除了对修改部分的软件进行常规的测试外,还应对软件的其他部分进行回归测试,所谓回归测试是指全部或部分地重复已做过的测试,它主要检查软件的修改是否在软件的未修改部分引入了新的错误.


2.2从是否针对软件结构与算法的角度分为

白盒测试,主要是对软件的逻辑结构进行的测试.白盒测试要求测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试,不需测试软件产品的功能.测试过程是基于覆盖全部代码、分支、路径和条件.白盒测试是指在知道产品内部工作过程,通过设置测试用例来检测产品内部动作是否按照规格说明书的规定正确进行,检验程序是否都能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑覆盖、基本路径测试等.

黑盒测试:指测试来检测每个功能是否可以正常使用.执行严格的测试,通过对整个软件或某些软件功能,但不检查程序的源代码还是非常清楚的了解该软件的源代码程序具体如何设计.通过输入测试数据,并通过分析的结果输出到测试人员了解软件是如何工作的.在测试中,主要的功能是用来检查是否正确的程序或缺少的功能,用户界面是正确的,错误的数据结构或外部数据库访问错误,性能是正确与否,程序是否有初始化和终止错误的存在.

2.3从测试的不同阶段分类

单元测试:指的是对每一个工作单元进行测试,了解其运行结果是否符合我们的预期.它对测试人员的要求比较高,要求测试人员对程序代码比较熟悉;一般由程序员自己编完某个单元后,先自我检查通过后,再将测试代码交给测试人员进行审核,如果发现缺陷,原开发者应当及时修正程序,这样可以尽快的发现程序中存在的错误,及时修正以提高程序开发的效率.

集成测试:是在单元测试的基础上,测试再将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动.也就是说,在集成测试之前,单元测试已经完成,集成测试中所使用的对象,已经是经过单元测试的软件单元.

系统测试:是将已经确认的计算机软件和硬件设备、网络和设备等元素组合在一起,对已经集成好的系统进行测试,找出所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.它的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性.

验收测试:也称为交付测试,完成了功能和系统测试后、产品发布之前所进行的测试活动,它是技术测试的最后一个阶段.

总之,随着软件开发和测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍.