当前位置:首页 > 作文大全 >

软件测试教学研究与实践

发布时间: 2022-03-20 10:22:41 浏览:


打开文本图片集

软件测试教学研究与实践*

摘  要: 针对软件测试课程覆盖的软件知识领域广泛,专业性和实践性非常强的特点,分析当前软件测试课程教学和实践教学联系不够紧密且可操作性比较低的问题,提出以培养具有软件测试能力人才为目标,理论为实践服务的教学方法。围绕软件测试教学大纲,以软件测试课程的理论教学为基础,设计并实现了一个软件测试实验教学系统,该系统在实践教学过程中取得了较好的效果。

关键词: 软件测试; 课程教学; 实践教学; 实验系统

中图分类号:G642          文献标志码:A     文章编号:1006-8228(2015)07-57-04

Research and practice of software testing teaching

Pan Lili1, Wang Tian"e2, Qin Jiaohua1

(1. Computer and Information Engineering College, Central South University of Forestry and Technology, Changsha, Hunan 410004, China;

2. The Commission Institute, Hunan Electric Power Transmission and Substation Construction Company)

Abstract: Software testing is an elective professional course for software engineering, information security and other computer-related majors. The course covers extensive professional knowledge, and requires strong professionalism and practicality. Based on these characteristics and requirements of syllabuses, this paper explores theoretical and experimental teaching mode for the course to train student to obtain the software testing capabilities. It is proved by the teaching practice that the teaching mode achieved a good result.

Key words: software testing; undergraduate teaching; practice teaching; practice system

0 引言

软件测试是软件工程领域的一个专业方向,同时也是软件开发过程的必要活动之一,是发现软件错误的重要手段,是软件工程专业、信息安全专业等计算机相关专业的选修课程。从理论教学的角度而言,软件测试具有知识点丰富,测试方法众多,专业术语多的特点;从实践教学的角度而言,软件测试具有实验内容庞杂,测试工作量巨大,测试文档繁多等特点。因此,在软件测试课程教学过程中,必须注重理论与实践相结合,采取有效的教学方法,精选教学内容,才能达到软件测试教学大纲的要求,真正帮助学生理解软件测试概念和测试方法,掌握常用的测试工具。

1 软件测试课程在教学过程中面临的困难

软件测试课程是一门理论性和实践性都非常强的课程,设置该课程的目的是帮助学生理解软件测试的概念,掌握软件测试的基本方法,学习使用一些流行的软件测试工具。在讲授这门课程时,不仅要求老师要有较高的软件测试理论水平,同时也要有较高的软件测试实践经验,并要求学生具备一定的编程能力和其他专业课程知识基础,如:离散数学、软件工程、数据库等。但由于软件测试课程较其他专业课程而言起步较晚,被重视程度一般,且专业软件测试课程书籍较少,特别是软件测试实验书籍较为缺乏,因此,软件测试课程在实际的教学过程中存在诸多难点[1]。

1.1 师资力量弱

软件测试作为一项专业技能,它的起点要求比较低。作为软件工程的专业研究领域,它一直不被研究者所青睐。很多高校缺少专门从事软件测试领域研究,并且有软件测试实践经验的老师。在这种教学师资较为缺乏的情况下,软件测试课程的教学无论是理论教学的深度,还是实践教学的操作性都较难满足教学的要求,最终的教学效果不好,学生无法理解软件测试的概念,对软件测试方法掌握程度不够,对基本的软件测试工具也接触较少。

1.2 重视程度不够

软件测试作为一个职业,在国外的软件公司都有专门的软件测试团队,例如微软,IBM,软件测试人员与软件开发人员的比例大概是2:1,而国内,由于软件行业还正处于向规范化的方向发展,许多软件公司,并没有专门的软件测试人员,很多测试工作往往由软件开发人员承担。这在一定程度上使得社会对软件测试的职业化方向不是非常认可,降低了师生对该门课程的重视程度。

1.3 知识点多,覆盖面广

软件测试是一门专业知识覆盖面较为广泛的课程,它涉及数学、编程、计算机科学、软件工程等众多知识领域,而不仅仅局限于软件测试课程本身的内容。正是由于软件测试课程中广泛的知识体系,对任课老师和学生都提出了更高的要求。

就软件测试方法而言,有多种不同的分类[2]。如基于程序是否运行的分类(静态测试和动态测试),动态测试根据测试用例涉及是否依据程序内部结构又分为黑盒测试和白盒测试。根据软件不同特性和方面的测试可以将软件测试分类为:负载测试、压力测试、性能测试、安全测试、可用性测试等[3]。这么多测试方法都有各自的概念、功能特点和优缺点、使用步骤和测试工具等。在有限的课时内讲授这么多知识点,是较为困难的。

1.4 测试工具价格高,实验平台搭建困难

软件测试工具多,范围广,不容易掌握[4]。流行的软件测试工具价格高,软件测试实验平台建设较为困难。软件行业常用的软件测试工具有:TestDirector,LoadRunner,WebRunner等等,这些测试工具对于软件测试工程的学习而言都是大有益处的,如果想要在实验教学中将每一个测试工具都使用到,是比较困难的。在教学的过程中老师可以重点突出,选择1-2个测试工具进行操作讲解。

