面向测试问题驱动的大学生竞赛能力培养

2015-06-23 09:00高洪皓高珏吴亚馨严颖敏
计算机教育 2015年1期

高洪皓 高珏 吴亚馨 严颖敏

摘要:介绍面向测试问题驱动的竞赛能力培养模式,以激发学生对软件开发的兴趣和潜能,提高运用信息技术解决实际问题的综合能力和团队合作意识。

关键词:计算机设计大赛;测试问题管理;现场演示与评估;问题分析与调试

0.引言

中国大学生计算机设计大赛是教育部计算机教指委认定的大学生系列竞赛之一,其举办目的是提高大学生综合素质,引导学生踊跃参与课外科技竞赛活动。大赛每年3月份启动,7-8月份决赛,分校赛、省赛、国赛3个级别。软件服务外包与动漫大赛的评委由高校教师和企业项目经理等混合组成,以企业需求为衡量,以实现技术和应用实效作为评审标准。上海大学非常重视培养学生软件服务外包开发能力,参与了两届中国大学生计算机设计大赛软件服务外包分赛,两次获得二等奖。

面向测试问题驱动是一种有效的竞赛能力培养模式,强调在软件开发周期中测试问题修复过程。问题情境具有情感上的吸引力,容易使学生产生学习的兴趣,形成问题答案的欲望,促使学生自觉、主动地寻求解决问题的方法,这也是大学生计算思维能力培养的重要途径和方法。

1.头脑风暴界定服务外包任务

对于失败的服务外包软件而言,实现的功能与预期的需求不一致是最大障碍。复杂软件的开发首要问题就是弄清楚目标软件具有怎样的功能或特性。

1.1了解服务外包软件需求描述

软件服务外包是指企业通过购买第三方提供的软件服务,来完成原来由企业内部完成的工作,从而提高企业的核心竞争力。软件服务外包是对环境应变能力的一种管理模式。企业可以更专注核心业务,达到降低成本、提高效率、增强企业核心竞争力的目的。服务外包强调的是软件开发方的技术优势,参加服务外包分赛是产学研实践教学的有效手段。在软件开发前,召集团队成员对服务外包需求进行分析,让团队成员充分理解需求,并以功能点的形式描述出来。同时,在项目会议上,团队成员报告自己所理解的软件功能。其他成员也可以随时打断并提出自己的疑问,以供大家一起讨论。头脑风暴、团队协作的方法,可将集体智慧最大化。最后,争论问题则由指导教师拍板决定。

1.2明确服务外包软件目标任务

明确需求后,将任务进行总结并形成电子文档。经过1~2轮小组评审,将其确定为服务外包软件开发的任务基线。一般而言,评审确认工作需要用户方参与。由于参赛小组选择的自主企业命题,因此在参赛过程中,比较容易让客户方参与其中,讨论目标软件功能。其次,根据开发任务召集团队成员,讨论软件系统架构、功能模块的划分。如果客户方要求使用某种技术,先安排团队成员熟悉开发语言和开发平台。最后,根据竞赛时间的周期安排,基于Projlect工具绘制甘特图,安排软件开发进度,细分任务和任务完成时间节点,并落实每项进度任务的负责人。我们通过各种渠道寻求解决方案,允许团队成员采用合适技术手段加以解决。

2.以测试问题管理为中心

测试是确保开发的软件程序是否满足客户需求的重要保证。对团队成员完成的任务模块进行测试,可以检验任务是否按质量,是否按进度完成。在服务外包软件开发过程中,对于测试发现的问题,如果开发人员不及时修改,部分功能发生严重问题,将导致系统功能无法正确执行。因此,不仅需要好的测试用例以及执行情况,而且还需要将测试发现的问题和功能修改情况进行统一管理。

2.1设计合理的测试用例

软件服务外包需要详细设计软件测试用例。测试用例不仅包括输入和预期的输出,而且包括执行输出和结果。我们根据执行结果的正确与否,测试相关人员提交的软件缺陷情况。实行边测试边开发的策略,局部测试和全局测试,在回归测试中需要考虑测试用例版本管理情况,即测试用例的版本需要根据当前服务外包软件的开发情况制定。

2.2功能演示和测试

