您好,欢迎访问三七文档
第一章软件及其开发过程[教学目的]1、理解软件的含义2、了解软件开发过程[教学内容]1.1软件的含义1、软件概念①能够完成预定功能和性能的、可执行的指令(计算机程序);②使得程序能够适当地操作信息的数据结构;③描述程序的操作和使用的文档。④软件=程序+数据(库)+文档+服务2、软件组成①客户需求-CustomerRequirements②市场需求文档-MRD(MarketingRequirementDocument)③软件规格说明书-Specifications④技术设计文档–TechnicalDesignDocs⑤测试文档TestDocuments⑥在线帮助-Onlinehelp⑦产品发布注释-ReleaseNotes/ReadMe⑧产品软件包-Releasepackages3、软件特征软件是逻辑的、知识性的产品集合,是对物理世界的一种抽象,或者是某种物理形态的虚拟化。①软件是硬件的灵魂,硬件是软件的基础②软件,是智慧和知识的结晶③软件不会“磨损”,而是逐步完善.1.2软件开发过程的特性1.2.1软件开发的基本过程①需求分析:根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。②设计:根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。③编程:将设计转换成计算机可读的形式。④测试:对设计、编程进行验证和用户需求确认的过程⑤维护:维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。1.2.2软件开发过程模型瀑布模型原型模型快速应用开发(RAD)模型改进的V模型螺旋模型增量模型和迭代模型构件组装模型并发模型XP模型1.3软件测试的重要性1.3.1软件所带来的悲剧1、千年虫(缺陷问题)2、迪斯尼的圣诞节礼物(软件兼容性问题)3、美国航天局火星登陆事故(未进行集成测试)为什么会发生这些问题?没有足够测试缺乏测试平台不正确的测试环境缺少集成测试缺少性能测试缺少强度测试缺少可靠性测试……1.3.2测试的重要性“程序测试是为了发现错误而执行程序的过程”。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有“破坏性”,测试可视为分析、设计和编码3个阶段的“最终复审”,在软件质量保证中具有重要地位。第二章软件测试的基本概念和方法[教学目的]1、理解软件测试的基本概念2、理解软件测试在软件开发过程中的重要性3、理解软件测试的意义4、理解软件测试的基本方法和测试分类[教学内容]2.1软件质量软件质量就是客户满意度2.1.1软件质量的内涵1、构成:①软件产品的质量,即满足使用要求的程序②软件开发过程的质量,即能否满足开发所带来的成本、时间、风险等要求③软件在其商业环境中所表现出的质量即就品质的软件应该是相对的无产品缺陷或只有极少量的缺陷,能够准时递交给客户,所花费用在预算内,并且满足客户需求,是可维护的。2、特性:可说明性、有效性、易用性。广义的软件质量由产品质量、过程质量、商业环境质量三者决定。2.2软件缺陷(bug)软件缺陷:计算机系统或者程序中存在的任何一种破坏正常运行能力的问题、错误、或者隐藏的功能缺陷、瑕疵。缺陷会导致软件产品在某种程序上不能满足用户的需要。IEEE1983OFIEEEStandard729中对软件缺陷的定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背软件缺陷的主要类型:功能特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错数据结果不正确、精度不够用户不能接受的其它问题,如存取时间长,界面不美观等。软件缺陷严重性级别:①致命的(fatal):致命的错误,造成系统或应用程序崩溃、死机、系统悬挂,或造成数据丢失、主要功能完全缺失②严重的(critical):严重的错误,指功能或特性没有实现,主要功能部分缺失,次要功能完全缺失,或致命的错误声明。③一般的(major):不及严重的错误,不影响系统的基本使用,但没有很好地实现功能,没有达到预期的效果。④微小的(minor):小问题,对功能几乎没有影响⑤建议(suggestion)软件缺陷的状态:①激活状态②己修正状态③关闭或非渡海状态2.2.2软件缺陷的产生①技术问题②团队工作③软件本身2.2.3软件缺陷的构成图2-1软件缺陷构成示意图图2-2软件缺陷存在不同阶段分布图2-3软件缺陷随着时间带来越来越大的成本图2-4软件缺陷随着时间引起的成本曲线2.3软件测试的基本方法2.3.1软件测试的原则P292.3.2白盒测试和黑盒测试根据测试是针对系统的内部结构还是针对具体实现算法的角度,分为白盒测试和黑盒测试1、黑盒测试(black-box-texting)(功能测试/数据驱动测试)不管程序内部结构是什么,从用户出发,根据产品应该实现的实际功能和巳经定义好的产品规格验证产品所应该具有的功能是否实现,每个功能是不都能正常使用,是否满足用户的要求。图2-5黑盒测试方法示意图功能;用于软件确认测试①是否有不正确或遗漏了功能②在接口上,能否正确地接受输入数据,能否产生正确的输出信息③访问外部信息是否有错④性能上是否满足要求⑤界面是否错误,是否不美观⑥初始化和终止错误方法:等价类划分、边界值分析、错误推测法、因果图等2、白盒测试(white-box-texting)(结构测试或逻辑驱动测试)已知产品内部工作过程,清楚最终产生软件产品的计算机程序的结构和语句,按照程序内部的结构测试程序,测试程序内部的变量状态、逻辑结构、运行路径等,检验程序中的每条通路是否按规定正常进行。功能:用于软件验证方法:逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖)、基本路径测试、循环覆盖等思考:通过白盒测试的软件是否一定没有错误?原则:①保证每个模块中所有独立路径至少被使用一次②对所有逻辑值均测试为真假值③在上下边界及可操作范围内运行所有循环④检查内部数据结构以确保其有效性2.3.3静态和动态的方法根据程序是否运行,测试可以分为静态和动态测试静态测试:对模块的源泉代码进行研读,查找错误或悼念一些度量数据,并不需要对代码进行编译和仿真运行。①用人工检测②计算机辅助静态分析测试包括对软件产品的设计规格说明书的审查、对程序代码的阅读、审查动态测试:通过观察代码运行时的动作,来提供执行跟踪、时间分析,以及测试覆盖度方面的信息。2.3.4验证和确认(verification&validation)1、验证检验软件是否已经正确地实现了产品规格说明书所定义的系统功能和特性2、有效性确认保证所生产的软件可追溯到用户需求的一系列活动。确认过程提供证据表明软件是否满足系统需求,并解决相应问题3、两者区别验证:是否正确构造了软件,检验软件是否与设计规格说明书一致确认:是否构造了正确的软件,是否满足用户的真正需求2.3.5ALAC测试ALAC(act-like-a-cusomer)基于客户使用产品的知识开发出来的测试方法。用于功能测试图2-6ALAC测试方法的原理示意图ALAC测试方法适合特别的场合,如演示版、开发预算低,开发计划日程表紧等情况,降低测试成本,缩短测试时间,缺陷查找和改正针对客户最容易遇到的错误2.3.6自动化测试和随机测试自动化测试:通过工具自动动执行软件的测试可完成负载测试、性能测试、可靠性测试随机测试:模拟客户操作的随意性,进行大量的、自动化的随机测试,来发现今后用户可能会碰到的问题。2.3.7软件测试的误区①如果说发布出去的软件有质量问题,那是软件测试人员的错。②软件测试技术要求不高,至少比编程容易多。③有时间就多测试一些,来不及就少测试一些④软件测试是测试人员的事,与开发人员无关⑤根据软件开发瀑布模型,软件测试是开发的最后期的一个阶段2.4软件测试的分类和阶段2.4.1软件测试的分类1、按测试范围分类单元测试组件测试集成测试系统测试验收测试安装测试2、按测试目的分类正确性测试白盒测试黑盒测试性能测试可靠性测试强壮性测试异常处理测试负载测试安全性测试3、按测试对象分类单元测试组件测试模块测试程序测试系统测试文档测试4、按测试过程分类需求阶段的测试设计阶段的测试程序阶段的测试测试结果的评估安装测试验收测试测试变化5、其它测试技术和方法回归法压力法恢复测试安全测试兼容性测试2.4.2测试的阶段图2-7软件测试阶段示意图2.5软件测试的工作范畴软件测试工作范畴①软件测试工作的组织与管理制定测试策略、测试计划、确认所采用的测试方法与规范、控制测试进度、管理测试资源②测试工作的实施编制符合标准的测试文档,研制测试环境,与开发组织协作实现各阶段的测试活动软件测试工作的六个方面①测试组织和管理②测试计划PDCA模型:计划plan,执行do,检查check,措施action图2-9软件开发流程改进模型PDCA示意图制定测试策略分析测试的目标和指标、确定测试的对象和依据、明确测试的重点和所要采用的方法确定测试范围所需资源和日程安排资源:计算机硬件、软件、人力资源资源安排:项目经理、组长、系统工程师、测试设计工程师、资深测试工程师、一般测试工程师等,定义每个人的工作内容和责任日程安排:设置整个测试周期的项目进程,有产品设计规格说明书审查结束时间,测试计划初稿完成时间、设计测试用例的时间、测试计划/用例审查结束时间、单元测试完成的日期、系统测试完成的日期、测试全部完成的日期等。③设计测试用例测试用例是按一定顺序执行的,与测试目标相关的测试活动的描述,是确定怎样测试。包括测试环境、输入值、期望结果或标准测试用例的特性:可复用性、有效性、可管理性、继承性、基础性④测试实施⑤测试结果分析⑥测试评审与报告第三章质量保证与测试策略[教学目的]1、理解软件质量保证体系2、理解测试3、理解测试计划的重要性及其内容4、了解软件质量的可靠性评估[教学内容]3.1软件质量保证(softwarequalityassurance,SQA)3.1.1SQA概述1、SQA:通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程2、活动原则:确保SQA活动要自始至有计划的进行审查软件产品和活动是否遵守适用的标准、规程和要求并得到客观验证。SQA的活动和结果要保证全员参与,沟通顺畅。逐级解决不符合问题3.1.2SQA活动技术方法的应用正式技术评审的实施软件测试标准的执行修改的控制度量质量记录和记录保存1、SQA活动效果的影响因素知识结构:专业的技术,例如质量管理与控制知识、统计学知识等。经验依据:如果没有这些标准,就无法准确地判断开发活动中的问题,容易引发不必要的争论,因此组织应当建立文档化的开发标准和规程。全员参与:全员参与至关重要,高层管理者必须重视软件质量保证活动。把握重点:一定要抓住问题的重点与本质,尽可能避免陷入对细节的争论之中。2、SQA活动提出软件质量需求确定开发方案阶段评审测试管理文档化管理验证产品与相应文档和标准的一致致性建立测量机制记录并生成报告SQA策略以检测为重:产品制成之后进行检测,只能判断产品质量,不能提高产品质量。以过程管理为重:把质量的保证工作重点放在过程管理上,对制造过程中的每一道工序都要进行质量控制。以新产品开发为重:在新产品的开发设计阶段,采取强有力的措施来消灭由于设计原因而产生的质量隐患SQA与软件测试有什么关系和区别SQA是管理工作、审查对象是流程、强调以预防为主测试是技术工作、测试对象是产品、主要是以事后检查SQA指导测试、监控测试测试为SQA提供依据3.2测试策略3.2.1测试策略的概念测试策略通常是描述测试工程的总体方法和目标。描述目前在
本文标题:软件测试教案
链接地址:https://www.777doc.com/doc-7117402 .html