HI,欢迎来到云研学术,期刊咨询:130-7314-7102  订阅咨询:130-7314-7102 
0
首页 精品范文 软件测试论文

软件测试论文

时间:2022-10-30 01:27:05

软件测试论文

第1篇

根据权威机构统计部门调查数据显示可知,在常用的软件开发项目环节中,软件测试工作大约能够占到软件开发工作总量的42%以上,而软件测试所需投入的研究经费成本也将占到总额数的50%。由此可知,软件测试环节对于整个软件工程开发应用具有十分重要的意义。然而,如何建立一支高效软件测试团队对于构建更加完善的软件工程起着直接导向性作用。BarryBoehm曾阐述了人的因素在软件测试中的重要作用,人为所占因素甚至超过了其他环节性因素,其代表理论构造性成本模型认为由于软件测试分析师与程序员的原因会导致其工作效率相差数倍。因此,加强软件测试团队的高效率建设对于构建高质量软件应用程序具有重要作用。

1高效软件测试团队建设的可行性策略

1.1软件测试团队的特质建设

软件测试团队的素质建设对于整个软件工程质量而言具有非常重要的作用,人是测试工作中最具价值也是最重要的资源。因此,应该积极构建合格的、高质量的合作团队。(1)软件测试以及软件工程开发都需要程序员具备足够的自信心,对软件检测结构以及程序的缺陷要如实汇报。对于软件项目工程中出现的各种问题要认真处理,以此减少客户可能遇到的种种问题。(2)软件测试人员还要具备足够的怀疑精神,对可能存在的漏洞性错误要及时予以检测和纠正,进而提高其自我创造力。(3)软件测试团队要积极构建沟通协调能力。可以通过与客户进行必要的沟通来及时发现软件运行中存在的不足之处,其中测试者可以针对模拟环境下用户对于软件环境的应用情况进行科学分析,以此对软件编写过程和总结文档进行反复检查检测,提高软件的运行效率和正确性。(4)必备的检测技术能力。软件测试团队必须具备重要的专业技能,需要精通数据库、通信、网络、GUI测试、测试工具、自动化测试脚本和相关业务领域等,以此全面提升他们的测试能力和测试积极性。

1.2软件测试团队的制度性建设举措

一个优秀的软件测试团队必定拥有一套完善的团队管理制度,拥有明确的职责分工和高端测试人员,通过不断规范团队管理制度,做到扬长避短,及时提升整体测试质量。其中,软件测试团队需要不断加强汇报制度建设、工作总结制度建设、奖惩制度建设、测试审核制度建设、会议制度建设等,通过科学合理地分配职责关系来进一步强化团队成员的素质建设。在此过程中,还要注重对于资深测试人员的正确引导和建设,加强彼此间的沟通交流,不断丰富团队的测试知识库,通过科学吸收先进的测试管理知识来提升整体测试技能和技巧,以此减少开发团队协同工作中的一些领域瓶颈。

2结语

综上所述,本文对目前国内软件工程的发展应用现状以及其中出现的漏洞不足之处进行了分析。只有不断加强对软件测试团队的整体素质和综合开发技能的教育,才能从根本上提升其软件测试技能,要在不断建立健全团队管理制度的基础上加强相关软件工程建设,以此全面提高测试人员的软件工程技术水平。

作者:段炼单位:郑州银行科技开发部

第2篇

软件的功能划分为4类:变电站管理、装置程序维护、在线浏览操作、一键归档分析功能。定义上位机调试软件为控制方向,装置侧服务器程序为监视方向。

1、1变电站管理

变电站管理功能按照不同电压等级、间隔名称,分层次多级目录管理若干装置。可新建、打开和关闭变电站工程;支持在人机界面中输入装置地址发起连接请求创建装置;支持装置重命名、排序、复制、粘帖和导入导出等操作。以层次树的资源管理器方式展示变电站结构。装置分离线和在线两种状态,离线模式下可进行数据分析、离线定值设置、主画面编辑等操作,在线模式下可进行程序维护、状态浏览、数据归档收集等操作。

1、2装置程序维护保护测控装置调试软件设计与实现上传配置文件、日志文件等文本。控制方下发需要上装的文件名,监视方打开文件,并分段上传数据,到达文件尾部后给出结束帧标记,控制方将数据存储到文件。上装是下载的反向过程。在程序运行调试过程中,往往需要通过调试相关变量进行状态诊断。在调试上位机程序时,可以使用IDE或gdb等进入调试状态,设置断点并查看变量值。嵌入式装置在运行状态下,监视相关变量时不能随意切换到调试状态,而是将调试变量作为一个实时响应的处理线程。通过调试变量协议,控制方下发需要调试的变量名,装置侧获取相关变量的地址信息和类型后,访问变量地址,读取数据,周期上送变量值,控制方显示实际值。调试变量的关键步骤是获取变量的地址,全局变量可以通过分析编译器形成的map文件获取,对于动态分配的内存,则需通过辅助手段实现。为此制定相关嵌入式程序编程规范,用结构体元件来封装各功能模块数据。元件结构体的内存是动态分配的,编译器在编译时没有为其分配静态地址,map文件里没有这些变量的地址信息。需要在装置启动阶段才能得到变量地址。对于动态分配内存的结构体变量,装置侧提供注册接口,可记录首地址。调试软件根据输入的元件结构体类型名、成员变量名、文件存放路径和CPU字节对齐等信息,对相关的文件进行词法分析和语法分析,进行宏表达式求值,计算出变量在结构体中的偏移量,并下发相对偏移信息。装置侧程序由结构体首地址+变量的相对偏移地址得到变量的真正地址。调试人员只需输入层次实例名,不需手工计算变量地址,调试软件在计算相对地址时已考虑了各种CPU的字长对齐设置。调试变量的流程如图3所示。可通过查询内存的功能实现一次查看连续区域内存数据。控制方可下发查询起始绝对地址,监视方一次回复若干个字节的内存数据。也支持通过下发变量名的方式查询内存。

1、3在线浏览操作在线浏览的通信协议基于继电保护国际标准规约IEC60870-5-103协议[6],可以实现不同厂家的设备、后台的交互通信,减少了私有协议转换过程,方便运行管理和维护。其协议结构如图4所示。类结构图如图5所示。在线浏览操作功能包括:装置模拟量开关量实时显示、装置定值整定和比较、可编程逻辑编辑和状态显示、事件查看、动作报告显示、波形文件上传和分析、HMI遥控模拟、信号复归等。通过在线浏览模块,可实时显示装置的状态数据、参看监视报文、分析跳闸逻辑、查看并设置定值、开关分合遥控等操作。其中涉及到遥控、定值整定、报告清除等关键操作,需要输入用户名和密码,进行权限校验。以定值设置整定为例,其报文交互流程如图6所示。

1、4一键归档分析通过一键归档操作,批量上装日志文件、配置文件等文件,自动截取装置当前的断面数据(包括装置模拟量、状态量、定值、报告、用于问题诊断的特定变量等内容),将各分立文件压缩存储为一个数据包。当现场运行的装置出现异常或跳闸动作时,通过一键归档,可自动打包相关数据,并以邮件方式发送到指定邮箱,装置研发人员可离线打开查看分析。

2软件风格设计

2、1基于软件管家模式由于软件功能复杂,采用了模块化设计思想,进行分层、分模块设计,以去除界面、数据、接口之间具体耦合,方便扩充。调试软件由引导主进程和按照功能划分的子进程组成。如图7所示,引导主进程是安装软件的启动程序,提供变电站资源管理器功能,在左侧树形区域点击装置节点时,会在右侧按照模块划分,分类显示相关功能。点击功能图标,传入形参,启动独立的子进程。通过组件化的设计思路,可确保增加一个新的模块时,不会影响已经稳定的模块。基于子进程的软件管家模式,也减少了人机界面的操作复杂度,用户在一个时间段内只需专注于单一图4在线浏览报文协议结构图5在线状态浏览类结构图图3调试变量流程图2《工业控制计算机》2014年第27卷第11期的功能,并可快捷地切换到另一个功能的操作界面。

2、2类浏览器界面风格当各个子进程启动后,为避免顶层窗体过多,采用类似Chrome的界面风格,用标签页管理子进程的界面。对各子进程的界面、颜色进行了统一设计,基于QT-CSS技术,设计了统一的界面风格库,并提供风格设置接口,可设置标签页QTabWid-get、层次树QListTreeWidget、停靠栏QDockWidget等控件的边框、缩进、标题、字体、颜色等内容。类浏览器的界面规范使不同人员开发的子进程在风格上高度统一。

3软件分层设计

除按照主进程-子进程的模块化设计外,单个通信子进程按照分层原则设计,共分为三层,最底层为数据收发层,中间层为数据处理层,最上层为展示层。如图8所示:图8软件分层结构数据收发层的功能是负责从装置接收报文并将数据处理层的报文发送到装置。针对不同类型的装置,该层需要支持串口通信、以太网链路层通信与以太网传输层通信三种通信方式。同时为了保证通信状态的可靠性,数据收发层还支持出错重传及超时重传机制。其中网络通信采用ACE中间件实现,串口通信采用Qt的QExtSearialPort实现。数据处理层是整个系统的主体部分,主要负责报文解析,报文生成,提供接口供展示层调用,实现了业务与操作接口的分离。展示层提供数据的展示与用户交互功能,不涉及具体的业务流程处理。针对不同的数据,展示层提供二维表格、层次树等不同的展示方式,采用Qt的Model-View模式,可高效快速显示刷新数据。展示层还提供个性化的右键菜单、按钮与工具栏。当用户点击某个菜单或按钮时,展示层会调用数据处理层的对应接口,对用户的操作进行处理。

4结果

