1、2023-4-301第九章第九章 系统实施与运行维护系统实施与运行维护 n系统实施的任务及管理系统实施的任务及管理n编码与开发环境编码与开发环境n开放源码开放源码n软件系统测试软件系统测试n系统部署系统部署n系统转换系统转换n系统运行与维护系统运行与维护2023-4-302系统实施的任务及管理系统实施的任务及管理n系统实施的任务系统实施的任务n软件能力成熟度模型与开发管理软件能力成熟度模型与开发管理2023-4-303系统实施的任务系统实施的任务n实施是建立、测试和安装最后系的阶段。实施是建立、测试和安装最后系的阶段。该阶段的目标不仅要有一个可靠的信息系该阶段的目标不仅要有一个可靠的信息系统,
2、而且要确保培训所有的用户并使业务统,而且要确保培训所有的用户并使业务受益。具体包括购置计算机硬件、系统软受益。具体包括购置计算机硬件、系统软件,并安装调试;程序编码、程序及系统件,并安装调试;程序编码、程序及系统的调试;用户培训、编写各种文档等。的调试;用户培训、编写各种文档等。2023-4-304系统实施的任务系统实施的任务n程序编码组织与实施程序编码组织与实施 信息系统通常由多个程序员分工协作完成的,信息系统通常由多个程序员分工协作完成的,程序员需要按标准的规定进行编码,从而保证接程序员需要按标准的规定进行编码,从而保证接口信息通信和数据传递的一致性。因此程序编码口信息通信和数据传递的一致
3、性。因此程序编码的管理问题十分重要,这样才能得到高质量的程的管理问题十分重要,这样才能得到高质量的程序。在程序编码组织与实施中,首先应选择适用序。在程序编码组织与实施中,首先应选择适用的程序设计方法、编程语言和开发平台;然后,的程序设计方法、编程语言和开发平台;然后,建立程序开发过程中团队的协同机制,以保证开建立程序开发过程中团队的协同机制,以保证开发的顺利进行。发的顺利进行。2023-4-305系统实施的任务系统实施的任务n质量保证与控制质量保证与控制 质量保证计划明确项目的质量目标,尽量将质量保证计划明确项目的质量目标,尽量将目标具体或定量化,并建立项目质量控制的措施。目标具体或定量化,并
4、建立项目质量控制的措施。这些措施包括:确定要进行的测试、验证和确认这些措施包括:确定要进行的测试、验证和确认活动的类型,要执行的详细测试、验证和确认活活动的类型,要执行的详细测试、验证和确认活动计划,包括时间进度、资源和批准权力等;明动计划,包括时间进度、资源和批准权力等;明确质量活动的具体职责,以及项目规定使用的标确质量活动的具体职责,以及项目规定使用的标准、惯例和约定等。此外,还要规定对分承包方准、惯例和约定等。此外,还要规定对分承包方的控制方法、配置管理和更改控制;还要考虑在的控制方法、配置管理和更改控制;还要考虑在系统生存周期内软件产品的备份与恢复。系统生存周期内软件产品的备份与恢复。
5、2023-4-306系统实施的任务系统实施的任务n原始数据的建立原始数据的建立 数据是信息系统操作的实际对象。在系统分数据是信息系统操作的实际对象。在系统分析设计阶段对支持系统运行的数据进行了整体规析设计阶段对支持系统运行的数据进行了整体规划,并得到相应的数据模式。在系统实施阶段就划,并得到相应的数据模式。在系统实施阶段就要根据所选择的数据库管理系统的技术条件来实要根据所选择的数据库管理系统的技术条件来实现相关的设计,数据库的实施质量在很大程度上现相关的设计,数据库的实施质量在很大程度上影响整个信息系统的质量。因此,在实施中数据影响整个信息系统的质量。因此,在实施中数据库开发人员应熟练掌握相应
6、数据库管理系统的功库开发人员应熟练掌握相应数据库管理系统的功能、性能以及开发工具的使用,充分发挥相应系能、性能以及开发工具的使用,充分发挥相应系统的潜能,使系统达到良好的设计效果。统的潜能,使系统达到良好的设计效果。2023-4-307系统实施的任务系统实施的任务n组织系统测试组织系统测试 测试是为了发现错误而执行程序的过程,测测试是为了发现错误而执行程序的过程,测试活动的另一主要目的是要分析错误产生的原因试活动的另一主要目的是要分析错误产生的原因和错误的分布特征,以便帮助项目管理者发现当和错误的分布特征,以便帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,前所采用的软件过程的缺
7、陷,以便改进。同时,这种分析也能帮助系统开发人员设计出有针对性这种分析也能帮助系统开发人员设计出有针对性地检测方法,改善测试的有效性。地检测方法,改善测试的有效性。系统测试的目的决定了如何去组织测试。系统测试的目的决定了如何去组织测试。2023-4-308系统实施的任务系统实施的任务n项目管理与实施进度控制项目管理与实施进度控制 制定系统实施进度有两种途径:一是开发小制定系统实施进度有两种途径:一是开发小组根据系统开发的最后期限从后往前安排时间;组根据系统开发的最后期限从后往前安排时间;二是开发小组根据项目和资源情况制定初步计划二是开发小组根据项目和资源情况制定初步计划和交付日期。一般情况下,
8、系统开发人员希望按和交付日期。一般情况下,系统开发人员希望按照第二种方式安排工作进度,而用户则会要求采照第二种方式安排工作进度,而用户则会要求采用第一种方式。用第一种方式。2023-4-309系统实施的任务系统实施的任务n项目管理与实施进度控制项目管理与实施进度控制u人力资源的分配人力资源的分配u任务分解与并行化任务分解与并行化u工作量分布工作量分布u进度的安排方法进度的安排方法2023-4-3010软件能力成熟度模型与开发管理软件能力成熟度模型与开发管理n软件能力成熟度的含义与作用软件能力成熟度的含义与作用 软件能力成熟度模型(软件能力成熟度模型(Capability Maturity Ca
9、pability Maturity Model for SoftwareModel for Software,CMMCMM)是对开发者软件过)是对开发者软件过程能力的描述,其核心是把软件开发视为一个过程能力的描述,其核心是把软件开发视为一个过程,对软件开发过程进行监控,使其更加科学和程,对软件开发过程进行监控,使其更加科学和标准。它的侧重点在于软件过程开发的管理及软标准。它的侧重点在于软件过程开发的管理及软件工程能力的改进与评估。件工程能力的改进与评估。2023-4-3011软件能力成熟度模型与开发管理软件能力成熟度模型与开发管理nCMMCMM的结构:为软件企业的过程能力提供了的结构:为软件企
10、业的过程能力提供了一个阶梯式的进化框架,框架共有五级。一个阶梯式的进化框架,框架共有五级。u初始级(初始级(InitialInitial)u可重复级(可重复级(RepeatableRepeatable)u定义级(定义级(DefinedDefined)u管理级(管理级(ManagedManaged)u优化级(优化级(OptimizingOptimizing)2023-4-3012软件能力成熟度模型与开发管理软件能力成熟度模型与开发管理n关键过程域关键过程域 在在CMMCMM中,第中,第1 1级除外,每个成熟度等级规定级除外,每个成熟度等级规定了不同的关键过程域(了不同的关键过程域(KPAKPA)
11、,关键过程域是一),关键过程域是一系列相互关联的活动,这些活动反映了软件组织系列相互关联的活动,这些活动反映了软件组织改进过程时应改进的方面,即达到某个成熟度等改进过程时应改进的方面,即达到某个成熟度等级时所必须满足的条件。级时所必须满足的条件。CMMCMM共有共有1818个关键过程个关键过程域,分布在域,分布在2 2至至5 5级中。级中。2023-4-3013编码与开发环境编码与开发环境n程序设计语言程序设计语言n集成开发环境集成开发环境n极限编程极限编程n正向工程和逆向工程正向工程和逆向工程2023-4-3014程序设计语言程序设计语言n程序设计语言的发展程序设计语言的发展u机器语言机器语
12、言u汇编语言汇编语言u高级语言(第三代语言)高级语言(第三代语言)u非过程化的第四代语言非过程化的第四代语言2023-4-3015程序设计语言程序设计语言n几种主流的程序设计语言几种主流的程序设计语言uC/C+C/C+uJavaJavauC#C#uPascal/DelphiPascal/Delphi2023-4-3016集成开发环境集成开发环境n开发环境的作用开发环境的作用 集成开发环境(集成开发环境(Integrated Developing Integrated Developing EnvironmentEnvironment,IDEIDE)是一个综合性的工具软件,)是一个综合性的工具软
13、件,它把程序设计过程中所需的各项功能集合在一起,它把程序设计过程中所需的各项功能集合在一起,为程序设计人员提供完整的开发支持,其应用范为程序设计人员提供完整的开发支持,其应用范围在围在“开发、构建和调试开发、构建和调试”周期中,为开发人员周期中,为开发人员提供代码编辑、组装、编译、连接、调试和版本提供代码编辑、组装、编译、连接、调试和版本管理等工作。管理等工作。2023-4-3017集成开发环境集成开发环境nEclipseEclipse开发环境开发环境 uEclipseEclipseuCVSCVSuAntAntuJUnitJUnit2023-4-3018极限编程极限编程n敏捷软件开发敏捷软件开
14、发 传统的重量级方法追求严谨的文档,希望以详传统的重量级方法追求严谨的文档,希望以详细的计划和标准化来规范软件生产过程,强调以细的计划和标准化来规范软件生产过程,强调以开发过程为中心。敏捷开发过程注重开发团队和开发过程为中心。敏捷开发过程注重开发团队和成员之间的关系,而不以开发的进程和使用的工成员之间的关系,而不以开发的进程和使用的工具为重点,注重软件产品而不是文档编制;注重具为重点,注重软件产品而不是文档编制;注重开发中与客户的协同,而不以签订合同为核心;开发中与客户的协同,而不以签订合同为核心;注重在开发过程中随时调整计划,而不是完全遵注重在开发过程中随时调整计划,而不是完全遵循某一开发计
15、划。循某一开发计划。2023-4-3019极限编程极限编程n极限编程极限编程 极限编程是一种近似螺旋式的开发方法,它极限编程是一种近似螺旋式的开发方法,它将复杂的开发过程分解为一个个相对简单的更小将复杂的开发过程分解为一个个相对简单的更小周期。通过交流、反馈以及其它方法,开发人员周期。通过交流、反馈以及其它方法,开发人员和客户可以非常清楚开发进度、变化、待解决的和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调问题和潜在的困难等,并根据实际情况及时地调整开发过程。整开发过程。极限编程的主要目标是降低变化的成本。极限编程的主要目标是降低变化的成本。2023-4-
16、3020极限编程极限编程nXPXP的核心实践的核心实践 规划策略规划策略持续集成持续集成结对编程结对编程现场客户现场客户测试测试小型发布小型发布重构重构每周每周4040小时工作制小时工作制简单设计简单设计编码规范编码规范代码集体所有代码集体所有系统隐喻系统隐喻2023-4-3021正向工程和逆向工程正向工程和逆向工程n正向工程和逆向工程的概念正向工程和逆向工程的概念 正向工程是指从模型得到代码的过程。利用一定正向工程是指从模型得到代码的过程。利用一定的开发工具,设计者可以通过正向工程从模型生成代的开发工具,设计者可以通过正向工程从模型生成代码框架,从而减少了开发者用于编写类、属性、方法码框架,
17、从而减少了开发者用于编写类、属性、方法代码等琐碎工作的时间。代码等琐碎工作的时间。逆向工程与正向工程的方向刚好相反,它将代码转逆向工程与正向工程的方向刚好相反,它将代码转换成设计模型。在只有源代码,而没有设计文档的情换成设计模型。在只有源代码,而没有设计文档的情况下,通过逆向工程得到设计模型。从而了解以前某况下,通过逆向工程得到设计模型。从而了解以前某个软件的设计。逆向工程也可以用于对代码和模型进个软件的设计。逆向工程也可以用于对代码和模型进行同步。行同步。2023-4-3022正向工程和逆向工程正向工程和逆向工程n正向工程和逆向工程结合在一起,就形成正向工程和逆向工程结合在一起,就形成了双向
18、工程。双向工程实现了在系统设计了双向工程。双向工程实现了在系统设计描述和代码框架之间的双向交换。描述和代码框架之间的双向交换。n很多开发工具支持主流建模方法与开发语很多开发工具支持主流建模方法与开发语言间的双向工程,言间的双向工程,2023-4-3023正向工程和逆向工程正向工程和逆向工程nRational RoseRational Rose中的中的JavaJava代码生成设置代码生成设置nRational RoseRational Rose中的中的JavaJava代码生成过程代码生成过程2023-4-3024开放源码开放源码n什么是开放源码软件什么是开放源码软件n开放源码软件的特点开放源码软
19、件的特点nLAMP stackLAMP stack开源解决方案开源解决方案2023-4-3025什么是开放源码软件什么是开放源码软件n开放源码软件的概念开放源码软件的概念 开放源码软件(开放源码软件(Open Source SoftwareOpen Source Software,OSSOSS)的概念由开放源码促进会(的概念由开放源码促进会(Open Source Open Source InitiativeInitiative,OSIOSI)所定义,是指其全部源码程)所定义,是指其全部源码程序对任何人都是公开的,并允许任何人免费(或序对任何人都是公开的,并允许任何人免费(或少许收费)获取、使
20、用、复制、修改及发布的软少许收费)获取、使用、复制、修改及发布的软件件。开放源码软件从自由软件(开放源码软件从自由软件(Free SoftwareFree Software)发展而来。发展而来。2023-4-3026什么是开放源码软件什么是开放源码软件n开放源码软件的原则开放源码软件的原则 u允许自由再分发允许自由再分发u必须包括源代码必须包括源代码u允许修改原作品并产生衍生作品允许修改原作品并产生衍生作品u必须保持作者源代码的完整性必须保持作者源代码的完整性u不得歧视任何个人和团体不得歧视任何个人和团体2023-4-3027什么是开放源码软件什么是开放源码软件n开放源码软件的原则开放源码软件
21、的原则(续续)u不得对特定领域有差别限制不得对特定领域有差别限制u条款对衍生产品自动适用条款对衍生产品自动适用u授权条款不得附属于其它产品之下授权条款不得附属于其它产品之下u授权条款不得对随同分发的其它软件做出限制授权条款不得对随同分发的其它软件做出限制u分发渠道必须保持技术中立性分发渠道必须保持技术中立性2023-4-3028开放源码软件的特点开放源码软件的特点n开放源码软件的优点开放源码软件的优点 u有助于改善代码质量有助于改善代码质量u价格优势价格优势u有助于快速修改错误有助于快速修改错误u多个开发商多个开发商2023-4-3029开放源码软件的特点开放源码软件的特点n开放源码软件的缺点
22、开放源码软件的缺点 由于任何人都可以自由参与开源软件的开发,也由于任何人都可以自由参与开源软件的开发,也可以将自己编制的软件供别人共享,因而软件的版本可以将自己编制的软件供别人共享,因而软件的版本管理、质量保证、错误跟踪和修正等都存在问题。同管理、质量保证、错误跟踪和修正等都存在问题。同时,在不了解知识产权的情况下,源代码的开放可能时,在不了解知识产权的情况下,源代码的开放可能会引起侵权行为。会引起侵权行为。开源软件面临着资金保证的问题,没有资金,软开源软件面临着资金保证的问题,没有资金,软件的开发也只能处于停滞状态。开放源码软件的开发件的开发也只能处于停滞状态。开放源码软件的开发主要应用于科
23、学研究,软件的使用者大多是科研人员。主要应用于科学研究,软件的使用者大多是科研人员。因此,软件的使用可能不具备普及性。另外,开放源因此,软件的使用可能不具备普及性。另外,开放源码的测试、整理与推广也是值得思考的问题。码的测试、整理与推广也是值得思考的问题。2023-4-3030LAMP stack开源解决方案开源解决方案n随着开放源码应用的发展,在软件开发中随着开放源码应用的发展,在软件开发中出现了出现了LAMP stackLAMP stack开源解决方案,作为一开源解决方案,作为一种应用开发程序和开发环境,它功能强大,种应用开发程序和开发环境,它功能强大,使用简单。使用简单。LAMPLAMP
24、是这个开发环境中四个组是这个开发环境中四个组件的缩写:件的缩写:L L指的是指的是LinuxLinux操作系统;操作系统;A A指的指的是是Apache webApache web服务器;服务器;M M指的是指的是MySQLMySQL开源开源数据库;数据库;P P则是则是PHPPHP、PerlPerl或或PythonPython脚本语脚本语言。这四种开源技术结合在一起便组成了言。这四种开源技术结合在一起便组成了一个应用服务平台。一个应用服务平台。2023-4-3031LAMP stack开源解决方案开源解决方案nLinuxLinux操作系统操作系统 作为一种操作系统,作为一种操作系统,Linu
25、xLinux是自由软件和开是自由软件和开放源码中最著名的例子。严格地说,放源码中最著名的例子。严格地说,LinuxLinux只是只是一个操作系统的内核,由一个操作系统的内核,由Linus TorvaldsLinus Torvalds在在19911991年开始编写。期间,年开始编写。期间,Richard StallmanRichard Stallman创建了创建了GNUGNU组织。基于组织。基于LinuxLinux的内核,许多个人、组织和的内核,许多个人、组织和企业发行了不同的企业发行了不同的LinuxLinux版本。其中比较著名的版本。其中比较著名的有有RedhatRedhat、Mandriv
26、aMandriva、SUSESUSE、DebianDebian和和UbuntuUbuntu等。等。2023-4-3032LAMP stack开源解决方案开源解决方案nApacheApache服务器服务器 Apache Apache是著名的开源组织是著名的开源组织ApacheApache软件基金会软件基金会(Apache Software FoundationApache Software Foundation,ASFASF)的产品。)的产品。从从19951995年诞生至今,年诞生至今,ApacheApache以其超强的稳定性、以其超强的稳定性、可配置性、丰富的扩展性和坚实的安全性,成为可配置性
27、、丰富的扩展性和坚实的安全性,成为互联网中流行的互联网中流行的WebWeb服务器,可以运行在几乎所服务器,可以运行在几乎所有的计算机平台上。有的计算机平台上。2023-4-3033LAMP stack开源解决方案开源解决方案nMySQLMySQL数据库系统数据库系统 MySQL MySQL是由是由MySQL ABMySQL AB公司开发,以强调检索公司开发,以强调检索速度而著称。速度而著称。MySQLMySQL提供了非常丰富的应用程序提供了非常丰富的应用程序接口,能够很好的支持接口,能够很好的支持Java/JDBCJava/JDBC、PHPPHP、Perl Perl DBIDBI及及Pytho
28、nPython等。除了命令行的数据库管理工具等。除了命令行的数据库管理工具之外,通过开放源码的之外,通过开放源码的phpMyAdmin phpMyAdmin 和和 phpPgAdmin phpPgAdmin 还可以为还可以为MySQLMySQL提供基于提供基于WebWeb的数据的数据管理界面,方便了开发人员的工作。管理界面,方便了开发人员的工作。2023-4-3034LAMP stack开源解决方案开源解决方案n开放源码语言开放源码语言 LAMP stack LAMP stack中使用的开源语言中使用的开源语言PerlPerl、PythonPython和和PHPPHP都是都是“解释运行的解释运
29、行的”语言。由于解释运行语言。由于解释运行而不是编译,这些语言能够很快部署并很容易使而不是编译,这些语言能够很快部署并很容易使用,也加快了开发时间。这些语言都提供了丰富用,也加快了开发时间。这些语言都提供了丰富的环境,能够执行复杂任务,并为开发人员提供的环境,能够执行复杂任务,并为开发人员提供了扩展功能的接口。了扩展功能的接口。2023-4-3035软件系统测试软件系统测试n测试的目的与任务测试的目的与任务n测试模型与过程测试模型与过程n测试的方法测试的方法n软件测试活动软件测试活动2023-4-3036软件系统测试软件系统测试n软件测试是对软件设计和编码总的复审,软件测试是对软件设计和编码总
30、的复审,是发现软件中错误和缺陷的手段,是软件是发现软件中错误和缺陷的手段,是软件质量保证的重要环节。在软件开发中,软质量保证的重要环节。在软件开发中,软件测试工作通常要占总工作量的件测试工作通常要占总工作量的40%40%50%50%以上。软件测试根据开发各阶段的规格说以上。软件测试根据开发各阶段的规格说明和程序的内部结构设计测试用例(即输明和程序的内部结构设计测试用例(即输入数据及其预期的输出结果),并利用这入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误。些测试用例去运行程序,以发现程序错误。2023-4-3037测试的目的与任务测试的目的与任务n软件测试的目的是用最
31、小的代价找出软件软件测试的目的是用最小的代价找出软件中潜在的错误和缺陷。测试的目的并不是中潜在的错误和缺陷。测试的目的并不是证明软件中没有错误,而是找出软件中的证明软件中没有错误,而是找出软件中的错误。没有发现错误的测试不是成功的测错误。没有发现错误的测试不是成功的测试。试。n测试具有不彻底性,人们必须研究如何设测试具有不彻底性,人们必须研究如何设汁测试用例,以期用较少的测试用例,覆汁测试用例,以期用较少的测试用例,覆盖尽可能多的需测试的可能。盖尽可能多的需测试的可能。2023-4-3038测试的目的与任务测试的目的与任务n在测试中要特别注意以下几点在测试中要特别注意以下几点u尽早地和不断地进
32、行测试尽早地和不断地进行测试u制定严格的测试计划制定严格的测试计划u完全测试程序是不可能的,但是要尽量全面地完全测试程序是不可能的,但是要尽量全面地测试测试u认真设计测试用例认真设计测试用例2023-4-3039测试的目的与任务测试的目的与任务n在测试中要特别注意以下几点在测试中要特别注意以下几点(续续)u避免检查自己的程序避免检查自己的程序u发现的错误越多,说明潜在的错误越多发现的错误越多,说明潜在的错误越多u正确对待测试的结果正确对待测试的结果u妥善保存相关文档妥善保存相关文档2023-4-3040测试模型与过程测试模型与过程nV V模型模型 V V模型形象地描述了各阶段的活动呈模型形象地
33、描述了各阶段的活动呈“V”V”字字型排列,说明了这些测试级别和开发过程各个阶型排列,说明了这些测试级别和开发过程各个阶段的对应关系,同时也有确认(段的对应关系,同时也有确认(Validation Validation)、)、验证(验证(VerificationVerification)的意思。)的意思。V V模型左边是开发过程各阶段,右边是测试过模型左边是开发过程各阶段,右边是测试过程的各个阶段。开发阶段从定义业务需求开始,程的各个阶段。开发阶段从定义业务需求开始,然后要把这些需求不断地转换到概要设计和详细然后要把这些需求不断地转换到概要设计和详细设计中去,最后开发成为程序代码。在测试阶段,设
34、计中去,最后开发成为程序代码。在测试阶段,先从单元测试开始,然后是集成测试、系统测试先从单元测试开始,然后是集成测试、系统测试和验收测试。和验收测试。2023-4-3041测试模型与过程测试模型与过程nV V模型模型2023-4-3042测试模型与过程测试模型与过程n单元测试:检测最小的软件设计单元模块是否符合详细设单元测试:检测最小的软件设计单元模块是否符合详细设计的要求,是否存在编码错误等,确保产生符合要求的、计的要求,是否存在编码错误等,确保产生符合要求的、可靠的程序单元。可靠的程序单元。n集成测试:检测各个模块是否能够完好地结合到一起,是集成测试:检测各个模块是否能够完好地结合到一起,
35、是否在接口等方面存在错误等。确保各个模块以正确、稳定否在接口等方面存在错误等。确保各个模块以正确、稳定和一致的方式交互。和一致的方式交互。n系统测试:检测已集成在一起的产品是否符合系统规格说系统测试:检测已集成在一起的产品是否符合系统规格说明书的要求。系统测试验证系统的功能和结构的稳定性,明书的要求。系统测试验证系统的功能和结构的稳定性,以及性能和可靠性等非功能性需求。以及性能和可靠性等非功能性需求。n验收测试:检测产品是否符合最终用户的业务需求,并在验收测试:检测产品是否符合最终用户的业务需求,并在正式交付用户使用之前确保系统工作正常而且可用正式交付用户使用之前确保系统工作正常而且可用202
36、3-4-3043测试模型与过程测试模型与过程nW W模型模型 W W模型由两个模型由两个V V模型组成,其中一个模型组成,其中一个V V表示开发表示开发过程,另一个过程,另一个V V表示测试过程。表示测试过程。在在W W模型中,测试伴随着整个开发周期,测试模型中,测试伴随着整个开发周期,测试的对象也不仅仅是程序。需求、功能和设计同样的对象也不仅仅是程序。需求、功能和设计同样要测试。由于测试与开发是同步进行的,要测试。由于测试与开发是同步进行的,W W模型模型更有利于尽早发现问题。更有利于尽早发现问题。2023-4-3044测试模型与过程测试模型与过程nW W模型模型2023-4-3045测试模
37、型与过程测试模型与过程nX X模型模型 X X模型针对单独的程序片段进行相互分离的编模型针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,集成可执行的码和测试,此后通过频繁的交接,集成可执行的程序。程序。X X模型还可进行探索性测试,即不进行事先计模型还可进行探索性测试,即不进行事先计划的特殊类型的测试,这种测试往往能在测试计划的特殊类型的测试,这种测试往往能在测试计划之外发现更多的软件错误。划之外发现更多的软件错误。2023-4-3046测试模型与过程测试模型与过程nX X模型模型2023-4-3047测试模型与过程测试模型与过程nAlphaAlpha、BetaBeta和和Ga
38、mmaGamma测试测试 在正式发布前,大型通用软件通常要执行在正式发布前,大型通用软件通常要执行AlphaAlpha和和BetaBeta测试,目的是从实际终端用户的使用角度,对测试,目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。户才能发现的错误。Alpha Alpha测试是由一个用户在开发环境下进行的测测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,它尤其注重产品的界面和特色。进行的受控测试,它尤其注
39、重产品的界面和特色。AlphaAlpha测试不能由程序员或测试员完成。测试不能由程序员或测试员完成。2023-4-3048测试模型与过程测试模型与过程nAlphaAlpha、BetaBeta和和GammaGamma测试测试(续续)Beta Beta测试是软件的多个用户在一个或多个用户的测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现实际使用环境下进行的测试。开发者通常不在测试现场,场,BetaBeta测试不能由程序员或测试员完成。因而,测试不能由程序员或测试员完成。因而,BetaBeta测试是在开发者无法控制的环境下进行的软件现测试是在开发者无法控制的环境下
40、进行的软件现场应用。在场应用。在BetaBeta测试中,由用户记下遇到的所有问题。测试中,由用户记下遇到的所有问题。BetaBeta测试着重于产品的支持性,包括文档、客户培训测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当和支持产品的生产能力。只有当AlphaAlpha测试达到一定测试达到一定的可靠程度后,才能开始的可靠程度后,才能开始BetaBeta测试。测试。Gamma Gamma测试是对测试是对“存在缺陷存在缺陷”产品的测试。产品的测试。2023-4-3049测试的方法测试的方法n黑盒测试黑盒测试 又称为功能测试或数据驱动测试。是在已知又称为功能测试或数据驱动测试。
41、是在已知系统应具有的功能,通过测试来检测每个功能是系统应具有的功能,通过测试来检测每个功能是否正常。测试时把程序看作一个黑盆子,不考虑否正常。测试时把程序看作一个黑盆子,不考虑程序内部结构和特性,对程序接口进行测试。黑程序内部结构和特性,对程序接口进行测试。黑盒测试方法主要有等价类划分方法、边界值分析盒测试方法主要有等价类划分方法、边界值分析方法、错误推测方法、因果图方法、判定表驱动方法、错误推测方法、因果图方法、判定表驱动分析方法、正交实验设计方法和功能图分析方法。分析方法、正交实验设计方法和功能图分析方法。2023-4-3050测试的方法测试的方法n白盒测试白盒测试 又称逻辑驱动测试或结构
42、测试。是把测试对又称逻辑驱动测试或结构测试。是把测试对象看作一个打开的盒子,需要考察软件产品的内象看作一个打开的盒子,需要考察软件产品的内部结构和处理过程。它通过测试来检测内部动作部结构和处理过程。它通过测试来检测内部动作是否符合规格说明,主要用于软件验证。白盒测是否符合规格说明,主要用于软件验证。白盒测试的方法分为静态方法和动态方法两类。试的方法分为静态方法和动态方法两类。白盒测试关注的是测试用例执行的程度覆盖白盒测试关注的是测试用例执行的程度覆盖程序逻辑结构的程度。程序逻辑结构的程度。2023-4-3051测试的方法测试的方法n测试用例测试用例 测试用例是为某个特殊目标而编制的一组测测试用
43、例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。程序路径或核实是否满足某个特定需求。由于每个测试用例反映不同的场景、条件或由于每个测试用例反映不同的场景、条件或经由产品的事件流,因而,随着测试用例数量的经由产品的事件流,因而,随着测试用例数量的增加,测试也就越深入和全面。增加,测试也就越深入和全面。一般每个测试需求至少编制两个测试用例:一般每个测试需求至少编制两个测试用例:正面测试用例和负面测试用例正面测试用例和负面测试用例2023-4-3052测试的方法测试的方法n测试脚本测试脚本 测试脚
44、本是实现软件测试自动化设计的重要部测试脚本是实现软件测试自动化设计的重要部分,使用不同的脚本技术可以减少脚本的大小、分,使用不同的脚本技术可以减少脚本的大小、数量及复杂度,每个脚本技术都有其不同的适用数量及复杂度,每个脚本技术都有其不同的适用场合。应根据所要实现的测试方法体系,综合脚场合。应根据所要实现的测试方法体系,综合脚本技术,以较理想的方法实现测试用例。本技术,以较理想的方法实现测试用例。2023-4-3053测试的方法测试的方法n测试场景测试场景 场景是软件系统中事件触发时的情景,同一场景是软件系统中事件触发时的情景,同一事件不同的触发顺序和处理结果形成事件流。在事件不同的触发顺序和处
45、理结果形成事件流。在软件测试中,描绘出事件触发时的情景,有利于软件测试中,描绘出事件触发时的情景,有利于设计测试用例,也有利于更容易地理解和执行测设计测试用例,也有利于更容易地理解和执行测试用例。试用例。2023-4-3054软件测试活动软件测试活动n回归测试回归测试 回归测试是对程序进行修改之后的测试,其回归测试是对程序进行修改之后的测试,其目的是判断程序修改是否达到了预期目标,并检目的是判断程序修改是否达到了预期目标,并检查修改是否引起了程序其他方面的退步。查修改是否引起了程序其他方面的退步。在项目开发中,测试组会将测试用例保存到在项目开发中,测试组会将测试用例保存到“测试用例库测试用例库
46、”中,并对其进行维护和管理。当中,并对其进行维护和管理。当得到一个软件的基线版本时,用于基线版本的所得到一个软件的基线版本时,用于基线版本的所有测试用例就形成了基线测试用例库。当需要进有测试用例就形成了基线测试用例库。当需要进行回归测试时,可以根据所选择的回归测试策略,行回归测试时,可以根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回从基线测试用例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测试。归测试包,通过运行回归测试包来实现回归测试。2023-4-3055软件测试活动软件测试活动n性能测试性能测试 性能测试是检验系统或系统部件是否达到规性能测试是
47、检验系统或系统部件是否达到规定的性能指标,是否满足一些性能相关的约束和定的性能指标,是否满足一些性能相关的约束和限制条件,例如在特定负载和配置环境下程序的限制条件,例如在特定负载和配置环境下程序的响应时间和吞吐率。响应时间和吞吐率。性能测试通常在系统测试阶段执行,常常与性能测试通常在系统测试阶段执行,常常与强度测试结合起来,一般需要使用测试工具。评强度测试结合起来,一般需要使用测试工具。评估测试对象的性能侧重于获取与行为相关的数据,估测试对象的性能侧重于获取与行为相关的数据,如响应时间、计时配置文件、执行流、操作可靠如响应时间、计时配置文件、执行流、操作可靠性和限制。性和限制。2023-4-3
48、056软件测试活动软件测试活动n压力测试压力测试 压力测试评价一个系统可以承受的压力极限,压力测试评价一个系统可以承受的压力极限,以及超负荷时的响应情况。通过确定一个系统的以及超负荷时的响应情况。通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别。例如测试在大负荷量下,一个的最大服务级别。例如测试在大负荷量下,一个 Web Web 站点何时响应退化或失败。在极限测试状况站点何时响应退化或失败。在极限测试状况下,理想的系统可能会响应不及时,但不应宕机,下,理想的系统可能会响应不及时,但不应宕机,并应在负荷正常后一段时间内恢复正常运
49、行。并应在负荷正常后一段时间内恢复正常运行。2023-4-3057软件测试活动软件测试活动n安全测试安全测试 安全测试检查系统对非法侵入的防范能力,安全测试检查系统对非法侵入的防范能力,主要是测试系统在没有授权的内部或者外部用户主要是测试系统在没有授权的内部或者外部用户对系统进行攻击或者恶意破坏时如何进行处理,对系统进行攻击或者恶意破坏时如何进行处理,是否仍能保证数据的安全。安全测试期间,测试是否仍能保证数据的安全。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防人员假扮非法入侵者,采用各种办法试图突破防线。从理论上讲,只要有足够的时间和资源,没线。从理论上讲,只要有足够的时间和资
50、源,没有不可进入的系统。因此,系统安全设计的准则有不可进入的系统。因此,系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。是,使非法侵入的代价超过被保护信息的价值。这样非法入侵者就无利可图。这样非法入侵者就无利可图。2023-4-3058软件测试活动软件测试活动n安装测试安装测试 安装测试检验软件是否可以正确安装,安装安装测试检验软件是否可以正确安装,安装文件的各项设置是否有效,安装后能否影响原系文件的各项设置是否有效,安装后能否影响原系统;卸载测试是逆过程,测试是否删除干净,是统;卸载测试是逆过程,测试是否删除干净,是否会影响原系统等。否会影响原系统等。2023-4-3059软件测