软件开发必备工程师手册

更新时间:2023-12-05 23:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件开发团队必备工程师手册

一、软件工程师

软件工程师是一个认证考试,具体地说是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格.。 职位概述

一般情况下.都是分4级 软件技术员

助理软件工程师 软件工程师

高级软件工程师

目前国内软件测试工程师的来源主要有三方面:一是以前专业做软件开发的人员后来转行做软件测试,二是从大学招聘的本科或者研究生,三就是通过培训机构招聘的专业学员。据了解,在国外测试人才的供应方式多以第三种为主,而国内目前除少数培训机构外尚未形成足够的人才供应规模。以北京中关村为例,现有软件企业5000多家,仅对曰本软件外包领域的人才缺口就高达5000人,而对美软件外包人才缺口更大,可供量不足10%。中关村一位负责人介绍,未来5年北京将有至少200亿美元的外包订单,由此可推算出中关村将出现100万的软件人才缺口。 巨大的产业前景和匮乏的人才现状,使越来越多的IT企业关注软件测试人才的储备工作。 职业定义

软件工程师主要进行软件前期的项目需求的分析,然后对项目进行风险评估并试图解决这些风险,然后开始进行软件的开发,后期对软件的进度做相关的评估。 工作内容

1、 指导程序员的工作;

2、 参与软件工程系统的设计、开发、测试等过程; 3 、协助工程管理人保证项目的质量; 4 、负责工程中主要功能的代码实现; 5 、解决工程中的关键问题和技术难题;

6 、协调各个程序员的工作,并能与其它软件工程师协作工作。[1]【职业分析】 软件工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位。这些岗位的分工不同,职位和/或级别不同,但工作内容都是与软件开发生产相关的。软件工程师是IT行业需求量最大的职位,稳居IT行业职位需求TOP10的第一位(第二位是高级软件工程师)。 软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言

/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/S B/S程序开发,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEB SERVICE、STRUTS等前沿技术。除此之外,关于网络工程和软件测试的其他技术也要有所涉猎,以利于操控全局。 软件工程师可谓是软件项目开发的掌舵者。一名优秀的软件工程师应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉。虽然要求技术全面,但无须偏执于门门技术都精通,任何软件工程师都有自己的技术特长和偏

向,对于自己手中的技术,可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。 考试科目

软件工程师是中级职称,考试的题目包括了计算机体系结构、软件工程、数据库、数据结构、编译原理等计算机学科的基础课程 发展前景

当今社会不论什么职业的都需要一个不断学习的环节,软件工程师也一样。虽然软件工程师的工作不同于程序员但是一个软件工程师其前身必定是一个优秀的程序员,软件的开发工具、开发技术在不断地发展。在校学生所能学到的东西很难跟得上发展的需要但是也不能说那些东西完全没有用,只有在完全理解了相应的基本技能之后你才能很轻松地掌握新的技能,软件技术都是一个循序渐进的过程。所以学好学校所能提供的专业课程是相当重要的。

企业用人主要有以下几个特征:

1 外包开发行业快速发展,对“人才”在代码和文档方面的规范性、技能和工具的熟练程度要求越来越高;

2 Java和.NET技术在市场上平分秋色,都有大量的岗位需求,同时值得庆幸的是二者在应用层面上的技术差异越来越少;

3 软件开发企业对开发人员的基本技术素养强调得越来越多,例如:面向对象的程序设计思想和代码组织方法、HTML/CSS/JavaScript客户端技术;

4 为了保证质量和工期,企业中大量使用各种框架技术,要求开发人员至少熟悉一种框架技术;

5 MIS、OA、ERP、CRM、系统集成、物流、进销存、电子政务、网站建设这一类B/S系统,成为软件工程师需求最大的业务领域。 就业职位

软件工程师的就业职位归结下来主要有WEB开发工程师、数据库开发工程师、网站开发工程师、电子商务开发工程师VB程序员;网页开发人员;非IT专业信息部门的管理信息系统设计、开发、维护网位,JAVA程序员;C++程序员;VB高级程序员;网站开发工程师;测试工程师;文档编写工程师 ,JAVA工程师;.NET工程师;初级分析、设计人员等。 专业培训机构

中国的IT软件工程师教育培训行业已经进入到一个前所未有的高峰期,目前全国比较知名的专业软件工程师培训机构有迅腾国际、华育国际 、焦作凯盛、八维教育 IT培训集团、威迅教育、北大青鸟连锁。他们为社会培养了广大的人才! 从业要求

. 具有扎实的计算机基础理论知识;

. 精通C/C++、Java、C#等语言,具有丰富的Unix/Linux/Windows系统下开发经验;

. 精通Perl、Python、PHP、Shell等脚本语言;

. 有一定的算法基础,具有较强的独立解决问题能力; . 有大容量、高性能、分布式系统的设计开发经验; . 具有很强的学习能力和对新技术的追求精神;

. 具有良好的中英文沟通能力,具有项目管理经验者优先;

. 认同客户第一、团队合作、拥抱变化、诚信、激情、敬业的企业价值观。

高级软件工程师 职业概述:

“软件工程师受宠,就业前景一片看好”,这是我们经常可以看到的报道,只要你有足够的能力和才华,这将是一个薪水没有上限的金领职业,这种收入会随着学历和资历的增长而增加。中国的IT行业的就业形势一直呈上升趋势,中国软件市场保持稳定增长,预计2009年将达到62.3亿美元,市场增长潜力巨大。在技术领域,高级软件工程师也一直是各个公司极为需要的。 工作内容:

独立承担项目软件开发;

参与项目的整体规划与实施;

负责与项目经理共同进行客户调研、业务流程分析设计; 负责系统的总体技术方案与系统设计,系统的质量控制; 负责跟客户沟通解决问题。 职业要求:

教育培训:

计算机、电子、通信、信息工程、自动化等相关专业,大专以上学历。 工作经验:

三年以上的软件开发经验;具备扎实的计算机软件基础,熟悉汇编语言和数据结构,并对软件工程有较好的理解;熟

悉.NET/Java/C++/VB/Delphi等常用开发语言中任意一种;有Oracle、SQL-SERVER或DB2等数据库上的开发经验,熟悉SQL语言;具备良好的沟通能力,较强的分析、解决问题、领悟、归纳和逻辑推理能力和撰写开发文档;具有良好的计划性,团队精神,能承受工作压力并充满热情。 薪资行情:

按2008年统计,中国一般月薪范围在3000 - 8000元。有些月薪甚至超过了项目经理。 职业发展路径:

高级软件工程师是IT行业中的重要岗位。 根据开发进度和任务分配,,完成相应模块软件的设计、开发、编程任务;进行程序单元、功能的测试, 查出软件存在的缺陷并保证其质量;进行编制项目文档和质量记录的工作;维护软件使之保持可用性和稳定性。软件开发是一个系统的过程,需要经过市场需求分析、软件代码编写、软件测试、软件维护等程序。软件开发工程师在整个过程中扮演着非常重要的角色,主要从事根据需求开发项目软件工作。但与发展潜力不对称的是,现今中国软件和信息产业人才相当缺乏。据调查研究显示,当前中国软件和信息服务外包产业人才流动率较高,而且缺口很大。企业成立时间比较短,规模大多比较小,企业人才平均流动率达18.28%,人才供不应求,尤其是本地化人才和中高级管理人才。市场需求的巨大和专业人才的缺乏令人吃惊,这正是商机和盈利的重要突破口。可以预见,中国软件和信息服务外包产业将在不久的将来成为引领中国第三产业转型和发展的龙头产业,相关职业包含高级软件工程师的人