实现与分析软件主界面如图9所示:左侧为资源管理器,用来管理变电站,变电站下支持新建多个装置。右侧为工作区,用来展示当前活动装置支持的功能。图9软件主界面点击工作区某个功能按钮,主进程将启动相应的子进程。以在线浏览功能为例,图10所示为装置报告查看界面。

5结束语

第3篇

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

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

中图分类号: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

第4篇

关键词:软件测试 课程教学 问题 对策

中图分类号:G4 文献标识码:A 文章编号:1672-3791(2016)07(b)-0112-02

在社会高度信息化的今天,人们使用各种各样的软件产品处理日常生活、工作事务,比如查看天气、交通导航、撰写报告、统计业绩等。随着市场需求的扩大,软件开发投入增多,同一主题的应用软件越来越多。面对消费者挑剔的眼光,软件供应方必须不断提高软件的功能性、智能化和友好程度,尽可能地降低出现bug的机率。这就必须要在产品前,进行严格的科学测试。因此,软件测试在整个软件产品的开发过程中显得越来越重要。面对软件企业需要大量软件测试人才的形势,高职院校应该重视软件测试这门课程的教学,培养出大量优秀的软件测试人才。

1 高职院校《软件测试》教学中存在的问题

1.1 理论教学方法单一,缺乏多样性

软件的开发过程一般根据瀑布模型分为问题定义、需求分析、设计、编码、测试与维护,软件测试通常只作为软件工程的一部分内容来讲解。但由于近年来软件测试越来越受到重视,很多高职院校把这部分内容独立出来作为一门课程,一般由担任软件工程教学的老师来承担软件测试的教学。但承担教学的老师往往缺少企业工作的经验,他们按照传统的方法来讲解:测试概述、测试过程、测试方法、测试工具与测试管理等。先做好PPT,演示书上的内容,课后布置一些思考性的问题,学生为了应付期末考试,也只能照搬照抄,死记硬背一些理论,达不到学以致用的目的。这种教学方式还停留在老师教,学生跟着学的填鸭式教学,缺乏信息化时代教学的多样性。

1.2 实践教学环节薄弱,缺少能动性

软件测试按照过程可以分为单元测试、集成测试、确认测试、系统测试与验收测试。由于软件测试是一个新兴的领域,很难找到合适的教材,现有的教材都是对这一测试过程进行理论性的介绍,没有对一个软件产品进行完整性测试,缺少规范的测试计划、测试用例、测试文档的编写,对于测试过程中需要使用的测试工具也是一笔带过。学生学完主要内容后不能对一个软件产品进行测试,达不到融会贯通的目的。由于实践教学环节的薄弱,很难培养学生的动手能力与企业需要的团队协作能力。

1.3 整体课程认识不足,缺乏前瞻性

很多软件专业的学生临近毕业时,由于自身能力的不足,没有办法选择软件开发方面的工作,认为软件测试无非是找找软件产品的错误,是一件非常容易的事情。等到真正开始做测试工作时,才发现规范的测试计划、测试用例、测试报告完全不会写,简单的测试工具也不会使用,又匆忙去找培训机构开始培训,这样既浪费时间又浪费金钱。

2 《软件测试》教学对策探讨

2.1 合理选择教学内容,构建学生的专业知识体系

在教学内容的选择上,应切合高职学生的实际情况,引入案例,采用情景模式教学。内容大致可以分为5个教学情景,循序渐进帮助学生构建专业知识体系。第一个情景为制定软件测试计划:包括选择什么样的项目进行测试(可以是每个小组自己在前期的学习中编写的项目,也可以是老师推荐的项目,或者是自己在网络上下载的项目),编写测试用例,测试要达到的目标等。第二个情景为黑盒测试:主要讲解等价类划分法、边界值法、因果图法、决策表法、正交实验法与错误推测法等;会使用QTP进行自动化测试。第三个情景为白盒测试:主要讲解逻辑覆盖法与路径测试法;会使用Junit工具进行自动化测试。第四个情景为性能测试:使用Loadrunner工具进行自动化测试。最后一个情景为测试报告的编写:完成功能测试的bug汇集与性能测试的负载情况分析等。

2.2 完善考核评价体系,突出职业岗位能力的培养

学生完成软件测试学习后要能胜任软件测试员或软件测试工程师的工作,因此,为了契合他们以后从事岗位的基本能力,对于课程的考核,应从多方面进行:理论知识的掌握程度(60%)、规范文档的编写能力(10%)、PPT的制作能力(10%)、上台讲解的能力(10%)、团队的协作能力(10%)等。理论知识的考核主要针对每节课后的作业是否能够准确按时地完成;规范文档的考核主要看学生是否能够规范地编写一个项目的测试计划、测试用例以及测试报告;在每一个教学情景完成后每个小组要制作PPT并上台讲解完成作业的情况,是否能够正确地收集bug并进行分析,是否能正确录制脚本并进行回归测试等;通过完成作业的情况及上台讲解的能力能反映出一个团队的协作能力。

2.3 建设专业的实训环境,培养学生分析问题与解决问题的能力

为了让学生能更真实地体验企业环境,授课地点放在理论实践一体化的实验室进行,专门为软件专业学生所搭建的实验平台,安装软件企业通用的一些测试工具,如Loadrunner、QTP、Junit等,并且有专用的网络可供学生上网查询问题。学生可以随时进实验室进行实践,老师也方便指导学生。这种专业的实验环境更能培养学生分析问题与解决问题的能力。

2.4 丰富师生教学的组织形式,促进学生知识多元化的发展

高职院校的教师往往理论知识扎实,实践经验不足。因此,为了更好地培养学生,应定期选派一些优秀的教师到软件公司的测试部门实习,学习对一个完整项目的功能测试与性能测试过程,在公司允许的情况下,将测试项目引入到教学中,可以丰富实践教学,促进教学方法与教学手段的改进。另外,可以聘请一些软件公司的软件测试负责人参与到教学中,充分利用他们丰富的实践经验,指导学生的实践教学。还可以定期邀请一些行业专家为学生开设专题讲座,让学生了解软件测试的最新前沿知识,为学生最终进入软件企业实习做好理论与实践上的铺垫。在学习中,学生组建3人小组,1人任测试组长,2人为组员。可以固定小组成员完成全部课程内容,也可以按教学情景确定小组成员,让同学之间有更多的交流和互动。

3 结语

软件测试与软件产品的质量息息相关,要做好软件测试,就需要大量的软件测试人才,高职院校软件专业要与软件企业紧密结合,做好输送人才的基地。我们要建立为企业服务、以学生为主体的思想,从教材的建设、实验室的搭建、师资的培养、对学生的考核机制等方面进行探讨,寻找培养优秀人才的最佳教学方法。

参考文献

[1] 王帅,朱彬,李丽萍.软件测试课程建设的几点措施[J].计算机教育,2010(8):66-68.

第5篇

关键词:软件测试;专业课程;教学方法

中图分类号:G424.21 文献标识码:A 文章编号:

1、引言

软件测试是软件开发过程的重要组成部分,是用来验证一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的有三个:一、确认软件的质量,一方面是确认软件是否做了你所期望的事情,另一方面是确认软件是否以正确的方式来做了这个事件;二、提供信息,包括提供给开发人员或程序经理的反馈信息以及为风险评估所准备的信息;软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

现在许多软件企业开始重视软件测试,越来越多的软件技术人员开始投身测试行业。在一些大型软件公司里,软件测试甚至比开发投入的资源还要多。目前,国内的软件测试人员大多数还停留在简单、重复的黑盒手动测试阶段,软件测试人员也常常觉得自己所从事的工作和计算机技术关系不大,只要了解产品的业务逻辑就可以完成工作。这也导致很多测试人员对本身的工作失去兴趣。近年来自动化测试技术逐渐进入软件测试人员的视野。通过对比,人们逐渐发现:软件测试和软件开发一样具有挑战性、有技术含量。开发人员有自己的开发工具,软件测试人员同样也有像QTP、LoadRunner、Rational Robot等测试工具;开发人员有例如Java、C#等语言来编写代码,测试人员也有测试专用的语法来编写脚本、调试脚本;开发人员生产出来的产品可以为企业直接创造效益,测试人员通过质量手段防止更多的缺陷遗留给客户。因此软件测试再也不是一般非专业人员所能够胜任的,而是和软件开发一样具有技术含量、前景美好的技术。

2、理解基本概念,理清知识脉络

软件测试的主要工作内容是验证和确认,在此要注意理解验证和确认的概念,验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。对于这个概念,可以举一些日常生活中的例子说明。确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性,即保证软件以正确的方式来做了这个事件。其中静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。

学习全面的软件自动化回归测试流程最好要有一定的开发基础,另外最好对软件工程中的质量体系、配置管理、度量管理有所了解和认识。例如理解回归测试,要懂得回归测试的策略,要知道为什么要进行回归测试,进行回归测试有什么好处等等,只有这样,才能真正理解回归测试的含义。

3、善于运用启发式教学

启发式教学是指教师在教学过程中根据教学任务和学习的客观规律,从学生的实际出发,采用多种方式,以启发学生的思维为核心,调动学生的学习主动性和积极性,促使他们生动活泼地学习的一种教学指导思想。这不仅是教学方法,更是教学理念。

