经常有想转IT行业的同学,在了解软件测试和软件开发之后不知道转那个岗位好,今天就系统的,从多个维度来比较软件测试与软件开发,具体包括从基本素质要求、性格要求、入职门槛、知识结构、竞争压力、职业发展、职业前景等。希望能给在选择软件测试与开发朋友一个相对全面的解答。

一、【基本素质要求】

这里的基本素质包括比如逻辑思维能力、分析问题能力、沟通能力、协作能力、怀疑精神等方面。

【软件测试】: 作为一名优秀的测试工程师,需要比较强的综合素质,具体包括比如“五心”,责任心、细心、耐心、专心、信心等,具体这里不阐述了,可以看我以前的相关文章;五大“学问”,

逻辑学,很多公司在招聘的过程中会刻意来考察下测试工程师的逻辑思维能力。

刑侦学,测试工程师需要通过分析问题的表象,借助专业的工具,良好的知识背景来分析问题背后深层次的根本原因。

心理学,测试工程师,需要不仅仅站在用户的角度来测试,也需要清楚开发人员的心理,分析他们的出错模式。

统计学,测试报告就是统计学知识很好的展现。

经济学,好的测试一定是为了帮助提高软件质量,从而提高用户满意度,带来更多的市场,从而实现盈利。

沟通能力体现在测试工程师需要跟开发人员和用户沟通。协作和怀疑精神对于测试工程师而言也是非常重要的素质。

【软件开发】: 需要说明一点的是,这里指的软件开发更多倾向于软件编码,不包含软件设计以及软件需求分析人员,这个是软件编码未来的职业方向。作为一名优秀的开发工程师,在素质方面,更偏向于某一个方面,对逻辑思维能力的要求相对测试工程师较低一点。因为在成熟的开发模式下,普通的编码人员更多地师掌握一门开发语言的语法和一个开发平台。所以在印度高中生都能编程,但是在中国行不通。从这个方面来看,对“五心”的要求和对“五大学问”的要求没有那么全面。如果说测试更强调综合素质,那么开发更看重某些方面的素质。

二、【性格要求】

有人说性格决定命运,从某种意义上来说也是对的,性格会在一定程度上决定一个人的兴趣,一个人会喜欢那种类型的工作。

【软件测试】: 从全面性的角度来看,作为一名优秀的测试工程师,性格上最好是相对外向点,虽然这个不代表你需要像销售人员那样外向,善于与人交流。但起码你要愿意主动与开发人员,与用户沟通。另外,对于性格而言,要求测试工程师更加敏感,更具备怀疑精神,挑剔的,追求完美的性格以及刨根问底的心态也是比较重要的。从沟通的角度来看,太过于内向的人不太合适软件测试这个行业,起码不适合一线的测试工程师。

【软件开发】: 开发工程师对于性格来说,要求没有那么明显,性格的内向、外向跟成为一名优秀的开发工程师关系不大。因为开发工程师更多的是面对开发环境,不断在修改代码?这里面也有不少工作是重复繁琐的。所以性格上要求是能承受寂寞的。所以写代码写的比较久的人,有时会觉的很急躁。改变这种急躁的办法有两个,一个是争取去做有思想的设计,有沟通的需求分析。另一个是转型,比如做开发管理、产品经理、项目管理,亦或者是测试开发。

三、【入职门槛】

这个部分是为想进入软件测试和软件开发领域的人而专门写的。网络上很多人都在说,软件测试入职门槛低,软件开发入职门槛高。其实这个观点有失偏颇。下面具体来比较。

【软件测试】: 客观上来讲,进入软件测试领域的方式更多,但不是入职门槛更低,比如有些人可以通过行业知识背景进入软件测试领域,具体比如金蝶、用友都有不少测试工程师是学财务的,而不一定是学计算机的。甚至有些人可以通过性格和基本素质进入软件测试领域,比如微软以前招过家庭主妇做软件测试。

