OBE理念下的软件测试教学改革探索
2021-12-21朱慧李菲曹阳顾问
朱慧 李菲 曹阳 顾问
(三江学院计算机科学与工程学院,江苏南京 210012)
1 应用型人才培养目标与OBE理念的培养模式
应用型本科是以应用技术类型为办学定位,根据当前经济、社会发展的需要制定课程体系、学科方向,设计教学内容、教学方法[1]。在当前社会信息化、智能化快速发展与迭代的过程中,社会对应用型人才的需求缺口越来越大,这就为应用技术型院校的发展提出了更高的要求。而如何培养出满足社会需求的应用型人才涉及人才培养模式的问题。当下主流的培养模式是采用OBE模式,即将OBE教育理念引入人才培养过程中。
Outcomes-based Education(简称OBE),基于学习产出的教育模式,也称为成果导向教育。在该模式下,有别于传统教育强调以输入为教育结果的理念(例如学生的在校学习数、教学方式等等),学生的学习成果、是否成功才是决定性的[2]。在OBE的教育理念中,对学生的最终学习成果,也就是学生在毕业时具备什么样能力,施教者应有清晰的设想,并通过对教学体系的反向设计,确保学生毕业时的能力达到教学预期,从而实现人才培养的最终目标。
2 当前软件测试课程教学中的主要问题
OBE教育理念强调向以能力为导向的教育方式转变[3],即以学生通过课程学习获得的实际能力为中心,反向推导出所需的教学策略、教学模式、教学内容[4,5]。
基于此理念,软件测试这门课程培养出来的毕业生,应当具备如下能力:
(1)过硬的测试设计能力:测试工程师要掌握业务知识、开发技术和测试方法,并能合理、灵活运用。
(2)高效的测试执行能力:测试工程师需要掌握测试工具和一定的开发技术,能将好的测试设计与实用测试工具相结合,并通过不断测试,找出软件存在的问题。
(3)持之以恒的学习能力:不断地吸纳知识、应用知识是一个测试人员应具备的基本素质。
然而,以笔者多年的软件测试一线从业经历以及软件测试课程专职教师的切身体会来看,当前的软件测试课程教学模式下培养的毕业生,由于上述能力的匮乏,难以满足企业的用人需求。
以当下多数企业采用的敏捷开发模式为例,在敏捷开发过程中,需求分析阶段测试专家就参与到需求的讨论并完成测试方案设计,当完成故事拆分以及特性团队任务认领完成后,各特性团队内容的QA们需要同步完成相关特性的测试环境搭建、测试用例编写与执行、单元测试用例编写、系统CI自动化用例编写、特性演示以及自动化用例移交等。各特性在特性团队终结后,后端测试团队一部分维护整个项目的CI自动化用例(包括自动化用例运行环境的日常维护),一部分则投入到探索性测试、性能测试、可靠性测试和安全测试等一系列专项质量保证测试工作中。而我们在这里面的每个环节,都需要灵活运用学校里软件测试课程上学到的理论知识和测试工具。更有甚者,部分软件测试岗位是专职的自动化测试工具研发、软件测试开发相结合等等。
由此可见,仅仅掌握基本的软件测试设计方法,掌握常见的软件测试工具的使用,了解典型的软件测试阶段分类是远远不满足企业对测试人员的综合能力要求的。而这恰恰反映出当前软件测试课程教学中存在的几个主要问题:
(1)理论知识滞后
软件测试相关理论知识日新月异,不断迭代更新,而我们教学的教材变更频度相对是有限的,这就会出现毕业生走上软件测试工作岗位却要重新学习企业里使用到的相关理论知识。比如探索性测试,在当下的大型企业里后端的测试工作除去自动化运维部分,大部分采用探索性测试的方式展开,而目前的教学仅仅把这部分内容当作一个拓展,甚至不是考察的点。理论知识的滞后势必会导致学生毕业时的知识储备与企业的实际要求脱节,能力不能达到企业预期。
(2)实验效果不理想
当前的软件测试课程(以64个课时为例),理论课时和实验课通常各占一半(32课时);从课时数看实践课时并不比理论课时少,但是实际上软件测试是一门实践性非常强的课程,掌握了相关理论知识的前提下,需要花几倍的时间去练习。软件测试相关测试工具繁多,有缺陷管理工具要学习使用,有性能测试工具要熟练掌握,更有各种测试设计工具、接口测试工具、单元测试框架等等要练习。而学生在实验过程中因为第一次接触,往往会出现会做这个实验后忘了前面的实验,不能真正做到系统性的综合运用。此外,有些实验的效果还依赖于学生前期课程掌握情况,比如白盒测试部分的单元测试相关实验,该实验的效果,就非常依赖于学生编程语言掌握程度。
(3)项目经验缺乏
尽管各院校都在积极推动校企深度合作,但是短期内仍无法做到让所有学生都可以去企业里接触真实项目。与此同时,目前也缺乏软件测试课程的实训课,这将导致很多在学校期间表现优异的应届毕业生走上工作岗位后,面对真实项目束手无策,需要从零学起。目前只有嵌入式培养的学生和优秀学生有机会去企业里接触真实项目,那么剩下的学生的项目实战经验缺乏,这块短板如何弥补也成为软件测试课程急需考虑解决的问题。
软件测试课程的目标应是培养企业所需的应用型测试人才,针对当前课程设计存在的问题,我们亟须基于OBE的教育理念,反向设计,通过一系列的教改举措,最终制定出能达到培养目标的教学思路、教学方法。
3 OBE理念下软件测试教学改革的有效措施
OBE理念,大的思路是采用成果导向的培养模式,核心内容是通过反向设计,进行教学改革,针对当下课程教学与实际需求严重脱节的问题,下列几个方面的改革措施势在必行:
3.1 理论教学与时俱进
这里的与时俱进包括两部分内容:一部分是基于当下的混合式教学模式,线下和线上同步补充理论课相关内容;另一部分,目前学院从课程体系上进行改革,增加了专门的渗透性测试课程作为软件测试课程的后续课程,力求与时俱进,以达到培养的学生毕业时具备当下最流行的软件测试能力的目标。理论教学中具体补充的内容见表1。
表1 理论教学中增加的内容
3.2 实验教学体系化
原先的实验课程比较零散,理论课学到什么知识,就配套练习什么知识。导致学生学完没有形成系统认知,实验课效果大打折扣。针对这种情况,需要对实验教学内容进行体系化。
体系化的实验教学详见表2,主要分成三大块:①功能测试中白盒测试设计实践练习;②功能测试中黑盒测试设计实践练习;③非功能性测试实践练习。按照开发过程模型中的顺序,逐步引入这几部分的内容,并且根据测试结果,了解缺陷的生命周期,练习缺陷管理系统的使用,掌握故障单填写和故障单处理。同时,在这个过程中学习测试用例如何编写、测试报告测试小结如何编写。实验过程中各部分练习的测试对象也固定下来,第一部分的测试对象固定为学生自己编写的计算天数的一个小程序;第二、第三部分测试对象则固定为基于Java实现的一个学生选课系统。经过上述的一系列练习后,最后再增加一个综合性的实验:从单元测试到系统测试、从白盒测试到黑盒测试、从功能测试到性能、安全等非功能测试,团队成员学生自由组合、测试对象学生自己开发,测试设计方法学生自己选择,缺陷自己填写自己跟踪处理终结,测试用例、测试记录和测试结果自己输出。通过这个综合性实验,让学生既能把前面学过的比较零散的点串起来,对知识点有系统的理解,又能以微项目微团队的形式锻炼学生的团队协作能力。
表2 实验教学安排示例
3.3 项目训练范围扩大化、形式多样化
首先针对软件测试课程缺乏项目实训的现状,参考企业里培训员工的形式,软件测试教学团队以工作坊的模式给学生增加了软件测试项目实训。工作坊里练习的项目从真实的项目中选取,学生以分组的形式进行实战,不同组之间形成竞争,充分调动学生的积极性,积累项目经验的同时也能锻炼学生们的团队合作和与人沟通交流的能力。工作坊形式的实训课很好地解决了只能有部分同学有机会到企业里实习的问题,保证了每个同学都有参加实训实操实战的机会。
工作坊实训流程:
破冰开场->分组->了解测试任务(KYM)->测试覆盖大纲(TCO)->建模(Modeling)->测试设计(TD)->测试执行(TE)->总结回顾
采用探索性测试的管理方式贯穿工作坊始终,即将任务划分为一个个基于固定时间盒且目标明确的Session,每个Session用脑图或鱼骨图记录,并且每个Session结束都进行汇报。整个测试完成后进行一次整体复盘回顾,最终提交完整的测试报告。
与此同时,进一步深化和拓展校企合作的空间,为在校学生提供更多的实习、锻炼的机会,也是近年来学校一直在努力的方向。
除了上述措施外,学校层面积极引进企业里有经验的人员到学校里任职,将纯理论的知识与企业里的实际情况相结合,让学生掌握理论知识的同时也对行业的现状有了比较直观的认知,从而毕业后能更平滑地过渡到职员的角色,并胜任新角色的工作内容。
通过上述一系列举措,学校近年来培养的软件测试毕业生,从企业的反响和毕业生自身后续的反馈来看,适应企业的技术能力、融入速度明显提升,教学改革成效显著。
4 结语
软件测试课程在当前教学模式基础上,基于OBE的教育理念,反向设计和优化当前的教学内容,通过补充当下企业真实在用的相关技术的理论知识、增设相关课程的后续补充课程、体系化实验环节、增加工作坊模式的真实项目实训教学等有效措施,最终架起了学生和企业实用技术的桥梁,也就是架起了学校和企业的桥梁,使得培养出来的学生的实践能力不断增强,得以源源不断地给企业输送合格的应用型人才。在后续的教学改革中,需要继续以成果为导向、以学生为主体,不断完善教学内容和教学方法。