才需求将会非常巨大 二、软件架构师

软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员 能力要求

在技术全面、成熟练达、洞察力强、经验丰富,具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下,软件架构师能迅速抓住问题要害,并做出合理的关键决定的能力 l、具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考; 主要包括如下:

1、对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等

2、具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策

3、拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;

4、以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美) 5、精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);

6、具备系统设计员的所有技能,但涉及面更广、抽象级别更高; 活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议等。 主要工作任务

架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。

l、领导与协调整个项目中的技术活动(分析、设计和实施等) 2、推动主要的技术决策,并最终表达为软件构架

3、确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”

4、确定设计元素的分组以及这些主要分组之间的接口

5、为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻

6、理解、评价并接收系统需求 7、评价和确认软件架构的实现 专业技能

软件架构师的培养

软件架构师的培养

软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的。在国内,很多大学目前还没有设立软件架构的学位课程,虽然IT业界对设计和架构的兴趣日渐高涨,但各学校还无法在课程中增加相应的内容来体现这一趋势。从这个方面来说,学校教育已经远远落后于产业发展。因此,促进和发展软件架构学课程的任务将落在现在的软件架构师身上。目前的软件架构师应该帮助各大院校建立相关课程体系,一旦教育课程建立起来,知识体将不仅通过新毕业生的工作成果来得到扩展,同时也会从适合软件架构的教育研究和出版物中得到扩展[28]。

虽然大学要加强软件架构学课程的建设,但是,软件架构师的成长应该有一个实践的教育过程,并不是简单的学校的理论学习或者通过大型软件公司的认证就能成为合格的软件架构师。除了信息系统综合知识在学校学习外,软件架构师的大部分知识和经验将来自实际开发工作。根据软件架构师的任职条件,一名合格的软件架构师的成长应该经历8年以上的软件项目开发实际工作经验。一般需要经历程序员、软件设计师等阶段,然后再发展成为软件架构师。

当然,并不是每一位程序员经过8年后都可以成长为软件架构师的。一个软件工程师在充分掌握了软件架构师工作所必需的基本理论和技能后,如何得到和利用机会、如何利用所掌握的技能进行应用系统的合理架构、如何不断的抽象和总结自己的架构模式、如何深入行业成为能够胜任分析、架构为一体的精英人才,这就在于机遇、个人的努力和天赋了。 就目前来看,国内软件架构师的培养途径主要有两种方式,一种是大学(软件学院)教育方式,另一种是个人自我培养然后再进行相应的培训和认证。但是,不管哪种方式都有其不足之处。

软件学院的培养方式能够系统的学习软件架构师必需的知识体系,但是,软件架构师不是简单的通过理论学习就能够培养出来的,软件学院的学生可能缺乏必要的设计、开发经验和相关的领域知识。尽管软件学院也强调给予学生实践的机会,但毕竟这种机会是有限的。有关“三分之一的师资来自企业”的规定,在部分软件学院中也没有得到真正落实,导致传授给学生的还是一些纯理论知识。

自我培养方式的主要对象是具有一定年限的软件开发和设计人员,如Microsoft、IBM、Sun等公司的软件架构师认证对学员的基础并没有具体的要求,只要交纳规定的费用,然后进行几天的集中培训,通过考试就发给学员证书,甚至不需要考试就直接发放证书。这些开发人员在自我培养的过程中不一定能够系统的学习软件架构师的理论知识,他们只具有一定的开发和设计经验,仅仅经过几天的培训,是不太可能培养出合格的软件架构师的。而且,作为某个厂商的培训和认证,其最终目的是培育自己的市场,培养一批忠诚的用户,而不是为中国培养软件架构师。因此,也存在很大的问题和缺陷。 软件架构师的认证

在国外,软件架构师的培养与认证具有严格的过程,明确规定了教育目标、认证的要求和学习课程等方面的内容。下面,介绍三个组织的软件架构师认证情况。 UC Irvine

。在UC Irvine的软件架构师认证计划[27]中,为了拿到软件架构师C级认证,学员必须完成11个单元的必修课程和至少4个单元的选修课程。这些课程包括: ·必修课程:软件系统建模和分析概论(2个单元)、系统分析基础(3个单元)、用户需求的分析和文档化(3个单元)、软件架构项目(3个单元)。 ·选修课程:信息系统项目管理(2个单元)、系统性能建模(2.5个单元)、管理业务改进项目(2.5个单元)。

UC Irvine的软件架构师认证要求学员具有业务系统建模,决定用户需求,评价业务过程的能力,掌握项目管理技术,能设计完善的、具有最佳可适应性和可扩展性的架构。该认证程序以一门实践课程结束,在实践课程中,学员从头开始,设计一个大规模软件解决方案的架构。 CMU/SEI

SEI在软件架构师方面的认证[42]包括三个职位,分别是软件架构师、ATAM评估师和ATAM主任评估师。这些认证都需要学习2年的课程。其中软件架构师需要学习的课程有软件架构:原理与实践、软件架构文档化、)软件架构设计与分析和软件产品线。 iCMG

iCMG对软件架构师的认证强调7个层次的课程学习,如图2所示[30]。在该认证体系中,上面的3个层次由其合作伙伴完成,iCMG只负责下面4个层次的知识体系。

目前,软件架构师的认证在国内基本上是空白,既没有专业的培训机构,也没有专门的认证指南和权威的教育认证机构。而软件架构师作为软件的总设计师,其水平和能力直接决定了软件系统的总体性能。根据教育部2004年9月8日关于紧缺人才的报告,2005年国内软件架构和系统分析人才缺口在6万人以上,是目前软件开发中急需的高层次技术人才。人事部和信息产业部[2003]39号文件决定在全国计算机技术与软件专业技术资格(水平)考试中设立系统架构设计师级别的认证考试,试图解决软件架构师认证问题。但是,由于各种原因,该考试未能如期举行,一拖再拖。其实,这些措施也只是暂时起到一个过渡的作用,只有建立完善的软件架构师教育培训方案和权威的教育认证机构,才是当前急需解决的问题。 寻求合适的培养方法

针对软件架构师在软件组织中的作用和其在国内的培养现状,有分析家认为有必要将软件架构师的教育、培训和认证作为发展民族软件产业的一个基本决策,制定详细的软件架构师培养方案。因此,提出以下一些关于软件架构师培养的基本方法和途径。

(1)确定软件架构师在软件组织中的职责和充当的角色,确定其相应的必须具备的知识体系,确定软件架构师的职业及其相关制度,制定软件架构师的培养目标和培养方案。

(2)坚持以大学教育为主(特别是各软件学院在这方面可以大施身手),以项目实践为辅的教育方针。大学可以聘请现有的软件架构师担任核心课程的讲师,通过学校教育,系统学习软件架构师所必需的知识体系;通过项目实践使其具有初步的软件开发和设计经验,逐步成长为一名合格的软件架构师。

(3)对国外一些大公司的软件架构师的培训和认证予以支持,但是在认证的过程中必须坚持符合我国实际情况的原则。例如,在认证考试之前对考生的知识体系进行系统的测试和评估,在通过认证后的适当时间内进行重新认证和继续教育。

(4)建立完善的软件架构师教育和认证制度,使得通过认证的人员能够在实际的软件开发中成为称职的和优秀的软件架构师。并通过此制度能够为国家培养出更多、更优秀的软件架构师,解决当前软件架构师急缺问题 三、嵌入式软件工程师

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

嵌入式软件工程师就是编写嵌入式系统的工程师。 嵌入式软件工程师待遇 【先就业·后付款 保就业·保底薪】

