软件外包相关职业规划
有学生问相关的问题,可能大家对软件外包及软件项目流程还不是太清楚,所以在这里给大家做个简单的分析:
一. 软件外包的目的:
软件外包就是企业为了专注核心竞争力业务和降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业完成的软件需求活动。
二.软件外包的主要内容:
现在业务流程外包(BPO)已经成为外包服务新的发展趋势,在未来几年内将成为外包的主要内容。BPO包括人力资源、采购、财会、客户中心、后勤、研发、营销、工厂运作、培训,这些大类还可以进一步细分。不仅IT行业需要BPO,而且BPO的每项业务都离不开IT业务的支持,从而产生IT外包机会。
三.软件外包项目开发简要流程:
调研:根据客户提出的需求进行详细的需求调研,编写需求规格说明书;
系统分析:客户确认需求,对需求进行系统分析,确定功能点与业务流程;
系统设计:根据系统分析的结果进行初步设计,按功能点进行详细设计;
程序开发:编写代码,提交测试计划;
测试:按功能点进行测试,整体测试;
交付:交给客户试用,反馈、修正,正式提交客户。
四.软件外包项目开发复杂流程:
计划阶段-》需求分析阶段-》软件开发阶段-》测试阶段-》完成
1、项目计划阶段
项目计划草案和风险管理计划作为第一步,当有一个商业机会后,根据公司高层负责制定的初步商业计划书来完成项目的计划草案,确定、分析项目风险并确定其优先级,还要制定风险解决方案。本阶段的目的是确立产品开发的经济理由。
当确定开发之后则制定软件开发计划、人员组织结构定义及配备、过程控制计划。
(1)项目计划草案
项目计划草案应包括产品简介、产品目标及功能说明、开发所需的资源、开发时间和里程碑。
(2)风险管理计划
也就是把有可能出错或现在还不能确定的东西列出来,并制定出相应的解决方案。风险发现得越早对项目越有利。
(3)软件开发计划
软件开发计划的目的是收集控制项目时所需的所有信息,项目经理根据项目计划来安排资源需求并根据时间表跟踪项目进度。项目团队成员根据项目计划以了解他们的工作任务、
工作时间以及他们所依赖的其他活动。可将计划分成总体计划和详细计划,总体计划中每个任务为一个里程碑,详细计划中必须将任务落实到个人。软件开发计划还应包括产品的应收标准及应收任务(包括确定需要制订的测试用例)。
(4)人员组织结构定义及配备
常见的人员组织结构有垂直方案、水平方案、混合方案。垂直方案中每个成员充当多重角色。水平方案中每个成员充当一到两个角色。混合方案则包括了经验丰富的人员与新手相互融合。具体选择根据人员实际技能情况进行选择。
(5)过程控制计划
过程控制计划的目的是收集项目计划正常执行所需的所有信息,用来指导项目进度的监控、计划的调整,确保项目按时完成。
2、需求分析阶段
需求分析阶段的目的是在系统工作方面与用户达成一致。
(1)软件需求规约
详细说明系统将要实现的所有功能。
(2)用户界面原型
可以有三种表示方法:图纸(在纸上)、位图(绘图工具)、可执行文件(交互式)。
3、软件开发阶段
本阶段从物理上实现目标系统。采用了面向对象方法。
(1)软件架构
说明软件的组织结构、部署结构及运行环境。
(2)类设计
定义类之间的关联和类的属性、方法。
(3)数据库设计
定义数据库表之间的关联和各个表的字段。
(4)编码和单元测试
按照设计文档进行编码,每完成一个模块应进行单元测试。
(5)集成系统
按软件组织结构的要求将各个子系统组合起来。
4、测试阶段
测试的目的是在发布之前找出程序的错误。包括:核实每个模块是否正常运行(参考设计文档)、核实需求是否被正确实施(参考需求文档)。
(1)测试计划
收集和组织测试信息,为测试工作提供指导。
(2)测试数据
尽量使用真实数据。
(3)测试报告
记录测试结果,详细描述问题,提出解决办法。
(4)帮助文件和用户操作手册
5、管理软件开发过程
有以下几方面地工作:
(1)组织会议
讨论会议、总结会议等。
(2)评审程序
对各个阶段的工作结果进行审核。
(3)协调人员
(4)配置管理
使用一些配置管理工具进行开发文档管理,如:visual sourcesafe,teamsouce等
六、各参与角色的具体职责描述及对人员的要求
(1)项目经理
职责:
1、制定产品的目标。
2、制定各个工作的详细任务表,跟踪这些任务的执行情况,进行控制。
3、组织会议对程序进行评审。
4、综合具体情况,对各种不同方案进行取舍并做出决定。
5、协调各项目参与人员之间的关系。
人员要求:
对产品有激情,具有领导才能。
对问题能正确而迅速地做出确定。
能充分利用各种渠道和方法来解决问题。
能跟踪任务,有很好地日程观念。
能在压力下工作。
(2)系统分析员
职责:
1、了解用户需求,写出《软件需求规约》。
2、建立用户界面原型。
人员要求:担任系统分析员的人员应该善于协调,并且具有良好的沟通技巧。担任此角色的人员中必须要有具备业务和技术领域知识的人才。
(3)设计员
职责:
1、定义类的方法和属性以及各个类之间的关联,画出类图。
2、进行数据库设计。
人员要求:掌握面向对象分析与设计技术,统一建模语言(uml)。
(4)程序员
职责:按项目的要求进行编码和单元测试。
人员要求:良好的编程技能和测试技术。
(5)测试员
职责:执行测试,描述测试结果,提出问题解决方案。
人员要求:了解被测试的系统,具备诊断和解决问题的技能,编程技能。
第二篇:软件测试工程师职业规划
发布时间: 20xx-8-30 13:04 作者: 未知 来源: 51Testing软件测试网采编
初级测试工程师——入门级,具有一些手工测试经验,开发测试脚本并开始熟悉测试生存周期和测试技术;
测试工程师——能够独立编写自动测试脚本程序并担任测试编程初期的领导工作,进一步拓展编程语言、操作系统、网络与数据库方面的技能; 高级测试工程师——帮助开发或维护测试或编程标准与过程,负责同级的评审,并能够指导初级的测试工程师;
Team Leader——一般具有5年左右工作经验,负责管理一个小团队。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品,负责开发项目的技术方法,能够为用户提供支持与演示;
测试经理——能够担当测试领域内的整个开发生存周期业务,能够为用户提供交互和大量演示,负责项目成本、进度安排、计划和人员分工;
计划经理——具有多年纯熟的开发与支持(测试/质量保证)活动方面的经验,管理从事若干项目的人员以及整个开发生存周期,负责把握项目方向与盈亏责任。
职业规划:
1.第一阶段,学习自动化测试工具,学会编写脚本;
2.第二阶段,学习编写测试计划,测试方案,测试用例;
3.第三阶段,学习配置管理,版本控制,项目管理,bug管理;
4.第四阶段,转向做一个管理者.
每个人选择测试工程师职位的原因不尽相同.为了以后转开发积累经验的的,为了入门简单的,为了不加班的,有看好职业前景的,等等......
技术方向就沿着测试开发的路一直走下去.最终成为技术上的大拿,在一个公司里成为核心技术人员
这个方向对技术的积累要求最高,适于那些对管理没什么兴趣,就想专心做技术的人。要沿着这条路走下去,需要一直不断地在开发能力上的积累,并且还要求一定的知识广度和对职业的独特理解。
管理方向呢,工作个几年以后转向测试经理,以后的发展就多样了,质量总监\项目经理等等。
有些人说做管理不需要技术,却没想过作过一个技术工作,自己都不会的东西怎么去管理别人,当然也有例外,有些管理人员也的确是靠自己的人格魅力去让一个团队健康发展的。不过那只是极少数罢了。大多数测试管理人员也是需要在技术上有一定积累的。而且对于所有工作都一定要比较熟悉,黑白盒,自动化,性能,用例设计,配置管理,计划方案的设计等等,并且还要去调合团队内部的工作氛围,制定适当的激励机制,作为一个管理者绝不比一个技术人员需要积累的东西少。
而流程控制大概是选的人最少的,QA累死不讨好,最终成为一代终极流程控制顾问。
这一类工作需要有非常大的耐心和自信,需要在工作中对流程控制方面有自己的感悟,需要对理论很熟悉。对人的毅力也是个极大的考验呢。 其他的,还有做用例做到极至,做功能测试做到极至,做用户体验做到极至的等等,总之各种发展方向者需要努力的坚持,任何一个方向做好了都很好。 如果你是测试员或是高级测试员,有志转向管理发展,那么需要加强以下几点:
1. 测试计划的编写(要结合测试的项目,能以此来控制和确定测试所需人员,设备及时间来管理测试时间)
2. 要熟悉BUG跟踪工具及软件测试流程.(如: TD, Bugzilla, CQ等)
3. 要熟悉配置管理工具. (如: CVS, VSS等)
4. 要熟悉自动化工具.(例如:WinRunner, QTP, Robot, RFT, Automation等,能结合录制完的脚本编写代码)
5. 要熟悉压力及性能测试工具.(例如: LoadRunner, webload,
silkperformance等,能结合相关数据,分析出性能瓶颈)
6. 要熟悉或精通一门语言. (例如: Java, C++)
7. 要熟悉数据库.(例如: Oracle, DB2, SQLServer, MySQL)
8. 要熟悉主流操作系统. (例如: HP Unix, IBM AIX, Sun Solaris, Red Hat Linux, SuSE Linux, Windows)
9. 能用英文流利的和老外交流以及往来Email.
10. 语言表达能力强,表达问题清晰明了.
11. 沟通能力强,能和上级/开发经理很好的达成测试相关/BUG事宜.
12. 学习技术的能力要强,能快速上手一个新的技术.
13. 乐于与人交流.
初级测试工程师:刚走出大学校门或者刚从些培训机构出来的学员,之前没有或具备很少的测试经验,这个阶段主要是掌握最基本的测试方法、测试计划、测试用例、测试报告、环境搭建等。北京上海地区,该职位薪水一般在20xx-5000之间。
中级测试工程师:从事过2-3年实际工作的测试工程师,能够独立制定测试计划,编写测试用例,对初级测试工程师进行指导等。北京上海地区,该职位薪水一般在4000-6000之间。
达到中级测试工程师水准后,以后的发展可以存在多种方向:
管理方向:
测试组长:一般5人以下团队,能够同时承担2-3个较小项目(程序代码在5000行以下)或者1个中、大型项目(程序代码在5000行-25000行左右)。北京上海地区,该职位薪水一般在5000以上,好的过万。
测试经理:可以管理多个小型测试团队,能够承担多个中型及较大型项目的测试,及具备至少1个大型项目(程序代码在25000行以上)的测试管理能力。该职位薪水一般过万,年薪二三十万正常。
质量经理/项目管理:跳出测试的执行转而关注过程。SQA待遇差别比较大,但有2年以上测试或开发经验的人5000以上应该没问题,好的也过万。 技术方向:
白盒测试:这个由开发人员转过来的比较多,一般技术上要至少达到技术经理的水准。待遇比较好,一般7k以上,好的年薪二三十万。
自动化测试方向:熟练使用一种以上自动化测试工具,做的好的待遇与白盒测试有的一拼,一般6k以上,不过最近学的人多了,待遇贬值可能比较快。 测试分析师/技术总监:主要职责是对系统的测试结果进行综合的分析,例如缺陷分析、性能分析等。不但测试技术能力较强,还要具备数据库、操作系统等多方面的技术知识。这个待遇一般过万了吧.
行业测试专家:物以稀为贵,过万一般问题不大。
经历了以上一些阶段,大概在35岁左右,职业发展上基本达到瓶颈,此时只要混的不是很差收入一般可以算的上中产阶级,日子可能依然过的比较郁闷,之后的方向可能有做培训,咨询,自己开公司创业等。
好了,暂时先罗嗦这么多,具体的发展路线嘛各位八仙过海各显神通了!~ 入测试行已有五、六年,谈谈自己的规划和一些想法:
一、自己的规划:
做了几年之后,积累的了一些行业经验(电子商务型,电信通信行业)和管理经验(指的是测试管理),毕竟是女孩,这么多年一直都在不断地学习各种技术,总怕落后。时间长了,感觉还是很累,感觉比做开发累。所以将来的方向是:走管理路线。(当然这条线也不好走,但是做了2年管理后,感觉在这方面有一定能力,只要努力就一定会成功的)
做好测试:主动性强,有信心,能听取接纳别人的意见。( 自己悟出的)
二、对于测试新手来说,如何入行,需要具备的知识和能力
1、测试的基础理论知识,知道测试流程是什么?测试的常用的文档有哪些,该如何编写?测试方法有哪些?
方法:去一些测试论坛(如:51testing,测试时代,3atesting,一起测试网等)找些资料来学习。或者买一些测试的书籍。再有也可以参加测试培训。
2、要熟悉或精通一门语言. (例如: Java, C++,.net,VB,PB,Dephi),做到能读懂代码。当然能独立编写代码更好。
方法:学习一种比较流行的语言即可,因为时间有限不可能学很多开发语言。学习的过程一定要给自己制订时间计划,而且语言这东西最好结合实例来学习,主要学习设计思路。
3、要熟悉BUG跟踪工具.(如: TD, Bugzilla, CQ等),学习一种即可,主要能领悟出bug的处理流程是什么,如何管理。
方法:到网上看资料,装上工具适用。
4. 要熟悉配置管理工具. (如: CVS, VSS等),会一种即可,当然有时间的话,2种工具都会更好。
5. 精通OFFice系列工具,排版能力强。测试中经常会写文档,所以这方面要强。
6、要熟悉数据库.(例如: Oracle, DB2, SQLServer, MySQL),对一种数据库精通就可以了。
7、要熟悉主流操作系统. (例如: Red Hat Linux, Windows)
8、需要增强的能力:
学习能力强;表达能力强;耐心,细心,信心,责任心;能承受压力;沟通能力强。
以上这些,都是需要下功夫的,不能做表面功夫,那样的话,就算你入行后,会发现自己要学的东西会很多。
三、入行后,要学习的知识和能力:
1 、公司的文化和制度
2、熟悉业务,这块很重要,需要认真对待。
3、熟悉公司的开发流程和测试流程。
4、业务熟悉后,将自己所学的知识运用到实际工作中。提高自己的测试水平。
5、培养自己的沟通能力,与业务相关的所有人都能很好的沟通。
6、工作中遇到的问题及解决措施要及时总结整理。
7、针对公司的项目或产品选择适合的自动测试工具,帮助公司提高测试效率。
这一阶段重在:熟悉业务,熟悉工作流程
四、入行半年——1年后,要学习的知识和能力
1)提高编写用例的技巧。
2)熟悉一种单元测试工具。(针对公司的项目或产品使用的开发语言而定) 如果公司这块一直都是开发人员来做,暂且跳过。
3)熟悉一到两种自动化工具。(功能类和性能类的,如:WR,QTP,LR,ROBOT等)
建议:学习工具的话,一定要结合实际的项目,这样学得快而且效果比较好。
4)熟悉一种测试管理工具。
(呵呵,为以后做测试管理者打算)
5)了解新业务,开发的新技术。
这个阶段的重点:就是提高自己编写用例的水平,工具的使用。
五、多年以后,相信自己都自己的目标了。
1)如果做专职的性能测试工程师:精通一种性能测试工具,并能分析出瓶颈。(这点我没做到)(这些需要提高多方面的知识:服务器,中间件,开发,数据库等)
2)如果做自动化测试工程师,精通一种自动化工具,并能独立编写脚本,了解一些最新自动化测试方面的技术。
3)测试管理者。(技术+管理),哪方面薄弱就补哪块。多多听取别人的意见,改进自己身上的缺点。
不管做任何事,都要有目标。