所有连载内容,都经过了原作者授权,希望把知识以电子版的形式分享给大家。
由于我们很难把书籍上面的内容一比一完全还原,甚至可能会发生编辑错误的地方,如果您发现了问题,还请联系我们。
另外,如果您对连载书籍感兴趣的话,可以同时购买正版图书,一是支持作者,二是可以随时做笔记并且同步学习。
本书可以在京东、淘宝、天猫、当当、书籍出版社、线下书店等任何可以购买书籍的渠道购买。如果您想要图书作者亲笔签名版图书,也可以联系我们,原价邮寄,不收取任何额外费用。
软件测试是软件开发中不可缺少的一个重要步骤,随着软件变得日益复杂,软件测试也变得越来越重要。软件的基础知识、软件测试的概念(方法、目标和任务)、软件测试的定义是软件测试的基础。
本章重点讨论以下内容:
l 软件的相关知识概述;
l 软件测试的相关知识概述;
l 测试的目的和原则;
l 软件测试的流程;
l 软件测试的组织结构和人员的要求;
l 软件测试的前景分析。
做任何事,应从概念入手,才能少走弯路,才能对此概念相关的问题有一个正确的理解分析,最终解决问题。软件测试的对象就是软件,为了进行软件测试,我们应了解什么是软件?它的内容以及生命周期。
1.软件的概念
软件是计算机系统中与硬件相互依存的一部分,它是包括程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。
2. 软件的特点
软件具有8个特点:
(1) 软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。
(2) 软件的生产与硬件不同,它没有明显的制造过程。对软件的质量控制,必须着重在软件开发方面下功夫。
(3) 在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。然而它存在退化问题,必须要对其进行多次的修改与维护。
(4) 软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5) 软件的开发至今尚未完全摆脱人工艺的开发方式。
(6) 软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7) 软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8) 相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,它直接影响到项目的成败。
3.软件的分类方法
软件的分类方法有如下 4种:
(1)按软件的功能分类
按软件的功能分为:系统软件、支撑软件、应用软件。
l 系统软件:与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。例如,操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。
l 支撑软件:是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。
l 应用软件:是在特定领域内开发,为特定目的服务的一类软件。其中包括为特定目的进行的数据采集、加工、存储和分析服务的资源管理软件。
(2)按软件服务对象的范围分类
按软件的服务对象的范围分为:项目软件、产品软件。
l 项目软件:也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。例如军用防空指挥系统、卫星控制系统。
l 产品软件:是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。例如,文字处理软件、财务处理软件、人事管理软件等。
(3) 按开发软件所需要的人力、时间以及完成的源程序行数,可确定6种不同的规模软件,如微型、小型、中型、大型、甚大型、极大型。
不管是规模大、时间长、很多人参加的软件项目,还是规模小、时间短、参加人员少的软件项目,其开发工作必须要有软件工程的知识作为指导,遵循一定的开发规范,其基本原则是一样的,知识对软件工程技术依赖的程度不同而已。
(4)按软件工作方式分类
按软件的工作方式分为:实时处理软件、分时软件、交互式软件、批处理软件。
l 实时处理软件:指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制的过程的软件。主要包括数据采集,分析,输出三部分。
l 分时软件:允许多个联机用户同时使用计算机。
l 交互式软件:能实现人机通信的软件。
l 批处理软件:把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。
1.软件工程研究的内容
软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。在软件开发技术中,主要研究软件工程方法、软件工程过程、软件开发工具和环境。其中:
(1) 软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法的设计、编码、测试以及维护等。软件工程方法常采用某种特殊的语言或图形的表达方法,及一套质量保证标准。
(2) 软件工程过程是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料,为保证质量和协调变更所需要的管理。
(3)软件开发工具和环境为软件工程方法提供了自动的或半自动的软件支撑环境。目前,已经开发出了许多软件工具,已经能够支持上述的软件工程方法。而且已经有人把诸多软件工具集成起来,使得一种工具产生的信息可以为其他的工具所使用,这样建立起一种称之为计算机辅助软件工程(CASE)的软件开发支撑系统。CASE将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。
2.软件工程项目的目标
软件工程项目是一门工程性学科,目的是成功地建造一个大型软件系统,所谓成功是要达到以下几个目标:★付出较低的开发成本;
★达到要求的软件功能;
★取得较好的软件性能;
★开发的软件易于移植;
★需要较低的维护费用;
★按时完成开发任务,及时交付使用;
★开发的软件可靠性高。
在实际开发的具体项目中,要想让以上几个目标都达到理想的程度往往是非常困难的,而且上述目标很可能是互相冲突的,若只降低开发成本,很可能同时也降低了软件的可靠性。另一方面,如果过于追求提高软件的性能,可能造成开发出的软件对硬件有较大的依赖,从而直接影响到软件的可移植性。
软件工程项目之间的相互关系如图1-1所示。
其中:
★易于维护和高可靠性之间,低开发成本与按时交付之间为互补关系;
★低开发成本和易于维护、低开发成本和高可靠性、低开发成本和高性能、高可靠性和高性能、高性能和按时交付之间为互斥关系。
3.软件工程面临的问题
软件工程面临的问题有:软件费用、软件可靠性、软件可维护性、软件生产率和软件重用等。
(1)软件费用
软件是知识高度密集的技术的综合产物,软件人力资源不能适应软件迅速增长的社会要求;因此,软件费用上升是必然趋势。
(2)软件可靠性
软件可靠性是指软件系统能否在既定的环境条件下运行并实现所期望的结果。在软件开发中,通常要花费40%的代价进行测试和排错,为了提高软件可靠性,就要付出足够的代价。
(3)软件维护
软件维护费用占整个软件系统费用的2/3,而软件开发费用只占整个软件系统费用的1/3。这是因为已经运行的软件还需排除隐含的错误,新增加的功能要加入进去,维护工作又是非常困难的,效率较低。因此,如何提高软件的可维护性,减少软件维护的工作量,也是软件工程面临的主要问题之一。
(4)软件生产率
计算机的广泛应用使得软件的需求量大幅度上升,而软件的生产又处于手工开发的状态,软件生产率低下,使得软件开发人员严重不足,所以,如何提高软件生产率是软件工程又一重要问题。
(5)软件重用
提高软件的重用性,对于提高软件生产率、降低软件成本有重要意义。当前的软件开发存在着大量重复的劳动,耗费了不少的人力资源。软件重用有各种级别,软件规格说明、软件模块、软件代码、软件文档等都可以是软件重用的单位。软件重用是软件工程中一个重要研究课题。3
下期预告
下期更新
书中1.2章节的内容
敬请期待!