IBM、微软、华为、Yahoo、联想、搜狐、亚信、花旗...2010'应届毕业生就业安置计划火热启动:先实训后上岗,转正年薪50000元。 怎样做个嵌入式软件工程师

应具备哪些能力,最直接的方法,就是去根据各公司,招聘网站的嵌入式软件工程师的应聘要求来分析 我帮你总结下:

1.最重要的,和2楼的讲得一样,C语言编程,以及C++相当得重要,这个与你读程,应用,开发项目,做系统移植都有关

2.操作系统: LINUX,WINCE等,至少学习过一种,并且还需要对些基础知识有蛮多的了解

3.对ARM,FPGA,DSP等这些硬件里,有一个比较了解 这是最常规的条件

当然,一些基本素质,像英语能力,或是啥的,也很重要

推荐: 你可以去按照招聘要求分析,也可以按照培训机构的培训目的,方向,内容来分析得知,像海同科技就是蛮不错的 四、数据库工程师

数据库工程师的基本要求

1.掌握数据库技术的基本概念、原理、方法和技术; 2.能够使用SQL语言实现数据库操作;

3.具备数据库系统安装、配置及数据库管理与维护的基本技能; 4.掌握数据库管理与维护的基本方法; 5.掌握数据库性能优化的基本方法;

6.了解数据库应用系统的生命周期及其设计、开发过程; 7.熟悉常用的数据库管理和开发工具,具备用指定的工具管理和开发简单数据库应用系统的能力;

8.了解数据库技术的最新发展。 数据库工程师的工作内容

1、设计并优化数据库物理建设方案;

2、制定数据库备份和恢复策略及工作流程与规范; 3、在项目实施中,承担数据库的实施工作;

4、针对数据库应用系统运行中出现的问题,提出解决方案; 5、对空间数据库进行分析、设计并合理开发,实现有效管理; 6、监督数据库的备份和恢复策略的执行;

7、为应用开发、系统知识等提供技术咨询服务[1]。 数据库工程师的发展前景

随着数据库技术的不断发展,企业为了管理、利用越来越多的信息,都建立了自己的数据库。而这些企业数据库,都需要有专门的人员进行维护,这就是数据库工程师的工作。就发展趋势看,优秀的数据库工程师是十分匮乏的。目前数据库工程师的就业范围非常广,一般的大型或者跨过的企业都建立自己的数据库,他们都需要数据库工程师对他们的数据库进行管理。一些国际知名企业、政府、学校等都是数据库工程师很好的去处。 一、数据库应用系统分析及规划 1.软件工程与软件生命周期。 2.数据库系统生命周期。 3.数据库开发方法与工具。 4.数据库应用体系结构。 5.数据库应用接口。 二、数据库设计及实现 1.概念设计。 2.逻辑设计。 3.物理设计。

4.数据库对象实现及操作。 三、数据库存储技术 1.存储与文件结构。 2. 索引技术。 四、并发控制技术 1.事务管理。 2.并发控制技术。 3.死锁处理。

五、数据库管理与维护 1、数据完整性。 2、数据库安全性。 3、数据库可靠性。 4、监控分析。 5、参数调整。 6、查询优化。 7、空间管理。

六、数据库技术的发展与新技术 1、分布式数据库。 2、对象数据库。 3、并行数据库。

4、数据仓库与数据挖掘。

五、网络工程师 职位定义

网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能 的网络技术人员. 工作内容:

1. 负责机房内的网络联接及网络间的系统配置。

2. 负责系统网络的拓扑图的建立和完善,并做好系统 路由的解析和资料的整理。

3. 负责机房线路的布置和协议的规范工作。 4. 负责计算机间的网络联接及网络共享,并负责网络间安全性的设置。 5. 负责对网络障碍的分析,及时处理和解决网络中出现的问题。 6. 利用网络测试分析仪,定期对现有的网络进行优化工作。 发展前景

网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。我国政府机关政府上网工程、企业上网、现有媒体的网站和教育、商业、专业性质网站等领域对网络工程专业人才的需求越来越大。

1、最具增值潜力的职业,掌握企业核心网络架构、安全技术,具有不可替代的竞争优势;

2、新型网络人才缺口大,27%的行业增长速度导致网络人才年缺口达30万,高薪高福利成为必然;

3、可实现专业零基础入行,4-10个月的强化训练和职业化引导,就可成为企业急需的技能型网络人才;

“1+6”网络工程师

4、就业面广,一专多能,实践经验适用于各个领域;

5、增值潜力大,职业价值随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨;

6、职业发展前景广阔,网络工程师到项目经理仅一步之遥,从容晋升Manager。

网络工程师的分类

网络工程师有好多种,

就路线而言,有:路由交换型、无线型、布线型等。

就认证而言,有:cisco认证、H3C认证、华为认证、中国的软考、全国计算机等级四级、锐捷认证等网络工程师认证. 网络工程师的职位进阶

一、小企业的网络管理员;

二、进入大中型企业,从事同样的网络管理工作,工资待遇等就可有明显的提升;

三、学习更全面的知识成为普通的网络工程师;

四、成为侧重于某一专业的网络工程师,如网络存储工程师、综合布线工程师、网络安全工程师等

最后,可进阶到专家级别,如IT项目经理、网络主管或者技术专家等,这也是网络工程师在30岁以后的主要发展方向和发展目标。 网络工程的知识和技能储备要求 1、基础知识

深刻理解网络基本概念,例如>ISO/OSI、TCP/IP、VLAN、各种LAN、WAN协议、各种路由协议、NAT等等 各大网络公司对网络工程师的要求

Cisco:熟悉Cisco产品线;会配置主要型号的交换机和路由器,不熟悉的设备能够独立查资料配置;熟悉Cisco一些主要的技术例如VOIP、Qos、ACL等;

Nortel:熟悉Nortel产品线;会配置主要型号的交换机和路由器,不熟悉的设备能够独立查资料配置;

Huawei-3com:熟悉Huawei-3com产品线;会配置主要型号的交换机和路由器,不熟悉的设备能够独立查资料配置;

Foundry:熟悉Foudry产品线;会配置主要型号的交换机和路由器

清华万博1+6网络工程师

,不熟悉的设备能够独立查资料配置; 2、主机方面

基础知识:熟悉服务器的基本知识,例如各种RAID、各种外设、SCSI卡等等

Sun Solaris:熟悉Sun小型机产品线,掌握各个版本的Solaris使用 IBM AIX:熟悉IBM小型机产品线,掌握各个版本的AIX使用 HP HP-UX:掌握HP-UX的基础知识

Linux:熟悉主流版本的Linux的安装、使用、配置

MS Windows:熟练掌握Windows NT、2000、2003的安装、使用、配置、排错

3、数据库与中间件

基础知识:深刻理解数据库的基本概念,会使用简单的SQL语句,了解数据库复制、数据仓库等高级概念

Sybase ASE:熟悉Sybase数据库的基本概念、体系结构、安装、配置、维护、排错、复制

Oracle DB:熟悉Oracle数据库的基本概念、体系结构、安装、配置、维护、排错、复制

MS SQL Server:熟悉MS SQL Server数据库的基本概念、体系结构、安装、配置、维护

并且现在我国的软件测试职业还处于一个发展的阶段,随着软件行业对产品质量重视程度的提高,受过系统培训、掌握先进测试技术的软件测试从业人员的薪酬上升空间大。从近期的企业人才需求和薪金水平来看,软件测试工程师的年工资还有逐年上升的明显趋势。 [1] 历史发展

