测试技术论文
软件测试技术是软件工程范畴的一项重要工作,与软件质量密切相关。这是学习啦小编为大家整理的测试技术论文,仅供参考!
测试技术论文篇一
软件测试技术综述
【关键词】软件测试技术 软件工程 软件质量
众所周知,由于通用计算机或芯片在各种系统中的广泛使用,在工程中系统实现各种功能都离不开软件来实现应用功能,因而软件重要性越来越显突出,随着软件工程的发展,目前软件的规模也逐渐越来越大,软件的质量已成为决定各种工程或武器系统的质量乃至成败的最重要因素之一。因此有必要更加重视软件的质量问题。而软件测试作为软件工程的一项重要组成部分也越来越受到重视。
1 对软件测试的定义
在这里我们只讨论狭义上的软件测试。软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查。通常对软件测试的定义有两种描述:
定义1:软件测试是为了发现错误而执行程序的过程。
定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。
2 软件测试流程和策略
2.1 软件测试流程
软件测试的流程可以细分为四个阶段:单元测试,集成测试,确认测试(有效性测A试)和系统测试。单元测试针对软件设计的最小单元A程序模块,进行正确性检验的测试工作。它的目的在于发现各模块内部可能存在的各种差错。集成测试在单元测试的基础上,将所有模块按照设计要求组装成为系统进行测试。确认测试(有效性测试)验证软件的功能、性能和其它特性是否与用户的要求一致。系统测试将测试的软件作为整个计算机系统的一个元素与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行组装测试和确认测试。
2.2 软件测试的策略和技术
软件测试的策略就是测试将按照什么样的思路和方式进行。如采用什么技术,什么步骤等。而软件测试技术可以按照以下几种方式来进行分类:
(1)黑盒(功能性)测试和白盒(结构性)测试。
(2)静态测试和动态测试。
(3)传统测试方法和面向对象测试的方法。
(4)特定环境及应用的测试。
2.2.1 黑盒测试和白盒测试
(1)黑盒测试。黑盒测试又称功能性测试、数据驱动测试、基于规格说明的测试。它 在已知软件所应具有的功能的基础上,检查程序功能能否按需求规格说明书的规定正常使用,功能是否有遗漏,性能等特性要求是否满足。在进行黑盒测试时只需参照规格说明检查软件,不要求考察代码,从用户视角来对软件进行测试。黑盒测试的目的在于检测软件功能是否正确和完整,检测是否有人机交互和数据访问错误,检测软件行为和性能是否满足需求以及检测软件初始化和终止过程是否有错误。
黑盒测试要遵循以下的步骤:首先需要先根据规格说明书来生成测试用例,然后执行测试并分析覆盖标准,最后再根据所得结果来作出结论。
(2)白盒测试。白盒测试又被成为结构性测试、逻辑驱动测试、基于程序的测试。它的与黑盒测试的区别在于我们在进行白盒测试的时候会将程序的执行表现与编码意图作比较,并且关心软件内部设计和程序实现,而主要测试依据是代码和设计文档,这就能够支持严格定义、数学分析和精确度量,从而更加准确的来评价一个软件。
2.2.2 静态测试和动态测试
(1)静态测试。静态测试广义上包括了人工代码检查,软件度量,程序结构分析(自动审查)和自动编程规则检查这些内容。
(2)动态测试。动态测试包括覆盖测试分析和运行时的错误检测。
2.2.3 路径测试
路径测试是指根据路径设计测试用例的一种技术,经常用于状态转换测试中。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
2.2.4数据流测试
前面的测试针对程序的控制流路径,检查程序在各种条件值、各种决策下是否有错。数据流测试主要测试程序中的数值流(覆盖值传递路径),检测变量定义与使用的情况。它比较容易发现下列类型的错误:变量被定义,但是从来没有使用;所使用的变量没有被定义;变量在使用之前被定义两次;其它定义不当或使用不当的情况。
2.2.5 面向对象软件测试
面向对象技术开发出的程序更需要测试且对其进行测试将更复杂。面向对象软件与传统的软件存在不同的软件结构,不同的开发方法且每个开发阶段都有不同以往的要求和结果,针对面向对象软件的新特点,应有一种新的测试模型
3 结论
软件测试是一项非常重要的工作。有些观点认为测试是极简单的工作,谁都能进行软件测试,还认为软件测试技术要求不高,比编程容易多了,测试就是把数据输进程序,看结果对不对,甚至认为测试是就体力活而已。这些观点其实都是不正确的。软件测试是一项非常需要智慧,耐心,协调以及沟通能力的一项工作,它包涵的内容不光有深层次的技术性问题,也有管理方面的问题。如何才能做好软件测试,光有技术上的水平仍然是不够的,还必须要有好的团队合作和细致的工作能力和态度。
软件测试虽然能够发现软件中的问题,但是它并不能证明软件中已经不存在其它的问题了,因此要提高软件的质量,光靠软件测试也还是不够的,还需要全面的履行和落实软件的质量控制,这样才能最大限度的减少软件问题所引起的损失。
参考文献
[1]徐世波.张健关于软件质量保证模型的研究[J].数字技术与应用,2010(09).
[2]张瑶.白晓颖.张任伟.陆皓一种基于模型的测试充分性评估方法[J].计算机科学,2013(02).
[3]徐冰霖.李战怀基于数据操作的航天测控软件测试复用模型[J].飞行器测控学报,2012(02).
作者单位
南京市玄武中等专业学校 江苏省南京市 210042
测试技术论文篇二
软件测试技术研究
摘 要:软件测试是软件工程范畴的一项重要工作,与软件质量密切相关。本文就软件测试的概念、分类和方法等几个方面进行了论述。
关键词:软件测试;黑盒测试;白盒测试
中图分类号:TP311.52
软件测试是软件生产过程中的一个重要环节,是伴随着软件的产生而发展的,它并不是不能正常运行的软件的专利,而是为了发现所有软件缺陷而执行程序的过程。软件测试贯穿于软件开发的到投入使用的各个过程中,不同阶段的测试手段各不相同,测试成为软件产品质量控制和管理的重要手段之一。大量资料表明,软件测试的工作量占软件开发总工作量的40%以上,测试成本也占总成本的30%―50%。
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 从测试的不同阶段分类
单元测试:指的是对每一个工作单元进行测试,了解其运行结果是否符合我们的预期。它对测试人员的要求比较高,要求测试人员对程序代码比较熟悉;一般由程序员自己编完某个单元后,先自我检查通过后,再将测试代码交给测试人员进行审核,如果发现缺陷,原开发者应当及时修正程序,这样可以尽快的发现程序中存在的错误,及时修正以提高程序开发的效率。
集成测试:是在单元测试的基础上,测试再将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试已经完成,集成测试中所使用的对象,已经是经过单元测试的软件单元。
系统测试:是将已经确认的计算机软件和硬件设备、网络和外围设备等元素组合在一起,对已经集成好的系统进行测试,找出所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.它的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性。
验收测试:也称为交付测试,完成了功能和系统测试后、产品发布之前所进行的测试活动,它是技术测试的最后一个阶段。
总之,随着软件开发和测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。
参考文献:
[1]张永梅.软件测试技术研究[J].测试技术学报,2002,6.
[2]刘继华.软件测试技术的研究进展[J].微计算机信息,2012,10.
[3]瞿莉丽.浅析软件测试技术[J].硅谷,2010,4.