面向企业的高校软件测试教学改革探索

时间:2022-03-16 08:01:53

面向企业的高校软件测试教学改革探索

摘要:分析企业软件测试工作的实际需求和高校软件测试教学存在的问题,提出面向企业的软件测试教学改革方法并给出加强校企合作的具体实施方案。

关键词:软件测试;校企合作;面向企业;教学改革

0 引言

随着软件技术的发展和应用日益广泛,软件系统的规模和复杂性与日俱增。然而,由于软件本身是逻辑实体,软件开发目前还主要依赖手工劳动,软件的变更比较频繁等,导致了软件质量很难得到保证。软件缺陷导致的各类损失不断增加,甚至带来灾难性的后果。软件质量问题已成为所有软件使用者和开发者关注的焦点,而作为软件质量保证和质量控制的有效手段,软件测试受到了企业、用户及专家越来越多的关注。随着用户对软件质量要求的提高,企业对软件测试人才的需求量逐年递增。据前程无忧网数据显示,2011年国内软件测试人才缺口高达20万,2012年缺口突破30万人。作为人才培养的主要基地,高校成为企业挖掘软件测试人才的主要关注地。然而,从目前的企业反馈来看,应届毕业生很难直接被使用,而是需要经过长时间的培训,成本较高,这导致了企业对高校人才引进的信任危机。高校也慢慢意识到了这些问题,开始加强软件测试人才的培养。笔者从企业软件测试人员的引进及使用现状、高校软件测试人才的培养及教学现状进行分析,对软件测试课程教学改革进行讨论,并提出一些意见,以期能够对目前的软件测试人才培养起到一定的促进作用。

1 高校软件测试课程教学现状

2001年12月,国家批准建立了35所部级示范性软件学院,其中软件测试课程成为本科及硕士研究生的专业核心课程之一。然而受传统人才培养模式的影响,高校在软件测试课程设置及人才培养上存在着如下不足。

1.1 传统“知识碎片”式的教学模式

在软件测试课程的教学上,大多数高校仍然采用的是以理论教学为主,实践教学为辅的教学模式,教师在课堂上讲授理论知识,学生上机完成相应的作业。教师授课时采用的案例和学生课后的作业,大多数都是以掌握知识点为主,比较片面,学生无法形成对软件测试工作的整体认识,更多的是一些“知识碎片”。如讲授测试用例设计方法时,教师已讲完等价分类法,学生也做了作业,但是学生最终还是不清楚到底为什么要学习等价分类法、在什么情况下用等价分类法,甚至实际应用中真正的测试用例是什么样子都不清楚。类似的单一孤立知识点的学习对学生来说并不合适。

1.2 具有专业知识及实际经验的师资力量匮乏

目前在高校从事软件测试课程教学的教师中,不具备软件测试专业知识及实际软件测试项目经验的占很大比重。一些教师未经过软件测试专业知识培训,不具备实际经验,仅仅是凭借书本进行理论教学,对现实企业中的软件测试工作不了解,无法针对企业的人才需求展开具有针对性的教学活动。

1.3 实践教学环境不完备

软件测试是一门实践性要求较高的课程,仅仅是通过小型的测试练习是无法达到实践的目的和效果的,必须建立完备的实践教学体系和环境。目前高校普遍缺乏真正的软件测试环境,学生无法通过项目实践来理解和深入学习软件测试的相关技能,如软件测试工具的使用,网络架构对软件系统性能的影响,大批量数据处理的性能测试及分析等。

1.4 对学生的理解误区未给予正确的引导

学生在大学校园中的学习受到社会观念的影响,对软件测试产生错误的认识和理解,对现实中的软件测试工作缺乏兴趣,从而影响到对软件测试知识和技能的学习。如“软件测试工作的技术含量较低,发展前景不如软件开发工作”“软件测试工作薪资较低”等,对于这些错误的认识,教师在教学过程中未给予正确的引导,从而导致学生就业后不愿意从事软件测试工作。

