基于JUnit5软件单元测试实践教学.pdf
《基于JUnit5软件单元测试实践教学.pdf》由会员分享,可在线阅读,更多相关《基于JUnit5软件单元测试实践教学.pdf(6页珍藏版)》请在咨信网上搜索。
1、189计 算 机 教 育Computer Education第 8 期2023 年 8 月 10 日中图分类号:G642基于 JUnit5 软件单元测试实践教学孙 庚,贺 平(广州番禺职业技术学院 信息工程学院,广东 广州 511483)摘 要:分析软件单元测试的内涵和作用,从单元测试实践教学的设计理念与实现过程出发,围绕教学理念、设计思想、技术运用、实现过程及教学实践活动阐述基于 JUnit5 的单元测试教学实践过程,最后说明教学效果。关键词:单元测试;实践教学;JUnit5;教学设计;工程实现文章编号:1672-5913(2023)08-0189-060引 言软件测试是软件质量保障最重要的
2、措施与手段,而单元测试是软件生命周期中测试级别最低、以针对软件实现的代码为对象的测试活动。依据 Mike Cohn 提出的软件测试金字塔模型,其核心观点是“底层单元测试应多于依赖 UI(用户界面)的高层端到端测试”1。软件测试的理论与实践反复证明了单元测试发现软件缺陷最早、成本最低、效率最高。如果更高于单元测试级别的测试失败了,不仅揭示了代码存在着缺陷,并表明单元测试的质量缺失。无论是以“代码先行,测试其后”的传统开发模式,还是以“用例先行,编码依据”的测试驱动的敏捷方法,单元测试都是软件开发中的一项核心技术与实践。软件业界明确要求软件工程师应具备能够完成单元测试工作任务的相关知识与娴熟技能。
3、软件测试课程在高校软件工程、软件技术类专业中已普遍开设,单元测试作为软件测试的重要内容,如何有效提升软件单元测试实践教学的质量与效能,已成为教学活动普遍重视及需要有效解决的实际问题。1单元测试的内涵单元测试是针对软件的最小可测试单元而开展的一系列测试活动,从而发现单元中的缺陷或错误。最小可测单元通常指函数、类或由此而构成的程序模块。代码先行的单元测试依据软件详细设计文档及程序代码进行。单元测试中针对单元的软件功能与可观测的软件行为进行检查及验证,通常运用黑盒测试策略,而针对单元的软件内部(逻辑与数据流)进行程序结构的分析,通常运用白盒测试技术。以实现A-TRIP(Andrew Hunt&Dav
4、id Thomas)2为目标,可建立优质单元测试的标准。(1)Automatic 测试应能自动运行,准备数据执行测试验证结果全过程无须人工干预。(2)Thorough 优质的测试应为测试了所有可能出现问题的各种情况。(3)Repeatable 能反复运行且每次运行结果都应一样。(4)Independent 每个测试都有且只有一个关注点,多个测试之间无顺序依赖。(5)Professional 测试代码也是代码,须按产品代码标准编写与维护。2JUnit单元测试框架单元测试首要的任务就是选择适用的单元测试框架。测试框架的选择与被测对象的实现语言密切相关。JUnit 是由 Kent Beck 和 Er
5、ich Gamma基金项目:广东省教育厅产教融合创新平台项目“面向国产软件生态测试的产教融合创新平台”(2020CJPT001)。第一作者简介:孙庚,女,副教授,研究方向为软件技术、软件测试等,。2023190计 算 机 教 育Computer Education所创建的单元测试框架,事实上已成为 Java 程序单元测试的业界标准,目前最新版本为 JUnit5,具有如下特点。(1)Lambda 支 持 高 质 量 开 发 测 试 代 码。JUnit5 支持 Lambda 表达式3,代码简洁无冗余,开发出的测试代码更易维护。(2)优化参数化测试脚本开发。参数化单元测试是指通过多组不同的参数数据去
6、驱动运行同一个测试方法,以达到覆盖多个测试用例的目的。JUnit5 的 JUnitParams 模块库支持多种注解形式描述的参数源,实现参数化测试只需定义一个带参数、用 ParameterizedTest 和数据源注解标记的测试方法即可,从而可便捷参数化测试脚本开发。(3)多扩展性支持减少测试类数目。JUnit5实现了可使用多个扩展(多个运行器),或可接入其他测试引擎4。这使得参数化与非参数化测试可以混合于同一个测试类中,极大减少了测试类的数目,使测试脚本更易维护、管理,提高了测试效率。3教学设计与实现3.1单元测试实践教学设计理念单元测试实践教学是“软件项目包的测试(单元与集成测试)”课程的
7、主要教学内容及活动。实施这一教学活动的前提是学习者已具备阅读、理解和编写 Java 应用程序的能力,熟悉常用的黑盒与白盒测试方法。通过单元测试的实践教学,期望学习者能够更深刻理解并掌握单元测试的概念、流程、方法和工具运用,能够灵活运用所学知识进行测试分析、测试设计、测试实施、测试执行等单元测试的过程活动,提升实际工作的技能。单元测试实践教学的目标如图 1 所示。实践教学设计将依据实际测试活动中的工作过程、项目引领、案例驱动及工程启蒙的理念 进行。(1)基于过程。依据单元测试工作流程(如图 2 所示),设计为 6 个教学场景5。图 1 单元测试实践教学的目标分析图 2 单元测试工作流程教育与教学
8、研究第 8 期191(2)项目引领。单元测试实践教学的项目设计,是以项目作为引领。一些项目设计源于软件工程中的实际工作内容,如 Json 解析器、宠物商城等,另一些项目设计则与全国大学生软件测试大赛-开发者测试赛项内容相对接,直接利用竞赛中的真题或样题作为实践教学项目。由此,设置了较高的教学目标,实现赛教资源融通。开发者测试赛项分为预选赛、省赛、全国总决赛。利用预选赛不限人数的规则,可要求选课学生必须参加,并将赛事结果作为考核成绩,“赛教评”融为一体。项目引领的设计策略体现了“实战性”和教学的高标准,有利于培养和选拔优秀 人才。(3)案例驱动。案例驱动教学设计,遵循知识点覆盖、内容包含和难度递
9、进的原则。设计若干典型的单元测试“实战”场景,并体现出案例的层次递进、逻辑关联和工程因素。通过案例驱动,引导学习者亲历一项实际测试项目的内容包含,学会如何联系理论知识,怎样运用技术,发现问题、思考问题和解决问题的方法及过程,提高实践学习的收效,逐步提高实践能力。(4)工程启蒙。一项完整的软件项目从规划设计到完成实施,业界是以工程的形式组织和推进。在实践教学的设计与实现过程中,测试项目中融入了规划设计、计划部署、组织实施、进度控制、项目管理及项目总结等工程内容和要素。这样,在培养知识应用与技能训练的同时,通过实践学习获得工程意识、工程概念、工程过程的经历与体验。3.2单元测试实践教学设计实践教学
10、设计选用的被测对象是用 Java 开发的程序,并选用业界广泛运用的 JUnit5 作为测试框架。(1)项目规划。项目规划确定了项目设计、项目评审、项目实施及项目总结等内容及形式,其目标是被测项目的选取与学习者的认知基础、接受能力和课程教学目标达到契合,规划应具可行性和有效性,即可实现、可实施、可评价。(2)项目设计。采用由简单到复杂的三阶项目设计过程,如图 3 所示。每阶项目内容及教学目标,看似相对独立,实则紧密关联,形成由简到繁、由易到难的递进形态。前阶项目学习中所获知识与技能是实施后阶项目的前提条件与基础,后阶项目既综合运用了前阶项目的所学所获,又设置了构建本阶项目所需的特定内容和目标,不
11、断加深实践的深度和难度,提升分析问题和解决问题的能力。(3)项目过程。基于工作过程、教学目标分析项目内容特征,制作教学案例,实施教学活动(表 1)。图 3 递进式的三阶项目设计表 1 教学活动、案例及覆盖的知识点教学活动教学案例名称覆盖知识点独立于任何项目单元测试概述单元测试的定义、对象、目标、测试依据、主要任务、测试策略等单元测试的要素与工作过程单元测试的模式、环境(驱动和桩)、单元测试的工作过程初阶项目测试分析项目总体分析测试分析的概念、内容和方法初阶项目测试计划制订项目的单元测试计划测试计划的依据与内容初阶项目测试设计单元测试用例设计白盒与黑盒测试方法初阶项目测试实施JUnit5 学习和
12、工程运用准备JUnit5 的组成、测试类与测试方法、测试实例生命周期、注解在项目中准备和部署测试环境(构建工程环境)在 Eclipse(或 IntelliJ IDEA)的 Maven 项目中添加 JUnit5 依赖、测试代码与被测代码在项目中存放的位置2023192计 算 机 教 育Computer Education3.3单元测试实践教学的实现以初阶项目为例,项目为 NextDate 问题的Java 程序单元测试。NextDate 问题简述如下:NextDate 程序有 3个输入变量 year、month、day(均为整数型),分别作为输入日期的年、月、日,通过程序计算输出该输入日期在日历上
13、的下一天的日期(例如输入 2004 年 12 月 31 日,程序计算输出的日期应为2005年1月1日),如果输入的数据无效(例如 2004 年 2 月 31 日),则程序统一给出提示信息“无效输入”。NextDate 计算问题因输入域之间具有依赖关系而具有一定的复杂性。3.3.1 测试分析测试分析是指根据测试依据提取被测软件中需进行测试的测试项的过程活动。在代码先行模式下的单元测试分析中,测试依据通常是软件的详细设计说明、受测源代码等。NextDate 项目提供的受测源代码本身是正确的程序(不存在缺陷或错误),对该项目中每个类的每个方法都要进行充分的动态测试,对所有受测源代码进行逻辑覆盖。3.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JUnit5 软件 单元测试 实践 教学
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。