运用启发式教学,要尽量引导学生主动学习,适当进行启发、指点,而不能简单地灌输。例如,在讲述商业案例中,首先讲解了商业案例的定义,确定业务的需要,然后讲述在成本和收益方面调整自动化,最后讲述评估ROI。紧接着是自动化测试的总节省,在此,我并没有马上展开讲述不同类型的时间节省,而是让同学们自己先想想,利用自己的知识展开讨论,可以进行3个同学分组讨论,然后分别叫不同的组回答讨论的结果,结果讨论的结果都不是很理想。这时,我继续讲解自动化测试的总节省,测试环境建立的时间节省以及测试开发的时间节省等等,学生通过听讲,他们感到印象特别深刻。另外,对于某些知识点,要采取对比的方法,以求消化。比如,测试开发的时间节省、测试执行时间的节省、测试评估/诊断的时间节省这三个时间节省的概念,有哪些相似点和不同点,通过对比学习,学生反映良好。最后,启发式教学离不开讨论,讨论可以加深对问题的理解,它不是简单告诉答案,而是指引他们往正确的方向思索。学生们反映交互式、讨论式与单向灌输式的教学方法最大的差别是“我们都很紧张,思想不敢开小差,不知道老师什么时候提问,不知道会问什么问题,不知道会不会问到自己。”

4、培养学生自学能力

法国教育家第斯多惠指出:“一个不好的教师奉送真理,一个好的教师则教人发现真理。”这句话足以说明老师不但要传授知识给学生,更重要的是让他们能自主学习。当我讲解测试自动化软件测试框架时候,我只是讲完了验证ASTF是否满足特定需求,功能是否表现如预期那样、对所有ASTF相关工作,包括设计、开发以及相关测试用例进行同级评审,还有作为软件开发生命周期一部分的同级评审以及评估所有ASTF软件时候,剩下的评审测试用例留给学生自己自学。刚开始时,学生还不习惯,部分人根本没有去自学,为了让他们养成这一良好习惯,上课时我经常会提问需要学生自学部分的问题,比如评审测试用例的概念和主要思想等,并把他们的回答作为平时成绩对待,结果,绝大多数学生开始重视,并按照老师的要求积极去图书馆或网上查阅资料。后来,学生们反映,其实测试用例中的内容并不是想象中的那样难。自学能加深他们对课本内容的理解,能开阔他们的视野,可以提高学生解决问题的能力,实现创新人才培养的教学目标。

5、结束语

本文从实际教学的角度出发,探讨了《软件测试自动化》课程的几点教学方法和体会,当前,除了课堂学习外,建议学生可以充分利用网络资源学习。另外我们要不断吸收其他优秀老师的教学经验,并注重个人平时的积累和创新,逐渐形成个性化的教学风格。我们相信,通过老师和学生的共同努力,《软件测试自动化》的课程一定能讲得更好,学生也一定能学得更好。

参考文献

[1] 张克东.软件工程与软件测试自动化教程[M].北京:电子工业出版社,2010

[2] 李秉德 教学论[M] 北京:人民教育出版社,2005

[3] 赵斌.软件测试技术经典教程[M].北京:科学出版社,2007

[4] 王立峰,延伟东等.软件工程理论与实践[M].北京:清华大学出版社,2010

第6篇

论文摘要:在软件测试组织中,对测试过程中的知识进行有效的管理,是提升组织整体测试水平的关键。一个重要的研究问题是怎样将知识管理过程与软件测试过程有效集成,从而促进知识资产在软件测试组织中的传播与重用。给出了软件测试领域知识管理子系统的体系结构、主要功能以及使用流程,对一些关键技术进行了探讨。最后,给出了知识地图模块的设计与实现,验证了本文所实现的软件测试领域知识管理系统的合理性和有效性。 

知识管理的本质是一个管理问题,但是知识管理的各种功能及服务最终都还得依靠知识管理技术来实现。可以说,没有强大的知识管理技术支持,企业将很难有效实施知识管理,它是构建知识管理系统的基础,也是实现知识管理的强大推动力。从广义的角度看,知识管理技术并不局限于IT技术,但现代信息技术才是知识管理得以有效实现的基本前提。十多年的知识管理研究使得相当一部分的知识管理IT工具已经推向商业市场,但是这些已有的产品并不都是和企业的具体需求结合在一起,特别是在特定领域的应用,这种脱节表现尤为突出。 

软件测试是一个知识密集型的活动,测试人员都属于知识工作者,他们的工作不仅仅是依据测试计划对软件进行测试,与测试相关的知识、技巧、经验和灵感在测试过程中有着重要的作用,测试人员如果没有开阔的思路,没有丰富的测试经验与测试技巧,测试的质量将无法保证。此外技术的飞速发展,不断出现的新的待测软件产品,常使软件测试人员感到压力重重,力不从心,他们有探寻新的测试知识和技术的紧迫需求。而知识管理的出现为我们提供了一种新思路和解决问题的新方法,但是软件测试有其自身的特点,虽然现有的通用知识管理理论及技术已或多或少触及了某些问题,但我们更需要用一种与本领域结合更紧密的理论和技术,来重新思考和审视我们的问题,以便寻找出一种解决问题的更有效的方法。 

本系统是目前北航软件所的一个软件测试管理平台QESuite2.0项目中的一个子系统,该项目是北航软件所承担的某型号任务的一个子课题。目前,该系统已经完成了原型系统的构建,全部模块及功能已经实现,并在实际工作中试用,达到了预期的效果。 

1软件测试领域的知识管理 

1.1国内外研究现状 

目前国内外在软件测试领域内实施知识管理的相关研究很少,迄今为止并没有找到在软件测试中实施知识管理的实例。国内知识管理的研究起步晚,同时专门从事软件测试的企业又很少,在测试领域内实施知识管理的需求刚刚出现。 

到目前为止,虽然没有发现国外针对软件测试领域实施知识管理的研究和案例,但是从事各领域通用的知识管理的研究已有了很多年的历史,像IBM,Microsoft这样居于软件行业领先地位的公司,已经投入了相当规模的资金与人力来进行知识管理的研究,提出了一整套的知识管理理论并开发出相应的软件产品。 

此外,国外在与软件测试最相近的软件工程领域对知识管理也有比较深入的相关研究,已经发表了相当数量的论文并开发出了一系列的软件支持工具。目前,每年都举行专门的基于知识的软件工程年会(KBSE Knowledge-BasedSoftware Engineering Conference),探讨知识管理在软件工程领域的最新进展。 

进行软件测试领域知识管理的研究实际上是一个知识管理思想在软件测试领域的IT实现问题,也就是开发出一个软件平台来支持软件测试中的知识管理活动。根据Gallupe在2000年对现有知识管理系统平台、理论、案例等相关信息的较大范围的研究,现有知识管理系平台要真正实现有效的知识获取、编码、存储和搜索还有相当长的一段路要走。 

1.2存在的主要问题 

根据作者在北航软件所参与的软件测试项目工作经验,同时结合知识管理的基本原理分析国际上主流软件测试过程,认为目前在软件测试过程中存在五大问题: 

1)软件测试知识重用率低。目前,软件测试过程中公共测试知识的积累未能有意识地大规模开展,虽然企业内部有一些用于测试知识和经验积累的数据库,但大多数员工忽视其存在,造成测试知识资源的闲置,导致测试知识和经验的重用率低。 

2)软件测试知识传递不畅。现有测试知识的保管模式使得知识的传递不畅,测试知识被动地等人来阅读,而使用者则在知识海洋中苦苦寻觅他所需要的知识,员工无法快速掌握新的测试知识。 

3)软件测试知识共享环境差。企业内部尚没有正式的、专用的、有组织的知识共享场所,员工之间缺乏相互沟通与交流的机会,沟通与交流的体制也没有建立起来,软件测试过程中的知识共享氛围也有待于培养形成。 

4)软件测试知识流失严重。许多专门经验和技能只是少数人所拥有,没有真正成为企业的公共知识,这不仅使测试知识传递不畅,而且在人员变动时,这些测试知识会随之流失,使企业的整体竞争力因人员流动而发生波动,给企业带来严重损失。 

5)无法快速实现测试组织中人力资源优化配置。知识管理是人、过程、技术的有机集成,其中人是最主要的,企业的管理者无法对组织中的人员技术特长、知识分布了如指掌,在遇到新的测试项目时,无法根据员工特长,快速搭建出最优的项目团队,从而无法实现组织中人力资源的优化配置。 

由于上述问题的存在,造成了软件测试企业的生产效率不高,对市场的整体响应速度慢,应变能力不强。本人认为以上问题的出现是源于在当前的软件测试过程中缺乏对知识的科学管理,因此在该领域内实施知识管理就显得很有必要。 

2系统体系结构及工作流程 

北航软件所(SEI/BUAA)在多年从事软件测试领域的研究与实践的基础上,对知识管理在测试领域中的应用进行了大量深入的调查、研究,提出了一套针对软件测试领域实施知识管理的思想和方法。 

由于软件测试领域的知识管理目前的研究甚少,特别是现成的软件测试知识管理系统更是一片空白,因此本课题的研究只能参照通用的或相关领域的已有研究进行。观察国内外知识管理平台的研究,尽管提出的模式纷繁复杂,但基本上每个模式中都包含着诸如知识产生、分类、积累、共享、重用这样的基本流程。 

2.1系统体系结构 

QESuite2.0在结构上采用的c/s方式,可支持群组协同工作,其中数据收集和分发的部分使用EJB实现,容器使用JBoss。QESuite2.0的框架基于插件开发的思想创建,利用多态特性声明可扩展的接口。框架与插件的连接、子类别的实例化过程则利用解释引擎(也称作连接器)在运行时动态完成,框架即可根据模板进行统一调用,具有良好的封装性和可扩展性。基于测试管理平台的以上特点,软件测试过程知识管理系统的体系结构如图1所示。 

本系统基于J2EE开放式架构,是一个面向软件测试过程的架构弹性的知识管理平台。系统依循知识生命周期管理,利用软件测试组织中的知识文档,有效帮助企业存储、管理、搜寻、分享各种知识,并通过组织中的知识地图,有效地评估员工的知识程度,使知识地图成为知识型员工的地位象征,并通过统计工具对拥有知识的员工进行肯定,从而促进知识共享的企业文化。 