计算机软件产品检验员(即软件测试工程师)早在2005年就被劳动和社会保障部门列入第四批新职业中。经过短短几年的发展,软件测试员已跻身IT业抢手人才之列。究其原因主要有二。 首先是企业对测试“经济价值”的认可。

有调查显示,通过必要测试,软件缺陷可减少75%,而软件的投资回报率则可增长到350%。对于一个软件企业来说,只有它的产品或是项目质量完全地得到认可,业务才有可能进一步扩展。很多中大型软件企业设立了单独的测试部,与开发部并行运作,测试人员也与开发人员平起平坐。 除了产业的自身需求外,国家政策的大力扶植也是软件测试大力发展的原因。2007年,信产部联合五部委颁布124号文件,特别强调要“加快培养软件测试人才,开展软件评测技术的研究”。为了配合2008年奥运会的召开,国家科技部门、北京市政府主管部门和北京奥组委等投入近20亿,组建10个重大的智能型项目,涉及上百个软件系统。如此庞大的信息服务系统,对软件测试人员的需求更是剧增,也将进一步扩大人才缺口。[2] 职业前景

在外界环境大好的情况下,软件测试却面临着自身的严峻考验——人才紧缺。在国外,一般软件测试人员与软件开发人员的岗位设置比例是1:1,像微软在开发windows2000时测试开发人员比例高到1.7:1,由此可见软件测试岗位重要性的一斑。据前程无忧调查显示,国内120多万软件从业者中,真正能担当测试职位的不足5万,人才缺口已超20万,并随需求逐年增长。

软件测试人才需求量的加大,除了受产业先行的波及外,主要是受教育滞后的影响。由于及时捕捉到市场的需求,部分IT职业培训机构率先驶入测试培养的蓝海,紧跟发展趋势,开设了一系列科学完善的课程体系,为软件企业培养了众多专业软件测试工程师,成为人才培养的主力军。企业可通过内部培训、引进人才等方式来培育人才,但受人力成本的限制,这些方式没有大规模普及。另外,国内部分高等院校也开始着手准备,召开软件测试教学研讨会,筹划专业开设的相关事宜 八、软件测试工程师

软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作。按其级别和职位的不同,分为三类。 简述

软件测试工程师作为软件质量的把关者,其职能在于保证交付到客户手中的软件可靠好用,运行畅通无阻。从产品定义到产品开发再到产品维护,都离不了软件测试。

按其级别和职位的不同,可分为三类,即:

高级软件测试工程师,熟练掌握软件测试与开发技术,且对所测试软件对口行业非常了解,能够对可能出现的问题进行分析评估;

中级软件测试工程师,编写软件测试方案、测试文档,与项目组一起制定软件测试阶段的工作计划,能够在项目运行中合理利用测试工具完成测试任务;

初级软件测试工程师,其工作通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否有缺陷。 工作职责

软件测试就是使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。开发工作的根本是尽量实现软件用户的需求,测试工作的根本是检验软件系统是否满足软件用户的需求。

软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。软件测试工程师具体工作有:

1 、使用各种测试技术和方法来测试和发现软件中存在的软件缺陷。测试技术主要分为黑盒测试和白盒测试两大类。其中黑盒测试技术主要有等价类划分法、边界值法、因果图法、状态图法、测试大纲法以及各类典型的软件故障模型等;白盒测试的主要技术有语句覆盖、分支覆盖、判定覆盖、基本路径覆盖等;

2 、测试工作需要贯穿整个软件开发生命周期。完整的软件测试工作包括单元测试、集成测试、确认测试和系统测试工作。单元测试工作主要在编码阶段完成,由开发人员和软件测试工程师共同完成,其主要依据是详细测试。集成测试的主要工作测试软件模块之间的接口是否正确实现,基本依据是软件体系结构设计。确认测试和系统测试是在软件开发完成后,验证软件的功能与需求的一致性、验证软件在相应的硬件条件下的系统功能是否满足用户需求,其主要依据是用户需求。

3 、测试人员将发现的缺陷编写成正式的缺陷报告,提交给开发人员进行缺陷的确认和修复。缺陷报告编写最主要的要求是保证缺陷的重现。要求测试人员具有很好的文字表达能力和语言组织能力。

4 、测试人员需要分析软件质量。在测试完成后,测试人员需要根据测试结果来分析软件质量,包括缺陷率、缺陷分布、缺陷修复趋势等。给出软件各种质量特性包括有功能性、可靠性、易用性、安全性、时间与资源特性等的具体度量。最后给出一个软件是否可以发布或提交用户使用的结论。

5 、测试过程中,为了更好地组织与实施测试工作,测试负责人需要制定测试计划,包括有测试资源、测试进度、测试策略、测试方法、测试工具、测试风险等。

6 、测试人员为了更好更有效地进行测试,保证测试工作质量,需要在执行测试工作之前首先需要设计测试用例,形成测试用例报告。设计测试用例是保证测试质量的核心工作,很多测试技术都可以用来指导设计用例。为了提高测试用例的设计效率,BTEST培训课程专门开设了高效设计测试用例一门课来讲授各种设计用例的技术与方法。

7 、为了提高工作效率或提高测试水平,测试工作需要引进自动化测试工具,测试人员需要学会使用自动化测试工具,编写测试脚本,进行性能测试等。

8 、测试负责人在测试工作中,还需要根据实际情况不断改进测试过程,提高测试水平,进行测试队伍的建设等。 职业发展

测试组长这类测试人员通常是测试项目的负责人,既要具备较高的测试技术能力,还要具备一定的管理能力。主要职责是制定测试计划、编写测试计划、监控和管理整个测试过程。测试组长可以向上发展为测试部经理、质量经理,也可以横向发展为项目经理,而且通常待遇相对较高些。 九、测试分析师

主要职责是对系统的测试结果进行综合的分析,例如缺陷分析、性能分析等。测试分析师不但测试技术能力较强,还要具备数据库、操作系统等多方面的技术知识。这类职务的发展空间也不错,可以发展成系统设计师等。

自动化测试工程师、测试开发工程师

主要职责是编写测试程序、执行自动化测试任务。这类职位的测试人员至少要达到初级程序员的能力,因为经常和程序打交道。发展空间也不错,例如可以发展为程序员。 职业素质

计算机专业技能

计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面: 1. 测试专业技能

测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。 2. 软件编程技能

“软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。

此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。

3. 网络、操作系统、数据库、中间件等知识

与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环

境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。

在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。 操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。

数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MS Sqlserver、Oracle等常见数据库的使用。 行业知识

行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。 很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。 行业知识与工作经验有一定关系,通过时间即可以完成积累。 个人素养

作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”。 1.专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。

2.细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。 3.耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。

4.责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果。

5.自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。

“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。

外包软件测试工程师

外包软件测试工程师主要承接外包软件测试工作,外包软件测试就是指软件企业将软件项目中的全部或部分测试工作,交给提供软件外包测试服务的公司,由他们为软件进行专门的测试。这样做的好处有两个:一方面软件企业可以更好地专注核心竞争力业务,同时降低软件项目成本;另一方面,由第三方专业的测试公司进行测试,无论在技术上还是管理上,对提高软件测试的有效性都具有重要意义。

