欢迎访问发表云网!为您提供杂志订阅、期刊投稿咨询服务!

软件测试论文大全11篇

时间:2023-03-16 15:54:12

软件测试论文

软件测试论文篇(1)

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

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

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

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

软件测试论文篇(2)

软件的生命周期主要由软件定义、软件开发和软件维护三部分组成。对于软件的各个不同阶段,尽可能地将软件的开发设计工作划分为具体的任务,并且使任务之间的关联性降低,尽可能地相互独立,从而可以有效地降低软件开发的复杂性,利于软件开发工作的组织管理,简化其工作流程。

1.2软件定义时期

对软件进行定义的主要目的是明确软件开发工作的总目标和该软件工程的可行性,分析软件系统需要实现的具体功能及采取何种手段实现该功能,并对整个系统所需要的成本和资源进行初步的估算,设计出工程的进度表。该阶段的工作主要由系统分析员完成,其主要工作有:

(1)问题描述和可行性分析。

进行此阶段分析时,主要由软件系统的需求方和软件开发方相互协商,明确软件系统的目标及可行性。问题描述主要是明确需要解决什么问题,对问题进行准确的定位,将问题的困难程度、性质、规模及目标等内容以书面的形式进行描述,并上报给上级主管部门。对软件需求方的使用者进行走访,对问题的理解进行扼要的描述,并将写好的报告反馈给用户,查看问题的描述是否准确,统一双方的意见,直至达到最终的协议。对于可行性的分析,当前对于该定义并没有给出明确的定义,其主要目的是描述该系统是否值得去做,是否有合适的技术能够解决此问题。在该阶段的可行性相对比较简短,只是从总体上进行分析,并不涉及具体的问题。

(2)分析需求。

明确软件系统可行之后,就需要对软件的功能进行详细的分析,即:为了达到使用者的要求,软件系统必须能够做什么和具备哪些具体的功能。另外,用户当进行软件操作时,必须有个清晰的认识,利用该软件系统要达到哪个具体的目标。开发人员和使用者必须进行详细的、准确的沟通,利用数据模型、数据字典、数据流图及算法设计出整个软件系统的逻辑模型。在该阶段,必须让用户参加,并给出具体的意见。

1.3软件开发时期

对于软件的开发,主要由计划、设计、编码和测试四部分组成,计划和设计是系统设计,编码和测试是系统实现。软件的开发由计划开始,完善的计划可以为软件的开发节省大量的时间和精力;设计是在计划的基础上,进一步的完善,给出问题的每一个步骤,是对整个系统功能的完整描述;系统设计完成后,开始进行编码操作,即对问题的具体实现,在编码中,要符合编写规范的要求,保证程序的易读易维护;没有一个软件是一次编写成功的,需要反复的测试才行,当前的测试从小到大,分别是单元测试、集成测试和验收测试,每次测试都要进行详细的记录,为以后软件的维护打好基础。

1.4软件维护时期

如果说前面的步骤是软件的实现过程,那么软件的维护时期就是软件的使用过程,软件的维护时期最长,由于软件随着使用环境的不断变化,软件的功能逐渐不能满足用户的需求和无法正常使用,为了延长软件的使用寿命,必须对软件进行维护处理。对于软件的维护活动主要分为4类,分别是:改正性维护、完善性维护、适应性维护和预防性维护。根据维护的情况不同,每个维护都要有详细的报告,通过报告来进行制定维护计划、修改软件设计、代码修改和测试等一系列的过程。

2测试自动化

开发人员设计好程序之后,无法直接投入使用,需要对代码进行测试,而软件测试是一个非常烦琐的过程。据统计,软件工程人员无法及时交付软件的主要原因是在规定的时间内没有对软件进行完整的测试和修订。21世纪,时间就是金钱,时间就是企业的生命,软件投入市场越早,就越有可能提前掌握先机,从而获得更高的利润。传统的软件测试方法无疑已经无法适应当前IT行业的发展,自动化测试软件可以使测试流水化,使得在较短的时间内充分对软件进行测试,现在,越来越多的软件企业选择测试自动化。

2.1测试自动化的定义

当前,对于测试自动化的定义比较多,但总结起来为:能够通过自动化的测试工具,针对软件测试,在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。从而达到减轻手工测试的劳动量,节省测试时间的目的。测试自动化在很多情况下都具有非常大的使用价值,例如在进行脚本测试时,可以产生许多重复调用的代码,在进行压力测试时,可重用很多次该脚本。如果利用手工测试方式进行压力测试,那么可能要花费相当长的时间,而且有时有些软件的缺陷还不能及时地发现,测试自动化保证了软件的稳定性和准确性。

2.2测试自动化的生命周期

进行自动化测试的工具也是一种软件,有其自身的生命周期,主要分为需求分析、计划、设计、实现、集成、维护和终结等过程。对于需求分析阶段,主要是对测试的用例进行详细的分析,明确测试用例的可行性,考察用例是否可以重复利用,对测试有何价值;在计划阶段,设计测试的进度和生成相关的文档;设计主要是描述自动化测试的模块,而描述是对这些模块的实现;对写好的软件模块进行集成,生成相应的具有特定功能的测试包;最后对软件的测试自动化工具进行维护,随着时间的推移,结束自动化测试生命周期。

3测试自动化软件的实现

3.1需求分析阶段

在该阶段,测试工程师和手机终端使用者要一起参加需求分析的讨论,分析测试的环境和过程,测试不同的环境下手机的使用情况。在进行手机通信测试的需求分析里,假定使用300个测试用例,分析其自动化测试的流程,形成书面的需求规格说明文档,并进行专门的评审,对测试用例进行审查。

