APP下载

软件测试

2011-12-20徐兴浩

城市建设理论研究 2011年23期
关键词:软件测试可靠性

徐兴浩

摘要科学技术不断的飞速发展,软件的功能越来越强大,软件的复杂性也越来越高,从而大大增加了软件测试与可靠性评估的难度。作为软件开发的重要环节,软件测试越来越受到人们的重视,软件测试的重要性更加突出。为了保证一个软件系统的质量,有必要针对软件的测试与可靠性评估方法进行专门地研究。本文就是针对这一领域所做的一些研究。

关键词:软件测试;满足需求;可靠性

Software Test

Dalian maritime University in Liaoning province Xu Xinghao

Abstract: With the development of science and technology, the function of software is becoming more and more powerful. The complexity of software is increasing so fast that it is very difficult to test and assess the reliability of software. As an important part of software development, software testing has been paid more and more attention. The importance of software testing is more prominent. In order to ensure the quality of a software system, it is necessary to specialize in software testing and method for assessment of reliability. This paper is something about studying in this area.

Key words: software testing; meet demand; reliability

1 引言

随着科学技术的飞速发展,硬件发杂性、多样性和应用的复杂性增加,软件系统的复杂性和规模也在不断增大,软件安全性和质量的保证成为各大公司及个人日益关注的焦点,软件中存在的各种问题也逐渐成为制约我国软件产业发展的主要因素。后期的软件测试工作可以说是为软件产品的完工把好最后一道关,是检验软件产品最为重要的一步。所以软件测试在软件开发中的地位日趋升高、软件测试员的地位也在日益提高。

我们先简单的分析一下软件缺陷产生的原因。软件在投入运行之前会先进行软件测试,但运行前的软件测试是根据软件的需求分析、设计规格和编码实现为审定目标。但程序中的故障并一定是由编码引起的,大多数的软件缺陷可能是在系统详细设计阶段、概要设计阶段甚至是在需求分析阶段就存在问题所导致。在软件开发过程中,需求的更改、软件说明书的描述开发小组人员间的交流都可能导致软件程序出现缺陷。而软件测试是最大限度避免软件缺陷产生的最好途径[1]。本文系统的介绍了有关软件测试的各阶段及其用途。

2 软件测试的定义

软件测试(Software testing)是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求[2]。

从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

3 软件测试的生命周期

软件测试就是软件在投入运行前,对软件需求分析、设计规格和编码是的最终审查,他是保证软件质量的关键步骤。软件测试是为了发现错误而执行程序并根据软件开发各阶段的规格说明和程序的内部结构而精心设计的测试。下图为一个测试生命周期模型。

软件测试不仅仅是对程序的测试,而是贯穿于软件定义和开发的整个过程,因此,软件开发过程中产生的需求分析、概要设计、详细设计以及编码等各个阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都是软件测试的对象[3]。软件测试在软件生命周期,也就是软件从开发设计、运行、直到结束使用的全过程中,主要横跨单元测试阶段和综合测试阶段,即要在每个模块编写出以后进行测试、在完成单元测试后进行的测试,如集成测试、系统测试、验收测试等。

4 软件测试的目的

软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。 第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些應用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、质量也代表着它符合客户的需要(Quality also means “meet customer needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了[4]。

测试人员在软件开发过程中的任务:

1、寻找Bug;

2、避免软件开发过程中的缺陷;

3、衡量软件的品质;

4、关注用户的需求。

总的目标是:确保软件的质量

5软件测试方法及流程

软件测试方法主要有黑箱测试方法与白箱测试两类。黑箱测试又称功能测试、数据驱动测试或基于规格说明的测试,是在完全不考虑程序内部结构和内部特性的情况下,检查输入与输出之间关系是否符合要求。白箱测试又称结构测试、逻辑驱动测试或基于程序的测试,是在已知程序内部结构的情况下设计测试用例的测试方法。显然,白箱测试适合在单元测试中运用,而在独立测试阶段多采用黑箱测试方法。

测试用例(Test case)实际上是对软件运行过程中所有可能存在的目标、运动、行动、环境和结果的描述,是对客观世界的一种抽象。设计测试用例即设计针对特定功能或组合功能的测试方案,并编写成文档。测试用例应该体现软件工程的思想和原则。测试用例的选择既要有一般情况,也应有极限情况以及最大和最小的边界值情况[5]。因为测试的目的是暴露应用软件中隐藏的缺陷,所以在设计选取测试用例和数据时要考虑那些易于发现缺陷的测试用例和数据,结合复杂的运行环境,在所有可能的输入条件和输出条件中确定测试数据,来检查应用软件是否都能产生正确的输出。

软件测试所得到的数据经过处理以后,可以用来作为评估软件系统是否满足用户需求的依据。软件测试阶段的信息流如下图所示:

6 结语

软件系统的规模也在持续扩大,需求日益复杂,对软件质量的要求也越来越高。但现实中软件系统的质量和稳定性却不尽如人意,采用有效的软件测试是保证软件质量、提高软件可靠性的重要手段。

软件测试是产品最终交付到用户之前的最后一道防线,有着举足轻重的地位。然而,做好软件测试却是不容易的,一方面你需要同时掌握软件开发的技能和软件测试方面的技能;另一方面,产品必须给予测试充分的独立性和资源保证。

软件测试是发现软件中错误而检查文档、运行程序的一个过程。软件测试的概念虽然是和软件编程同时提出的,但发展速度却远远没有编程技术快。近十几年来,随着软件应用的迅速推广,对软件测试也变得迫切需要,各种针对性的测试方法和技术不断出现。

软件测试前景被极为看好,我们相信,在不久的将来,软件测试会成为软件行业的主题被越来越多的人更广泛的重视。

参考文献

[1].杨为民等,可靠性维修性保障性丛书,国防工业出版社,1995.

[2].张海藩,软件工程,人民邮电出版社,2008.

[3].Daniel J.Mosley, Bruce A.Posey,软件测试自动化,机械工业出版社,2007.

[4].梅启智、廖炯生、孙惠中,系统可靠性工程基础,科学出版社,1992.

[5].Elfriede Dustin,有效软件测试 ,清华大学出版社,2004.

注:文章内所有公式及图表请以PDF形式查看。

猜你喜欢

软件测试可靠性
软件测试方向人才培养“1+X”融合研究
大数据背景下软件测试技术的发展
高密度存储服务器可靠性设计与实现①
高密度存储服务器可靠性设计与实现
基于大小交路套跑对地铁不均衡客流的可靠性分析
可靠性增长试验与相关概念的关系及作用研究
民用飞机供应商可靠性管理研究
J.D. Power发布2016年中国车辆可靠性研究SM(VDS)报告
关于 Web 应用系统的软件测试的研究
军用软件测试项目管理系统设计与实现