不是微软不重视测试,实际上微软比任何软件企业更重视软件测试,在微软所有产品里面,测试工程师比例比开发是要高的。还有些是从软件开发工程师转型做软件测试,所以进入软件测试领域的方式很多。正是因为方式多,就给人造成一种迹象是入职门槛低。还有从现状的角度来看,因为需求的因素,企业不经意间降低了对软件测试工程师的要求,但是这个是饮鸩止渴。很多企业慢慢发现了这个问题,所以说,以后测试工程师的要求会越来越高。

【软件开发】: 客观上来讲,进入软件开发领域方式相对较少,但也不是入职门槛更高,因为,在印度高中生都能编程。实际上掌握一门开发语言的语法,掌握一个开发平台,就可以做编码了。尤其在成熟的开发企业如此。但从学历的角度来看,高中生要想做软件测试还是非常困难的。只是因为,开发工程师必须要学一门编程语言,所以表面上看起来要求更高,还有一个因素是受传统因素的影响,做软件开发的人相比软件测试的人多很多,所以从竞争压力上来看,要求就更高了,是比较出来的高。

四、【转行难度】

转行,其实最重要的原因不外乎就是以下几点:对现在的薪酬不满意、现在的职业出现了瓶颈、新的行业有更大的发展空间,喜欢新的工作方式等。这里就不讨论转行的动机,这里考虑更多的是转行的障碍,主要的障碍有,如何结合自身实际情况选择转行的方向?如何克服工作经验不足或不相关?如何克服专业知识匮乏?什么样的年龄适合?这部分是为转行做软件开发还是软件测试的人专门写的。网络上也有人不少人都在说,我之所以转行来做软件测试,是因为入职门槛低,前景好,是因为学得会,而软件开发我学不会。真的是这样吗?不一定。适合的才是最好的。

【软件测试】: 自身的实际情况,包括前面讲的基本素质、性格特点等,以及入职门槛因素,如果综合素质很全面、性格外向、沟通能力强,有不错的行业知识背景。比如有金融背景、财务背景、物流行业背景、证券背景、电子商务背景、移动通信背景等等。同时年龄在35岁以下,转行测试会比较合适。经过专业知识学习,结合行业分析加上有经验的人得指导。转行的难度还是比较小的。可行性还是比较高的。因为可以利用好自身的过去的一些东西。

【软件开发】: 转行开发的角度来看,很难只靠基本素质和性格特点就轻易地转行,这个难度比较大,从过去的知识背景的角度来看,转行开发比较难以利用上。所以过去的经历对于转行开发几乎没有帮助,从这点来看,要转行开发,就必须接受从零开始,所以,年龄超过25岁,有过两年以及以上工作经验的人,不太合适转行开发。因为要浪费两年的工作经历。

五、【知识结构】

知识结构决定职业发展,知识结构决定行业发展,包括未来职业规划的考虑,下面从一个优秀的测试工程师应该具备的知识结构来对比软件测试与软件开发。

【软件测试】: 一个优秀的测试工程师需要的知识结构,从全面性角度来看,包括如下几个方面,第一是计算机知识,包括编程语言,掌握至少一门开发语言,比如c、java、C#等,一门脚本语言,比如Tcl、python、Perl、Ruby、Shell中对于测试工程师未来更广的职业发展非常有帮助。数据库知识,虽然并不是所有的测试工程师都需要掌握一门数据库,比如做移动互联网的,对数据库要求相对较低,但对于大部分大型项目,都会有数据库,所以掌握至少一门数据库,比如Oracle、DB2、Mysql等。另外操作系统,比如Linux、Unix核心命令也非常重要。

对于有些涉及到网络的,网络和通信知识,比如Tcp/IP协议也非常重要。另外数据结构、软件工程等其他计算机知识也最好也具备。第二部分是软件测试核心技术,掌握软件测试核心的方法论,具体包括软件测试需求分析与软件测试用例设计核心工程方法。掌握主流的软件测试工具,比如性能测试工具LoadRunner,自动化工具典型代表QTP,测试管理工具QC、开源测试管理工具Testlink、Bugzilla、Bugfree、Jira等。掌握核心的研发流程,比如RUP,测试流程,比如双V模型,或者是现在流行的敏捷测试等,也是同样重要。方法是秘笈、工具是兵器、流程是套路。虽然测试好比武术,棍术好比黑盒测试,剑术好比白盒测试。不同的武术对知识结构要求是不一样。这个也是前面讲到的进入软件测试领域的方式相比开发要多的原因之一。第三个部分是行业知识与背景,这个对于有些行业而言,非计算机专业的人会有些相对的优势。

