版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件测试技术课程团队NextDate程序的功能测试项目一
掌握软件测试基本概念理解软件测试模型掌握功能测试及流程掌握常见黑盒测试方法知识目标能够使用Visio绘制软件测试模型能够完成功能测试全流程能够独立完成功能测试用例设计技能目标培养分析解决问题能力树立软件产品的质量意识培养细心耐心的工作习惯素质目标教学目标任务1-1微信朋友圈功能测试流程任务1-2NextDate程序功能测试用例设计LEARNING目录什么是软件测试软件测试怎么分类软件测试模型有哪些1微信朋友圈功能测试流程什么是功能测试如何开展功能测试任务描述在日常生活中,人们经常通过发朋友圈来分享自己的生活,请说明微信朋友圈功能测试流程。重点和难点重点:1.掌握软件测试的分类,理解黑盒测试和白盒测试,能够分阶段区分软件测试。2.根据需求规格说明书分析软件测试需求,确保测试不漏项。难点:1.准确理解软件测试的各种模型,能够根据测试需求选择测试模型。2.根据软件测试需求分析,可以梳理软件测试的流程及各流程中的内容。知识链接1.软件测试的基本概念与分类。2.软件测试的模型:V模型、W模型、X模型、H模型。3.功能测试的基本概念及特点。4.功能测试的测试流程。任务完成步骤1.根据需求规格说明书分析测试需求。2.分阶段制定完整且详细的测试计划。3.设计测试用例。4.执行测试用例,对测试过程进行跟踪记录。5.测试结束后,编写一份完整的测试报告。任务工单JUnitJMeterNmap软件测试是指通过人工或自动化手段,运行软件程序,验证其是否符合需求规范,并检查程序中潜在的缺陷或漏洞的过程。软件测试不仅仅是为了发现问题,它还涉及到验证软件的质量、可靠性和性能,以确保产品能够在实际使用环境中正常工作。在软件开发生命周期中,测试占据着至关重要的地位,软件测试是保障软件质量的重要环节。知识清单1什么是软件测试SeleniumAppium知识清单2软件测试的目的软件测试是发现错误的关键手段,确保它们在最终用户使用之前被及时修正。发现缺陷与错误通过系统化的软件测试,可以在多个维度上保证软件质量。确保软件质量高质量的软件体验能带来用户的满意,而测试则是确保软件避免崩溃或重大问题的基础。提高用户满意度如果能够在早期测试中发现问题,将显著降低后期修复的代价。降低维护成本软件必须经过严格的测试以满足行业标准和法规要求。合规与规范需求软件测试的目的知识清单3软件测试怎么分类按阶段划分01单元测试单元测试是对软件中基本组成单位进行的测试,如一个模块、一个过程等。07Beta测试Beta测试是开发和测试基本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。02集成测试集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。06Alpha测试Alpha测试是在系统开发接近完成时对应用系统的测试。测试后,仍然会有少量的设计变更。03系统测试对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求。05回归测试在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。04验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。知识清单3软件测试怎么分类黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试。黑盒测试白盒测试是测试者需要了解被测试系统的内部结构、设计和实现。白盒测试方法可以分为两大类:静态测试方法和动态测试方法。白盒测试按测试方法划分灰盒测试是介于白盒测试和黑盒测试之间的测试。灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。灰盒测试知识清单4软件测试模型有哪些(1)V模型从左到右描述了基本的开发过程和测试行为,左边下降的箭头是开发过程的各个阶段,与此相对应的右边上升箭头部分,即测试过程的各个阶段。优点:将复杂的测试工作分成了目标明确的小阶段完成,具有阶段性、顺序性和依赖性,它既包含了对于源代码的底层测试也包含了对于软件需求的高层测试。缺陷:只能在编码之后才能开始测试,早期的需求分析等前期工作没有涵盖其中,因此它不能发现需求分析等早期的错误,这为后期的系统测试、验收测试埋下了隐患。
知识清单4软件测试模型有哪些(2)W模型W模型是由V模型演变而来的,它强调测试应伴随着整个软件生命周期。优点:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、文档和代码同样要测试。缺陷:它将软件开发过程分成需求、设计、编码、集成等一系列的串行活动,无法支持迭代、自发性等需要变更调整的项目。
知识清单4软件测试模型有哪些(3)X模型X模型的设计原理是将程序分成多个片段反复迭代测试,然后将多个片段集成再进行迭代测试。优点:对单独程序片段进行的相互分离的编码和测试,保证了测试效果。增加了探索测试,可以帮助测试人员发现计划之外的软件错误。缺陷:频繁的集成会增加测试成本;探索测试对测试人员要求更高。 知识清单4软件测试模型有哪些(4)H模型为了解决V模型与W模型存在的问题,有专家提出了H模型,H模型将测试活动完全独立出来,形成一个完全独立的流程,这个流程将测试准备活动和测试执行活动清晰地体现出来。软件测试是一个独立的流程,其以独立完整的“微循环”流程参与产品生命周期的各个阶段,与其他流程并发地进行。 知识清单5什么是功能测试基于需求规格功能测试直接依据需求文档或功能说明书,对软件的各个功能模块进行验证。用户角度测试功能测试从用户的角度出发,模拟用户在使用软件时的操作行为,验证系统的各项功能是否满足实际使用场景的需求。输入输出验证测试过程中,主要通过提供不同的输入数据,观察软件的输出结果,检查是否与预期一致。独立于内部实现测试关注的是功能行为而非代码结构,因此不需要测试人员具备软件的编程背景或深入了解软件的内部工作原理。功能测试主要用于验证软件系统的每个功能是否按照需求规格说明书的要求正常工作。它是一种基于黑盒测试方法的技术,测试人员无需了解软件的内部结构或代码实现,而是根据功能需求来设计测试用例,确保软件的输入输出符合预期。 知识清单6如何开展功能测试汇总测试结果,生成测试报告,帮助项目团队了解测试状态和软件的质量状况,总结发现的缺陷数量、严重性、修复状态等,分析软件的质量。编写测试报告05测试用例应包括测试名称、测试前提、测试步骤、预期结果。设计测试用例03根据需求分析制定功能测试的总体计划,明确测试的范围、策略、资源分配和时间安排。制定测试计划02功能测试的关键是验证软件的功能是否符合需求。需要清楚了解软件的功能需求文档(需求规格说明书),确保测试范围明确。分析测试需求01根据设计的测试用例,逐步执行测试并记录测试结果。执行测试分为手动测试和自动化测试。执行测试04任务实施微信朋友圈业务流程:微信朋友圈的功能主要包括6个,分别是开始、注册/登录、发布朋友圈、查看朋友圈、点赞/评论朋友圈、结束。下面选取该业务流程中的发布朋友圈功能进行测试。 (1)分析测试需求测试人员对软件需求进行分析,并确定要测试的功能是发布朋友圈。发布的朋友圈内容主要有5种形式,分别是文字、照片、视频、文字+照片、文字+视频,假设关于这5种形式的朋友圈内容的具体要求如下。文字:1~1500字。照片:1~9张。视频:1~15秒。
任务实施(2)制定测试计划以发布朋友圈的功能为例,制定一个简单的测试计划。
软件版本微信8.3.32版本模块发布朋友圈负责人测试组长测试人员测试员1.测试员2.测试员3测试时间2024.03.01~2024.03.03测试用例001~008回归测试2024.04.10~2024.04.13任务实施(3)设计测试用例测试的重点是发布朋友圈,在设计测试用例时,需要考虑发布的朋友圈内容形式,在分析测试需求阶段可以明确发布的朋友圈内容形式主要有以下5种。
只发布文字。
只发布照片:
只发布视频。
发布文字+照片。
发布文字+视频。 任务实施(3)设计测试用例用例编号测试功能测试标题预置条件步骤描述测试数据预期结果001发布朋友圈发布一段文字1.网络连接正常;2.成功登录微信1.在“发现”界面点击朋友圈;2.长按朋友圈界面右上角的相机图标;3.输入一段文字然后点击“发表”按钮一段字数为50的内容发布成功002发布朋友圈发布内容为空1.网络连接正常;2.成功登录微信1.在“发现”界面点击朋友圈;2.长按朋友圈界面右上角的相机图标;3.不输入内容内容为空发布失败003发布朋友圈发布1张照片1.网络连接正常;2.成功登录微信;3.进入发布朋友圈界面1.在发布朋友圈界面点击相机图标;2.在相册中选择任意一张照片1张照片
发布成功004发布朋友圈发布10张照片1.网络连接正常;2.成功登录微信;3.进入发布朋友圈界面1.在发布朋友圈界面点击相机图标;2.在相册中选择照片10张照片发布失败005发布朋友圈发布一段15秒视频1.网络连接正常;2.成功登录微信;3.进入发布朋友圈界面1.在发布朋友圈界面点击相机图标;2.在相册中选择一段视频一段15秒的视频发布成功006发布朋友圈发布一段20秒视频1.网络连接正常;2.成功登录微信;3.进入发布朋友圈界面1.在发布朋友圈界面点击相机图标;2.在相册中选择一段视频一段20秒的视频发布失败007发布朋友圈发布文字+照片1.网络连接正常;2.成功登录微信;3.进入发布朋友圈界面1.在发布朋友圈界面点击相机图标;2.在相册中选择照片;3.输入文字1.选择9张照片;2.输入一段10字文字
发布成功008发布朋友圈发布文字+视频1.网络连接正常;2.成功登录微信;3.进入发布朋友圈界面1.在发布朋友圈界面点击相机图标;2.在相册中选择视频;3.输入文字1.选择一段10秒视频;2.输入一段10字文字发布成功任务实施(4)执行测试用例执行测试用例,对测试过程进行记录和跟踪,将测试发现的缺陷整理成缺陷报告。 缺陷ID24_03_001测试软件名称微信测试软件版本8.3.32缺陷发现日期20240302测试人员测试员2缺陷描述该版本的发布朋友圈功能在输入内容为空的情况下,点击“发表”按钮后发布成功附件(可附图)附图1(链接)缺陷类型功能类型缺陷缺陷严重程度严重缺陷优先级立即解决测试环境手机信息:华为Mate60pro;内存:16.0GB;系统类型:HarmonyOS 4操作系统。重现步骤1.在发现界面点击朋友圈;2.长按朋友圈界面右上角的相机图标;3.不输入内容;4.点击“发表”按钮。任务实施(5)编写测试报告测试的测试报告可以按照如下目录编写。一、引言1.目的2.术语解释3.参考资料二、测试概要1.项目简介2.测试环境3.测试时间、地点及人员三、测试内容及执行情况1.测试目标2.测试范围3.测试用例使用情况4.回归测试四、缺陷统计与分析1.缺陷数目与类型2.缺陷的解决情况3.缺陷的趋势分析五、测试分析1.测试覆盖率分析2.需求符合度分析3.功能正确性分析4.产品质量分析5.测试局限性六、测试总结1.遗留问题2.测试经验总结七、附件1.测试用例清单2.缺陷清单3.交付的测试工作产品4.遗留问题报告任务拓展在软件测试中,常需要进行画图,如测试模型图、程序流程图、控制流图等,现请使用Visio绘制软件测试V模型。①启动Visio2021软件,单击“开始”菜单中的“基本框图”,并单击“创建”按钮。
②使用“视图”下的“缩放”,调整为100%。
任务拓展③从左侧的基本形状面板拖拉所需的矩形至编辑区域,拖拽鼠标可以更改矩形的大小,双击可以编辑文字的内容、修改字体大小及颜色等。 ④从“开始”菜单中单击“连接线”按钮,将出现“十”字停留在刚绘制的“用户需求”矩形的下边缘中间,并绘制折线。 任务拓展⑤选中该折线并右击,在弹出的快捷菜单中选择“直线连接线”。 如果需要选择箭头的方向和线型等属性,可以选中直线后右击,在弹出的快捷菜单中依次选择“样式”-“线条”,在弹出的“线条”对话框中进行设置。 任务拓展⑥继续绘制V模型中的其余部分。 常见问题及解决方法问题描述:在任务描述或需求分析中,可能会出现功能需求不清晰或未详细说明的情况,导致测试人员无法准确编写测试用例。解决方法:(1)与开发人员或产品经理进行沟通,澄清模糊的需求。(2)使用需求规格说明书来确保所有功能需求详细、完整。(3)建立需求追踪矩阵,确保每一条需求都有相应的测试用例覆盖。需求不明确或不完整01问题描述:测试人员报告的缺陷在开发人员修复时无法重现,可能是由于环境、数据或操作步骤的问题。解决方法:(1)在缺陷报告中详细记录重现步骤,包括操作系统、设备型号、软件版本、网络环境等。(2)附加截图或视频,清楚展示操作过程和问题发生时的场景。(3)使用缺陷管理工具,如JIRA或Bugzilla,来追踪和管理所有缺陷,并确保每个缺陷的状态可视化。缺陷无法重现02任务小结功能测试的测试流程为分析测试需求、制定测试计划、设计测试用例、执行测试用例和编写测试报告,通过微信发布朋友圈的功能测试让读者认识了功能测试的基本流程。掌握功能测试的测试流程理解什么是软件测试,以及软件测试的目的是什么。了解常见的软件测试模型,可以根据测试需求选择测试模型。理解软件测试按阶段和按测试方法两种分类分类方法的具体内容。理解软件测试的基本概念及分类等价类法边界值法决策表法2NextDate程序功能测试用例设计因果图法场景法任务工单任务描述根据实训基本环境,分析被测程序,选择合适的方法完成测试用例设计。重点和难点重点:1.学会使用黑盒测试技术(如等价类划分法、边界值法、决策表法、因果图法、场景法等)来设计功能测试用例2.分析被测程序的需求规格说明,确定测试的重点和难点难点:1.准确理解被测程序的需求规格说明,特别是被测程序的各输入之间相关联的情况2.设计出满足覆盖率的同时尽可能少的测试用例知识链接1.使用等价类法设计测试用例2.使用边界值法设计测试用例3.使用决策表法设计测试用例4.使用因果图表法设计测试用例5.使用场景法设计测试用例任务完成步骤1.分析被测程序的需求规格说明,理解其测试需求2.确定功能测试的测试方法3.根据所选方法的相应步骤设计测试用例知识清单1使用等价类法设计测试用例(1)什么是等价类等价类的划分有效等价类是有效值的集合,这些有效值是符合程序要求、合理且有意义的输入数据。无效等价类是无效值的集合,这些无效值是不符合程序要求、不合理或无意义的输入数据。0102等价类划分把程序的输入域划分成若干互不相交的子集,称之为等价类。所谓等价类,是指输入域的某个子集合,所有等价类的并集便是整个输入域。知识清单1使用等价类法设计测试用例(2)等价类的划分原则如果规格说明规定了输入条件的取值范围或值的数量,则可以确定一个有效等价类和两个无效等价类。按区间划分如果规格说明书规定了输入数据必须遵守的规则或限制条件,则可以确立一个有效等价类和若干无效等价类。按限制条件或规则划分如果规格说明书规定了输入数据的一组值,而且软件要对每个输入值分别进行处理,则可为每一个输入值确立一个有效等价类。按数值划分如果规格说明书规定了输入值的集合,则可确定一个有效等价类和一个无效等价类(该集合有效值之外的值)。按数值集合划分等价类中各个元素在程序中的处理各不相同,可将此等价类进一步划分成更小的等价类。细分等价类知识清单1使用等价类法设计测试用例(3)等价类设计测试用例步骤第一步形成等价类表;每一等价类规定一个唯一的编号。第二步设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类;重复这一步骤,直到所有有效等价类均被测试用例所覆盖。第三步设计一新测试用例,使其只覆盖一个无效等价类;重复这一步骤直到所有无效等价类均被覆盖。少而全多而专知识清单1使用等价类法设计测试用例(4)余额宝体现问题的等价类测试用例设计余额宝的提现功能有两种方式:快速到账(2小时),每日最高提现额度为10000元;普通到账,可提取金额为余额宝最大余额,但到账时间会慢一些。如果选择快速到账,则可将提现功能划分为1个有效等价类与2个无效等价类:有效等价类:0<提现金额<=10000。无效等价类:提现金额<=0。无效等价类:提现金额>10000。如果选择普通到账,则可将提现功能划分为1个有效等价类与2个无效等价类:有效等价类:0<提现金额<=余额。无效等价类:提现金额<=0。无效等价类:提现金额>余额。知识清单1使用等价类法设计测试用例(4)余额宝体现问题的等价类测试用例设计功能有效等价类编号无效等价类编号快速到账0<提现金额<=100001提现金额<=02提现金额>100003普通到账0<提现金额<=余额4提现金额<=05提现金额>余额6知识清单1使用等价类法设计测试用例(4)余额宝体现问题的等价类测试用例设计快速到账可以累积分次提取:快速到账的日提现金额为10000,表明在一天之内,只要提现金额没有累积到10000,则可多次提取,据此,可以将快速到账细分为第1次提现和第n次提现,第n次提现的最大金额为10000减去已经提现的金额。功能有效等价类编号无效等价类编号快速到账(第1次)0<提现金额<=100001提现金额<=02提现金额>100003快速到账(第n次)0<提现金额<=10000-已提现金额7提现金额<=08提现金额>10000-已提现金额9普通到账0<提现金额<=余额4提现金额<=05提现金额>余额6知识清单1使用等价类法设计测试用例(4)余额宝体现问题的等价类测试用例设计假如现在余额宝中有50000元余额,则覆盖有效等价类的测试用例和覆盖无效等价类的测试用例分别如表所示。测试用例功能金额/元覆盖有效等价类编号test1快速到账(第1次)10001test2快速到账(第n次,已提现2000元)70007test3普通到账400004test4快速到账(第1次)-100002test5200003test6快速到账(第n次,已提现2000)-20008test790009test8普通到账-30005test9600006知识清单2使用边界值法设计测试用例(1)边界值法概述边界值分析法是对软件的输入或输出边界进行测试的一种方法,它通常作为等价类划分法的一种补充测试方法。在等价类中选择边界值时,如果输入条件规定了取值范围或取值个数,则在选取边界值时可选取5个测试值或7个测试值。如果选取5个测试值,即在2个边界值内选取5个测试值:最小值、略大于最小值、正常值、略小于最大值、最大值。如果选取7个测试值,则在取值范围两侧再各选取一个测试值,这7个测试值分别是略小于最小值、最小值、略大于最小值、正常值、略小于最大值、最大值、略大于最大值。知识清单2使用边界值法设计测试用例(2)佣金问题的边界值测试测试用例设计某酒水销售公司指派销售员销售各种酒水,其中白酒卖168元/瓶,红酒卖120元/瓶,啤酒卖5元/瓶。对于每个销售员,白酒每月的最高供应量为5000瓶,红酒为3000瓶,啤酒为30000瓶,各销售员每月至少需售出白酒50瓶,红酒30瓶,啤酒300瓶。每到月末时,各销售员向酒水销售公司上报他所在区域的销售业绩,以供酒水销售公司根据其销售额计算该销售员的佣金,并作为奖金发放,计算方法如下。2万元(含)以下,4%2万元(不含)到4.5万元(含),1%4.5万元(不含)以上,0.5%最终由佣金计算系统生成月销售报告,对当月总共售出的白酒、红酒和啤酒总数进行汇总,并计算销售公司的总销售额和各销售员的佣金。知识清单2使用边界值法设计测试用例(2)佣金问题的边界值测试测试用例设计从输入角度分析该问题的输入变量有3个,其对应的等价类划分如下。白酒瓶数,有效等价类[50,5000]红酒瓶数,有效等价类[30,3000]啤酒瓶数,有效等价类[300,30000]按照边界值取值方法,对每个输入变量分别取7个值,具体如下。白酒瓶数,取值{49,50,51,2500,4999,5000,5001红酒瓶数,取值{29,30,31,1500,2999,3000,3001}啤酒瓶数,取值{299,300,301,15000,29999,30000,30001}第一步第二步知识清单2使用边界值法设计测试用例(2)佣金问题的边界值测试测试用例设计保留其中一个变量,让其余变量取正常值,得到测试用例。第三步测试用例白酒红酒啤酒销售额度预期输出test149150015000263232输入非法test250150015000263400佣金:2142test351150015000263568佣金:2142.8test42500150015000675000佣金:4200test549991500150001094832佣金:6299.16test650001500150001095000佣金:6300test750011500150001095168输入非法test825002915000498480输入非法test925003015000498600佣金:3318test1025003115000498720佣金:3318.6test112500299915000854880佣金:5099.4test122500300015000855000佣金:5100test132500300115000855120输入非法test1425001500299601495输入非法test1525001500300601500佣金:3832.5test1625001500301601505佣金:3832.5test172500150029999749995佣金:4574.9test182500150030000750000佣金:4575test192500150030001750005输入非法测试用例设计完成?设计是否合理?知识清单2使用边界值法设计测试用例(2)佣金问题的边界值测试测试用例设计测试用例白酒红酒啤酒销售额度预期输出test1503029913495输入非法test2503030013500佣金:540test3503030113505佣金:540.2test4505052017000佣金:680test5606054319995佣金:799.8test6606054420000佣金:800test7606054520005佣金:800.05test810090148035000佣金:950test9150120107944995佣金:1049.95test10150120108045000佣金:1050test11150120108145005佣金:1050.025test122500210015600750000佣金:4575test1350003000299991349995佣金:7574.975test1450003000300001350000佣金:7575test1550003000300011350005输入非法销售员每月至少需售出白酒50瓶,红酒30瓶,啤酒300瓶,此时销售额为1.35万元。每月最多可售出白酒5000瓶,红酒3000瓶,啤酒30000瓶,此时销售额为135万元。销售额等价类划分为:[1.35,2]、(2,4.5]、(4.5,135]对此等价类分别取边界值为:{略小于1.35,1.35,略大于1.35,1.7,略小于2,2,略大于2,3.5,略小于4.5,4.5,略大于4.5,75,略小于135,135,略大于135}知识清单3使用决策表法设计测试用例(1)决策表法概述决策表是分析和表达多个逻辑条件下执行不同操作情况的工具,决策表通常由4个部分组成。条件桩:列出了问题的所有条件,通常认为列出的条件的先后次序无关紧要。动作桩:列出了问题规定的可能采取的操作,这些操作的排列顺序没有约束。条件项:针对条件桩给出的条件列出所有可能的取值。动作项:与条件项紧密相关,列出在条件项的各组取值情况下应该采取的动作。任何一个条件组合的特定取值及其相应要执行的操作称为一条规则,在决策表中贯穿条件项和动作项的一列就是一条规则。知识清单3使用决策表法设计测试用例(1)决策表法概述决策表是分析和表达多个逻辑条件下执行不同操作情况的工具,决策表通常由4个部分组成。条件桩:列出了问题的所有条件,通常认为列出的条件的先后次序无关紧要。动作桩:列出了问题规定的可能采取的操作,这些操作的排列顺序没有约束。条件项:针对条件桩给出的条件列出所有可能的取值。动作项:与条件项紧密相关,列出在条件项的各组取值情况下应该采取的动作。任何一个条件组合的特定取值及其相应要执行的操作称为一条规则,在决策表中贯穿条件项和动作项的一列就是一条规则。确定规则的个数列出所有的条件桩和动作桩填入条件项和动作项,得到初始决策表合并相似规则,化简。知识清单3使用决策表法设计测试用例(2)超市销售库存问题决策表设计超市中如果某产品销售好并且库存低,则继续销售并增加该产品的进货;如果该产品销售好,但库存量不低,则继续销售;若该产品销售不好,但库存量低,则该产品下架;若该产品销售不好,且库存量不低,如有空货架,则继续销售,如果没有空货架,则该产品下架。超市销售库存决策表构造过程如下:
知识清单3使用决策表法设计测试用例(2)超市销售库存问题决策表设计知识清单3使用决策表法设计测试用例(2)超市销售库存问题决策表设计决策表法适用于下列情况:
规格说明以决策表形式给出,或很容易转换成决策表。
条件的排列顺序不会也不应影响执行哪些操作。
规则的排列顺序不会也不应影响执行哪些操作。
每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。知识清单3使用决策表法设计测试用例(3)房屋中介费问题的决策表测试用例设计某房产中介公司的中介费政策如下:如果房屋销售总价少于10万元,那么基础中介费将是销售额的2%;如果房屋销售总价大于10万元,但少于100万元,那么基础佣金将是销售额的1.5%,外加1000元;如果销售额大于100万元,那么基础中介费将是房屋销售总价的1%,外加1500元。另外房屋销售单价和销售的套数对中介费也有影响。如果单价低于1万元/,则外加基础中介费的5%,此外若是老顾客,则减免外加基础中介费;若单价在1万元/以上,但低于2万元/,则外加基础中介费的2.5%,若是老顾客,则减免外加基础中介费;若单价在2万元/以上,则减免外加基础中介费,若是老顾客,则减去基础中介费的5%。知识清单3使用决策表法设计测试用例(3)房屋中介费问题的决策表测试用例设计某房产中介公司的中介费政策如下:如果房屋销售总价少于10万元,那么基础中介费将是销售额的2%;如果房屋销售总价大于10万元,但少于100万元,那么基础佣金将是销售额的1.5%,外加1000元;如果销售额大于100万元,那么基础中介费将是房屋销售总价的1%,外加1500元。另外房屋销售单价和销售的套数对中介费也有影响。如果单价低于1万元/,则外加基础中介费的5%,此外若是老顾客,则减免外加基础中介费;若单价在1万元/以上,但低于2万元/,则外加基础中介费的2.5%,若是老顾客,则减免外加基础中介费;若单价在2万元/以上,则减免外加基础中介费,若是老顾客,则减去基础中介费的5%。知识清单3使用决策表法设计测试用例(3)房屋中介费问题的决策表测试用例设计分析各种输入情况,列出为房屋销售总价、单价、客户性质的有效等价类。房屋销售总价的有效等价类:S1:{0≤Sale<100000}S2:{100000≤Sale<1000000}S3:{Sale≥1000000}房屋销售单价的有效等价类:P1:{Price<10000}P2:{10000≤Price<20000}P3:{Price≥20000}客户性质的有效等价类:B1:{新客户}B2:{老客户}01知识清单3使用决策表法设计测试用例(3)房屋中介费问题的决策表测试用例设计分析程序的规格说明,并结合以上等价类划分的情况,给出问题规定的可能采取的操作(即列出所有的动作桩)。考虑各种有效的输入情况,程序中可能采取的操作有以下6种:A1:基础中介费为销售总价的2%A2:基础中介费为(销售总价的1.5%+1000)元A3:基础中介费为(销售总价的1%+1500)元A4:外加基础中介费的5%A5:外加基础中介费的2.5%A6:减去基础中介费的5%02知识清单3使用决策表法设计测试用例(3)房屋中介费问题的决策表测试用例设计画出决策表。03知识清单3使用决策表法设计测试用例(3)房屋中介费问题的决策表测试用例设计04测试用例销售总价(元)销售单价(元)客户性质预期输出test1500005000新客户1050test2500005000老客户1000test35000015000新客户1025test45000015000老客户1000test55000025000新客户1000test65000025000老客户950test75000005000新客户8925test85000005000老客户8500test950000015000新客户8712.5test1050000015000老客户8500test1150000025000新客户8500test1250000025000老客户8075test1315000005000新客户17325test1415000005000老客户16500test15150000015000新客户16912.5test16150000015000老客户16500test17150000025000新客户16500test18150000025000老客户15675知识清单4使用因果图法设计测试用例(1)因果图法概述等价类划分法和边界值分析法都着重考虑输入条件,而没有考虑到输入条件的各种组合情况,也没有考虑到各个输入条件之间的相互制约关系。因此,必须考虑采用一种适合于多种条件的组合,相应能产生多个动作的形式来进行测试用例的设计,这就需要采用因果图法。因果图法就是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种情况的组合。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。和都可取值0或1,0表示某状态不出现,1表示某状态出现。知识清单4使用因果图法设计测试用例(1)因果图法概述在实际问题中,输入状态相互之间还可能存在某些依赖关系,称为约束。输出状态之间也往往存在约束,在因果图中,以特定的符号标明这些约束。对输入条件的约束有:E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1。I约束(或):a、b和c中至少有一个必须是1,即a、b和c不能同时为0。O约束(唯一):a和b中必须有一个且仅有一个为1。R约束(要求):a是1时,b必须是1,即a是1时,b不能是0。对输出条件的约束只有M约束:M约束(强制):若结果a是1,则结果b强制为0。
知识清单4使用因果图法设计测试用例(2)利用因果图法生成测试用例的步骤分析软件规格说明书中的输入/输出条件,并且分析出等价类。分析规格说明中的语义的内容,通过这些语义来找出相对应的输入与输入之间、输入与输出之间的对应关系。01将对应的输入与输入之间、输入与输出之间的关系连接起来,并且将其中不可能的组合情况标注成约束或者限制条件,形成因果图。02将因果图转换成决策表。03将决策表的每一列作为依据,设计测试用例。04知识清单4使用因果图法设计测试用例(3)自动饮料机软件的因果图测试用例设计某自动饮料机销售罐装饮料,销售的饮料包括可乐、雪碧。每罐饮料的单价为1元5角,且仅接受硬币。若投入1元5角的硬币,按下“可乐”或“雪碧”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退出5角硬币。①分析案例说明,列出原因和结果。根据需求,可以分析出自动饮料机的业务中一共存在4个原因和4个结果。知识清单4使用因果图法设计测试用例(3)自动饮料机软件的因果图测试用例设计
知识清单4使用因果图法设计测试用例(3)自动饮料机软件的因果图测试用例设计③根据因果图,建立决策表。知识清单4使用因果图法设计测试用例(3)自动饮料机软件的因果图测试用例设计④根据决策表设计测试用例。测试用例输入数据预期结果备注(规则)test1投入1元5角硬币,按下“可乐”按钮送出“可乐”饮料6test2投入1元5角硬币,按下“雪碧”按钮送出“雪碧”饮料7test3投入1元5角硬币,不按钮系统不做处理8test4投入2元硬币,按下“可乐”按钮送出“可乐”饮料,退还5角硬币10test5投入2元硬币,按下“雪碧”按钮送出“雪碧”饮料,退还5角硬币11test6投入2元硬币,不按钮系统不做处理12test7按下“可乐”按钮不投币系统不做处理14test8按下“雪碧”按钮不投币系统不做处理15知识清单5使用场景法设计测试用例(1)场景法概述场景法是黑盒测试中的一种方法,使用其他测试方法(例如等价类划分法、边界值分析法等)设计测试用例时能够测试大部分业务功能,但是在测试涉及业务流程的软件系统时,更适合使用场景法。场景法也叫流程图法,是指通过模拟用户操作软件时的场景来对系统的功能或业务流程进行测试。场景法通常用于测试多个功能之间的组合使用情况,以及用于集成测试、系统测试和验收测试阶段。根据用户操作流程的正确性来划分时,场景法将用户的操作流程分为基本流和备选流。基本流也称为有效流,用来模拟用户正确的操作流程;备选流也称为无效流、错误流,用来模拟用户错误的操作流程。知识清单5使用场景法设计测试用例(1)场景法概述基本流有1条,备选流有4条。备选流可以从基本流开始,例如备选流1.备选流2和备选流3;备选流也可以从备选流开始,例如备选流4。通过分析可以确定的测试场景如下:
场景1:基本流
场景2:基本流→备选流1
场景3:基本流→备选流1→备选流2
场景4:基本流→备选流1→备选流3
场景5:基本流→备选流1→备选流3→备选流4
场景6:基本流→备选流2
场景7:基本流→备选流3
场景8:基本流→备选流3→备选流4知识清单5使用场景法设计测试用例(2)ATM取款场景法测试用例设计ATM可用于提取现金、查询存款余额、转账等。假设需要使用场景法测试某银行ATM的取款业务流程,银行给出的需求规格说明是:用户在ATM中插入有效的银行卡,输入正确的密码后选择取款业务,然后输入取款金额,待出钞后选择退卡即可完成取款。在取款的过程中,如果出现以下4种情况将取款失败,此时选择退卡,结束流程。密码输入错误的次数超过3次。输入的取款金额不是100的倍数。输入的取款金额大于账户余额。输入的取款金额大于ATM取款额度。知识清单5使用场景法设计测试用例(2)ATM取款场景法测试用例设计①通过需求规格说明,画出取款的流程图。知识清单5使用场景法设计测试用例(2)ATM取款场景法测试用例设计②分析图可知,基本流有1条,备选流有5条,具体如下:
基本流:插卡→输入密码→选择取款→输入取款金额→出钞→退卡
备选流1:插卡→输入密码错误(3次以内)→选择取款→输入取款金额→出钞→退卡
备选流2:插卡→输入密码错误(超过3次)→退卡
备选流3:插卡→输入密码→选择取款→输入的取款金额不是100的倍数→退卡
备选流4:插卡→输入密码→选择取款→输入的取款金额大于账户余额→退卡
备选流5:插卡→输入密码→选择取款→输入的取款金额大于ATM取款额度→退卡知识清单5使用场景法设计测试用例(2)ATM取款场景法测试用例设计③通过对基本流和备选流的分析,可以得出6个测试场景,具体如下:场景1:基本流场景2:基本流+备选流1场景3:基本流+备选流1+备选流3场景4:基本流+备选流1+备选流4场景5:基本流+备选流1+备选流5场景6:基本流+备选流2知识清单5使用场景法设计测试用例(2)ATM取款场景法测试用例设计④根据上面列出的6个测试场景来设计测试用例,假设测试的银行卡有效,密码为123456,账户余额为5000元,ATM取款额度为3000元。ATM取款的测试用例如表所示。任务实施NextDate程序是一个有3个变量month(月份)、day(日期)和year(年份)的函数,输出为输入日期后一天的日期。例如,如果输入为1998年6月18日,则NextDate程序的输出为1998年6月19日。要求输入变量month、day和year都是整数值,并且满足以下条件。
Conl:1≤month<12
Con2:1≤day<3l
Con3:1800≤year<2050如果month、day和year中任何一个条件失效,则NextDate都会产生一个输出,指明相应的变量超出了取值范围,如“无效输入日期”。 任务实施NextDate程序的输入定义域中存在依赖性问题,可以选择决策表法设计测试用例。①为了输出给定日期的下一个日期,NextDate程序能够使用的操作只有5种:day变量的加1和复位操作,month变量的加1和复位操作,year变量的加1操作。列出等价类如下:
Ml:{month:month有30天}
M2:{month:month有31天,12月除外}
M3:{month:month是12月}
M4:{month:month是2月}
D1:{day:1≤day<27}
D2:{day:day=28}
D3:{day:day=29}
D4:{day:day=30}
D5:{day:day=31}
Y1:{year:year是闰年}
Y2:{year:year不是闰年}
任务实施②画出决策表。
任务实施③简化决策表。
任务实施④设计测试用例。
测试用例mouthdayyear预期输出Test191720212021-9-18Test293020202020-10-1Test39312021无效输入日期Test411620202020-1-17Test513120212021-2-1Test6121820212021-12-19Test7123120202021-1-1Test821620202020-2-17Test922820202020-2-29Test1022820212021-3-1Test1122920202020-3-1Test122292021无效输入日期Test132302020无效输入日期任务拓展网易免费邮箱注册界面如图1-20所示,现需要对其注册功能进行测试。相应要求如下。邮箱地址:5~18个字符,可使用字母、数字、下划线,需要以字母开头密码:8-16个字符,需包含大、小写字母和数字手机号码:11位数字任务拓展①应用等价类划分法对邮箱地址、密码和手机号码进行等价类划分。输入条件有效等价类编号无效等价类编号邮箱地址5~18个字符,以字母开头,字母、数字、下划线的组合1少于5个字符4超过18个字符5不以字母开头6包含无效字符(如特殊符号)7密码8~16个字符,包含大、小写字母和数字的组合2小于8个字符8大于16个字符9不包含大写、小写字母或数字中的任意一项10手机号码11位数字3小于或大于11位11含有非数字字符12任务拓展②注册界面除了要验证邮箱地址、密码和手机的正确外,还需要使用决策表验证各个输入组合之间的有效性。任务拓展③网易邮箱注册功能的测试用例如表所示。测试用例邮箱地址密码手机号码预期结果Test1abcde@163.comAbc1234513812345678注册成功Test2abc@163.comAbc1234513812345678注册失败Test3abcde123456789012345@163.comAbc1234513812345678注册失败Test41234abcde@163.comAbc1234513812345678注册失败Test5Abc#de@163.comAbc1234513812345678注册失败Test6abcde@163.comabc1234513812345678注册失败Test7abcde@163.comAbc12313812345678注册失败Test8abcde@163.comAbcsdsf123753634613812345678注册失败Test9abcde@163.comAbc1234513812345注册失败Test10abcde@163.comAbc123451381234a678注册失败常见问题及解决方法问题描述:测试用例未覆盖所有功能或输入边界,可能导致关键缺陷未被发现。解决方法:(1)使用等价类划分、边界值分析、决策表等方法相结合结合来设计测试用例,确保覆盖率。(2)定期回顾并更新测试用例,以适应新增需求或修改的功能。测试用例设计不全面01问题描述:测试环境的配置不一致或不稳定,导致测试结果不可靠。解决方法:(1)确保测试环境与生产环境保持一致。(2)使用虚拟化或容器技术,保证每次测试环境的一致性。测试环境不稳定02任务小结在本任务中,通过大量的案例讲解了黑盒测试的常见方法,包含等价类法、边界值法、决策表法、因果图法、场景法。在任务实施中通过需求规格说明,分析测试需求,并选择相应的测试方法进行功能测试及设计合理的测试用例。软件测试技术课程团队Thanks软件测试技术课程团队计算器的单元测试项目二
掌握常见动态白盒测试方法了解JUnit的历史和发展掌握JUnit的基本概念理解JUnit的注解和断言知识目标能够独立完成单元测试用例设计能够搭建JUnit测试环境编写和执行JUnit测试用例技能目标培养问题解决能力发展细致入微的工作习惯增强团队合作和沟通技能素质目标教学目标任务2-1单元测试用例设计任务2-2编写第一个JUnit单元测试用例LEARNING目录任务2-3实现简单计算器程序的JUnit单元测试什么是单元测试为什么要有单元测试1单元测试用例设计如何开展单元测试单元测试用例设计方法任务描述根据实训基本环境,分析被测代码,使用逻辑覆盖和独立路径覆盖完成测试用例设计。重点和难点重点:1.理解和掌握单元测试的基本概念、原理和方法。2.学会使用动态白盒测试技术(如语句覆盖、判定覆盖、条件覆盖、路径覆盖等)来设计单元测试用例。3.分析被测程序的逻辑结构,确定测试的重点和难点。难点:1.准确理解被测程序的逻辑和代码结构,特别是复杂的控制流和数据流。2.设计出能够全面覆盖程序内部逻辑和代码结构的测试用例。3.在有限的资源和时间内,优化测试用例,提高测试效率。知识链接1.单元测试的基本概念与原理。2.动态白盒测试的主要技术:语句覆盖、判定覆盖、条件覆盖、路径覆盖等。3.程序逻辑结构分析方法:控制流图、数据流图等。4.测试用例设计原则与技巧。任务完成步骤1.分析被测程序的逻辑结构和代码结构,理解其功能与需求。2.确定动态白盒测试的覆盖标准(如语句覆盖、判定覆盖等)。3.使用逻辑结构分析方法(如控制流图、数据流图)绘制程序流程图。4.根据覆盖标准和程序流程图设计测试用例,包括输入数据、预期输出和测试步骤。任务工单JUnitJMeterNmap单元测试是针对软件中的最小可测试单元进行检查和验证的一种测试方法。在面向对象的编程中,最小可测试单元通常指的是一个类或方法。单元测试的主要目的是确保每个单元的功能都是正确的,从而为整个软件的正确性打下基础。知识清单1什么是单元测试SeleniumAppium知识清单2为什么要有单元测试通过单元测试,可以在代码开发的早期阶段就发现潜在的问题,避免问题在后续开发过程中被放大或传播。早期发现问题单元测试能够促使开发者编写更加健壮、可维护的代码,因为它要求代码具备良好的结构和清晰的接口。提高代码质量通过自动化的单元测试,可以确保代码在不同环境和条件下的行为都是一致的,从而提高代码的可信度增强代码可信度单元测试的目的单元测试是唯一一次有保证能够代码覆盖率达到100%的测试知识清单3如何开展单元测试基本原则与最佳实践01隔离性原则只测试一个单元的功能,避免与其他单元产生依赖或交互。07及时修复失败的测试当测试失败时,应尽快定位并修复问题,以确保代码的正确性。02自动化原则能够自动执行,以便在代码修改或重构后能够迅速验证其正确性。06测试简单清晰避免在测试代码中引入复杂的逻辑或依赖。03断言验证使用断言方法来验证单元的行为是否符合预期。05有意义的测试用例确保测试用例能够覆盖各种正常和异常情况。04测试覆盖率尽量提高测试的覆盖率,即尽可能多的测试代码中的不同路径和条件。知识清单4单元测试用例设计方法(1)逻辑覆盖
语句覆盖语句覆盖就是设计若干测试用例运行被测程序,使得程序中每一可执行语至少执行一次。这里的“若干”,意味着使用测试用例越少越好。语句覆盖在测试中主要发现缺陷或错误语句。语句覆盖率=被评价到的语句数量/可执行的语句总数*100%语句覆盖的缺点:对程序执行逻辑的覆盖很低。 知识清单4单元测试用例设计方法(1)逻辑覆盖判定覆盖判定覆盖有时也称分支覆盖,就是指设计若干测试用例,运行被测程序,使得每个判定的取真分支和取假分支至少评价一次。判定路径覆盖率=被评价到的判定路径数量/判定路径的总数*100%判定覆盖的缺点:判定覆盖虽然把程序所有分支均覆盖到,但其主要对整个表达式最终取值进行度量,忽略了表达式内部的取值。
知识清单4单元测试用例设计方法(1)逻辑覆盖
条件覆盖条件覆盖是指设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。条件覆盖率=被评价到的条件取值的数量/条件取值的总数*100%条件覆盖的缺点:只考虑每个判定语句中的每个表达式,没有考虑各个条件分支(或者涉及不到全部分支),即不能够满足判定覆盖。 知识清单4单元测试用例设计方法(1)逻辑覆盖
条件/判定覆盖条件/判定覆盖是指设计足够多的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。条件/判定覆盖率=被评价到的条件取值和判定分支的数量/(条件取值点数+判定分支总数)*100%条件/判定覆盖的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。 知识清单4单元测试用例设计方法(1)独立路径覆盖测试路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。完成路径测试的理想情况是做到路径覆盖,对于比较简单的程序实现路径覆盖是可能做到的,但对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的。在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。这种测试方法就是通常所说的基本路径测试方法。
知识清单4单元测试用例设计方法(1)独立路径覆盖测试独立路径覆盖测试方法包括以下4个步骤。①画出程序控制流图:描述程序控制流的一种图示方法。控制流图有以下几个特点:
具有唯一入口结点,即源结点,表示程序段的开始语句。
具有唯一出口结点,即汇结点,表示程序段的结束语句。
结点由带有标号的圆圈表示,表示一个或多个无分支的源程序语句。
控制流线由带箭头的直线或弧表示,可称为边,代表控制流的方向。知识清单4单元测试用例设计方法(1)独立路径覆盖测试②计算程序的圈复杂度:从程序的环路复杂度可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。
通过控制流图的区域个数来计算公式:V(G)=区域数程序的环路复杂性为控制流图的区域数(即封闭的区域数+1)。
通过控制流图的边数和结点数来计算公式:V(G)=e-n+2其中,e即edge,表示图中边的数目;n即node,表示结点个数。
通过控制流图中的判定结点个数来计算公式:V(G)=P+1其中,P表示判定结点的数目。所谓判定节点数,即有多个分支的节点。知识清单4单元测试用例设计方法(1)独立路径覆盖测试③导出独立路径:根据圈复杂度和程序结构设计获得独立路径。④准备测试用例:确保基本路径集中每一条路径的执行程序控制流图中只有两种图形符号,即每一个圆圈称为流图的一个结点,代表一条或多条无分支的语句或源程序语句;箭头称为边或连接,代表控制流。任何过程设计都要被翻译成控制流图,常见控制结构的控制流图如图所示。顺序结构
IF选择结构
While/Until循环结构
Case多分支结构任务实施对下面程序片段按照逻辑覆盖、独立路径覆盖方法编写测试用例。1.int
function(int
x,int
y,int
z)2.
{3.
if(y>1
&&
z==0)4.
{5.
x=(int)(x/y)6.
}7.
if(y==2
||
x>1)8.
{9.
x=x+110.
}11.return
x;12.}任务实施1.实现语句覆盖测试用例编写为了使每条语句都能够至少执行一次,我们可以构造以下测试用例:输入:x=4,y=2,z=0执行路径为:sacbed逻辑符号&&写成了||逻辑符号||写成了&&语句覆盖虽然可以测试执行语句是否被执行到,但却无法测试程序中存在的逻辑错误。因此,语句覆盖是一种弱覆盖。任务实施2.实现判定覆盖测试用例编写if(y>1
&&
z==0)记为P1if(y==2
||
x>1)记为P2逻辑符号&&写成了||逻辑符号||写成了&&判定覆盖仍然具有和语句覆盖一样无法发现逻辑判断符号“&&”误写了“||”的逻辑错误。判定覆盖仅仅判断判定语句执行的最终结果而忽略每个条件的取值,也属于弱覆盖。用例编号测试输入判断P1判断P2XYZTestCase1130TFTestCase2311FT任务实施3.实现条件覆盖测试用例编写if(y>1
&&
z==0)记为P1,
y>1记为C1,z==0记为C2if(y==2
||
x>1)记为P2,y==2记为C3,x>1记为C4从条件覆盖的测试用例可知,使用2个测试用例就达到了使每个逻辑条件取真值与取假值都至少出现了一次,但从测试用例的执行路径来看,条件分支覆盖的状态下仍旧不能满足判定覆盖,即没有覆盖bd这条路径。相比于语句覆盖与判定覆盖,条件覆盖达到了逻辑条件的最大覆盖率,但却不能保证判定覆盖。用例编号测试输入条件C1条件C2条件C3条件C4XYZTestCase1120TTTFTestCase2211FFFT任务实施4.实现条件/判定覆盖测试用例编写if(y>1
&&
z==0)记为P1,
y>1记为C1,z==0记为C2if(y==2
||
x>1)记为P2,y==2记为C3,x>1记为C4用例编号测试输入判定P1判定P2条件C1条件C2条件C3条件C4XYZTestCase1420TTTTTTTestCase2111FFFFFF条件/判定覆盖满足了判定覆盖准则和条件覆盖准则,弥补了二者的不足。但是条件/判定覆盖不一定比条件覆盖的逻辑更强。条件/判定覆盖的缺点是没有考虑条件的组合情况。任务实施5.实现独立路径测试用例编写(1)根据上述任务实施中的程序片段,绘制程序控制流图1.int
function(int
x,int
y,int
z)2.
{3.
if(y>1
&&
z==0)4.
{5.
x=(int)(x/y)6.
}7.
if(y==2
||
x>1)8.
{9.
x=x+110.
}11.return
x;12.}任务实施5.实现独立路径测试用例编写(2)计算环路复杂度V(G)=3(2个封闭区域+1个开放区域)(3)确定线性无关路径路径1:3.7.11路径2:1路径3:.11任务实施5.实现独立路径测试用例编写(4)设计测试用例编号输入数据预期输出覆盖路径1y=0,z=1,x=0x=0路径12y=3,z=0,x=1x=0路径23y=2,z=0,x=2x=2路径3任务拓展下述图形识别代码的功能是:输入3个整数A、B、C,分别作为三角形的3条边,通过程序判断这3条边是否能构成三角形。如果能构成三角形,则判断三角形的类型(如等边三角形、等腰三角形、一般三角形)。要求:输入的3个整数A、B、C必须满足条件:1≤A<200,1<B<200,1<C<200。请根据独立路径测试方法完成用例设计。1
INTABC //三角形的三边2
IF((A+B>C)&&(A+C>B)&&(B+C)>A)
//是否满足三角形成立条件3 IF((A==B)&&(B==C))
//等边三角形4 等边三角形5
ELSEIF((A==B)||(B==C)||(A==C))
//等腰三角形6 等腰三角形7 ELSE //一般三角形8 一般三角形9
ELSE10 不是三角形11
END任务拓展步骤1:导出程序控制流图对程序进行分析,程序流程图如图2-5,程序的执行路径如图2-6。图中数字是代码行号,当执行程序输入数据时,程序根据条件判断沿着不同的路径执行。任务拓展步骤2:求出程序环形复杂度根据程序环形复杂度的计算公式,求出程序路径集合中的独立路径数目。公式1:V(G)=11-9+2,其中11是控制流图G中边的数量,9是控制流图中结点的数目。公式2:V(G)=3+1,其中3是控制流图G中判断结点的数目。公式3:V(G)=4,其中4是控制流图G中区域的数目。注意:计算区域时应包括图外部的范围。步骤3:找出独立路径根据上面环形复杂度的计算结果,路径集合中有4条独立路径:path1:1→2→3→4→11path2:1→2→3→5→6→11path3:1→2→3→5→8→11path4:1→2→10→11任务拓展步骤4:设计测试用例 编号测试用例路径预期输出ABCtest1666path1等边三角形test2668path2等腰三角形test3345path3一般三角形test4336path4不构成三角形常见问题及解决方法问题描述:测试用例未能覆盖代码中的所有路径、分支和条件,导致某些代码未被测试。解决办法:(1)使用覆盖率工具:使用代码覆盖率分析工具来检查测试覆盖率,识别未覆盖的部分。(2)增加测试用例:根据覆盖率报告,设计并增加测试用例,确保所有路径、分支和条件都被覆盖。(3)代码审查:通过代码审查识别复杂逻辑和潜在的遗漏,并设计相应的测试用例。覆盖率不足01问题描述:代码逻辑复杂,包含多个嵌套条件和循环,难以设计全面的测试用例。解决办法:(1)分解问题:将复杂的代码逻辑分解为多个较小的单元,分别进行测试。(2)控制流图:绘制控制流图,帮助理清代码中的所有路径和分支,确保设计的测试用例覆盖所有情况。复杂代码逻辑02任务小结包含逻辑覆盖和独立路径测试方法,逻辑覆盖中包括:语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖。通过控制流图的分析,清晰地理解了代码的逻辑结构,并学会了如何利用独立路径测试方法来设计和实现测试用例。掌握动态白盒测试的常见方法理解什么是单元测试,以及它为何在软件开发过程中占据重要地位。了解单元测试是确保代码质量和可靠性的关键步骤,能够帮助及早发现并修复潜在问题,减少后期维护成本。理解单元测试的基本概念与重要性为什么选择JUnitJUnit特点2编写第一个JUnit单元测试用例任务工单任务描述根据实训基本环境,完成JUnit测试环境搭建,并运行测试用例检验环境搭建是否成功。重点和难点重点:1.JUnit框架的基本概念和功能。2.确保测试用例运行正确,验证环境配置的有效性。难点:1.正确配置开发环境,使其能够识别和使用JUnit。2.排查和解决安装和配置过程中遇到的各种问题。知识链接1、JUnit的基本概念和功能。2、安装JDK,并配置好环境变量,选择并安装合适的IDE(如Eclipse、IntelliJIDEA),了解基本使用方法。3、从JUnit官方网站下载最新版本的JUnit库,在I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年天津和平产业发展集团有限公司招聘笔试真题
- 2025年哈尔滨市秋实学校招聘笔试真题
- 丁酮泄漏应急处置预案(3篇)
- 农商行315应急预案(3篇)
- 设备监理师《设备监理维护规范》冲刺试卷(带答案)
- 2026年黑龙江七台河中小学教师招聘考试真题解析含答案
- 2026年山东省青岛市重点学校高一入学语文分班考试试题及答案
- 2026年新疆(高考)英语考试真题及参考答案
- 2026年青海省海东市重点学校初一入学语文分班考试试题及答案
- 2026年四川省宜宾市社区工作者考试卷附答案
- 2026年山东齐兴发展集团有限公司及权属企业招聘(42人)考试模拟试题及答案详解
- 2026年内蒙古自治区医师定期考核试题附答案
- 二升三语文暑假特色作业(2026版)
- 2027年高考化学复习必刷题-化学反应与能量(解答大题)
- 放射性肺炎诊疗专家共识
- 2026年档案修裱技术规范与破损档案抢救修复流程考核
- 2026年中国邮政储蓄银行金融同业部同业业务面试
- 《保障农民工工资支付条例》宣贯会
- 浙江省A9协作体高一上学期期中考试 化学试题【含答案详解】
- 护理文书书写规范与法律风险防范
- 啤酒节策划总体方案
评论
0/150
提交评论