时间:2022-08-27 09:39:40
引言:易发表网凭借丰富的文秘实践,为您精心挑选了九篇软件测试项目总结范例。如需获取更多原创内容,可随时联系我们的客服老师。
关键词:项目驱动法;软件测试;教学方法
作者简介:赵晓君(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所示。
在课程进行的过程中,必须严格按照项目的测试流程进行,测试流程为:先获取项目测试需求,撰写测试计划,设计测试用例,执行测试,提交缺陷报告并跟踪修复缺陷,最后提交测试总结报告。课程结束,要求学生提交项目测试报告,测试报告包括多个文档,整个流程中每个阶段的工作必须有撰写规范的文档提交,如:测试计划、测试用例、测试执行报告、缺陷报告和测试总结报告等等。
测试报告既体现了教师项目教学的结果,也体现了学生对测试知识技能的掌握水平。通过评价学生作品,找出学生在学习过程中的薄弱环节,进一步改进项目驱动教学的教学安排,使其能够发挥最大的教学效果。
五、结束语
本文针对软件学院软件工程专业的培养对象和教学特点,把真实项目引入“软件测试理论”课程课堂教学中,采用项目驱动教学法,从项目的需求评审、测试计划、测试用例设计、测试执行、缺陷报告、测试评测到测试总结一个完整的测试流程,交给学生组建测试团队,按照流程进行任务分配和管理,最终完成整个项目的测试工作。通过一个完整项目测试流程的完成,有效提高学生的学习和实践能力、解决问题的能力、团队协作能力等,使学生在掌握软件测试的各种测试技术和基本流程的同时,积累了一定的项目测试经验,为他们今后的就业打下了良好的基础。
参考文献:
随着计算机软件技术的高速发展,软件测试在软件开发过程中的地位也越来越重要,软件测试是保证软件质量和可靠性的重要手段之一,软件测试人才需求猛增,软件测试已经成为计算机专业的重点专业课程。传统的软件测试教学模式,测试理论和测试实践严重脱节,不能很好的满足软件企业对测试人才的要求。依托广东东软学院的特色教学实践1321教学模式,进行以实践能力和就业能力为导向的课程综合实践探索,深化教学改革,激发学生的兴趣,让学生贴近现实的工作场景中学习,了解在软件开发过程中测试岗位的工作过程和知识要点,培养学生软件测试应用技能型人才培养为目标。
二、软件测试课程实践构建的主要思路
软件综合实践安排在大三课程开始之前的实践学期进行,为期4个星期,每天4学时的实践教学指导,软件测试专业的学生已经学过专业基础课《Java程序设计》、《计算机文化基础》、《网页设计》、《数据库设计》、《软件开发过程实践》,专业课《软件测试概论》、《功能测试》,学生初步具备了参与综合实践的专业素质能力。在综合实践开发团队中,将软件开发专业、网站规划与设计专业、数据库管理专业、软件测试专业和网络技术的同学,以3:1:1:1:1这样的比例进行团队建设,从中选出一位同学兼职项目经理,实现学生自主管理,配备具有双师素质的专业老师,一位教师负责指导5-7个团队的项目开发,当需要进行专业指导时,临时进行专业化实践指导,全方位分阶段、分岗位进行进行全程交叉技术指导,同时邀请合作单位的软件工程师,同步进行项目过程的跟踪,给予学生岗位最精准的实践指导。采用项目驱动的方法开展实践教学,通过开发真实的软件项目,以软件工程开发过程为导向,制定软件综合实践——软件测试方向的实践方案,分阶段进行实践,选择有较强的实践性和创新性的项目给学生选题,选题要贴合实际项目,需求相对容易获取,具有一定的创新性,能够激发学生的学习兴趣。首先需求的调研,需求的评审,编写测试计划,设计测试用例,测试执行,测试记录的跟踪和测试总结报告,对每个测试阶段进行教学设计,不断的将所涉及到的知识点融入到实践中,增强学生职业岗位素养能力,团队合作的意识,同时探索以学生管理学生的模式进行实践探索。
三、软件综合实践测试岗位的工作过程与方法
在软件综合开发实践过程中,对软件测试岗位的同学依据软件工程的理论进行指导,结合企业的工作流程,采用分组的教学模式,采用软件测试常用的W模型,进行教学指导,培养学生的团队合作能力,沟通能力,实践能力。测试岗位的工作主要分成两个三个部分,第一部分是需求的调研和评审,测试计划中测试策略的选择、任务的时间安排和测试用例的设计;第二部分主要是测试执行,安装测试工具,部署测试环境,按照测试所设计的测试用例进行手动功能测试,尝试利用自动化测试工具QTP进行自动化测试,运用所学过的黑盒测试方法,进行web测试,兼容性测试等方法的测试工作,将所发现的问题记录到测试管理平台(QC)的缺陷缺陷跟踪表中,修复后,进行验证性测试,第三部分就是测试总结报告。
四、软件综合实践的考核
1.答辩委员会的组成。立体化全方位的考核方式,采用学生团队答辩的方式进行最终的考核,答辩委员会成员由软件开发方向教师、网站规划与开发教师、数据库管理方向教师、软件测试技术方向教师和企业工程师共同组成。2.软件测试岗位的知识点的考核。每个专业都设计了一套科学有效的评价体系,从三个部分对学生的能力进行全方位评。第一部分IT职业素养能,占总成绩比例的30%,考勤、项目管理能力、文档编写能力、团队合作与沟通能力、演讲与答辩能力;第二部分团队实践成果,占总成绩比例的30%测试环境部署、测试工具软件的安装、测试执行中缺陷报告的跟踪、测试总结报告的编写;第三部分岗位技能成果,占总成绩比例的40%,软件开发过程文档:需求评审报告、测试计划报告、测试用例报告。
五、软件综合实践教学实践的意义
1.软件综合实践项目分组教学的意义2.软件测试岗位同学的收获3.综合实践教学的后续影响4.软件综合实践教学的改革未来方向
作者:张彤宇 李晶 姚庚梅 单位:广东东软学院计算机科学与技术系
参考文献:
[1]罗先录.IT类专业实践教学的三个层次[J].计算机教育,2007(18):14-15.
关键词:软件测试;实践课;就业
中图分类号: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.
关键词:软件测试;测试工具;测试管理;企业需求
中图分类号: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.
1高效软件测试团队建设的可行性策略
1.1软件测试团队的特质建设
软件测试团队的素质建设对于整个软件工程质量而言具有非常重要的作用,人是测试工作中最具价值也是最重要的资源。因此,应该积极构建合格的、高质量的合作团队。(1)软件测试以及软件工程开发都需要程序员具备足够的自信心,对软件检测结构以及程序的缺陷要如实汇报。对于软件项目工程中出现的各种问题要认真处理,以此减少客户可能遇到的种种问题。(2)软件测试人员还要具备足够的怀疑精神,对可能存在的漏洞性错误要及时予以检测和纠正,进而提高其自我创造力。(3)软件测试团队要积极构建沟通协调能力。可以通过与客户进行必要的沟通来及时发现软件运行中存在的不足之处,其中测试者可以针对模拟环境下用户对于软件环境的应用情况进行科学分析,以此对软件编写过程和总结文档进行反复检查检测,提高软件的运行效率和正确性。(4)必备的检测技术能力。软件测试团队必须具备重要的专业技能,需要精通数据库、通信、网络、GUI测试、测试工具、自动化测试脚本和相关业务领域等,以此全面提升他们的测试能力和测试积极性。
1.2软件测试团队的制度性建设举措
一个优秀的软件测试团队必定拥有一套完善的团队管理制度,拥有明确的职责分工和高端测试人员,通过不断规范团队管理制度,做到扬长避短,及时提升整体测试质量。其中,软件测试团队需要不断加强汇报制度建设、工作总结制度建设、奖惩制度建设、测试审核制度建设、会议制度建设等,通过科学合理地分配职责关系来进一步强化团队成员的素质建设。在此过程中,还要注重对于资深测试人员的正确引导和建设,加强彼此间的沟通交流,不断丰富团队的测试知识库,通过科学吸收先进的测试管理知识来提升整体测试技能和技巧,以此减少开发团队协同工作中的一些领域瓶颈。
2结语
关键词:软件测试;校企合作;面向企业;教学改革
0 引言
随着软件技术的发展和应用日益广泛,软件系统的规模和复杂性与日俱增。然而,由于软件本身是逻辑实体,软件开发目前还主要依赖手工劳动,软件的变更比较频繁等,导致了软件质量很难得到保证。软件缺陷导致的各类损失不断增加,甚至带来灾难性的后果。软件质量问题已成为所有软件使用者和开发者关注的焦点,而作为软件质量保证和质量控制的有效手段,软件测试受到了企业、用户及专家越来越多的关注。随着用户对软件质量要求的提高,企业对软件测试人才的需求量逐年递增。据前程无忧网数据显示,2011年国内软件测试人才缺口高达20万,2012年缺口突破30万人。作为人才培养的主要基地,高校成为企业挖掘软件测试人才的主要关注地。然而,从目前的企业反馈来看,应届毕业生很难直接被使用,而是需要经过长时间的培训,成本较高,这导致了企业对高校人才引进的信任危机。高校也慢慢意识到了这些问题,开始加强软件测试人才的培养。笔者从企业软件测试人员的引进及使用现状、高校软件测试人才的培养及教学现状进行分析,对软件测试课程教学改革进行讨论,并提出一些意见,以期能够对目前的软件测试人才培养起到一定的促进作用。
1 高校软件测试课程教学现状
2001年12月,国家批准建立了35所国家级示范性软件学院,其中软件测试课程成为本科及硕士研究生的专业核心课程之一。然而受传统人才培养模式的影响,高校在软件测试课程设置及人才培养上存在着如下不足。
1.1 传统“知识碎片”式的教学模式
在软件测试课程的教学上,大多数高校仍然采用的是以理论教学为主,实践教学为辅的教学模式,教师在课堂上讲授理论知识,学生上机完成相应的作业。教师授课时采用的案例和学生课后的作业,大多数都是以掌握知识点为主,比较片面,学生无法形成对软件测试工作的整体认识,更多的是一些“知识碎片”。如讲授测试用例设计方法时,教师已讲完等价分类法,学生也做了作业,但是学生最终还是不清楚到底为什么要学习等价分类法、在什么情况下用等价分类法,甚至实际应用中真正的测试用例是什么样子都不清楚。类似的单一孤立知识点的学习对学生来说并不合适。
1.2 具有专业知识及实际经验的师资力量匮乏
目前在高校从事软件测试课程教学的教师中,不具备软件测试专业知识及实际软件测试项目经验的占很大比重。一些教师未经过软件测试专业知识培训,不具备实际经验,仅仅是凭借书本进行理论教学,对现实企业中的软件测试工作不了解,无法针对企业的人才需求展开具有针对性的教学活动。
1.3 实践教学环境不完备
软件测试是一门实践性要求较高的课程,仅仅是通过小型的测试练习是无法达到实践的目的和效果的,必须建立完备的实践教学体系和环境。目前高校普遍缺乏真正的软件测试环境,学生无法通过项目实践来理解和深入学习软件测试的相关技能,如软件测试工具的使用,网络架构对软件系统性能的影响,大批量数据处理的性能测试及分析等。
1.4 对学生的理解误区未给予正确的引导
学生在大学校园中的学习受到社会观念的影响,对软件测试产生错误的认识和理解,对现实中的软件测试工作缺乏兴趣,从而影响到对软件测试知识和技能的学习。如“软件测试工作的技术含量较低,发展前景不如软件开发工作”“软件测试工作薪资较低”等,对于这些错误的认识,教师在教学过程中未给予正确的引导,从而导致学生就业后不愿意从事软件测试工作。
2 企业软件测试人才需求及使用现状
2.1 企业软件测试人才引进现状
软件测试属于软件质量管理的范畴,与软件开发不同,软件测试并不直接产生效益,所以企业在这方面的人员投入相对比较谨慎。在欧美等软件产业发达国家的软件企业中,测试人员与开发人员的配置比例一般已达到或超过1:1;而在国内被调查软件企业中,能够基本达到该比例的企业仅占22%,很多软件企业的测试人员与开发人员的比例达到1:7以上。
随着国内软件市场不断扩大,软件企业逐渐走人正轨。近年来,软件质量越来越被关注,软件测试日益引起国内软件企业的高度重视,企业在软件测试人力上的投入也在逐渐增大。而目前企业引进软件测试人才的主要途径有3个方面:高校、培训机构和自主培养。自主培养软件测试人员的周期相对较长,无法满足人才需求的快速增长;社会培训机构举办的各类培训价格不菲,生源相对较少,且培养出的人才质量良莠不齐,无法缓解人才市场的紧缺状况,这就使得高校成为软件测试人才引进的主要源头。然而,国内高等教育院校对相应的市场需求反应迟缓,开设软件测试专业的院校很少,且应届毕业生常常无法马上胜任相关工作。
2.2 企业软件测试人才技能要求
目前,企业中软件测试人员的工作岗位主要包括以下几种。
1)测试员。
测试员的技能需求主要包括:根据测试规程执行测试,记录测试过程及结果,编写测试日志和提交BUG描述;编写用户手册、在线帮助;参与整理测试项目相关文档、资料等。
2)测试工程师。
测试工程师的技能需求主要包括:根据自动化测试设计,编写测试脚本;根据测试模拟环境设计,开发测试模拟环境及测试工具;协助OA人员对代码进行规范性检查(按照公司标准文件),并记录检查结果;代码测试及走查;制定测试规程,审查测试员的测试日志及BUG描述,并对测试员的测试工作进行指导;分析测试过程及结果,指出可能出错的原因等。
3)高级测试工程师。
高级测试工程师的技能需求主要包括:制定测试方案;分析软件项目需求,进行测试需求分析;根据软件项目概要设计、详细设计和测试需求,进行测试设计,编写测试用例;进行自动化测试设计,并指导测试工程师编写测试脚本;测试工具及测试模拟环境的设计,并指导测试工程师进行测试工具及测试模拟环境开发;进行测试结果分析,编写测试分析报告;在统计分析的基础上对软件整体质量进行评估,提出软件过程改进建议;改进测试过程、方法、技术和工具等。
4)测试经理。
测试经理的技能需求主要包括:测试项目总体计划的制订;组织测试项目总体计划的评审;测试项目执行过程的跟踪和监控管理,并向软件项目组负责人和质量部测试主管报告测试项目的执行情况;分析测试项目资源(人员、设备等)需求,申请资源并参与相关协调工作;制定测试规范;制定阶段测试计划,分配测试任务;组织测试方案、测试需求、测试设计、测试用例、测试脚本、测试分析报告等的评审;组织测试人员的相关培训;测试项目总结;测试项目组的日常管理工作;测试项目组内部的沟通与协调;测试项目组与开发组之间的沟通与协调;测试项目组内部人员的绩效考核管理;向软件项目组提交测试分析报告等。
3 软件测试课程改革方案
综上可以看出,高校在软件测试人才方面的培养模式已经不能适应我国软件产业发展的现状,不能够提供适合企业需求的软件测试人才。为适应我国经济结构战略性调整的要求和软件产业发展对人才的迫切需要,实现软件人才培养的跨越式发展,笔者认为高校应该根据企业需要,针对软件测试课程展开深入的教学改革和实践活动,调整培养方案,从而培养出大批合格的软件测试人才。
软件测试属于软件工程专业的一个方向,可以依托软件工程专业,加强软件测试课程建设,加大软件测试方面的师资力量,改进教学方法,加强实践教学环节,培养出具有扎实的软件测试理论基础、掌握测试方法和具有一定测试经验的人才。
3.1 正确引导学生的学习观念,培养学习兴趣
要想培养优秀的、符合企业要求的软件测试人才,必须正确引导学生的学习观念,培养学习兴趣。由于社会上一些错误观念的引导,导致了学生毕业后不愿意从事软件测试工作,从而对软件测试课程的学习兴趣不浓。学生中普遍认为“软件测试工作的技术含量不如软件开发”“软件测试工作是一种简单的、重复性的劳动”“软件测试工作更多的是需要耐心,而不是能力”等,对于这样的错误观念,应加以正确的引导。
首先,应分析这种观念产生的原因。在毕业生就业时,很多企业对软件开发人员开出的薪资比软件测试人员高,这是实际存在的现象。进一步分析这种现象产生的原因主要与企业目前的软件测试工作现状有关,大部分企业所作的测试主要集中在功能测试,甚至是界面测试上,难度相对较小;招聘岗位基本上定位为测试员,所以开出的薪资较低。而对于测试工程师、高级测试工程师等软件测试岗位,企业开出的薪资并不会比软件开发岗位低。
其次,可以将软件测试工作和软件开发工作相比较,目前在企业里的软件开发基本上都是采用成熟的开发框架,开发人员只需要编写少量的代码就可以完成相应的功能模块。同时为了开发效率高,企业基本上会将开发人员定位为某个技术领域,比如界面层开发、业务逻辑层开发、数据处理层开发等,不会让开发人员随意变更技术领域。每个领域的开发都是有“前辈”积累的代码或成熟的框架和组件,开发人员的开发难度相对较低,在不同项目中重复性很高,“技术面狭窄、无法深入”已经成为开发人员的明显特征。反观软件测试工作,虽然测试员的工作相对简单,但是对于测试工程师和高级测试工程师来说,其工作涉及需求分析、设计和编码等范围,在项目中要涵盖每一个领域。比如功能测试要涉及业务的全面理解,性能测试要涉及各个知识领域,包括框架、数据库、通信、网络等;从技术来说,软件测试人员比软件开发人员的知识领域和知识理解程度“更宽、更深入”。通过引导,让学生更清楚软件测试工作的现状和未来发展,从而提高其学习兴趣。
3.2 基于完整项目的实践教学
软件测试的目的是“尽可能地发现软件中的缺陷”,要达到这个目的就必须要了解软件,了解软件的开发过程,了解软件开发人员的思维方式。目前很多高校软件测试课程的实践教学都采用小组的形式完成一个测试任务,编写《测试计划》《测试用例》《测试总结报告》等文档,但是这样的实践教学模式过于形式化。学生基本上都是“为了测试而测试”,生搬硬套文档模板,是因为并不了解软件及开发流程,无法从本质上寻找问题,测试流于表面。
要想更好地提高测试技能,必须改变实践教学模式,不能将测试与开发相脱离,而应该让学生投入一个完整的项目实践课题,从中体会测试与开发的关系。项目实践课题可以关注以下几个方面。
(1)课题内容以学生学习和生活中所熟悉的软件系统为对象,如《学生宿舍管理系统》《图书馆管理系统》《校园邮件收发管理系统》等,这样可以更好地引起学生的兴趣。
(2)课题的组织采用小组的形式,3~5人为一个小组,自由组合,并推选一位项目负责人来管理项目。
(3)课题的目标是完成一个软件系统的开发及测试。考虑到与企业里的真实工作流程相结合,项目采用“交叉测试”形式,即每个小组完成本组软件系统的开发任务,然后将软件(包括文档)提交给另外一组进行测试,这就符合“第三方测试”的要求。
(4)课题的考核采用小组答辩的形式。每个小组将自己的开发成果、测试成果进行展示,其他组的同学和老师可以有针对性地提出问题,并对每个小组进行打分,然后根据权重值产生每组的最终成绩。
通过这样的项目实践,可以让学生了解软件项目的开发和测试整体流程。在开发时考虑可能会出现的问题;在测试时进行反思,并深入挖掘,以自身的开发实践来促进测试,对测试的技术难度和复杂度有更深切的体会,从而提高软件测试技能。
3.3 加强校企合作,提高师资水平,建设课程实践环境
企业需要人才,高校为企业培养人才,这无疑为校企合作提供了可行性。高校目前在软件测试课程教学上存在着一定的困难,一方面是师资问题,缺乏具有实际软件测试经验的教师;另一方面是课程实践环境问题,缺乏真实的软件测试环境。这些问题都可以通过校企合作来寻求解决。
(1)高校将教师送到专门的培训机构学习软件测试技能;还可以与企业合作,将教师送入企业参与实际的软件项目,与测试人员一起工作,在实践中学习。这样就可以培养出一批具有实际测试经验和技能的专业教师团队。
(2)高校和企业合作建立软件测试模拟环境,可以参照企业来建立自己的测试模拟环境,也可以和企业共享。这样既节约了成本,又能使得测试环境更加专业,满足学生课程实践的需要。
(3)聘请企业中的资深高级软件测试工程师和软件开发工程师到学校担任助教或顾问,与学生面对面交流,对学生的学习和实践进行指导,从而开拓学生的视野。
(4)在教学中引入企业的实际项目作为案例,结合实际项目中所用到的测试方法和测试技能;也可以请实践项目的开发人员和测试人员现身说法,与学生共享实际经验,让学生真切体会实际项目和理论教学之间的差别,从而达到理论和实践相结合的目的。
(5)聘请企业中资深的软件测试人员带领学生进行课程实训,实训的题目可以是虚拟的也可以是企业中的实际项目;或者让学生到企业进行实训,参与实际的软件项目,让他们真正了解实际的软件测试流程及方法,在实践中提高测试技能。
通过与企业合作,不仅能够培养一支具有实际经验的师资队伍,也能让学生从企业的项目中学习到实际的技能。同样,企业也可以在与高校的合作中引进自己所需要的人才,这对于双方来说都是非常有价值的。
3.4 走教学产业化发展道路
虽然高校并非是盈利机构,主要以培养人才和科学研究为主,但是“巧妇难为无米之炊”,培养人才和科学研究必须要有相应的资源。如果单纯依靠国家的投入,无疑是“杯水车薪”,所以,需要考虑依靠自身的力量和优势来获得资源。教学产业化是一条可以尝试的发展道路。
在软件测试的课程建设中,可以考虑通过国家投入和企业合作的方式,建立一个完整的软件测评环境以及一支由高校教师和企业资深的软件测试工程师共同组成的软件测评队伍,这样的测评环境和测评队伍可以在满足高校实践教学的基础上面向社会,与一些具有资质的测评中心合作,共同承担企业的软件测评任务。这反过来能够促进测评环境和测试队伍的建设和发展,不仅满足了教学要求,又寻找到了一条产业化的发展道路,无疑会对高校其他学科的建设和发展提供借鉴。
4 结语
笔者正是从企业用人的实际需求出发,提出加强校企合作的如上思路,提出面向企业的软件测试课程教学改革方法,让企业能够真正引进优秀人才,让高校走上产业化促进教学发展的道路。
参考文献:
[1]杨鹏,贺平.高职软件测试专业的构建与探索[J].计算机教育,2008(2):63-66.
[2]王福良,任传荣,杨彩萍.关于普通高校教学课程体系改革的思考与实践[J].天津工业大学学报,2002,21(3):26-28.
关键词:软件测试,质量管理,软件工程
中图分类号:O213.1 文献标识码:A 文章编号:
1 软件测试类别及作用简介
软件测试按作用分类,主要可以分为功能测试,性能测试,安全测试等,按测试阶段划分则可分为单元测试,集成测试,系统测试,验收测试,回归测试等。按是否涉及源代码测试又可分为黑盒测试,白盒测试。
下面按作用介绍几类常见的测试:
功能测试:主要按照系统功能说明书软件设计书等资料,验证软件每个功能的正确性,易用性。主要目的是保证软件功能可用,用户使用过程中有一个良好的使用体验。
性能测试:是一种非功能性测试,主要测试软件产品运行的各项性能指标是否达标。如系统反应速度,系统负载能力,系统使用过程中对计算机各类资源的占用情况等,主要是测试系统的健壮程度。最常见的是测试软件功能的反应速度。同样对保障用户使用体验有重要作用。通常使用自动化工具得到测试系统的性能指标,笔者使用的工具为Loadrunner(LR)。
安全性测试:这是经常被忽视的测试方式。很多用户软件使用安全意识淡薄,在用户未提出安全测试的情况下,有些软件开发公司为节约成本也会刻意回避这个问题。软件安全与否并不直接影响用户的使用体验。软件安全测试主要从数据访问,权限管理,防攻击能力,破坏性测试等几个方面测试软件系统的安全。政府部门所使用的软件系统通常,这样的项目进行安全测试很有必要。
2 软件测试与质量管理关系
任何项目实施都需要有质量管理,否则工程产品将无法使用。软件工程更是如此,在软件工程中软件测试是软件质量管理的重要手段也是质量管理流程的重要一环。其实不管软件测试怎样分类,具体的流程怎样操作,软件测试的目的就是为了保障软件的质量。从公司组织层面项目质量管理从制度上对测试流程的完整性加以保障,从项目实施层面,项目内部的质量管理应为软件产品即将的测试做出准备提供便利。
在多种软件工程管理模型中,都将软件测试做为单独的过程纳入到管理体中来,比如CMMI软件成熟度模型,是将软件测试放在产品验证过程域中的,同产评审一起,强调软件测试对产品验证作用。
3 测试组织的建立
人们经常有开发做的较弱的人做测试的印象。这是错误的,主要是由很多软件公司不愿意调拨开发水平高的人在测试上造成的。其实测试人员作为公司于客户之间软件质量最后的守门员,不仅要保证产品功能正确,还要从用户角度对软件产品提出使用建议,根据经验预测用户可能的使用方式以及评价,同时还需同项目经理,开发人员沟通。因此不仅要具备测试理论知识,还需要具备项目经验,熟悉产品业务,了解项目各环节工作,同时具备编码,操作系统,数据库,计算机硬件等方面的有关知识,恰是要求知识构成最全面的岗位。
通常建议测试组应包括至少一名经验丰富的人员。测试组的人数根据公司开发人员总数,公司产品的成熟度确定。如果公司产品已经较为成熟,有固定框架的话,测试人员数量可维持在开发人员总数的十分之一,否则应大于这个数量。
测试组可由测试组长,或者叫测试经理带领几名测试人员组成。测试经理负责测试计划,测试过程监控,测试产品验证等工作。测试人员按要求开展测试工作。
4 测试流程简介
(1)测试工作启动阶段,项目经理提交需求规格说明书和项目计划。测试经理根据提交文档编写测试计划。需求内应包括用户方确认的系统使用环境。
(2)工程管理部对测试计划进行评审。评审通过进入测试流程。不通过则将文档返回项目经理根据项目情况重新计划,直至通过。
(3)系统经过项目经理检查,满足送测要求时,项目经理填写测试申请单,提交概要设计说明书、详细设计说明书和系统demo,澄清测试需求,明确测试环境。其中demo非必须提交。
(4)项目经理指派人员同测试组建立专门的信息交流接口,协调测试过程中的有关事宜。
(5)测试人员执行测试。
(6)记录测试过程中出现的系统缺陷和问题。填写问题跟踪记录表,并交由项目经理确认。
(7)工程管理部根据测试结果决定系统是否系统具备条件。如果不具备条件,则将督促开发人员完善系统并重新执行测试流程。
(8)测试经理编写测试报告并总结。测试活动结束。
流程如图:
以上测试流程主要按瀑布开发模型内的测试流程描述,如果选用别的开发方法,则可以根据情况将流程简化后加入开发中的每次迭代内。
5 结束语
测试工作是保障软件产品质量的重要手段,本文大多内容来自笔者工作经验的总结,仅供参考,有失偏驳之处,还请多加指正。
参考资料
[1] 佩腾 软件测试 机械工业出版社
[关键词]软件测试 课程体系 教学改革
[作者简介]李静(1969- ),女,陕西兴平人,河北北方学院信息工程学院,副教授,硕士,研究方向为教学设计、操作系统与软件测试;赵志升(1965- ),女,河北张北人,河北北方学院信息工程学院,教授,硕士,研究方向为教学设计、软件工程、数据挖掘。(河北 张家口 075000)
[中图分类号]G642.3 [文献标识码]A [文章编号]1004-3985(2014)02-0135-02
软件测试技术近年来发展迅速,已经成为与软件开发齐头并进的专业技术。软件测试工程师承担产品功能、性能、可靠性、易用性等全方位测试,保证产品质量,满足用户需求,保证企业信誉,是当前IT业界需求量骤升的热门人才。目前我国软件产业在产品功能和性能测试领域仍然存在着严重不足,软件测试的广度和深度已成为影响企业生存与发展的核心问题。培养大量的具备专业素养和高层次技能的测试人才,更好地推进我国测试行业和测试技术的长足发展,是高等院校必须担负的职责。
一、国内软件测试专业教育现状
自2000年软件测试技术在我国兴起至今十余年,软件测试人才随着软件行业的迅猛发展呈现出供不应求的态势。专业的软件测试机构、测试网站及测试技术培训机构等迅速发展起来。目前,国内许多高校已经逐步设有本科阶段软件测试方向的专业。2011年11月,由教育部主办的“2011年高等学校软件测试课程教学论坛”在上海同济大学召开,对国内软件测试人才的培养及测试领域的全面发展起到积极推动的作用。
1.社会培训模式与现状。当前国内业界一些知名网站主要承担起测试人才的培养职责,如51testing、达内科技、北大青鸟等,为测试行业输送了大批动手能力较强的测试人才。针对性很强的短期教育模式是社会培训的特色。培训机构通常按照助理级、初级、中级和高级测试人员安排培训内容。诸如北大青鸟等规模较大的培训机构引进欧美的混合教学模式,采用“理论知识+分模块项目实践+全真项目实训+职业素质训练”的模式,形成一个科学并且实用的培训体系。培训机构通常设立自己专用的教学平台,通过网络远程授课与集中化分期分班授课方式,在半年到一年的较短时期,培训出上岗快、操作熟练、针对性强的应用人才,而且很多学员直接通过测试工程师面试,并在后期工作中累积了较深厚的测试经验,成为测试领域的支撑力量。培训课程主要内容涵盖操作系统管理、网络应用与Web编程、数据库管理等专业课程,实训环节应用主流的测试工具,如Winrunner,Loadrunner,Rational Robot等。着重于实用性的项目实践和开发是培训机构与高校教育的最大区别。参加这些培训班已成为目前大学生岗前培训的主要途径。
2.高校专业教育现状。软件测试技术要得到广泛应用和深入发展,不能仅依靠社会办学,高校系统化的专业教学体系能够为学生奠定一个更加扎实和科学的专业基础,并对测试技术本身的学科化发展起到不可替代的作用。近三年来,软件测试技术作为专业课程逐渐在多所高校开设。目前,多数高校将“软件测试技术”作为一门独立课程设置,交叉课程主要为“软件工程”。当前一些高校开始申报软件测试专业,但是软件测试技术的学科化发展目前仍受到诸多因素的影响。主要是:(1)缺乏丰富的理论支撑。软件测试目前仍是发展中的计算机技术,专业论著少,适合于高校的教学材料非常有限,并且普遍存在知识结构不合理,教学内容不规范统一,论点少并缺乏依据,实验指导教材匮乏等问题。另外作为一门独立学科,与其他学科的交叉与相辅是理论体系的必要部分,测试技术与计算机领域诸多技术关联,相互结合教学是当前教改面临的问题。(2)目前通用性测试平台仍未完善发展与普及,在高校中缺乏结合教学实验内容的通用的实践平台,实验环境单薄。多数高校停留在泛泛讲授几个热门的测试工具的阶段,缺乏成熟、实用的测试环境来实践完整的测试项目。(3)教学模式上存在严重缺陷,专业培养过程中存在大量的不规范性和随意性。主要表现在:实践课程比例小,测试项目实例缺乏;理论课程知识结构不合理;教学理念和手段陈旧,脱离测试技术发展的实际与市场应用;不重视对学生从事软件测试职业素养的培养。尖端技术的学科化发展是高等院校的职责,建立一个科学、完整的专业教学体系是高等教育最为核心的问题。
3.当前推进测试技术应用的其他途径。除了专业公司培训和高校培养外,当前软件测试行业的发展还依赖于多种良好途径:校企合作、技术沙龙、测试专业微群、社会信息辐射等。新兴技术发展需要社会传播产生的广泛影响力来推动。以MPD(亚太软件研发团队管理)峰会、51testing等领衔的线下技术沙龙活动和巡回演讲,聚集了很多高端的测试人才,相互学习交流,积极推进软件测试行业的发展。一些较有影响的网络微群提供测试技术的交流和分享,如软件测试、敏捷测试、落地微群等,大量的测试人员和测试工程师提供测试过程管理、测试工作总结等资料,有很强的借鉴性。
软件测试行业的人才匮乏仍然是当今的重要问题。依照行业需求,软件测试人员配备应是软件开发人员的2倍,而目前我国软测人员与开发人员比例却仅在15至18之间。以高等院校专业教育为主,实现多种途径的人才培养是当前软件测试行业的当务之急。
二、高校软件测试专业课程体系建设
构建专业课程体系,需要设置好基础课与专业课、理论课与实践课、必修课与选修课的比例关系,并合理安排与协调课程相互间的分工与配合。建设科学完整的软件测试专业的课程体系是一个需要多方考证借鉴和不断探索完善的工作。
1.课程设置。软件测试是一门技术性很强的专业,对专业素养要求很高。在测试模式、测试方法上与软件开发的模式、开发平台直接相关。学生必须对操作系统、软件的逻辑结构以及物理存储过程、操作实现方法达到一定深度的了解和掌握,对于硬件的拓扑结构、物理结构要也需要尽可能多地熟知。在软件测试行业,对优秀人才的要求是拥有高敏感能力、高发散能力、高分析能力,而这些都是以扎实的理论基础为前提的。建设软件测试专业课程体系,应契合技术发展、学科发展与从业需求。经过多方考证,下表所述课程囊括的专业知识对于高层次的自动化软件测试技术的掌握必不可少。
由于计算机专业课程的关联性很强,一些专业课程可以相互结合教学。比如语言类,Shell等可以结合到UNIX/Linux操作系统课程中,HTML/XML可结合到.NET以及网络技术等课程中,PHP融入Web服务器配置等专业选修课程教学中等,避免专业内容交叉而造成的重复教学现象。在教学过程中,要将软件测试的思想广泛地渗透到所有的专业课程中。如在各类程序设计语言基础课程中引入单元测试的思想,在软件工程课程中强调软件测试的重要性,增强软件质量管理意识。当前微软、苹果、惠普等软件公司都推出完整的计算机应用与开发平台,从硬件、操作系统、集成开发环境到用户应用软件,基本上提供一条龙服务。以微软为首的测试框架开发也日趋成熟。高校需要从专业建设角度考虑,把握学科发展方向,汲取众家之长,将尖端技术和主流应用平台作为专业教学内容,在有限的学时之内统筹安排,让学生形成一个专业学习的整体思想,做到知识累积层次清晰、得到一个完整的专业知识体系。随着测试技术的快速发展,课程设置需要不断更新调整,既要考虑专业建设、学科建设,又要考虑市场需求和研发需求。合理选择、科学地纳入新知识到专业课程中,是需要不断探索和改革的无止境的工程。
2.教材选择。教材选择应当宽口径,除了主要教材之外,要为学生提供更多的辅助教材和资料,给学生自主学习的空间和时间。这方面要学习西方高等教育的模式,按照教学计划和教学内容,指导学生分期、分阶段大量阅读与课程相关联的专业资料,并汇总论点和典型实例展开讨论,开阔学生的眼界,培养学生独立思考、逻辑分析能力和探索精神。另外,教材选择应把握专业技术的最新发展,与专业领域的最新研究成果、社会培训资料等结合,及时更新教学内容。例如有经验的测试工程师撰写的技术开发、测试报告与测试总结等书籍资料,是完善和填充教材的重要知识源。
3.实验教学规划。(1)实验教学内容,应包括两部分:测试框架应用和测试项目实践。前者是指基于实验室配置的测试框架,选择针对操作系统或者客户端软件、网站等的服务性能测试案例,编写一些通用的测试脚本,在测试框架上实现完整的测试流程。后者是指选择实际的软件测试项目来组织实验教学内容。在测试项目实践中,需要提供给学生被测试的软件系统代码以及软件开发综述,包括需求分析、概要设计书、详细设计书等文档,便于学生真实地模拟实际工作中的测试流程。项目实践中,可将学生分成若干个项目组,分别设置测试经理、测试负责人、测试人员等角色,依照测试用例设计、测试任务管理、测试计划实施、测试过程监控、测试日志与测试报告管理环节,安排角色各司其职,协同完整测试项目,并对被测软件系统做出质量评审,撰写格式规范的质检报告。通过实验教学,使学生深入理解和掌握常用测试工具,如单元测试工具NUnit等应用,提升学生的项目管理经验和软件测试技能。(2)实验教材选择:实验教材选择应参考社会培训机构的项目实训资料,选择基于主流测试平台的项目实例教程,并结合测试技术的应用发展现状和高校测试环境,广泛筛选辅助资料,设置测试项目,丰富实验教材的内容。(3)实验环境配置:搭建面向高校教研的通用测试环境。当前各类测试平台及测试工具不断推出,种类繁多,但针对性较强,应用性能受到限制,缺乏可被广泛普及的通用型测试平台,导致测试过程缺乏通用性和稳定性、测试标准设定和测试价值评估无法明确等问题。建立一个通用测试环境对高校的实验教学和专业研究十分必要。通用测试环境应囊括软件测试管理平台、回归测试平台和性能测试平台功能。提供软件的文档审查、安装测试、功能性测试、易用性测试等测试项目,并能提交形式内容规范的测试报告。通用测试环境搭建需要高校结合专业研究项目实施二次开发。
三、面向从业需求的教学改革
1.注重面向市场应用的课程体系改革。为了更好地为社会培养应用型人才,高校应以企业岗位能力需求为标准,不断进行课程体系改革,构建“知识+应用+研究”的混合型课程体系结构,为学生从业后尽快适应工作岗位,担负起科技职能,并进一步从事测试技术开发与研究奠定基础。软件测试课程体系改革应基于不断发展的测试技术以及社会测试岗位的能力需求,从培养学生专业素养、测试技能、项目分析能力、探索开发能力等全面素质的高度进行必要的整合和重组,把学生应具有的知识、能力、素质结构作为课程体系改革的依据,组建模块化的课程结构。
2.注重面向从业需求的教学实践改革。面向从业需求,加强教学实践环节是高校实验教学改革的重要内容。目前很多高校与自己的合作企业签订培训合约,建立人才基地,共同开发软件和培训人才、交流人才,是教学结合实际应用的最佳模式。围绕着以企业需求为目标进行实验教学,使学生在真实的项目流程中对软件测试的完整过程与实施细节、管理机制与管理措施进行全面的了解,提高测试能力和积累测试经验,便于学生日后尽快适应实际工作,在专业技术岗位发挥人才作用。
3.注重培养学生的职业素养。高等教育为社会输送专业技术人才,不能忽视对人才职业素养的培养。在教学过程中要把专业素养、技能训练和职业素质培养有机结合起来。在学生实践与实习过程中,注重培养学生综合运用所学知识发现问题、分析问题、解决问题的能力,进而培养学生的技术应用和技术创新能力,并培养学生的团队合作精神和相互协作能力,提高将来从事测试行业的职业素养。应结合社会对软件工程师的岗位需求,设立面向毕业生的专项系列讲座,为学生提供面试技巧培训、竞争意识培训、沟通与协作技巧培训和就业指南等,是极具实效且必要的教育内容。依照国外标准,软件测试工程师应与架构师处于同一等级。从事测试行业必须具备扎实的专业基础、综合的个人能力和较高的职业素养,才能真正实现高端的自动化测试。
[参考文献]
[1]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.
[2]钱丽.以就业为导向的软件测试课程体系改革探析[J].科技信息,2012(1).
[3]顿煜卿.软件测试教学过程中的思考和实践[J].计算机光盘软件与应用,2012(14).
关键词:软件测试;可靠性;意见
中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2012) 10-0204-01根据研究显示,目前我国的软件公司有专门性的软件技术测试部分的还不到五成,而这五成当中设立专门性质的软件测试技术部门的仅仅不到四成,而有着软件测试工具开发部门的公司则仅有一成。从以上数据显示,目前我国的软件公司不够重视对软件测试工作,其所持有的态度也显得不够重视,我国软件公司成立起专门性的软件测试部门所占有的比例远远不能够满足我国企业的需求,而具备可靠性的软件产品,这必须依赖于在软件测试的各个环节进行把关,对产品进行性能和功能的测试这必须充分依赖于通过软件测试手段达到使用根据测试方案实施,在此基础上对软件测试系统进行维护和设计,分析和评估测试方案当中所能够出现的各种问题。对软件测试用例进行执行之后,并且要做到对故障进行跟踪,使得开发出来的软件产品能够对用户所要求的需求相适应,从而确保软件的可靠性和质量的提高。在进行软件项目的研发过程当中,软件测试具有十分重要的作用,可是由于我国的软件行业起步比较晚,只有像华为、联想、用友等大的软件开发公司具备专门性的测试人才和岗位,没有一定的了解在软件测试当中,而软件测试这个环节国外显得非常重视,如微软公司所从事的重要工作就是对软件进行测试,而且在进行该方面的投入显得非常大。
一、忽视软件测试环节的主要原因分析
通过对软件测试行业当中比较资深的人士进行交流发现,目前我国软件公司对测试环节进行忽视的原因主要为以下几点:
(一)节约资金
由于目前我国的小型软件公司为了对开支进行节约,对软件上线成功运行的瓶颈进行制约的就是软件测试,如果项目是属于中小型,公司就会将软件测试环节耗费资金、力量和时间,在软件测试环节使用项目资金,错误的观点认为后期和需求进行技术支持更好,没有这个必要进行软件测试工作。
(二)没有这个必要性
目前很多软件公司错误的认为开发人员自行测试所开发的程序,通常来说对技术开发的难度比测试技术更高,这就不需要专门性的软件测试人员,开发人员对自己所开发出来的程序进行检查,这就显得更加准确和有效率性相对于外来人员检查。
(三)由于受到思想意识局限
由于对软件测试重要性的理解不够,出现重编码而轻测试的现象,许多人认为程序能够基本运行,客户没有提出软件存在错误,就算成功,没有必要进行专门的测试,但是却忘记了即使现在自己所谓的“成功”,却存在着许多潜在风险。
(四)项目时间限制
随着项目时间的缩短,大多项目经理会把剩余时间给予开发人员,没有多余的时间交给测试人员进行测试,或者说等到项目尾声,给测试人员程序,草草的测试一下就算成功过关,但是他们却没有估算,随着项目的逐渐推进,修改BUG的成本是成倍翻滚,等软件给客户上线后在发现错误去修改,那么耗费的不只是维护费用和人力,丢失的还有公司信誉。
(五)合适人员难求
现今专业软件测试人员供求量很少,具了解,从2009年部分大学院校才正式引进这门课程,而且从这少数人中挑出符合自己公司需要的员工,变的更加艰难。公司挑员工,员工也会挑公司,对于测试人员的福利待遇来说,薪资远远低于开发人员,工作压力却居高不下,所以测试人员对应求公司的眼光也是非常犀利。
(六)组织内的冲突
开发与测试的工作是对立的,经常会有冲突,没错,的确会有。软件测试本来就是给开发人员“挑刺”,使开发人员的进度和工作量增加。有些公司就会认为,软件测试工作对其作用不是特别大,而且事端挺多,很难处理,因此对软件测试印象大打折扣。
二、对软件测试和软件可靠性两者之间关系的认识
要对我国的许多软件公司对软件测试当中的错误认识进行改变,其中最重要的就是从心理意识上去进修认可,使得了解软件测试所具备的功能,深切的理解在进行项目开发的过程当中使用软件测试所带来的重要作用,充分理解进行软件测试对软件的可靠性和质量有着密切的关系,在软件项目的开发流程当中软件测试相对于工程监工的角色,要对潜在和暴露出来的BUG能够及时的寻找出来,使得在软件的开发中初期能够将最高密集度的缺陷进行控制,这样就会使得大幅度的降低进行缺陷修改的成本,目前从事IT行业的人士心中都了解,降低项目的缺陷成本,在公司内部成立起进行软件测试的部门,测试资金就会远远小于缺陷成本,也可以这样说,对软件测试进行科学和理性的看待,不能够局限于现状的要求,要对长远发展进行充分考虑,对公司来说必不可少的就是软件测试工作。
三、总结
笔者立足于客观现实情况来粗略的分析和研究对于软件测试当中的相关知识,传统的作坊式的软件企业,在当今高速发展的高新技术环境下已经遭到淘汰,这就必须要让我国的软件企业能够摈弃原有的思想意识,循序渐进的实施,对于软件测试和软件可靠性两者之间的关系有着清醒的了解,这样才能做到软件企业成长进步。
参考文献:
[1]史济民.软件工程原理、方法与应用[M].高等教育出版社,1990
[2]杜梅,刘丙利.浅析提高软件测试效率的方法[J].科技信息.2011,15