边缘计算 教案 袁培燕_第1页
边缘计算 教案 袁培燕_第2页
边缘计算 教案 袁培燕_第3页
边缘计算 教案 袁培燕_第4页
边缘计算 教案 袁培燕_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《边缘计算》教案第1次课授课章节第1章软件缺陷(1.1软件、1.2软件质量)课型教室授课教师教学时数2课时教学目标1.了解:软件的基本概念、软件生命周期及常见的软件开发模型。2.理解:软件质量的定义、标准及常见的软件质量模型(McCall、Boehm、ISO9126、ISO25010)。3.应用:能够根据实际需求选择合适的开发模型和质量模型。教学方法PPT讲解+案例分析+课堂讨论教学重点1.软件开发模型的特点及适用场景(瀑布模型、原型模型、增量模型、螺旋模型)。2.软件质量的定义及质量模型的分类与核心特性。教学难点不同质量模型的对比及其在实际项目中的应用。教学程序设计与教学内容处理师生互动设计1.导入(10分钟)通过一个软件缺陷导致系统故障的案例(如“商品详情页面加载缓慢”)引入课程主题。2.1.1软件(30分钟)软件的定义与组成。软件生命周期及各阶段活动。常见开发模型(瀑布、原型、增量、螺旋)的对比与适用场景。3.1.2软件质量(30分钟)软件质量的定义(IEEE、ISO标准)。质量模型:McCall模型、Boehm模型、ISO9126模型、ISO25010模型的核心特性与区别。4.课堂讨论(20分钟)分组讨论:选择一个实际项目,分析其适用的开发模型和质量模型。5.总结与作业布置(10分钟)总结本次课内容。作业:阅读教材1.3节,思考软件缺陷的产生原因及预防措施。教学反思第2次课授课章节第1章软件缺陷(1.3认识软件缺陷、1.4软件缺陷属性、1.5软件缺陷)课型教室授课教师教学时数2课时教学目标1.了解:软件缺陷的定义、类型及生命周期。2.理解:缺陷产生的原因、修复成本及预防方法。3.应用:能够编写规范的缺陷报告。教学方法PPT讲解+实例演示+实践练习教学重点1.软件缺陷的分类及严重程度、优先级的定义。2.缺陷处理流程及修复成本分析。教学难点缺陷报告的编写规范与实际应用。教学程序设计与教学内容处理师生互动设计复习与导入(10分钟)回顾上节课内容,提问软件开发模型与质量模型的核心要点。1.3认识软件缺陷(20分钟)软件缺陷的定义(IEEE标准)及常见类型(功能、性能、安全性、兼容性)。缺陷产生的原因(需求不明确、编码问题、工期短等)及Boehm修复成本法则1.4软件缺陷属性(20分钟)缺陷属性:标识、类型、严重程度、优先级、状态、起源等。实例分析:根据表格13至18,分析缺陷的严重性与优先级的关系。1.5软件缺陷报告(20分钟)缺陷报告的编写规则与核心内容(标题、重现步骤、预期结果、实际结果等)。实例演示:例11“商品详情页面加载缓慢”缺陷报告的编写。实践练习(15分钟)学生分组模拟测试场景,编写一份缺陷报告并展示。总结与作业布置(5分钟)总结本章核心内容。作业:选择一个实际软件(如某APP或网站),发现并记录一个缺陷,编写完整的缺陷报告。教学反思1.通过案例分析和实践练习,学生对软件缺陷的理解更加直观。2.部分学生对质量模型的抽象概念掌握较慢,需增加更多实例辅助讲解。3.缺陷报告编写练习效果良好,后续可增加更多实际项目案例。备注:根据学生反馈调整教学进度,重点强化实践环节。第3次课授课章节第2章软件测试基础(2.1软件测试概述、2.2软件测试分类、2.3常见测试模型)课型教室授课教师教学时数2课时教学目标1.了解:软件测试的定义、发展历程及基本原则。软件测试的分类方法(阶段、方法、执行方式、类型等)。常见测试模型(V模型、W模型、H模型、X模型)的特点及适用场景。2.理解:软件测试在软件质量保障中的作用。测试生命周期各阶段的关键活动(测试计划、用例设计、执行、报告)。不同测试模型的优缺点及实际项目中的选择依据。3.应用:能够根据项目需求选择合适的测试分类方法。能够结合测试模型设计简单的测试流程。教学方法1.PPT讲解:系统讲解理论知识点,辅以图表对比(如黑盒/白盒测试区别表)。2.案例分析:通过实际案例(如“电商系统登录功能测试”)分析测试分类和模型应用。3.课堂讨论:分组讨论不同测试模型的适用场景。4.实践练习:模拟测试场景,设计测试用例并选择测试模型。教学重点软件测试的分类方法(阶段、方法、执行方式)。测试原则(如二八定律、GoodEnough原则)的实际应用。V模型和W模型的核心思想及适用场景。教学难点不同测试模型的对比与选择依据。测试生命周期各阶段的衔接与实施。静态测试与动态测试的协同应用。教学程序设计与教学内容处理师生互动设计1.导入(10分钟)案例引入:展示“某银行系统因未进行性能测试导致高并发崩溃”的新闻,提问:“如何通过测试避免此类问题?”目标说明:介绍本章学习内容与目标。2.2.1软件测试概述(20分钟)定义与发展:对比狭义(Myers反向思维)与广义(验证+确认)测试定义。时间轴梳理测试发展史(从调试到AI测试)。测试原则:结合示例1(1~100输入测试)讲解“测试不能穷尽”。分组讨论“二八定律”在项目中的体现。3.2.2软件测试分类(20分钟)(1)阶段分类:对比单元测试(开发者)与验收测试(用户)的目标差异。(2)方法分类:学生分三组模拟黑盒、白盒、灰盒测试场景。(3)执行方式:通过代码片段演示静态分析(如SonarQube)与动态测试(如JUnit)。4.2.3常见测试模型(20分钟)(1)模型对比:图表对比V/W/H/X模型的结构与交汇点(如V模型的线性vs.X模型的迭代)。(2)场景分析:给出敏捷开发项目案例,讨论应选择哪种测试模型。5.实践练习(10分钟)(1)任务:每组选择一个简单功能(如“注册页面”),设计测试分类策略并选择测试模型。(2)展示与点评:各组分享方案,教师点评合理性。6.总结与作业(10分钟)(1)总结:回顾测试分类、原则及模型的核心要点。(2)作业:阅读教材2.4节(测试生命周期),绘制测试阶段流程图。选择一个开源项目,分析其测试分类方法并提交报告。教学反思1.预期效果:(1)通过案例和练习增强学生对测试分类和模型的理解。(2)动态测试的代码演示可能需提前准备环境。2.改进点:(1)对抽象概念(如H模型交汇点)需增加图示或动画辅助讲解。(2)根据学生反馈调整模型对比的深度。第4次课授课章节第2章软件测试基础(2.4软件测试实施)课型教室授课教师教学时数2课时教学目标1.了解:软件测试过程的五个关键阶段(需求分析、计划、设计、执行、评审与报告)。测试环境的组成及不同类型(开发、测试、预生产、生产环境)。2.理解:测试生命周期的整体流程及其在质量保障中的作用。测试计划的核心要素(What、When、Who、Where、Why、How)。测试用例的设计原则与组成要素。3.应用:能够根据需求文档编写简单的测试用例。能够设计测试计划的基本框架。教学方法1.PPT讲解:结合图表展示测试生命周期和测试计划模板。2.案例分析:通过示例21(电商注册功能测试用例)和示例3(测试报告)分析实际应用。3.小组讨论:分组设计测试用例并模拟测试环境配置。4.实践练习:编写测试计划框架或测试报告片段。教学重点测试过程的五个阶段及其关键活动。测试用例的设计方法(边界值、等价类划分等)。3.测试报告的组成及缺陷分类(如BUG01的严重性评估)。教学难点测试计划的六要素(5W1H)的实际应用。2.测试环境与生产环境的差异及模拟策略。教学程序设计与教学内容处理师生互动设计1.导入(10分钟)提问互动:“如果让你测试一个登录功能,你会关注哪些方面?”引导学生思考测试的全面性(功能、性能、兼容性等)。2.2.4.1软件测试过程(25分钟)(1)需求分析:通过“用户注册需验证邮箱格式”案例说明正向/负向测试。(2)测试计划:展示示例2的目录结构,强调“5W1H”。(3)测试设计:分组讨论表22(注册功能测试用例)的覆盖度。3.2.4.4测试用例与2.4.5测试环境(25分钟)测试用例设计:(1)学生分组为“购物车功能”设计测试用例(需包含边界值,如商品数量为0或999)。(2)展示优秀案例并点评。测试环境对比:(1)角色扮演:开发人员(开发环境)vs测试人员(测试环境)的配置差异。4.2.4.6测试报告(30分钟)(1)报告分析:逐项解析示例3的测试报告(如BUG01的严重性判定依据)。(2)模拟演练:给定“支付模块测试数据”,学生填写简化的测试报告表格。5.实践与总结(10分钟)综合任务:每组选择一个功能模块(如“搜索功能”),完成:(1)测试计划大纲(含资源、进度)。(2)测试用例设计。6.总结与作业:作业:完善课堂设计的测试用例,并撰写200字测试环境配置说明。教学反思1.预期效果:通过用例设计和环境对比,强化理论与实践结合。2.改进点:对测试计划“5W1H”需增加企业真实案例辅助理解。第5次课授课章节第3章黑盒测试(3.1黑盒测试概述、3.2基于直觉和经验的方法、3.3等价类划分法)课型教室授课教师教学时数2课时教学目标1.了解:黑盒测试的基本概念、特点及其在软件测试中的重要性。基于直觉和经验的测试方法(如错误推测法)的应用场景及优缺点。2.理解:等价类划分法的核心原则及设计测试用例的步骤。有效等价类与无效等价类的区别及其在测试中的作用。3.应用:能够根据需求文档,使用等价类划分法设计测试用例。能够结合错误推测法,补充测试用例以提高覆盖率。4.分析:通过案例分析(如三角形问题、报表日期验证),评估不同黑盒测试方法的有效性。教学方法1.PPT讲解:通过图表对比黑盒测试与其他测试方法的区别,展示等价类划分表的设计。2.案例分析:结合示例31(报表日期)和示例32(三角形问题)分析等价类划分法的实际应用。3小组讨论:分组设计电商平台“搜索功能”的测试用例(需包含有效/无效等价类)。4.实践练习:模拟错误推测法,针对“用户登录功能”提出潜在缺陷并设计测试用例。教学重点等价类划分法的原则及测试用例设计步骤(有效/无效等价类覆盖)。错误推测法的应用场景及推测依据(如程序员常犯错误、用户操作习惯)。3.黑盒测试的“用户视角”特性及其与白盒测试的区别。教学难点复杂输入条件(如闰年判断)下的等价类划分。2.边界值与等价类划分法的结合应用。教学程序设计与教学内容处理师生互动设计1.导入(10分钟)提问互动:“如果测试一个登录功能时不看代码,你会从哪些方面设计测试?”引出黑盒测试的“输入输出”核心思想。2.3.1黑盒测试概述(20分钟)(1)对比黑盒测试与白盒测试的差异(代码访问、测试范围、使用阶段)。(2)强调黑盒测试的“用户视角”特性(如电商平台支付功能测试)。(3)案例讨论:展示“机票预订系统”功能需求,学生分组列举可能的测试点。3.3.2基于直觉和经验的方法(15分钟)(1)错误推测法:讲解推测来源(程序员错误、用户操作、复杂逻辑)及示例(如电商结算模块折扣计算错误)。(2)分组任务:针对“文件上传功能”,推测3个潜在缺陷并设计对应测试用例。(3)局限性讨论:分析错误推测法的主观性,强调需结合系统化方法(如等价类划分)。4.3.3等价类划分法(40分钟)(1)原则与步骤:通过示例1(输入范围50<=x<=200)和示例3(手机号验证)讲解有效/无效等价类划分。(2)实战演练:①学生分组设计“学生成绩录入系统”(输入范围0\~100)的等价类表。②展示并点评优秀案例(如边界值99、100、101的处理)。综合应用:分析三角形问题(表34),讨论如何补充边界值(如A=1,B=1,C=2)。5.总结与作业(15分钟)(1)知识梳理:黑盒测试方法的选择依据(需求明确性、时间资源等)。等价类划分法的“代表数据”原则。(2)作业布置:①为“用户注册功能”(需验证邮箱、密码复杂度)设计等价类表及测试用例。②阅读教材3.4节(边界值分析法),对比其与等价类划分法的异同。教学反思1.预期效果:通过电商案例和三角形问题,学生能掌握等价类划分法的实际应用。错误推测法的分组练习增强对经验性测试的理解。2.改进点:对复杂等价类(如日期闰年)需增加图示辅助讲解。根据学生课堂反馈调整测试用例设计的深度。第6次课授课章节黑盒测试(3.4边界值分析法、3.5决策表法)课型教室授课教师教学时数2课时教学目标1.了解:边界值分析法的核心思想及其在测试中的重要性。决策表法的基本概念、组成结构及适用场景。2.理解:边界值分析法的设计原则(弱边界与强边界)。决策表的构建步骤(条件桩、动作桩、规则简化)。3.应用:能够针对数值、字符串、日期等输入设计边界值测试用例。能够根据业务逻辑(如登录功能、三角形问题)构建决策表并生成测试用例。4.分析:对比边界值分析法与等价类划分法的异同及互补性。评估决策表法在复杂逻辑场景中的优势与局限性。教学方法1.PPT讲解:通过图表展示边界值分析法的测试用例设计(如图31、图32)。2.案例分析:结合例33(报表日期)和例35(用户登录)演示决策表法的实际应用。3.小组讨论:分组设计“订单支付功能”的边界值测试用例(如金额范围、支付方式)。4.实践练习:模拟三角形问题(例36),完成决策表优化并生成测试用例。教学重点边界值分析法的设计原则(如略小于最小值、略大于最大值)。决策表的四个组成部分(条件桩、动作桩、条件项、动作项)及规则简化。3.边界值与等价类划分法的结合应用。教学难点1.强边界值分析法中多变量组合的测试用例设计。2.决策表法在条件数量较多时的规则合并策略。教学程序设计与教学内容处理师生互动设计1.导入(10分钟)案例提问:“如果测试一个年龄输入框(范围1~120岁),你会测试哪些值?为什么?”引导学生思考边界值(如0、1、2、119、120、121)的重要性。2.3.4边界值分析法(35分钟)(1)概念讲解:弱边界(4n+1)与强边界(6n+1)的区别及适用场景。数据类型对应的边界值(字符串长度、日期范围、集合元素)。(2)实战演练:学生分组为“文件上传功能”(限制1~10MB)设计强边界测试用例(如0.99MB、1MB、5MB、10MB、10.01MB)。展示例34(三角形问题)的测试用例表37,讨论边界值覆盖的全面性。3.3.5决策表法(45分钟)(1)组成与步骤:通过图33说明决策表的四个部分,结合例35(用户登录)展示表38至表310的优化过程。(2)分组任务:给定“机票预订系统”规则(如会员等级、折扣条件),构建决策表并合并相似规则。(3)难点解析:讨论决策表法在条件过多时的解决方案(如分模块测试、工具辅助)。4.综合对比与总结(10分钟)方法对比:对比边界值分析法、等价类划分法、决策表法的适用场景及互补性。5.作业布置:(1)为“密码重置功能”(需验证旧密码、新密码复杂度)设计边界值及决策表测试用例。(2)分析决策表法在“电商优惠券系统”中的应用,提交优化后的决策表。教学反思1.预期效果:通过文件上传和机票预订案例,学生掌握边界值与决策表的实际应用。决策表的规则合并练习提升逻辑分析能力。2.改进点:对复杂决策表(如例36)需增加分步演示。根据学生反馈调整边界值设计的实操时间。第7次课授课章节第3章黑盒测试(3.6因果图法)课型教室授课教师教学时数2课时教学目标1.了解:因果图法的基本概念及其在测试中的作用。因果图中原因与结果之间的四种关系(恒等、非、与、或)。2.理解:原因之间的五种约束关系(互斥、包含、唯一、要求、屏蔽)。因果图法设计测试用例的步骤(识别原因与结果→画因果图→转换为决策表→生成测试用例)。3.应用:能够根据需求文档绘制因果图,并转换为决策表。能够针对复杂逻辑场景(如ATM取款、订单提交)设计因果图测试用例。4.分析:评估因果图法在多条件组合测试中的优势与局限性。教学方法1.PPT讲解:通过图示展示因果图的四种基本关系和五种约束关系。2.案例分析:结合例37(ATM取款)和例38(订单提交)演示因果图法的实际应用。3.小组讨论:分组设计“用户注册功能”的因果图(需验证邮箱、密码、同意协议等条件)。4.实践练习:模拟“机票预订系统”的支付逻辑,完成因果图到测试用例的转换。教学重点1.因果图的四种基本关系(恒等、非、与、或)及其图形表示。2.因果图法设计测试用例的完整步骤(因果图→决策表→测试用例)。3.因果图法在复杂逻辑场景(如例38)中的适用性分析。教学难点1.原因之间的约束关系(如屏蔽、要求)的实际应用。2.多条件组合下因果图的优化与规则简化。教学程序设计与教学内容处理师生互动设计1.导入(10分钟)提问互动:“如果测试一个功能需要同时满足多个条件(如登录需验证用户名、密码、验证码),如何系统化设计测试用例?”引出因果图法的核心思想——处理多条件逻辑依赖。2.3.6.1因果图(40分钟)(1)基本关系讲解:通过示例8~11(恒等、非、与、或)对比四种关系的差异(如图35至图38)。(2)随堂练习:学生分组为“文件删除功能”(需确认框+管理员权限)绘制因果图。(3)约束关系解析:结合示例12~16(互斥、包含、唯一等)分析条件间的依赖(如图39至图313)。(4)案例讨论:分析“支付方式选择”中互斥约束(支付宝/微信/信用卡)的测试覆盖。3.3.6.2设计测试用例(40分钟)步骤演示:(1)识别原因与结果:以例37(ATM取款)为例,填写表。(2)画因果图:展示图3-14的绘制过程,强调C1(密码正确)与C2(余额充足)的“与”关系。(3)转换决策表:解析表317的生成逻辑(3条规则对应3个测试用例)。(4)分组任务:给定“会议室预订系统”(需验证时间冲突、权限、设备需求),完成因果图到测试用例的转换。4.总结与作业(10分钟)知识梳理:(1)因果图法适用于多条件、强逻辑依赖的场景,但需注意条件组合爆炸问题。(2)对比决策表法:因果图更直观展示条件关系,决策表更便于生成用例。作业布置:(1)为“密码修改功能”(需验证旧密码、新密码复杂度、确认密码)设计因果图及测试用例。(2)阅读教材3.7节(正交试验法),思考其与因果图法的异同。教学反思1.预期效果:通过ATM和订单案例,学生掌握因果图的绘制与转换技巧。约束关系的分组讨论增强对复杂逻辑的理解。2.改进点:对“屏蔽”关系(示例16)需增加实际场景演示。根据学生反馈调整因果图绘制的实操时间。第8次课授课章节3.7正交试验法课型教室授课教师教学时数2课时教学目标了解:正交试验法的基本概念、正交表及相关术语。2.理解:正交试验法的原理、正交表的特性、设计测试用例的步骤。3.应用:能够运用正交试验法,针对具体问题设计测试用例。教学方法PPT讲解+案例分析+实例演示+课堂练习教学重点正交表表示法,正交表的概念和性质,常见的正交表。确定因子和水平,选择合适的正交表,映射变量值到正交表,根据正交表设计测试用例。教学难点选择合适的正交表。将实际问题中的因子和水平正确地映射到正交表中。教学程序设计与教学内容处理师生互动设计导入(10分钟)通过一个组合测试的案例引入,说明传统测试方法的局限性,引出正交试验法的优势。3.7.1正交表(50分钟)正交表(OrthogonalArray,OA)是一种用于设计实验和测试的数学工具,通过将多个因素的不同水平(或条件)组合在一起,生成具有均衡和对称特性的实验设计表。在软件测试中,当多个输入条件有多个可能的取值时,通过使用正交表,可以确保每个条件的所有可能组合都被测试,同时又避免了组合测试中大量冗余的测试用例。1.正交表表示法正交表通常采用Ln(mk)的形式来表示,其中,L代表正交表、n表示正交表的行数、即试验的总次数,k(称为因子或因素)表示正交表的列数、即试验中需要考虑的因素个数,m(称为水平)表示各因素的水平数、即每个因素在试验中可取的不同值的个数。在软件测试中,行数(n)代表测试用例的数量,因子(k)代表影响软件运行结果的输入条件,水平(m)代表每个输入条件可能取的不同值的个数。2.常见正交表正交表分为等水平正交表和混合型正交表,其中等水平正交表是指各列水平数相同,例如:L4(23)、L8(27)、L9(34)、L16(45)、L25(56)等。混合型正交表是指各列的水平数不相等,例如:L8(24×41)、L12(24×31)、L16(44×23)等。例如正交表L4(23),“4”表示4次试验即4行,“3”表示3个因素即3列,“2”表示每个因素有2种水平即2种取值,如表3-22所示。表3-22L4(23)正交表试验号列号1231111212232124221例如正交表L8(24×41),“8”表示8次试验即8行,“24”表示有4列是2水平,“41”表示1列是4水平(1可以省略不写),如表3-23所示。表3-23L8(24×41)正交表试验号列号123451111112122223211224222115312126321217412218421123.正交表性质正交表具有“均衡分散性”和“整齐可比性”这两个特点。其中,“均衡分散性”确保了各种因素的不同取值能够均匀分布,从而最大程度减少测试的偏差;“整齐可比性”使得各因素组合之间具有良好的对比性,便于分析测试结果的影响和规律。①均衡分散性:每一列中,不同的数字(代表不同的水平)出现的次数相等。例:L4(23)正交表中,任何一列都有“1”与“2”,且任何一列中“1”、“2”出现的次数相等,均为2次。②整齐可比性:在任意两列中,所有可能的数字对(不同因素水平的组合)出现的次数也相等。例:L4(23)正交表中,任意两列有序对共4种,即(1,1)、(1,2)、(2,1)、(2,2),每种数字对出现次数均为1次。3.7.2设计测试用例在设计测试用例的过程中,需要从大量的试验点中挑选出适当且具有代表性的点,作为测试数据。根据输入条件的数量以及每个条件的取值数量,选择合适的正交表进行测试用例设计。具体设计测试用例步骤如下描述。①确定因子和水平从多个角度分析所有对程序运行结果有影响的因子,充分利用等价类、边界值分析每个因子的水平数量。②选择合适的正交表只有特定的因子数和水平数的组合才有对应的正交表。所以在实际测试时,找最贴近的正交表(正交表的因子数和水平数一般要大于实际的因子数和水平数),即选择行数最少的且至少满足因子数和水平数的正交表。③映射变量值到正交表因子数和水平数正好和正交表的状态数相等,那么此时只需要直接替换正交表中的值即可;当正交表列数大于实际因子数时,在映射因子时直接删掉正交表中其中一列即可;水平数多于正交表中的状态数时,需要先将某些水平合并,代入正交表中,然后将合并的展开;水平数少于正交表的状态数,那么将正交表中多出来的状态使用实际中任意值替换即可。④根据正交表设计测试用例正交表中的每一行将对应每一条测试用例,将正交表中的数字映射为对应测试因子的水平值。例3-9:测试手机解锁功能时,需要考虑3个影响解锁成功与否的关键因素,即解锁方式、手机品牌和操作系统版本。解锁方式:是密码、指纹或面部识别。手机品牌:苹果、三星、小米。操作系统版本:如不同版本的Android(旧版、新版、测试版)或iOS(旧版、新版、Beta版)。解析:对手机解锁功能进行测试,其主要影响因素及相应取值列于表3-24中。表3-24测试手机解锁功能的因子水平表因子水平(取值)A:解锁方式密码(1)、指纹(2)、面部识别(3)B:手机品牌苹果(1)、三星(2)、小米(3)C:操作系统版本旧版(Android10/iOS14)(1)、新版(Android12/iOS16)(2)、测试版(Beta)(3)根据表3-24可知,该试验包含3个因子(A、B、C),每个因子有3个水平。因此,选用L9(34)正交表,其中多出的1列可用于误差分析。由于正交表的任意两列之间均保持正交关系,在不进行误差分析的情况下,可取其中3列,构建L9(3³)正交表,如表3-25所示。表3-25测试手机解锁功能的正交表行列ABC1密码苹果旧版2密码三星新版3密码小米测试版4指纹苹果新版5指纹三星测试版6指纹小米旧版7面部识别苹果测试版8面部识别三星旧版9面部识别小米新版根据表3-25中的正交表,共设计了9个测试用例,具体测试用例见表3-26。表3-26测试手机解锁功能的用例表用例ID输入预期结果解锁方式手机品牌操作系统版本TC1密码苹果旧版解锁成功TC2密码三星新版解锁成功TC3密码小米测试版解锁成功TC4指纹苹果新版解锁成功TC5指纹三星测试版解锁成功TC6指纹小米旧版解锁成功TC7面部识别苹果测试版解锁成功TC8面部识别三星旧版解锁成功TC9面部识别小米新版解锁成功所有因素的各个水平值在测试用例中至少出现一次,并且两两组合都得到了覆盖。在确保测试覆盖率的同时,大幅减少了测试成本,提高了测试效率。原始情况下需要3×3×3=27组测试,但正交表法仅需9组,减少了66.7%的测试量。例3-10:要测试一个网站的用户登录功能时,影响因素有4个,即浏览器、操作系统、网络环境和账号状态。浏览器(A):Chrome(1)、Firefox(2)、Edge(3)。操作系统(B):Windows(1)、macOS(2)。网络环境(C):WiFi(1)、5G(2)。账户状态(D):正常(1)、被锁定(2)。解析:由于因子A具有3个水平,而因子B、C、D各有2个水平,因此需选择一个能够容纳1个三水平因子和3个二水平因子的正交表。为此,选用L12(24×3)正交表,其中多出的E列可用于误差分析,具体设计见表3-27。表3-27测试用户登录功能的正交表行列ABCDE1ChromeWindowsWiFi正常12ChromeWindowsWiFi被锁定23ChromemacOS5G正常24ChromemacOS5G被锁定15FirefoxWindows5G正常16FirefoxWindows5G被锁定27FirefoxmacOSWiFi被锁定28FirefoxmacOSWiFi正常19EdgeWindows5G正常210EdgeWindowsWiFi被锁定111EdgemacOSWiFi正常212EdgemacOS5G被锁定1根据表3-27的正交表,共需设计12个测试用例,具体测试用例设计详见表3-28。表3-28测试用户登录功能的测试用例表用例ID输入预期结果浏览器操作系统网络环境用户状态TC1ChromeWindowsWiFi正常登录成功TC2ChromeWindowsWiFi被锁定登录失败TC3ChromemacOS5G正常登录失败TC4ChromemacOS5G被锁定登录成功TC5FirefoxWindows5G正常登录成功TC6FirefoxWindows5G被锁定登录失败TC7FirefoxmacOSWiFi被锁定登录失败TC8FirefoxmacOSWiFi正常登录成功TC9EdgeWindows5G正常登录失败TC10EdgeWindowsWiFi被锁定登录成功TC11EdgemacOSWiFi正常登录失败TC12EdgemacOS5G被锁定登录成功正交试验法适用于多因子多水平组合测试,可以大幅减少测试用例数量,同时确保所有关键组合的覆盖。在实际测试中,可以结合边界值分析、等价类划分等方法设计测试用例。教学反思优点:内容组织清晰,由浅入深,循序渐进。结合实例讲解,便于学生理解和掌握。课堂练习可以帮助学生巩固知识,提高应用能力。改进方向:实例可以更加丰富,覆盖更多类型的场景。可以引入一些在线工具,帮助学生快速生成正交表,提高效率。可以鼓励学生分享自己的设计思路和遇到的问题,促进互动交流。第9次课授课章节3.8场景法课型教室授课教师教学时数2课时教学目标了解:场景法的基本概念和关键要素,包括事件流(基本、备选、异常)和场景的定义。理解:场景法在黑盒测试中的作用,以及如何通过模拟用户场景设计测试用例。应用:能够根据需求描述,识别事件流并构建场景,最终设计有效的测试用例。教学方法PPT讲解+案例分析+小组练习+课堂讨论教学重点场景法的核心概念:事件流(基本、备选、异常)和场景。根据需求描述识别事件流和构建场景的方法。设计场景法测试用例的步骤:识别事件流,生成场景,设计测试用例。教学难点区分和识别不同类型的事件流(基本、备选、异常)。如何根据复杂的需求描述,全面且准确地构建场景。避免场景设计中的冗余,确保测试用例的有效性。教学程序设计与教学内容处理师生互动设计1.复习与导入(10分钟)回顾黑盒测试的基本概念,并引入场景法的概念,强调其模拟用户行为的重要性。通过一个实际生活中的场景(例如:乘坐公交车),引导学生思考如何分析和描述一个完整的过程。场景法(ScenarioTesting)通过模拟和描述用户在实际使用软件时可能遇到的各种具体场景,来设计和生成相应的测试用例。3.8.1关键要素场景法通过模拟真实用户的操作流程,帮助测试人员全面评估系统的功能和行为。场景法的关键要素包括事件流和场景。1.事件流事件流(EventFlow)描述了从事件触发开始到事件处理结束的一系列步骤或流程,通常包括基本事件流、备选事件流和异常事件流,三者对比见表3-29。表3-29三者对比类型定义示例基本事件流正常路径,无错误用户输入正确密码,成功登录备选事件流允许不同路径完成任务用户用验证码登录,成功登录异常事件流错误或异常情况用户输入错误密码,登录失败(1)基本事件流基本事件(BasicFlow)流就是指系统在正常情况下按照预期执行的一系列事件,形成的主要操作路径。它是用户完成任务的最直接、最简单、无任何差错的路径,按预期运行。(2)备选事件流备选事件流(AlternativeFlow)是对基本事件流的扩展,允许用户采取不同路径完成任务。(3)异常事件流异常事件流(ExceptionFlow)是指由于输入错误、系统故障或业务规则限制等情况导致无法完成任务的路径。部分异常可以恢复,部分异常会直接导致流程失败。2.场景场景(Scenario)是指系统在特定环境下,由特定用户执行一系列操作,最终达到某个目标的完整业务流程。一个场景可能包含基本事件流、备选事件流、异常事件流。例3-11:写出图3-16中所有可能场景。图3-16基本流和备选流解析:场景是用户在特定情况下完成某一目标或任务的具体操作流程,图3-16可设计出5个场景。场景1:基本流。场景2:基本流+备选流1+基本流。场景3:基本流+备选流1+备选流2+基本流。场景4:基本流+备选流1+备选流2+备选流3。场景5:基本流+备选流4。3.8.2设计测试用例场景法主要关注系统在不同使用场景下的行为,设计测试用例的步骤如下:①根据需求规格说明书,描述出基本事件流、备选事件流和异常事件流。②根据基本事件流、备选事件流和异常事件流,生成不同场景。③为每个场景设计对应的测试用例,并去掉冗余,给每一个用例确定具体的测试数据值。例3-11:测试用户登录功能。功能描述:允许用户使用账号和密码或验证码登录系统,并在身份验证成功后进入主页。如果输入账号密码有误,提示“用户名或密码错误”。如果连续5次输入错误,账号被锁定30分钟。解析:根据功能描述可知,该功能包含1条基本流、1条备选流和2条异常流。基本流:用户输入正确的账号密码,系统成功登录并跳转到主页。备选流:用户选择验证码登录方式,通过短信验证码完成身份验证。异常流1:用户输入错误的密码,系统提示“用户名或密码错误”。异常流2:用户输入错误密码5次,账号被锁定30分钟。根据上述事件流,共构成4个测试场景,包括:场景1(基本流)、场景2(备选流)、场景3(异常流1)和场景4(异常流2)。每个场景均对应一个测试用例,具体测试设计详见表3-30。表3-30登录功能测试用例用例ID测试场景前置条件测试步骤预期结果TC1场景1用户已注册1.访问登录页面2.输入正确的用户名和密码3.点击“登录”按钮登录成功,跳转至主页TC2场景2用户已注册并且手机号已绑定1.访问登录页面2.选择“验证码登录”方式3.输入手机号并获取验证码4.输入验证码,点击“登录”按钮登录成功,跳转至主页TC3场景3用户已注册1.访问登录页面2.输入错误的密码3.点击“登录”按钮提示“用户名或密码错误”TC4场景4用户已注册1.连续5次输入错误密码2.点击“登录”按钮账号被锁定30分钟,提示“账号已锁定”例3-12:测试在线购物下单功能。用户登录以后选择商品,将商品加入购物车,支付,查看订单。支付方式有2种,分别是余额支付和银行卡支付。解析:根据功能描述可知,该功能包含1条基本流、1条备选流和2条异常流。基本流:选择商品→将商品加入购物车→余额支付→查看订单备选流:选择商品→将商品加入购物车→银行卡支付→查看订单异常流1:选择商品→将商品加入购物车→余额支付失败异常流2:选择商品→将商品加入购物车→网络异常支付失败根据上述事件流,共构成4个测试场景:场景1(基本流)、场景2(备选流)、场景3(异常流1)和场景4(异常流2)。针对这些场景,设计相应的测试用例,详见表3-31。表3-31测试用例用例ID测试场景前置条件测试步骤预期结果TC1场景1用户已登录,购物车有商品,余额充足1.进入购物车2.选择商品,点击“去结算”3.选择“余额支付”4.点击“支付”按钮订单支付成功,跳转至订单详情页面TC2场景2用户已登录,购物车有商品,已绑定银行卡1.进入购物车2.选择商品,点击“去结算”3.选择“银行卡支付”4.输入银行卡信息,点击“支付”按钮订单支付成功,跳转至订单详情页面TC3场景3用户已登录,购物车有商品,余额不足1.进入购物车2.选择商品,点击“去结算”3.选择“余额支付”4.点击“支付”按钮提示“余额不足”TC4场景4用户已登录,购物车有商品1.进入购物车2.选择商品,点击“去结算”3.选择“银行卡支付”4.在支失付时断网提示“支付失败”总结与作业布置总结:场景法场景法通过模拟用户的各种操作路径,确保系统在真实场景中的正确性和稳定性。它广泛应用于功能测试、用户界面测试、集成测试、系统测试、回归测试、安全测试和性能测试等多个领域,可结合等价类划分、边界值分析、决策表、因果图和正交试验法设计测试用例。作业:复习场景法的概念和设计步骤;选择一个自己感兴趣的软件功能,使用场景法设计至少10个测试用例。教学反思本节课的重点在于让学生理解和掌握场景法的核心概念和设计步骤。通过案例分析和小组练习,帮助学生将理论知识应用到实践中。在下次授课中,可以考虑:增加更复杂的案例,提高学生的分析和设计能力。引入一些在线工具,辅助学生进行场景设计和测试用例管理。在课堂讨论环节,增加一些辩论环节,激发学生的学习兴趣和批判性思维。第10次课授课章节4.1白盒测试概述,4.2静态白盒测试技术课型教室授课教师教学时数2课时教学目标了解:白盒测试的基本概念、目的和技术分类。理解:静态白盒测试技术的原理、方法及其优缺点。应用:能够运用评审和静态分析工具进行简单的代码审查和分析。教学方法PPT讲解+案例分析+演示+课堂练习教学重点白盒测试的概念和目的。静态白盒测试的分类:评审和静态分析。评审的几种形式:培训评审、预备评审、同行评审(审查、小组评审、走读、桌面评审、临时评审)静态分析的特点及常用工具。教学难点理解各种评审方式的特点和适用场景。理解静态分析工具的作用及如何集成到开发流程中。教学程序设计与教学内容处理师生互动设计1.复习与导入(10分钟)通过一个常见的代码错误案例(如空指针异常、资源泄露等)引出白盒测试的必要性。提问:这些错误如何能够更早地被发现?简单回顾黑盒测试,引出白盒测试与黑盒测试的区别。互动:提问学生,在之前的课程或实践中是否接触过白盒测试,简单描述他们的理解。4.1白盒测试概述白盒测试(White-boxtesting)是一种基于程序内部结构的测试方法,关注程序的内部实现过程。它要求测试人员深入理解代码结构、逻辑流程等细节,通过分析源代码来设计测试用例,确保程序的各个分支、路径以及代码语句得到了充分的测试。4.1.1什么是白盒测试白盒测试也称为结构测试或玻璃盒测试,是一种通过查看软件内部结构和实现方式来设计测试用例的测试方法。与黑盒测试不同,白盒测试侧重于验证程序的实现,而非其功能是否符合需求。通过白盒测试,可以发现一些逻辑错误、代码覆盖率不足等问题。白盒测试通常用于单元测试、集成测试,主要特点是对代码的深度分析和高覆盖率,能够检测出黑盒测试无法揭示的内部缺陷。①依赖于代码结构:白盒测试要求测试人员具备一定的编程能力和对软件源代码的访问权限。测试人员需要了解程序内部的控制流、数据流和逻辑实现。②高代码覆盖率:白盒测试能够确保高覆盖率,常见的覆盖标准有:语句覆盖、分支覆盖、路径覆盖、条件覆盖等。通过这些覆盖标准,确保系统中的每一条路径、每个分支、每个条件都经过测试。③深入的错误检测:白盒测试通过对程序内部结构的深入了解,可以发现很多外部行为无法直接暴露的潜在错误,如算法错误、数据处理问题、逻辑错误、死代码、冗余代码等。④适用于单元测试、集成测试:白盒测试通常应用于单元测试阶段,用来测试代码的每个单元(如函数、方法等)的正确性,也可用于集成测试阶段,检查多个模块之间的交互是否符合预期。4.1.2白盒测试目的白盒测试的目的是通过全面审查程序的内部实现,确保其在各个方面都能按照预期工作,并消除潜在的错误和性能瓶颈。①验证代码的正确性:通过检查程序的每一行代码、分支路径、循环等,确保没有逻辑错误、语法错误或遗漏的情况。②提高代码覆盖率:确保程序中的每个功能单元(如函数、方法、条件语句、循环等)都经过了测试,以便尽可能多地覆盖程序代码,减少潜在的错误。③发现潜在的安全漏洞:白盒测试可以帮助测试人员发现程序中的安全漏洞,检查是否存在未经授权的访问、数据泄露等问题。④优化程序性能:通过分析程序的内部实现,识别可能影响性能的部分,进行优化,从而提高程序的执行效率。⑤提升软件质量:通过深入分析代码结构,确保各部分代码符合开发规范,及时发现和修复问题,最终提高软件的质量。4.1.3白盒测试技术分类在白盒测试中,测试技术可以根据测试的方式进行分类。具体来说,白盒测试技术主要分为两大类:静态白盒测试和动态白盒测试。静态白盒测试主要关注于对源代码进行检查,而不执行程序,目的是发现代码中的潜在问题;而动态白盒测试则是在程序运行的过程中进行,旨在通过执行代码来检测其行为和逻辑的正确性。1.静态白盒测试技术静态白盒测试不依赖于实际的运行环境,能够在早期发现代码中的问题,减少开发后期的修复成本。它是一种在不执行程序的情况下,对源代码、设计文档或其他软件工件进行分析和检查的测试方法,通过代码审查、静态分析工具等手段来发现潜在的错误、漏洞或不符合规范的代码,从而提升软件质量。①不执行代码:仅对代码进行静态检查,无需执行程序。②早期发现问题:能够在软件开发早期发现潜在的缺陷,例如逻辑错误、语法错误、编码规范问题等,减少后期修复的成本。③提高代码质量:静态测试帮助发现冗余代码、未使用的变量、潜在的安全漏洞等。④工具支持:利用静态分析工具(如SonarQube、PMD、FindBugs等)可实现静态测试的自动化。这些工具能够检测代码质量问题以及潜在的缺陷,从而为代码的可靠性和可维护性提供有力保障。2.动态白盒测试技术动态白盒测试技术是在程序执行的过程中,基于程序运行时的状态和行为进行测试的方法。与静态白盒测试不同,动态白盒测试涉及实际的代码执行,通过跟踪程序在运行中的行为来分析其正确性和性能。动态白盒测试技术通常包括以下几种方式:(1)代码覆盖率分析代码覆盖率通过记录程序运行时的执行路径,评估测试对代码的覆盖程度。常见的覆盖率类型包括语句覆盖、分支覆盖、条件覆盖等。①语句覆盖:测试每一条语句是否都被执行。②分支覆盖:测试每一个条件分支是否都被执行。③条件覆盖:测试每个布尔条件为真和为假是否都被覆盖。(2)路径分析动态白盒测试中,路径分析是一种探讨程序执行流程的方法。通过分析程序中的控制流图,追踪不同输入条件下程序的执行路径,确保所有可能的路径都被测试。4.2静态白盒测试技术在静态白盒测试技术中,主要的手段包括评审和静态分析。这两种技术都不依赖于程序的实际执行,而是通过对源代码进行详细的审查和分析来发现潜在的问题。4.2.1评审评审是一种通过人工检查和讨论,发现文档、设计、代码等工作成果中的缺陷的过程。通常是由一个小组或团队成员,通过仔细审阅工作产品(如设计文档、代码等)来识别潜在的问题。1.培训评审培训评审主要目的是帮助团队成员理解项目的需求、技术细节以及项目的规范,以确保团队成员在同一方向上进行工作。它通常是在项目开始、团队新成员加入或者需求和技术有重大变化时进行的一种非正式评审活动。2.预备评审预备评审通常在项目的初期阶段进行,旨在对项目的设计和需求进行初步审查,以发现潜在的问题并提供改进建议。比正式的审查更加简化,它关注的是问题的早期发现和对项目初步想法的验证。3.同行评审同行评审由团队中的成员或相关领域的专家对项目的工作成果(如设计文档、代码、测试用例等)进行评审。同行评审不仅仅是检查错误,还包括对工作质量、符合性和改进空间的建议。(1)审查审查是一种正式且结构化的评审方式,目的是发现设计或编码中的潜在缺陷,并提出改进建议。由协调员、程序员(编码人和设计人)、测试专家组成审查小组,通过阅读、讨论等方式,应用预先定义好的标准和检查技术,来检查已经编写好的程序和文档,发现错误和缺陷的过程。(2)小组评审小组评审是一种非正式的同行评审方式,通常由一个小型小组组成,成员可以包括开发人员、设计人员、测试人员及其他相关人员。与正式的审查相比,小组评审更为灵活,通常不遵循严格的流程,但其主要目的是通过集体讨论和反馈,发现潜在的缺陷或改进的空间。(3)走读走读是一种非正式的同行评审方式,目的在于逐步展示和讲解代码、设计文档或其他开发文档,并邀请其他团队成员提出问题、意见和建议。这种评审方式强调团队成员之间的交流和协作,旨在共同理解代码或文档的逻辑,并找出潜在的缺陷。(4)桌面评审桌面评审是一种最为简单、非正式的静态测试方法,通常由开发人员独立进行。该方法的主要特点是开发人员在自己的工作环境中(桌面)手动检查和分析代码或设计文档,目的是发现潜在的问题、错误或不一致性。(5)临时评审临时评审是一种非常灵活的非正式评审方式,没有预定的评审流程或严格的评审标准。它通常是基于即时的需求或情况,由开发人员或团队成员在没有详细准备的情况下进行的一种即兴检查。4.2.2静态分析静态分析是通过使用自动化工具对源代码进行静态检查的一种方法。与代码检查不同,静态代码分析不需要人工审查,而是通过专门的工具扫描源代码,识别潜在的编程错误、代码风格问题、安全漏洞等。1.特点静态分析通过自动化工具扫描源代码,提供快速、全面、无执行的检查,能够有效发现潜在的编程错误、代码风格问题、安全漏洞等。①自动化执行:由自动化工具快速对源代码进行扫描和检查,自动检测代码中的潜在缺陷、错误和质量问题,无需人工干预。②高效性:静态分析工具能够处理大量代码,发现一些不容易被人工审查发现的问题,例如未使用的变量、空指针引用等。③全面性:静态代码分析不局限于局部代码的分析,而是针对整个代码库进行质量检查,可以有效发现潜在的全局性问题。④及时反馈:静态分析工具可以集成到开发流程中,为开发人员提供及时的反馈,帮助他们在开发过程中修复问题。2.常用工具市面上有多种开源和商业化的静态分析工具可供选择,这些工具可以自动化地进行代码质量检查,提升开发效率并减少人工审查的工作量。①SonarQube:是一个非常流行的静态代码分析工具,支持多种编程语言(如Java、C#、JavaScript、Python、PHP等)。它提供了代码质量的全面检测,并生成详细的报告,显示潜在的错误、漏洞、代码重复性、代码复杂度等。②PMD:一个开源的静态代码分析工具,支持Java、C++、Python等语言,能够查找代码中的潜在问题,例如重复代码、无效代码、不符合命名规范的变量等。③Checkstyle:用于Java语言的静态代码分析工具,专注于代码风格和规范的检查。它能够检查代码是否符合预定的编码标准、命名规则、缩进风格等。④FindBugs:也是用于Java语言的静态代码分析工具,通过分析字节码而非源代码,找出潜在的缺陷和错误,如空指针异常、资源泄漏、并发问题等。课堂讨论(10分钟)分组讨论:选择一个小型代码项目,分析应该采用哪些评审方式和静态分析工具。讨论静态白盒测试的优缺点及适用范围。总结与作业布置(10分钟)总结本次课内容:白盒测试的概念、目的、静态白盒测试技术(评审和静态分析)。作业:阅读教材中关于动态白盒测试的内容。思考:静态白盒测试和动态白盒测试的区别和联系。教学反思本次课程重点讲解了白盒测试的基本概念和静态白盒测试技术,旨在让学生对白盒测试有一个初步的了解。在讲解各种评审方式时,需要结合具体的案例进行分析,帮助学生理解其适用场景。如果条件允许,尽量进行静态分析工具的演示和实践,让学生对静态分析有一个直观的认识。根据学生的实际情况,调整讲解的深度和广度,确保学生能够理解和掌握所学内容。在下一次课程中,继续讲解动态白盒测试技术,并对比分析静态白盒测试和动态白盒测试的优缺点。第11次课授课章节4.3.1语句覆盖,4.3.2判定覆盖,4.3.3条件覆盖课型教室授课教师教学时数2课时教学目标了解:白盒测试的基本概念、目的和分类。静态白盒测试技术(评审、静态分析)的核心思想。动态白盒测试技术中语句覆盖、判定覆盖、条件覆盖的概念。理解:静态白盒测试与动态白盒测试的区别和应用场景。不同覆盖准则的测试力度和优缺点。语句覆盖,判定覆盖和条件覆盖的侧重点。应用:能够运用语句覆盖、判定覆盖、条件覆盖方法设计测试用例。能够识别适合使用白盒测试的场景。教学方法PPT讲解+案例分析+课堂练习教学重点白盒测试的概念,静态与动态的区别和联系语句覆盖,判定覆盖,条件覆盖的定义和区别测试用例设计方法(语句覆盖,判定覆盖,条件覆盖)不同覆盖标准之间的关系和覆盖能力比较。教学难点根据代码逻辑,灵活应用不同的覆盖准则设计有效的测试用例。理解不同覆盖准则的局限性,选择合适的覆盖准则以达到良好的测试效果。将覆盖准则应用于更复杂的代码场景。教学程序设计与教学内容处理师生互动设计1.复习与导入(10分钟)使用计算器加法错误的软件缺陷案例,引入测试的重要性。提问:如何保证软件功能的正确性?引入白盒测试的概念。4.3动态白盒测试技术逻辑覆盖法是动态白盒测试技术中的一种重要测试策略,要求测试人员通过设计测试用例来覆盖程序中的各类逻辑路径,包括条件分支、循环等,以尽可能多地发现潜在的错误和缺陷。根据覆盖标准不同,分为语句覆盖、判定覆盖、条件覆盖判定-条件覆盖、条件组合覆盖和路径覆盖。4.3.1语句覆盖语句覆盖(StatementCoverage,SC)又称行覆盖、段覆盖、基本块覆盖,程序中的每条可执行的语句至少执行一次。注:这里的语句不包括头文件、注释、空行等。例4-1:分析源程序,请使用语句覆盖法设计测试用例。voidfun(intx,inty){1if(x>0&&y>2)2x=x+y;3else4y=x+y;5printf("%d,%d",x,y);}图4-1流程图解析:设计测试用例时,应遵循“尽量以最少得测试用例达到最大的覆盖率”的原则。设计测试用例,如表4-1所示。表4-1测试用例用例ID输入覆盖语句编号预期结果xyTC1131,2,54,3TC2-131,3,4,5-1,2例4-2:分析源程序,请使用语句覆盖法设计测试用例。voidfun(intx,inty,intz){1if(x>3||y>0)2z=x+y;3if(x<2&&z>0)4z=x-y;5printf("%d",z);}图4-2流程图解析:为确保对语句1至语句5的覆盖,设计测试用例,如表4-2所示。表4-2测试用例用例ID输入覆盖语句编号预期结果xyzTC15-201,2,3,53TC21321,3,4,5-2语句覆盖是一种较为基础的测试准则,对程序执行逻辑的覆盖程度较低,因此被认为是最弱的覆盖标准。它只关注代码是否被执行,而不考虑逻辑条件的不同组合是否经过充分测试,这可能导致某些逻辑错误被忽略。例如,将条件表达式(x0&&y>2)误写为(x>0||y>2),尽管表4-1中的测试用例已实现100%的语句覆盖,但仍无法发现该逻辑错误。4.3.2判定覆盖判定覆盖(DecisionCoverage,DC)又称分支覆盖,程序中的每个判定(分支)的真假分支至少执行一次。例4-3:请使用判定覆盖方法为例4-1设计测试用例,使程序的所有判定分支至少执行一次。解析:在测试过程中,应确保每个判定至少执行一次真值和一次假值。为覆盖图4-1中的两个分支,设计测试用例如表4-3所示。表4-3测试用例用例ID输入覆盖分支编号预期结果xyTC124a6,4TC2-12b-1,1例4-4:请使用判定覆盖方法为例4-2设计测试用例,使程序的所有判定分支至少执行一次。解析:在测试过程中,应确保每个判定的真假分支至少执行一次,设计测试用例,如表4-4所示。表4-4测试用例用例ID输入覆盖分支编号预期结果xyzTC1534a,d8TC21-22b,c3判定覆盖只要求判定语句的“真”和“假”分支至少执行一次,而不关心判定内部的条件如何组合。例如,对于if(x>0&&y>2),只要true和false分支各执行一次,就满足判定覆盖,即使x>0和y>2的所有可能组合未被测试。又如,在(A||B)这样的条件中,如果A为true,则B的取值不会影响判定结果,导致B的true和false情况未被测试。它无法保证所有逻辑路径都被遍历,可能遗漏潜在缺陷。因此,判定覆盖也属于弱覆盖。4.3.3条件覆盖条件覆盖(ConditionCoverage,CC),程序中的每个判定中的每个条件至少取一次真值(true)和一次假值(false)。例4-5:请使用条件覆盖方法为例4-1设计测试用例,确保程序的每个条件至少取一次真值和一次假值。解析:该程序包含两个条件,即x>0和y>2,相应的测试用例详见表4-5。表4-5测试用例用例ID输入条件预期结果xyx>0y>2TC113TrueTrue4,3TC2-11FalseFalse-1,0例4-6:请使用条件覆盖方法为例4-2设计测试用例,确保程序的每个条件至少取一次真值和一次假值。解析:该程序包含两个if语句,每个if语句各有两个条件:(1)if(x>3||y>0)→条件x>3和y>0(2)if(x<2&&z>0)→条件x<2和z>0条件覆盖要求每个条件都至少取一次“真”(True)和“假”(False),因此需要设计能满足这一要求的测试用例,具体设计如表4-6所示。表4-6测试用例用例ID输入条件预期结果xyzx>3y>0x<2z>0TC14-12TrueFalseFalseTrue3TC2111FalseTrueTrueFalse0总结与作业布置:条件覆盖确保每个条件的“真”和“假”都被执行,能够发现某些因单个条件变化导致的错误,而语句覆盖和判定覆盖可能忽略这一点。相比于判定-条件覆盖和条件组合覆盖,测试力度仍然较弱适用于逻辑较简单的程序。布置作业:阅读教材中关于路径覆盖、条件组合覆盖等覆盖准则的内容,并尝试设计测试用例。教学反思优点:课程内容安排循序渐进,从基本概念到实际应用,有利于学生理解和掌握。案例分析和课堂练习相结合,能够有效提高学生的实践能力。小组讨论和展示环节,能够促进学生之间的交流与合作。缺点:时间分配可能需要根据学生的实际情况进行调整。部分复杂的代码示例可能需要进行简化,以便学生更好地理解。需要准备充分的教学资源,例如测试工具的安装包、代码示例等。改进措施:在讲解理论知识时,可以结合实际项目中的案例,提高学生的学习兴趣。第12次课授课章节4.3.4判定-条件覆盖,4.3.5条件组合覆盖4.3.6路径覆盖课型教室授课教师教学时数2课时教学目标理解:(1)判定-条件覆盖、条件组合覆盖和路径覆盖的概念和原理。(2)控制流图(CFG)的构建方法,理解节点、边和区域的含义。(3)圈复杂度(CyclomaticComplexity)的计算方法及其意义。(4)独立路径的概念。2.掌握:(1)运用判定-条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例。(2)绘制简单程序的控制流图。(3)计算简单控制流图的圈复杂度。(4)识别控制流图中的独立路径。3.应用:(1)根据代码,能够进行简单的白盒测试用例设计。(2)理解白盒测试在软件测试中的作用和意义。教学方法PPT讲解+案例分析+课堂练习教学重点判定-条件覆盖、条件组合覆盖和路径覆盖的测试用例设计。控制流图的构建和圈复杂度的计算。独立路径的识别。教学难点条件组合覆盖中,条件组合数量呈指数级增长带来的测试用例设计挑战。复杂程序的控制流图构建。独立路径的识别,尤其是在循环结构中。教学程序设计与教学内容处理师生互动设计导入回顾上节课内容,提问:(1)什么是语句覆盖、分支覆盖?(2)这两种覆盖有什么局限性?引入更强大的白盒测试方法:判定-条件覆盖、条件组合覆盖、路径覆盖。4.3.4判定-条件覆盖判定-条件覆盖(DecisionConditionCoverage,DCC)要求每个判定语句的所有可能结果(即“真”或“假”)至少执行一次,同时每个条件的取值也要经历“真”和“假”。例4-7:请使用判定-条件覆盖方法为例4-1设计测试用例。解析:该程序包含一个判定语句if(x>0&&y>2),该判定语句由两个条件组成,即条件1:x>0和条件2:y>2。判定-条件覆盖要求每个判定语句的结果取True和False,同时保证每个单独的条件True和False至少执行一次,测试用例如表4-7所示。表4-7测试用例用例编号输入条件判定预期结果xyx>0y>2x>0&&y>2TC113TrueTrueTrue4,3TC2-11FalseFalseFalse-1,0例4-8:请使用判定-条件覆盖方法为例4-2设计测试用例。解析:第1个判定语句if(x>3||y>0)由2个条件组成,即条件1:x>3和条件2:y>0。该判定语句的结果可以为True或False,其中每个条件需取True和False。第2个判定语句if(x<2&&z>0)也由2个条件组成,即条件3:x<2和条件4:z>0。该判定语句的结果可以为True或False,其中每个条件需取True和False。判定-条件覆盖要求每个判定语句的结果取True和False,同时保证每个条件True和False至少执行一次,测试用例如表4-8所示。表4-8测试用例用例编号输入条件判定预期结果xyzx>3y>0x<2z>0x>3||y>0x<2&&z>0TC1410TrueTrueFalseFalseTrueFalse5TC21-21FalseFalseTrueTrueFalseTrue3判定-条件覆盖结合了判定覆盖和条件覆盖,在测试中提供更强的覆盖能力,确保了所有判定语句的执行路径被遍历,同时也保证了每个条件表达式的不同取值被测试,适用于大多数复杂条件判断的测试。4.3.5条件组合覆盖条件组合覆盖(MultipleConditionCoverage,MCC)是一种严格的测试覆盖标准,要求测试用例设计能够覆盖判定语句中所有条件变量的所有可能组合。例4-9:请使用条件组合覆盖法为例4-1设计测试用例。解析:该程序包含一个判定语句if(x>0&&y>2),包含两个条件,即条件1:x>0和条件2:y>2。条件组合覆盖要求测试用例覆盖所有可能的条件组合,即(x>0,y>2)这两个条件的所有True和False组合,22=4种情况,测试用例如表4-9所示。表4-9测试用例用例ID输入条件预期结果xyx>0y>2TC113TrueTrue4,3TC212TrueFalse1,3TC3-13FalseTrue-1,2TC4-11FalseFalse-1,0例4-10:请使用条件组合覆盖法为例4-2设计测试用例。解析:该程序包含两个判定语句,判定语句1:if(x>3||y>0),由条件1:x>3和条件2:y>0组成,该判定为“或”逻辑,即当至少一个条件为True时,整体判定为True。判定语句2:if(x<2&&z>0),由条件3:x<2和条件4:z>0组成,该判定为“与”逻辑,即当两个条件同时为True时,整体判定才为True。条件组合覆盖要求测试用例覆盖所有可能的条件组合,即(x>3,y>0,x<2,z>0)四个条件的所有True和False组合,共24=16种情况,测试用例如表4-10所示。表4-10测试用例用例编号输入条件预期结果xyzx>3y>0x<2z>0TC1415TrueTrueFalseTrue5TC24-15TrueFalseFalseTrue3TC3315FalseTrueFalseTrue4TC43-15FalseFalseFalseTrue5TC5115FalseTrueTrueTrue2TC61-15FalseFalseTrueTrue5TC711-1FalseTrueTrueFalse2TC81-1-1FalseFalseTrueFalse-1TC9-115FalseTrueTrueTrue0TC10-1-15FalseFalseTrueTrue5TC11-11-1FalseTrueTrueFalse0TC12-1-1-1FalseFalseTrueFalse-1TC13515TrueTrueFalseTrue6TC145-15TrueFalseFalseTrue4TC1551-1TrueTrueFalseFalse6TC165-1-1TrueFalseFalseFalse4与条件覆盖和判定-条件覆盖相比,条件组合覆盖提供更高的测试强度和覆盖率。由于条件的不同组合数量呈指数级增长,测试用例数量可能急剧上升,适用于对安全性要求较高的系统。4.3.6路径覆盖路径覆盖法(PathCoverage)是一种基于控制流图的结构化测试方法,要求测试用例能够覆盖程序中的所有独立路径。1.控制流图控制流图(ControlFlowGraph,CFG)也叫控制流程图,是一种用于表示程序执行流程的有向图,描述了程序的控制结构,包括基本块之间的执行顺序和可能的分支路径。控制流图由节点(Node)和边(Edge)组成:节点代表程序的基本块(BasicBlock),即一组顺序执行、不含跳转的语句;边代表程序的控制流,即执行路径,如顺序执行、条件分支和循环跳转等,其基本结构如图4-3所示。图4-3控制流图基本结构①控制流程图是一个有向图。②由判定节点发出的边必须终止于某一个节点。③如果判断中的条件表达式是由一个或多个逻辑运算符连接的复合条件表达式,则需要改为一系列只有单条件的嵌套判断。④由边和节点所限定的范围被称为区域,当对区域计数时,图形外的区域也应记为一个区域。【示例1】如下代码段为待测程序,其对应的控制流图如图4-4所示。if(x>0&&b>3)x=x+y;elsex=x-y;printf(“%d”,x);注:x>0→1,b>3→2,X=x+y→3,x=x-y→4,printf(“%d”,x)→5图4-4控制流图【示例2】图4-5为待测程序的程序流程图,其对应的控制流图如图4-6所示。图4-5待测程序的程序流程图图4-6控制流图2.圈复杂度圈复杂度(CyclomaticComplexity)又称环形复杂度或McCabe复杂度(McCabeComplexity),由ThomasJ.McCabe在1976年提出。它是一种衡量程序复杂度的度量标准,表示程序的独立路径数量,即控制流图中线性无关路径的数量。其计算公式如下:①基于边和节点:V(G)=M-N+2,其中,V(G)为圈复杂度,M为控制流图中的边数,N为节点数。②基于判定节点:V(G)=P+1,其中P为控制流图中的判定节点数量。③基于封闭区域数量:V(G)=A+1,其中A是程序流程图的封闭区域数目。3.独立路径独立路径(IndependentPath)是指控制流图中至少包含一条未曾覆盖的新边的路径。换句话说,独立路径是相对于已覆盖路径而言的,引入新的边或节点。独立路径的数量通常由圈复杂度决定。【示例3】计算图4-6的圈复杂度,并列出所有独立路径。(1)计算圈复杂度方法一:V(G)=M-N+2=13-11+2=4方法二:V(G)=P+1=3+1=4方法三:V(G)=A+1=3+1=4(2)独立路径路径1:1→11路径2:1→2→3→4→5→1→11路径3:1→2→3→6→8→9→10→1→11路径4:1→2→3→6→7→9→10→1→114.设计测试用例的步骤基于路径覆盖法设计测试用例的步骤如下:①构建控制流图:根据程序代码绘制控制流图,明确程序的基本结构,包括判定节点、循环结构和分支路径。②计算圈复杂度:计算控制流图的圈复杂度,确定所需的独立路径数量。③识别独立路径:通过分析控制流图,列出所有独立路径,确保每条路径都涵盖至少一个新分支。④设计测试用例:针对每条独立路径,选择合适的输入数据,确保程序能够按照该路径执行,从而覆盖所有可能的分支和循环情况。例4-11:分析代码段,请使用路径覆盖法设计测试用例。1intx=1;2inty=2;3while(i>0){4if(j==0){5x=y+2;6break;7}else8if(j==1)图4-7控制流图9x=y+10;10elsex=y+20;11i--;12}解析:语句1和语句2用1个节点表示,语句5和语句6用个节点表示,语句7和语句8用1个节点表示(也可用2个节点表示),代码段对应的控制流图,如图4-7所示。(1)根据公式计算圈复杂度:●V(G)=M-N+2=11-9+2=4●V(G)=P+1=3+1=4●V(G)=A+1=3+1=4(2)独立路径●路径1:1,2→3→12●路径2:1,2→3→4→5,6→12●路径3:1,2→3→4→7,8→9→11→1,2→3→12●路径4:1,2→3→4→7,8→10→11→1,2→3→12(3)设计测试用例:为每一条独立路径各设计一组测试用例,使程序沿着该路径至少执行一次,如表4-11所示。表4-11测试用例用例ID输入执行路径预期结果TC1i=0j=1路径1x=1TC2i=1j=0路径2x=4TC3i=1j=1路径3x=12TC4i=1j=21路径4x=21路径覆盖法是一种基于程序控制流的测试方法,根据控制流图,识别并列出所有独立路径,针对每条独立路径,设计适当的输入数据,使程序能够执行对应路径,从而实现路径覆盖。总结与作业布置总结本次课内容:判定-条件覆盖、条件组合覆盖、路径覆盖的概念、步骤、优缺点。控制流图的构建、圈复杂度的计算和独立路径的识别。作业:完成教材中相关习题,预习下一节课内容。教学反思优点:(1)理论与实践相结合,通过案例分析和练习,帮助学生更好地理解和掌握白盒测试方法。(2)强调了控制流图的构建、圈复杂度的计算和独立路径的识别,为后续的测试用例设计打下基础。(3)加入了实验演示,使学生能够更直观地了解白盒测试在实际项目中的应用。改进方向:(1)可以根据学生的实际情况调整案例的难度,增加一些更具挑战性的练习。(2)可以鼓励学生使用不同的测试工具,比较不同工具的优缺点。(3)在讲解路径覆盖时,可以更加详细地讲解循环结构的控制流图。第13次课授课章节4.4单元测试课型教室授课教师教学时数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论