软件测试心得体会通用六篇

  摘要:本文从软件测试的教学实践出发,分析了测试工作的特点和对测试人员培养的要求,最后提出了一些测试教学中应着力培养的方向。

  关键词:软件测试;教学体会;团队精神

  中图分类号:G642

  文献标识码:B

  软件生产过程中软件质量问题越来越多,软件测试已经和软件的创意与开发一样被提高到影响软件生存的地位。随着社会对该方向人才的需求越来越大,我们也在软件系开设了软件测试专业,同时积累了初步的教学实践经验。下面就几个方面谈点心得。

  1教育同学不把软件测试作为逃避困难的避风港

  软件专业的部分同学在学习了编程的课程以后,往往有畏难情绪,认为软件开发工作对人的脑力和体力的要求高,而且技术变化快,需要不停地学习更新知识,同时工作中还常加班,于是就产生了逃避心理,希望在分专业的时候选测试。他们认为测试是挑别人产品的问题,总比自己创造容易。有很多同学带着规避困难的情绪来到软件测试专业,这是一种不正确的心态。测试工作往往是入门容易,深入难。

  1.1测试工作需要对行业有广泛的知识面

  软件测试工作看起来起点低,好象不需要深入的专业知识就可以开始做了。测试人员往往刚入门的时候是参加一些具体的项目,从项目中积累测试经验。但是如果没有良好的对计算机软件和硬件的知识基础,经验的积累容易限于表面,而不深入。

  比如测试中比较热的一个方向是性能测试,该方向对软件的响应时间,资源占有进行测试。性能测试往往使用测试工具。测试工具对软件系统运行中的测试结果进行数据采集。而测试人员需要对结果进行分析,刚开始的时候面对各种数据可能不知道如何分析,经过经验的积累,可以从数据中找到系统的瓶颈,提出改进系统的意见。如果没有对系统的全面了解,对专业数据的分析能力,是无法胜任工作的。

  测试中还需要人员有很强的自学能力。因为许多时候我们使用自动化测试工具辅助测试人员完成可重复的测试任务,往往它们都自带一些脚本语言,测试人员要通过自学而掌握,所以也需要编程和调试的技巧。目前一些公司还开始重视开发自己软件产品的测试工具,这样要求从业人员担当开发和测试的两重角色,是非常有挑战的工作。

  软件测试员在做具体项目测试的时候,还需要对该项目的行业背景有所了解。一个专业测试师可能会接触比软件开发人员多得多的项目。他在做测试的初期需要对被测试项目做专业了解,可能就会接触到各行各业的软件。比如做金融行业软件有什么特殊的要求,金融行业对信息的操作和信息安全方面要求怎样,信息安全的技术有哪些等等。

  我们的软件测试方向教学中,也开始聘请工业界的行业专家为同学们讲行业软件开发的专题讲座,以让大家有更多机会了解行业背景。

  从教学中大家都体会到该方向对专业知识领域的要求是相当广的,片面理解测试是一个比较低档次的软件工作不合适。

  1.2测试人员和开发人员做的是一个工作的两个方面

  在软件产品开发的工作中,好的测试人员和开发人员是在干一个工作的两个方面。测试人员在清楚软件产品的客户需求的情况下,凭借自己敏锐的感觉和对软件系统的深入了解,是在有一定批评和指导性地帮助设计和开发人员完成软件产品生产活动。我们讲授课程的时候强调这个观点,测试人员不是团队的二等公民,而是客户的眼睛,是产品的鹰眼。

  2测试员更需要培养团队精神

  2.1尊重个性思维特点,发挥团队优势

  我们知道测试中有黑盒子和白盒子测试,黑盒子测试是测试人员在只知道软件功能说明,不知道软件内部的实现具体细节的基础上开发测试用例,进行测试的过程;而

  白盒子测试,是测试人员对软件内部代码在明白其实现原理的情况下进行的深入代码内部的测试。这两种测试需要测试人员站在不同的角度看待被测试对象。测试团队中,测试人员的思维方式各不相同,配合好,可以很容易发现软件产品各个方面的问题。比如黑盒子测试,适合让一些有使用该类软件经验的人担当,他们在该类软件中的使用经验将对测试带来很好的旁观者的意见,而白盒子测试适合参与编写软件的人,或者对系统代码有一定掌握的人做。两种方法产生的效果不同,前者人员不能陷入别人的思维定式,后者人员却要非常注重细节。在课堂教学和实践项目中,我们发现不同的同学有不同的思维特点,测试人员的思维特征决定了他能够怎样发现缺陷和发现怎样的缺陷。好的测试管理,应该尽量发现每个人的长处,把他们放在合适的岗位上。

  教学实验中的测试项目,同学们是团队完成的,大家感觉测试工作真是需要协作的工作,一个项目的测试结果,往往是整个团队所有人的努力。有一次课堂讨论如何测试一个下棋软件,喜爱软件开发的同学想到最多的是如何测试它的功能点,界面是否正确;有的女同学对外观和美感敏感,提出了改进意见,包括改进界面的舒服度,颜色的搭配等;有的同学平时学棋谱,利用自己的棋艺特长和软件比赛,发现了软件算法的秘密;老师还介绍了这类智能下棋软件的常用算法。大家感觉软件创造非常有魅力。

  我们感觉课堂是一个集体,同学的参与非常重要,而老师主要起着管理和协调的作用。老师在和大家的讨论中发现了很多思想,和学生一起交流学习。这点在测试课堂上特别容易表现出来,因为我们在用评判的思维考察软件产品,而不是单纯的学习了。

  2.2问题的解决是团队精神的体现

  不同人的思维都不一样,这样可能一个项目测试的人越多,测试效果就越好。但是人一多,就产生矛盾和意见。学会尊重他人思想和意见是非常重要的,而管理协调人员的目标是需要让团队意识到这点,找到最好途径完成项目。

  测试团队特别需要学习协调各个方面的关系。测试人员和开发人员发生矛盾是最常见的,测试团队内部也可能会因为一个问题的理解不同而产生分歧。我们在团队中需要尊重每个你的合作伙伴,而不是一味强调自己意见的正确而强制他人接受自己。比如定级一个软件缺陷的级别,可能不同的人就有不同的看法,有人觉得很严重,有人觉得没那么严重,如何能互相体谅的协调好工作,最终拿出合理解决方案是大家需要思考的。例如在讨论一个任务调度的软件测试时,有的同学提出界面的结果数据在颜色上可以改得更漂亮,更丰富,更直观些,这样看起来容易让人明白。而该项目的开发人员觉得自己使用的一致的颜色很好,界面太花俏不符合设计思想,而且修改起来技术上又费点工作,不愿意,有的时候为这样的小问题,大家都会不愉快,处理不好,会很大的影响工作进度。这个时候项目组领导需要权衡利弊,让小组成员最终达到统一的决定。

  一个团队需要一种协调合作精神,问题的解决往往是团队精神的体现。

  3计划是测试成功的保障

  测试工作要做的好,学会条理化自己的工作非常重要。测试管理那几节课,我们专门讲了如何做一个合格的测试经理人。测试管理是软件工程的一个部分,管理的目标是管理你的测试团队,让他最大效率的工作。而做这样的工作过程中,你如何确定你的被测试项目,该项目有哪些特点,你还需要深入了解哪些方面,自己目前的资源有哪些,在确定了测试目标后,怎样确定测试计划,同时怎样实施你的计划,在计划落实的过程中,你如何监督计划的完成。同学们非常喜欢这样的内容。

  但是测试经理的工作又怎样能够做到井井有条,忙而不乱呢?可能需要从大学的学习中养成良好的计划和完成计划的习惯。许多同学发现良好的工作学习习惯特别有助于成功,比如把平时看到的想到的记录下来,把想要做的工作记录下来,给自己定个计划,看自己完成的情况怎样,在这个计划实施过程中,有哪些地方没做到,是否没有毅力,还是说被其他什么事情占用了时间。应该怎样做计划调整,或者对自我行为做调整。

  4培养耐心做测试

  测试工作看起来乏味,因为毕竟没有开发工作那么有挑战和创造性。但是测试工作需要耐心和恒心,在这样的工作中,你能够培养自己的耐力。测试工作需要你付出自己的热情和耐力,如果你为了刺激和新鲜,任何工作都有失去新鲜的时候。只有培养自己甘于寂寞,耐心塌实的心态,方能把路走的长,走的宽。正如前面说的,测试和开发是一个工作的两个方面,它们最终需要的都是个体从业人员的成熟和毅力。

  5总结

  软件测试在软件行业受重视的程度刚刚开始,该方向的教学活动也刚成为一个新亮点,如何能够健康地引导学生们走入这个方向,是值得大家共同探讨的问题。笔者感觉测试教学不光要教会同学们一些专业知识,还要通过教学让大家体会测试工作的行业精神,以及它对个体的行为和思想上的要求。

  参考文献

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

  [2] 柳纯录. 软件评测师教程[M]. 北京:清华大学出版社.

  [3] 段念. 软件性能测试过程详解与案例剖析[M]. 北京:清华大学出版社.

  [4] Paul C. Jorgensen. 软件测试[M]. 北京:机械工业出版社.

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

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

  自我介绍是向别人展示自己的重要途径,是与他人进行沟通、增进了解、建立联系的一种最基本、最常见的方式,是人与人进行沟通的出发点。在面试软件测试工程师时该如何进行自我介绍呢?本文是小编整理的软件测试工程师面试英文自我介绍范文以及关于软件测试工程师面试的知识,仅供参考。

  软件测试工程师面试英文自我介绍范文

  软件测试工程师面试英文自我介绍范文1I’m Cheers.Lee, I’m twenty-six year old, I majored in E-business and with a bachelor degree.I’m single.And I love software testing, as the software quality is vital to the company’s customer, it also could improve the company’s image, so quality is the best policy.We must devote all my energy to assure the software quality.

  The position which I’ve come to apply is senior software testing engineer.I have three years work experience, one year and a half of function testing experience and one year of performance and automation testing experience.I have been reading up on software testing, especially on performance testing and automation testing.I’m quite familiar with performance testing tool LoadRunner, and familiar with automation testing tool QTP.I’m good at developing performance testing script base on C language in web system, and also have good skills in develop QTP script.

  As we all know that software performance has become more and more important, while thousands of the users log in the system or visit the website simultaneously, the problem may occurred, the system crash or the server deny to provide the service to the user, so the performance testing need to be done before the software delivered to our customers.

  We also benefit from the automation testing.There is always a lot of function testing or regression testing need us to finish in a short time.But we do not have enough time and sufficient human resource to complete it, how should we do? So the automation testing is the best solution.It cut down the costs, improve the work efficiency, save our time and energy.Its advantage is not merely as so.

  软件测试工程师面试英文自我介绍范文2Good morning, ladies and gentlemen! It is really my honor to have this opportunity for an interview.I hope I can make a good performance today.I'm confident that I can succeed.Now I will introduce myself briefly.I am 26 years old, born in Shandong province.I graduated from Qingdao University.My major is electronics.And I got my bachelor degree after my graduation in the year of 2003.I spent most of my time on study, and I’ve passed CET-6 during my university.And I’ve acquired basic knowledge of my major.It is my long cherished dream to be an engineer and I am eager to get an opportunity to fully play my ability.

  In July 2003, I began working for a small private company as a technical support engineer in Qingdao city.Because there was no more chance for me to give full play to my talent, so I decided to change my job.And in August 2004, I left for Beijing and worked for a foreign enterprise as an automation software test engineer.Because I want to change my working environment, I'd like to find a job which is more challenging.Moreover,Motorola is a global company, so I feel I can gain a lot from working in this kind of company.That is the reason why I come here to compete for this position.I think I'm a good team player and a person of great honesty to others.Also,I am able to work under great pressure.I am confident that I am qualified for the post of engineer in your company.

  That’s all.Thank you for giving me the chance.

  软件测试工程师面试技巧核心提示:第一个问题:自我介绍(心理学首因效应告诉我们第一印象非常重要),自我介绍最重要的是能够在面试官心目中留下一个好的第一感觉。说得更直白一点是让面试官舒服。但是我发现很多人就是直接简单的介绍了一下过去的经历,但是实际上一方面过去的经历没有很好的让人发现优点。其实面试好比相亲,你想说什么不重要,重要地是人家想听什么。比较好的自我介绍套路是这样:“您好,我叫XXX,很高兴能获得这次...

  第一个问题:自我介绍(心理学首因效应告诉我们第一印象非常重要),自我介绍最重要的是能够在面试官心目中留下一个好的第一感觉。说得更直白一点是让面试官舒服。但是我发现很多人就是直接简单的介绍了一下过去的经历,但是实际上一方面过去的经历没有很好的让人发现优点。其实面试好比相亲,你想说什么不重要,重要地是人家想听什么。比较好的自我介绍套路是这样:“您好,我叫XXX,很高兴能获得这次面试机会,今天来面试是想证明自己是最合适的人选,另一个方面是获得您的认可,结合我过去的工作和学习经历,我自信我能符合咱们公司的认可,接下来您看是我继续介绍我做过的项目,还是您问您关心的问题?”

  第二个问题:项目介绍(项目经验直接决定一个人能否胜任一份工作,企业更应该看重一个人解决问题的思路和具体能力),项目介绍部分最重要的思路是应该先整体后局部,介绍整体的时候要有量化的数据(从项目度量的五大维度:规模,包括项目代码规模,需求规模、用例规模,工作量,进度,质量和成本),然后是整体的测试流程,然后再是角色与职责,接下来是项目中自己的特色,比如做得最好的是、遇到最大的困难时、最差的是,最后是心得体会。

  第三类问题:数据库方面知识,最基本的要求是数据库记录的增删改查(insert、delete、update、select),表结构的增删改查(create、drop、alter、describe)、存储过程、触发器等。

  第四类问题:linux操作系统相关,最基本的目标是熟悉常见的50个命令,比如find命令(-name、-type、-perm、-user、-group、-ctime、-atime)等,熟悉vi、熟悉linux搭建测试环境。比如LAMP环境搭建。

  第五类问题:缺陷相关知识,最基本的是缺陷跟踪的流程(流程的基本要素),整体的流程,最好能在纸上给面试官画出来(尤其是男面试官,从男人好色的角度来看,写得很清楚很重要),缺陷单的属性,至少能列出20个属性,每个属性的意义,如何描述好缺陷单,缺陷单描述的5C原则,比如缺陷重现步骤应该complete.如何描述一个你认为的最经典的bug单。

  第六类问题:用例相关,最基本的包括用例的格式要素,用例设计工程方法论,每个方法要求(方法的背景,操作步骤,优缺点、适应范围,与其他用例方法如何配合),在项目中如何利用测试用例设计工程方法。如何评价、评审测试用例,评审从哪些维度?要设计好测试用例需要哪些方面的知识结构,比如技术、业务、方法。

  第七类问题:软件测试流程,系统测试相关规范和标准的流程:熟悉产品/项目,需求评审,测试需求,测试计划,测试方案,测试用例,预测试,第一轮正式测试、第二轮回归测试、第三轮测试,测试报告,测试总结,测试指南。

  第八类问题,网络相关,最基本的网络基础知识,比如TCP/IP协议。

  第九类问题,测试工具,包括三个大的类型,第一类是性能测试工具、自动化测试工具、测试管理类工具。最起码的要求是熟悉工具的使用。

  第十类问题,给你一个软件,比如QQ、QQ,你如何去测试,这类问题基本的思路是,从软件质量模型、测试工具、测试方法、测试流程、探索式测试等角度先宏观解决,然后再具体微观讲解用例如何设计等。

  第十一类问题,一个优秀/卓越的软件测试工程师应该具备哪些能力与素质,素质方面包括沟通、五心工程师、追求完美等

  第十二类问题,最后一个问题,面试官一般会问,您还有什么想问的吗?还有什么想了解的吗?总体上来说最重要的是留下一个好的近因效应,就好比相亲的时候,分手离开的时候,留下好的最后的印象,基本的思路应该分三种情况,第一种是面试官对你满意,自己也感觉不错的情况下,先表示感谢,然后积极主动的问题,比如,非常感谢您给的这次机会,但是我还是想问,如果我有下一轮面试,我想知道知道是什么时候,我应该再做哪些方面的准备。第二种情况是面试官和自己感觉都一般般,感觉自己是鸡肋,这个时候说不说很重要,基本的套路是,非常感谢面试官给的这个机会,坦白地说我对自己今天的面试表现不是非常满意,还可以表现得更好,但是如果我还是非常想得到这个机会,您能否给我一些建议。第三种情况是面试情况非常糟糕,这种情况下,很少有人能说出感谢,但这恰恰体现一个人的风度。基本的思路是,不管怎么样,还是得感谢您给的机会,让我自己认识到自己的不足,坦白地说我离这个岗位的要求还有些距离,但是我还是想知道,如果将来我还想来咱们公司面试,您能否给点具体建议。

  总结,面试是一个相亲的过程,相亲的成败取决于很多要素,但是好的、充分地准备,能够让我们更加从容地和主动的去面对压力与挑战,而不是简单地把自己变成超市里面的菜,供人挑选。

  软件测试工程师面试经验总结首先说明我算上找实习的时候的面试总共就经历了不到5次,没有多少经验,就在网上和书上摘录了些我认为比较重要的,分享给大家,希望各位都能找到一份适合自己的好工作。

  1.笔试题

  对于笔试,有的公司笔试题是不区分开发和测试岗位的,测试人员除了要掌握好测试的基本知识外最好也是有编程基础,具有尽量多的计算机的知识,像操作系统的基本知识(线程等),数据库的基本操作(增删改查,关联查询,授予权限等),数据结构的知识(像二叉树的前序、中序、后序查询)。

  2.面试

  如果在笔试中没有考测试的基本知识,那在面试中是肯定要被问到的。面试前一定要做好准备,可以在网上搜一下关于这个公司的笔试题和面试题,以供参考。如果时间充裕可以找一本自己能看的进去的讲软件测试的书,认真的有侧重点的看看。软件测试的几个主要的阶段,不一定死记硬背能用自己的话说出来也可以或者能举例说明,那几个主要的白盒和黑盒的测试方法能熟练的应用到实际的例子中,等价类划分和边界值分析经常被问到。

  每个公司做的项目都不一样,最好先了解下要应聘的那家公司主要是做哪方面的,比如对美外包的公司就要求英语水平,能看懂英文文档甚至能同外国人交流,最好能提前先看些英语的文章,准备下英文的自我介绍,临时提高下英语水平。

  我被问到的面试题(答案仅供参考)

  1.为什么不考研?

  2.想要一份什么样的工作

  3.做软件测试人员需要具备什么样的职业素质

  (1) 专业技能,包括测试的技能和开发的技能

  (2) 积极的态度

  (3) 良好的沟通能力

  (4) 细心

  (5) 耐心

  (6) 团队意识

  4.对他们公司的了解

  5.再就是些工作地点能否接受,有没有男朋友之类的基本问题

  以下是针对实习项目问的问题(答案仅供参考)

  6.缺陷报告有几个状态,都包括哪些内容

  状态:新建,打开,修复,关闭,重复的bug,无效的bug,被拒绝的bug,其他 内容::标题、模块名称、项目名称、测试环境、重现步骤、期望结果、实际结果、严重级、优先级、发现人、接收人和附件(截图,说明等)。

  7.有一个文本框,只能输入0-5个字母的组合,如何进行测试

  从字符串的长度考虑,按照边界值方法设计测试用例

  从字符串的长度考虑,按照边界值方法设计测试用例

  从字符串的组成内容考虑,按照等价类划分方法设计测试用例

  8.简单的说一下性能测试和压力测试

  9.写过自动化测试的脚本吗

  10.我实习的项目是一个金融的网站,技术的面试官问我,商品的价格是左对齐还是右

  对齐(对于这个问题我也不知道为啥会被问到,有什么具体的含义,猜想可能是判断我的项目经验是否真实)

  下面是我网上摘录的一些可能被问到的面试题

  1.您认为做好测试用例设计工作的关键是什么?

  答:白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果

  黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题

  2.在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

  3.谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面

  4.什么是软件测试。

  5.Alpha

  测试与beta 测试的区别。

  6.测试结束的标准是什么?

  7.测试项目:杯子

  需求测试:查看杯子使用说明书

  界面测试:查看杯子外观

  功能度:用水杯装水看漏不漏;水能不能被喝到

  安全性:杯子有没有毒或细菌

  可靠性:杯子从不同高度落下的损坏程度

  可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用

  兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等

  易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

  国际化:杯子上的图案有没有触犯到某个国家或宗教的禁忌

  用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

  疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等

  压力测试:用根针并在针上面不断加重量,看压强多大时会穿透

  跌落测试: 杯子加包装(有填充物),在多高的情况摔下不破损

  震动测试: 杯子加包装(有填充物),六面震动,检查产品是否能应对恶劣的铁路公路航空运输

  测试数据:测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、等价类划分法、因果图法、错误推测法、边界值法等方法

  期望输出:该期望输出需查阅国标、行标以及使用用户的需求

  说明书测试: 检查说明书书写准确性

  给大家提三个产品:1.手机 2.电饭锅 3.电梯

  8.图书(图书号,图书名,作者编号,出版社,出版日期)

  作者(作者姓名,作者编号,年龄,性别)

  用SQL语句查询年龄小于平均年龄的作者姓名、图书名,出版社。

  9.软件测试分为几个阶段

  各阶段的测试策略和要求是什么

  10.您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?

  11.请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程

  12.您认为做好测试计划工作的关键是什么?

  13.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

  14.测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

  答:软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。

  测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)

  15.为什么要在一个团队中开展软件测试工作?

  答:因为没有经过测试的软件很难在之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将时,从测试报告中得出软件的质量情况。

  软件测试工程师-个人简历个 人 简 历

  基本信息:

  姓 名:

  出生年月:1991年7月

  工作年限:2年

  婚姻状态:未婚

  电子邮箱: 性 别:男 毕业学校:广东建华学院 学 历:大专 专 业:计算机专业 手 机:

  专业技能:

  1、熟悉软件测试理论,软件测试流程,编写测试用例等;

  2、熟练应用黑盒测试的方法,如边界值法、等价类法、场景法等;

  3、掌握自动化测试工具QTP、性能测试工具LoadRunner的基本使用,如录制脚本,参数化设置,脚本优化等;

  4、熟悉软件测试的管理工具,如BugFree

  缺陷管理工具、SVN版本控制、MindManager 思 维导图等工具的使用;

  5、熟悉Oracle和MySQL数据库的基本操作,如增、删、查、该等命令的使用;

  6、熟悉Linux操作系统的基本操作;

  7、对C语言有一定的了解,如9条基本语句、数组、指针等等的使用;

  项目经验:

  项目一

  项目名称: 奔腾出租车

  运行环境: Linux + MySQL + Apache

  项目概述: 本系统是一套功能全面的出租车管理系统,通过该软件可以让出租车公司内部及时准确地采集各种数据信息,处理高速化和网络办公自动化。实现对出租车 公司司机的信息记录,操作,出租车管理,提供精确查询等多种查询方式。主 要功能模块有:首页、基本信息设置、任务管理、统计图表、辅助工具、帮助 菜单、用户信息管理等。通过规范化管理来掌握车辆信息,处理车辆调度,将 很大程度上解决出租车公司在工作上的管理难度,让车管理更上一个台阶。 责任描述: 1、根据项目需求文档进行需求分析,写出需求点;

  2、针对责任模块编写有效的测试用例;

  3、搭建测试环境,保证测试出的数据真实可靠;

  4、执行测试用例,用BugFree提交Bug并跟踪其状态;

  5、进行回归测试;

  6、编写测试报告。

  项目心得: 对软件测试有了更深层的理解,当编写用例时,要尝试新的技术,新的思维,往往Bug就出现在意想不到的地方;明白了回归测试的重要性,因为偶尔会有些模块在上一版本没有出现问题,但在修复某个Bug时却出问题了,所以测试时需要考虑全局,不要只局限于某个小模块。

  项目二:

  项目名称: 金华酒店管理系统

  运行环境: Linux + MySQL + Apache +PHP

  项目概述: 金华酒店管理系统主要应用于中小型酒店,通过该软件可以方便快捷的管理酒店,使酒店的工作质量和效率提高。软件采用先进的计算机网络通信技术,改变了酒店业务模式,大大提高了工作效率。本系统的功能包括房间状况管理、添加房间信息、维修管理、退房管理、客户入住等,是为了不让人工繁琐去操作,而设计的一个管理系统。

  责任描述: 1、测试软件是否达到需求规格书的要求,包括:各个功能点是否以实现,业务流程是否正确;

  2、编写测试用例,如用边界值法、等价法、错误推断法等方法编写;

  3、搭建测试环境(按照说明书搭建);

  4、执行测试用例,用BugFree提交Bug并跟踪其状态。

  项目心得: 测试的规范化是及其重要的。测试时要注意Bug的群集现象,因为往往百分之八十的问题都发生在百分之二十的模块当中。

  项目三:

  项目名称: 科达薪水助手

  运行环境: Linux + MySQL + Apache +PHP

  项目概述: 本系统基于B/S架构,主要用来支持企业薪酬管理,方便企业管理员工信息,统计日常支出,员工薪酬管理等等。主要功能模块有员工信息管理、部门管理、工资管理、收支统计、系统设置、辅助工具、薪酬报表等。本系统的特色就是把员工的信息和薪酬等信息整合在一起,更方便快捷的操作,一套好的工资管理系统,有助于建立科学有效的薪酬体系。

  责任描述: 1、编写测试用例;

  2、执行测试用例,用BugFree工具提交Bug,并跟踪其状态。

  项目心得: 对黑盒测试的各种方法的应用更加得心应手了。

  工作经历:

  2012/08—2021/01 创拓达科技有限公司 软件测试工程师 自我评价:

  本人性格随和,适应能力强,有较强的学习能力,能独立分析和解决问题。能快速融 入到团队中去,工作积极上进,对于领导分配的任务认真完成。

  软件测试工程师面试英文自我介绍范文的人还看了:

  1.软件工程师面试自我介绍范文

  2.应届生软件测试面试自我介绍范文

  3.软件测试面试自我介绍范文

  4.软件测试面试自我介绍

  5.软件测试工作面试自我介绍范文

  6.软件测试工程师简历自我评价

  7.软件测试工程师的自我评价

  8.计算机专业英文自我介绍范文

  【关键词】 软件工程 软件测试 敏感性测试 GJB2725A-2001

  随着经济的不断发展,高科技技术已经得到快速的发展,软件项目是高科技技术重要组成部分。各个行业都离不开软件,无论是企业的管理系统还是厂房内的产品生产加工系统都需要软件来进行控制,软件过程逐渐成为企业正常运行的灵魂,软件的开发和设计逐渐成为重点研究对象。一个软件要想投入到正常的使用中,必须对该软件进行测试,对软件的功能和性能进行检测,从而确保在投入到实际运行中不会出现过多的问题。在此背景下,软件测试行业开始兴起,其实现的功能主要是利用测试工具对软件产品进行功能和性能的测试,并对测试方案中的测试结果进行分析,分析结构的真实性以及评估可能出现的问题。本文对软件敏感性测试的深入研究具有一定的现实意义。希望通过本文对软件敏感性测试的深入研究,一方面为软件敏感性测试研究做出理论贡献,另一方面希望能够引起相关人员对软件敏感性测试的研究。

  1 软件敏感性测试的概述

  1.1 软件测试的概述

  软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

  1.2 敏感性测试的概述

  GJB2725A-2001中指出敏感性是指不同条件下和不同特定参数设置值对软件功能结果的影响。敏感性测试是为了发现在有效输入类中可能引起某种不稳定性或不正常处理的某些数据的组合而进行的测试,敏感性测试一般需进行:

  (1)发现有效输入类中可能引起某种不稳定性的数据组合的测试;(2)发现有效输入类中可能引起某种不正常处理的数据组合的测试。测试过程能发现微小的,甚至是不起眼的错误。

  软件的敏感性主要体现在两个方面:环境条件和特定参数设置。

  环境条件:相同软件在不同的软件环境下所得到的结果可能会不一样,如果软件所要实现的功能结果受外面环境和条件影响比较小,则敏感性低,而如果软件所要实现的功能结果受外面环境和条件影响比较大,则敏感性较高。例如:不同效率对软件运行的影响,总有人强调视频压缩软件对频率的敏感性,P4 CPU的效能较高,其实只是一个表面现象,一个最核心的问题是,硬件对指令效率的影响,软件应用某指令达到的效能怎么样,究竟怎么使用CPU的指令,实际上,对于某些如视频压缩之类的软件,应用了大量SSE2指令,且其它操作并不是流水线敏感那种,本身同频率P4跟K8执行SSE2代码效能是类似的,在这里同频性能其实一样,对内存的访问量很大但随机性差,受延迟影响不大,K8的内存控制器也没带来多少好处。于是,有了执行某类软件同频效能相对接近的情况,这时同PR的A64要比P4慢,频率只是表象,关键是效率的变化。包括L2容量在内,许多东西都影响了CPU的效能,但是,这些因素对效能的影响是不一样的,运行某些软件时,可以区分这些因素,而某些软件则不大受影响,频率是CPU的,固定的,而效率则受软件影响,可以得出:性能=频率×效率。

  特定参数设置:如果稍微改变这些特定的参数就对软件的运行影响比较大,则认为该软件的敏感性很大,相反,如果稍微改变这些特定的参数就对软件的运行影响比较小,则认为该软件的敏感性很小。下文在描述软件敏感性测试的应用时,会定性地分析参数的具体影响。

  2 软件敏感性测试分析方法

  2.1 敏感性测试分析方法的概述

  敏感性测试分析方法是不确定分析方法的一种。敏感性测试分析是指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术。其实质是通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。敏感性测试分析是分析不同条件和不同设置数值对结果变化的影响,敏感性测试分析是体现软件运行结果不确定性影响的重要依据,是软件功能与性能评估过程中不可或缺的一部分。由于软件或者软件模型在测试的过程中随机性很大,因而影响测试结果的因素也很多,比如运行的环境和一些数据,因此在这种条件下有必要对环境条件和参数进行敏感性测试分析,从而得出对软件设计重要作用的信息,以及参考价值,从而为软件的不确定性结果提供理论依据。

  2.2 敏感性测试分析的作用

  敏感性测试分析是软件敏感性测试的重要部分,是软件项目能否成功的关键因素,因此敏感性测试分析对于软件项目至关重要,敏感性测试分析的作用主要体现在以下几个方面:

  (1)确定影响软件项目的敏感因素。寻找出影响最大、最敏感的主要变量因素,进一步分析、预测或估算其影响程度,找出产生不确定性的根源,从而采取相应有效措施。(2)计算主要变量因素的变化引起项目经济效益评价指标变动的范围,使决策者全面了解建设项目投资方案可能出现的经济效益变动情况,以减少和避免不利因素的影响,改善和提高项目的投资效果。(3)通过各种方案敏感度大小的对比,区别敏感度大或敏感度小的方案,选择敏感度小的,即风险小的项目作投资方案。(4)通过可能出现的最有利与最不利的经济效益变动范围的分析,为投资决策者预测可能出现的风险程度,并对原方案采取某些控制措施或寻找可替代方案,为最后确定可行的投资方案提供可靠的决策依据。

  2.3 敏感性测试分析的步骤

  项目的实施需要一套完整的步骤,对于要求非常严格的软件项目更是如此。软件项目的每一个步骤基本都是按照预期的预计方案进行,传统的敏感性测试分析的步骤主要包括两个方面:

  (1)选取不确定因素,分析不确定因素影响程度;(2)找出敏感因素,然后针对敏感因素提出相应的解决方案,确保软件正常运行。然而,随着软件测试技术的不断创新,敏感性测试分析的方法和步骤得到进一步的更新,如今的敏感性测试分析步骤越来越严谨。目前敏感性测试分析的步骤主要包括以下几个方面:(3)确定敏感性测试分析指标。敏感性测试分析的对象是具体的软件技术方案及其反映的软件可行性。(4)计算该软件技术方案的目标值。一般将在正常状态下的软件可行性评价指标数值,作为目标值。(5)选取不确定因素具体情况选取方案。在进行敏感性测试分析时,并不需要对所有的不确定因素都考虑和计算,而应视方案的变化可能性较大,并对软件可行性目标值影响作用较大的因素。例如:产品售价变动、产量规模变动、投资额变化等;或是建设期缩短,达产期延长等,这些都会对方案的经济效益大小产生影响。(6)计算不确定因素变动时对分析指标的影响程度。若进行单因素敏感性测试分析时,则要在固定其它因素的条件下,变动其中一个不确定因素;然后,再变动另一个因素(仍然保持其它因素不变),以此求出某个不确定因素本身对方案效益指标目标值的影响程度。(7)找出敏感因素,进行分析和采取措施,以提高软件技术方案的抗风险的能力。

  2.4 软件敏感性测试分析流程

  在对软件敏感性测试分析流程阐述过程中,以某软件敏感性测试分析流程为为例,对软件敏感性测试分析流程进行全面、具体的分析。软件敏感性测试分析时,首先选择计算方法,确定是采用简易的敏感性测试分析,还是单个目标随机抽样方法,或者是采用混合法。然后根据不同的分析方案,进行下面的步骤,例如如果选择“简易的敏感性测试分析”,则需要计算全体目标的敏感度,而如果采用单个目标随机抽样方法,则需要计算单个目标的方差,相应地,如果采取混合法,则需要计算少量最敏感目标的,具体流程图,如下图2所示。

  3 软件敏感性测试的应用

  为了更好地研究软件敏感性测试,下面以ANSYS软件为例介绍软件敏感性测试。ANSYS软件是融结构、流体、电场、磁场、声场分析于一体的大型通用有限元分析软件。由世界上最大的有限元分析软件公司之一的美国ANSYS开发。它能与多数CAD软件接口,实现数据的共享和交换,如Pro/Engineer,NASTRAN,Alogor,I-DEAS,AutoCAD等,是现代产品设计中的高级CAE工具之一。

  ANSYS继续Workbench主旋律,提供用户可供选择的全自动或个人控制的强大分析软件。在核心的网格处理技术上有十足的增强,在ANSYS Workbench各个应用程序间共享网格。另外,双向参数互动的CAD接口的稳健性也得到了提高。ANSYS ICEM CFD 10.0通过混合网格剖分新功能和CAD模型细节处理功能,提供了完整的一系列网格划分工具以模拟真实世界。

  4 软件敏感性测试的权衡

  4.1 敏感性测试与鲁棒测试

  敏感的测试能发现较多的问题,但任何一点微不足道的改动都将导致测试用例及执行过程的更改。鲁棒测试(Robustness Testing-健壮性测试)又称为容错性测试(Fault Tolerance Testing),用于测试系统在出现故障时,是否能够自动恢复或者忽略故障继续运行。为了使系统具有良好的健壮性,要求设计人员在做系统设计时必须周密细致,尤其要注意妥善地进行系统异常的处理。测试过程能够容忍较多的差别,不会影响测试用例的失败。在自动化测试时,鲁棒测试可以较容易通过执行,也就减少了意外情况对测试过程的影响,但会导致发现问题的能力下降,甚至放过应该发现的问题。

  应当在测试的敏感性和测试的鲁棒之间进行权衡。对大量的自动测试用例而言,过多的敏感性比缺少敏感性更会反面影响失败分析工作。如果运行一组敏感的测试用例,那么有可能其中多数的测试用例由于相同的原因而失败。在这种情况下,每个失败的测试用例都指示相同的错误,但测试人员只是希望获得不同的错误及错误的差异,并不需要重复相同的错误报告。

  4.2 敏感性测试与强度测试

  强度测试的一个变种就是敏感性测试。在程序有效数据界限内一个小范围内的一组数据可能引起极端的或不平稳的错误处理出现,或者导致极度的性能下降的情况发生。此测试用以发现可能引起这种不稳定性或不正常处理的某些数据组合。强度测试检查程序对异常情况的抵抗能力;是检查系统在极限状态下运行的时候性能下降的幅度是否在允许的范围内。强度测试总是迫使系统在异常的资源配置下运行。因此把强度测试可以看作敏感性测试的一个延伸。

  一、引言

  为了培养一批适应社会经济发展需要、创新能力强的高质量工程技术人才,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的图书管理系统的设计与开发,针对该系统按照软件测试国家标准编写软件测试的相关文档,并利用测试工具完成系统的各项测试。此外,还邀请国内知名软件测试公司的工程师进行专题讲座,并利用暑期组织学生到软件公司进行软件测试实习。

  通过一系列的软件测试课程教学改革,学生的软件测试实践能力得到了极大的提高。为了帮助学生更好地掌握软件测试的理论和技术,扩大学生的视野,我们还开发了基于“卓越计划”的软件测试课程网络资源平台。该平台的内容包括7大模块即:软件测试课程知识体系模块、软件测试工具模块、软件测试实训案例分析模块、职业资格考试信息模块、软件测试试题库模块、在线测试模块、答疑与讨论模块。通过该平台的运行,增强了学生与学生之间、学生与教师之间的互动,极大地调动了学生学习软件测试的积极性,激发了学生的学习热情和兴趣,也收到了很好的效果。从开展软件测试课程教学改革以来,近三年软件工程专业毕业生从事软件测试的人数分别为8人、27人和39人。从企业反馈的情况来看,学生软件测试基础知识掌握得比较扎实,能熟练运用软件测试技术和工具完成软件测试任务,并能正确书写软件测试的相关文档。

  关键词:UML 软件测试 卓越工程师

  一、软件测试教学现状

  由于软件测试技术发展起步比较晚,测试人员数量少,测试重视度不高,测试费用投入较少,从而导致我国的软件测试行业上在理论和实践上都比较滞后。随着软件行业蓬勃的发展,近年来,软件测试技术也得到了迅速发展,全国高校都陆续成立了软件学院并开设了软件工程相关专业。2010年6月,教育部启动了“卓越工程师教育培养计划”以促进工程教育改革与创新。在这样的契机下,我校结合软件工程专业教学的需要积极申报了卓越工程师培养计划,并得到了江苏省教育厅的立项,随之软件测试这门课程也得到校级优秀课程建设的支持。不过该课程面临如下问题:

  第一,软件测试相关课程的老师缺少大规模软件开发的经验,而且对软件公司关于软件测试的需求目标并不是很明确。第二,软件测试的教学对象是大三第一学期的学生,他们对软件设计和软件开发还缺少系统的编程训练,同时也缺少系统的项目开发经验,而且学生对测试的重要性理解不够使得学生普遍喜欢学习开发和编程技术,而轻视软件测试技术。第三,由于高校教学每门课程基本上都是由不同的授课老师来完成导致软件开发和软件测试的课程衔接上存在问题,软件开发和测试的授课内容基本脱节,并导致软件测试课程所需的教学测试用例缺少,需要再花时间来编写,占用了软件测试的教学时间。第四,目前软件设计技术已经由面向过程转向了面向对象设计,目前以统一建模语言(UML)为基础的软件设计技术已经普及,但以UML为基础的软件测试技术(UML Testing Profiling,UTP)远未出现在当今高校的软件测试教学中,也是就是说软件测试的教学内容严重滞后。

  因此,本文通过如何提高软件开发和测试的项目经验,如何提高学生对软件测试的重要性,如何将软件设计和软件测试相结合来提高软件测试这一门课程的教学质量。

  二、软件测试教学方案改革

  1.结合卓越工程师培养方案提升软件测试课程教学质量。卓越工程师培养方案以产品研发、运行、维护直到废弃的全生命周期为载体,建立一体化的教学体系,为学生提供实践、理论课程有机关联的教学情景,整个过程与软件开发的周期不谋而合,该方案“以人为本”,有助于高校实现“大工程”的培养目标,从而实现培养具有职业道德,工程伦理等方面的学生。同时该方案“边做边学、边学边研、边研边创”,有助于高校改革软件工程专业课程体系,把自然科学知识,工程科学基础,专业知识技能工程能力有机融合到一起,全面实施工程素质教育。

  2.将软件开发与软件测试课程相结合的一体化教学课程。美国麻省理工学院(MIT)和瑞典的查尔摩斯工业大学等得出了CDIO工程教育模式:构思(Conceive)、设计(Design)、实施(Implement)和运行(Operate)。该模式的主旨是以产品研发、运行、维护直到废弃的生命周期为载体,以一体化教学为目标。为此,借鉴CDIO的教学模式,我们改进了软件工程的教学模式,强调设计规范和详细的实践教学方案,对实施过程阶段考核,并对实践教学的考核评估机制进行改革,构建了多元化、复合型的实践教学考核评估机制。在软件开发教学中从需求分析和详细设计就使用UML对软件开发进行建模,并预留了对后期软件测试的用例设计。

  3.以项目为主导增加学生软件开发经验。不论是CDIO工程教育模式还是卓越工程师的教学培养方案,都是以工程化的教学为主,因此,为了提高学生的工程化实践能力和软件开发能力,学校积极与国内外的大型软件公司合作,比如达内,微软和印度的NIIT公司,对学生了进行专项的训练。通过实践项目的训练使得学生掌握了面向对象软件开发的基本流程,熟悉了使用用例图表达需求分析,熟悉了使用类图表达整个软件系统的静态模型,掌握了使用序列图和交互图来表达用例的动态行为,掌握了使用活动图和状态图来表达软件的状态变化,同时也学会了如何设计软件测试用例,如何编写软件测试计划,如何搭建软件平台和编写相应软件测试驱动和桩模块。

  4.软件开发和软件测试以UML及UTP指导的工程化教学思想。由于软件测试产品中存在着压力负载性能,时间性能、安全测试性能等约束,使得UML无法直接支持这些约束的测试建模,UTP就是对UML在软件测试建模进行扩展得到的。它不仅可以支持软件测试的用例设计、结果可视化、结果规格说明,还可以软件测试过程和构造以及软件测试结果进行文档化,而且支持从单元测试,集成测试,系统测试和用户测试等各个级别的测试建模。因此,在UML软件建模和需求分析课程中强调了与UTP结合,并从软件的需求分析,概要设计和详细设计中不仅体现了UML软件建模的手段,而且提前考虑了软件测试的需求,对测试方法和管理办法及测试用例进行了详细的分析,并对软件测试的管理方法,测试用例,测试环境进行了详细的建模分析。

  5.加强软件测试课程体系的建设和师资的培养。在软件开发和软件测试使用UML和UTP进行一体化的授课。第一,提高对软件测试课程的教学重视度,提高学生对软件测试的重视度,让教师在软件开发中做软件测试教学,让学生在软件开发中学软件测试。第二,及时引进办国内处软件测试的教学教材。选择质量高、知识内容新颖的软件测试的教材,并尽可能的使用配套对学实验指导系统培训实验指导书的教材。从大二开始有规划地对学生进行软件开发和测试培养,并以软件测试项目为主线,在大二第四学期和大三第四学期开设的软件开发课程中,比如JAVA,等课程中都安排软件测试的教学内容,并以软件开发项目为中心使学生掌握软件测试工作中需要的技能,比如黑盒测试中的等价类划分法,边界值分析法等,白盒测试中的控制流测试方法,基本路径测试技术等方法。熟练使用相关的测试工具,比如黑盒测试技术的WinRunner等,白盒测试技术的CPP unit和Junit等工具。第三,提高教师队伍的软件测试素质,有计划的安排教师到软件公司参与实践,增强软件测试的案例分析能力。

  三、结论

  软件测试技术在软件行业越来越显得很重要,软件测试人员在整个软件开发中的地位也越来越作用明显,然而国内整个高校对软件测试的教学课程体系明显有待提高。本文通过结合我校的实际情况,对软件测试的教学人员、教学方法和教育理念进行了梳理,并提出了五条合理化的提高软件测试教学的可行性建议,对于国内开展卓越工程师的学校提供了参考。

  参考文献

  [1]蓝新生,封二强,郑军.基于UML Testing Profile的软件测试过程浅析[J].环境与可靠性,2015(8):49-51