3.2计划阶段

主要完成计划进度表的建立。例如整个手机终端测试需要五周时间完成,计划和设计需要半周,开发和执行需要三周,测试需要一周半。在规划测试计划时,在对每一次进行操作进行相关文档的说明,其中文档的完成工作也需要在计划时间以内,建立和维护一个测试环境文档是非常重要的。

3.3设计阶段

对于手机通信系统来说,软件的升级不会带着新的错误,即功能是不变的,由于测试的脚本具有共用性,模块化的设计是非常有必要的。在设计的过程中,要注重命名规则,以免发生混淆,使得模块发生混乱。

3.4实现和集成阶段

实现主要是在设计的基础上,进行编码,最终完成软件,每次代码更改运行要记录初始状态和运行后状态,及时进行备份。对软件进行集成分块测试,将生成的测试包提交给组装集成测试人员,对其进行评审和验证,详细记录其结果。

3.5维护和终结阶段

软件自动化测试生成后,要根据使用环境和用户的不同进行维护处理,并不断对其进行改进,这个过程可以通过问题跟踪工具来完成。随着新技术的来临,软件会越来越不适应企业的要求,就要对其进行终结,重新研发新的测试软件。

软件测试论文篇(3)

2线测试设备软件结构

软件采用C/C++语言编程,软件总体结构。软件主要功能包括:设备自检、设备参数设置、自动测试控制、波形显示及数据处理、参数回放及打印等功能。设备自检部分主要完成继电器板卡及通道自检、GPIB板卡端口及设备通信自检、与网络示波器通信自检以及串口端口自检等功能;设备参数配置主要完成测试记录(测试设备编号、测试项目、操作人、测试时间等项目)填写、按照不同试验项目选择不同的测试项目、预先设定测试项目阈值用于作合格判据;自动测试控制程序部分采用了多线程设计技术,将测试流程里的测试项目作为串行处理测试节点,按照测试流程分时完成各测试节点的通信测试;波形显示及数据处理部分将读回的示波器波形进行显示,将读回的数据进行处理获得最大值、最小值和均值,将每次测试记录填写到由CBCGP⁃GridCtrl派生的Grid控件表格,最后输出数据到报表中;参数回放部分与Grid控件联系紧密,参数回读后数据显示在Grid控件表格,通过点选Grid控件中的每次测试记录,将对应的每次测试存储记录包括波形和数据进行回放,并能通过报表进行参数打印。

3线测试设备关键编程技术

3.1读GPIB设备编程技术

通过GPIB总线接口设备可以对快速测量信号或高压信号进行测试,这里采用数字万用表3410A通过GPIB总线接口设备完成测量任务,测试系统软件首先申明GPIB端口地址等属性,打开相应端口地址后,通过自检GPIB⁃IEEE488.2通信接口查询找到对应的GPIB设备。在自动测试流程线程,当程序运行到GPIB参数读取测试节点时,测试系统软件将测试数据从GPIB测试设备读回,通过Windows窗口消息机制返回到窗口界面显示测量数值。

3.2读网络示波器编程技术

通过示波器设备可以直接对测量信号进行精细化测量,可以达到纳秒级的测量精度,测试设备采用泰克DPO4054B示波器进行测量。软件设计时在头文件中包括了Visa.h头文件,在库链接中链接了Visa32.lib库文件,同时结合AgilentIOlibary接口库软件,运用Visa编程技术,查找到TCP网络示波器后打开示波器进行通信。软件启动后通过自检网络查询找到对应的示波器设备,在自动测试流程线程,当程序运行到示波器参数读取测试节点时,测试系统软件将测试数据从示波器读回,随后运用一定的算法处理数据,可以获得示波器无法直接测量的数据值。

3.3RS485

总线串口编程技术软件串口编程技术比较成熟,通常设计方法为应用程序开启即打开所有串口,在应用程序退出时关闭所有串口,不推荐在应用程序内不停打开或关闭串口,这样存在与硬件兼容性的风险,也不容易排除故障。本应用程序在设备自检打开端口后,在自动测试流程线程,当程序运行到串口设备参数读取测试节点时,通过读/写串口端口完成数据读/写。

3.4界面设计编程技术采用

BCGControlBar界面库设计软件总体界面,软件显示采用OutLook模式,左侧一列显示主窗口操作按钮,按钮操作允许对设备进行自检;在测试界面和报表显示界面进行切换;进行参数设置及参数回读操作。软件居中采用ProEssentials绘图软件控件设计波形曲线窗口,既可用于测量时显示波形曲线,又可在参数回读时显示波形曲线。软件右侧采用基于CBCGPGridCtrl类派生基类生成的参数报表,可以用于显示每次实验数据。每做完一次试验则在报表显示一列数据,记录一次试验波形数据,方便使用者在一个时间段观察试验记录。

4软件可靠性设计

测试系统软件设计中采用了一定的可靠性设计方法保证测试设备的软件健壮性,首先在软件启动的自检阶段确保与所有端口设备连接正常并通信正常,确保后续自动测试流程前软硬件通信正确无误;软件采用Windows消息机制,避免线程内对Windows窗体进行操作;对返回的波形数据软件采用一定点数的平滑滤波处理技术,防止读回的数据异常影响软件边界。

软件测试论文篇(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)

【基金项目】2015年中央高校基本科研业务费专项资金项目“C程序代码级内存缺陷的充分性检测技术研究”(15CX02050A)。

【中图分类号】G64 【文献标识码】A 【文章编号】2095-3089(2015)09-0229-01

