赵一丁 张西广
摘 要 软件测试是一门实践性较强的课程,针对软件测试课程教学中常见现象,归纳了软件测试理论教学与工程实践的脱节之处。脱节之处较多,这些理论与实践的偏差在很多高校普遍存在,容易误导软件测试人才的培养效果。软件测试课程体系需要审慎地改革。
关键词 教学改革 软件测试 理论联系实际
中图分类号:G642 文献标识码:A
Deviation of Theory and Practice in Software Testing Courses
ZHAO Yiding, ZHANG Xiguang
(Institute of Computer, Zhongyuan Institute of Technology, Zhengzhou, He'nan 450007)
Abstract Software testing is a practical strong curriculum, teaching software testing for a common phenomenon, summed up the gaps in software testing theory and engineering practice at teaching. More disjointed place, these deviations theory and practice prevalent in many colleges and universities, training misleading effects software testing professionals. Software testing course system needs careful reforms.
Key words teaching reform; software testing; combine theory with practice
1 不切实际地夸大自动化测试的效果
对于自动测试工具,网上有很多技术资料,其中不少是开发厂商推出的宣传信息,包含了夸张水分。部分老师对软件测试自动化的讲授理论过于理想,学生对自动化测试工具的期望往往过高。甚至有一些软件测试大赛,就以指定的自动测试工具的操作使用作为比赛的主要评分内容,但参赛学生抱怨TA工具本身不能解决实际问题,引起争议。其实,自动化测试工具本身的使用价值是很有限的,在很多实际测试项目中不实用。对那种不稳定、开发周期很短、一次性的软件等,自动测试TA工具往往不适合。自动测试工具在功能测试中的价值是回归测试,自动工具不能灵活发现更多的新问题。教学中需提醒学生对网上一些相关资料辩证地理解。
2 不少教材过于理论化
很多测试工程师认为当前不少软件测试教材过于偏重理论,教材中包含了一些不实用的甚至与实践脱节的理论,尤其是一些只适合特定类型项目的测试技术理论被不分适用条件地讲述。比如我们看到很多教材中强调“软件测试占软件开发总工作量的40%、总成本的30%~50%”,其实这句话只符合部分项目的特点,与实践中的多数项目情况不符,真实的测试项目实践需要考虑质量、工期、成本等多方面的约束。又比如一些老师过于推崇白盒测试而轻视黑盒测试,但事实上实践中很多真实测试项目中主要采用黑盒测试方法,甚至一些专职的测试工程师工作多年几乎不用白盒测试方法(白盒测试方法对于程序员自测较多采用),白盒测试方法在功能测试、系统测试中等几乎不用。笔者通过对数十个高校在校学生的软件测试的课程设计文档的观察,发现在学校中测试文档的写作容易走形式,普遍理论空洞、实用性差。这些过于偏重理论的教材容易降低学生学习的兴趣,更容易误导学生的实践。没有有效地与实际项目结合,导致学生学习主要为了考试分数,而毕业找工作时才发现没有真正的软件测试能力。
3 对于微软的经验理论没有强调实践中的适用条件
通过对常用教材分析,发现很多教材偏重于微软的技术理论和经验,偏重于基于瀑布模型的开发过程的测试,微软的技术主要针对通用型软件,不一定适用于不同特点的具体项目。
而实践中实际项目复杂多样,通用型软件项目只占少数,多数属于需求定制型。很多开发过程本身没有采用瀑布模型,无法采用被教材重点推广的V模型等。这就要求学生对微软技术的适用条件辩证地理解。
4 一些概念没有经过行业统一规范
软件测试课程发展时间短,课本中的一些概念没有统一行业规范。比如功能测试的范围比较模糊,有的教材中把安装测试、兼容测试、界面测试等都划归到功能测试中,但有的教材把它们从功能测试中独立出来;性能测试概念的外延也百家争鸣,有的认为它是一个大概念与功能测试并列,但有的把它定义为和压力测试互不包含;在V模型中软件过程质量保证与软件测试岗位的工作范畴是基本相同的,而普通软件公司中两者有明显的区别,前者是管理岗位,后者仅是技术岗位、主要是事后检查(不包括需求分析、总体设计、详细设计等的审查);很多教材把检查代码是否符合规范作为单元测试的工作内容之一,但在很多开发公司中检查代码是否符合规范不属于测试岗位工作内容。在软件测试技术中,像这样的概念术语模糊的现象还较多,容易导致学生在实践中的混乱、困惑。建议相关部门尽快给出审慎的规范。
5 一些集成测试过程理论的适用性存在问题
教材中经典的渐增集成测试方法包括自顶向下、自底向上、三明治方式等,这几种集成测试方法理论(下转第64页)(上接第56页)上虽较为严谨,但其测试过程没有考虑与开发过程的关联协调。实际项目中往往不允许这几种渐增集成测试方法的实施。开发人员往往希望已完成的模块在单元测试(开发人员自测)之后及早参与集成测试,并且给测试的实施时间很短。这就要求渐增集成测试的过程要和实际的开发动态进展协调起来。如果采用书本上的自顶向下集成测试方法,需要先集成顶层的模块,测试它们与所驱动的模块之间的交互接口关系,但其它非顶层模块可能先于这个顶层模块完成,却要等到顶层模块集成测试完成之后才能被集成测试,这显然是这些渐增集成测试方法的使用障碍。方法虽好但有苛刻的适用条件,但绝大多数教材并不涉及这些方法的适用条件,容易误导学生实践中生搬硬套。
6 教学实践及建议
6.1 教学中加强案例教学法及项目驱动教学法
笔者从2005年开始在软件测试教学中尝试案例教学法、项目驱动教学法,要求学生边听课边做具体测试项目,学生分组以项目为主线、教师为实践向导、学生为实践的主体,相对于传统的课堂教学,深感案例教学法、项目驱动教学法显著地增强了学生软件测试技术的实践能力。按照“学习-实践-反馈-修改提高”的原理引导学生修改完善,提高项目阶段成果的质量。通过案例教学法及项目驱动教学法,使得理论教学与真实项目实践无缝衔接。
6.2 应对软件测试教材进行标准审查
软件测试课程体系发展时间短,教材良莠不齐,一些概念的定义也没有全行业规范,尤其是概念定义的内涵外延不完全统一、多数教材中没有对不通用的技术方法的适用条件加以说明等。建议行业中加强统一规范。
6.3 教师引导学生开阔技术理论视野
比如推荐参考资料、引导网上检索信息等。还有其它方法,比如笔者曾经建立了QQ 群,联系到北京、上海、苏州、杭州、郑州等地公司的部分专职测试人员加入QQ 群,抽出每个教学班较好的学生代表加入(QQ 群几年下来已增加到近千人,由于QQ 群人数限制,暂不能让所有学生加入),也会有已经毕业的从事专职测试岗位的学生在群中提一些实践问题,有长期工程实践经验的老师都会认真提出建议,这样在校学生在学习过程中已经对不同商业公司测试岗位的技术情况有了较多了解,在校的理论学习与规范公司的软件测试实践无逢衔接,开阔了理论视野。
参考文献
[1] 刘勃,刘玉,钟国辉等.基于真实项目的实践教学体系探索[J].高等工程教育研究,2012(1):80-83.
[2] 聂长海.关于软件测试的几点思考[J].计算机科学,2011(02):251-255.
[3] 赵一丁,刘凤华,郑秋生等.仿真软件的被动测试与主动测试互补的研究[J].计算机科学,2012(12):121-125.
[4] 李静.软件测试专业课程体系建设和教学改革[J].教育与职业,2014(2):62-64.