2 企业软件测试人才需求及使用现状

2.1 企业软件测试人才引进现状

软件测试属于软件质量管理的范畴,与软件开发不同,软件测试并不直接产生效益,所以企业在这方面的人员投入相对比较谨慎。在欧美等软件产业发达国家的软件企业中,测试人员与开发人员的配置比例一般已达到或超过1:1;而在国内被调查软件企业中,能够基本达到该比例的企业仅占22%,很多软件企业的测试人员与开发人员的比例达到1:7以上。

随着国内软件市场不断扩大,软件企业逐渐走人正轨。近年来,软件质量越来越被关注,软件测试日益引起国内软件企业的高度重视,企业在软件测试人力上的投入也在逐渐增大。而目前企业引进软件测试人才的主要途径有3个方面:高校、培训机构和自主培养。自主培养软件测试人员的周期相对较长,无法满足人才需求的快速增长;社会培训机构举办的各类培训价格不菲,生源相对较少,且培养出的人才质量良莠不齐,无法缓解人才市场的紧缺状况,这就使得高校成为软件测试人才引进的主要源头。然而,国内高等教育院校对相应的市场需求反应迟缓,开设软件测试专业的院校很少,且应届毕业生常常无法马上胜任相关工作。

2.2 企业软件测试人才技能要求

目前,企业中软件测试人员的工作岗位主要包括以下几种。

1)测试员。

测试员的技能需求主要包括:根据测试规程执行测试,记录测试过程及结果,编写测试日志和提交BUG描述;编写用户手册、在线帮助;参与整理测试项目相关文档、资料等。

2)测试工程师。

测试工程师的技能需求主要包括:根据自动化测试设计,编写测试脚本;根据测试模拟环境设计,开发测试模拟环境及测试工具;协助OA人员对代码进行规范性检查(按照公司标准文件),并记录检查结果;代码测试及走查;制定测试规程,审查测试员的测试日志及BUG描述,并对测试员的测试工作进行指导;分析测试过程及结果,指出可能出错的原因等。

3)高级测试工程师。

高级测试工程师的技能需求主要包括:制定测试方案;分析软件项目需求,进行测试需求分析;根据软件项目概要设计、详细设计和测试需求,进行测试设计,编写测试用例;进行自动化测试设计,并指导测试工程师编写测试脚本;测试工具及测试模拟环境的设计,并指导测试工程师进行测试工具及测试模拟环境开发;进行测试结果分析,编写测试分析报告;在统计分析的基础上对软件整体质量进行评估,提出软件过程改进建议;改进测试过程、方法、技术和工具等。

4)测试经理。

测试经理的技能需求主要包括:测试项目总体计划的制订;组织测试项目总体计划的评审;测试项目执行过程的跟踪和监控管理,并向软件项目组负责人和质量部测试主管报告测试项目的执行情况;分析测试项目资源(人员、设备等)需求,申请资源并参与相关协调工作;制定测试规范;制定阶段测试计划,分配测试任务;组织测试方案、测试需求、测试设计、测试用例、测试脚本、测试分析报告等的评审;组织测试人员的相关培训;测试项目总结;测试项目组的日常管理工作;测试项目组内部的沟通与协调;测试项目组与开发组之间的沟通与协调;测试项目组内部人员的绩效考核管理;向软件项目组提交测试分析报告等。

3 软件测试课程改革方案

综上可以看出,高校在软件测试人才方面的培养模式已经不能适应我国软件产业发展的现状,不能够提供适合企业需求的软件测试人才。为适应我国经济结构战略性调整的要求和软件产业发展对人才的迫切需要,实现软件人才培养的跨越式发展,笔者认为高校应该根据企业需要,针对软件测试课程展开深入的教学改革和实践活动,调整培养方案,从而培养出大批合格的软件测试人才。

软件测试属于软件工程专业的一个方向,可以依托软件工程专业,加强软件测试课程建设,加大软件测试方面的师资力量,改进教学方法,加强实践教学环节,培养出具有扎实的软件测试理论基础、掌握测试方法和具有一定测试经验的人才。

