编程新手如何快速提高开发能力
假如我的编程语言只懂基础,但是想开发一个软件,我需要怎么做?
假如我的编程语言只懂基础,但是想开发一个软件,我需要怎么做?
先定义好这个软件的功能,界面,要有哪些数据的输入输出。
把这些写好,如果有界面就画出来,用笔画,ui设计软件画都行。甚至可以把基本原型用ui软件设计出来。
然后针对每一项元素、功能,设计数据结构,处理流程。把每个都看成一项任务。
针对每一个实现的元素,功能,开始编码。有问题就开始搜索资料和源码,看看有没有适合的框架能够减轻工作量,试着把任务一项一项实现。
这就是基于搜索引擎的边学边练的方法。
测试开发工程师如何养成的?有可能会和开发人员比写代码能力吗?
首先,其实题主的问题还是很实诚的,我刚开始做测试的时候其实也是这个心态,想转开发,也学习了很多的语言,个人觉得这是职业危机感的表现,挺好的,也相信题主不管去做开发和测试都会去不断的学习和进步。
好吧,正文来了,测试究竟是做什么的?以下是我不久前分享过的一篇文章,我直接拿过来回答第一个问题吧(还顺便解决了测试人员的发展问题)
—————————————————
测试可以做什么
谈到测试人员的发展,首先再回过头来看看整个项目期间测试人员做的事情或者说能够做的事情吧以及需要具备的对应的能力吧!
1、版本或者产品的规划阶段:
作为一个测试人员,这个时候可以从一个更高的角度对产品的规划提出自己的想法,来更好的帮助产品取得成功。
需要具备的能力或者知识:对于产品的商业理解以及整个行业和市场的理解都比较深入,实际上这个时候我们可以将自己看成是一个产品经理。
2、版本的需求阶段:
测试人员已经能够开始做需求阶段的缺陷预防,保证需求是能够满足用户的原始需求,并且整个需求都是非常清晰和合理的,版本后期没有需求不合理或者需求不清晰的问题。
需要具备的能力或者知识:对于客户的使用场景非常清楚,能够在客户角度上面思考问题;有自己的一套需求分析的方法,最好是模型或者checklist之类的;非常好的分析能力,能够通过需求文档分析到可能潜在的问题。
3、设计阶段:
测试人员开始做设计阶段的缺陷预防,能够对于研发的整个设计方案非常清楚,能够根据研发设计文档里面的业务逻辑图自己能够站在测试的角度来画出一份让测试人员更加容易理解的业务逻辑图,并且能够发现研发在设计方案上存在的一些问题,并且指导研发进行修改。
需要具备的能力或者知识:比较深入的业务背景知识;熟悉开发使用的语言;业务分析和转换的能力;
4、编码阶段:
测试人员开始编写单元测试、接口测试用例、测试工具或者自动化测试用例,并且开始思考后面如何去更好的测试(更高的效率,更好的保证质量),并且帮助研发提前做好编码阶段的缺陷预防,甚至做得测试驱动开发。
需要具备的能力或者技能:熟悉开发使用的编码语言、能够对开发的代码进行静态走读、熟悉开发使用的编码语言的单元或者接口测试方法和框架、具备测试工具开发的能力、具备自动化的能力,良好的代码分析能力和用例设计能力。
5、测试阶段:
测试人员开始制定测试策略和测试计划、执行测试用例、发现和定位bug、跟踪和回归bug,质量分析,有效的探索性测试等等,目的是花更短的时间来更好的保证质量。
具备的能力或者技能:制定策略和计划的能力、执行能力、分析和排查问题的能力,业务的理解能力,对代码的熟悉程度,模块的质量分析能力等等!
ok,总结下上面用到的一些能力和技能,以及每种能力对自己的帮助
1、产品的商业理解能力--产品经理(马云、马化腾、周鸿祎等都是这样的人)
2、需求的分析能力和市场的理解能力--也是向产品经理方向发展
3、业务背景知识--能够让自己在该领域走的更远
4、开发使用的编程语言--这个应该是自己深入到代码级别一个比较基础的东西,对于自己对代码进行测试是非常有帮助的
5、业务的分析能力---养成这样的习惯后会有一套自己的分析方法,对于自己在测试领域的发展的很有帮助的,现在测试界的一些公共测试技术里面就有包含这些
6、单元测试能力--这个让自己走向白盒测试工程师是很有帮助的,也是能够让自己跟开发走的更紧点
7、接口测试能力--应该是向单元测试的一个过渡,能够让自己更好的接触到业务逻辑
8、自动化开发能力和工具开发能力--这个就不用说了,现在已经有专门的自动化人员和工具开发人员了
9、用例设计和测试分析能力--测试人员一个很基本的能力,但是真正做好的其实比较少,如果用例设计的质量很高的人其他方面的能力肯定很不错,而且有了自己的一套方法后对于自己在测试领域的发展是很有帮助的,需要不断的总结和分析,将经验抽象为方法或者模型
10、执行能力--测试人员(应该是所有的工作)都需要具备的一个能力吧,如果做好的话其实对自己的帮助也是比较大的
11、发现bug的能力--这个时候对于测试人员的发散思维很重要(个人觉得是衡量真正的测试人员一个比较最重要因素,没有之一),有些测试人员就是能够沉迷于此
12、定位bug的能力--其实这应该是测试人员一个很基本的技能,但是我们都是交给研发去做了,如果将前期的工作做起来的话,我们是应该具备这样的能力的
13、分析和排查问题的能力--分析能力是测试人员一个非常重要的能力,一个好的测试人员总是能够根据目前的一些现象发现一些本质上面的东西,并且有自己的解决问题的方法
14、制定策略和计划的能力--这个发展方向应该是项目经理或者管理方向吧,但是对于测试人员也是很有帮助的,对于自己从一个整理上面理解问题很有帮助
当然,以上这些能力测试人员不用每一项都掌握的非常熟练,可以根据职业发展方向归纳为如下几项:
1、产品经理
2、白盒测试工程师(叫开发测试工程师其实更加合适)
3、自动化开发工程师
4、资深的测试工程师或者测试专家(可能需要包括以上超过10个技能并且能力都要达到一定级别)
5、项目经理
其他的几点就不说了,这里重点说下达到资深的测试工程师或者测试专家(其实就是测试界的大牛)级别需要的一些条件吧!这个也是笔者一直比较欣赏的一个职业,可是目前这方面的人确实比较少,很多人半路走上了管理岗位!
1、看下自己是否真的适合这样的职业(很享受去发现一些bug,特别是经过自己思考后发现的一些别人没有发现的bug),这个可以在刚进入测试行业就看出来
2、一个好的平台:从目前来看,很多公司是没有办法给一个测试人员提供学习以上能力的机会的,建议是能够尽量找到这样的一个平台(当然也需要不断的证明自己是一个人才)
3、在一线测试呆尽量长的时间,并且反复磨练自己上面的一些能力(没有最高只有更高),这就是所谓的十年磨一剑,这样需要很大的勇气,但是在这个浮躁的行业里面做到坚持实际上是很难的,很多人都是耐不住寂寞的。如果你做到了你就赢了
4、不断的积累的和总结(总结是自己获得经验一个非常宝贵的方法,也是让自己进步更快的一个方法)
5、开始将自己的一些方法抽象出来,形成一些比较通用的方法,并且不断的尝试运用到实践中,证明这个方法是ok的,形成一些理论
6、完善,实践,推广,再完善,再实践,再推广.....相信这个时候,你已经是数一数二的高手了,再加上自己的一些推销自己的方法,提升自己的品牌意识,剩下的就不用说了,当然,学习无止境.........
————————————————
第二个问题,关于测试转开发的问题,这个其实不是问题,只要你从来没有放弃过写代码。首先,其实题主的问题还是很实诚的,我刚开始做测试的时候其实也是这个心态,想转开发,也学习了很多的语言,个人觉得这是职业危机感的表现,挺好的,也相信题主不管去做开发和测试都会去不断的学习和进步。
好吧,正文来了,先回答第一个问题:测试究竟是做什么的?以下是我不久前分享过的一篇文章,我直接拿过来回答第一个问题吧(还顺便解决了测试人员的发展问题)
—————————————————
测试可以做什么
谈到测试人员的发展,首先再回过头来看看整个项目期间测试人员做的事情或者说能够做的事情吧以及需要具备的对应的能力吧!
1、版本或者产品的规划阶段:
作为一个测试人员,这个时候可以从一个更高的角度对产品的规划提出自己的想法,来更好的帮助产品取得成功。
需要具备的能力或者知识:对于产品的商业理解以及整个行业和市场的理解都比较深入,实际上这个时候我们可以将自己看成是一个产品经理。
2、版本的需求阶段:
测试人员已经能够开始做需求阶段的缺陷预防,保证需求是能够满足用户的原始需求,并且整个需求都是非常清晰和合理的,版本后期没有需求不合理或者需求不清晰的问题。
需要具备的能力或者知识:对于客户的使用场景非常清楚,能够在客户角度上面思考问题;有自己的一套需求分析的方法,最好是模型或者checklist之类的;非常好的分析能力,能够通过需求文档分析到可能潜在的问题。
3、设计阶段:
测试人员开始做设计阶段的缺陷预防,能够对于研发的整个设计方案非常清楚,能够根据研发设计文档里面的业务逻辑图自己能够站在测试的角度来画出一份让测试人员更加容易理解的业务逻辑图,并且能够发现研发在设计方案上存在的一些问题,并且指导研发进行修改。
需要具备的能力或者知识:比较深入的业务背景知识;熟悉开发使用的语言;业务分析和转换的能力;
4、编码阶段:
测试人员开始编写单元测试、接口测试用例、测试工具或者自动化测试用例,并且开始思考后面如何去更好的测试(更高的效率,更好的保证质量),并且帮助研发提前做好编码阶段的缺陷预防,甚至做得测试驱动开发。
需要具备的能力或者技能:熟悉开发使用的编码语言、能够对开发的代码进行静态走读、熟悉开发使用的编码语言的单元或者接口测试方法和框架、具备测试工具开发的能力、具备自动化的能力,良好的代码分析能力和用例设计能力。
5、测试阶段:
测试人员开始制定测试策略和测试计划、执行测试用例、发现和定位bug、跟踪和回归bug,质量分析,有效的探索性测试等等,目的是花更短的时间来更好的保证质量。
具备的能力或者技能:制定策略和计划的能力、执行能力、分析和排查问题的能力,业务的理解能力,对代码的熟悉程度,模块的质量分析能力等等!
ok,总结下上面用到的一些能力和技能,以及每种能力对自己的帮助
1、产品的商业理解能力--产品经理(马云、马化腾、周鸿祎等都是这样的人)
2、需求的分析能力和市场的理解能力--也是向产品经理方向发展
3、业务背景知识--能够让自己在该领域走的更远
4、开发使用的编程语言--这个应该是自己深入到代码级别一个比较基础的东西,对于自己对代码进行测试是非常有帮助的
5、业务的分析能力---养成这样的习惯后会有一套自己的分析方法,对于自己在测试领域的发展的很有帮助的,现在测试界的一些公共测试技术里面就有包含这些
6、单元测试能力--这个让自己走向白盒测试工程师是很有帮助的,也是能够让自己跟开发走的更紧点
7、接口测试能力--应该是向单元测试的一个过渡,能够让自己更好的接触到业务逻辑
8、自动化开发能力和工具开发能力--这个就不用说了,现在已经有专门的自动化人员和工具开发人员了
9、用例设计和测试分析能力--测试人员一个很基本的能力,但是真正做好的其实比较少,如果用例设计的质量很高的人其他方面的能力肯定很不错,而且有了自己的一套方法后对于自己在测试领域的发展是很有帮助的,需要不断的总结和分析,将经验抽象为方法或者模型
10、执行能力--测试人员(应该是所有的工作)都需要具备的一个能力吧,如果做好的话其实对自己的帮助也是比较大的
11、发现bug的能力--这个时候对于测试人员的发散思维很重要(个人觉得是衡量真正的测试人员一个比较最重要因素,没有之一),有些测试人员就是能够沉迷于此
12、定位bug的能力--其实这应该是测试人员一个很基本的技能,但是我们都是交给研发去做了,如果将前期的工作做起来的话,我们是应该具备这样的能力的
13、分析和排查问题的能力--分析能力是测试人员一个非常重要的能力,一个好的测试人员总是能够根据目前的一些现象发现一些本质上面的东西,并且有自己的解决问题的方法
14、制定策略和计划的能力--这个发展方向应该是项目经理或者管理方向吧,但是对于测试人员也是很有帮助的,对于自己从一个整理上面理解问题很有帮助
当然,以上这些能力测试人员不用每一项都掌握的非常熟练,可以根据职业发展方向归纳为如下几项:
1、产品经理
2、白盒测试工程师(叫开发测试工程师其实更加合适)
3、自动化开发工程师
4、资深的测试工程师或者测试专家(可能需要包括以上超过10个技能并且能力都要达到一定级别)
5、项目经理
其他的几点就不说了,这里重点说下达到资深的测试工程师或者测试专家(其实就是测试界的大牛)级别需要的一些条件吧!这个也是笔者一直比较欣赏的一个职业,可是目前这方面的人确实比较少,很多人半路走上了管理岗位!
1、看下自己是否真的适合这样的职业(很享受去发现一些bug,特别是经过自己思考后发现的一些别人没有发现的bug),这个可以在刚进入测试行业就看出来
2、一个好的平台:从目前来看,很多公司是没有办法给一个测试人员提供学习以上能力的机会的,建议是能够尽量找到这样的一个平台(当然也需要不断的证明自己是一个人才)
3、在一线测试呆尽量长的时间,并且反复磨练自己上面的一些能力(没有最高只有更高),这就是所谓的十年磨一剑,这样需要很大的勇气,但是在这个浮躁的行业里面做到坚持实际上是很难的,很多人都是耐不住寂寞的。如果你做到了你就赢了
4、不断的积累的和总结(总结是自己获得经验一个非常宝贵的方法,也是让自己进步更快的一个方法)
5、开始将自己的一些方法抽象出来,形成一些比较通用的方法,并且不断的尝试运用到实践中,证明这个方法是ok的,形成一些理论
6、完善,实践,推广,再完善,再实践,再推广.....相信这个时候,你已经是数一数二的高手了,再加上自己的一些推销自己的方法,提升自己的品牌意识,剩下的就不用说了,当然,学习无止境.........
————————————————
第二个问题,关于测试转开发的问题,这个其实不是问题,只要你从来没有放弃过写代码。