版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件工程与软件测试课程概述学习前的要求掌握软件工程基本概念掌握软件开发方法和软件开发语言了解Web
2课程概述参考书目《软件测试》PaulC.Jorgensen,韩柯等译,2002,机械工业出版社《软件测试方法和技术》朱少民,2011,清华大学出版社《高级软件测试技术》杜庆峰,2011,清华大学出版社《实用软件测试教程》温艳冬,2011,清华大学出版社沈阳师范大学软件学院3课程学时分布章节内容学时分配计讲课习题课讨论课实验(上机)其它1第一章软件工程与软件测试442第二章软件测试概论443第三章软件测试基础知识4264第四章软件的测试过程5385第五章黑盒测试和白盒测试4486第六章性能测试2247第七章自动化测试技术75128第八章缺陷报告325合计331851防不胜防的软件错误例1:1963年,美国,飞往火星的火箭爆炸,损失$10million原因:FORTRAN循环DO5I=1,3误写为DO5I=1.3例2:1996年,美国,飞往哥伦比亚城市Cali的客机失事,163人中仅4人生还
原因:关于目的地坐标的、由一个字符构成的计算机命令的错误输入,两相距132英里的城市坐标在南美航空表中代码相同例3:1996年,ESA的火箭处女航失败,升空后仅飞行40秒就偏离了其预定轨道,该火箭被远程控制所毁并失去她携带的4个卫星,损失达5亿美元
5沈阳师范大学软件学院防不胜防的软件错误原因:惯性参考系方面的问题未经讨论和解决例4:1994-1995年,迪斯尼的狮子王,第一个面向儿童的多媒体光盘游戏,投诉被打爆.原因:未对市场上的各种PC机型进行正确测试,软件在大众使用的常见系统中难以运行例5:1994年,英特尔奔腾浮点除法软件缺陷,导致为自己的行为道歉并花费4亿多美元更换坏芯片.原因:芯片发布前已发现问题,但管理层忽略了;软件缺陷被发现时,英特尔试图掩饰该问题的严重性;受到压力时,英特尔承诺更换芯片但要求用户证明自己受到软件缺陷的影响.沈阳师范大学软件学院6防不胜防的软件错误例6:1999年,美国航天局火星基地登陆飞船在试图登陆火星表面时失踪.
原因:为省钱而简化确定何时关闭推进器的装置,导致飞船着陆时误更改一个数据位,两个测试小组的独立工作做的很好,但从未走在一起例7:1991年,美国爱国者导弹防御系统在几次对抗导弹战役中失利,多哈战误击毙28名美军士兵.原因:一个很小的系统时钟错误积累,可能拖延14小时并造成跟踪系统失去准确度,多哈战中系统拖延了100多个小时沈阳师范大学软件学院7本章内容1.1软件生存周期1.2软件发展历史1.3软件缺陷1.4软件质量1.5软件测试与软件工程沈阳师范大学软件学院8主要内容[基本要求]了解软件发展过程了解需要进行软件测试的原因理解软件生命周期掌握软件缺陷的概念掌握软件质量、软件质量测试相关内容[重点难点]软件缺陷重点:软件测试概念难点:软件缺陷1.1软件开发模型软件生存周期传统软件开发模型软件演化模型面向对象开发模型形式化方法模型实例一、软件生存周期一个软件从开始计划起,到废弃不用止,成为软件的生存周期计划时期开发时期运行时期(1)问题定义(2)可行性研究(3)需求分析(4)设计(5)实现(6)测试(7)维护软件生存周期的阶段划分开发期计划期
运行期计划期问题定义:确定系统的目标和范围可行性研究:技术可行性、经济可行性、法律可行性等《立项建议书》
《项目计划》开发期设计:包括需求分析和软件设计
需求分析:做什么(what)
软件设计:怎么做(how)总体设计和详细设计两个阶段架构设计、功能设计、数据库设计、界面设计、算法设计...《产品需求规格说明书》
《体系结构设计报告》《模块设计报告》
《数据库设计报告》《用户界面设计》开发期实现:包括编码和测试
编码:采用具体的编程语言实现设计(do)测试:验证代码的正确性(check)单元测试、集成测试、确认测试、性能测试、回归测试《编程文档》
《测试用例》
《测试报告》运行期维护:改正性维护、完善性维护、增强性维护、适应性维护(change)维护的副作用《产品维护计划》
《产品维护报告》重提软件开发和编程的区别二、传统软件开发模型软件开发模型:就是为整个软件生存期建立的模型。如何有效地组织生存期的各项活动主要有:瀑布模型和快速原型模型瀑布模型问题定义可行性研究需求分析设计编程测试运行与维护目标与范围说明书可行性论证报告需求说明书设计文档程序测试报告维护报告计划时期开发时期运行时期瀑布模型的特点阶段间的顺序性和依赖性
各阶段依次进行
前一阶段的输出是后一阶段的输入推迟实现的观点
从逻辑到物理
文档的重用质量保证的观点
复审和回溯瀑布模型的缺点过度依赖系统分析员的个人能力需求变更带来的代价过大在对软件产品的某个版本试用之前,要用户(即使有软件工程师的配合)完全、精确和正确地对一个现代软件产品提出确切的需求,在实际上是不可能的-----F.Brooks快速原型模型需求分析原型开发原型评定目标系统设计目标系统实现用户意见原型:包括未来实际系统的主要功能的模型系统,通过让用户看到实际系统,从而明确需求快速原型的注意事项原型规模要适当,不能过大也不能过小。应包括未来系统的主要功能和重要接口原型的搭建和修改要快速可以方便的生成实际系统不能陷入无休止的原型评定界面原型三、软件演化模型演化模型:一种渐进式的、迭代的软件开发模型,可以适应软件规模的不断增长,使大型复杂软件在迭代中逐步达到完善。主要包括:增量模型和螺旋模型增量模型规格说明设计实现和集成交付用户构件1规格说明设计实现和集成交付用户构件2规格说明设计实现和集成交付用户构件3............规格说明设计实现和集成交付用户构件n瀑布模型和快速原型的结合增量模型的特点先核心后细节,先易后难。可以控制风险人员组织灵活注意增量的划分和集成集成有风险,特别是人员流动螺旋模型加入了风险分析。每一次迭代都要进行风险分析,并产生原型尽可能提前发现问题,把损失降到最低增加成本和时间对风险评估的依赖四、面向对象的开发模型对象:现实世界中个体或事物的抽象表示,是属性和相关操作的统一封装体类:表示相似对象的共同特征,对象是类的实例继承:子类与父类的关系消息:对象间、对象和外部间相互关联的途径(方法调用)构件集成模型引入构件库软件的开发就是集成老构件和开发新构件的过程软件复用:将已有的软件及其有效成分用于构造新的软件或系统。构件的条件:封装、重载、继承、聚合、多态五、实例--教材购销系统需求明确,适合于瀑布模型实例--显像管生产监测系统变化较多,主次有别,适合于增量模型六、最新的软件过程模型统一过程模型(RUP)极限编程(XP)RationalUnifiedProcesseXtremeProgramming一系列最佳实践的集合沟通、简单、反馈和勇气测试驱动设计、持续重构、现场客户、结对编程、简单设计软件工程的原则模块化和分解细化和逐步求精变更的预见性通用性和复用性递增式软件工程的原则产品质量以满足用户需求为最高准则高生产率必须以质量合格为前提,质量第一密切与用户的联系,尽早排除缺陷文档描述精确、易懂,无多义性清晰第一、效率第二…………1.2软件发展历程第一阶段计算机与编程语言第二阶段PC编程语言第三阶段PC与单机软件第四阶段网络发展与软件第五阶段网络与企业应用软件第六阶段应用软件分类第一阶段计算机与编程语言要操作计算机,必须懂得计算机的语言最早的软件开发方法打孔纸带来编写程序圆孔,透光,则表示1其他表示0通过圆孔纸带输入到老式计算机中,作为控制计算机的程序键盘操作时代将英文打字机与计算机相连,发送二进制信号,形成键盘编程时代输入机器操作代码,后来形成汇编语言直接控制计算机执行各种命令大型计算机的出现大型计算机主要用来进行科学计算,使用类似汇编的编程语言,如cobol计算机出现的目的本来就是为了计算,因此称为计算机大型计算机专门用于科学研究计算,必须气象、地理等,以IBM公司为主PDP-11计算机为主要先驱中型计算机中型计算机的出现,让计算机从大型科研机构走向企业、事业单位帮助企业、事业单位完成数据处理帮助人们完成信息传递出现专用编程语言,如:ada小型计算机小型计算机的出现,更加方便了企业、事业单位的信息处理价格低操作简单维护容易涌现出一批厂商SUNDEC……出现更加高级的编程语言,如CUNIX时代—C语言的时代作为开放的操作系统,彻底打破IBM垄断地位让后来的中小型计算机有了统一的操作系统平台诞生了C语言出现了终端操作方式——多人共同使用一台计算机由此出现了SUNUNIXDECUNIX……当时的数据库系统从大型机的IBM的数据库系统到小型机的数据库系统,一直都快速发展着DB2ORACLESYBASEINFOMIX第二阶段PC编程语言个人计算机,造就今天的软件开发职业PC时代的到来—BASIC语言1980年,IBM曾经常尝试,将计算机用于个人数据处理,引发个人计算机PC时代的到来比尔.盖茨因此发家提供了PC计算机的操作系统——MS-DOS开发了当时流行的PC编程语言——BASICPC让神奇的计算机走入个人生活今天我们所看到的计算机,理解的计算机,大多数是PC概念的计算机今天的PC已经成为很多人无法离开的生活中的设备微软的贡献:让PC更加人性化——WINDOWS苹果电脑—BASIC的普及IBM的PC并不是唯一的,时代造就了苹果(MAC)电脑公司图形化、娱乐性个人使用苹果的系统不开放性,让微软成为今天的PC霸主苹果让孩子都知道了basic语言DOS系统时代—c语言流行时代Dos系统让PC称为个人的工具从此诞生了优秀的开发工具和厂商微软——BASIC,C语言BORLAND——TURBOC……WINDOWS-1987年1987年的WINDOWS象一个幼稚的孩子WINDOWS-1990年1990年,更加成熟可视化编程由此开始编写程序就像画图一样WINDOWS-1993年成熟而实用造就了今天新浪的前身——四通利方——汉化了当时的WINDOWSWINDOWS-1995年成就霸业的一年个人使用的WINDOWS95完美的个人操作系统微软开始开发WINDOWSWORKSTATION网络操作系统,形成今天的WINDOWS2000,WINDOWS2003等第一代可视化开发工具
——VISUALTOOLS微软利用WINDOWS优势,开发的可视化编程工具,极大降低了开发者的负担成为今天可视化开发工具的先驱VISUALBASICVISUALCVISUALFOXPROFOXPRO——单机数据库先驱第一代个人计算机数据库开发工具微软收购FOXBASE软件第一个WINDOWS下的数据库开发工具造就了用友财务软件等产品ACCESS到SQLSERVERFOXPRO到ACCESS,个人数据库的升华ACCESS到SQLSERVER企业数据库的升华廉价的SQLSERVER逐步成为中小企业青睐的产品ORACLE等价格昂贵IBM数据库过于专业,无法满足中小企业应用第三阶段PC与单机软件个人使用的软件,没有数据共享,也没有数据传递PC逐步进入企业和家庭廉价方便解决实际问题打字排版科学计算游戏娱乐……单机程序—DOS下的程序最早的英文文字排版软件—WSDOS下的游戏三国演义帝国时代俄罗斯方块其他DOS下的程序单机程序——WINDOWS的程序从DOS开始,就有了单台计算机执行的程序WPSTURBOCOFFICE扑克牌……无需连接网络,就可以运行早期的游戏——三国演义等早期的用友财务软件等没有数据共享,没有信息交换单机程序—中国的成就WPS——金山公司方正排版CCDOS——中国自己的中文操作系统巨人汉卡一批优秀的软件随之诞生数据库处理方面DBASE为主的个人数据库系统用友公司因此成就一番事业流行的单机程序—OFFICE用友财务软件,最早是使用DBASE开发的,专门个财务人员使用微软的OFFICE,也是为个人使用,专门解决写文章和书稿排版典型的企业单机程序库存管理软件FoxproVbdelphi财务管理软件DbaseFoxprovb人事管理软件Vbdephi固定资产管理软件vb典型的单机工具软件杀毒-RISING下载-FLASHGET电影播放器-MEDIAPLAYER压缩工具-ZIP,RAR图片察看器-ACDSEE其他windows下常用工具软件开发工具:VB,C++等第四阶段网络发展与软件网络推动企业应用开发最早的信息交流—‘上机’的由来上机,就是到终端机方操作小型、大型计算机主机系统最早的信息交流方式依靠小型机、大型机依靠终端,所有软件都在主机系统上所有信息通过公用计算机共享典型应用TELNETNNTPMAILPC网络打破主机系统天下NOVELL作为PC网络的先驱PC网络逐步取代大型计算机让个人和企业能够通过PC沟通和交流最早的系统集成方法1985-1995把10台电脑连接起来企业需要共享硬盘,存储数据,因为当时硬盘非常昂贵打印机,因为打印机非常昂贵相互复制一些文件,比如WORD文档否则只能通过软盘来复制,非常麻烦办公室自动化—OA局域网络把所有的电脑都连起来,并可以内部收发邮件:lotusnotes,exchange让更多的人共享数据把几个办公室的电脑连接起来局域网诞生更多的PC连接到一起NOVELL蓬勃应用流行技术:IPX协议设备:HUB,MODEM等校园网,城域网—广域网诞生局域网连接范围有限更多企业希望把分公司连接起来学校希望相互连接起来流行技术:TCP/IP协议设备:交换机,路由器,ISDN等互联网—天下一家的想法众多的局域网络,广域网络,家庭电脑都希望联结起来,共享信息,相互沟通互联网诞生——1969互联网流行——1995关键技术传统UNIX下的TCP/IP复活HTML标准文档格式诞生设备:广域网设备、电信公司通讯设备的结合第五阶段网络与企业应用软件网络推动企业应用发展企业应用发展推动软件开发大家一起来工作—MIS的诞生网络让企业提出更多软件功能要求,单机程序无法达到把数据保存到公用电脑上——服务器上通过服务器可以共享、存储、统计分析和汇总数据相互传递信息,并及时发现信息的变化管理信息系统:由人和计算机网络集成,能提供企业管理所需信息以支持企业的生产经营和决策的人机系统。主要功能包括经营管理、资产管理、生产管理、行政管理和系统维护等网络应用开发—数据库的重要性共享信息,协同工作,都要通过统一的软件来协调管理传统的数据库走进PC网络软件ORACLE,SQLSERVER等从高端小型机走向PC世界有了数据库,则信息共享和交流,信息存储和处理变得非常容易第一代网络软件:客户机/服务器程序—1992至1996由于需要数据信息共享,引发客户机/服务器软件多人共享数据库信息多人同时操作共享数据库数据典型代表办公自动化系统用友财务网络版聊天系统传奇游戏需要在每台电脑上安装一个软件需要有一台服务器共享数据库信息解释:的服务器需要有账号,这些帐号在腾讯公司服务器的数据库中保存当某个人的电脑重新安装的时候,所有信息都从服务器取回,不会丢失相互间可以随时沟通信息,对话交流,共享文件资料等更多的客户机/服务器软件电子邮件程序,OUTLOOK只是客户端,邮件服务器是服务器端传奇游戏服务器共同点有专门的客户端软件,下在安装,否则服务使用信息共享,随时交流,数据统一保存在服务器上缺点:必须安装各种软件邮件软件、软件、msn软件、游戏软件等浏览器/服务器模式——1997-今通过浏览器就可以运行客户端程序,无需单独安装软件,共享服务器数据BBS博克电子商务解释:火车票代售无论去哪个火车票代售点,都可以购买车票共享不会因为目的地不同而非要到专门的售票处对于购票者来说,所有购票点都一样如果是客户机/服务器模式,则不同车次必须到不同的购票处不同时间也要到不同购票处虽然信息共享,但类别严格而专用互联就是无界限交流网络新闻BBS博克视频聊天电子商务三层架构——1995至今当客户机/服务器或者浏览器/服务器无法解决速度和处理数据的高效性的时候,中渐件诞生帮助数据库处理数据快速分析处理需要的各种数据,无论数据来自磁盘文件、数据库还是其他按照需要统一处理,并返回给客户端典型代表BEA公司的WEBLOGIC微软公司的BIZTALKSERVERWEBSERVICE……三层架构(3-tierarchitecture)通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想解释:邮局的作用邮局可以方便地邮递各种东西,无需自己考虑如何运输不用考虑是空运、路运还是海运不用考虑是谁把东西送到对方手中一切都有邮局负责典型的企业网络应用软件数据库系统邮件服务器办公自动化游戏服务器进销存管理ERP客户关系管理系统其他行业特殊应用软件电信、电力、石油等软件开发新领域:移动设备开发移动设备手机掌上电脑口袋PC移动领域应用开发短信彩信游戏邮件网络电视视频服务WAP网站第六阶段应用软件分类应用软件就是除了操作系统、各种开发工具之外的实用软件文件处理类以office为代表,用来处理文章排版电子表格图形图像文件处理办公自动化类以政府公文处理为主,结合office和数据库功能典型产品LotusOffice+exchange其他专业开发软件——OA企业管理信息系统(MIS)专门用来处理企业管理信息的,比如财务账目库存工资销售情况等帮助企业领导者分析和统计数据典型软件各类mis系统娱乐类自从PC诞生,就没有离开个人娱乐游戏电影播放今天的BBS,,MSN,各种网站电子商务—电脑做生意由IBM提出,最初主要针对银行的资金流通运输行业的货物流通互联网的信息流通具体体现阿里巴巴易贝易趣当当书城网上银行ERP系统专门为了大型企业,如汽车、建筑、电子等行业开发的软件庞大的数据库复杂的软件处理智能化的管理决策支持电子政务让所有老百姓通过网络就可以解决问题,再也不用各个衙门口盖公章首都在线工商局税务局公安局……无线领域软件手机软件游戏短信彩信彩铃移动商务办公管理全球定位GPSICT领域从IT到ICT不再是计算机独有,逐步走向通信不再是处理数据,逐步走向沟通典型应用视频聊天播克在线电视游戏娱乐……ICT是信息、通信和技术三个英文单词的词头组合(InformationCommunicationTechnology,简称ICT)。它是信息技术与通信技术相融合而形成的一个新的概念和新的技术领域。也是在线测试仪的简称扩展成才之路如何成为优秀的软件人才第一步:明确人生目标在IT行业,一个人的成长大致可以分为:深入研究技术,熟练掌握一种工具成为项目小组技术带头人或者是系统分析人员成为高级工程师,做公司的总工程师职位成为售前支持工程师,成为与用户谈判,答辩,书写项目方案书的高手成为项目经理,逐步学会管理队伍也可能成为公司的CTO,走向职业经理生涯企业职位项目经理丰富项目开发经验,管理经验系统分析员丰富客户需求分析经验,项目开发经验系统设计员丰富系统设计经验,项目开发经验技术经理丰富开发经验,丰富的技术知识开发人员熟练的技术知识,丰富的项目编程经验测试人员丰富的项目开发经验,熟练的技术经验客服维护员熟练的技术经验,吃苦耐劳的工作品质第二步:选择一种编程语言无论哪种语言,都可以为自己奠定基础,无需考虑语言是否重要计算机语言是相通的,可以举一反三关键是彻底掌握,熟练运用不要成为语言的奴隶因为偏爱一种语言,而忽视软件编程思想因为喜欢多个语言,而无法奠定扎实基础各种编程语言比较C语言,计算机语言的基础,但不直接用来开发应用软件VB语言,主要是开发库存、财务等数据库软件,也可以编写简单的游戏软件.NET,是VB,C#,ASP,C++的高度集成,可以开发任何类型的应用软件C++语言,可以开发游戏、图形图像、系统工具、驱动程序等各种软件,但不方便开发数据库软件JAVA语言,重点在互联网网站开发方面,也是其长项,但不适合开发系统工具、图形图像、游戏多媒体等软件嵌入式开发工具,使用的语言基本是C++,JAVA两种,主要是针对手机、家电、电子产品的芯片级编程,如:手机的拍照、摄像功能,洗衣机的自动控制等其他专业开发语言,PC上很少用,但在专业领域用途广泛,如:PERL,ADA,FORTRAN等计算机语言—高度统一性没有程序员需要把所有语言掌握但是程序员必须熟练掌握一种语言可以达到一通百通的境界任何计算机语言都是相类似的如同开汽车第二步:熟练掌握单机程序开发谁能开发出OFFICE,WPS?这是微软、金山公司一批精英仍然在奋斗的技术目标虽能开发出传奇游戏客户端丰富的功能?这是无数游戏开发者追求的目标常用的瑞星、FLASHGET、BT等,都是专业单机程序单机开发技术,是程序员的第一步基石第二步:客户机/服务器程序谁能开发一个或者MSN?这是很多高手研究的问题谁能为企业开发一个SQL数据的管理系统?这是当今很多软件公司正在为之奋斗的问题只有懂得网络和数据库,才能开发ERP等程序只有懂得客户机/服务器技术,才能开发这些程序第四步:浏览器/服务器程序谁能开发出BBS或者博克论坛、电子商务?这是互联网开发的高手谁能开发浏览器下的电子政务、工作流、远程教育系统?这也是互联网开发的高手第五步:充分掌握数据库技术网络化应用开发,数据库编程已经成为主流不能充分利于数据库技术,那么将走很多弯路数据库技术是必需的也是重要的编程技术无论客户机/服务器模式,还是浏览器/服务器模式,都需要数据库数据库技术关键:SQL语言个人技能发展公式语言知识单机程序数据库技术客户机/服务器编程浏览器/服务器编程三层架构编程CMM2开发规范掌握技术的诀窍在编程中学习编程在实践中掌握实践在解决问题中发现解决问题的方法在积累中积累广泛知识在规范中规范自己的职业素质和工作方法在探索和发现中紧跟技术发展步伐企业项目实施框架基本要素软件软件的生命周期软件工程程序+文档采用工程化方法把软件作为工程产品按软件生命周期进行生产软件计划、需求分析、软件设计、软件编码、软件测试、运行维护
软件开发过程程序设计程序编码单元测试软件开发过程的位置软件开发过程需求分析工程设计工程开发过程测试工程应用安装运行维护
用户需求转化为软件产品所需的全部软件工程活动的集合。软件开发过程的主要工作内容开发工程目的和处理内容需求分析工程需求分析系统计划确定系统开发的目的,做出软件系统的开发计划。在需求分析基础上明确系统构想模型和处理要求,作出系统功能概要说明,确定系统能够实现的范围。设计工程外部设计(概要设计)系统功能概要处理的具体化,作出用户看得到的部分系统要件的基本设计(如系统窗体显示和外部接口等方面的设计)。内部设计(详细设计)进行数据库及其文件系统的设计。进行系统内部结构及其处理要求的详细设计(程序处理概要,模块功能说明等)。制造工程程序制造(程序设计、程序编制、单元测试)按照各个程序的处理概要,做出程序单元设计说明书。按照程序单元设计说明书,进行程序编码。实施程序单元测试,验证各个程序单元的处理功能。测试工程软件测试(组合测试、系统测试、运行测试)为提高软件质量,按以下顺序进行测试。组合测试:各个子系统内的程序单元的组合测试。系统测试:各个子系统连接起来,全系统的综合测试。运行测试:在用户环境下进行实际运行环境的测试。应用安装移植安装运行评价处理在用户环境中运行时所发现的问题。对与新系统有关的所有人员(客户)进行新系统培训。实施导入新系统工作,满足项目初期所确立的需求,使客户满意。程序设计过程
程序设计
详细设计书理解
程序设计工作实施
程序设计书作成
程序单元内的功能模块分割
模块功能说明及处理内容说明
程序功能层次图及模块关联说明
定义公共变量和重要变量
程序编制单元测试又称为“模块测试”利用PCL确定程序的检测点利用各种数据验证模块功能通常由编码的程序员担任此工作需求分析范例系统设计范例数据库设计范例测试报告范例UML语言表示的需求设计图1.3软件缺陷管理软件缺陷的描述软件缺陷指的是系统或系统部件中那些导致系统或部件不能实现其功能的缺陷。如果在执行中遇到一个缺陷,可能引起系统的失效。那么准确有效的定义和描述软件缺陷,可以使软件缺陷得以快速修复,节约了软件测试项目的成本和资源,提高产品质量。软件缺陷是什么?缺陷管理内容缺陷管理中的术语缺陷管理的目的缺陷管理中人员的职责缺陷管理过程介绍缺陷的属性缺陷状态缺陷的描述1.3.1缺陷管理-术语软件测试中经常使用各种术语来描述软件出现的问题,如下一些通用的术语:软件错误(SoftwareError)软件缺陷(SoftwareDefect)软件故障(Softwarefault)软件失效(Softwarefailure)缺陷管理-术语区分这些术语很重要,它关系到测试工程师失效现象与机理的深刻理解,由于软件内部逻辑复杂,运行环境动态变化,且不同的软件差异可能很大,因而软件失效的机理可能也有不同的表现形式,但总的来说,软件失效的机理可描述为:软件错误>软件缺陷>软件故障>软件失效缺陷管理-术语解释软件错误:在可以预见的时期内,软件将有人来开发,在整个生存期的各个阶段,都贯穿着人的直接或间接的干预,然而人难免犯错误,这必然给软件留下不良的痕迹,软件错误是指软件生存期内不希望或不可接受的人为错误,其结果是导致软件缺陷的产生,可见,软件错误是一种人为过程,相对于软件本身,是一种外部行为。缺陷管理-术语解释软件缺陷:软件缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差,其结果是软件运行于某一特定积极条件时出现软件故障,这时称软件被激活。缺陷管理-术语解释软件故障:软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态,比如:软件处于执行一个多余循环过程时,我们可以检测软件出现故障,若此时没有适当的措施(容错)加以处理,便产生软件失效。软件故障是一种动态行为。缺陷管理-术语解释软件失效:软件失效是指软件运行时产生的一种不希望或不可接受的外部行为结果。缺陷管理-术语总结综上所述,软件错误是一种人为错误,一个软件错误必定产生一个或多个软件缺陷,当一个软件缺陷被激活时,便产生一个软件故障;同一个软件缺陷在不同条件下被激活,可能产生不同的软件故障,软件故障如果没有及时的容错措施加以处理,便不可避免导致软件失效。1.3.2缺陷管理-目的缺陷管理目的:
缺陷管理目的是对各阶段测试发现的缺陷进行跟踪管理,以保证各级缺陷的修复率达到标准。主要实现以下目标:及时了解并跟踪每个被发现的缺陷;确保每个被发现的缺陷都能被处理;收集缺陷数据,并在其上进行数据分析,作为组织过程的财富。1.3.3缺陷管理-人员职责参与缺陷管理过程人员角色职责:高级经理(EM)裁决项目经理与测试组长有争议的缺陷项目经理(PM)判断是否是缺陷负责指派缺陷给相关责任人缺陷管理-人员职责项目测试组长(TM)决定缺陷管理方式和工具;管理缺陷状态情况;审核测试人员提交的缺陷;对测试人员的工作质量进行跟踪与评价。缺陷管理-人员职责测试人员(TE)编写测试用例;负责缺陷的提交、跟踪及分析;负责执行系统回归测试;提交测试周报、月报;缺陷管理-人员职责项目相关开发人员(DE)修复测试发现的缺陷;负责跟踪修复缺陷的状态;质量保证人员(SQA)监控项目组缺陷管理规程执行情况。缺陷管理-流程图1.3.4缺陷管理-过程介绍缺陷登记缺陷审批是否缺陷缺陷分派修复缺陷缺陷回归测试缺陷管理-缺陷相关属性缺陷ID
用ID标记缺陷缺陷描述(Summary)
简单描述缺陷,主要是什么缺陷缺陷发现提交者(DetectedBy)
描述缺陷是由谁发现提出的缺陷管理-缺陷相关属性缺陷发现时间(DetectedonDate)
描述缺陷发现提出时间缺陷严重性(Severity)
描述缺陷的严重性缺陷分给谁(Assignedto)
描述缺陷分派给谁缺陷管理-缺陷相关属性缺陷在哪个版本发现(DetectedinVersion)
描述缺陷发现的版本缺陷被修改的时间(Modified)
描述缺陷被修改的时间计划修复时间(PlanfixedDate)描述缺陷计划完成修复的时间缺陷管理-缺陷相关属性缺陷优先级(Priority)描述缺陷的优先级缺陷所属项目(Project)
描述缺陷所属的工程是否是重现缺陷(Reproducible)
描述缺陷是否是重现缺陷缺陷管理-缺陷相关属性缺陷所属于的模块(Subject)
描述缺陷所属的模块缺陷详细描述(Description)
缺陷详细描述,包括缺陷产生的步骤,缺陷的实际结果,缺陷的理想结果,建议等缺陷管理-缺陷相关属性缺陷的状态(Status)
描述缺陷的状态缺陷实际关闭的版本(ClosedinVersion)
描述缺陷实际关闭的版本缺陷实际修复所花的时间(ActualFixedTime)
描述缺陷实际修复所花的时间缺陷管理-缺陷相关属性缺陷修复完成时间(ClosingDate)描述缺陷实际关闭的时间注释(Comments)
描述对缺陷的注释附件(Attachments)
添加缺陷附件1.3.5软件缺陷的严重性灾难性系统崩溃,数据丢失,由于程序所引起的死机、非法退出,死循环,数据库发生死锁,错误操作导致的程序中断,严重的计算错误,与数据库连接错误,数据通讯错误严重的操作出错,系统功能错误或遗漏;程序接口错误、数据流错误、轻微数据计算错误
总结上次课内容本次课主要内容:理解软件生命周期掌握软件缺陷的概念掌握软件质量、软件质量测试相关内容软件测试从杯具开始给你一只纸杯,你如何去做测试?问题软件测试从杯具开始需求测试:查看杯子的使用说明界面测试:查看杯子的外观功能测试:装物体时漏或不漏,能不能喝到杯子中所装物体安全性测试:有没有毒或细菌可靠性测试:从高处落下杯子的损坏程序可移植性测试:在不同地方、温度一是否可正常使用兼容性测试:装果汁、白水、酒精等易用性测试:是否烫手,防滑,方便使用疲劳测试:放24小时水泄漏时间和情况测试:装汽油24小时看泄漏时间和情况压力测试:放针不断加重,击穿1.3.6缺陷跟踪与分析缺陷管理的目标确保每个被发现的缺陷都能够被解决缺陷曲线确定测试过程是否结束收集缺陷数据进行数据分析什么是解决?1.3.6缺陷跟踪与分析缺陷处理技巧技巧审阅拒绝完善分配测试重新打开关闭暂缓
1.3.6缺陷跟踪与分析缺陷处理技巧技巧审阅拒绝完善分配测试重新打开关闭暂缓
活动BUG走势图BUG打开关闭图1.3.6缺陷跟踪与分析缺陷趋势分析一、缺陷趋势图软件缺陷构成
二、软件缺陷缺陷产生的可能性和优先级缺陷产生的可能性:指缺陷在产品中发生的可能性,通常可以用频率来表示。缺陷优先级:指缺陷必须被修复的紧急程度。“优先级”的衡量抓住了在严重性中没有考虑的重要程度因素。
缺陷产生可能性
描述
总是(Always)总是产生这个软件缺陷,其产生的频率是100%通常(Often)按照测试用例,通常情况下会产生这个软件缺陷,其产生的频率大概是80-90%有时(Occasionally)
按照测试用例,有的时候产生这个软件缺陷,其产生的频率大概是30-50%很少(rarely)按照测试用例,很少产生这个软件缺陷,其产生的频率大概是1-5%缺陷优先级
描述
立即解决(P1级)缺陷导致系统几乎不能使用或测试不能继续,需立即修复高优先级(P2级)缺陷严重,影响测试,需要优先考虑正常排队(P3级)缺陷需要正常排队等待修复低优先级(P4级)缺陷可以在开发人员有时间的时候被纠正。微软公司的缺陷到达模式缺陷达到模式的理想趋势图在测试阶段初期,缺陷率增长很快。在达到峰值后,就随时间以较慢的速率下降,降低到最低点——零点三、软件缺陷缺陷状态
缺陷状态:指缺陷通过一个跟踪修复过程的进展情况,也就是在软件生命周期中的状态基本定义,如软件缺陷状态列表所示:
缺陷状态
描述
激活或打开(ActiveorOpen)问题还没有解决,存在源代码中,确认“提交的缺陷”,等待处理,如新报的缺陷。已修正或修复(FixedorResolved)已被开发人员检查、修复过的缺陷,通过单元测试,认为已解决但还没有被测试人员验证关闭或非激活(ClosedorInactive)测试人员验证后,确认缺陷不存在之后的状态。重新打开(Reopen)测试人员验证后,还依然存在的缺陷,等待开发人员进一步修复推迟(Deferred)这个软件缺陷可以在下一个版本中解决保留(onhold)由于技术原因或第三者软件的缺陷,开发人员不能修复的缺陷不能重现(Cannotduplicate)开发不能复现这个软件缺陷,需要测试人员检查缺陷复现的步骤。需要更多信息(Needmoreinfor)开发能复现这个软件缺陷,但开发人员需要一些信息,例如:缺陷的日志文件,图片等。重复(Duplicate)这个软件缺陷已经被其他的软件测试人员发现。不是缺陷(Notabug)这个问题不是软件缺陷需要修改软件规格说明书(Specmodified)由于软件规格说明书对软件设计的要求,软件开发人员无法修复这个软件缺陷,必须要修改软件规格说明书。四、软件缺陷缺陷起源和来源缺陷起源:缺陷引起的故障或事件第一次被检测到的阶段,如软件缺陷起源列表所示。
缺陷来源:指缺陷所在的地方,如文档、代码等,如软件缺陷来源列表所示。
缺陷来源
描述
需求说明书
需求说明书的错误、或不清楚引起的问题
设计文档设计文档描述不准确、和需求说明书不一致的问题
系统集成接口
系统各模块参数不匹配、开发组之间缺乏协调引起的缺陷
数据流(库)由于数据字典、数据库中的错误引起的缺陷
程序代码纯粹在编码中的问题所引起的缺陷
缺陷起源
描述
需求在需求阶段发现的缺陷构架在系统构架设计阶段发现的缺陷设计在程序设计阶段发现的缺陷编码在编码阶段发现的缺陷测试在测试阶段发现的缺陷用户在用户使用阶段发现的缺陷五、软件缺陷缺陷根源缺陷根源:指造成上述错误的根本因素,以寻求软件开发流程的改进、管理水平的提高,如软件缺陷根源列表所示。
缺陷根源
描述
测试策略错误的测试范围,误解了测试目标,超越测试能力等过程,工具和方法无效的需求收集过程,过时的风险管理过程,不适用的项目管理方法,没有估算规程,无效的变更控制过程等团队/人项目团队职责交叉,缺乏培训,没有经验的项目团队,缺乏士气和动机不纯等缺乏组织和通讯缺乏用户参与,职责不明确,管理失败等硬件硬件配置不对、缺乏,或处理器缺陷导致算术精度丢失,内存溢出等软件软件设置不对、缺乏,或操作系统错误导致无法释放资源,工具软件的错误,编译器的错误,2000千年虫问题等。工作环境组织机构调整,预算改变,工作环境恶劣,如噪音过大。1.4软件质量与度量主要议程为什么软件质量需要有度量?(必要性)使用软件测试的质量度量的挑战评价软件质量的优秀度量的特征制定软件质量度量时注意事项1.4软件质量度量1.4.1测量基础1.4.2软件度量1.4.3软件质量度量方法1.4.4软件产品的质量度量1.4.5软件过程质量度量1.4.6软件质量度量的执行1.4.4测量基础3个基本概念测量(Measurement)是对产品过程的某个属性的范围、数量、维度、容量或大小提供一个定量的指示;度量(Metric)是对软件产品进行范围广泛的测度,它给出一个系统、构件或过程的某个给定属性的度的定量测量;指标(Indicator)是一个度量或一组度量的组合,采用易于理解的形式,对软件过程、项目或产品质量提供更全面、深入的评价和了解,以利于过程和质量的分析测量原理测量原理示意图1.4.2软件度量一、软件开发生命周期的度量活动二、软件的项目度量三、软件产品的规模度量一、软件开发生命周期的度量活动软件产品度量:主要用来描述软件产品的特征,用于产品评估和决策。产品度量包括软件规模大小、产品复杂度、设计特征、性能以及质量水平。本书主要讨论产品的质量度量,测量产品的各个质量指标并最终对产品整体质量做出合理的评估。软件项目度量:用来描述项目的特性和执行状态,如项目计划的有效性、项目资源使用效率、成本效益、项目风险、进度和生产力等。目的是评估项目开发过程的质量、预测项目进度、工作量等,辅助管理者进行质量控制和项目控制。软件过程度量:用于软件开发、维护过程的优化和改进,如开发过程中的缺陷移除效率、测试阶段中的缺陷到达模式以及缺陷修复过程的效率等。对于软件过程本身的度量,目的是形成适合软件组织应有的各种模型,作为对项目、产品的度量基础;以及对软件开发过程进行持续改进,提高软件生产力。一、软件开发生命周期的度量活动软件开发生命周期中的测量活动规模度量
(sizemeasurement):以代码行数、功能点数、对象点或特征点等来衡量。软件规模度量是工作量度量、进度度量的基础,用于估算软件项目工作量、编制成本预算、策划项目进度的基础。复杂度度量(complexitymeasurement):确定程序控制流或软件系统结构的复杂程度指标。复杂度度量用于估计或预测软件产品的可测试性、可靠性和可维护性,以便选择最优化、最可靠的程序设计方法,来确定测试策略、维护策略等。缺陷度量(defectmeasurement):帮助确定产品缺陷分布的情况、缺陷变化的状态等,从而帮助分析修复缺陷所需的工作量、设计和编程中存在哪些弱点、预测产品发布时间、预测产品的遗留缺陷等。二、软件的项目度量工作量度量(workloadmeasurement):任务分解并结合人力资源水平来度量,合理地分配研发资源和人力,获得最高的效率比。工作量度量是在软件规模度量和生产率度量的基础上进行。进度度量(schedulemeasurement):通过任务分解、工作量度量、有效资源分配等做出计划,然后将实际结果和计划值进行对比来度量。风险度量(riskmeasurement):一般通过两个参数“风险发生的概率”和“风险发生后所带来的损失”来评估风险。其他的项目度量,如需求稳定性或需求稳定因子(RSI,RequirementStabilityIndex)、资源利用效率(ResourceUtilization)、文档复审水平(Reviewlevel)、问题解决能力(Issue-resolvingability)、代码动态增长等。二、软件的项目度量三、软件产品的规模度量1.德尔菲法德尔菲法(Delphitechnique)是一种专家评估技术,适用于在没有或没有足够的历史数据情况下,来评定软件采用不同的技术、新技术所带来的差异,但专家的水平及对项目的理解程度是工作中的关键点。2.COCOMO模型造性成本模型(COCOMO:constructivecostmodel)是一种精确、易于使用的基于模型的成本估算方法。它有分为基本COCOMO模型,中间COCOMO模型和详细COCOMO模型3.代码行度量方法4.功能点分析法5.面向对象软件的对象点方法PTR累积模型PTR累积模型Rayleigh模型软件项目过程的Rayleigh模型形状四、软件缺陷度量缺陷密度——软件缺陷在规模上的分布如:每KLOC或每个功能点(或类似功能点的度量——对象点、数据点、特征点等)的缺陷数缺陷率——缺陷在时间上的分布如:对应用软件的角度来说,90%以上的缺陷是在发布后两年内被发现出来。整体缺陷清除率在软件开发过程中发现的所有缺陷数/发现的总缺陷数阶段性缺陷清除率五、顾客满意度度量顾客满意度要素顾客满意度要素的内容技术解决方案质量、可靠性、有效性、易用性、价格、安装、新技术支持与维护灵活性、易达性、产品知识市场营销解决方案、接触点、信息管理购买流程、请求手续、保证期限、注意事项交付准时、准确、交付后过程企业形象技术领导、财务稳定性、执行印象软件组织的顾客满意度要素及其内容五、顾客满意度度量顾客满意度要素顾客满意度度量内容软件产品功能性、可靠性、易用性、效率性、可维护性、可移植性开发文档文档的构成、质量、外观、图表以及索引、用语项目进度以及交期交期的根据、进度迟延情况下的应对、进展报告技术水平项目组的技术水平、项目组的提案能力、项目组的问题解决能力沟通能力事件记录、格式确认、问题解答运用维护支持、问题发生时的应对速度、问题解决能力软件项目的顾客满意度要素及其内容软件度量的应用1)度量的目的是改进开发过程,提高产品质量2)塑造度量文化3)软件度量只针对项目、产品和过程而开展4)从小规模的简单的度量项目开始5)度量将在一定程度上增进对软件开发的理解、预测、评估、控制和改善6)根据项目实情加以具体实施7)通过数据共享增进信任,消除软件度量可能带来的误解8)度量应该简单易懂,从而降低沟通和实施成本
扩展质量度量的统计分析错误的根本原因来源于下面几个方面:说明不完整或说明错误(IES)与客户交流不够所产生的误解(MCC)故意与说明偏离(IDS)违反编程标准(VPS)数据表示有错(EDR)模块接口不一致(IMI)设计逻辑有错(EDL)不完整或错误的测试(IET)不准确或不完整的文档(IID)将设计翻译成程序设计语言中的错误(PLT)不清晰或不一致的人机界面(HCI)杂项(MIS)扩展1.5软件工程与软件测试软件测试工程师——金贵人才软件测试工程师,目前IT行业极端短缺的金贵人才,未来5年IT行业最炙手可热的高薪职位。中国软件业每年新增约20万测试岗位就业机会,而企业、学校培养出的测试人才却不足需求量的1/10,这种测试人才需求与供给间的差距仍在拉大。
软件测试——产品质量的保证软件测试——控制成本的关键软件测试——软件可靠性确认软件测试——让企业具备国际竞争的实力
1.5.1软件开发过程图1-2软件开发过程软件开发过程需求分析:
根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。这一阶段结束时,应提交软件需求规格说明(SRS)文档设计:
根据需求分析的结果,考虑如何在逻辑、程序上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗急救知识普及与技能提升
- 2026年成都纺织高等专科学校单招综合素质考试参考题库带答案解析
- 2026年常州纺织服装职业技术学院单招职业技能考试备考题库带答案解析
- 医疗护理团队管理与绩效评估
- 医疗健康产业与大数据
- 护理创新实践与案例研究
- 护理护理人员的职业素养与行为规范
- 财税专业涉税增值税课件
- 医院后勤人员职业形象礼仪
- 2026年湖南吉利汽车职业技术学院高职单招职业适应性测试模拟试题有答案解析
- 2024-2025学年广东省广州市越秀区九年级(上)期末化学试题及答案
- 光伏CAD基础知识培训课件
- 国家民用航空安全保卫质量控制方案
- 基于杜邦分析法的企业盈利能力分析-以格力电器为例
- WPF在医学影像三维显示中的应用-洞察及研究
- 汉服设计培训课件
- 2026届浙江省杭州市西湖区学军中学(紫金港校区)高三上学期9月月考英语试题
- 电厂氨使用安全培训课件
- 2025年供销社资产管理员招聘面试预测题及答题技巧
- 2025秋季学期国开电大法律事务专科《刑法学(2)》期末纸质考试名词解释题库珍藏版
- 2025-2030碳纤维复合材料成型设备技术发展与市场前景
评论
0/150
提交评论