3.1 正确引导学生的学习观念,培养学习兴趣

要想培养优秀的、符合企业要求的软件测试人才,必须正确引导学生的学习观念,培养学习兴趣。由于社会上一些错误观念的引导,导致了学生毕业后不愿意从事软件测试工作,从而对软件测试课程的学习兴趣不浓。学生中普遍认为“软件测试工作的技术含量不如软件开发”“软件测试工作是一种简单的、重复性的劳动”“软件测试工作更多的是需要耐心,而不是能力”等,对于这样的错误观念,应加以正确的引导。

首先,应分析这种观念产生的原因。在毕业生就业时,很多企业对软件开发人员开出的薪资比软件测试人员高,这是实际存在的现象。进一步分析这种现象产生的原因主要与企业目前的软件测试工作现状有关,大部分企业所作的测试主要集中在功能测试,甚至是界面测试上,难度相对较小;招聘岗位基本上定位为测试员,所以开出的薪资较低。而对于测试工程师、高级测试工程师等软件测试岗位,企业开出的薪资并不会比软件开发岗位低。

其次,可以将软件测试工作和软件开发工作相比较,目前在企业里的软件开发基本上都是采用成熟的开发框架,开发人员只需要编写少量的代码就可以完成相应的功能模块。同时为了开发效率高,企业基本上会将开发人员定位为某个技术领域,比如界面层开发、业务逻辑层开发、数据处理层开发等,不会让开发人员随意变更技术领域。每个领域的开发都是有“前辈”积累的代码或成熟的框架和组件,开发人员的开发难度相对较低,在不同项目中重复性很高,“技术面狭窄、无法深入”已经成为开发人员的明显特征。反观软件测试工作,虽然测试员的工作相对简单,但是对于测试工程师和高级测试工程师来说,其工作涉及需求分析、设计和编码等范围,在项目中要涵盖每一个领域。比如功能测试要涉及业务的全面理解,性能测试要涉及各个知识领域,包括框架、数据库、通信、网络等;从技术来说,软件测试人员比软件开发人员的知识领域和知识理解程度“更宽、更深入”。通过引导,让学生更清楚软件测试工作的现状和未来发展,从而提高其学习兴趣。

3.2 基于完整项目的实践教学

软件测试的目的是“尽可能地发现软件中的缺陷”,要达到这个目的就必须要了解软件,了解软件的开发过程,了解软件开发人员的思维方式。目前很多高校软件测试课程的实践教学都采用小组的形式完成一个测试任务,编写《测试计划》《测试用例》《测试总结报告》等文档,但是这样的实践教学模式过于形式化。学生基本上都是“为了测试而测试”,生搬硬套文档模板,是因为并不了解软件及开发流程,无法从本质上寻找问题,测试流于表面。

要想更好地提高测试技能,必须改变实践教学模式,不能将测试与开发相脱离,而应该让学生投入一个完整的项目实践课题,从中体会测试与开发的关系。项目实践课题可以关注以下几个方面。

(1)课题内容以学生学习和生活中所熟悉的软件系统为对象,如《学生宿舍管理系统》《图书馆管理系统》《校园邮件收发管理系统》等,这样可以更好地引起学生的兴趣。

(2)课题的组织采用小组的形式,3~5人为一个小组,自由组合,并推选一位项目负责人来管理项目。

(3)课题的目标是完成一个软件系统的开发及测试。考虑到与企业里的真实工作流程相结合,项目采用“交叉测试”形式,即每个小组完成本组软件系统的开发任务,然后将软件(包括文档)提交给另外一组进行测试,这就符合“第三方测试”的要求。

(4)课题的考核采用小组答辩的形式。每个小组将自己的开发成果、测试成果进行展示,其他组的同学和老师可以有针对性地提出问题,并对每个小组进行打分,然后根据权重值产生每组的最终成绩。

