任荣
北方民族大学计算机科学与工程学院 银川 750021
随着我国软件产业的蓬勃发展,人们对软件的质量意识逐渐增强,软件测试逐渐成为非常具有生命力的行业。据统计,在欧美的软件项目中,软件测试的工作量要占到项目总工作量的40%左右,测试费用占到总项目费用的约30%,而中国的很多软件企业还远远达不到这个比例。近几年,我国软件测试行业的发展也在逐步趋于成熟,测试工程师的需求数量和待遇都在逐步提高。基于这样的背景,软件质量保证与测试课程组教师对该课程的教学模式不断地进行改革与创新,目的是缩小教学内容与企业需求之间的差距,提高学生的实践技能和就业水平。
软件质量保证与测试是软件工程专业的主干课程,作为软件工程专业就业的一个重要分支,为学生参与专业资格考试、进入企业实习、规划毕业设计以及就业提供一个可供使用的软件测试专业知识体系,因此,要不断创新教学模式,更新教学内容,改革教学方法。通过本课程的学习,学生要能理解软件测试的理念与发展,能够利用软件测试的基本原理、方法和技术,进行软件测试的分析、设计与执行,积累、养成软件工程专业素质,提高学生的就业能力。
软件质量保证与测试课程教学改革的目的是要让教师在教学过程中采用合适的教学方法,激发学生的主观能动性,促进学生成为学习的主体,使学生主动完成学习任务。在教学初期,教师是教学的主体,学生是客体。教师教学的一个十分重要的目的是设法促进学生角色的转变,即逐渐使学生具有学习主动性,承担起学习的主体责任。
通过本课程的学习,学生能深刻理解软件测试的基本思想和理论,熟悉不同类型的软件测试方法和测试过程,具备编写测试计划、设计测试用例、生成测试报告的能力,了解行业中广泛使用的白盒测试和黑盒测试工具,尤其是功能测试、性能测试的自动化工具,并能熟悉使用典型工具完成常规测试任务。本课程从工程化的角度培养学生从事软件测试的技术和能力,为学生将来从事软件开发及软件测试工作奠定扎实的理论和实践基础。
本课程目标设计如下:通过对软件测试重要性的认识,以及对软件测试基础知识、测试方法的掌握,学生能够熟练应用软件测试中的各种方法技术,并能针对软件系统完成测试用例设计和编写;通过对软件质量定义、软件质量管理体系、软件质量模型以及软件质量保证活动等内容的理解,学生能够针对软件系统的不同开发周期开展相应的软件测试活动;面向不同系统和不同阶段的测试需求,学生能够选择合适的软件测试技术及工具,较好地完成软件质量保证工作;通过对测试团队的构成、地位、责任,测试团队的管理,优秀测试工程师的必备素质等知识的理解,学生能够在开展软件测试活动时有效地与客户、团队成员进行沟通交流。
软件测试的目的是检验软件系统是否满足规定需求,找到实际执行结果与预期结果之间的差别,验证并提高软件质量[1]。软件测试的内容很丰富,不仅要测试软件是否满足用户的功能需求,还要测试系统的性能需求,如系统的安全性、可靠性、并发性、易用性、效率等。软件测试领域比较广泛,比如金融、通信、电子商务、游戏、工业控制、办公软件、通用软件等。不同的软件业务领域,软件测试的底层逻辑都是相通的,软件测试阶段和测试方法也是类似的,只是各软件的业务应用和流程不同,测试工具有所差异,因此测试工程师的应用领域跨度比较大,发展空间比较广阔。
软件测试阶段包括单元测试、集成测试、系统测试、验收测试;软件测试常用的方法包括白盒测试、黑盒测试、静态测试、动态测试、回归测试、冒烟测试、随机测试等[2]。在某一阶段或类型的测试中,多种测试方法一般会被综合运用,以达到全面测试的目的。
从很多软件质量缺陷案例中能看到,软件质量缺陷对用户的影响小至损失些信息、金钱,大至危及安全,甚至生命。因此,在教学过程中,教师应通过现实案例的讲解,让学生意识到测试工程师是保证软件质量的最后一道关卡的捍卫者,如果疏忽大意或责任缺失,就可能造成不可想象的后果。使学生认识到合格的测试人员需要具备的能力,如利用合适的测试方法设计测试用例,熟悉业务知识、程序、文档等,能使用主流的测试工具,既从开发者专业的角度进行测试设计,又从用户的角度执行测试。
本课程的教学内容包括:软件测试概述和基础、从测试的角度看软件质量保证、软件缺陷管理、测试用例的设计、静态测试与动态测试、白盒测试、黑盒测试、单元测试、集成测试、系统测试、验收测试、测试管理、软件测试环境及自动化测试[3]。实验内容包括:测试用例写作、白盒测试—逻辑覆盖法、黑盒测试—等价类、边界值法、黑盒测试—因果图法、单元测试、自动化测试[4]。
从以上描述看,软件测试的概念和方法很多,要求学生正确理解并关注专业术语,要从系统化的概念出发学习软件测试的方法,在积累了许多概念定义后尝试建立一些关系,自己设计一个概念知识结构。软件测试的实践性也很强,因此要求学生认真完成讨论、作业、实验和课程设计,在实践中加深对知识的理解,作业中的概念定义必须准确完整、实验和课程设计中采用的设计方法、描述方式要有根据。软件测试,设计为先,即学习软件测试要从软件需求和测试方法出发,设计测试模型(测试用例),为测试执行提供依据。
软件质量保证与测试课程的教学模式设计如下。
1)多维度教学。提供多媒体课堂教学、提问、讨论、作业练习、实验、课程设计、期末考试、线下、线上等多维度教学环节,在扎实讲述传统软件测试理论的基础上,不断增加现代软件的测试理念和技术,并努力将教师的“教”与学生的“学”相结合,启发学生、挖掘来自学生的切实的感悟。
2)工程案例式教学[5]。工程原则的首要原则是用户原则。尽管软件质量的好坏在很大程度上取决于有效的测试,但用户群体特征和用户群体规模会直接影响软件测试的目标选择。要使学生立足当下,更新观念,开拓视野,注重实用。烘托课堂工程氛围、培养学生的IT心态。
3)线上线下混合式教学。利用MOOC平台建设丰富的线上教学内容,作为线下教学的重要补充。学生可以学习线上教学视频,预习和巩固所学内容,通过自学MOOC平台上教师精心挑选的各种测试案例(包括文档和视频),加深对所学知识的理解,教师主持线上讨论,为学生提供一个充分发表评论和想法的平台。
4)融合国家优质MOOC资源。在中国大学MOOC平台上参考借鉴适合该课程的优质资源,并与本课程内容有效对接,充实本课程内容,使学生开阔视野和拓展知识面。
在平时课堂教学中,积极探索适合学生的教学方法,严格要求学生,调动其学习积极性,提高学习效率。课程内容理论联系实际,融入适当的教学案例。
讲课过程中,为了吸引学生的注意力,考量学生对知识点的掌握程度,教师有针对性地设置一些问题,并向学生提问,将学生回答问题的情况计入其平时成绩,这也是随机点名的好办法。
在线上补充优质学习内容,如教学视频、案例视频或文档等,并发布针对线上学习内容的讨论,要求学生发表评论或观点,督促学生利用课余时间多学多看多想,使学生多了解课堂以外的世界。
针对需要重点掌握的知识点,除了线上线下结合的教学环节,教师还在MOOC平台上布置设计性较强的作业题目,学生在网上提交作业后,教师要认真批改,对作业问题较多的学生进行单独辅导。
在每次实验中,合理地安排实验题目,设置设计性实验,充分调动学生的探索兴趣。布置的实验要求学生自主完成,每次实验课,对每个学生的每次实验都进行一次“小答辩”,每个学生都要讲解实验内容,之后教师进行提问,通过学生的讲解和回答,给出该学生本次实验的综合成绩。最后,平均学生的六次实验成绩,得到该学生最终的实验成绩。
在平时课堂教学中,运用启发式、工程案例式原则,在课堂上通过各种教学方法(如讲解、示范、提示等)教授课程内容,使学生接受并内化所学知识。讲课过程中,为了吸引学生的注意力,考核学生对知识点的掌握程度,有针对性地设置一些问题提问学生,根据学生的回答情况,计入其平时成绩。实施共同解决问题的教学形式,通过师生的平等对话与讨论来共同思考、探究和解决问题,由此使师生教学相长,共同获得知识技能和发展能力。
补充新颖实用的线上教学材料,使学生充分利用课余时间学习,注重线上线下教学的有机结合,这都有助于学生注重平时学习的积累,而不是考试时临阵磨枪。
合理安排实验内容,使用成熟的测试工具完成设计性实验,充分调动学生的主观能动性和实践积极性。重视每次实验的完成和考核,除了提交实验报告以外,还要进行现场提问和考查,让学生在实验课上既动手又动脑。
本课程的考核采用多元评价体系,强调对学生专业能力的考核和综合素质的评价[5]。不仅仅用期末一张试卷来考核评价学生的学习效果,最终的成绩由过程性考核和期末考试构成,其中过程性考核占40%,期末考试占60%。平时的过程性评价主要是考核学生的学习态度、实践能力、团队协作能力以及对阶段性知识的掌握情况,依据课程进度,要求学生完成作业、实验、课程设计以及其他教学环节。期末考试的试题设计主要考核学生对知识综合运用的水平,以及针对具体问题设计解决方案的能力。在引入课程思政元素方面,本课程的教学内容中,介绍国际国内软件测试行业的发展及前景,并且重点强调我国信息化产业的发展,以及对信息化人才尤其是软件测试工程师的需求。
本课程还讲解了软件测试团队的构成、地位、责任、测试团队的管理,以及优秀测试工程师的必备素质,增强学生的团队和责任意识。
教学改革不是一蹴而就的,新的软件测试方技术在不断涌现,这就要求教师要与时俱进,教学内容和教学方法的改进要满足社会和企业的需求[6]。
软件质量保证与测试是一门实践性较强的课程,涉及的概念和方法较多,重点难点突出,学生掌握该门课程需要将所学知识应用到实践中。该门课程也是针对提升学生就业能力的一门改革课程,后续还需教师不断投入更多精力,完善课程建设,提升该门课程的教学水平。
本课程在持续不断改进,后续教学过程中应注意学生的接受和吸收能力,注重学生学习的差异性,提升其对知识的应用能力。
在以后的教学中将继续完善MOOC教学平台资源,进一步引导和提升学生自主学习的能力。后续的教学中要不断探讨如何落地工程教育认证的核心理念,即如何体现以学生学习为中心,以及OBE(Outcome Based Education)教育理念在本课程中如何实施,进一步提升教学效果,为提高学生专业素养、实践水平和就业能力打下坚实的基础,为建设本科一流课程迈出坚实的一步。