2.2系统工作流程 

系统的工作流程主要包括以下几个方面,如图2所示。 

(1)首先对本子系统进行初始化,在本系统预定义的基础上,允许用户对软件测试知识分类、知识程度、组织职位定义、项目规模进行自定义。 

(2)在交流库中添加文档,用户可以直接编写文档提交交流库,或者在交流库中提出问题,交流库是整个系统的知识文档来源。交流库中筛选出的技术含量较高文档,由知识分析员进行知识分类后,提交知识库。 

(3)用户可以自行对知识库中的知识文档进行评估,同时根据知识分析员对文档的评定,以及作者的知识程度、文档的链接程度等加权实现对文档的评定。 

(4)知识分析员可以根据组织讨论的结果直接设定组织成员的知识等级,也可以通过编辑组织成员的项目经历,来自动设置成员的知识等级,或者通过成员在组织中发表的知识文档来自动设置成员的知识等级。 

(5)知识检索,主要包括知识文档检索和专家检索,通过知识文档元数据可以任意检索知识文档,当用户无法找到需要的知识文档,可以通过专家检索来告诉用户组织中能够解决问题的人。 

3几个关键技术的研究与应用 

3.1基于本体的软件测试领域知识表示方法 

本体(ontology)起源于哲学,是关于存在及其本质和规律的学说。在近一二十年,本体被计算机及建模领域所采用,用于知识表示、知识共享和重用。本体论是对概念化对象的明确表示和描述,是对客观世界存在的现实系统化的描述。从本质上讲,本体是一个或几个领域的概念以及反映这些概念的关系的集合,关系反映了概念的约束和联系,而关系本身也是概念,关系之间也可能构成新的关系。 

我们以本体来对软件测试领域知识进行表示,描述领域中相关的概念、属性,及其关系。这些本体概念、概念之间的关系定义在文档、参考文献、项目、人员、知识程度共5类本体中。根据以上属性,软件测试领域知识本体如图3所示。 

3.2软件测试领域知识管理模型的提出 

在针对软件测试过程的知识管理中,需要实现积极、主动的知识传递,建立起组织级的人员之间沟通和交流的渠道,根据软件测试活动中的知识需求,及时地实现相关知识的传递,通过有效的知识传播来改善和提高知识的重用效果。由于组织所需要的知识处于动态变化中,因而需要通过一个有效的基础设施,来满足以上功能需求。 

根据以上分析,我们提出了一个面向软件测试过程的知识管理模型,如图4所示。本模型的要素是“测试组织人员”、“测试组织知识资产”、“测试组织交流场所”。基本思想是在软件测试过程中,建立一个交流场所,记录成员的提出的问题和问题解决过程,以及各种文档。

3.3软件测试领域知识地图的构建方法 

知识地图,或称知识分布图(又称作知识黄页簿)是知识的库存目录。知识地图所显示的知识来源,可能是部门名称、小组名称、专家名字、相关人名字、文件名称、参考书目、事件代号、专利号码、或知识库索引等,但却不包含知识的内容本身,它是指南和向导,用以节省员工追踪知识来源的时间。 

一个优秀的软件测试知识管理平台软件还应当能够提供强大的软件测试知识分类的能力。根据工程实践经验及SWEBOK分类方法,我们对软件测试领域增加了5大知识域:开发语言、数据库、操作系统、软件测试工具、测试项目相关知识。我们的知识地图中,每一种能力都有5级知识程度:了解、熟悉、熟练、精通、专家级。每一级的程度定义都有描述,务求清晰及易于评价,并避免主观的误差。每个员工的实际能力也依此标准衡量,评估过程应由员工、小组、经理及知识分析员互动完成。 

3.4基于本体的知识文档智能检索和排序方法 

本体在知识检索子系统中主要扮演知识库的角色,即首先对软件测试领域的概念分类、建立概念之间关系约束的描述,然后以此为基础构建详细的软件测试领域知识库,主要包括软件测试领域的具体概念、概念之间的属性、概念之间的关系以及实例等知识。在知识检索时,根据用户请求的关键词来查找相应的概念或属性,并以此为出发点来检索某条本体信息是否与这些概念或属性相关,从而实现支持逻辑推理的智能检索。 

在知识文档检索子系统检索出结果后,必须首先研究检索出来的文档应该按照什么样的顺序进行排列。影响排序的因素有很多,根据研究,我们认为有5类因素是影响排序结果的关键:用户对知识文档的评价、知识分析员对文档的评价、作者的知识程度、文档的链接数,以及文档的打开次数。这五类因素的权值是按次序递减的,可利用递减加权公式来计算各因素的权值。下面是递减加权公式: 

知识文档的重要性按下公式来进行计算: 

知识文档的重要性=P1×用户对知识文档的评价+P2×知识分析员对文档的评价+P3×作者的知识程度+P4×文档的链接数+P5×文档的打开次数。 

通过计算出来的知识文档重要性结果,然后对所有文档按降序排列,就可以将最有价值的知识文档排在前列。 

4系统实现 

限于篇幅,整个系统各个模块的设计以及实现,这里不做详细介绍了。下面以简单图示的方式给出本系统的核心模块——知识地图模块的类设计和实现界面。知识地图模块分为两个部分:专家网络和搭建测试项目团队。普通用户在该模块可以编辑自己的项目经历,在编辑时可以选择项目导人数据,如果项目不存在,则可以自己编辑项目,然后导入项目数据,再编辑自己的项目经历,包括使用的技术、工作时间,项目职位、项目规模等等。知识分析员有权限选择其他用户编辑项目经历。在项目经历编辑完成之后,系统会根据用户对某些技术的使用时间来自行定义用户在这些知识点的知识程度,但是用户的知识程度最多达到熟练级别,要想达到精通和专家级,必须由知识分析员来编辑用户的知识程度。图5是系统中专家网络定义模块的编辑用户知识程度活动图。 

知识地图模块的客户端的设计类图如图6所示。在知识地图模块的客户端中,负责界面消息事务处理的类有三个:EditTechDialog,WorkingExperienceDialog,FindPersonToStartProject。EditTechDialog这个类用来编辑用户的知识程度,只有知识分析员才有权限来调用这个类。WorkingExperi—enceDialog是普通用户可以使用的一个类,用来显示用户的工作经历。类FindPersonToStartProject是管理人员,通过输入一些数据来得到组织中比较适合新项目的人员,通过类FindResultDialog来显示查找结果。 

结束语 

第7篇

关键词:软件测试;实践课;就业

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)04-0999-02

Employment-oriented Software Testing Practical Course Reform

MA Min-sheng, MA You-zhong, REN Gang

(Information Engineering Department of Chenggong College, Gongyi 451200, China)

Abstract: Based on the current requirement situation of the IT companies for software testing talents, the paper analyzed the shortcomings of software testing practice teaching and training of personnel in colleges. Concerning the current software testing teaching model、methods and means, we proposed the employment-oriented practical course reform,achieved the “zero distance” between practical teaching and employment, effectively filled up the deficiencies of graduates without working experiences. Finally analyzed and summarized the teaching reform.

Key words: software testing; practical course; employment

软件测试课程是近年来才逐渐被社会广泛认同和重视的一门软件工程实践类课程。软件测试职业就业具有前景广泛,薪资待遇高,竞争相对较小,无性别歧视,多元化发展等特点,应成为今后相当时期内高校计算机类专业的一门重要课程。现阶段,我国软件测试人才缺口已经超过30万,供求矛盾较为突出,造成此缺口的最大原因就是我国软件测试人才培养途径单一、培养体制不健全。

本文立足于当前大学生的就业问题,调研了目前社会上对软件测试人才的需求情况,提出在高校中开展课程改革和人才培养方面的创新,着眼于学生毕业后能够满足各类IT企业对软件测试人才的要求,强调实践课要结合项目实战,运用教学案例,模拟实际的工作场景,锻炼学生的实践能力,为社会培养软件测试方面的高级专业技术人才。

1 软件测试实践课教学现状分析

国内外对软件测试人才的培养主要有三种模式:企业内部、高等院校和IT培训机构。企业培养的人才大多是通过参与项目自己摸索的软件开发人员,由于缺乏对软件测试全面的认识,在测试思想、技能、思维方式、沟通能力等方面都需要进一步提高。

高校培养模式弥补了IT培训机构功利性强、培养目标单一、费用较高等缺点,但主要的缺陷是学生因为没有实习机会而普遍缺乏工作经验,不能满足公司对测试人才的要求,在正式入职前还需要公司组织培训后才能上岗,这给企业带来了一定的风险和成本。

目前,大学软件测试教学中存在的问题有:对实践课程的重视程度不够,软件测试开展的不够深入、彻底。测试过程存在大量的不规范性和随意性。教材质量良莠不齐,教学上知识结构不合理,缺乏具体的实践和系统的培训指导。教师资源缺乏,教学方法和手段因循守旧。高校中有讲授软件工程的主讲教师能很好的讲解软件测试理论和介绍软件测试方法,但缺乏较好的软件测试案例和一定的工作经验。学生对软件测试职业存在一些错误的和片面的理解等。

2 以就业为导向的软件测试实践课课程改革

高校的软件测试教学改革的主要思路是,以学生就业为导向和中心目的,培养学生成为理论与实践并重,综合素质过硬的复合型应用型人才。主要内容和做法是:

2.1 建立软件开发全程测试的思想

1) 重视软件测试,规范化测试流程

主要内容是,参照测试公司对测试人员的岗位描述和任职要求,借鉴公司内部测试流程和测试方法,优化当前课程体系和知识结构,搭建软件测试工作环境和平台,构建测试实验室,模拟真实的工作场景,进行完整的软件测试流程实践。