通过这样的项目实践,可以让学生了解软件项目的开发和测试整体流程。在开发时考虑可能会出现的问题;在测试时进行反思,并深入挖掘,以自身的开发实践来促进测试,对测试的技术难度和复杂度有更深切的体会,从而提高软件测试技能。

3.3 加强校企合作,提高师资水平,建设课程实践环境

企业需要人才,高校为企业培养人才,这无疑为校企合作提供了可行性。高校目前在软件测试课程教学上存在着一定的困难,一方面是师资问题,缺乏具有实际软件测试经验的教师;另一方面是课程实践环境问题,缺乏真实的软件测试环境。这些问题都可以通过校企合作来寻求解决。

(1)高校将教师送到专门的培训机构学习软件测试技能;还可以与企业合作,将教师送入企业参与实际的软件项目,与测试人员一起工作,在实践中学习。这样就可以培养出一批具有实际测试经验和技能的专业教师团队。

(2)高校和企业合作建立软件测试模拟环境,可以参照企业来建立自己的测试模拟环境,也可以和企业共享。这样既节约了成本,又能使得测试环境更加专业,满足学生课程实践的需要。

(3)聘请企业中的资深高级软件测试工程师和软件开发工程师到学校担任助教或顾问,与学生面对面交流,对学生的学习和实践进行指导,从而开拓学生的视野。

(4)在教学中引入企业的实际项目作为案例,结合实际项目中所用到的测试方法和测试技能;也可以请实践项目的开发人员和测试人员现身说法,与学生共享实际经验,让学生真切体会实际项目和理论教学之间的差别,从而达到理论和实践相结合的目的。

(5)聘请企业中资深的软件测试人员带领学生进行课程实训,实训的题目可以是虚拟的也可以是企业中的实际项目;或者让学生到企业进行实训,参与实际的软件项目,让他们真正了解实际的软件测试流程及方法,在实践中提高测试技能。

通过与企业合作,不仅能够培养一支具有实际经验的师资队伍,也能让学生从企业的项目中学习到实际的技能。同样,企业也可以在与高校的合作中引进自己所需要的人才,这对于双方来说都是非常有价值的。

3.4 走教学产业化发展道路

虽然高校并非是盈利机构,主要以培养人才和科学研究为主,但是“巧妇难为无米之炊”,培养人才和科学研究必须要有相应的资源。如果单纯依靠国家的投入,无疑是“杯水车薪”,所以,需要考虑依靠自身的力量和优势来获得资源。教学产业化是一条可以尝试的发展道路。

在软件测试的课程建设中,可以考虑通过国家投入和企业合作的方式,建立一个完整的软件测评环境以及一支由高校教师和企业资深的软件测试工程师共同组成的软件测评队伍,这样的测评环境和测评队伍可以在满足高校实践教学的基础上面向社会,与一些具有资质的测评中心合作,共同承担企业的软件测评任务。这反过来能够促进测评环境和测试队伍的建设和发展,不仅满足了教学要求,又寻找到了一条产业化的发展道路,无疑会对高校其他学科的建设和发展提供借鉴。

4 结语

笔者正是从企业用人的实际需求出发,提出加强校企合作的如上思路,提出面向企业的软件测试课程教学改革方法,让企业能够真正引进优秀人才,让高校走上产业化促进教学发展的道路。

参考文献:

[1]杨鹏,贺平.高职软件测试专业的构建与探索[J].计算机教育,2008(2):63-66.

[2]王福良,任传荣,杨彩萍.关于普通高校教学课程体系改革的思考与实践[J].天津工业大学学报,2002,21(3):26-28.

[3]马中平.示范性软件学院人才培养目标及途径研究[D].武汉:华中科技大学,2005:14-25.

[4]李亚“软件测试”教学探索与实践[J].计算机教育,2008(6):31—32.

上一篇:基于国际合作办学的组件软件开发课程教学改革 下一篇:基于CDIO的计算机应用类课程改革和实践