一、引言

随着软件产业的迅猛发展,软件的复杂性也日益增加,导致对软件的质量提出了更高的要求,这也使得软件测试工程师成为每个软件企业都不可或缺的技术人才。“软件测试”就是一门培养软件测试工程师的专业课[1],本课程较为系统的介绍了软件测试的基本理论、测试方法、测试过程以及常用测试工具等内容。本课程知识的掌握将为学生系统的掌握软件工程知识体系以及毕业后从事软件测试、软件开发等职位打下良好的基础。

如何扎实有效的培养软件工程学生在软件测试领域既具有理论基础、又具有工程实战能力,目前许多软件工程专业教育者进行了积极的探索 [2-4]。我校软件工程专业已入选山东省卓越工程师培养计划[5],为了执行国家对软件工程专业卓越工程师培养的精神,融合学校的“三三三”培养体系[6]的顶层设计,以贯彻培养理论扎实、具备工程实践能力、创新能力强、适应经济社会发展需要的高质量软件工程师为目标,我们也在软件测试课程的培养方案、课程结构、教学方法和考评体系等方面进行了一系列的改革和探索[7,8]。其中最为重要的改革是借鉴CDIO(Conceive-Design-Implement-Operate)工程教育理念,落实了“基于项目的教学”方法,增开了大量的课程设计和综合实践环节,在理论教学的同时注重了工程实践能力得培养。

二、“软件测试”教学面临的问题

“软件测试”课程的已有的教学改革改善了教学效果,但是由于传统的教学方法依然影响着教学,所以目前的软件测试课程教学过程中依然面临一系列问题。

(一)教学内容抽象,学生学习兴趣不高

软件测试是软件工程知识体系的九个知识域中理论性最强的一个知识域,必然造成软件测试教材与教学内容较抽象。目前,软件测试课程教学中普遍存在着理论教学偏重的特点,扎实的理论素养是卓越工程师的必备基础,但是即便对于软件工程专业的本科学生,也欠缺软件项目的实际开发经验,所以课程内容的抽象性增加了学生对课程内容的理解难度。为促进学生对理论知识的理解与应用,必须结合软件测试的课程特点,将抽象的内容分化到软件测试过程的不同阶段中,并采用相应的测试工具体现测试的方法,再应用于教学案例,才能促进学生对抽象的测试理论知识的理解与应用。

(二)教学内容碎片化,学生没有完善的测试知识体系

按照软件开发过程的要求,软件测试是贯穿于整个开发过程的一项活动。而在教学中,软件测试的理论出现了割裂,各知识点呈现碎片化,理论内容与实际的软件测试流程不同步。将不同的测试理论与方法进行了分割,这样利于教材内容的安排以及教学内容的组织,但这也必然造成教学内容碎片化,学生形成不了一个统一的测试理论框架,难以把握所学的理论与方法在软件开发与测试的过程中如何应用。为促进教学效果,有必要基于软件测试过程,定位软件测试的介入点,在不同的介入点进行理论知识的分配,形成一个以软件测试过程为主线、各理论知识在介入点进行分配的鱼骨图式的软件测试理论知识体系。

(三)轻视测试工具应用,培养的学生与企业需求难以衔接

因为软件测试方法众多,这也造成有大量可选的软件测试工具。虽然工具的培训是培养卓越工程师的一个必备环节,然而卓越工程师的培养毕竟不等同于职业教育,不能只是简单的掌握一个测试工具,而应该了解测试工具所体现的测试理论、所适用的测试阶段以及所应用的场景。在进行测试工具培训锻炼的同时,必须结合所讲授的测试理论,以及该工具适用的测试过程与测试场景。为了全面的掌握各种具有代表性的测试工具,需要搭建一个测试工具箱。

(四)教学案例简单,学生没有完整的测试思路

因为理论知识碎片化的讲授,也造成目前教学中只能采用简单的案例,简单的案例虽然有助于学生对具体测试方法的理解,但是难以融会贯通的掌握对一个完整项目的测试。为此,需要基于鱼骨图的软件测试理论知识体系,精心设计能够贯穿整个测试流程的案例,并有必要设计不同类型的案例,形成一个分层次、分类别的测试案例库,以保证对各种测试方法的掌握。

(五)学生对软件测试存在认识偏差,缺乏从事软件测试职业的意愿

目前国内软件行业依然蔓延着“重开发、轻测试”的观点,这种观点也延伸到软件工程专业的教学中,导致部分学生对软件测试这个职业存在认识偏差。这就要求软件测试课程需要从原来偏重理论讲解、学生欠缺软件测试训练的教学中摆脱出来,应该与软件测试工程师要求的能力培养集合起来,注重理论培养的同时,加强与软件测试职业的衔接,增设对软件测试工具的训练,加大基于案例与项目的实战训练,通过工程能力的培养以加深学生对软件测试的正确认识。

三、总结

为了执行我校软件工程专业的卓越工程师培养计划,解决“软件测试”教学中存在的上述问题,我们计划在已有的教学改革基础上,提出“方法为基、过程引导、工具跟进、案例贯穿”的“方法-过程-工具-案例”四位一体的教学方法,以解决目前“软件测试”课程中存在的诸多问题。

本文分析了“软件测试”这门课程随着卓越工程师培养、研究型教学的要求下在理论培养与工程能力训练等方面逐渐显露出的各种亟待解决问题,只有充分认识到这些问题,才有可能针对问题进行教学改革,进而培养理论与功能能力具备的软件测试人才。

参考文献:

[1]吴春雷, 刚旭, 张俊三. 基于“卓越计划”的软件测试类课程改革[J]. 计算机教育, 2014,11:88-91.

[2]李月龙. 高校软件测试课程教学改革研究[J]. 计算机教育, 2014,7:16-18.

[3]邓松. 递进式软件测试创新人才培养模式研究[J]. 计算机教育, 2014,7:5-7.

[4]周雪妍, 林泽鸿, 罗秋滨, 路雯靖, 刘玉利. 软件测试技术四面体培养模式的探索与研究[J]. 教学研究, 2013,5:56-58.

[5]张国平等. 软件工程卓越培养计划的研究与设计[C].软件工程2011年会,2011,10.

[6]刘华东. 构建“三三三”培养体系 推进本科教育迈向更高目标[J]. 中国高等教育, 2012,18:34-36.

[7]吴春雷. 面向应用型软件人才教学模式的探索与实践[J].中国成人教育, 2014.04:124-126.

软件测试论文篇(6)

作者简介:赵晓君(1979-),女,河南南阳人,郑州轻工业学院软件学院,讲师;黄艳(1976-),女,河南信阳人,郑州轻工业学院软件学院,副教授。(河南 郑州 450002)

基金项目:本文系郑州轻工业学院校级青年教师教学改革项目的研究成果。

中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)07-0101-02

随着软件产业的快速发展,软件系统的规模越来越大,功能实现也越来越复杂,导致软件中存在的缺陷数量大大增加,这些缺陷将会带来各种损失,甚至出现灾难性的后果。因此,如何保证软件质量已成为所有使用软件和开发软件的人们关注的焦点。软件测试作为软件工程的一个重要组成部分,是目前用来验证软件是否能够满足用户需求功能的唯一有效方法,是保证和提高软件质量的重要环节。为适应软件产业的发展趋势和满足软件测试人才的大量需求,目前已经有许多大学在软件工程专业添加软件测试课程或者添加软件测试专业方向。

软件测试专业包含多门专业课程,有“软件测试理论”、“软件测试技术”和“软件缺陷管理”等,其中,“软件测试理论”课程重点为初学测试的同学讲解测试的基础理论知识,主要包括软件测试基本理论、软件测试方法和技术等,在多门专业课程中占有举足轻重的地位。

一、“软件测试理论”教学现状

“软件测试理论”课程重点介绍软件测试的基本理论,因此整个课程主要以教师讲授为主,在教学的过程中存在以下问题:

1.教学内容理论性较强,难以调动学生学习的主动性

对于初学软件测试的学生,首先要向其讲授相关测试理论,使其建立系统的测试理念。

但是学测试的学生大都是理科生,喜欢操作性强的课程,“软件测试理论”课程的理论性太强,需要背诵很多概念性的知识,这对于他们来说是比较困难,不能激发学习的主动性,教学效果不理想。

2.测试方法和技术案例实际应用价值不足,学生很迷茫

测试方法和技术是“软件测试理论”课程学习的重点和难点,这部分内容仅靠老师的讲解和书本上的案例很难让学生深入理解掌握测试技术的内涵,学生在学习这部分知识时会产生迷茫:学习这些知识有什么用处,在具体的项目测试中,应该怎样应用这些知识?没有实际的项目案例做支撑,学生会失去继续学习下去的兴趣。

针对上面的问题,本文提出将项目驱动法应用于“软件测试理论”课程的教学中,学生在进行项目实践的同时,根据需要学习软件测试相关理论知识,这样有助于提高学生的学习主动性,有助于理论知识的牢固掌握,有助于提高学生的实践技术能力,改善该课程的教学效果。

二、项目驱动法

项目驱动法是目前中国教育领域中一种比较新的教育教学方法。

所谓项目驱动法,是师生通过共同实施一个完整的项目工作而进行的教学活动,它既是一种课程模式,又是一种教学方法。[1]这里的项目根据课程教学内容的不同所包含的涵义也不同。在“软件测试理论”课程教学中,项目即指一个已经开发完成的软件测试工作。通常,项目教学都是实践导向的和任务驱动式的教学。

在项目驱动模式的教学活动中,教师根据学生现有的知识水平和项目经验选择一个合适的项目,以项目实施为主线展开教学活动,把课程相关的知识点的讲解融入项目操作的每个步骤中。在项目实施的过程中,以学生为中心,教师主要做组织和指导工作,学生在整个项目的实施过程中处于探索知识的情景中,充分发挥主动性、积极性和创新精神,综合运用所学的知识和技能解决实际问题,最终达到有效地将所学知识系统化深入化的目的。

这种模式从根本上将传统课堂中老师满堂灌转变为“学生为主体,教师为主导”的教学模式。同时,学生通过一个具体项目的实践,感受到了真实项目管理的思想和团队协作的必要性,提高了学生的创新能力和项目实践能力。拥有真实项目的实践经验使得学生在择业时拥有很大竞争优势。

将项目驱动法应用于“软件测试理论”课程教学中,在课程理论教学中加入一个完整的项目测试实践环节,通过项目实践能够很好地激发学生的学习主动性,使学生经历了一个“先做,遇到问题,再学,解决问题,再做,获得经验”的学习过程,最终完成一个完整的软件测试实践,同时也学到了“软件测试理论”课程应该掌握的理论知识。这样,既解决了软件测试理论课程理论性太强的问题,又解决了测试方法和技术案例实际应用价值不足的问题;而且丰富了学生的实践经验,提高了软件测试理论课程的教学效果。

三、“软件测试理论”课程教学目标和教学内容

1.教学目标