现场演示功能模块是最能发现软件问题的一个环节。一方面,现场演示可以锻炼团队成员的语言表达能力和人际交流能力,又可以提高成员对于软件模块中错误设计的认知能力。实践表明,现场演示更加容易发现软件模块中的问题。另一方面,现场测试具有特殊性,需要提前认真准备,只要有一个环节出现问题,就很有可能导致整个测试失败。由于分工合作开发,如果现场演示中出现问题,就需要将有关模块一起连调,有助于发现软件设计和开发所隐藏的问题。对于现场出现的测试问题,我们要及时做好相关的记录工作,以便后续跟踪。

2.3测试问题提交

提交的测试问题如有缺陷,容易引起相关模块开发人员的争议,因此,在提交测试问题时,需至少清楚地给出概要描述、详细描述、重现步骤等3方面内容。我们选择Bugzilla工具作为竞赛小组的测试问题管理平台,分配项目测试人员和开发人员相关账号,其中测试人员提交和删除测试问题,开发人员则只能查看测试问题。我们搭建TortoiseSVN作为软件开发版本管理工具,实现分工开发和代码集成,以推进软件项目和保证项目质量。开发人员提交的修复程序,必须经过测试人员测试后才能删除问题,主要目的是防止将来模块开发人员在修改测试问题后,直接删除测试问题。

2.4重视回归测试

开发人员在修改问题缺陷时,往往会引入新的缺陷。在传统的软件开发过程中,一旦整体进度不能向后延迟,习惯的做法就是缩减测试时间。尤其在功能还没有开发完成的情况下,有人认为回归测试没有必要,只验证一些以前发现的缺陷是否修改完成就可以了。这是错误的观点,在服务外包软件开发过程中,回归测试是检验测试问题是否消除的最直接手段,因此必须重视。要记录和跟踪关键缺陷的测试问题变更历史,尤其是在现场功能演示时,要求团队成员回归测试时执行一次全部的测试用例。同时,吸引一些低年级学生参与测试软件,提高发现问题缺陷的概率,保障团队后续稳定发展。

3.团队管理与文化

软件服务外包开发是多任务并发和协作完成的,因此学生能力的培养需要重视技术方面的培养,需要重视培养团队的合作精神,以避免开发过程中的个人英雄主义。在面向测试问题驱动的模式下,信任和沟通尤为重要。

3.1培养相互信任

信任是团队合作的基础。信任需长时间才能建立起来,却又很容易被破坏。在服务外包软件开发初期,为了让团队成员之间相互熟悉,我们通过反恐精英游戏和魔兽等团队游戏培养合作意识。在软件开发过程中,对于现场功能演示和测试发现的测试问题,允许团队成员参与分析与讨论,进一步加强合作和互助。

3.2测试问题沟通

沟通在团队管理中扮演着相当重要的角色。除了通过邮件、短信、QQ群等不定期的联系之外,书面材料汇报测试发现的问题也十分重要。因此,按照书面材料汇报机制,我们要求团队每周开一次例会,各成员汇报自己本周内的工作进展及接下来的工作计划,并集体讨论阶段性遇到的开发问题和技术困难。将技术难题集中放到小组会议上讨论交流,可以加强团队成员之间的沟通。

3.3竞赛经验分享

在两届软件服务外包大赛的备赛过程中,为了更好地帮助团队成员,我们邀请历年曾参加过大赛的高年级学生传授经验与方法,从而使参赛学生更快更真实地了解比赛信息,包括软件开发技巧和决赛答辩经验。同时,我们不定期地组织技术讲座和讨论会,让参赛学生在技术层面获得帮助。在赛前我们还进行模拟答辩,加强现场应变能力。

4.结语

中国大学生计算机设计大赛具有赛事时间长、参赛人数广、多层次竞赛等特征,不仅锻炼了参赛学生的计算机软件开发能力,而且培养了他们的团队合作意识。面向测试问题驱动的竞赛能力培养模式,提升了团队成员的实践技能和创新思维,尤其是寻找技术解决方案的能力。现场决赛答辩模式加强了参赛学生的语言表达与沟通能力,为拓展综合素质提供了良好的机会。

(编辑:郭田珍)