更多原创文章请到个人我的博客网站:http://www.codetracer.cn/python
本次说下我对测试人员学习一门编程语言的心得与方法,仅我的愚见。程序员
测试人员掌握一门或者多门编程语言是必不可少的,许多测试人员对编程天生“恐惧”,其实编程并非你想象中那样触不可及。编程
许多测试人员为了提高,抱着一本书(或者电子书)“死啃”,效果确定是有,但不是最高效的,我并不推荐。在平时繁忙的工做当中,抽出大量的时间来学习,不大现实,有时候会由于紧张的工做不得不停下来,投入到工做中,待空闲时再继续学习编程,你又会发现许多以前看的内容又忘记了。其实编程语言就是这样的,你不用它,就会很快忘记。那么如何利用碎片化的时间高效的学习呢?后面我会一一为你们解惑,并提供我本身的看法与学习方法。数组
测试人员掌握的编程水平不能与专业的程序员相比,其中有两块区别,一是熟练度,二是思想经验,熟练度的差距会比较大一些,而思想境界上咱们能够无限的接近甚至超越程序员,就比如许多人玩LOL游戏,有人是大神,有些人是普通的玩家,对于同一个角色英雄,发挥出来的水平是不同的,你与大神的区别,一在熟练度上,二在思想境界上,为何会说熟练度差距大,程序员天天使用一编程语言,熟能生巧,编码敲击速度要快不少,这须要长时间的锻炼才能实现,测试人员天生没有这样的条件,熟练度差距天然很大,在思想境界上【所谓思想境界指的是对某类问题的解决方法】咱们能够与程序员很容易的接近,程序员解决这类问题,方法是这样的,你告诉了我,我懂了,那么这类问题之后我也能解决了,无非就是编码速度,代码规范的差距,结果都是同样的,程序员不可能天天都在解决没有遇到过的问题,大部分时间都是将已知问题的实现方式(方法、经验、思想)编码实现出来,若咱们将一些常见的问题的思想罗列出来,经过交流或者分享的方式,让你一一体会了解,是否是要相对容易些,懂了就是懂了【不纠结深层次的问题】,你懂了才能成为你本身的。程序员与程序员之间的能力差距,其中一点主要体如今思想境界上。多线程
那么到了这里又会产生另一个问题,别人在讲解或者分享某些问题的解决方法时,咱们可以理解么?就比如你在参加一个别人的分享会,你能彻底的吸取别人的思想么?请想想!这须要必定的基础。就比如一个物理学家在分享一个问题的解决方法时,你可以听懂么【不排除一些牛人】?如有另一个物理学家,也遇到该问题时,听完分享后,茅塞顿开,最终成功解决问题。由于他们在那一层次上有必定的基础。编程语言
若要吸取别人在编程上遇到问题的解决思想,你须要必定的基础,这些基础我将其概括为固定的知识,理解掌握别人的思想须要固定的知识点来做为支撑。学习
哪些是属于固定的知识?如:基本数据类型、字符串经常使用操做、数组经常使用操做、正则、文件目录操做、常见容器对象、日期、多进程、多线程等等这些基础知识属于固定的知识点。很容易理解,例如获取字符串的长度,就一个len方法,参数为字符串,返回字符串的长度,没有歧义。测试
若要使用一种编程语言的话,须要熟记这些基础知识么?没有必要,一种编程语言的固定基础知识点就比如一种编程语言的编程手册,这类书籍属于字典类书籍,你据说过有人会去背诵一本字典么?你所须要作到就是会用这本“字典”便可。技术组也在逐渐完善这类的公共的代码库,并根据经验整理出合适的字典,我这边称之为公共代码库,固然你也能够本身收集与整理固定知识点的体系【建议后期你们统一在公共代码库进行维护】。优化
公共代码库类的字典与咱们平时的新华字典的用法可不同,公共代码库中每一个知识点你须要所有的弄明白,你是否是以为不少?相反,这类的学习反而更加简单,由于每一个固定知识点已经没有任何的歧义,你只要理解、懂了就好了,可是有些东西得记住了,例如不一样容器的特性【数组:有序,可重复;集合:无序,不可重复等】等等(其中有部分的概念还须要稍大的篇幅去讲解,例如:理解多线程、多进程概念,线程、进程同步,锁的概念),你不用去记忆,你只须要按顺序把知识点都理解了便可。网站
关于公共代码库你只须要知道某一种知识点有或者没有,而且知晓其在公共代码库中的位置便可,好比我有一字符串,须要用python获取到该字符串的长度,或者扣取字符串中一段子字符串,这类小问题属于固定知识点可解决的问题,你只要知道好像有这样的固定知识点能够解决这样问题,而且能快速在公共代码库中查找到便可。
公共代码库只须要弄明白常见的知识点的含义,以及别人问起时,能够给出有或者没有,而且能找出其位置在哪便可。
有些人可能会问,这些我早就看了不少遍了,仍是无从下手,别着急,往下看。
想想一个复杂的问题是否是由多个稍小一点的问题组成,而有些稍小一点的问题又能够分为多个更小的子问题,当分解成的子问题已经不能在分以后,到了这里,这个复杂的问题咱们已经知道如何详细的去实现了,由于不能再细分的子问题都对应一个个固定的知识点【公共代码】。
到了这里有些人就明白了,这不就是分析问题的能力么?很是好,别人能想到该问题的分析方法,而我为何却没想到【没想到与想不到是有差距的,主要区别在于每一个人对基础知识掌握的广度与深度的不一样】,你没想到,我告诉了你如何的分析方法,你就懂了,就真正成为了你本身的东西。这类分析方法,其实就是经验、思想,他与某一固定的编程语言无关,有了经验、思想你学习更多的其余编程语言,会驾轻就熟,你常常会听到别人说编程语言之间基本上是想通的。
剩下的就是思想经验的吸取,何谓思想经验,在以前已经作过解释,这里再啰嗦下,公共代码库中都是解决一些小问题的公共代码,一些复杂问题【复杂问题也是由多个小问题组成】的解决方法、分析方法就是经验,有了固定的知识点做为支撑,听别人讲解一些问题的解决方法思想仍是比较容易接受的,无非就是多看看别人如何将一个大问题分解成多个小问题的过程,小问题只须要熟悉公共代码库便可,天然而然问题就能够解决了,这样才能真正让别人的经验变成为属于本身的经验,甚至基于你本身掌握公共代码库的广度加以优化,可以给出更加合适的解决方法,那么在这个问题的解决方法上你已经超越了对方。思想经验的吸取相对来讲就比较容易了,看别人代码或者与别人交流,只有体会后,在遇到时才会天然而然的想到。
以上仅仅只是我的在测试须要掌握一门编程语言方面的愚见,欢迎你们踊跃与我交流,说出你目前的困惑让我体会,一块儿完善我对这一块的理解,我会设计出最适合你们学习的方法。技术组会将更多的固定知识整理出来,后期我也会陆续给出测试人员在其余方面能力的看法,让你在其余方面的能力也能很是容易的提高起来。