还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
就业培训课程设置阶段课程课时课程目标第一阶段测试基础3了解测试的基本概念,理解软件测试的目的以及软件的生命周期测试过程4掌握单元测试、集成测试、系统测试等测试过程,了解测试的基本工作软件质量14了解ISO9000和CMM/CMMI,理解并掌握质量模型,理解质量铁三角测试方法7了解白盒测试和黑盒测试等测试方法需求管理7理解需求管理相关知识,完成实例项目的需求跟踪矩阵,阅读项目__文档,理解软件__的整个过程通用测试用例3掌握测试用例写作的格式和思路缺陷管理4理解缺陷管理相关知识,能进行缺陷提交和简单分析QC14掌握缺陷管理工具QC的使用,能用QC完成整个用例写作和缺陷跟踪过程测试覆盖率3掌握覆盖率的概念以及分析方法单元测试11掌握单元测试的概念以及分析方法,能进行桩函数、驱动函数的编写,通过项目实例,掌握Cppunit和覆盖率工具的使用集成测试7掌握集成测试的概念以及分析方法,能进行测试代码编写,并完成实例项目的集成测试系统测试14掌握系统测试的概念以及分析方法,了解各种系统测试类型和质量模型间关系,并完成实例项目的系统测试执行配置管理3掌握配置管理相关工作内容SVN4掌握配置管理工具SVN的使用Linux14掌握Linux测试环境的搭建和使用SQL Server14掌握数据库管理系统SQLServer的使用第二阶段测试用例设计方法33通过实例和实践掌握常用的黑盒和白盒测试用例设计方法项目介绍7了解实战项目的业务和背景需求评审7阅读并分析实战项目的需求系统测试计划7掌握系统测试计划写作要点,进行实战项目的系统测试计划写作,制定测试策略系统测试用例28进行测试设计和分析,完成实战项目的系统测试用例设计系统测试执行28完成实战项目的系统测试执行,完成测试报告项目总结7进行项目总结,完成项目总结报告第三阶段QTP42掌握自动化测试工具QTP并进行实践LoadRunner42掌握性能测试工具LoadRunner并进行实践Linux Shell14掌握自动化测试脚本Shell编程第四阶段项目实践(计划)7进行实践项目的测试计划写作项目实践(方案)7进行实践项目的测试方案写作项目实践(用例)14进行实践项目的测试用例设计项目实践(执行)14进行实践项目的测试执行,以及自动化测试执行、性能测试执行职业发展时间管理4穿插在各阶段有效沟通4简历写作\面试技巧7团队合作4职业规划4模拟面试赠送第二阶段结束总计406 工作职责软件测试就是使用人工或自动手段,来运行或测试某个系统的过程其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别__工作的根本是尽量实现软件用户的需求,测试工作的根本是检验软件系统是否满足软件用户的需求 软件测试工程师简单的说是软件__过程中的质量检测者和保障者,负责软件质量的把关工作软件测试工程师具体工作有
1、使用各种测试技术和方法来测试和发现软件中存在的软件缺陷测试技术主要分为黑盒测试和白盒测试两大类其中黑盒测试技术主要有等价类划分法、边界值法、因果图法、状态图法、测试大纲法以及各类典型的软件故障模型等;白盒测试的主要技术有语句覆盖、分支覆盖、判定覆盖、基本路径覆盖等;
2、测试工作需要贯穿整个软件__生命周期完整的软件测试工作包括单元测试、集成测试、确认测试和系统测试工作单元测试工作主要在编码阶段完成,由__人员和软件测试工程师共同完成,其主要依据是详细测试集成测试的主要工作测试软件模块之间的接口是否正确实现,基本依据是软件体系结构设计确认测试和系统测试是在软件__完成后,验证软件的功能与需求的一致性、验证软件在相应的硬件条件下的系统功能是否满足用户需求,其主要依据是用户需求
3、测试人员将发现的缺陷编写成正式的缺陷报告,提交给__人员进行缺陷的确认和修复缺陷报告编写最主要的要求是保证缺陷的重现要求测试人员具有很好的文字表达能力和语言组织能力
4、测试人员需要分析软件质量在测试完成后,测试人员需要根据测试结果来分析软件质量,包括缺陷率、缺陷分布、缺陷修复趋势等给出软件各种质量特性包括有功能性、可靠性、易用性、安全性、时间与资源特性等的具体度量最后给出一个软件是否可以发布或提交用户使用的结论
5、测试过程中,为了更好地组织与实施测试工作,测试负责人需要制定测试计划,包括有测试资源、测试进度、测试策略、测试方法、测试工具、测试风险等
6、测试人员为了更好更有效地进行测试,保证测试工作质量,需要在执行测试工作之前首先需要设计测试用例,形成测试用例报告设计测试用例是保证测试质量的核心工作,很多测试技术都可以用来指导设计用例为了提高测试用例的设计效率,BTEST培训课程专门开设了高效设计测试用例一门课来讲授各种设计用例的技术与方法
7、为了提高工作效率或提高测试水平,测试工作需要引进自动化测试工具,测试人员需要学会使用自动化测试工具,编写测试脚本,进行性能测试等
8、测试负责人在测试工作中,还需要根据实际情况不断改进测试过程,提高测试水平,进行测试队伍的建设等职业发展 测试组长这类测试人员通常是测试项目的负责人,既要具备较高的测试技术能力,还要具备一定的管理能力主要职责是制定测试计划、编写测试计划、监控和管理整个测试过程测试组长可以向上发展为测试部经理、质量经理,也可以横向发展为项目经理,而且通常待遇相对较高些 测试分析师 主要职责是对系统的测试结果进行综合的分析,例如缺陷分析、性能分析等测试分析师不但测试技术能力较强,还要具备数据库、操作系统等多方面的技术知识这类职务的发展空间也不错,可以发展成系统设计师等 自动化测试工程师、测试__工程师 主要职责是编写测试程序、执行自动化测试任务这类职位的测试人员至少要达到初级程序员的能力,因为经常和程序打交道发展空间也不错,例如可以发展为程序员职业素质计算机专业技能 计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的计算机专业技能主要包含三个方面
1.测试专业技能 测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主测试专业技能涉及的范围很广既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识
2.软件编程技能 “软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的__经验因此,测试人员要想得到较好的职业发展,必须能够编写程序只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作 此外,对软件测试人员的编程技能要求也有别于__人员测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上因此测试人员要具备一定的算法设计能力依据资深测试工程师的经验,测试工程师至少应该掌握J__a、C#、C++之类的一门语言以及相应的__工具
3.网络、操作系统、数据库、中间件等知识 与__人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识 在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识 操作系统和中间件方面,应该掌握基本的使用以及__、配置等例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件而WebLogic、Websphere等中间件的__、配置很多时候也需要掌握一些 数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库因此不但要掌握基本的__、配置,还要掌握SQL测试人员至少应该掌握Mysql、MSSqlserver、Oracle等常见数据库的使用 行业知识 行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、__、银行、电子政务、电子商务等行业领域的产品__行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出__人员实现的产品功能是否正确 很多时候,软件运行起来没有异常,但是功能不一定正确只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现 行业知识与工作经验有一定关系,通过时间即可以完成积累 个人素养 作为一名优秀的测试工程师,首先要对测试工作有兴趣测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”
1.专心主要指测试人员在执行测试任务的时候要专心,不可一心二用经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员
2.细心主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节某些缺陷如果不细心很难发现,例如一些界面的样式、文字等
3.耐心很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过
4.责任心责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果
5.自信心自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“__人员”,同时要尊重__人员的劳动成果——__出来的产品 首先,进入软件测试需要哪些技能?
1、软件工程技能 你必须了解软件软件工程设计、__和简单测试,应用,系统,自动测试编程,及操作系统,数据库,网络系统和协议的设计和使用 2、交流技巧 如果想确定软件缺陷,你应当能够指出什么时候的缺陷算是缺陷 3、组织技能 如果你在别人都头脑发昏的时候保持清醒,你就可能是一个好的软件测试工程师在网络时代软件测试是一项有压力的复杂性工作,但如果你能从这些纷繁中找到一种途径,它就是一项回报丰厚的事业 4、实践技能 当一个工作需要经验,而你又需要一个工作去丰富你的经验时该怎么办?这并不完全是一个两难的问题,你可能采用几种方式去获得实际经验 5、态度 除了技术水平,你需要理解和采取适当的态度去做软件测试
1、软件工程技能SoftwareEngineeringSkills 软件工程技能可以分成三大块理解软件工程的规则,了解计算机编程和操作系统知识 理解软件工程“规则”有一种过时的眼光认为软件工程只是由一些在工作期限之前疯狂编程、靠着非凡的协调能力和超人般的咖啡消耗整夜不睡,不停地设计和测试程序的“专家”们组成的这种现象确实存在,但你只有了解了软件__的真正过程,才会是一个专业人员 从哪开始呢?先到图书馆去走一走你需要建立软件测试知识的软件工程基础我的建议是阅读RogerPres__an的软件工程APractitionersApproachfifthedition职业入门,第五版,McGrawHill2000年版和GlenfordMyers的TheArtofSoftwareTesting软件测试艺术,JohnWileySons1979年版Pres__an的书是一个对软件工程原理的全面介绍有很多关于软件技巧、项目管理、要求分析和软件设计等软件工程方面的好书,但Pres__an对这些方面在一本书里作了介绍GlenfordMyers不到二百页,1979年发行,却是软件测试方面的圣经Myers定义及诠释的测试方__已成为软件测试的基本模块 Myers还考查了软件测试中的经济缺陷的代价和心理学方面测试的目标就是发现失误及不成功之处,以及主导软件__和测试的基本原则 计算机编程不能想像有的人喜欢测试产品却从不阅读、检查和理解组成产品的软件一样 不要误解我的意思你不必花所有的时间去读源代码,但任何你做过的有关自己程序的设计、编写和纠错都能大大地有助于测试别人编写的程序 你怎样学习编程?通过编程可以严肃地说,开始学习写计算机程序是最简单的事记住我说的是“开始学习”软件编程环境,例如MicrosoftWindowsFoundationClassesMFCorSunsJ__aFoundationClassesJFCalsocalledSwing不断变得越来越复杂,越来越难跟得上 但我在努力超越自己你应当怎样学习编程呢? 首先,买MicrosoftVisualBasic不要让名字骗了你你能用这套组件建立相当复杂的程序而且它只要一百元左右下一步呢?等等,是visual编程警告的时候了! 现在你为你的PC买一个程序语言的时候,你其实是买了一个集成__系统或称为IDE这些IDE通过对编程的简化把__过程流水线化这些IDE其实会帮你写很多编码这非常有利于尽早__出一个产品,却不利于你学习编程如果你用Windows产生程序,你别无选择,因为环境介入太多使你无法从头编程如果你从Unix系统产生程序,你能自己写所有的编码 一旦你习惯了与参量、控制结构、对象、输入输出及更重要的VisualBasic纠错打交道的时候,你就可以开始学习C语言了学习C能使你熟悉十六进制系统,通过指针分配和参考内存,存取个__码及建立程序模块 我总是认为在学J__a之前最好先学会C,因为C强迫你自己去完成许多任务而J__a会自动处理例如,释放未用的空间用C工作比J__a难,但你能学到编程更多的基本方面你其实能用VisualC++IDE从头写C程序,但最好还是在Unix系统中学C 操作系统知识你已经把它交给了在RedmondWashington的那些人了在短短的几年内,WindowsNT已经成为世界上大部分计算机的标准操作系统如果你要用NT工作,你需要了解它的寄存地址它是一种用于存储你的系统结构的各个方面的数据库我发现PeterNorton写的InsideWindowsNT
4.0SAMS1998是一本很好的介绍书但是,如果你的应用或系统要求高的保密度、产出、可靠性及灵活性,Unix依然是最好的选择 如果你想成为一个成功的软件工程师,你必须能在Unix的世界里工作,如果你想从头学习编程,也要在Unix下进行 你的选择是什么?你可以到当地的学校或大学学习课程,或者在家建立一个Unix系统别昏过去了,你所需要的只是一台PC和一份能让你从网络____的Linux拷贝你大约花__九元能买一份在一个CD-ROM中带了所有文件的拷贝Linux不是Unix的“玩具”版,它是真实的它已经发行了七百万份拷贝,一些主要的PC生产商甚至先替你装载了它 好了,你已经到了Unix或Linux系统了你应当学些什么?文件和目录结构,标准输入输出和错误流,背景background,也称为daemon处理,从C调用系统功能,好,我可以接下去了一个好的开端是读ArnoldRobbins的UnixinaNutshellOReillyAssociates1999或者是EllenSiever的LinuxinaNutshellOReillyAssociates1999
2、交流技能CommunicationsSkills 能写出计算机程序却写不出一个完整句子的软件工程师现在还有但不幸的是,要成为一个成功的软件测试工程师,你需要清楚的交流 测试工程师必须把产品测试的技术写成文件测试计划提供指导并把测试设计转化为设置、实现测试和评估结果的步骤指导具有一般软件和产品特性不同层次经验的工程师都能使用这样一个详细的测试计划如此测试设计者或测试方案__之外的工程师也能能进行测试 测试计划也帮着佐证测试策略的正确性项目中的每个人都应当参与审查即市场、__、支持、技术写作及测试人计划的审查是必不可少的,因为尽管测试工程师尽最大努力来达成一个对产品的全面定义,这一测试设计者所基于的定义不一定是完整或准确的此外,就象__者很难测试他们自己的编码一样,测试工程师也很难明确评估他们自己的测试计划每一个计划审查者都可能根据其经验及专长建议修改,有时候审查者还能提供测试工程师在组织产品定义时不具备的信息例如,一个市场人员可能了解到了新的客户要求,一个软件支持专家可能从有关的产品领域了解到了一个新的缺陷报告 测试计划强调测试计划和执行的原则在测试计划中描述进行测试所需的测试设计和步骤是另一层关于测试设计和计划的原则在测试设计和计划中的错误与欠缺在设计转化成测试计划中特定的结构和测试步骤后就经常是再已无法弥补 测试计划可作为其它项目,例如为不同的产品准备测试时的参考资料当被测试软件找到缺陷解决并证实后,测试计划所述的测试可以用于证实缺陷的解决方案同时,一个主要的测试设计信息来源,特别对于旧产品的新版本而言,是相关产品或前版本的测试计划在建立新版本时,旧版本的软件测试计划都应当被重新审查 与功能与设计说明不同,测试计划将从测试的角度来描述产品的功能操作从这方面说,测试计划构成了公司公共档案的一部分随着时间的流逝人们会离开公司,带走他们的知识以前产品的测试计划就能帮助你定义新产品的测试 软件测试工程师还要写测试结果报告测试结果必须写成文档,这样就能确定被测软件的状态,提供关于必须要解决的缺陷的记录产品测试中发现的所有缺陷的记录是测试部门最显眼、保存时间最长的文档测试计划和测试报告在项目的最后常被遗忘,但现存缺陷的清单或数据库代表项目未完成的议程这一议程没完成是因为一些缺陷必须在对原来产品的一个patch或__intenan__release的时候纠正,或者它们在这个产品作为后续产品的基础之前被修复 在与软件产品打交道的过程中,测试工程师比其他部门的人参与项目的更多方面测试部门应当记录项目过程中重大__例如设计决定的信息这个信息应能帮助测试部门和其他部门避免在后续项目中犯同样的错误错误是不可避免,在一个项目中可能出问题从这些经验中学习就可能避免问题,避免今后的同样错误从错误中学习的第一步就是记住它们,记忆的第一步就是把它们写下来
3、组织技能OrganizationalSkills 每当执行一个软件项目的测试计划,几乎不可能不遇到至少会阻碍一些测试而必须解决的缺陷一个测试工程师应当能灵活地停止测试产品的一部分而开始测试其他部分有时被测软件需要做根本变动引起大量的测试结果失效,测试也许得重做不止一次在问题被查找和改变在进行的过程中,测试工程师必须有条理,保持对执行测试的软件的前后关系的明确__例如目前被测试的程序特定版本的不同部分 网络时代要求的动态__和测试模式使组织性的工作方式对测试工程师越来越重要在整个__过程中被测试软件可能会不断地改进测试工程师在计划和实施测试的时候必须考虑这些变化因素,必须控制测试环境来保证测试结果的有效性 记住计划是一个动词作为一个软件工程师,你永远不会有你想要的所有时间和资源你总是必须通过理解技术和产品,__组织方式,从你和其他人的错误中学习,以及在设计必须改变和出问题的时候的迅速调整,使你的测试效果和效率最大化如何能做到这点呢?基本代数量化任务、目标和结果来减少方程中的变量数把产品的功能定义成要求在测试计划和测试中量化测试及其预期的和实际的结果,把信息提供给项目组你东点一下西点一下是不能完成整个测试的未来软件__的组织模式要求有灵活的设计和不断进化的__周期对产品测试必须随着产品的进化而进化
4、实践经验Hands-OnExperien__ 这是个典型的两难问题你需要软件测试经验来找工作,你没工作你就没经验你该怎么办? Becareful!这需要勇气和你的PC的小心备份 作为自愿者参与beta测试怎样发现需要beta测试员的公司呢?首先,给你在软件公司工作的亲友打__偶尔有人会需要beta的测试人员如果这不行,到你最喜欢的网络搜索引擎上去找“betatest”你会发现很多小和不那么小的公司亟需beta测试员___?这得感谢互联网,竞争的加剧使公司必须做出产品模型贴到他们的网址上作为“beta”版推出这些公司希望人们不仅测试他们的产品,而且对这些免费品感兴趣进而__他们的产品 一句忠告如果你要把很多beta软件下载到你家里的PC里,投资你的备份设备和防病毒组件
5、态度(Attitude) “我希望你幸福的梦想,被你打破了!” 我打赌这句话能勾起一些人童年记忆的创伤我不是心理学家,但我还敢说这种说法是因为我们渴望看到成功在软件测试中,你不仅要证实软件在做它该做的,还要证实它不会做它不该做的为了做到这一点,你得找出软件的失败之处 进行软件测试需要很多人的眼光要进行一百八十度的转变,因为测试的目标是要让被测软件失败,由此产生出等同于其他东西工作正确时的成功在软件测试中,一个成功的测试揭示一个缺陷进行软件测试也是因为互联网的来临要求人们用一种大不同以往的眼光来看待动态的__和测试模型
6、必备特性(Ne__ssaryTraits) 软件测试工程师除了技术,还要求具有否定性的创造力;探测技巧;总体理解产品的能力;用客户的眼光进行评估;怀疑的而不是敌意的态度;能经受得住坏消息而保持目标;拥抱新技术的热望等特征 否定性的创造力一个软件工程师不能怕引起一个产品的瘫痪或烧毁在软件测试中,边界意味着被超越而不是被遵从如果一个程序对某个值的极限为10例如,可以在一时间被打开的最大文件数,测试工程师的第一想法应当是“如果我把那个值取11,或0,或
10.1,甚至不设这个值会如何?” 这是很大的错误我应当重测__人员所谓“没有变化”的所有产品功能
2.0版本中的缺陷确实复修了,但在修复的过程中,有人破坏了请求事实就是如此,在数据库里不能搜索数据了,第一个收到这项产品的beta客户发现了这个缺陷 我宣布以前的测试无效,要求对产品进行全面测试找到几个缺陷之后,我发现这个数据库读取写保护文件或写保护了的磁盘的时候就会引起瘫痪__人员很吃惊我会试着写保护一个数据库他们的反应就是“没人会这么干的!”产品的市场经理很快用他们的方式承认了错误 探测技巧在一个理想的世界中,软件测试应当在一个经常更新的写得很清楚的功能与设计说明文件一般被称为“specifications”中被完整而精确地描述不幸的是,这一完善被__程序每一方面文件的任务,包括记录在__中对程序不可避免的改变,要花很多的时间和精力以至于人们无法完成编程而且花费也太大 正式与非正式的信息源 正式系统 要求文件 功能说明书 设计说明书 非正式系统 用户文件 与其他__人员的交流 与软件支持人员的交流 有关产品的文件 有关产品的缺陷 从工作于相关或早期版本产品获得的“局部知识” 因为我们不是在理想世界里编程,测试工程师应当能够自己找出工作的方式典型的是,总会有一些设计和功能说明书让测试工程师用于开始他的研究这些文件能看成为描述被测试软件的“正式”系统测试工程师应当能用更广大的“非正式”系统的信息来扩展“正式”系统的信息同时,在项目周期的任何一个点,任何文件都可能是正确或不正确的,所以测试工程师必须根据对软件工作模式的观察,与__人员和其他项目人员的交谈,或对有关或看上去不那么相关文件的审核,来确定文件的精确性 总体理解产品在一个程序项目是,软件__工程师主要把他们的精力和注意力集于自己的项目部分结果当这些项目部分组合在一起进行测试的时候,就会碰到兼容性的问题到产品寄给一个客户之前,唯一能见到整个产品的就是测试工程师因此测试工程师必须能够对整个产品的操作与使用保持一种“系统”的眼光 测试工程师对产品的任何一部分的操作可能不是最好的专家,但他必须是产品整体操作的专家例如,如果被测的产品是一个类似于MicrosoftOffi__的由文字处理、扩展页和其他有关程序组成的办公室自动组件,测试工程师必须了解每个程序的操作,各个程序之间的相互作用和客户其他的软件硬件和软件环境 用客户的眼光进行评测试工程师必须是客户的拥护者被测程序有可能运行可靠满足所有的设计要求,但在客户的软件环境中未必能够用产品被送到客户之前的测试之一就是要证实产品达到了客户的要求与期望在这项测试中,测试工程师必须模拟用户的软件环境,把自己放到他们的位置上 关于软件功能“正确”而不能满足客户需要的一个悲剧性的例子就是美国__公司965__1995年在哥伦比亚卡利市的一次失事在飞行着陆时,空中__控制系统指示机组人员朝一个叫“Rozo”的____灯飞这个__灯在__图中标为R机组人员把R输入到飞行管理计算机中,看到了明显是由近到远列出的六个____灯机组人员选了第一个__灯,以为这就是Rozo但那不是自动驾驶仪把飞机向左转了九十度,撞到了山上 什么地方出错了呢?当__表里把Rozo列为R的时候,飞行管理计算机要求机组人员输入__灯的全名调出它的方位同时,计算机只显示了__灯的编码字母和方位计算机功能“正确”,但不满足用户的需求 要求变化项目刚开始时的要求与最终项目完成时的要求一致的情况是极少见的有时技术变化了,产品必须改变以适应于技术有时竞争对手的产品具有你的产品所没有的功能很多情况下,客户的或潜在客户的要求需要变化这些因素合在一起的一个例子就是目前MicrosoftInternetExplorer和Netscape的竞争 随着计算机首次用户的迅速增加,今天的测试工程师比以往更需要把自己置于客户的位置上这些新的非技术用户不愿意接受缺陷,对缺陷的解释或理性思考,或通过“升级”修正缺陷他们只希望他们所买产品的软件和硬件都是能工作的 怀疑的而不是敌意的态度测试工程师不能按表面值接受事物,必须执着地对一切提出疑问直到被证实工程师必须用一种与项目的其他的人合作精神来平衡这种怀疑性与执着性测试部门与其有关部门的关系可能会变得紧张,特别是在大量缺陷被发现后,或者在每个找出的缺陷会潜在地延迟产品的发货时间而延迟了项目时测试工程师应当记住要攻击程序的整体性,而不是程序员 经受得住坏消息而保持目标的能力一个测试工程师必须忠实地汇报产品中的缺陷这一信息应当被项目组欢迎,因为每一个测试工程师遇到的问题除非加入新的问题都意味着减少客户会面临的问题但不幸的是很多人不想听到有问,特别是在程序项目的后期 测试工程师应当能处理因为工作做得太好而引起责备的情况这对有些人来说是很难做到的,会严重地影响斗志与自尊 看起来常常是测试工程师阻挠了向客户交货客观的项目经理才能感觉到测试工程师是在对项目提供有价值的服务我清楚地记得一个项目经理举起他的手求我他要的是“解决方案,不是问题!”他不明白解决方案的实现有时要求一个问题的解决有时项目经理在项目计划不方便的时候对于因为发现缺陷而打折是有压力的在这些情况下,测试工程师应当能基于他对产品的经验和知识进行辩护,但他不应表现为象是他个人受到了威胁 如何避免这些情形呢?就测试的内容、时间及如何更新测试结果和缺陷信息,设定其他项目组成员的期望我曾经为一个希望延迟产品发送日期的QA经理工作过他的目的不是为了产品成功,而是__权力的操纵他确信自己能被提升,把一些为他工作的工程师指定为“__nager”,开始自称为“director”,还要大楼管理人员把他的办公隔间加宽一英尺这没有实现,但至少他的座位有了更多伸脚的余地 拥抱新技术的热望对多数人来说,年龄越大越难学习在商业世界里,人员越往公司的食物链高处走,越远离他们所建立的技术基础这一部分是因为他们需要把精力集中于其他的经营和指导其下属的任务中有时也是因为他们不幸地认为自己已不需要进行实践的技术工作了互联网增加了技术变化的速度不继续学习或跟着发展就无法做出商务与技术的决断 从前的一个经理给我树立了如何对待新技术的榜样我跟他工作的时候他年近六十,但他象新手一样地热心于学习新技术他大量地获取信息,不断补充在网络服务器、防火墙、和Perl或Expect等新语言的知识他还重视做QA或测试组织的工作他的最初背景是软件__和__管理,但他并不认为做QA经理是在降低他的声望他明白一个__的测试或QA组所进行的完整测试能使__经理的工作变得多简化 正象我所说的,当你生活于网络时代,只要原地不动就很容易落伍了 相对于其他软件工程人员,软件测试工程师的知识面应该非常宽广,但最重要的品质应该是能够在第一时间内接受新技术 由于公司之间的竞争日益集中在质量方面,所以公司对软件测试人员的需求量也越来越大,这一点,在北美尤为明显,这决定了软件测试行业的前景可喜,同时也为愿意不断进取、学习新技术的华人__提供了广阔的就业空间,软件测试工程师的就业机会一直都是非常多的,最关键,要善于抓住机遇并肯付出努力,踏踏实实的学起来、做起来。