外包软件测试行业前景非常看好,发展空间很大。IDG的数据显示,最近几年,中国的软件外包产业年均增长率为36.5%,正处于快速发展的阶段,2008年预计已达到16.9亿美元的市场规模。目前韩日、欧美国家的软件企业纷纷关注中国市场,而作为软件外包强国的印度,在其国内处于前几位的软件外包服务商也准备来“分一杯羹”。从目前市场来看,选择将部分软件测试工作进行外包的公司主要是微软、IBM等国际软件旗舰企业,他们利用第三方专业软件测试公司,在产品发布前对软件进行一系列的集成测试和系统测试,即保证了测试工作的全面性,又节省了人力、物力的开销。最重要的是,测试结果往往好于这些软件企业最初的预期,效果非常令人满意。软件企业和提供软件外包测试服务的公司进行合作,只要达成双赢,两方皆大欢喜,这样的合作就会越来越多,项目也会越做越大。 主要业务类型 ·本地化软件测试 ·国际化软件测试 主要测试的范围 ·本地化语言质量测试 ·国际化软件的功能和性能测试 测试工作主要方式 ·公司内部(In house)执行的测试 ·派驻客户开发中心的现场测试(On site)。 《软件测试工程师指南》 作者简介:

Timur 赵,Nortel 高级测试主管,浙大博士;

当你生活于网络时代,只要原地不动就很容易落伍了。

没有经验,不知如何跻身于测试工程师的行列?以下几个基本方向能使你从新手成为软件测试的行家里手。

软件工业是自动化工业的一部分。而且是最活跃发展最迅速的一个方面。到底有多迅速?任何人的想像力都不够!正如我们不会把我们的事务托付给不可靠的经纪,任何有分量的公司都不会采用没有质量保障的软件。软件测试人员,我是说有水平有经验的软件测试人员永远是供不应求的。软件测试经理不得不花很多的时间去面试有潜力的应聘者。一些应聘者在软件方面或者软件测试方面毫无实际经验,明知道软件测试工作是一个高回报的和最合适的软件工业入门,就是无法抓住一个又一个机会。这些人真正需要的是一个指南能告诉他们如何成为一个软件测试工程师。 首先,进入软件测试需要哪些技能?

1、软件工程技能 你必须了解软件软件工程(设计、开发和简单测试),应用,系统,自动测试编程,及操作系统,数据库,网络系统和协议的设计和使用。

2、交流技巧 如果想确定软件缺陷,你应当能够指出什么时候的缺陷算是缺陷。

3、组织技能 如果你在别人都头脑发昏的时候保持清醒,你就可能是一个好的软件测试工程师。在网络时代软件测试是一项有压力的复杂性工作,但如果你能从这些纷繁中找到一种途径,它就是一项回报丰厚的事业。

4、实践技能 当一个工作需要经验,而你又需要一个工作去丰富你的经验时该怎么办?这并不完全是一个两难的问题,你可能采用几种方式去获得实际经验。

5、态度 除了技术水平,你需要理解和采取适当的态度去做软件测试。

1、软件工程技能

(Software Engineering Skills)

软件工程技能可以分成三大块:理解软件工程的规则,了解计算机编程和操作系统知识。

理解软件工程“规则”。有一种过时的眼光认为软件工程只是由一些在工作期限之前疯狂编程、靠着非凡的协调能力和超人般的咖啡消耗整夜不睡,不停地设计和测试程序的“专家”们组成的。这种现象确实存在,但你只有了解了软件开发的真正过程,才会是一个专业人员。

从哪开始呢?先到图书馆去走一走。你需要建立软件测试知识的软件工程基础。我的建议是阅读Roger Pressman的软件工程:A Practitioner's Approach, fifth edition (职业入门,第五版,McGraw Hill, 2000年版)和 Glenford Myers的The Art of Software Testing(软件测试艺术,John Wiley & Sons, 1979年版)。Pressman的书是一个对软件工程原理的全面介绍。有很多关于软件技巧、项目管理、要求分析和软件设计等软件工程方面的好书,但Pressman对这些方面在一本书里作了介绍。Glenford Myers不到二百页,1979年发行,却是软件测试方面的圣经。Myers定义及诠释的测试方法论已成为软件测试的基本模块。

Myers还考查了软件测试中的经济(缺陷的代价)和心理学方面(测试的目标就是发现失误及不成功之处),以及主导软件开发和测试的基本原则。 对参考书进行基本研究是一个好的开端,但这只是单方对话。如果你能和上千个直接具有软件工程和测试经验的人以及想进入这一领域的人对话是不是再好不过了呢?感谢那些网络电子部落,你已经可以做到了。

Comp.software-eng覆盖了设计、编程、项目管理等软件工程的各个方面。Comp.software.testing涵盖了软件测试的自动化、培训、技巧等方面。 等等,别只停留在这里!你是不是应当经常访问这些网址呢?

