《软件质量和测试的背景.pptx》由会员分享,可在线阅读,更多相关《软件质量和测试的背景.pptx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1内容提要内容提要p1.1软件特征与软件工程软件特征与软件工程l1.1.1软件分类l1.1.2层次化软件工程l1.1.3软件范型的转变l1.1.4现代软件开发p1.2软件质量软件质量l1.2.1质量概念l1.2.2质量运动l1.2.3软件质量概念l1.2.4软件质量评价体系与标准p1.3软件测试与可靠性概述软件测试与可靠性概述l1.3.1软件测试的意义l1.3.2软件测试的定义l1.3.3软件测试方法l1.3.4软件测试自动化l1.3.5软件缺陷的修复费用p1.4 软件质量保证与测试人才的特点软件质量保证与测试人才的特点l1.4.1现代软件研发对软件人才的需求l1.4.2优秀的软件测试员应具备
2、的素质p1.5小结小结21.1 软件特征与软件工程软件特征与软件工程p要理解软件的含义并全面地理解软件工程,要理解软件的含义并全面地理解软件工程,我们首先要明确软件的特征,并据此知道我们首先要明确软件的特征,并据此知道软件与人类建造的其它事物之间的区别。软件与人类建造的其它事物之间的区别。pIEEE定义对软件的定义如下:定义对软件的定义如下:l软件是计算机程序、规程以及可能的相关文档和运行计算机系统需要的数据。软件包含计算机程序、规程、文档和软件系统运行所必需的数据四个部分。3软件具有与硬件完全不同的特征软件具有与硬件完全不同的特征p软件是开发产生的,而不是用传统方法制软件是开发产生的,而不是
3、用传统方法制造。造。p软件不会像硬件一样有磨损。软件不会像硬件一样有磨损。p很多软件不能通过已有构件组装,只能自很多软件不能通过已有构件组装,只能自己定义。己定义。4硬件、软件失效曲线图硬件、软件失效曲线图 51.1.1软件分类软件分类p当前的计算机软件分为七个大类,使得软当前的计算机软件分为七个大类,使得软件工程正面临持续的挑战:件工程正面临持续的挑战:l系统软件l应用软件lWeb应用软件l工程和科学软件l嵌入式软件l产品线软件l人工智能软件 6新的挑战也逐渐显现出来新的挑战也逐渐显现出来 p普适计算普适计算p网络资源网络资源p开源软件开源软件p新经济新经济 71.1.2层次化软件工程层次化
4、软件工程pFritz Bauer在在NATO(北大西洋公约组织)(北大西洋公约组织)会议上给出的定义仍是我们进一步展开讨论的基会议上给出的定义仍是我们进一步展开讨论的基础:础:l软件工程:是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。p美国电气和电子工程师协会(美国电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)给出了一个更加综合的定义:)给出了一个更加综合的定义:l软件工程:(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。(2
5、)(1)中所述方法的研究。8软件过程、软件方法和软件工具软件过程、软件方法和软件工具 9软件工程的视图软件工程的视图 p抛开要工程化的实体,我们必须先回答下抛开要工程化的实体,我们必须先回答下列问题:列问题:l要解决的问题是什么?l要用于解决该问题的实体具有什么特点?l如何实现该实体?其解决方案是怎样的?l如何建造该实体?l采用什么方法去发现该实体设计和建造过程中产生的错误?l当该实体的用户要求修改、适应和增强时,如何支持这些活动?10三个阶段三个阶段p我们可以把与软件工程相关的工作分为三我们可以把与软件工程相关的工作分为三个阶段,其中的每个阶段能够回答上述的个阶段,其中的每个阶段能够回答上述
6、的一个或多个问题:一个或多个问题:l定义阶段针对“做什么”l开发阶段针对“如何做”l维护阶段针对“改变” 11补充说明补充说明p还有很多保护性活动用来补充说明在软件工程的还有很多保护性活动用来补充说明在软件工程的一般视图中的各个阶段和相关步骤,这些典型的一般视图中的各个阶段和相关步骤,这些典型的贯穿于整个软件过程中的活动包括:贯穿于整个软件过程中的活动包括:l软件项目追踪和控制l正式的技术复审l软件质量保证l软件配置管理l文档的准备和产生l可复用管理l测试l风险管理121.1.3软件范型的转变软件范型的转变131.1.4现代软件开发现代软件开发p传统软件开发和现代软件开发传统软件开发和现代软件
7、开发p软件团队与软件开发人员的培养软件团队与软件开发人员的培养141.2 软件质量软件质量p有些软件开发者仍然相信软件质量是在编码之后有些软件开发者仍然相信软件质量是在编码之后才应该开始担心的事情。这是荒谬的,因为软件才应该开始担心的事情。这是荒谬的,因为软件质量保证(质量保证(Software Quality Assurance,SQA)是一种应用于整个软件过程的保护性活)是一种应用于整个软件过程的保护性活动,它包括:动,它包括:l一种质量管理方法,l有效的软件工程技术(方法和工具)l在整个软件过程中采用的正式技术复审l一种多层次的测试策略l对软件文档及其修改的控制l保证软件遵从软件开发标准
8、的规程l度量和报告机制151.2.1质量概念质量概念p我们应从以下几个方面考虑软件质量:我们应从以下几个方面考虑软件质量:l软件结构方面l功能与性能方面l开发标准与文档方面161.2.2质量运动质量运动p全面质量管理通常都包括以下全面质量管理通常都包括以下4个步骤:个步骤:l第1步是指一个连续的过程改进系统,其目标在于开发一个看的见的、可重复的和可度量的软件过程。l第2步只第1步完成之后才可启动。这一步将检查影响过程的其它因素,并优化这些因素对过程的影响。例如,软件过程可能受到高层职员流动的影响,而该影响则是公司内部不断重组而引起的。一个稳定的公司组织会对软件质量的提高带来很大的帮助,所以第2
9、步可以帮助管理者对公司重组方式提出建议。l前面两个步骤关注的是过程,第3步(或称为“第五感觉”)则关注软件产品的用户,它是通过检查用户使用产品的方式,而导致产品本身的改进和潜在地改进产品的生产过程。l第4步将管理者的注意从当前的产品上移开并拓宽。作为一个面向商业的步骤,该步骤通过观察产品的市场用途,来寻找产品在相关领域中的发展机会。在软件领域,第4步可以被视为一种发现有利可图的新产品,或视作寻找当前计算机系统的副产品用途的努力。171.2.3软件质量概念软件质量概念pIEEE关于软件质量的定义:软件质量是关于软件质量的定义:软件质量是l系统、部件或者过程满足规定需求的程度。l系统、部件或者过程
10、满足顾客或者用户需要或期望的程度。l该定义相对客观,强调了产品(或服务)和客户/社会需求的一致性。pANSI关于软件质量的定义:按照关于软件质量的定义:按照ANSI(American National Standards Institute,美国国家标准学会),美国国家标准学会)在在1983年的标准陈述,软件质量定义为年的标准陈述,软件质量定义为“与软件产品满与软件产品满足规定的和隐含的需求的能力有关的特征和特性的全体足规定的和隐含的需求的能力有关的特征和特性的全体”。具体包括具体包括l软件产品中能满足用户给定需求的全部特性的集合,l软件具有所期望的各种属性组合的程度,l用户主观得出的软件是否
11、满足其综合期望的程度,l决定所用软件在使用中将满足其综合期望程度的软件合成特性。186个主要特征个主要特征p我们把各类软件综合起来看,可以列出下列我们把各类软件综合起来看,可以列出下列6个个主要特征:主要特征:l功能性:软件实现的功能达到要求的和隐含的用户需求以及设计规范的程度,l可靠性:软件在指定条件和特定时间段内维持性能的能力程度,l易使用性:用户使用该软件所付出的学习精力,l效率:在指定条件下,软件功能与所占用资源之间的比值,l可维护性:当发现错误、运行环境改变或客户需求改变时,程序能修改的容易程度,l可移植性:将软件从一种环境移入另一种环境的容易程度。191.2.4软件质量评价体系与标
12、准软件质量评价体系与标准pIEEE给出软件质量保证的定义,软件质给出软件质量保证的定义,软件质量保证(量保证(SQA)是:)是:l一种有计划的,系统化的行动模式,它是为项目或者产品符合己有技术需求提供充分信任所必需的。l设计用来评价开发或者制造产品的过程的一组活动,与质量控制有区别。201.3 软件测试与可靠性概述软件测试与可靠性概述p1.3.1软件测试的意义软件测试的意义l迪斯尼狮子王缺陷l英特尔浮点除法缺陷l人造陨石坑缺陷l程序员的千年虫问题lWindows的输入法漏洞l爱国者导弹缺陷211.3.2软件测试的定义软件测试的定义p1983年,年,IEEE在提出的软件测试文档标准(在提出的软件
13、测试文档标准(IEEE Standard For Software Test Document),即),即IEEE 829-1983中对软件测试进行了准确的定义:中对软件测试进行了准确的定义:l软件测试是使用人工或自动手段来运行或测定某个系统的过程,检验它是否满足规定的需求或者弄清预期结果与实际结果之间的差别。pIEEE在在1990年颁布的软件工程标准术语集中沿用了这年颁布的软件工程标准术语集中沿用了这一概念,该概念非常明确的提出了软件测试以检验是否满一概念,该概念非常明确的提出了软件测试以检验是否满足需求为目标。足需求为目标。p其次,其次,G. J. Myers在其经典论著在其经典论著软件测
14、试的艺术软件测试的艺术中中对软件测试提出如下观点:对软件测试提出如下观点:l测试是程序的执行过程,目的在于发现错误,l一个好的测试用例可以发现至今尚未发现的错误,l一个成功的测试能发现至今未发现的错误。221.3.3软件测试方法软件测试方法p1. 静态方法和动态方法静态方法和动态方法p2. 黑盒测试、白盒测试和灰盒测试黑盒测试、白盒测试和灰盒测试p3. 基于软件开发阶段的测试方法基于软件开发阶段的测试方法l需求测试l单元测试l集成测试l性能测试l压力测试l容量测试l配置测试l回归测试l安装测试l安全性测试231.3.4软件测试自动化软件测试自动化p白盒测试工具白盒测试工具p功能测试工具功能测试
15、工具p负载压力测试工具负载压力测试工具p测试管理工具测试管理工具241.3.5软件缺陷的修复费用软件缺陷的修复费用251.4 软件质量保证与测试人才的特点软件质量保证与测试人才的特点p1.4.1现代软件现代软件研发对软件人才的需研发对软件人才的需求求传统软件人才的特传统软件人才的特点点创新软件人才的特点创新软件人才的特点敢冒风险敢冒风险有雄心壮志有雄心壮志能学习,适应新环境能学习,适应新环境实事求是的作风创新精神有克服困难的毅力如果对问题有兴趣,则有热情、有主动性扎实的理论基础,尤其是数学独立从事研究的能力很强的编程能力题目想的远、做的深讲纪律、讲服从对什么事都有主见对许多事情都没有主见,即使
16、有想法也不敢说直截了当地沟通甚至批评和争论26研发方法的差别研发方法的差别 创新研发方法创新研发方法非创新研发方法非创新研发方法想着做事情坐着想事情经过科学手段、大量的数据、可重复的深入研究肤浅的、无用的、无法扩张的简单结果研究、理解、借用别人的结果不看别人的研究,或只抄袭别人的研究成果经过亲自的设计工程原型,证实对用户有用理论的、没用的纸上谈兵承认失败,从头开始不承认失败,永无止境地延续研究27现代软件研发对软件人才提出的现代软件研发对软件人才提出的要求要求 p专业基础和创新能力专业基础和创新能力p具备主人翁精神具备主人翁精神p良好的团队精神良好的团队精神p从错误中学习的能力从错误中学习的能
17、力281.4.2优秀的软件测试员应具备优秀的软件测试员应具备的素质的素质p软件测试员是探索者:软件测试员是探索者: l软件测试员不会害怕进入陌生环境,他们喜欢拿到新的软件,安装在自己的机器上并观看结果。p软件测试员是故障排除员:软件测试员是故障排除员:l软件测试员善于发现问题的症结,他们喜欢解谜。p软件测试员不放过蛛丝马迹:软件测试员不放过蛛丝马迹:l软件测试员总在不停地尝试。他们可能会碰到转瞬即逝或者难以证实的软件缺陷,当然,他们不会当作视偶然而轻易放过,而会想尽一切可能去发现它们。p软件测试员具有创造性:软件测试员具有创造性:l这是对测试是显而易见的。软件测试员的工作是要想出富有创意审视超
18、常的手段来寻找缺陷。p软件测试员是追求完美者:软件测试员是追求完美者:l软件测试员力求完美,但是当知道某些无法企及时,他们不去苛求,而是尽力接近目标。p软件测试员判断准确:软件测试员判断准确:l软件测试员要判断测试内容、测试时间、以及看到的问题是否是真正的缺陷。p软件测试员注重策略和外交:软件测试员注重策略和外交:l软件测试员常常带来的坏消息。他们必须告诉程序员,你的程序很糟糕。好的软件测试员知道以怎样的策略来沟通这些问题,他们也能够和有时不够冷静的程序员合作。p软件测试员善于说服:软件测试员善于说服:l软件测试员找出的缺陷有时会被认为不重要且不用修复。这时测试员要善于清晰地表达自己的观点,说
19、明软件缺陷为何需要修复,并且推进缺陷的修复。291.5 小结小结p从上面讨论的结果可知,软件质量保证是建立一套有计划,从上面讨论的结果可知,软件质量保证是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。软件质量保证的践和方法能够正确地被所有项目所采用。软件质量保证的目的是使软件过程对于管理人员来说是可见的。目的是使软件过程对于管理人员来说是可见的。l它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的。软件质量保证组在项目开始时就一起参与建立计划、标准和过程。这些将使软件项目满足机构方针的要求。p软件测试是软件质量保证的重要手段之一,它就是利用测软件测试是软件质量保证的重要手段之一,它就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。例后,需要跟踪故障,以确保开发的产品适合需求。30