时间:2022-07-16 08:58:49
导言:作为写作爱好者,不可错过为您精心挑选的1篇浅谈软件测试工程师的工作,它们将为您的写作提供全新的视角,我们衷心期待您的阅读,并希望这些内容能为您提供灵感和参考。
摘要:为了培养创新能力强、适应社会经济发展需要的软件测试人才,本文结合常熟理工学院《软件测试与质量保证》课程建设经验,以中小企业对软件测试人才的需求为导向开展实验教学改革,分别从实验教学改革基本思路、教学内容组织等方面探讨应用技术大学建设背景下软件测试课程实验教学改革措施。
关键词:软件测试;软件质量保证;教学改革;软件测评师;实验教学
一、引言
随着我国软件产业迅速发展,企业面临着开发高质量软件系统的巨大压力,软件测试、软件质量保证受到越来越多的重视。软件企业对承担软件测试、质量保证工作的软件测试人才需要剧增,软件测试工程师的职业价值、发展前景得到前所未有的提升。为此,国内高校开设了软件测试相关课程。但是,由于其重理论、轻实践的教学模式使得培养出的学生软件测试实战能力差,导致大量毕业生应聘软件测试相关职位时受到冷遇。
为培养创新能力强、适应社会经济发展需要的软件测试人才,《软件测试与质量保证》实验教学亟需改变传统的教学理念,改进教学方法,更新教学内容。笔者结合自身教学科研和工程实践经验,分别从改革思路、实验教学内容设计等方面,论述常熟理工学院《软件测试与质量保证》实验教学改革的措施和体会。
二、实验教学面临诸多挑战
笔者调研国内高校软件测试课程的建设情况,发现普遍存在重理论、轻实践的教学倾向,实验教学环节存在诸多问题:
1.企业对软件测试工程师的能力要求是综合性的,要求软件测试人员具有软件项目经验,具备软件测试、软件质量保证知识,能够独立开展软件测试工作。但是,国内高校教学计划制定时片面强调软件测试的作用,对软件测试与软件质量保证之间的天然联系缺乏理解,对软件质量保证相关实验的重视程度,课时安排存在严重不足。
2.目前,《软件测试与质量保证》实验教材选择面临无书可选的尴尬局面。课程实验设计只能全凭任课教师把握,使得实验教学过程中存在较多风险。
3.国内高校在实验设计方面,多以基础性实验为主。这种单一的实验设计方式,难以适应软件测试工程实践能力培养的需要。
三、实验教学改革措施
在应用技术大学建设驱动下,以中小企业对软件测试人才的需求和软件测试工程师认证大纲为导向,我们整合已有的校企合作课程资源,按照Daniel Galan软件质量保证框架组织实验教学内容,采用项目驱动的案例教学法开展实验教学,让学生在实验实践中加深对软件测试与质量保证专业知识的理解,培养学生软件测试实践能力。
(一)教学改革基本思路
软件企业对软件测试人才的需求是软件测试课程改革的源动力和驱动力,软件测试相关的从业资格认证是学生入职的敲门砖。为此,在应用技术大学建设背景下,我们以切合中小企业对软件测试人才的需求为导向,结合全国计算机等级考试软件测试工程师认证、全国计算机技术与软件专业技术资格考试软件评测师认证的考试大纲要求,选择朱少民老师编写的《全程软件测试》[1]和NIIT培训教程《Software Testing and Quality Assurance:Student Guide》[2]作为课程教材,按照Daniel Galin软件质量保证框架组织教学内容。Daniel Galin软件质量保证框架[3]指出软件质量保证是建立企业软件质量文化所需的一些列活动的集合,认为软件测试是一种典型的软件质量保证措施,软件测试的目的是为了发现潜在的软件缺陷,软件测试工作贯穿软件项目的始终。按照Daniel Galin软件质量保证框架组织课程内容有助于保持软件测试与软件质量保证之间的内在联系,符合软件企业软件测试与质量保证的最新经验。
(二)实验设计
如何在有限的实验课时内,最大限度地加深学生对软件测试、软件质量保证的理解,增强其软件测试实践能力,是实验教学的主要任务。我们设计了导入性实验、基础性实验、创新项目实践三种类型的课程实验。导入性实验要求学生应用已修课程(包括程序设计、数据库设计、软件工程等)知识进行软件调试,在软件调试过程中理解软件调试与软件测试、软件质量保证之间的关系,实现到本课程学习的过渡;基础性实验目的在于强化课程基础理论、原理的理解,让学生在实验中理解所学知识,掌握软件测试工具的使用;创新项目实践以课程实训项目为载体,为学生运行所学知识解决软件测试实践过程中涌现的各类问题,锻炼学生的动手实践能力、自主学习能力,从而提高学生的工程实践素养。
1.导入性实验。软件测试的目的是发现软件系统中潜在缺陷,而缺陷的解决则通过软件调试手段实现。为此,设计导入性实验“软件调试”。本次实验以员工工资核算软件Employee作为实验对象,要求学生发现Employee中人为注入的软件缺陷,然后应用Java调试器的断点调试功能,结合回归测试手段修订所发现的缺陷。
通过导入性实验,学生体验了改正软件缺陷的艰辛,在教师引导下思考如何发现软件缺陷、如何提高软件质量。教师适时点拨学生,指出发现软件缺陷是软件测试工程师的职责,软件测试工程师需运行软件测试方法、技术和工具才能发现潜在的软件缺陷。教师进一步启发学生:提高软件质量需要开展包括软件测试在内的各项软件质量保证工作。
2.基础性实验。基础性实验旨在加深学生对课程基本概念、原理的理解,让学生在动手实践中加深对基础概念、原理的理解。课程安排8次基础性实验,实验2、3、4和5属于软件质量保证实验,6、7、8和9是软件测试实验。
(1)实验2:软件度量实践。实验2关注软件度量问题,介绍软件规模、项目工作量和软件成本之间的关系,要求学生掌握软件规模估算、工作量估算和成本估算的方法和过程。通过本次实验,学生可以应用USC CoCoMo II进行软件成本估算。(2)实验3:基于Microsoft Project的软件项目管理。软件项目计划及进度管理,是软件质量保证中重要的管理部件,也是开展软件测试活动的前提。实验3要求学生使用Microsoft Project建立软件项目计划、运用跟踪甘特图追踪项目进度,等等。(3)实验4:版本控制软件CVSNT。CVSNT是当前最流行的版本控制系统,是中小企业进行版本控制的利器。实验4讲解CVSNT的安装和使用,要求学生掌握CVSNT的操作技巧。(4)实验5:BugFree软件缺陷管理。软件缺陷管理贯穿软件测试项目的始终,记录软件缺陷从发现、修复直至关闭软件缺陷的全过程。实验5介绍开源缺陷管理软件BugFree的软件缺陷管理思想,要求学生掌握BugFree安装与配置、软件缺陷管理等技能。(5)实验6:软件静态测试。软件静态测试是软件测试技术中发现软件缺陷效率最高的技术。我们安排“软件静态测试”专题讲座,讲解软件制品阅读、静态分析的技巧,还介绍如何运用CheckStyle、FindBugs等静态测试工具分析程序源代码、目标程序中潜在缺陷。本次实验有学生利用课后时间,自主实践。(6)实验7:JUnit单元测试。实验7介绍单元测试工具JUnit的使用,要求理解JUnit单元测试框架,掌握单元测试脚本的编写技巧。本次实验还推荐学有余力的学生自学JMock,综合应用JUnit和JMock进行对Java应用系统进行集成测试。(7)实验8:软件功能测试。软件功能测试是检验目标软件是否正确实现了客户需求,是软件测试执行的重要内容。实验8要求学生使用QuickTest Professional(简称QTP)对机票预订系统进行功能测试。本次实验要求学生能够独立完成功能测试脚本的录制和编辑,掌握QTP检查点设计的方法及技巧。(8)实验9:软件性能测试。实验9介绍软件性能的概念和原理,讲述如何运用HP Mercury LoadRunner对Web系统进行性能测试,让学生在实验过程中理解虚拟用户技术,掌握基于LoadRunner的性能测试技术的过程及技巧。此外,本次实验要求学生利用课余时间使用开源的性能测试工具JMeter进行软件性能测试。
3.创新项目实践。为了培养学生的工程实践能力,我们从学生课程项目、毕业设计、大学生创新项目、开源软件项目等中筛选出软件规模适中的软件系统作为课程实训项目,让学生对课程实训项目进行系统化的软件测试,要到学生主动动手实践,在软件测试项目实践中培养工程素养。
在课程教学过程中,我们还加强对基础扎实、动手能力强、思维活跃的学生的培养,推荐这些学生参与到教师科研项目中,为学生在科研项目中积累软件评测经验。
四、结束语
《软件测试与质量保证》通过十余年的建设已形成了较完善的课程体系,十多轮的授课实践积累了丰富的教学经验,课程实验教学体系也日趋完善。
当前,我校正转型应用技术大学,这将对本课程的教学内容、教学方法、教学手段等提出更多、更高的要求。鉴于此,本课程教学团队正尝试通过校企合作模式开展课程教学活动,编写校本教材,多措并举提升学生软件测试能力。
摘要:当前软件测试工程师绩效考核存在的问题主要表现在:考核定位模糊并存在偏差,重考核、轻管理,重结果、轻过程,考核主体单一,企业管理者没有承担起绩效管理的责任,绩效考核指标不全、标准不明。测试工程师绩效考核要明确考核的目标,突出测试人员在考核中的主体地位,构建一体化绩效管理体系。
关键词:测试工程师;绩效管理;体系
软件测试工程师绩效考核是IT企业根据发展战略和使命要求,对测试工程师的工作业绩进行考察和评估,包括工作行为和工作效果。随着中国软件业的迅猛发展,软件产品的质量控制与质量管理正逐渐成为企业生存与发展的核心。为了保证软件在出厂时的“健康状态”,几乎所有的IT企业在软件产品前都需要大量的质量检测工作。测试工程师作为软件质量控制中的重要一环,其绩效考核成为企业了解测试人员队伍状况,监控测试人员工作过程的重要手段。
软件测试工程师绩效考核是IT企业人力资源管理的中心环节,是测试人员薪酬、晋升、人事调整、职称评定等决策的基础,并且为企业制定测试人员的培训、开发计划及长期职业生涯发展规划提供依据。测试工程师绩效考核的有效性直接影响到人力资源制度的激励效果和企业管理的公平性,并对测试人员的工作满意度有重要影响。然而,现实的绩效考核工作往往不尽如人愿。许多测试工程师遇到考核时深感不安,产生焦虑,害怕甚至反对考核;很多测试人员认为考核是走过场,抱着无所谓态度。理论上的必要性和重要性与现实中的困惑形成强烈反差。为此,我们有必要对测试工程师绩效考核存在的问题进行反思,从而构建能满足企业和测试工程师共同发展的绩效管理体系。
一、软件测试工程师绩效考核存在的误区及其分析
(一)考核定位模糊并存在偏差
考核定位,就是通过绩效考核解决什么问题。考核定位模糊主要表现在考核缺乏明确的目的,仅仅是为了考核而进行考核,这样做的结果往往导致考核流于形式。考核定位偏差主要体现在片面看待考核的目标上,对考核目的定位过于狭窄。目前许多IT企业绩效考核的目的仅仅是为了期末发奖金或津贴,将考核定位于确定利益分配的依据和工具。
(二)重绩效考核轻绩效管理
绩效考核和绩效管理既有本质上的区别,又有一定联系。传统绩效考核以管理者为中心,强调服从和外部控制,着眼于过去,注重成果,是一种被动反应、事后解决问题的管理方法。现代绩效管理则以测试工程师为中心,强调承诺和自我控制,着眼于过去、现在和将来的有机统一,是一种主动开发型、在过程中解决问题的管理系统。绩效管理是一个完整的系统,绩效考核只是绩效管理中一个不可或缺的组成部分和环节,绝不能将其等同于绩效管理。
(三)重考核结果轻考核过程
绩效是工作成果与工作行为的统一。许多IT企业重视对绩效中的工作结果考核,而忽视了绩效中的行为指标,这表现在许多项目组重视项目完成进度而轻视测试过程,重视项目的数量而轻视其质量,尤其是轻视与测试工程师行为有关的工作动机、热情度、忠诚感等“周边绩效”考核点。这可能与企业受功利主义思想影响、追求短期利益有关,或者可能与工作结果容易量化,而行为不易评估有关。
许多项目组在项目初期给工程师布置测试任务和预期应完成的指标,期末予以检查,而对工程师完成任务和指标的过程不管不问,既不对完成任务过程中出现的问题予以及时纠正,也不对测试人员在工作中遇到困难和阻力时提供帮助和支持。这种秋后算账的做法容易造成管理者与被考核者的对立,不利于测试人员的成长与进步。
(四)考核主体单一
目前,项目经理考核测试工程师已成为一种普遍运用的评价方式甚至是唯一的评价方式。项目经理考核有一定可信性,但也存在一些弊端,如测试人员一味地迎合项目经理的指令,淡化了整个团队的沟通协作,忽视一些测试人员不可控制因素的影响而造成考核不公正等。测试工程师在考核时处于一种被动地位,或者消极被迫接受,或者导致内部冲突升级。项目组也不重视同行专家的评估意见或根本不吸收同事参与考核。
(五)绩效考核指标不全,标准不明
考评项目和指标的选择是否恰当,是否全面、相关,定义是抽象含混还是具体明确,对考核结果影响很大。如果绩效考核标准不明,则不同的考核者可能对优、良、一般、差等绩效标准做出不同的解释,从而造成考评者偏松或偏紧或趋中倾向,造成考核结果的误差。以测试人员业绩考核为例,业绩考核包括整体工作效率、工作结果、过程控制三项一级指标。其中,工作结果可以分为测试用例的数量和质量、bug的数量和质量、测试自动化程度及收效等多项二级指标,若不对这些定性指标给出明确定义,则考评时易出现主观随意现象。因此,界定应具体明确。如bug的数量和质量可定义为:提交bug的数量(根据项目的不同而确定经验值)、提交bug的时间段(具体统计在测试的每个阶段)、发现bug的比例等。
二、软件测试工程师绩效管理体系的构建
(一)明确测试工程师绩效考核目标
Bevan和Thompson(1991)认为绩效管理的主要目的是“促进人力资源管理不同组成部分的整合,并使它们与公司的经营目标紧密联系在一起。”测试工程师绩效考核的目标,一是为企业的发展服务,支撑企业使命和战略的实现;二是服务于工程师个人需要及其职业进步。
(二)构建一体化绩效管理体系
绩效管理就是根据组织的要求,对雇员进行指导和支持,使雇员尽可能地以更高的效率完成自己的工作。从狭义角度理解,绩效管理系统由制定绩效计划,持续的绩效沟通与绩效信息收集,绩效考核,绩效反馈、诊断与辅导等部分组成。从广义上讲,绩效管理系统由绩效管理的影响力量、狭义的绩效管理系统、绩效管理的运用和目标等部分构成。
广义的绩效管理系统包括以下3部分:对影响测试工程师绩效的原因进行分析,尤其是从企业内部的组织结构、领导方式、企业文化、招聘和聘任制度、岗位分析等方面探讨与测试工程师绩效有关的因素;狭义的绩效管理系统;绩效管理的目标,包括绩效管理要达到的组织目标和测试工程师个人发展目标(见图1)。
制定绩效计划和考核目标的目的是为了清楚地说明企业期望测试工程师达到的结果以及为达到该结果所期望测试人员表现出来的行为和技能。管理者通过与被考核者协商,共同制定与企业使命相关的具有挑战性、可实现性、具体明确且有时间限制的绩效计划。持续的、动态的绩效沟通就是管理者和被考核者共同工作,以分享有关信息的过程。这些信息包括工作进展情况,潜在的障碍和问题,可能的解决措施以及管理者如何才能帮助被考核者。这些信息必须是有据可查、准确真实的且与绩效相关的信息。管理者可通过面谈,向其他同事了解意见,查看被考核者的工作记录等方式获取信息。绩效考核包括测评内容、何时测评、哪些人参加测评、测评方式及责任等。绩效诊断与辅导,是管理者和被考核者双方合作,共同寻找导致绩效低的原因,以及帮助被考核者提高未来绩效的方法,涉及处理矛盾、准备反馈面谈、解决问题和重新设定目标等内容。
(三)实现测试工程师绩效考核主体的多元化
在传统的测试工程师绩效考核中,将工程师排斥在外,测试人员作为被考核者处于被动应考的地位,被考核者与考评者的这种对立状态造成测试人员不认同、不支持考核,使其考核失去应有价值。虽然测试工程师可能由于认知或自利性偏差(根据归因理论,测试人员可能将自己的成功归之于自身的能力与努力等内因,而将其失败或绩效不理想归之于工作难度和机遇等外因;而对别人的成功与失败归因与自身归因相反)和自我防御心理的原因,测试工程师有高估自身的业绩,而看不到或有意掩盖自身存在的问题的可能性,但可以通过构建系统化的绩效管理系统,明确绩效考核的目标,管理者与被考核者的平等沟通,以及通过考核主体的多元化(除测试工程师本人外,还有领导、同事、客户等)等方法来避免这些弊端。
(四)构建测试工程师绩效考核合理分工、各司其职的组织管理机构
对测试工程师的绩效管理是企业人力资源部和项目组的共同责任。人力资源部主要从事组织、指导和协调工作,具体职责包括培训考核者、规范考核制度、制定各种考核表格、发放及统计等工作。考核由项目组具体组织实施,包括测试工程师工作任务的安排、考核指标与内容的确定、考核方法与时间的确定、考核主体的组织、考核结果的反馈、绩效改进与提升等工作。项目经理首先应当是一名合格的人力资源管理者,应把人力资源管理工作如激励、员工发展、绩效管理纳入企业的议事日程,并构成企业管理者对项目经理考核的重要内容。当然,这需要改变目前IT企业高度集中的人事管理体制,将部分人事管理权由企业下放至项目组。
(五)根据测试工程师的工作特征,建立考核内容全面、结果与行为(过程)并重的绩效考核机制
测试工程师作为专业人员和知识工作者,在其需求和工作方面存在以下特征:追求工作自主,不愿意受过多的外部控制;个人品性对测试工作及其事业影响很大;需求具有多样性和复杂性,既追求较低层次的需要,如生理、安全需要,又追求较高层次的需要,如受人尊重、自我实现的需要;工作具有分散性、个体性等。这些特征要求在测试工程师绩效考核时注意以下方面:一是绩效考核内容要全面,德、知、能、勤、绩一样都不能少。测试工程师品德潜移默化影响其对测试工作的态度;知识包括测试工程师应掌握的专业技能及业务知识、个人素养;能力包括软件测试能力、沟通与团队协作等方面。二是测试工程师绩效考核坚持结果与行为(过程)考核并重。Brumbrach(1988)认为“绩效指行为和结果。行为由从事工作的人表现出来,将工作任务付诸实施。(行为)不仅仅是结果的工具,行为本身也是结果,是为完成工作任务所付出的脑力和体力的结果,并且能与结果分开进行判断。”Borman和Motowidlo(1993)认为行为绩效包括任务绩效和关系绩效(周边绩效)两个方面。任务绩效指正式工作职责和所规定的行为,关系绩效指自发性行为或超职责行为。由于测试工程师工作的效果难以量化,且具有滞后性和共同属性。因此,在坚持完善目前通过测试工作量和测试用例等结果指标衡量测试工程师绩效的同时,企业还要重视对测试人员行为,包括团队合作行为的考核,尤其要关注关系绩效的考核,这对克服测试人员工作分散化,形成合作的团队以及按质按量地完成项目组的目标有重大意义。
(作者单位:北京化工大学经济管理学院)
摘要:本文针对软件测试课程培养的学生与卓越软件测试工程师要求的差距,分析了目前软件测试教学中存在的不足,提出了“方法―过程―工具―案例”四位一体的教学方法,旨在培养理论扎实、工程能力强的卓越软件测试工程师,以实现与软件测试行业的衔接。
关键词:测试工程师;软件测试;教学改革;工程能力
随着软件产业的迅猛发展,软件的复杂性也日益增加,导致对软件产品的质量提出了更高的要求,这也使得软件测试工程师成为每个软件企业都不可或缺的技术人才。目前许多软件工程专业教育者进行了积极的探索,许多学校也提出了一些方案,做了有益的尝试。
中国石油大学(华东)的软件工程专业入选了山东省卓越工程师培养计划,为了执行国家对软件工程专业卓越工程师培养的精神,融合学校的“三三三”培养体系的顶层设计,为培养卓越的软件测试工程师,我们也在软件测试课程的培养方案、课程结构、教学方法和考评体系等方面进行了一系列的改革和探索。软件测试课程作为软件工程专业的一门核心课,是对理论性和工程性都有很高要求的课程,一方面要求学生必须有扎实的理论基础知识,另一方面要求学生能够熟练地应用理论基础知识转化为实际的工程应用。
虽然已有的教学改革改善了教学效果,但目前的软件测试课程教学依然存在几个比较突出的问题:第一,教学内容抽象,学生学习兴趣不高;第二,教学内容碎片化,学生没有完善的测试知识体系;第三,轻视测试工具应用,培养的学生与企业需求难以衔接;第四,教学案例简单,学生没有完整的测试思路;第五,学生对软件测试存在认识偏差,缺乏从事软件测试职业的意愿。
为了解决上述问题,我们提出了“方法为基、过程引导、工具跟进、案例贯穿”的“方法―过程―工具―案例”四位一体的教学方法,旨在培养理论扎实、功能能力强的卓越软件测试工程师,以实现与软件测试行业的衔接。
一、课程体系与教学内容设计
根据国际标准的SWEBOK软件核心知识体系中软件测试的知识域,充分调研软件行业中对卓越软件测试工程师的需求,建立软件测试能力培养标准,明确各培养标准与软件测试课程内容的对应关系。表1为我们初步建立的软件测试能力培养标准列表。
四位一体的教学方法,就是以讲授软件测试的基本理论与方法与基础,按照软件开发过程与测试过程为主线引导,辅以介绍典型软件测试工程的应用,并在课程教学中选择一个案例贯穿整个教学。具体教学路线如图1所示。
为此,我们重新规划了教学内容,教学内容的组织如图2所示。
二、具体教学内容
四位一体的教学方法围绕着测试方法、测试过程、测试工具以及测试案例进行展开。在具体实施过程中,构建了测试工具箱与测试案例库,并编写了适合该教学方法的教材。
(一)测试工具箱的构建
工具的掌握是工程能力的重要一环,因此在软件测试课程及相应实践课上有必要掌握一些典型测试工具的使用。软件测试方法体系庞大,造成软件测试工具众多,而且一些商业化的测试工具价格不菲,为了适应课堂教学的实际,需要对各种测试工具进行比较筛选,选择合适的测试工具并构造测试工具箱。在多年的软件测试课程教学中我们已经积累了一些适合教学的测试工具,包括测试管理工具TestCenter、功能测试工具AutoRunner、源代码缺陷检测工具在选择测试工具FindBugs与DTS、性能测试工具Jmeter等。我们将继续本着覆盖多个测试方法、开源工具优先等原则完善测试工具箱,并对工具箱的工具进行分层次、分类别的维护更新。
(二)测试案例库的建立
案例教学是促进对理论知识消化、掌握实际问题解决策略的一种有效教学方法。软件测试课程要求所选案例能够体现测试方法与工具的应用。为构建适合教学的测试案例库,我们一方面需要对已有的案例进行刻意的改造,也选择了一些新型示范应用项目,另外选取了一些有代表意义的开源工程,以及教师科研转化项目、学生优秀实习项目与课外设计项目等完善测试案例库。目前的软件测试教学中,我们选择了一个所在学院使用的本科毕业设计管理系统作为案例进行了讲解,起到了较好的教学效果。
(三)融合软件测试的方法、过程、工具、案例的教材的编写
为适应四位一体教学方法,我们自主编写了软件测试教材。教材以RUP的四个阶段为线,将测试方法与工具分化在不同阶段进行介绍,加强了测试管理内容。软件测试理论按照鱼骨图式的组织,例如对于白盒测试技术的介绍,分解为两章,其中在RUP的细化阶段介绍了逻辑覆盖测试、基本路径覆盖测试,在RUP的构造阶段介绍了数据流测试、变异测试,这种组织安排有利于学生根据软件测试过程循序渐进地掌握相关知识。
(四)“方法―过程―工具―案例”四位一体教学方法
该方法基于所修订的软件测试教材与测试工具箱、测试案例库,沿用RUP的四个阶段进行教学的安排,在教学中以测试理论与方法介绍为根本,并辅以案例介绍以加深对实际测试的理解,再选用合适的测试工具,具体实施如图1所示。“方法为基、过程引导、工具跟进、案例贯穿”的教学将培养学生既具备扎实的理论基础,又拥有工程实践能力,符合卓越软件测试工程师的要求。
三、结语
该次软件测试课程教学改革围绕卓越软件测试工程师的培养目标,注重理论素养与工程能力的双重提高。教学实践表明,“方法―过程―工具―案例”四位一体的教学方法,有一个围绕软件测试过程的逻辑性强的理论知识体系,辅以工具的训练,再以实际案例贯穿介绍测试方法与测试工具的应用,学生学习的积极性和主动性都得到了大幅提升,有意识地增加了软件测试的内容,说明学生已经意识到了软件测试的重要性,并能够在软件项目开发中执行软件测试的诸多活动。初步的课程改革取得了一定的效果,笔者今后将对软件测试适合敏捷等流行的软件开发过程进行改造已有的方法,并扩充完善已有的测试工具箱与案例库,以培养卓越的软件测试工程师,满足软件测试行业的需求。
【摘要】 软件质量越来越受到人们的关注,软件测试作为新兴行业有很多不完善的地方。很多从事软件测试工作的同行处于迷茫之中,如何提高,如何解决测试工作中的实际问题,困惑着每一个人。本文总结了一下个人经验,希望对大家有帮助。
【关键词】 软件测试 软件 测试学习 软件测试工程师
我最初参加测试工作的时候,不知道什么是软件测试,集成测试和系统测试的概念经常混淆, cmm 是什么就更加不知道了。那时候最简单的开关机也是通过直接拔插电源完成,安装系统对我来说简直是有史以来人类的最高技能,对于那些拿着螺丝刀安装机器的人就认为是宇内超级高手,身具杀人于无形之绝世秘技。拿破仑说不想当将军的士兵不是好士兵,我最初的梦想就是想成为软件测试的高手,傲视天下。所以不断偷师,总结经验,自认为掌握了成为高手的几个秘技,这几年混迹 “ 江湖 “ 还算无往而不利。不敢独享,望与吾辈测试人员切磋,早日总结成功密技之大成,助新进人员早日入门,也算不愧对东北活雷锋的称号。
第一招 学会利用网络
刚参加工作面对浩瀚的网络世界,当时如刘姥姥进大观园,什么都新奇,什么都想要,从网上下载很多源程序的代码,软件技术文档之类,恨不得把所有的好东西收集到手中,其实有些在他人看起来就是垃圾一堆。当时觉得有了这些 “ 武林秘籍 “ ,成为高手指日可待。最初参加工作由于自己工作努力有幸转为开发,加入项目组后我的习惯还是没有改,反而变本加厉,手中的资源更加多,上网的时间更加频繁。
一次项目经理分配任务,觉得依靠手中的秘籍加上自己的 “ 聪明才智 “ 很快会完成,不料短短的时间,所有的一切变成了马奇诺防线。解决问题很慢,思路不清晰,项目经理在对我施压的过程中教会了我终身难忘的一招,学会利用网络寻找要解决问题的答案,从此 google 成了我的最爱,关键字成了我变化的招数。在软件测试工作中,他帮我解决了很多疑难问题,解答了很多令我迷惑的地方。也是我帮助测试同行解决问题手段之一,很多软件测试新手,甚至老手都没有意识到自己手上就握有 “ 无敌秘籍 “ ,所以只要你耐心找,答案就在身边。
这里总结一下利用网络搜索引擎的技巧:
组合搜索
每次搜索某个文件,如果只给出一个单词进行搜索,经常会出现成千上百万计的匹配网页。然而如果再加上一个单词,那么搜索结果会更加切题。
选择表述内容的词组
一般我在网页搜索引擎的时候,选择一些可以表达我要查找内容的关键词组,用来缩小搜索范围,从而找到搜索结果是最好的办法。运用词组搜索涉可以先先简单地输入一个问题作为词组搜索,如果仍然找不到合适的,那就用多个可以表达要查询内容的关键字进行查询。
定位信息来源
有的时候用词组搜索不到或者无法准确表达所需信息。可以用另一种方法直接到信息源,就是直接到到提供某种信息的站点去。可以用公式 “www. 公司名 .com” 去猜测某一组织的特点。从而得到所要搜索的信息的主要词组
其实网络上还有很多关于搜索技巧的文章,大家可以自行学习。千万要记住搜索引擎是帮助你成功的有力武器。
第二招 学会动手
参加软件测试工作后,随着工作经验的增长自我感觉越来越好。在公司里也逐渐受到同事领导的重视,一次针对公司的新的软件功能进行测试的时候,像往常一样 “ 随手 “ 测试出了几个 bug ,然后 “ 仔细 “ 的填写了 bug 单(这个 bug 的现象已经出现了很多次了)。这时候测试经理走过来,重新复查了一下填写的 bug 。他在重现我的 bug 的过程中,简化了我的输入变化, bug 神奇的又出现了,同样的现象,他关闭软件重新变化输入,扩展出 10 几个变化后,软件不动了,内存不断上升。终于他找到了产生软件的 bug 的原因,然后对我说 “ 寻找 bug 要准确定位,我们开发团队是一个整体,时间是等量的,时间不在你身上浪费,就是在他身上浪费。如果测试人员每次发现的 bug 描述不清楚,并且多个问题潜在的错误原因是一个,虽然操作可能稍微有些变化。这样开发人员在重现 bug 的时候他要调试跟踪判断,很花费时间,而且效率低。如果测试人员发现 bug 的时候多动手可以更加准确的定位 bug 步骤和原因,给开发人员最精确的步骤和准确的描述,这样整个团队才能高效,所以需要大家协作!。 “ 。
在以后的日子里,每次解决问题的时候我都记得多试验几次,多尝试。网上很多朋友还有同事问我问题的时候,其实他们只是万里长征就差一步,只要再多动手实验一次就可以达到目的了。所以多动手,多尝试。
第三招 思考自己所作的
刚开始入行的时候,总是思考如何做好软件测试。认为公司的测试流程混乱总是很郁闷,认为自己学不到东西,如何才能测试好产品,常说心动不如行动,以前看到古龙小说中经常出现的场景无名小子不断挑战高手,总结积累。我总结了有些经验是实战中得到的,所以不断尝试引入新的测试流程然后评估,这个过程虽然很痛苦,但是从中积累了不少经验。这段时间让我学习到了很多东西,接触了 iso,cmm ,测试管理工具,自动化工具(因为公司不正规给了我很多学习的机会,后来到了比较大的软件公司后,以前的经历给了我更多的发展机会,因为大公司非常正规了,公司内部人员分工明确,所以能力的锻炼反倒少了)。由于工作中经常写报告反倒养成了总结教训的习惯,因为纸面上的东西是永远也忘不掉的。在写的过程中可以不断补充扩展,整个过程是思想升华的过程,当年达摩面壁九年就是融会贯通的典型例子,如果他不是有个思考的过程,他也不能成为一代大家。如果后来不时有人把他的绝技记录下来,也就不能有后来的少林寺七十二绝技。
所以善于思考,总结经验,也是成为高手之路的不二法决。
第四招 学会利用论坛资源
其实测试新兵和测试高手之间的区别,往往是不会利用现有资源。在论坛中我们会看到很多新手不断的提问,但是有很多问题其实都是已经别人提过了,或者已经有解决方案的。所以经常会看到 “测试高手“的身影,并且不提问题,而且还能“锄强扶弱“,是测试新丁的救命稻草。好像是高手们无所不能,其实摘掉这层耀眼的光环,他们并没想像得那么厉害,只不过通过自己的搜索找到的答案,然后帮助其他人。当然也有很多人都是通过自学,然后在论坛中交流得到了很多经验,高手其实也是因为善于思考问题,亲自动手解决问题。所以动手和利用论坛资源的过程中他们也在不断提高。
很多时候看到论坛中有人提问,问题描
述不清,很多人看了很困惑。发贴题目动不动请高手帮忙,救命之类的,好像天下大乱,世界末日。虽然这个题目很招人,但是无法让那些想帮助你的人帮你,因为题目不清晰,而且高手字样吓阻了很多人。其实问问题也是个思路整理的过程,描述清晰,让人理解清楚,才能望文知意知道你的当前发生问题的环境,才能让那些想帮你的人解决问题,否则给人无从下手的感觉,解决问题效率不高。
第五招 学习和你所测试的软件产品相关的知识
要想成为好的测试人员,还要了解你要测试的软件的相关知识。要了解软件产品的架构是什么样的。要了解软件的市场需求,在接触软件之初要可以多看看用户的反馈信息,这些才是用户最关心的,也是你在测试中需要注意的问题,满足客户是最大的需要。但是了解软件需求之后要学会要多读些软件系统的技术文档,软件设计文档,这些文档可以帮助你了解产品如何工作。还有多看看公司 bug 库中的问题,这些存在的问题可以帮助你了解软件产品那些地方存在缺陷,软件系统那些地方会出现错误。软件是运行在一个大环境中,如果对系统不熟悉,那么有些问题你不能从一个更广阔的层面考虑,学习操作系统的知识,有助于你发现缺陷,定位问题更加准确。比如软件运行在 windows 或者 linux ,如果你不懂操作系统,你就无法建立测试环境,有些时候时候软件的组件发生问题,就是你系统配置造成的,对系统不熟悉,你会把外在原因归结为软件本身。所以要学习关于和软件系统相关的知识,比如编程,网络,数据库等。不一定你要学习到多好的程度,只是通过这些扩展的知识面,你可以在发现问题,解决问题上不会局限在狭小的圈子里。
和一切相关的人员交流,不同的交流渠道,获取消息是不同的,角度也不同。和客户交流,你会在测试中从客户的角度发现问题;和开发人员交流,你会了解开发人员怎么实现软件功能的;和项目管理人员交流,你会知道开发进度以及遇到的困难。