Bug-Net(http://65.54.244.250/cgi-bin/linkrd....bugnet.com)是有关软件缺陷的在线杂志。阅读有关缺陷的文章是学习如何工作及失败的极好方式。你也应当查阅软件测试及质量工程杂志

(http://65.54.244.250/cgi-bin/linkrd...ww.stqe.com)。STQE 是确定网络软件测试资源很好的始发站。

计算机编程。不能想像有的人喜欢测试产品却从不阅读、检查和理解组成产品的软件一样。

不要误解我的意思。你不必花所有的时间去读源代码,但任何你做过的有关自己程序的设计、编写和纠错都能大大地有助于测试别人编写的程序。

你怎样学习编程?通过编程。可以严肃地说,开始学习写计算机程序是最简单的事。记住我说的是“开始学习”。软件编程环境,例如 Microsoft Windows Foundation Classes (MFC) or Sun's Java Foundation Classes (JFC, also called \不断变得越来越复杂,越来越难跟得上。 但我在努力超越自己。你应当怎样学习编程呢?

首先,买Microsoft Visual Basic。不要让名字骗了你。你能用这套组件建立相当复杂的程序。而且它只要一百元左右。下一步呢?等等,是visual编程警告的时候了!

现在你为你的PC买一个程序语言的时候,你其实是买了一个集成开发系统或称为IDE。这些IDE通过对编程的简化把开发过程流水线化。这些IDE其实会帮你写很多编码。这非常有利于尽早开发出一个产品,却不利于你学习编程。如果你用Windows产生程序,你别无选择,因为环境介入太多使你无法从头编程。如果你从Unix系统产生程序,你能自己写所有的编码。

一旦你习惯了与参量、控制结构、对象、输入输出及更重要的Visual Basic纠错打交道的时候,你就可以开始学习C语言了。学习C能使你熟悉十六进制系统,通过指针分配和参考内存,存取个体位码及建立程序模块。

我总是认为在学Java之前最好先学会C,因为C强迫你自己去完成许多任务而Java会自动处理(例如,释放未用的空间)。用C工作比Java难,但你能学到编程更多的基本方面。你其实能用Visual C++ IDE从头写C程序,但最好还是在Unix系统中学C。

操作系统知识。你已经把它交给了在Redmond, Washington的那些人了。在短短的几年内,Windows NT已经成为世界上大部分计算机的标准操作系统。如果你要用NT工作,你需要了解它的寄存地址。(它是一种用于存储你的系统结构的各个方面的数据库。)我发现Peter Norton写的Inside Windows NT 4.0 (SAMS, 1998)是一本很好的介绍书。但是,如果你的应用或系统要求高的保密度、产出、可靠性及灵活性,Unix依然是最好的选择。 如果你想成为一个成功的软件工程师,你必须能在Unix的世界里工作,如果你想从头学习编程,也要在Unix下进行。

你的选择是什么?你可以到当地的学校或大学学习课程,或者在家建立一个Unix系统。别昏过去了,你所需要的只是一台PC和一份能让你从网络免费下载的Linux拷贝。(你大约花二十九元能买一份在一个CD-ROM中带了所有文件的拷贝。)Linux不是Unix的“玩具”版,它是真实的。它已经发行了七百万份拷贝,一些主要的PC生产商甚至先替你装载了它。 好了,你已经到了Unix或Linux系统了。你应当学些什么?文件和目录结构,标准输入输出和错误流,背景(background,也称为\处理,从C调用系统功能,好,我可以接下去了。一个好的开端是读Arnold Robbins的Unix in a Nutshell (O'Reilly & Associates, 1999)或者是Ellen Siever的Linux in a Nutshell (O'Reilly & Associates,1999)。 2、交流技能

(Communications Skills)

能写出计算机程序却写不出一个完整句子的软件工程师现在还有。但不幸的是,要成为一个成功的软件测试工程师,你需要清楚的交流。 你怎么去学习写?通过写。如果文字水平太粗糙,上一门创造性写作的课。每天写工程流水记录或发email。关键是学习(或重新学习)怎样用清晰可懂的语言表达你的思想。一个好的写作参谋是William Strunk Jr.和E.B. White写的The Elements of Style(Allyn & Bacon, 2000),它一点也不象初中教科书。

测试工程师必须把产品测试的技术写成文件。测试计划提供指导并把测试设计转化为设置、实现测试和评估结果的步骤指导。具有一般软件和产品特性不同层次经验的工程师都能使用这样一个详细的测试计划。如此测试设计者或测试方案作者之外的工程师也能能进行测试。

测试计划也帮着佐证测试策略的正确性。项目中的每个人都应当参与审查(即市场、开发、支持、技术写作及测试人)。计划的审查是必不可少的,因为尽管测试工程师尽最大努力来达成一个对产品的全面定义,这一测试设计者所基于的定义不一定是完整或准确的。此外,就象开发者很难测试他们自己的编码一样,测试工程师也很难明确评估他们自己的测试计划。每一个计划审查者都可能根据其经验及专长建议修改,有时候审查者还能提供测试工程师在组织产品定义时不具备的信息。例如,一个市场人员可能了解到了新的客户要求,一个软件支持专家可能从有关的产品领域了解到了一个新的缺陷报告。

测试计划强调测试计划和执行的原则。在测试计划中描述进行测试所需的测试设计和步骤是另一层关于测试设计和计划的原则。在测试设计和计划中的错误与欠缺在设计转化成测试计划中特定的结构和测试步骤后就经常是再已无法弥补。

测试计划可作为其它项目,例如为不同的产品准备测试时的参考资料。当被测试软件找到缺陷解决并证实后,测试计划所述的测试可以用于证实缺陷的解决方案。同时,一个主要的测试设计信息来源,特别对于旧产品的新版本而言,是相关产品或前版本的测试计划。在建立新版本时,旧版本的软件测试计划都应当被重新审查。

与功能与设计说明不同,测试计划将从测试的角度来描述产品的功能操作。从这方面说,测试计划构成了公司公共档案的一部分。随着时间的流逝人们会离开公司,带走他们的知识。以前产品的测试计划就能帮助你定义新产品的测试。

软件测试工程师还要写测试结果报告。测试结果必须写成文档,这样就能确定被测软件的状态,提供关于必须要解决的缺陷的记录。产品测试中发现的所有缺陷的记录是测试部门最显眼、保存时间最长的文档。测试计划和测试报告在项目的最后常被遗忘,但现存缺陷的清单(或数据库)代表项目未完成的议程。这一议程没完成是因为一些缺陷必须在对原来产品的一个patch或maintenance release的时候纠正,或者它们在这个产品作为后续产品的基础之前被修复。

在与软件产品打交道的过程中,测试工程师比其他部门的人参与项目的更多方面。测试部门应当记录项目过程中重大事件(例如设计决定)的信息。这个信息应能帮助测试部门和其他部门避免在后续项目中犯同样的错

误。错误是不可避免,在一个项目中可能出问题。从这些经验中学习就可能避免问题,避免今后的同样错误。从错误中学习的第一步就是记住它们,记忆的第一步就是把它们写下来。 3、组织技能

(Organizational Skills)

每当执行一个软件项目的测试计划,几乎不可能不遇到至少会阻碍一些测试而必须解决的缺陷。一个测试工程师应当能灵活地停止测试产品的一部分而开始测试其他部分。有时被测软件需要做根本变动引起大量的测试结果失效,测试也许得重做不止一次。在问题被查找和改变在进行的过程中,测试工程师必须有条理,保持对执行测试的软件的前后关系的明确感受(例如目前被测试的程序特定版本的不同部分)。

网络时代要求的动态开发和测试模式使组织性的工作方式对测试工程师越来越重要。在整个开发过程中被测试软件可能会不断地改进。测试工程师在计划和实施测试的时候必须考虑这些变化因素,必须控制测试环境来保证测试结果的有效性。

记住计划是一个动词。作为一个软件工程师,你永远不会有你想要的所有时间和资源。你总是必须通过理解技术和产品,开发组织方式,从你和其他人的错误中学习,以及在设计必须改变和出问题的时候的迅速调整,使你的测试效果和效率最大化。如何能做到这点呢?基本代数:量化任务、目标和结果来减少方程中的变量数。把产品的功能定义成要求。在测试计划和测试中量化测试及其预期的和实际的结果,把信息提供给项目组。你东点一下西点一下是不能完成整个测试的。未来软件开发的组织模式要求有灵活的设计和不断进化的开发周期。对产品测试必须随着产品的进化而进化。

4、实践经验

(Hands-On Experience)

这是个典型的两难问题。你需要软件测试经验来找工作,你没工作你就没经验。你该怎么办?

Be careful! 这需要勇气和你的PC的小心备份。 作为自愿者参与beta测试。怎样发现需要beta测试员的公司呢?首先,给你在软件公司工作的亲友打电话。偶尔有人会需要beta的测试人员。如果这不行,到你最喜欢的网络搜索引擎上去找“beta test”。你会发现很多小(和不那么小的)公司亟需beta测试员。为什么?这得感谢互联网,竞争的加剧使公司必须做出产品模型贴到他们的网址上作为“beta”版推出。这些公司希望人们不仅测试他们的产品,而且对这些免费品感兴趣进而购买他们的产品。

你也能参与开放资源的项目,例如Mozilla,开放资源的网络浏览器是网络浏览器的基础。Mozilla缺陷跟踪系统(bugzilla.mozilla.org)允许网上任何感兴趣的人直接

在 http://65.54.244.250/cgi-bin/linkrd...2emozilla.org 的开放资源项目中直接报告和跟踪缺陷

一句忠告:如果你要把很多beta软件下载到你家里的PC里,投资你的备份设备和防病毒组件。 5、态度

(Attitude)

“我希望你幸福的梦想,被你打破了!”

我打赌这句话能勾起一些人童年记忆的创伤。我不是心理学家,但我还敢说这种说法是因为我们渴望看到成功。在软件测试中,你不仅要证实软件在做它该做的,还要证实它不会做它不该做的。为了做到这一点,你得找出软件的失败之处。

进行软件测试需要很多人的眼光要进行一百八十度的转变,因为测试的目标是要让被测软件失败,由此产生出等同于其他东西工作正确时的成功。在软件测试中,一个成功的测试揭示一个缺陷。进行软件测试也是因为互联网的来临要求人们用一种大不同以往的眼光来看待动态的开发和测试模型。 6、必备特性

(Necessary Traits)

软件测试工程师除了技术,还要求具有否定性的创造力;探测技巧;总体理解产品的能力;用客户的眼光进行评估;怀疑的而不是敌意的态度;能经受得住坏消息而保持目标;拥抱新技术的热望等特征。 否定性的创造力。

一个软件工程师不能怕引起一个产品的瘫痪或烧毁。在软件测试中,边界意味着被超越而不是被遵从。如果一个程序对某个值的极限为10(例如,可以在一时间被打开的最大文件数),测试工程师的第一想法应当是“如果我把那个值取11,或0,或10.1,甚至不设这个值会如何?” 在我的早期的工作生涯中,有一次我测试一个开发和QA工程师遗漏下来的PC数据库。有问题的数据库是2.01版。这本身就说明产品有问题。2.0版没解决1.0版的所有缺陷吗?或者2.0版又加入了新的缺陷?很遗憾因为时间紧我没有调查这些,只是证实了最后的缺陷修复后就告捷了。 这是很大的错误。我应当重测开发人员所谓“没有变化”的所有产品功能。2.0版本中的缺陷确实复修了,但在修复的过程中,有人破坏了请求。事实就是如此,在数据库里不能搜索数据了,第一个收到这项产品的beta客户发现了这个缺陷。

我宣布以前的测试无效,要求对产品进行全面测试。找到几个缺陷之后,我发现这个数据库读取写保护文件或写保护了的磁盘的时候就会引起瘫痪。开发人员很吃惊我会试着写保护一个数据库。他们的反应就是:“没人会这么干的!”产品的市场经理很快用他们的方式承认了错误。 探测技巧。

在一个理想的世界中,软件测试应当在一个经常更新的写得很清楚的功能与设计说明文件(一般被称为“specifications”)中被完整而精确地描述。不幸的是,这一完善被开发程序每一方面文件的任务,包括记录在开发中对程序不可避免的改变,要花很多的时间和精力以至于人们无法完成编程。而且花费也太大。

正式与非正式的信息源 正式系统 要求文件 功能说明书 设计说明书

非正式系统 用户文件

与其他开发人员的交流 与软件支持人员的交流 有关产品的文件 有关产品的缺陷

从工作于相关或早期版本产品获得的“局部知识”

因为我们不是在理想世界里编程,测试工程师应当能够自己找出工作的方式。典型的是,总会有一些设计和功能说明书让测试工程师用于开始他的研究。这些文件能看成为描述被测试软件的“正式”系统。测试工程师应当能用更广大的“非正式”系统的信息来扩展“正式”系统的信息。同时,在项目周期的任何一个点,任何文件都可能是正确或不正确的,所以测试工程师必须根据对软件工作模式的观察,与开发人员和其他项目人员的交谈,或对有关或看上去不那么相关文件的审核,来确定文件的精确性。 总体理解产品。

在一个程序项目是,软件开发工程师主要把他们的精力和注意力集于自己的项目部分。结果当这些项目部分组合在一起进行测试的时候,就会碰到兼容性的问题。到产品寄给一个客户之前,唯一能见到整个产品的就是测试工程师。因此测试工程师必须能够对整个产品的操作与使用保持一种“系统”的眼光。

测试工程师对产品的任何一部分的操作可能不是最好的专家,但他必须是产品整体操作的专家。例如,如果被测的产品是一个类似于Microsoft Office的由文字处理、扩展页和其他有关程序组成的办公室自动组件,测试工程师必须了解每个程序的操作,各个程序之间的相互作用和客户其他的软件硬件和软件环境。 用客户的眼光进行评。

测试工程师必须是客户的拥护者。被测程序有可能运行可靠满足所有的设计要求,但在客户的软件环境中未必能够用。产品被送到客户之前的测试之一就是要证实产品达到了客户的要求与期望。在这项测试中,测试工程师必须模拟用户的软件环境,把自己放到他们的位置上。

关于软件功能“正确”而不能满足客户需要的一个悲剧性的例子就是美国航空公司965航班1995年在哥伦比亚卡利市的一次失事。在飞行着陆时,空中信号控制系统指示机组人员朝一个叫“Rozo”的航空信号灯飞。这个信号灯在航空图中标为R。机组人员把R输入到飞行管理计算机中,看到了明显是由近到远列出的六个航空信号灯。机组人员选了第一个信号灯,以为这就是Rozo。但那不是。自动驾驶仪把飞机向左转了九十度,撞到了山上。

什么地方出错了呢?当航空表里把Rozo列为R的时候,飞行管理计算机要求机组人员输入信号灯的全名调出它的方位。同时,计算机只显示了信号灯的编码字母和方位。计算机功能“正确”,但不满足用户的需求。 要求变化。

项目刚开始时的要求与最终项目完成时的要求一致的情况是极少见的。有时技术变化了,产品必须改变以适应于技术。有时竞争对手的产品具有你的产品所没有的功能。很多情况下,客户的或潜在客户的要求需要

变化。这些因素合在一起的一个例子就是目前Microsoft Internet Explorer和Netscape的竞争。

随着计算机首次用户的迅速增加,今天的测试工程师比以往更需要把自己置于客户的位置上。这些新的非技术用户不愿意接受缺陷,对缺陷的解释或理性思考,或通过“升级”修正缺陷。他们只希望他们所买产品的软件和硬件都是能工作的。 怀疑的而不是敌意的态度。

测试工程师不能按表面值接受事物,必须执着地对一切提出疑问直到被证实。工程师必须用一种与项目的其他的人合作精神来平衡这种怀疑性与执着性。测试部门与其有关部门的关系可能会变得紧张,特别是在大量缺陷被发现后,或者在每个找出的缺陷会潜在地延迟产品的发货时间而延迟了项目时。测试工程师应当记住要攻击程序的整体性,而不是程序员。 经受得住坏消息而保持目标的能力。

一个测试工程师必须忠实地汇报产品中的缺陷。这一信息应当被项目组欢迎,因为每一个测试工程师遇到的问题(除非加入新的问题)都意味着减少客户会面临的问题。但不幸的是很多人不想听到有问,特别是在程序项目的后期。

测试工程师应当能处理因为工作做得太好而引起责备的情况。这对有些人来说是很难做到的,会严重地影响斗志与自尊。

看起来常常是测试工程师阻挠了向客户交货。客观的项目经理才能感觉到测试工程师是在对项目提供有价值的服务。我清楚地记得一个项目经理举起他的手求我他要的是:“解决方案,不是问题!”(他不明白解决方案的实现有时要求一个问题的解决。)有时项目经理在项目计划不方便的时候对于因为发现缺陷而打折是有压力的。在这些情况下,测试工程师应当能基于他对产品的经验和知识进行辩护,但他不应表现为象是他个人受到了威胁。

如何避免这些情形呢?就测试的内容、时间及如何更新测试结果和缺陷信息,设定其他项目组成员的期望。我曾经为一个希望延迟产品发送日期的QA经理工作过。他的目的不是为了产品成功,而是政治权力的操纵。他确信自己能被提升,把一些为他工作的工程师指定为“manager”,开始自称为“director”,还要大楼管理人员把他的办公隔间加宽一英尺。(这没有实现,但至少他的座位有了更多伸脚的余地。) 拥抱新技术的热望。

对多数人来说,年龄越大越难学习。在商业世界里,人员越往公司的食物链高处走,越远离他们所建立的技术基础。这一部分是因为他们需要把精力集中于其他的经营和指导其下属的任务中。有时也是因为他们不幸地认为自己已不需要进行实践的技术工作了。互联网增加了技术变化的速度。不继续学习或跟着发展就无法做出商务与技术的决断。

从前的一个经理给我树立了如何对待新技术的榜样。我跟他工作的时候他年近六十,但他象新手一样地热心于学习新技术。他大量地获取信息,不断补充在网络服务器、防火墙、和Perl或Expect等新语言的知识。他还重视做QA或测试组织的工作。他的最初背景是软件开发和开发管理,但他并不认为做QA经理是在降低他的声望。他明白一个独立的测试或QA组所进行的完整测试能使开发经理的工作变得多简化。

正象我所说的,当你生活于网络时代,只要原地不动就很容易落伍了。 相对于其他软件工程人员, 软件测试工程师的知识面应该非常宽广,但最重要的品质应该是能够在第一时间内接受新技术。

由于公司之间的竞争日益集中在质量方面,所以公司对软件测试人员的需求量也越来越大,这一点,在北美尤为明显,这决定了软件测试行业的前景可喜,同时也为愿意不断进取、学习新技术的华人移民提供了广阔的就业空间,软件测试工程师的就业机会一直都是非常多的,最关键,要善于抓住机遇并肯付出努力,踏踏实实的学起来、做起来。 开设课程

搭建 Windows 测试环境 使用 C 语言开发简单应用 测试计划与软件缺陷 高效设计测试用例 白盒测试

Linux 与网络应用环境 WEB 技术与数据库 高效使用自动测试工具 软件测试实训

职业导向训练 十、网络集成工程师

网络集成工程师是精英级专业人士认证,面向目录和设计、实施、优化和维护目录驱动解决方案的高级工程师和咨询人员。该认证可以提供对象评估,评估一个人管理复杂技术环境和商业需求之间关系的能力。网络集成工程师以全新的方法来看待网络管理培训和认证--第一个注重目录解决方案的认证。它测试学员的工作技能,而非仅仅测试技能。它要求学员通过艰难的书面和实际操作试验评估,来证明自己解决与目录相关问题的能力 认证

该认证基于几个Novell授权合作伙伴提供的课程及培训三个部分: 基本目录体系结构(包括LDAP)

高级目录体系结构(包括目录设计和实施、计划和其他体系结构课题 高级NDS工具和诊断(包括目录支持和维护方法)

目录认证工程师强调基于培训的认证和基于经验的因素。学员必须广泛了解传统网络操作系统如:Netware、WindowsNT或Unix,而且还必须在排障和管理网络、Internet和目录相关问题方面具备深层次的实际操作经验。Novell推荐专业经验至少包括以下几点: *两三年的网络和Internet管理

*网络和Internet安装及排障的经验

*在生产环境下的实施目录解决方案的经验 1:网络

基础a知识:深刻理解网络基本概念,例如>ISO/OSI、TCP/IP、VLAN、各种LAN、WAN协议、各种路由协议、NAT等等

Cisco:熟悉Cisco产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置;熟悉Cisco一些主要的技术例如VOIP、Qos、ACL等;

Nortel:熟悉Nortel产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置;

Huawei-3com:熟悉Huawei-3com产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置;

Foundry:熟悉Foudry产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置; 2:主机

基础知识:熟悉服务器的基本知识,例如各种RAID、各种外设、SCSI卡等等

Sun Solaris:熟悉Sun小型机产品线,掌握各个版本的Solaris使用 IBM AIX:熟悉IBM小型机产品线,掌握各个版本的AIX使用 HP HP-UX:掌握HP-UX的基础知识

Linux:熟悉主流版本的Linux的安装、使用、配置

MS Windows:熟练掌握Windows NT、2000、2003的安装、使用、配置、排错

3:数据库与中间件

基础知识:深刻理解数据库的基本概念,会使用简单的SQL语句,了解数据库复制、数据仓库等高级概念

Sybase ASE:熟悉Sybase数据库的基本概念、体系结构、安装、配置、维护、排错、复制

Oracle DB:熟悉Oracle数据库的基本概念、体系结构、安装、配置、维护、排错、复制

MS SQL Server:熟悉MS SQL Server数据库的基本概念、体系结构、安装、配置、维护

IBM DB2:了解IBM DB2

MySQL:了解MySQL数据库在Windows和linux下的安装和维护 Sybase EAserver:熟悉Sybase EAServer在各个平台的安装、配置和使用

Oracle AS:了解Oracle应用服务器的安装和配置

IBM WebSphere:熟悉IBM Websphere各个版本在各个平台的安装、配置和使用

Tomcat:了解Tomcat在Windows和linux下的安装和维护 4:安全

基础知识:深刻理解网络安全的重要性,了解各种安全设备的作用 防火墙:深刻理解防火墙的基本概念和作用,了解主流的国内和国际品牌,在文档的帮助下能够独立配置使用和诸如联想、天融信等国产防火墙

入侵检测系统:深刻理解IDS基本概念和作用,了解主流的国内和国际品牌,在文档的帮助下能够独立配置和使用诸如金诺网安、绿盟等国产IDS

漏洞扫描系统:深刻漏洞扫描的基本概念和作用,了解主流的国内和国际品牌,在文档的帮助下能够独立配置和使用诸如榕基等国产扫描系统 VPN:了解VPN的基本概念

加密和认证:了解加密和认证的基本概念

安全隔离产品:了解安全隔离产品

网络反病毒:了解国内国际主流的反病毒厂商,能够熟练安装、配置、部署诺顿、卡巴斯基、瑞星等主流软件

邮件反病毒反垃圾:理解邮件反病毒反垃圾的重要性,了解反病毒反垃圾用到的主要技术,在文档的帮助下能够正确安装和配置国产邮件反病毒反垃圾软件 5:存储和备份

基础知识:了解存储的基本概念和主流厂商,了解磁带、DAS、NAS、SAN的基本概念

Sun存储:了解Sun的存储产品,在文档的帮助下能够独立配置Sun的存储产品

IBM存储:了解IBM的存储产品,在文档的帮助下能够独立配置IBM的存储产品 EMC存储:了解EMC的存储产品,在文档的帮助下能够独立配置EMC的存储产品

光纤Hub、光纤交换机:了解光纤Hub、光纤交换机的基本概念和主要作用

备份:深刻理解备份的重要作用,了解主流备份软件诸如ARC Server、NetBackup等软件的安装、配置和使用、熟悉主流数据库的备份方法和策略

6:音视频

视频会议:了解视频会议的基本概念、组成部分和协议,了解主流的视频终端和MCU,能够独立操作泰德的视频终端和Radvision的MCU 视频点播:了解视频点播和流媒体的基本概念、组成部分和协议,能够安装和配置视频点播所需要的软件(RealServer等)和硬件(视频采集卡等)

VOIP:了解VOIP的的基本概念和应用,了解语音网关和语音关守,能够配置VoIP

组播:了解组播的基本概念和应用以及组播路由协议,能够配置简单的组播

各种音视频设备:了解各种音频、视频设备以及各种线缆,了解诸如智能法庭的整体结构 7:应用

HTTP:能够正确安装、配置和使用各种WWW服务器,例如IIS、Apache、IBM HTTP Server

FTP:能够在各种平台(windows、linux、Unix)下配置FTP服务器 Mail:能够在各种平台(windows、linux、Unix)下配置Mail服务器,能够安装和配置中软和Eyou的mail Server

DNS:能够在各种平台(windows、linux、Unix)下配置DNS服务器 公司自主软件:熟悉公司的自主软件,在文档帮助下,能够独立安装公司的**信息系统、**信息系统、**软件等所有软件

其他:能够熟练使用客户端和服务器端各种软件,能够独立在互联网上找到自己所需的软件 8:弱电

本文来源:https://www.bwwdw.com/article/b9rt.html

Top