2) 建立学生测试团队,模拟软件公司开展测试工作

在实验课教学中,教师合理分配各成员间的任务,培养学生岗位技能。测试实验采用分组的形式完成。每组由5~7名成员组成,指定一名学生为项目组长,其余学生为开发人员和测试人员。组长负责项目进展、分工协作、测试计划的制定等工作, 其他组员分别就相关模块进行各自的测试策略、测试用例设计以及完成测试报告等。然后通过角色交换,充分发挥学生的沟通能力。

3) 软件测试引领测试驱动开发

测试驱动开发实践来源于敏捷式开发思想,其核心就是在开发代码之前,先编写测试代码.也就是说明确开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例,循环进行添加其他功能,直到完成这种思想让学生认识到测试是开发的重要组成部分,对于学生树立牢固的测试理念是必不可缺的。

2.2 多种教学实践综合运用

1) 循序渐进式的教学体系 根据学生能力水平的高低和实际的岗位需求,将教学目标定位进行划分。现有IT公司在招聘测试人员时根据技能要求分为初级测试工程师、中级测试工程师和高级测试工程师。进一步分析初级、中级测试工程师的工作内容和所需要的技能.将这些技能按照渐进的顺序分为不同的组,当掌握了该组所需要的技能之后,就可以认为达到了一个新的测试工程师等级。这样,在教学过程中可以循序渐进地让学生掌握不同的技能组,每完成一个技能组,都可以完成对应的实际工作。

2) 开展“五步教学法” 根据软件测试岗位实践性强的特点,在教学中结合实际项目、开展“五步教学法”,按照以下五个步骤来组织教学:布置问题、动手实践、分析和讨论问题、理论讲授、实践提高。通过动手实践,学生明确工作任务。通过教师的分析和学生的讨论.学生能认识到自己动手实践中存在的问题。经过前三个环节的铺垫,学生就比较容易接受理论讲授,并能在实践环节去消化、运用。

该教学法以完成职业培养为目标,并将目标细分为一个个渐进的具体目标,通过不断地设置问题、解决问题,学生最终掌握一系列实际工作技能,达成培养目标。“五步教学法”的开展,一方面通过先动手、后总结的方式,强调在实践中学习,使学生对理论知识的学习有更清楚的目的,提高了学生的学习兴趣;另一方面,通过个人思考和小组讨论.锻炼了学生的思维能力, 同时学生的自主学习能力得到进一步提升,而这也是学生从业后需要具备的基本素质。

3) 框架式教学方法 给出实验目的和简略的实验参考步骤,让学生使用学过的软件工程的方法来进行实验。实验过程中每一步的具体内容需要学生自己完成,为学生充分发挥主观能动性创造了条件,留下了思考的空间。

4) 项目驱动下的案例教学 案例教学更有利于提高学生分析问题和解决问题的能力,促进学生学会学习以及沟通合作。在教学的过程中,应当以可操作的软件测试案例为中心,将测试理论贯穿开发全过程,指导软件开发。让学生能够真正地体会到实际的测试流程。鉴于软件测试由第三方进行的原则,可以由小组之间互相交换软件进行测试,学生之间可以进一步交流,互相督促,共同进步。

2.3 开发软件测试基线包用于教学

软件测试实践教学要借鉴IT公司开展测试项目的做法,面临的重要问题是项目案例的组织和规划,为此可以组织开发不同层次的软件测试基线包用于教学。

测试基线包和案例的收集主要通过以下途径:一是历年典型的学生开发项目案例、毕业设计等;二是包含着人为设置的软件缺陷的软件系列,所设置的缺陷代表着在实际软件开发过程中的典型问题;三是企业的项目资源,包括项目需求文档、项目设计文档以及项目软件的不同版本,这些资源能够让学生接触到完整的案例.并且由于基线包中包含了软件的不同版本,从这些版本中.可以清晰地发现软件缺陷是怎样被不断地发现和修复。此外,还可以从教材及参考书中收集、从互联网中收集。在测试案例的选取上,要遵循典型性、针对性和系统性原则,收集到的案例可以作为理论课讲解时的实例,也可以作为实验课的基本素材。

为了使软件测试基线包具有可移植性,可通过技术手段实现软件测试基线包的快速部署,使学生能快速便捷地完成测试环境及测试软件在不同场合的搭建。软件测试基线包的开发为教学和实践提供了有力保障.同时便于课程教学资源共享。

2.4 培养学生综合素质和职业技能

公司在招聘人才时,要求应聘者不仅要具有较强的理论知识和实践经验,也要具备良好的职业素质。由于软件测试职业的特殊性,后者显得尤为重要。目前的教学中,对于应试技巧的教学内容几乎没有,因此很有必要就这方面组织培训,使学生在入职前对软件测试职业有一定的了解,赢得面试官的青睐,获得更多的就业机会。

1) 加强学生面试技巧的锻炼,例如面试中的仪表风度、专业知识、工作实践经验、口头表达能力、综合分析能力、反应能力与应变能力、人际交往能力、工作态度、上进心与进取心、求职动机等方面。

2) 注重培养软件测试必需的沟通能力、责任心、怀疑精神、发散思维和反向思维能力。在学生中树立良好的测试团队意识,例如目标意识、团队意识、服务意识、竞争意识、危机意识等。

3) 搜集和整理一些知名软件公司(例如中兴、华为、IBM等)的软件测试工程师面试和笔试题,利用教学间隙组织模拟考试,进行讲解和点评。

4) 建立校外实训基地,与IT公司联合培养,通过企业实习提高学生的岗位技能,形成定向培养的长效机制,弥补大学毕业生没有工作经验的缺陷。聘请业界知名专家、IT公司经理来校讲座,了解测试行业最新动态,就相关问题答疑解惑,激发学生对软件测试学习的兴趣。

总之,软件测试教学应当与社会的真正需求相结合,实现就业岗位零距离。

3 总结和展望

以就业为导向的软件测试实践课教学改革改变了过去实践课流于形式,开展不到位的缺点,增强了学生的社会实践能力和岗位技能,实现了教学与就业的零距离,取得了一定的教学效果和社会效益。目前改革还未能形成完整的教学体系,在实践课的组织和实际操作上有一定的难度,实验形式的过于灵活会导致课堂教学效率降低。今后需要在目前的基础上作进一步完善,以适应当前IT企业不断变化的测试人才需求状况。

参考文献:

[1] 陈能技.软件测试技术大全-测试基础、流行工具、项目实战[M].北京:电子工业出版社,2008.

[2] 古乐,史九林.软件测试案例与实践教程[M].北京:清华大学出版社,2007.

[3] 朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.

[4] 刘德宝.软件测试工程师[M].北京:科学出版社,2009.

第8篇

 

关键词:定义;因素;组织管理

一、软件测试的定义

软件测试(Software testing)是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:"使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别"。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。

从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是"为了发现错误而执行程序的过程"。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

二、影响软件测试的因素

影响测试效率的因素除了测试方法之外,主要因素还有人为因素、软件类型、错误类型、测试充分度等。下面对这些因素作一个简要分析。

1. 人为因素

软件测试中的许多工作是由人来完成的,因此,人为因素是影响测试效率的一个重要方面。这样的差异并非偶然,这是因为测试人员在应用一个测试方法时具有很大的灵活性,从而使测试人员的经验和学习能力可以有较大的发挥余地。所以只能采用越来越严格的测试方法和过程来有效地避免人为因素对测试效率的影响。

2. 软件类型

软件类型也是影响测试效率的一个重要因素。即使是同一个测试者,测试不同类型的软件的效率和发现软件错误的能力也是不尽相同的。测试什么类型的软件的效率较高则因人而异,这往往与测试者的相关知识、经验与专业训练有关。

3. 测试充分度

测试充分度反映了一个测试是否得到了良好的执行,它直接关系到测试的效率。1993年Frankl和Weiss发现,只有当充分度十分接近100%时,才能使测试发现错误的能力得到发挥。因此,在测试软件时,必须设法使充分度十分接近100%,否则将难以保证测试质量。

三、加强对测试工作的组织和管理

随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。然而,为了尽可能多地找出程序中的错误,生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。

从软件的生存周期看,测试往往指对程序的测试,这样做的优点是被测对象明确,测试的可操作性相对较强。但是,由于测试的依据是规格说明书、设计文档和使用说明书,如果设计有错误,测试的质量就难以保证。即使测试后发现是设计的错误,这时,修改的代价是相当昂贵的。因此,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。

虽然测试是在实现且经验证后进行的,实际上,测试的准备工作在分析和设计阶段就开始了。

1. 测试的过程及组织

当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。

在实现组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:

(1) 首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。

(2) 为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收测试。

(3) 代码会审:代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长,2~3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。

(4) 单元测试:单元测试集中在检查软件设计的最小单位-模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。由于模块规模小、功能单一、逻辑简单,测试人员有可能通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,采用结构测试(白盒法)的用例,尽可能达到彻底测试,然后辅之以功能测试(黑盒法)的用例,使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础

(5) 集成测试:集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。

2. 测试的人员组织

为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此,测试人员的组织也应是分阶段的。

(1) 软件的设计和实现都是基于需求分析规格说明进行的。需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量,应对其进行严格的审查。

第9篇

关键词:软件;测试;看法

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599(2011)21-0000-01

Points View of Computer Software Test

Ma Lijuan

(302 Design Institute,Guiyang 550009,China)

Abstract:With the software technology to increase the size and complexity,as a software engineering throughout the entire software life cycle,an important part of software testing,increasingly stringent requirements,but also the very strong challenge.Based on years of experience in software testing, software testing in the points put forward views,I believe this plays start a discussion on software testing for reference.