通过本门课程的学习和实践,理解软件测试理论与原则;掌握主流测试技术和方法,熟悉测试用例的编制、熟悉软件测试的基本流程,熟悉软件测试过程中各类技术文档的编制规范,并能灵活运用测试技术解决实际问题。

对于一个具体项目软件,每一个学生都能够顺利完成如下手工测试流程:根据软件需求规格说明书撰写测试计划,设计测试用例、进行测试环境配置和测试数据准备工作、执行各种测试,撰写缺陷报告、跟踪并修复缺陷、进行测试评测,最后提交测试总结报告,达到软件企业对测试专业人才的要求。

2.教学内容

“软件测试理论”课程的教学内容主要包括软件测试基本理论、软件测试基本技术、软件测试过程和软件测试工具。[2]

软件测试基本理论包括软件测试、软件缺陷和测试用例的基本概念,测试的目的、测试模型、测试分类和测试流程。

软件测试基本技术包括白盒测试和黑盒测试;其中白盒测试包括静态测试和动态测试,动态测试又包括程序插桩、逻辑覆盖、基本路径测试等;黑盒测试包括等价类划分、边界值分析、因果图法、判定表法、场景法等。这些基本技术都是在进行测试用例设计时使用的。

软件测试过程是指执行测试的过程,通常分为四个阶段:单元测试、集成测试、系统测试和验收测试。

软件测试工具有多种:功能测试工具、性能测试工具和测试管理工具等。

四、项目驱动法的应用方案

1.项目的设计

实施项目驱动法,首先需要设计项目。项目的设计与选取直接影响到该教学模式的教学效果及学生的学习兴趣。“软件测试理论”课程项目的选取与其他课程又有所不同,学生要进行的操作是对现有的或者已经开发完成的软件的测试工作,因此在设计项目时应遵循以下几条原则:

第一,项目是现有的软件或已经开发完成的软件,软件中有部分明显错误,有部分隐藏错误;明显错误有助于提高学生的测试积极性,隐藏错误有助于启发学生进行更深入的测试。

第二,项目具有典型性,代表大部分软件的共性。通过该项目的测试,学生可以掌握大多数软件的测试流程和测试方法。

第三,项目中有多种情景元素,符合使用多种测试技术和方法,有助于学生在进行项目测试的同时,学习使用多种测试技术设计测试用例的方法。

第四,项目大小和难易适中。每个项目组的人数控制在3~5个人,设计的项目能使学生通过努力在一定的时间内完成。

根据以上原则,本课程目前选择的项目是《企业薪酬管理系统》。

2.项目驱动法的实施

本课程通过让学生进行企业薪酬管理系统完整的测试流程实践的同时,讲解测试需求编写、测试计划编写、测试用例设计、测试环境配置、测试执行、缺陷跟踪和管理、测试报告撰写等内容。课程授课方式主要是分阶段讲解测试过程和测试要求,每一个阶段开始,老师先讲原理,选择部分内容做例子进行讲解,然后学生比照例子跟着做;阶段内容完成时,学生提交完成的文档,老师选择典型的问题进行讲评,然后进行下一个阶段的内容,如此类推直至测试结束。

企业薪酬管理系统测试流程设计如图1所示。

本课程课时为60学时,根据图1系统测试流程图安排,基于项目驱动法的“软件测试理论”课程安排如表1所示。

在课程进行的过程中,必须严格按照项目的测试流程进行,测试流程为:先获取项目测试需求,撰写测试计划,设计测试用例,执行测试,提交缺陷报告并跟踪修复缺陷,最后提交测试总结报告。课程结束,要求学生提交项目测试报告,测试报告包括多个文档,整个流程中每个阶段的工作必须有撰写规范的文档提交,如:测试计划、测试用例、测试执行报告、缺陷报告和测试总结报告等等。

测试报告既体现了教师项目教学的结果,也体现了学生对测试知识技能的掌握水平。通过评价学生作品,找出学生在学习过程中的薄弱环节,进一步改进项目驱动教学的教学安排,使其能够发挥最大的教学效果。

五、结束语

本文针对软件学院软件工程专业的培养对象和教学特点,把真实项目引入“软件测试理论”课程课堂教学中,采用项目驱动教学法,从项目的需求评审、测试计划、测试用例设计、测试执行、缺陷报告、测试评测到测试总结一个完整的测试流程,交给学生组建测试团队,按照流程进行任务分配和管理,最终完成整个项目的测试工作。通过一个完整项目测试流程的完成,有效提高学生的学习和实践能力、解决问题的能力、团队协作能力等,使学生在掌握软件测试的各种测试技术和基本流程的同时,积累了一定的项目测试经验,为他们今后的就业打下了良好的基础。

软件测试论文篇(7)

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

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

软件测试论文篇(8)

为了培养一批适应社会经济发展需要、创新能力强的高质量工程技术人才,2010年教育部启动了“卓越工程师教育培养计划”改革项目。“卓越计划”强调对学生工程实践能力、创新能力和国际化视野的培养[1,2]。

软件测试是软件工程专业的一门核心课程,它对工程实践要求很高,对学生的动手能力要求也很强。软件测试不仅贯穿软件开发的整个生命周期,覆盖软件各种应用领域,而且在软件开发的系统工程中占据相当大的比重,软件测试阶段所占的工作量约为软件工程总工作量的45%,所占的资金量约为总资金量的15%。在一些国际知名的软件公司中,开发人员和测试人员的比例通常为1∶1,微软公司甚至达到了1∶2。