2 教学模式探讨和分析

针对目前软件测试课程在实际教学过程中存在的难点,结合已有的软件测试科研经历[5-8]和教学经验,对软件测试教学模式进行深入探讨,并在教学实践中取得了较为满意的效果,本文将具体从师资队伍建设、课程安排、课程内容、教学方法和实验平台五个方面进行阐述。

2.1 师资队伍专业化

软件测试是一门专业性较强的课程,因此对该门课程的任课老师的岗位能力提出了新的要求:具有软件测试科研经历,具备良好的语言编程能力,具有企业软件测试实践经验。在开设这门课程之前,要先确保任课老师有较高的软件测试理论水平和实践能力。

2.2 合理规划课程安排

现在流行的软件开发模型如V模型,W模型,软件测试作为其中的一个活动贯穿整个软件开发过程始终,但作为一个选修专业课程,它在什么时间开设是需要规划的。软件测试课程涉及的知识领域较广,因此该门课程适宜在一些专业必修课学习结束之后开设。软件测试中涉及到面向对象的编程思想、数据库、网络安全等方面的知识,覆盖的课程有C++/JAVA编程、数据结构、离散数学、计算机网络、数据库。同时需要对软件开发的规范化过程有所了解,相关的课程有:软件项目管理、软件工程、UML设计等。

2.3 课程内容模块化

软件测试课程内容丰富,知识点很多,因此有必要根据专业要求,对授课内容进行细致的选择。聂长海教授在文[2]中对软件测试的知识体系进行了详细的描述,其中采用了三维一体图对软件测试的概念进行了生动的阐述,即软件测试概念包括三个层面的含义:软件测试的目标、软件测试的活动和软件测试的原则。软件测试的分类是相当的丰富,结合软件测试人才专业化要求,对课程内容进行模块化划分,授课过程层层深入,具体分为三大模块:软件测试基础理论模块,面向对象软件测试模块和软件测试管理模块。

软件测试基础理论模块包括:软件测试概念、白盒测试、黑盒测试、单元测试、集成测试、系统测试和验收测试、回归测试、性能测试、兼容性测试、可用性测试、安全性测试和自动化测试。

面向对象软件测试模块包括:面向对象软件测试基础、测试分析与设计、类测试、基于状态的软件测试技术、面向对象交互测试、面向对象系统测试,基于Web应用的软件测试技术。

软件测试管理模块包括: 测试文档、测试计划、测试管理、测试小组的管理。

2.4 案例教学为主,测试工具为辅

案例教学法是一种经典的教学模式,是现代教育教学的一种重要手段。案例教学法强调教师根据培养目标、教学目的和教学内容的需要,运用典型案例,创设情景,让学生进入角色,积极思考、主动探索。

软件测试课程的案例选取非常关键。选取案例要考虑到教学时间、教学效果以及学生的接受程度,选取原则是:形式简单、容易理解,覆盖尽可能多的知识点。例如在白盒测试中选择三角形问题,黑盒测试中选择工资扣税问题,单元测试中选择四则运算和栈运算,基于状态的测试中选择电梯问题等等。这些都是学生熟悉,容易理解的问题,且涉及的知识点也较为丰富,能有效地帮助学生理解软件测试理论。

虽然案例教学有效地提高了教学效果,但是对丰富的软件测试知识点而言是不够的,还需在课堂教学过程中借助专业的软件测试工具或测试插件,如:JUnit,CUnit,QuickTest,LoadRunner等,采取小组方式进行学习、讨论和解决问题。

2.5 搭建友好实验平台,精选测试实验内容

软件测试课程教学效果是否达到了教学大纲的要求,满足了人才培养的目标,其中实验教学是一个非常重要的环节。基于教学大纲要求,结合当前实用的软件测试工具,搭建软件测试实验平台主要围绕六个测试模块展开。

2.5.1 白盒测试

给出源程序代码和流图,依据测试覆盖标准构建测试用例,执行测试,返回测试结果。覆盖标准主要是:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、数据流覆盖、路径覆盖。

2.5.2 黑盒测试

给出用例需求说明,依据等价类划分、边界值分析、因果分析法、随机数据选择法构建测试用例,执行测试,返回测试结果。

2.5.3 单元测试

单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证。一般来说,对不同的编程语言其最小测试单元的含义有所不同,如C语言中单元指一个函数,Java单元指一个类,图形化软件中单元可以指一个窗口或一个菜单等。因此,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

2.5.4 性能测试

给定一个Web应用程序,通过模拟实际用户的操作行为和实施实时性能监测,帮助用户发现问题,进行脚本录制/定制过程、参数化设置、数据关联,查看测试日志,分析测试结果。

2.5.5 自动化测试

使用测试工具,给定一个面向对象的软件,对其进行脚本记录/定制过程、选择测试数据驱动测试、构建可重用的测试框架、创建功能测试项目等完成自动化测试。

2.5.6 测试管理