Keywords:Software;Test;Views

随着近些年信息技术的高速发展,软件产品的应用已经深入到社会的方方面面。人们在享受软件产品带来的便利的同时,也重点关注软件产品的质量。对那些质量不合格的软件产品给开发商和用户都带来麻烦,而在一些关键部门的应用,如果出现质量问题则是毁灭性的。对软件进行的测试则受到重点关注。一般来说,伴随计算机软件的发展导致软件测试应运而生,软件测试的过程必须包含开发的任务,在对软件进行的测试周期内则需要充分考虑到评估测试时间和开发修复时间。

根据笔者总结得知,软件测试就是为了让用户更迅捷、更节省时间的把软件产品或者在软件系统中存在的各种问题找出来,在此基础上,让程序员解决存在的这些问题,并最后及时给予用户高质量的软件产品。作为软件开发过程中的重要内容,软件测试是对开发的软件提供高质量保证的关键。在整个软件开发的生命周期过程中,从新的软件项目开始起,到软件产品的需求分析,最后到验收测试和安装测试结束,都有着软件测试的影子。

寻找和纠正软件中的故障这是对软件进行测试的目的,在测试过程中,不但要发现软件中存在的错误,还要对软件的质量进行客观的评价。软件测试就是对软件的质量进行度量,从而评价一个程序或者一个系统属性,并在此基础上提高被检测软件的质量。

测试构成了所有工科的基本组成元素,在软件开发中具有举足轻重的作用。而软件测试就是对软件去组织测试,达到预期的效果和目的。近些年随着计算机软件开发的规模越来越大,而软件的复杂程度得到明显的提高,对软件进行检测以期望需找软件中的错误的测试也越来越困难。而在此背景下,尽可能的把程序中的错误一一挖出,对这些错误进行解决,从而生产处高质量的计算机软件产品,只有加强对测试工作的组织和管理,并选择最优的测试方法。根据笔者观点,一套完整的测试分为以下五部分:第一阶段:提出计划。通过对用户需求报告的详细阅读,特别是根据其中规格说明书中性能要求和性能仔细揣摩,制定出相应的测试需求报告,也就是制定黑盒测试的最高标准,在此项测试活动中,所有的测试工作都必须严格按照此项测试需求来开展工作,这也就是此项测试工作的行动准绳,依靠测试需求报告来进行判断,符合测试需求的应用程序就给判定合格,而不符合测试需求的应用程序就给判不合格。而在制定测试需求报告后,还要针对这一需求测试需求报告选择适当的测试内容,科学合理的安排测试人员、测试时间和测试资源等内容。第二阶段:测试设计。在提出计划的基础上,根据测试计划阶段的要求将之前制定的测试需求进行详细分解和细化为若干个可单独执行的测试小单元,并为每个小的测试单元寻找适当的测试比例,对这一比例要好好斟酌,因为这个比例选择的好坏直接关系到测试结果的有效性。第三阶段:测试开发。通过建立可重复的自动测试过程。这也是一个通过一组人通过阅读、讨论和争议对程序进行静态分析的过程。通过软件测试会审小组的审查,审查小组由组长、2~3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。第四阶段:测试执行。执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。软件测试。是整个软件开发过程中交付用户使用前的最后阶段,是软件质量保证的关键。软件测试在软件生存周期中横跨两个阶段:通常在编写出每一个模块之后,就对它进行必要的测试。编码与单元测试属于软件生存周期中的同一阶段。该阶段的测试工作,由编程组内部人员进行交叉测试。这一阶段结束后,进入软件生存周期的测试阶段,对软件系统进行各种综合测试。测试工作由专门的测试组完成,测试组设组长一名,负责整个测试的计划、组织工作。测试组的其他成员由具有一定的分析、设计和编程经验的专业人员组成,人数根据具体情况可多可少,一般3~5人为宜。第五阶段:测试评估。在进行测试执行阶段结束后,通过结合量化的测试覆盖域和缺陷跟踪报告的结果,给予应用软件所反映出来的质量和软件开发团队的工作进度和效率进行客观的综合评价。

当然,当面向对象技术开发的软件来说,传统的测试技术和方法则不能发挥应有的作用。为解决此项问题,我们对软件测试技术提出面向对象的专用方法。面向软件测试技术作为一项新兴软件测试技术,就是为了专门针对面向对象技术开发的软件而推出的一项测试技术。面向对象软件测试此项测试就是面向对象的软件开发过程结合面向对象的特殊特点而给出的。其内容有分析与设计模型测试技术、类测试技术、对象交互测试技术、类层次结构测试技术、面向对象系统测试技术等。

第10篇

关键词:软件测试;版本管理;DFRA

中图分类号:TP311.53

1 测试版本管理的现状与问题

众所周知,测试是提升软件质量的有效手段。然而,在测试过程中,我们经常会遇到如下问题:测试执行过程中,已经修复的缺陷,在下一个版本中重复出现;测试人员提交的缺陷被开发人员退回,理由是开发环境上不可重现。究其原因,就是测试版本管理的随意性:在测试开始之前没有制定测试过程中的软件版本管理计划,没有指定相应责任人,也没有制定版本管理的规则和流程,于是在测试过程中,何时由何人版本就不明确,随意的版本,造成了上述问题。软件版本管理是配置管理的一个重要部分,业内专家和学者进行了一些版本管理方面的研究,如软件配置管理中版本管理技术研究[1],增量开发软件项目版本管理关键问题解析[2],基于构件的软件配置管理中版本管理关键技术研究[3]等。但是,对测试过程中软件版本管理的研究非常少,在实际的项目中,测试阶段的版本管理也基本采用与开发阶段的版本管理同样的工具与方法。目前,市场上有上百种软件版本管理工具,这些版本管理工具一般采用的是“检出-修改-检入”的模式,是基于源代码文件的版本控制,完成代码的统一管理,对于开发过程来说比较适用。但是测试过程中的版本管理与开发过程中的版本管理的粒度不同,测试过程关注的不是软件中某一段代码的维护,而是要将软件作为一个整体,形成一个可测试的软件版本。因此测试过程中的软件版本管理虽然要以版本管理工具为依托,但是更需要一种规范化的流程和方法来对测试软件的版本管理所涉及的要素进行明确。

2 测试版本管理的目标

为解决上述问题,本文的研究工作将针对测试阶段的软件版本管理,通过研究制定一套测试过程的软件版本管理流程和规则。以期望达到如下目标:

(1)使每一轮测试都在有效的版本上进行。如果在测试执行中,被告知被测版本无效,需要在另外的版本上重新测试,这会极大影响测试效率和进度,因此,有效的测试版本是保证测试效率的基础。

(2)使测试过程可追溯。测试过程中的软件版本管理,除包含软件本身,还应包含与软件相对应的文档说明。也就是说在每次新的软件版本时,应同时提交相应的文档,说明此版本的软件实现了哪些功能,进行了哪些变更,修正了哪些缺陷,从而使测试,缺陷都能与版本对应,达到可追溯的目标。这样,通过测试的软件可以形成一个基线版本,传递至下一环节。

(3)使软件在出现问题时,可以方便的回退到上一个版本。通过规范化的软件版本管理,可保留在系统形成可测试的基础版本到基线版本的任意版本的备份及相对应的文档说明,假设软件部署后,出现了严重的问题,可方便的回退到此过程中任意稳定版本。同样,软件在升级更新的过程中,如果由于更新的代码出现错误影响到了原有的代码,也可方便的将版本进行回退。

总而言之,测试版本管理的目标是就是在测试过程中对需要测试的软件版本进行控制、记录、追踪,最终确保测试工作和被测版本的正确性、完整性、可控性,使得通过测试的版本能够满足用户需求。

3 测试阶段的软件版本管理模型DFRA

测试阶段的版本管理与开发阶段的版本管理关注点不同,在开发阶段,开发人员关心的仅仅是代码段、与代码相关的需求、设计,而对于测试阶段来说,测试是将整个软件(包括需求、代码、设计、文档等),作为基于计算机系统的一个元素,与其他系统元素结合在一起测试。

针对测试阶段的特点,我们提出一个基于DFRA模型的版本管理方法。测试阶段的软件版本管理由四个要素组成:职责(Duty)、流程(Flow)、规则(Rule)、属性(Attribute)。

3.1 版本管理角色与职责

版本管理的第一步是明确版本管理的角色和职责。通常针对版本管理中的问题,需要多方面人员共同协调解决,在版本管理中需要参与的角色包括:

版本管理员:实施版本管理(建立版本基线、实施版本变更操作)、版本基线、备份。

项目经理:负责审核代码、并提交测试版本变更、确定版本信息。

开发人员:负责提交本人编写的代码,保证代码的正确性。

测试人员:对各版本进行测试,提交缺陷,新版本后进行回归测试。

3.2 版本管理流程

明确版本管理流程,就是根据版本管理的角色分工去实施版本的管理的过程。本节从版本的总体管理流程和测试过程中的具体版本流程两个角度进行说明。

版本的总体管理流程如图1所示,首先将通过集成测试的软件形成一个基础版本,然后在测试过程中根据实际情况进行相应的版本管理,系统测试结束之后,形成了一个基线版本。此版本可作为下一个测试阶段如业务验收测试的基础版本。同时系统测试总结报告的测试结论也是基于测试阶段最后的基线版本得出。测试阶段的版本管理流程是测试过程的一部分,在图2中体现为:

具体流程说明如下:(1)开发人员完成所负责模块的代码编写任务后,提交到项目经理处;(2)项目经理向测试部门提交测试任务;(3)版本管理员准备测试所需的环境,基础版本;(4)测试人员开展测试并实时提交BUG;(5)开发人员处理测试过程中所出现的BUG,进行相应修改后,提交代码和修改说明至项目经理处;(6)项目经理提交请求至版本管理员处;(7)版本管理员新的版本后,通知项目组成员(包括测试人员);(8)提交给测试人员进行回归测试;(9)测试完成后,测试人员提交测试报告;(10)项目经理与各相关人员经讨论后确定好新版本各项信息,版本管理员基线版本。

3.3 版本标识规则

进行版本标识,将每次的版本通过标识进行区分,并达到使版本标识规范和清晰的目标。采用的命名规则为项目简称:主版本号、子版本号、阶段版本号、日期版本号。当软件首次被提交到测试阶段时,会形成一个初始版本:项目简称1.0.0日期。下表对主版本号、子版本、阶段版本号如何划分进行说明:

3.4 版本属性

针对测试过程中软件的每一个版本,都要有文档描述其相应属性。开发人员在提交本人所负责模块的代码时,需要告知版本管理员,所做的修改,如增加的功能、特性或模块,修复的缺陷等。版本管理员在每次新的版本后,都要填写该版本的修订说明并发送项目组全体成员。并且在缺陷管理工具中配置相应的版本号,以便使测试人员在提交和验证缺陷时能与被测试的软件版本相对应。

3.5 小结

综上所述,在基于DFRA模型的测试版本管理方法中,职责是基础,流程是主线,规则与属性是核心,这四个要素缺一不可(图3)。通过明确职责,采用规范的流程进行版本管理,实现确保每个测试版本有效性的目标,通过明确规则,描述版本属性实现了可追溯的目标,同时在确保了每个版本的有效性及可追溯性的前提下,一旦软件出现问题,便可回退至上一稳定版本。

4 实例分析

O系统是一个银行管理信息类系统,在项目一期的系统测试阶段没有采用规范的版本管理方法,主要由项目经理临时决定版本,在测试过程中,出现过多次修复的缺陷反复出现的情况,更严重的是已修复的缺陷在生产系统上出现的情况。在二期的系统测试阶段中,项目组采用基于DFRA模型的方法进行软件版本管理。在测试开始执行前,即指定了专人作为版本管理员,同时项目经理、开发人员、测试人员都通过培训树立了较强的版本管理意识,在测试过程中严格按照版本管理流程进行版本,同时每次的版本都有唯一的版本标识,在缺陷管理工具中及时更新版本列表,用表格记录每个唯一版本的属性。在整个系统测试执行期间,按照测试阶段的软件版本管理流程(图3)版本15次,生成了版本属性表格(表2)。

通过采用DFRA版本管理方法,使系统测试始终都在有效的版本上执行,未出现由于版本错误导致测试返工的情况;同时实现了可追溯的目标,使功能模块发现的缺陷、修复的缺陷都能与版本不相对应;并且在上线前,由于开发人员修改某段代码导致系统功能不可用,采取了回退至基线版本的方法;实现了测试版本管理的预期目标。

5 结束语

本文提出了一个基于DFRA模型的测试阶段软件版本管理方法,并通过实例描述了该方法的使用。与开发过程中使用的版本管理方法不同,开发过程的版本管理一般是源代码级别的,实现代码的统一管理。而测试过程的版本管理模型是将源代码、数据结构、文档视为一个整体。通过版本管理,保持软件版本与文档的一致性,从而使整个测试过程可追溯,软件在出现重大问题时,可回退至任意稳定版本。

参考文献:

[1]刘燕秋,勉玉静,赵文耘.软件配置管理中版本管理技术研究[J].计算机工程与应用,2003(21):68-71.

[2]赵颖,蔡伶.增量开发软件项目版本管理关键问题解析[J].软件导刊,2012(05).

[3]韦杰.基于构件的软件配置管理中版本管理关键技术研究[D].大连海事大学,2006.

第11篇

关键词:软件测试;测试工具;测试管理;企业需求

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)32-7664-02

Abstract: In order to reverse the misunderstanding in College of Software Testing Talents Training, through explains the intension of software testing,proposes the teaching was in the software testing course necessary and feasible, as long as the change of thoughts, simulation test case of enterprises in the process of teaching, students' comprehensive quality training, can cultivatecomprehensive talent of software testing by enterprise love.

Key words: Software testing; test tool; test management; enterprise demand

自上世纪80年代,伴随着软件行业的发展需要,软件测试的基础理论和实用技术开始形成,经过三十多年的发展,软件测试在软件开发行业中的角色越来越重要,我们目前评价软件测试,它即需要工具和技术的支持,更需要有科学的管理体制,它既要保证软件能够健壮运行,又要保证软件的功能完全符合客户的需求,一个好的测试队伍,是软件开发必不可少的依靠,尤其是复杂的软件项目,开发和测试要亲如手足,才能保证项目的顺利进行。

目前高校的软件相关专业的毕业生,大约有1/5的人在5年之内从事过或最终从事软件测试相关的职业,这是一个相当大的比重,同时也反应出社会上对软件测试职业的缺口很大,众所周知,高等教育往往落后于企业的实际发展,这种“厚基础,宽口径”的办学宗旨已经盛行了很多年,当然,在许多专业领域,这种以不变应万变的培养体系是最明智的选择,但在计算机软件教学领域,因为这个学科的发展速度几乎超乎人类的想象,因此我们必须让学生在校园里感受到计算机企业中对计算机技术的需求方向,这样才不至于在学生走出校园时无所适从。软件测试职业的职位待遇稳步提升,而且其职业寿命要远远长于软件开发,从学生的职业规划角度来看,在高校进行软件测试中高级人才的培养是一条可行之路。

1 高校开设软件测试课程的必要性

事实上,在高校计算机教学体系中开设软件测试课程,并不单单是为了迎合企业的需求,软件测试是软件工程课程的延伸,是软件开发课程的补充,是软件管理课程的实践。

软件测试课程的基础学科涉及数学、计算机导论、软件工程、计算机组成、管理学和信息技术等,如果没有这些学科的支撑,软件测试无法深入学习。

软件测试课程的开设,对高校计算机软件专业的学生来讲,是有着非常大的意义的,目前很多大型的软件企业并不担心开发人员的招聘,而对熟练掌握软件测试技术和管理方法的高级测试人员求贤若渴,这一方向的职业缺口确实非常之大,究其原因就是目前几乎所有高校的软件相关专业都开设了软件开发从技术到管理的全套课程,而软件测试的相关课程几乎为零,这样的学生走出去,很难迅速掌握测试的理念,也无力制定宏观测试计划,不得不从测试行业最低端的测试员开始做起,这对于高校毕业生来讲这是一种人才的浪费,在高校的计算机课程体系加入软件测试内容已经迫在眉睫。

在任何一个行业,从业人员对行业的成熟度区分,是企业招聘首先要考虑的问题,我们经常在招聘信息中看到“有工作经验”这样的条款,在软件测试行业也是如此,一般给出5种分级:1级我们称之为用户级测试人员,这一级别的测试人员直接扮演客户的角色来使用软件,看是否能发现问题;2级是软件测试操作员,这类人群受过一定程度软件测试的专门训练,可以执行上级下达的具体测试任务;3级是软件测试技术员,这一职位人群有很多软件测试的经验,能够非常熟练的使用某些软件测试专门技术,能够设计测试用例;4级是软件测试系统工程师,他们具有相当广泛的计算机相关专业知识,熟悉软件开发,熟练掌握所有软件测试技术,并具有项目管理经验;5级是软件测试总工程师,总工程师负责管理整个软件测试项目,具有掌控全局的能力和技术。

高校软件测试人才的培养,其目标要向3级人才靠近,并且这些人才有向4级或5级成长的持续发展能力。

2 软件测试教学中需要重视的两个问题

2.1扭转重开发,轻测试的偏见思想

很多人轻视软件测试,认为软件测试无需具备很高的技能,是没有前途的工作,缺乏创造性,很多高校也存在重开发,轻测试的思想,学生在这种观点的熏陶下,也对测试工作存在偏见,其中对软件测试工作有三个认识误区尤为突出:首先,软件测试是软件开发完成之后才进行的,只是软件编码的最后一个阶段,其地位可有可无。其次,软件测试不需要具备很高的专业技能,工作乏味枯燥,不具创造性,最后,软件投入使用后一旦出现BUG,测试人员要负主要责任。

事实上,首先,一个好的软件测试团队,在软件需求分析阶段就已经开始测试了,开发人员理解的客户需求是否正确,要由测试人员监控和保证,测试工作和开发工作是并行的,尤其在软件项目开始的时候,监控和防范一个微小的问题或隐患,是为了防止软件成型后出现无法挽回的缺陷。其次,软件测试是一项综合技能能强的工作,运用测试工具的能力,与人沟通的能力,有效管理的能力,书写文案的能力等等,做好软件测试工作绝对不是想象的那么简单,而且一旦具备了综合测试的素质,将是受用终身的资本。最后,软件测试规范实施后,软件仍然可能出现BUG,这是开发和测试人员应该共同面对的现实问题,测试人员只能保证BUG越来越少,越来越不影响系统的健壮运行。

2.2强调管理与技术并重

软件测试的规范实施需要测试技术和管理方法两方面的支撑,如果不具备专业的测试技术,只能做一些简单的功能测试,如果不具备宏观管理计划的能力,只能处于被指挥状态进行片面测试的实施,现在软件测试真正缺少的是技术和管理兼备的人才,高校的学生素质非常适合软件测试高端人才的培养。高校的培养中,要让学生深刻理解,我们培养的学生不是只能低头做测试任务,而是要能指挥测试工作,这绝对不是件简单的工作,需要全面的技能和完善的人格,只有这样的人才,才能带领出出色的测试队伍。