然而,当前我国软件测试行业面临着测试人才严重短缺的问题,原因在于软件测试应聘者缺乏系统化的软件测试培养,软件测试的实践能力不高。按照“卓越工程师教育培养计划”的有关要求,软件测试工程师的“卓越”培养标准包含两个方面:一是具备从事计算机工程工作所需的工程基础知识的专业标准。二是具有国家“计算机技术与软件专业技术资格”中“软件评测师”要求的知识和技能,掌握ISTQB国际软件测试工程师认证的知识体系结构的行业标准[3]。

二、软件测试课程教学中存在的问题

(一)课程内容偏重理论,缺少具体测试案例

课程中包含了许多软件测试的基本概念、模型、技术和规范,绝大多数学生缺乏软件开发与测试的实际经验,由于没有具体的测试案例贯穿整个测试过程,因而软件测试课程难于理解,学生的学习兴趣不高。

(二)任课教师缺乏软件测试的实践经验,软件测试实践环节内容单调

软件测试是一门实践性很强的课程,许多任课教师没有接触实际的大中型软件开发项目,软件测试的实践经验很有限,很难透彻的讲解软件测试技术如何具体的运用。而许多高校的软件测试实践课往往停留在几种基本的白盒测试与黑盒测试技术上[4],学生的软件测试实践能力得不到极大的提高。

(三)对软件测试工具缺乏系统的学习与实践

随着软件规模的不断扩大,仅靠手工测试已经不能满足软件开发的需要。近年来,软件测试行业出现了许多软件测试工具,例如QTP、AutoRunner、Junit、LoadRunner、TestDirector、Parasoft C++ Test、Rational PureCoverage等,这些工具在软件测试行业中获得了广泛的应用。然而,由于高校软件测试实验条件相对还比较匮乏,导致学生无法学习和使用这些软件,毕业之后还需要经过长时间的培训才能适应软件测试岗位的要求。

(四)不熟悉软件测试国家标准,不能书写规范的软件测试文档

软件测试依据的国家技术标准规范主要有8个,分别是:《信息技术软件包质量要求和测试》(GB/T17544-1998)、《软件质量模型与度量》(GB/T 16260-2006)、《软件工程产品评价》(GB/T 18905-2002)、《计算机软件文档编制规范》(GB/T 8567-2006)、《计算机软件测试文件编制规范》(GB/T9386-2008)、《软件产品质量要求与评价(SQuaRE)指南》(GB/T 25000.1-2010)、《应用软件产品测试规范》(CSTCJSBZ02)、《软件产品测试评分标准》(CSTCJSBZ03)。教师在教学过程中往往忽略了这些标准,学生对这些标准也不熟悉,因此在软件测试实践中不能按照标准的要求实施测试,也不能书写出符合规范的软件测试文档,使得学校培养的学生无法满足软件企业的需要。

三、基于“卓越计划”的软件测试课程实践教学模式

针对软件测试教学过程中存在的问题,我们在软件测试课程的教学内容、测试案例和测试实践等方面进行了一系列的改革,形成了基于“卓越计划”的软件测试课程实践教学模式。以测试理论―测试技术―测试过程―测试工具为主线重新组织教学内容,设定后的教学内容如表1所示。

在软件测试的教学过程中,我们要全程使用测试案例,让学生能将学到的测试理论与具体的测试实践结合起来,更加牢固地掌握软件测试的理论和技术。在教学过程中使用的测试案例包括面向对象的NextDate问题、三角形类型问题、工资支付系统、自动柜员机问题、简化的录像机系统等测试案例。在讲解案例的过程中还对相关测试工具进行介绍和演示,在课程实验和课程设计中学生要用到这些测试工具。

为了提高学生的软件测试实践能力,软件测试课程还增加了课程设计的内容。课程设计以5~7人为一组,完成基于B/S的图书管理系统的设计与开发,针对该系统按照软件测试国家标准编写软件测试的相关文档,并利用测试工具完成系统的各项测试。此外,还邀请国内知名软件测试公司的工程师进行专题讲座,并利用暑期组织学生到软件公司进行软件测试实习。

软件测试论文篇(9)

中图分类号:TP311.53 文献标识码:A

1 软件测试课程教学现状及分析

1.1 软件测试课程教学现状介绍

软件测试是软件工程专业本科生的一门重要的必修课程。在本校的课程设置中为56学时,其中理论教学为32学时,上机实践为24学时,由于软件测试的各个环节分别对应于软件工程的相应环节,使得软件测试课程的内容庞杂,而其实践环节也相应地具有内容杂,任务重的特点。

软件测试的教学目标是通过理论及实践教学,让本科生熟悉软件测试的工作流程、常用软件测试方法及常用工具的使用及软件测试过程管理。