【软件开发】: 一个优秀的软件开发工程师需要的知识结构,从全面性角度来看,包括如下几个方面,第一也是最重要的是精通至少一门编程语言语法,比如Java、C、C++、C#等,至少熟悉一个开发平台或工具,跟具体开发语言对应的平台,比如Eclipse、Netbeans、VC等。熟悉一门数据库,比如Oracle、DB2、Mysql等,熟悉操作系统,比如Linux、Unix包括相关的编译环境,比如gcc等。熟悉软件工程、熟悉算法、数据结构。这个方面可以多看看,设计模式方面的书籍。第二部分是英语,英语对于做好软件开发也有非常大的帮助,因为开发平台和环境都是英文为主。英语也有助于帮助理解一个编程语言的语法。

六、【竞争压力】

竞争压力的分析有助于帮助我们选择,选择大于努力指的是,同样花5年的时间,所能达到的不同的程度。竞争压力的大小取决于行业发展现状。行业越成熟,竞争压力越大。

【软件测试】: 软件测试的发展史相对于软件开发来看,相对来说是不太成熟的,尤其是在中国。从很多猎头招聘网站来看,想招一个10年左右测试经验的人,很难。原因是真正意义上软件测试的兴起基本上在2000年左右才开始。发展到今天,软件测试从业人员和软件开发从业人员的比例相比国外成熟的1:1的比例还是相差甚远。所以相对来说,竞争的压力相对较小。严格意义上来说,软件测试在中国的情况,还是乱世,所以乱世出英雄。另外,很多企业已经意识到软件测试对于软件质量的重要性,很多的软件事故迫使企业真正思考测试的核心价值。所以客观上也导致了,软件测试需求在增加,虽然对测试工程师的要求越来越高。

【软件开发】: 软件开发的发展史相比软件测试来看,相对来说还是比较成熟的,虽然相比印度等软件大国来看,远不如别人成熟。软件开发在2000年左右的时候很火,曾经有一句口号是“学好C++,走遍深圳都不怕”。当时的深圳严重缺少C++人才。但现在市面上其实不缺少初级的开发工程师了。因为初级的已经相对饱和了。另外做开发,如果3年时间内都只是做编码的工作,也会遇到职业瓶颈。另外从学习的角度来看,开发平台和语言的更新相比测试平台还是要快一点。所以客观意义上也导致软件开发的压力大些。另外在同一个企业里面,正常来讲,开发加班会比测试加班要多。

七、【职业发展】

关于职业发展,其实测试与开发的职业发展在有些方面是一致的,比如将来都可以往管理方向发展,也都可以考虑往需求分析方面发展。甚至也都可以往咨询和培训服务方面发展。这些是他们的共同点。

【软件测试】: 前面讲到过,软件测试从综合素质,知识结构等角度来看,要求比软件开发要更全面,这也直接导致了,软件测试的职业发展路线要广于软件开发,在测试技术领域,可以从测试执行工程师、测试设计工程师、测试系统工程师、测试架构工程师、测试专家这个道路晋升,也可以走比如自动化测试、测试开发、性能测试、易用性测试、安全性测试等专项。另外从管理的领域来看,可以从普通测试工程师,测试项目经理、测试主管、测试经理、测试总监、大部门测试总监等晋升。另外从外围IT职业,测试还可以走行业测试专家,比如金融领域测试专家,项目管理、软件测试咨询与培训等、软件质量保证(SQA)、软件销售、技术支持等只要是IT领域的职位都行。

