软件测试理论浅析

2016-06-03 18:55周金萍
科教导刊·电子版 2016年11期
关键词:软件测试

周金萍

摘 要 随着软件产业的快速发展,人们对软件质量的要求标准也日益增加。由于,软件是一种对开发者智力依赖程度很高的产品,这也决定了存在缺陷和漏洞是软件的自然属性。因此,软件测试应运而生并日趋成熟。软件测试作为保证软件质量的一门学科,应该贯穿于软件生命周期的各个阶段。本文主要介绍了软件测试的发展历程、软件测试的主要目的及方法、以及测试评估的相关概念。

关键词 软件测试 软件生命周期 软件测试评估

中图分类号:TP311 文献标识码:A

0前言

自从IBM 360操作系统开发的失败以来,软件危机便进入人们的视野并备受关注。如今,在软件产业化发展的大趋势下,人们对软件的质量、成本和开发进度的要求也越来越高,质量控制的含义已经超越了传统意义上的软件测试的要求及规范。传统的软件测试大多是基于代码运行的,并且常常是在软件开发的后期才开始进行的。但大量研究表明,设计活动引入的错误占软件开发过程中出现的所有错误数量的50%~65%,因此,越来越多的声音呼吁,要求有一个贯穿于软件开发各个阶段的软件测试过程。

1软件测试的发展历程

按照时间划分可以把软件测试的发展史划分为5个阶段,这五个阶段分别是面向调试、面向证明、面向查错、面向评估以及面向预防的测试。1956年之前是面向调试的测试,是软件测试的第一个阶段。早期的开发过程中,由于软件规模小,软件测试是为了纠正软件的故障等同于软件调试。那时进行软件测试较晚,测试工作一般是由开发人员进行;面向证明的测试从1957年开始到1978年结束,是软件测试的第二个阶段。此时软件测试作为一种独立、客观地查找软件缺陷的活动,与调试区分开来。但是该阶段的软件测试虽然作为一门独立的学科,仍处于作为软件开发的辅助方法的萌芽阶段;软件测试的第三阶段是从1979年开始到1982年结束,称为面向查错的测试。在这一时期,软件人员设计和开发程序的逻辑越来越严密,不仅要考虑程序正常状态下的运行情况,也要考虑程序在各种错误操作和数据下的承受能力,软件测试促进了程序质量的提高。但是这一阶段对于软件测试的理解并不太成熟,往往过分强调找到软件中的错误;软件测试的第四阶段,即面向评估的测试,从1983年开始到1987年结束,该阶段的测试是面向评估的测试。在这一时期,软件测试不仅得到了蓬勃发展,而且软件测试的目的变得客观成熟;1988年至今,是软件测试的第五个阶段,即面向预防的测试。这一阶段测试是为了度量和提高软件的质量,对软件进行工程设计、实施和维护的整个生命周期过程。软件测试技术的研究取得了很大的突破,不仅出现了很多测试模型,而且也出现了很多商业化的测试工具。

2软件测试的理论基础

2.1软件测试的定义

软件测试是在软件生命周期内运用技术手段保证软件质量的一门学科。其主要内容包括软件验证技术、软件确认技术和软件测试管理技术这三大部分。软件测试是根据软件开发各阶段的规格说明和程序的内部结构精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。

2.2软件测试的目的

(1)测试是为了证明程序有错,而不是证明程序无错。

(2)一个好的测试用例在于它能发现至今未发现的错误。

(3)一个成功的测试是发现了至今未发现的错误的测试。

2.3软件测试的主要方法

随着软件测试技术的日臻成熟,软件测试方法与技术已经发展得较为完善,现今软件测试的方法很多,以下主要介绍几种常用的软件测试方法。

静态测试不对代码进行运行,而是借助专业的软件测试工具评审软件文档或程序,度量静态复杂度,通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性,借以发现程序的不足之处,降低程序出现错误的概率。静态测试包括代码审查、静态结构分析、代码质量度量等。

动态测试是通过人工或使用工具运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。该方法有三部分组成:构造测试实例、执行程序、分析程序的输出结果。

黑盒测试是在软件的功能知道的前提下,通过测试来检测每个功能是否正常使用,是一种验证性方法。测试的过程中程序的内部是不可见的,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息的完整性。

白盒测试又称为结构测试,与黑盒测试不同,它是在知道产品的内部工作过程,检测产品内部动作是否按照规格说明书的规定正常运行、按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。

灰盒测试介于黑盒测试和白盒测试之间,主要用于测试各个组件之间的逻辑关系是否正确,重点在于测试程序的处理能力和健壮性,相对黑盒测试和白盒测试而言,投入的时间较少,维护量也较小。

3软件测试的评估

软件测试评估是在测试结束后对整个测试过程与产品进行评估的过程,主要包括对于测试工作的总结、缺陷数据的分析及测试过程的评估。

由图1可知,加入了测试评估的测试过程能形成一个完整的测试反馈系统,由此可见测试评估非常的重要。软件测试评估是对软件测试工作整体进展状况的监督和评价,是保证测试完整性和有效性的重要工作。软件测试评估贯穿于软件测试的整个过程,软件测试评估的方法主要包括覆盖评估和质量评估。

覆盖评估是对测试完全程度的评估,其建立在测试覆盖的基础之上,这通常与测试的定义相关,与完成计划的程度相关。在测试的过程中,一些关于发现测试缺陷本身状态的评估会展现出来,除此之外随着测试工作的推进,测试完成的量会越来越多,所有这些与缺陷相关的测试评估称为测试质量评估。质量评估是对测试软件的整体质量状况的评估,其建立在对测试的过程中发现的软件缺陷的分析和修复基础之上。它不断监控软件测试过程中总结出来的中间结果,然后通过对这些中间结果的分析又反过来对软件测试的过程进行指导。

4结语

虽然在近年来,中国的软件产业得到了飞速地发展,但国内很少开发出世界范围内通用的软件,且开发出的软件在性能和质量上也无法和国外大公司开发的产品相比较。软件测试作为软件开发过程中的一个重要环节,长期以来一直滞后于中国软件产业的发展。软件测试作为一种保障软件质量的一种技术,应该贯穿于软件生命周期的整个过程,通过严格的软件测试可以将软件中的错误减少到可以接受的程度,从而提高软件的质量。

参考文献

[1] 秦航,杨强.软件质量保证与测试[M].北京:清华大学出版社,2012(1).

[2] 黄武,洪玫,杨秋辉,余静.软件测试与维护基础教程[M].北京:机械工业出版社,2011(12).

[3] 陈卫卫.软件测试[M].西安:西安电子科技大学出版社,2011(12).

猜你喜欢
软件测试
基于OBE的软件测试课程教学改革探索
基于MBD模型自动生成测试用例的软件测试方法
计算机软件测试方法的研究
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
一种航空机载软件测试项目的进度改进模型
军用软件测试文档生成设计与实现
软件测试工程化模型及应用研究
智能电能表软件测试技术概述
《软件测试》课程教学策略研究