教学过程中的主要参考书目为机械工业出版社出版,原著为Paul C.Jorgensen,韩柯等译的《软件测试(原书第2版)》,原书的英文名为《Software Testing A Craftsman''s Approach(Second Edition》。授课基本流程基本也是依据以上教材的流程,首先介绍软件测试的概论,介绍什么是软件测试,软件测试的意义、软件测试的基本流程和基本概念等内容。接着介绍贯穿全书的软件测试需要的示例以及软件测试所需要的基本理论知识,包括测试人员使用的离散数学及图论相关知识。介绍完以上知识以后,按照软件测试流程依次介绍单元测试、集成测试和系统测试的测试用例开发方法和技术。其中在单元测试部分分别介绍单元测试部分的黑盒测试和白盒测试内容,黑盒测试部分包括边界值测试、等价类测试和基于决策表的测试,在白盒测试部分介绍路径测试、数据流测试等结构性测试方法的测试用例开发技术。介绍完以上内容以后,又介绍了面向对象的软件测试方法。

课程的上机实践基本上也是配合上课的流程进行安排,在相应的知识点介绍以后,安排学生按照指定的技术开发测试用例以进行测试活动,附带掌握相应的软件测试的各种管理和自动化工具。

1.2 软件测试课程教学现状分析

通过以上教学流程的描述结合以往毕业生工作以后反馈,可以总结其教学过程的特点为:通过系统的学习,同学们基本上能掌握软件测试用例开发的各种技术要点,对所有的知识点都有所触及,通过学习同学们基本上能够掌握各种实用的软件测试用例的开发方法,也能将各种方法应用于实际软件测试中。

而在实际软件测试实践中,软件测试工作具有以下特点:

首先,依据测试工作越早开展越有利的原则,软件测试一般从开发的初期就开始介入。例如在开发初期,需要编制测试计划进行时间人员和物力上的计划;在需求分析阶段需要进行软件测试的系统测试用例的开发;在设计阶段需要进行集成测试用例的开发,随着设计粒度越来越细,相应的路径及数据流集成测试用例也向下扩展;到达软件编码阶段,主要依据相应白盒技术进行单元测试用例的开发。其次,现代化的测试管理技术需要利用软件全面管理软件测试过程中的环节,包括测试计划的建立及管理、测试用例的管理、测试过程评价管理等。最后,因为人力资源成本的提高及各种技术限制,各种自动化的软件用例的运行软件的使用越来越多等。

通过比较教学过程及实际软件测试的开发过程很容易发现以往教学过程具有以下限制:

首先,没有将软件测试作为软件开发的有机部分进行介绍,而是将软件测试过程从软件开发过程中割裂开来。知识点没有按照实际应用过程展开,容易造成同学们掌握各个知识点,却无法形成知识实际应用能力。其次,缺少相应的测试管理软件的介绍和实践,影响了同学们对软件测试管理的重要性的认识。最后,教学课程缺乏同学们比较感兴趣的各种软件测试自动化工具的介绍。降低了同学们的学习兴趣。

2 软件测试课程教学改革方法探讨

通过上文的现状介绍和分析,针对以上教学方法进行改造,同时本着扬长避短的原则,在中国石油大学(华东)软件工程专业2009级软件测试课程教学过程中进行了教学改革。

教学改革的契机为本校软件工程专业和IBM公司开展教材合作编写项目,软件测试作为软件开发的重要部分获得了空前的发展良机。

具体的有利因素可以概括为:首先,学校向IBM公司购买JAZZ开发平台及相应的专业软件测试管理软件。通过和业界领先的最新的软件测试管理软件接触,了解了最新的软件测试管理理念;其次,通过IBM公司对教工的业务培训,了解了IBM公司的各种软件测试工具的使用情况;最后,通过本文作者共同努力,将平时用于开发的实际应用软件例如体育公共课管理软件等进行整合,用于软件测试用例的案例教学。

有了以上基础前提以后,结合以上有利条件,教改的主要做法如下:首先进行案例化教学,通过自己开发的软件这样生动的实例向同学们介绍软件开发过程中的软件测试的重要性和各种原则,避免了介绍知识的空洞和乏味,提高了同学们的学习兴趣;其次,在案例化教学的指导思想下,重新安排各个教学点的教学顺序,主要脉络为依照软件开发的实际流程,首先介绍系统用例开发技术,然后介绍继承测试用例开发,到最后介绍单元测试用例开发方法。在运行测试用例的过程中,充分结合IBM公司提供的各种软件测试用例运行工具,使得学生能够活学活用。最后,充分利用IBM的软件平台,介绍业界领先的软件管理工具的使用,使得学生学习兴趣得到极大提高。

通过以上的教学改革,理顺了教学和实践的关系,使得教学过程紧密联系实际软件的开发过程,同学们对软件测试课程的理解得到了加深。

3 结论及下一步工作

通过上文对教学现状的总结,以及针对教学现状的利弊进行分析,本文充分利用外部优势大胆进行了软件测试的教学改革,取得了预期的改革目标。同时也注意到改革工作才刚刚开始,还有很多需要完善的地方。接下来的工作主要包括:进一步丰富用于软件测试教学的案例及密切关注业界测试技术的最新发展以用于教学。总之,本文的教改工作达到了预期的目标,使得同学们对于软件测试的理解较之以前更加条理化、系统化和实用化。

参考文献

软件测试论文篇(10)

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

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

参考文献

软件测试论文篇(11)

中图分类号:TP311

文献标识码:A

DOI: 10.3969/j.issn.1003-6970.2015.07.026

0 引言

随着软件规模和复杂性的大幅提升,如何保证软件质量的可靠性变得日益突出。而软件测试作为保证软件质量的关键技术之一,其在软件行业中的地位与日剧增,软件测试的理论和技术工具都在不断的更新。众所周知,软件质量的好坏直接影响着软件企业的发展进程,对软件质量的重视使得软件企业对软件测试人才的需求日益迫切,软件测试行业发展前景无限巨大。这也为众多计算机及相关专业的毕业生开拓了新的就业渠道,软件测试的教学工作显得越发的重要。基于上述背景,本文结合作者测试教学改革的实践,就该门课程的教学内容、教学方法等方面进行了一些探讨。

1 课程教学现状与面临的问题

当前,国内许多高校都没有单独开设《软件测试》这门课,只是把它作为《软件工程》课程的一个章节来讲,即使开设了该门课程的高校,大多因缺乏必要的测试实践经验及测试教学方法,教学效果往往不能达到预期的要求。因此如何帮助学生更好地掌握测试理论与测试技能,对我们的测试教学工作提出了新的挑战。目前,有关软件测试教学面临的问题主要有以下三个方面:

1.1 重开发,轻测试

目前,国内众多高校都或多或少存在着重开发,轻测试的思想,教学的主要精力都用在了对学生软件开发能力的培养,而忽略或轻视软件测试的教学需求,造成上述问题的主要原因有两个方面:一是,软件测试毕竟是新兴行业,目前国内重视的程度还不够,大部分软件企业招聘还是以软件开发岗为主,为了提高就业率,大部分学校只能侧重对学生编程能力的培养;二是,目前国内有关软件测试的教学素材还依然匮乏,好的测试教材不多,且软件测试实践环节需要的大量测试案例不足,教师自身缺乏实际的软件测试经验,从而造成很多教师都不愿意从事该门课程的教学工作,加之学生普遍认为测试没什么含金量,开发学不好才去学测试思想的流行,都给软件测试教学带来了极大的冲击。

1.2 课程内容设置不合理

目前,大部分软件测试教材对测试的讲解往往泛泛而谈,缺乏条理性,将测试技术、测试管理与测试工具混为一谈,学生很难把握测试的难重点,加之部分教材教学内容陈旧,不能紧跟测试最新技术前沿,学生学习兴趣度不高;测试课程内容普遍以理论讲解、概念介绍为主,缺少测试案例,淡化对学生实际测试能力的培养,学习的内容很难应用于实际的测试项目中。

1.3 教学手段和方法缺乏多样性

“PPT+板书”仍是测试教学的主要手段,教师注重满堂灌,学生只是被动的听,教学方法单一枯燥,学生课堂学习的积极性和学习效率大大折扣;而且教师在讲解测试基本原理时,往往就单一的测试知识点展开,忽略测试知识的完整性、渐进性,较少使用案例教学法,以项目驱动为主线展开知识,造成学生对测试原理理解不透彻,不能适应真正测试工作的具体要求。

2 课程教改思路

2.1 优化课程教学内容

软件测试教学重在对学生测试实践能力的培养,因此要合理分配好理论课程与实践课程的学时比例,尽量减少理论课程的教学学时,加大实践教学学时。理论课程的内容要做到“精而够用”,这就要求教师要着重梳理测试的基本理论、基本原理,挖掘出测试原理的精髓,摒弃不实用或对学生帮助不大的理论点,对测试理论讲解适度取舍。

笔者在实际的测试理论教学中,主要讲解测试的流程、黑盒测试、白盒测试、性能测试及面向对象测试等知识点,经实践证明,上述知识点能够做到“精而够用”。在实际的理论课程教学中,笔者不是单一的讲解每个测试原理,而是以项目驱动的方式展开,让学生在实际的测试项目中,循序渐进掌握测试的基本原理及方法。笔者选用在线招聘系统的客户端为测试项目,教学效果良好。对于测试工具的讲解则放在实践环节进行,提高了授课效率。

2.2 加强实践教学

软件测试重在实践,唯有重视实践,才能让学生真正掌握测试的基本方法,做到学以致用。为了达到对学生测试实践能力的培养,笔者精心设计了十次实验,这十个实验很好地涵盖了测试的基本流程及技术方法,具有一定的代表性。由于测试技术更新较快,在实验的设计中要充分考虑新技术、新平台的测试方案,如加入针对.net软件测试所需特殊性的测试技术实验、移动APP测试实验等,以培养学生适应未来测试工作的需要。

需要注意的是,仅通过单一的测试实验,学生还不能完全掌握测试的流程与技术,在有条件的情况下,还需通过综合性的测试案例来提高学生的测试水平,做到将各测试原理及测试方法融会贯通。笔者所在的学校现已进行了测试教学改革,增加了2个学分的测试课程设计,要求学生综合运用所学测试知识完成一个网站的测试实例,实践证明,学生学习积极性和测试水平都有很大地提高,

2.3 探索多样化测试人才培养方案

软件测试人才的培养与软件产业是无法割裂的一个整体。因此,培养符合社会要求的软件测试人才不单单是学校的任务,还应积极探索校企联合培养体系,把软件企业对学生的实际测试技能训练纳入到正常的培养方案中。尝试探索高校主要偏重对学生测试基本素质及基础理论知识的培养,而对学生测试职业素质及职业技能的培养则更多地置于真实的企业运行环境中去训练的人才培养体系。逐步建立高校与IT培训企业、IT企业的战略伙伴关系,鼓励教师与企业工程师的合作互动,打造共同奉献、共同获利的共赢平台。

学生在企业真正的测试环境中,通过真实案例的测试锻炼,不仅可以培养和训练协同工作、沟通交流、角色转换的意识,形成实际的工作能力,还可以使学生适应软件企业的工作环境和业界标准,并和国际先进的软件开发理念和测试技术保持同步。

有幸的是,笔者所在的院系现已积极走出了这一步。目前,我系与上海博为峰软件技术有限公司通力合作,共同培养软件测试人才,系部也引进了该公司的测试方案,相关教师也在积极培训中。

2.4 提高教师测试实践水平

“打铁还需自身硬”,为了适应培养应用型测试人才的需求,要求教师首先自身要提高测试实践水平,积累测试实践案例,逐步提高测试实践教学水平,而决不能照本宣科去教育学生。鼓励教师多下企业、及时了解测试学科前沿知识及掌握最新测试技术。在有条件的情况下,可以尝试教师与企业工程师的角色互换,相互交流,相互学习。

2.5 鼓励学生参与测试改革