【软件开发】: 软件开发的职业发展其实也比较广泛,在开发技术领域,可以从软件编码、软件设计与架构、软件需求等领域晋升。也可以从普通开发工程师、开发项目经理、开发经理、开发总监或者研发总监等晋升。另外也可以转型来做测试,通过学习测试关键技术,来做测试领域的测试开发。但从外围IT职业,开发相比测试能走的相对还是要窄些,很难走行业专家,除非先走需求分析,最后走行业专家。

八、【职业前景】

严格意义上来讲,软件开发和软件测试都有非常不错的职业前景。因为IT服务人类,IT改变人们的生活方式,IT对于现代社会而言非常重要。但从历史的角度来看,软件测试与软件开发的职业前景还是有一些区别的。

【软件测试】: 无论从行业现状,软件测试的重要性,以及软件测试发展史来看,至少在可以预见的未来10年时间内,整个软件测试行业应该会处于蓬勃发展这样一个生命周期中。因为一项职业从孕育、发展、成熟、稳定需要一定的时间来承载。这点,大家也可以从一些官方的数据来看到。

【软件开发】: 从相对于生命周期来看,软件开发早已经不是以前很多企业只是关注把软件做出来,就像现在要做出一个类似于淘宝的电子商城,其实从功能上,从代码实现上来看,已经很成熟了,花几千块可以买现成的模板,定制下,就可以。所以开发模式在改变,工厂化,模块化思想已经很成熟。所以将来的软件开发一定会关注,个性化、差异化。从这个意义上来看,软件开发的职业前景会受到需求的影响。另外,从行业资讯来看,比较新的开发技术会得到关注。老的慢慢会淡化。

总体而言,如果非得要在软件开发和软件测试做一个结论性的比较,还是比较困难的,所以给每一位看到此文章的人一个建议,如果你很难选择把哪个作为自己的职业来思考。就强烈建议你可以问下这两个领域资深的人,他们的建议对于你来说应该比较关键。

另外,清楚地问下如下几个问题:

1、你的优点是什么?缺点是什么?

2、你想做什么样的工作?你能做什么样的工作?

3、有哪些事情是一定要靠自己的,有哪些事情是一定要借助外力。

所以,有时我们不仅仅是要埋头干活,也需要抬头看路,另外,人生没有捷径可走,但要懂得借势而上。如果你对你的职业不满意,转行是一种选择,树挪死,人挪活。只是在挪的时候,分析下自己,因为你可以改变你自己。分析下外部的环境,因为你需要去适应环境。

在此基础上,可以进行一些可靠性,容错性,兼容性等用例的设计,测试下软件的稳定性。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱

看了这篇内容后,坚信以下两件事,也会对你的自我提升有一定的帮助:

1、点赞,让更多人能看到,同时你的认可也会鼓励我创作更多优质内容。

2、要让自己变得更强:想想,假如你是要在测试这个行业长期做下去,你的工作经验和测试技术是绝对不够的,你需要提升,你需要丰富你的技术栈!还等什么!

这一些资料,对做【软件测试】的朋友而言应该是较为完整了,这类学习资料也陪伴我走过了最艰难的路程,希望也可以帮助到你!万事要尽早,尤其是技术行业,一定要提升技术功底。