通过一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,极大地加速了测试过程。程序的需求驱动整个测试过程,通过提供一个比较直观的机制将需求和测试用例、测试结果和报告的错误联系起来,从而确保能达到最高的测试覆盖率。

3 软件测试实验系统

本实验教学系统是专为软件测试技术本科教学以及研究生教学服务的实验教学平台。实验内容包括基础实验和课程设计两大部分,其中课程设计包含:白盒测试、黑盒测试、单元测试、性能测试、功能测试以及测试管理六个方面。课程设计则是以实际的软件项目为依托,让学生用已有理论知识、测试方法、测试工具对软件项目进行测试。

图1  软件测试实验系统界面

图2  软件测试实验系统实验案例指导书界面1

图1展示了整个软件测试实验教学系统的实验测试内容,包括基础实验和课程设计两部分,让学生由浅入深、由局部到整体对软件测试技术进行学习和掌握。图2和图3显示了一个具体的软件测试实验指导书中的部分内容。学生完成实验后,可以通过实验参考答案比对自己的实验是否正确,如图4所示。整个实验教学系统,环环相扣,由浅入深,局部到整体,确保学生在软件测试实验教学平台中能够学习并加深对软件测试的理解和应用。

<E:\方正创艺5.1\Fit201507\图\pll图3.tif>

图3  软件测试实验系统实验案例指导书界面2

<E:\方正创艺5.1\Fit201507\图\pll图4.tif>

图4  软件测试实验系统实验案例指导书参考答案界面

4 教学效果评价

经过多年的软件测试课程教学,并经历了教学方法的逐步改进,在软件测试课程的教学上取得了较好的成绩。教学效果主要体现在学生对理论知识的掌握和实际操作能力,具体从三个方面进行评价。

4.1 学生掌握软件测试知识更加系统和具体

对于初学软件测试的学生而言,一般都是想当然的认为程序编译正常,运行程序的基本功能就默认为程序通过了测试。而进入到软件测试课程的学习才体会到软件测试领域的知识如此之丰富,方法如此之多,特别是软件测试中涉及到各种分类就很容易让初学者混淆。面对这种情况,作为教师需要在课堂上举一反三,通过具体的知识讲解和实例演示将软件测试知识渗透至教学的整个过程。

4.2 学生运用测试方法设计测试用例

在软件测试教学初期,学生设计测试用例是比较率性而为的,特别是测试数据的选择和测试路径的选择等,对于软件测试用例集的完整性缺乏清晰的概念和理解。通过系统深入的学习后,对于一个完整的软件或部分软件模块、组件等,学生能够应用白盒测试方法/黑盒测试方法设计测试用例,能够明白一个完整覆盖的测试用例集对于软件测试的重要性,懂得测试方法并不是独立的,而是互为补充,互相依赖的。

4.3 学生运用测试工具进行软件测试

本课程教学中主要选择了LoadRunner、Quicktest Test Director作为软件测试工具。学生应用测试工具,对一个具体软件进行性能、功能等方面的测试,以及测试管理,体会软件测试工具为软件测试带来的自动化、优越性及方便性等诸多优势。

5 结束语

本文针对软件测试课程的特点和教学中存在的问题,结合自身研究经历和教学经验,提出一种实践性和操作性都可行的教学方法。该方法主要从师资力量、教学安排、教学内容模块化、案例教学法以及实验平台搭建等五个方面着手,提出师资队伍培养与专业知识相结合,在课程逐渐深入和扩展的基础上开展软件测试教学,将教学内容模块化,借助软件测试工具和测试插件,主导案例教学,根据理论教学内容,搭建实验教学平台展开实验教学。在实际教学过程中运用该方法,取得了较好的教学效果,有效地培养了学生软件测试能力。下一步将进一步加强与企业的合作,把产学研人才培养模式推向深入。

参考文献:

[1] 唐春玲,胡方霞,沈敏.软件测试技术课程的教学改革与研究[J].科技

信息,2013.5:35-36.

[2] 聂长海.关于软件测试的几点思考[J].计算机科学,2011.38(2):1-3

[3] 郁莲.软件测试方法与实践[M].清华大学出版社,2008.

[4] 陈艳.基于项目驱动的软件测试课程教学探索[J].计算机时代,

2013.3:62-66

[5] Lili Pan, Tiane Wang, Jiaohua Qin, et al. A Test-Suite Reduction

Based on DU-Chain Requirements Optimization. Journal of Convergence Information Technology,2012.7(21):567-575

[6] Lili Pan, Tiane Wang, Jiaohua Qin. Research on Infeasible

Branch-Based Infeasible Path in Program. International Journal of Digital Content Technology and its Applications,2011.5(5):166-174

[7] 潘丽丽,邹北骥,王天锷,陈浩.基于关键分支的不可行路径确定方法[J].

北京工业大学学报,2010.36(5):716-720

[8] Lili Pan, Beiji Zou, Lei Wang, et al. A Test-Suite Reduction Based

on Multi-objective Decision Making[J]. Chinese Journal of Electronics(电子学报英文版),2007.16(3):454-458

相关热词搜索: 教学研究 实践 测试 软件

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号