第6章 软件测试
- 格式:ppt
- 大小:1.88 MB
- 文档页数:88
软件工程第六版教学设计课程简介本课程是软件工程专业的核心课程,主要介绍软件工程的基本概念、基本过程、基本方法、基本工具和各个阶段的具体实践技术等,旨在培养学生学习和掌握软件工程开发和管理的能力。
课程内容第一章软件工程概述本章主要介绍软件工程的定义、历史、发展和意义,让学生了解软件工程的概况以及软件工程和其他工程的区别。
第二章软件生命周期模型本章主要介绍软件生命周期模型的构成、工作内容和各阶段的主要任务,让学生了解软件开发中的各个阶段,为后期开发和管理奠定基础。
第三章需求工程本章主要介绍需求工程的基本概念、技术和工具,以及如何对需求进行分析和验证,为后期开发提供正确有效的需求,让学生了解需求工程在软件开发中的重要作用。
第四章软件设计本章主要介绍软件设计的过程和方法,包括模块化设计、面向对象设计、结构化设计与数据流分析等,让学生掌握软件设计的能力和知识。
第五章软件测试本章主要介绍软件测试的原理、方法和技术,包括功能测试、性能测试和压力测试等,以及如何进行测试计划和测试用例设计,让学生掌握软件测试的重要性和技能。
第六章软件维护本章主要介绍软件维护的类型、过程和方法,包括正确性维护、完善性维护和适应性维护等,带领学生更好地理解和应用软件维护。
教学方法本课程采用理论授课与实践相结合的教学方法,理论部分主要通过讲解、课件演示和案例分析等方式进行教学,实践部分主要通过项目演练和动手实践等方式进行教学。
考核方式本课程考核方式主要采用闭卷考试和项目评分相结合的方式,其中闭卷考试占总分的60%,项目评分占总分的40%。
教材推荐《软件工程(第6版)》作者:Ian Sommerville总结本课程旨在培养软件工程专业学生的软件开发和管理能力,通过全面系统地介绍软件工程的概念、内容、方法和技术等方面知识,让学生深入理解软件工程,在实践中获得更加宝贵的经验和成长。
第一章软件测试基础课后习题答案1.什么是软件测试?软件测试发现一个应用从开始到结束时的错误,测试是一个过程。
(Glenford J.Myers 提出对软件测试的定义)测试是发现错误而执行的一个程序或系统的过程测试以发现故障为目的,是为了发现故障而执行程序过程2.软件测试涉及哪几个关键问题?软件测试的经济性原则谁来测试(who)测试什么(what)什么时候测试(when)怎样进行测试(how)测试的停止标准是什么(which)3.为什么说软件需求说明是软件故障的最大来源?软件需求是描述了系统有哪些功能,功能操作,性能如何等问题,是开发阶段的重要文档,也是后期软件开发的重要依据。
如果软件需求一开始就错了,在后面处理过程则会把错误放大,这样使得修复起来成本就是提升。
4.简述软件测试的复杂性和经济性。
复杂性1.完全测试是不现实的2.软件测试是有风险的3.杀虫剂现象4.缺陷的不确定性经济性软件测试是软件生命期中费用消耗最大的环节。
测试费用除了测试的直接消耗外,还包括其他的相关费用5.分析最近发生的软件质量事故,并简要分析产生的原因。
具体案例具体分子6.启动Windows计算器,输入“6,000-6=”(逗号不能少),观察计算结果,这是软件故障吗?为什么?这是软件故障中的界面缺陷。
由于无法输入逗号,无法进行输入,当做一个界面缺陷,因为不符合需求,原本是小数点变成了逗号。
7.软件测试应遵循哪些重要的原则或方针?1.完全测试程序是不可能的2.软件测试是有风险的3.测试无法找到隐藏的软件故障4.存在的故障数量与发现的故障数量成正比5.杀虫剂现象6.并非所有软件故障都能修复7.一般不要丢弃测试用例8.应避免测试自己编写的程序9.软件测试是一项复杂且具有创造性的和需要高度智慧的挑战性任务8.假定无法完全测试某一程序,那么在决定是否应该停止测试时应考虑哪些问题?在工作中,常用的停止测试标准有五类:测试超过了预定时间,停止测试执行了所有测试用例但没有发现故障,停止测试使用特定的测试用例方法作为判断测试停止的基础正面指出测试完成要求,如发现并修改70个软件故障根据单位是见查出故障数量决定是否停止测试9 . 假如星期一测试软件的某一功能时,每小时能发现一个新的软件故障,那么星期二会以什么频率发现软件故障?第一感觉就是与第一天(星期一)的一样,既然前一天发现的频率以每小时都有新的故障,说明软件的缺陷很高,所以第二天也可能有同样的频率。
软件测试流程及规范第1章测试准备工作 (4)1.1 测试需求分析 (4)1.2 测试计划编写 (4)1.3 测试资源准备 (4)第2章测试用例设计 (4)2.1 等价类划分法 (4)2.2 边界值分析法 (4)2.3 因果图法 (4)2.4 测试用例编写规范 (4)第3章测试执行与管理 (4)3.1 测试环境搭建 (4)3.2 测试用例执行 (4)3.3 缺陷跟踪与管理 (4)3.4 测试进度监控 (4)第4章功能测试 (4)4.1 正常流程测试 (5)4.2 异常流程测试 (5)4.3 边界条件测试 (5)4.4 数据验证测试 (5)第5章接口测试 (5)5.1 接口测试策略 (5)5.2 接口测试工具 (5)5.3 接口测试用例设计 (5)5.4 接口测试执行与结果分析 (5)第6章功能测试 (5)6.1 功能测试需求分析 (5)6.2 功能测试工具选择 (5)6.3 功能测试用例设计 (5)6.4 功能测试结果分析 (5)第7章安全测试 (5)7.1 安全测试概述 (5)7.2 安全测试策略 (5)7.3 安全测试工具 (5)7.4 安全测试执行与结果分析 (5)第8章自动化测试 (5)8.1 自动化测试概述 (5)8.2 自动化测试工具选择 (5)8.3 自动化测试脚本编写 (5)8.4 自动化测试执行与维护 (5)第9章测试团队管理 (5)9.1 测试团队组织结构 (5)9.3 测试团队沟通与协作 (5)9.4 测试团队培训与成长 (5)第10章测试过程改进 (6)10.1 测试过程评估 (6)10.2 测试过程改进策略 (6)10.3 测试过程改进工具 (6)10.4 测试过程改进实施 (6)第11章测试项目管理 (6)11.1 测试项目立项 (6)11.2 测试项目计划 (6)11.3 测试项目执行 (6)11.4 测试项目总结 (6)第12章测试规范与标准 (6)12.1 测试规范概述 (6)12.2 测试标准制定 (6)12.3 测试规范与标准的执行 (6)12.4 测试规范与标准的持续改进 (6)第1章测试准备工作 (6)1.1 测试需求分析 (6)1.1.1 收集需求文档 (6)1.1.2 分析需求 (6)1.1.3 确定测试范围 (6)1.2 测试计划编写 (7)1.2.1 确定测试目标 (7)1.2.2 制定测试策略 (7)1.2.3 编写测试计划 (7)1.3 测试资源准备 (7)1.3.1 测试环境 (7)1.3.2 测试工具 (7)1.3.3 测试数据 (7)1.3.4 测试人员 (7)1.3.5 测试文档 (7)第2章测试用例设计 (8)2.1 等价类划分法 (8)2.1.1 等价类的定义 (8)2.1.2 等价类的分类 (8)2.1.3 等价类划分的步骤 (8)2.2 边界值分析法 (8)2.2.1 边界值的概念 (8)2.2.2 边界值分析法的步骤 (8)2.3 因果图法 (8)2.3.1 因果图的概念 (9)2.3.2 因果图的构建 (9)2.4 测试用例编写规范 (9)第3章测试执行与管理 (9)3.1 测试环境搭建 (9)3.2 测试用例执行 (10)3.3 缺陷跟踪与管理 (10)3.4 测试进度监控 (11)第4章功能测试 (11)4.1 正常流程测试 (11)4.2 异常流程测试 (12)4.3 边界条件测试 (12)4.4 数据验证测试 (12)第五章接口测试 (13)5.1 接口测试策略 (13)5.2 接口测试工具 (13)5.3 接口测试用例设计 (13)5.4 接口测试执行与结果分析 (14)第6章功能测试 (14)6.1 功能测试需求分析 (14)6.2 功能测试工具选择 (15)6.3 功能测试用例设计 (15)6.4 功能测试结果分析 (15)第7章安全测试 (16)7.1 安全测试概述 (16)7.2 安全测试策略 (16)7.3 安全测试工具 (17)7.4 安全测试执行与结果分析 (17)第8章自动化测试 (18)8.1 自动化测试概述 (18)8.2 自动化测试工具选择 (18)8.3 自动化测试脚本编写 (18)8.4 自动化测试执行与维护 (19)第9章测试团队管理 (19)9.1 测试团队组织结构 (19)9.2 测试人员职责 (20)9.3 测试团队沟通与协作 (20)9.4 测试团队培训与成长 (20)第10章测试过程改进 (21)10.1 测试过程评估 (21)10.2 测试过程改进策略 (21)10.3 测试过程改进工具 (22)10.4 测试过程改进实施 (22)第11章测试项目管理 (22)11.1 测试项目立项 (23)11.3 测试项目执行 (23)11.4 测试项目总结 (23)第12章测试规范与标准 (24)12.1 测试规范概述 (24)12.1.1 测试规范的定义 (24)12.1.2 测试规范的作用 (24)12.2 测试标准制定 (24)12.2.1 测试标准的概念 (24)12.2.2 测试标准制定的原则 (24)12.2.3 测试标准的制定流程 (25)12.3 测试规范与标准的执行 (25)12.3.1 执行前的准备 (25)12.3.2 测试过程执行 (25)12.3.3 测试结果评估 (25)12.4 测试规范与标准的持续改进 (25)12.4.1 改进的意义 (25)12.4.2 改进的方法 (26)12.4.3 改进的流程 (26)第1章测试准备工作1.1 测试需求分析1.2 测试计划编写1.3 测试资源准备第2章测试用例设计2.1 等价类划分法2.2 边界值分析法2.3 因果图法2.4 测试用例编写规范第3章测试执行与管理3.1 测试环境搭建3.2 测试用例执行3.3 缺陷跟踪与管理3.4 测试进度监控第4章功能测试4.1 正常流程测试4.2 异常流程测试4.3 边界条件测试4.4 数据验证测试第5章接口测试5.1 接口测试策略5.2 接口测试工具5.3 接口测试用例设计5.4 接口测试执行与结果分析第6章功能测试6.1 功能测试需求分析6.2 功能测试工具选择6.3 功能测试用例设计6.4 功能测试结果分析第7章安全测试7.1 安全测试概述7.2 安全测试策略7.3 安全测试工具7.4 安全测试执行与结果分析第8章自动化测试8.1 自动化测试概述8.2 自动化测试工具选择8.3 自动化测试脚本编写8.4 自动化测试执行与维护第9章测试团队管理9.1 测试团队组织结构9.2 测试人员职责9.3 测试团队沟通与协作9.4 测试团队培训与成长第10章测试过程改进10.1 测试过程评估10.2 测试过程改进策略10.3 测试过程改进工具10.4 测试过程改进实施第11章测试项目管理11.1 测试项目立项11.2 测试项目计划11.3 测试项目执行11.4 测试项目总结第12章测试规范与标准12.1 测试规范概述12.2 测试标准制定12.3 测试规范与标准的执行12.4 测试规范与标准的持续改进第1章测试准备工作在进行软件测试前,充分的准备工作是保证测试工作顺利进行的关键。
第一章软件测试理论一、选择题1.软件测试的目的是C。
A.表明软件的正确性B.评价软件质量C.尽可能发现软件中的错误D.判定软件是否合格2.下面关于软件测试的说法,A是错误的。
A.软件测试是程序测试B.软件测试贯穿于软件定义和开发的整个期间C.需求规格说明、设计规格说明都是软件测试的对象D.程序是软件测试的对象3.某软件公司在招聘软件评测师时,应聘者甲向公司做如下保证:①经过自己测试的软件今后不会再出现问题;②在工作中对所有程序员一视同仁,不会因为在某个程序员编写的程序中发现的问题多,就重点审查该程序,以免不利于团结;③承诺不需要其他人员,自己就可以独立进行测试工作;④发扬咬定青山不放松的精神,不把所有问题都找出来,决不罢休;你认为应聘者甲的保证B。
A.①、④是正确的B.②是正确的C.都是正确的D.都不正确4.软件测试的对象包括B。
A.目标程序和相关文档B.源程序、目标程序、数据及相关文档C.目标程序、操作系统和平台软件D.源程序和目标程序5.导致软件缺陷的原因有很多,①-④是可能的原因,其中最主要的原因包括D。
①软件需求说明书编写的不全面,不完整,不准确,而且经常更改②软件设计说明书③软件操作人员的水平④开发人员不能很好的理解需求说明书和沟通不足A.①、②、③B.①、③C.②、③D.①、④二、简答题1.简述软件测试发展的历史及软件测试的现状。
参考答案:软件测试是伴随着软件的产生而产生的。
在软件行业发展初期,没有系统意义上的软件测试,更多的是一种类似调试的测试,测试用例的设计和选取也都是根据测试人员的经验随机进行的,大多数测试的目的是为了证明系统可以正常运行。
到了20世纪70年代以后,很多测试理论和测试方法应运而生,逐渐形成了一套完整的体系。
在产业界,从20世纪70年代后期到20世纪80年代中期,很多软件企业成立了QA或者SQA部门。
后来QA的职能转变为流程监控(包括监控测试流程),而测试(Testing)则从QA中分离出来成为独立的组织职能。
第六章软件测试的度量课后习题及答案1.什么是软件测试的度量?软件度量是一种度量技术,这种技术用来支撑过程、产品和服务中心工程和管理信息,以及支持过程、产品及服务的信息上的改进,从而量化地评定测试过程的能力和性能,提高测试过程的可视性,帮助软件组织管理及改进软件测试过程。
2.软件测试度量是出于什么原因才进行的?是不可或缺的吗?目的:(1)判断软件测试的有效性。
(2)判断软件测试的完整性。
(3)判断所测试的软件产品的质量。
(4)分析和改进软件测试过程。
重要性:(1)度量可以用来提高质量、产品生产力、以及服务,从而提高客户满意度;(2)对于管理组织很容易分析数据并且深入下去;(3)对过程不受控时有不同的度量方式作为监控者;(4)度量提供当前过程改进。
3.软件测试对工作人员有什么要求?对测试人员的工作如何进行评价?素质要求:(1)测试人员要有责任心。
(2)测试人员要有沟通能力。
(3)测试人员要有团队合作精神。
(4)测试人员要有耐心、细心和信心。
(5)测试人员要时时刻刻保持怀疑态度,并且有软件缺陷预防的意识。
(6)测试人员要有不断学习的能力。
技能要求:(1)业务知识。
(2)产品设计知识。
(3)软件架构知识。
(4)统一建模语言(Unified Modeling Language, UML)o(5)测试工具。
(6)不同的测试手段和测试工具。
(7)开发工具。
(8)用户心理学。
(9)界面设计中的3种模型。
(10)人机交互认知心理学。
(11)编程技能。
(12)脚本语言。
(13)文档能力。
评价:(1)利用软件缺陷数量来考核测试效率。
如果在考核过程中发现的漏洞越多,那么说明这个测试人员的测试效率越高,测试能力越强。
(2)发现软件缺陷数量的多少并不能完全证明测试人员的能力。
但是如果把软件缺陷数量加上一些前置条件(如软件缺陷的严重程度),就会有一定的说明意义。
4.软件测试的度量有什么现实的应用?1、对测试人员能力的评价2、对软件缺陷进行定性评估3、撰写软件缺陷报告4、统计测试的覆盖率5.软件缺陷综合评价模型包括哪6个方面?测试过程、数量、定量、质量、定性、测试人员6.代码行覆盖率如何计算?功能覆盖率如何计算?数据库覆盖率如何计算?代码行覆盖率=(已执行测试的代码行/总的代码行)X100%功能模块覆盖率=已执行测试的功能模块数/总的功能模块数Xl00%数据库覆盖率=SQL中出现的数据库的对象数/数据库总的对象数XlO0%7.在表6・12所示的例子中,尝试计算脚本编写用时是多少?脚本编写用时=Io小时,ASP=25∕10=2.5, 即自动化测试脚本生产率=2.5 (操作/小时)8.软件测试度量涉及哪几个关键问题?软件测试的度量包括对软件测试产出物的测量,以及软件测试过程的测量。
本书习题参考答案第1章软件测试概述1. 软件具有几个特点,请详细说明。
软件具有8个特点:(1) 软件是一种逻辑实体,而不是具体的物理实体。
因而它具有抽象性。
(2) 软件的生产与硬件不同,它没有明显的制造过程。
对软件的质量控制,必须着重在软件开发方面下功夫。
(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
然而它存在退化问题,必须要对其进行多次的修改与维护。
(4) 软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。
为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5) 软件的开发至今尚未完全摆脱人工艺的开发方式。
(6) 软件本身是复杂的。
软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7) 软件成本相当昂贵。
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8) 相当多的软件工作涉及到社会因素。
许多软件的开发和运行涉及机构、体制及管理方式等问题,它直接影响到项目的成败。
2.软件的分类方法都有哪些?软件的分类方法有如下 4种:(1)按软件的功能分类(系统软件,支撑软件,应用软件)(2)按软件服务对象的范围分类(项目软件,市场软件)(3)按开发软件所需要的人力、时间以及完成的源程序行数分类。
(大型,小型,中型,微型)(4)按软件工作方式分类按软件的工作方式分为:实时处理软件、分时软件、交互式软件、批处理软件。
3. 软件测试的概念软件测试是软件工程中的一个环节,是开发项目整体的一部分。
软件测试是有计划有组织的,是保证软件质量的一种手段,它是软件工程中一个非常重要的环节。
因此,可以认为它是伴随软件工程的诞生而诞生的,伴随着软件复杂程度的增加、规模的增大,软件测试作为一种能够保证软件质量的有效手段,越来越受到人们的重视,软件测试最终目的是使产品达到完美。
4. 软件测试的方法有哪些?软件的测试方法有3种,即用试题测试、用新旧两个系统作平行处理测试和软件测试自动化工具测试。