软件测试和软件开发哪个更好?相关推荐

  1. 软件测试和软件开发哪个发展更好

    经常有想转IT行业的同学,在了解软件测试和软件开发之后不知道转那个岗位好,今天就系统的,从多个维度来比较软件测试与软件开发,具体包括从基本素质要求.性格要求.入职门槛.知识结构.竞争压力.职业发展.职 ...

  2. 软件测试和软件开发哪个发展更好?我来告诉你怎么选

    目录 一.基本素质要求 二.性格要求 三.入职门槛 四.转行难度 五.知识结构 六.竞争压力 七.职业发展 八.职业前景 总结 一.基本素质要求 这里的基本素质包括比如速辑思维能力.分析问题能力.沟通 ...

  3. 【软件质量保证与测试】2.4软件测试与软件开发的关系

    文章目录 1. 软件测试与软件开发过程关系概述 2. 软件测试在软件开发生命周期中的位置 2.1 软件开发生命周期 2.1.1 软件规划阶段测试 2.1.2 软件设计阶段测试 2.1.3 软件开发阶段 ...

  4. 软件测试对比软件开发,你适合哪款?

    通常二选一,最残酷.选择一种必然要放弃另一种.但是对于测试和开发,你中有我,我中有你才是最高境界.到底哪款适合你呢? 一个测试员的"宽度" 掌握软件测试的理论知识:软件测试定义.软 ...

  5. 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

    文章目录 1. 软件概述 1.1 软件生命周期 1.2 软件开发模型 1.2.1 瀑布模型 1.2.2 快速原型模型 1.2.3 迭代模型(增量模型或演化模型) 1.2.4 螺旋模型 1.2.5 敏捷 ...

  6. 2.3软件测试与软件开发的关系

    软件测试与软件开发的关系: 测试活动在开发之后 测试与开发同步进行,最后再进行总的测试 没有开发就没有测试 不同的软件开发模型中,测试所处位置不同 瀑布模型与测试活动 测试是在软件开发之后进行的活动 ...

  7. 软件测试与软件开发的关系是怎样的?

    软件中出现的问题并不一定都是由编码引起的,软件在编码之前都会经过问题定义.需求分析.软件设计等阶段,软件中的问题也可能是前期阶段引起的,如需求不清晰.软件设计有纰漏等,因此在软件项目的各个阶段进行测试 ...

  8. 狮虎论:软件测试和软件开发到底哪个实际工资更高

    作为一名tester,我觉得测试工资从整体感觉上来讲,的确比开发要低一些.但是最终达到一定高度后(同样是10年工龄),测试工资不比开发的工资低,甚至还会比开发更高(职友集证据可证明). 本文将从下面三 ...

  9. 软件开发生命周期中的设计阶段_什么是软件生命周期模型?软件测试和软件开发的关系分析!...

    软件生命周期这个词,对于大部分人应该比较陌生,但却不容忽视!正因为它的重要性,才有许多不同的软件开发生命周期模型,但是它们都有一个共同的特点,那就是在生命周期中的某一时刻,软件都会被测试.今天我就和大 ...

最新文章

  1. matlab反馈模型,—倒立摆状态反馈系统的建模及matlab仿真.docx
  2. [算法][递归] 棋盘覆盖
  3. Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究
  4. React官方文档学习笔记(二)
  5. eclipse java jdk_设置Eclipse和Java JDK
  6. mysql高效sql语句_高效SQL优化 非常好用的SQL语句优化34条
  7. 好记性不如烂笔头,记录几个常用的Linux操作
  8. Java成员方法的声明和调用
  9. java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...
  10. 单片机 实现计算机键盘录制,用单片机实现PC键盘输入.doc
  11. 指针 数组指针 指针数组 函数指针等说明。
  12. 3.8 Softmax 回归
  13. c语言新手的无奈,几个新手容易犯的错误
  14. Linux常用软件包安装工具及配置方法(apt-get, pip, dpkg)
  15. MOSS的备份与还原
  16. ASP网站实例教程:IIS安装配置
  17. easyui图片放大功能(取巧)
  18. vue3 ref 和 reactive 区别
  19. WebAssembly 学习笔记
  20. 两种开源聊天机器人的性能测试(一)——ChatterBot

热门文章

  1. 豆瓣电影数据获取APP(已完成)
  2. java 添加附件_java发送邮件(一)--补充添加附件
  3. Netty版本升级血泪史之线程篇
  4. 怎么查看男人是否健康?
  5. win10添加美式键盘_在win10中使用多种键盘布局,你知道如何操作吗
  6. PMP的报考费用都有哪些呢?
  7. adobe安装127、183、191?关于Adobe软件安装失败的各类错误代码
  8. 扁平线圈绕线机的优势
  9. 全网最全的ResNet(残差神经网络)介绍
  10. 手机成语大词典java 手机词典