教学中,增加实训环节,给学生安排丰富的实例和习题,最好采用实际软件项目的测试案例,让学生在学校感受到企业中一样的工作环境,并安排和企业中一样的测试岗位,让学生体会沟通和管理的必要,在独立处理问题的过程中激发学生的学习兴趣,促进理论和实践教学的结合,把对学生的应用能力的培养融汇于教学中。

3 软件测试专业课程设计的目标和原则

软件测试专业要全方位的培养和提高学生的基础理论、实践能力、设计能力、实践训练等综合素质。重视管理、人文、经济等知识的学习。

3.1软件测试专业课程设计的目标

高校软件测试培养目标要以市场为导向,培养具有一定的设计测试计划方案的、具有管理能力,能平衡整个测试项目各方面因素的软件人才,这些人才要具备软件开发的整体认识,能制定和执行测试,能利用测试工具完成一定测试任务。

本专业课程的重点包括:软件缺陷生命周期管理;软件测试基本概念的内涵;主流测试工具的应用;进行全面的系统测试的方法;注课程以实训为主,重动手能力的培养等。 具体课程要涵盖:熟练掌握至少一种数据库应用技术及一门软件开发语言;了解软件开发过程中软件测试的重要性;掌握主流的自动化测试工具;科学管理测试队伍。

3.2软件测试专业课程设计的原则

课程的设计要体现与时俱进的精神,以企业的实际项目为依托,主要原则包括:

1)开展项目教学,项目教学具有针对性、研究性、启发性和实践性等。项目的选择要知识涵盖全面,要能够激起学生的学习兴趣。

2)制定专业课程计划、课程大纲和教学方案等,课程计划提倡电子化、网络化和课堂教学并用,建设校企合作的专兼结合的教学团队,开设以项目为载体的教育大纲,用以指导课程教学工作的开展。

3)建立测试工程内容的课程结构模式,把真正的测试项目开展到课堂上来,或者让学生在学习期间进入企业进行岗前培训,充分安排工程实践,引进软件测试的工程师资格认证,同时逐步建立科学的工程教育检验和质量评估体系。

理论与实践并重,课程需要涵盖单元测试、集成测试、性能测试、功能测试与系统测试。注重设计和管理的执行过程。为学生创造可自由而主动的学习氛围。以学生为出发点,在软件测试中融会贯通大学里学习的软件相关课程,在项目驱使下培养主动学习的能力。采用分组讨论学习方式,结合实际项目,把学生组织为若干小组,在教师指导下完成工作。不断提升学校教师的专能,提供系统学习和阶段性培训机制。

4 总结

软件测试课程在高校的教学中,没有现成的经验和模式,需要我们根据行业的发展随时调整,以社会需求为导向,以培养行业

中高级人才为目标,以项目实训教学为依托,边进行边思考,逐步发展,逐步稳定,所以我们要以发展的眼光,灵活的策略来微调教学过程的细节,测试无处不在,高校进行软件测试的教学改革也是一种测试,只要我们采用严谨的工程控制策略,科学管理,总结规律,必然能取得高校进行软件测试课程探索的胜利。

参考文献:

[1] Ron Patton.软件测试[M].北京:机械工业出版社,2002.

[2] Myers G J.软件测试的艺术(中文版)[M].王峰,陈杰,译.北京:机械工业出版社,2006.

第12篇

关键词:复合型;软件测试;人才培养

中图分类号:TP3-4 文献标识码:A 文章编号:1007-9599 (2012) 20-0000-02

1 软件测试人才培养背景

1.1 软件测试人才需求分析。全球信息化极大推动了中国软件产业的发展,但目前与欧美发达国家还有很大差距,特别是软件测试领域。国内软件测试的现状是令人担忧的,在软件业中处于弱势地位[1]。由于一直以来,国内许多软件企业存在着“重开发、轻测试”的倾向,造成软件产品质量问题日渐突出,同时也突显了中国软件测试人才的极度匮乏[2]。从国内招聘网站搜索软件测试相关的职位来看,软件产业需要大量懂得测试理论和方法的专业软件测试工程师。

1.2 软件测试专业岗位分析。软件测试行业主要岗位为软件开发测试、网络开发测试、测试管理等6个就业方向以及初、中级软件测试工程师、Web测试员、文档测试员等23个岗位。综合来说,软件测试专业相关的岗位主要有软件开发工程师、软件测试工程师以及软件工程相关的岗位。1.3 国内软件测试人才培养现状。国内高校软件测试教学总体属于起步阶段,开设软件测试专业的院校不多,一些院校仅开设了软件测试的课程。当前,一些软件企业与行业的培训机构在积极开展测试人才的培训工作,但培训内容较单一且完全实用化,对软件开发能力要求不高。这种培训属于非专门化、专业性的培养和教育[3]。因此软件测试人才培养模式的研究具有非常重要的现实意义。

2 复合型软件测试人才培养模式

关于软件测试人才培养模式的探索,丰明聪提出了高职软件测试专业校企合作培养模式,张丽景等提出了基于倒推模式的人才培养方案。这些人才培养模式普遍对软件开发能力要求不高,这可能导致软件测试人才欠缺良好的软件开发能力,较难站在软件工程的高层次角度对软件测试等软件工程活动进行有效的管理和实施。本文提出了一种全新的复合型人才培养模式,所谓“复合型”是指能力更全面的高级软件测试人才,兼具扎实的软件开发能力、软件测试能力以及相关的软件工程能力。这样就能够站在高层次的角度对软件测试等软件工程活动实施有效的组织和管理。有了扎实的软件开发能力,可以从源头上避免软件缺陷的产生,以达到“预防为主”的目的,从而对软件产品的质量进行更好的控制。

2.1 培养目标。复合型软件测试人才面向社会对各类软件测试与质量保证等软件工程人才需求,培养高层次实用型、复合型软件工程技术和软件工程管理人才。本学位获得者具有扎实的程序设计基础、深厚的软件工程理论基础及较强的工程实践能力、研发能力和市场与国际意识,能够对软件产品的架构设计、测试和实施执行规范有效的组织和管理,及进行可靠的方案实施。2.2 课程体系建设。人才培养中重要的部分为课程体系的建设。W模型以及极限编程中的TDD(测试驱动开发)更能够体现软件测试和软件开发相辅相成的关系,复合型的软件测试人才必须具备扎实的软件开发能力,因此课程设置上必须依托一条软件开发的主线,保证每一个学期中都有开发课程。同时,软件测试的主线也将依托软件开发的主线顺势开展,由于软件测试需要软件开发为基础,因此软件测试课程比软件开发滞后两个学期。

目前主流的软件开发平台为Java和.NET,复合型人才培养方案以Java平台的开发技术为主线,如图1所示,从第一学期依次学习的开发课程为:程序设计导论Java、高级程序设计Java、JSP程序设计等,J2ME课程可以替换为Android或者IOS开发。在学习软件开发的课程的同时,另外还有两条主线贯穿于整个教学过程中,一个是数学英语、计算机网络、数据结构等课程,这些课程除了是考研相关的课程之外,也涵盖了很多基本的软件知识。另一个主线是软件工程相关的课程,例如数据库、UML等。最终达到的开发要求为:软件测试专业的学生也可以胜任软件开发的工作。

在学习软件开发课程的同时,学生从本科第二学年第二学期开始可以学习软件测试相关的课程,第二学年可以学习软件测试基础,第三学年可以学习软件质量保证、自动化软件测试、性能测试和软件工程等课程。这样,就业的选择有软件测试工程师、SQA、系统分析师等。2.3 软件测试平台的建立。软件测试平台包括软件测试实验室、实训基地等方面,可以为学生建立统一的学习、实习平台。针对软件测试实验室,可以和Parasoft、IBM等公司建立联合实验室,或者安装开源的软件测试和软件工程相关工具。其中除了开发工具外,安装的测试工具包括JTest、.Test、C++Test、JUnit、NUnit、LoadRunner、QTP、Bugzilla等。对于实训基地的建设问题,可以采用校外实训和校内实训两种方式。校外实训可以和实训机构进行合作;校内实训可以校方提供场地和机器,而实训公司提供工程师,以达到良好效果。2.4 人才模式的实施。郑州大学软件学院从2007开设软件测试专业以来,应用复合型软件测试人才培养模式培养了两届软件测试专业人才,创建了软件测试和软件工程实验室,建立了校内外的实训基地。软件测试专业学生的就业方向主要有软件测试、软件开发、继续深造、技术支持等,就业状况良好,用人单位对学生的软件测试、软件开发和软件工程的综合运用能力给予了肯定。2.5 人才培养模式探索。在复合型软件测试人才培养的基础上,人才培养模式还可以进行进一步的创新,例如:(1)加强校企合作,将企业或者实训公司的资源尽早的引入到教学的过程中,部分课程可以直接由企业或者实训公司的工程师来进行教授。(2)采用订单式的人才培养模式,开设部分的试点班供实训公司或者企业进行重点培养,使学习的方向更具有针对性。(3)软件测试平台的进一步创新,及时引入更先进的测试工具、方法、测试案例,加强CMMI、ISO质量管理知识的应用,建立更全面的软件工程思想。

3 结束语

虽然软件测试人才的市场需求呈逐年上升趋势,但是目前计算机学院或软件学院对软件测试人才的培养模式仍需完善。复合型软件测试人才具有扎实的软件开发知识以及更全面的软件工程相关知识,这对于掌握更高级、更全面的软件测试技术具有良好的推动作用。

参考文献:

[1]黄爱明.国内软件测试现状及对策研究[J].中国管理信息化.2007,(2):42-46.

[2]兰景英.应用型软件测试人才培养模式探索与实践[J].潍坊教育学院学报.2011,(4):71-73.

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

[作者简介]