给自学测试的新手一点建议

导读

在我的测试从业者交流群(QQ169974486)中,常有测试新手和期望转行测试岗的朋友提问:有什么书籍资料推荐?

在过去,我不止一次的给测试新手分享我曾经的工作经历和心得,以期给新手一些指导。但建议零零散散,缺少一个大纲性的东西,这也是今天我写这篇文章的原因。

当看到有人问到这个问题,我知道这些朋友需要的其实不止是我推荐一些书籍,也许他们需要更多的建议。今天的文章里,我尝试回答以下几个问题,水平有限,如有不同意见,敬请留言交流。

  1. 需不需要报一个培训班?
  2. 自学应该看哪些书籍?
  3. 自学测试知识需要注意什么?可能会遇到哪些问题?
  4. 职业初期适合找什么类型的公司?

01

问题1:报一个培训班?

如果你曾跟其他测试从业者咨询过这个问题,我猜测大多数人会给出否定的答案。他们会告诉你,测试“入门门槛很低”,“随便找点资料学一学就能找到工作”,“先找一份工作然后在工作中混经验”....

在给出我的看法之前,我觉得有必要来讨论如下几个问题:

  1. 上面这些建议一般是哪类人给出的?他们为什么会这么说?
  2. 自学和报班有什么区别?
  3. 如果报班,需要关注哪些方面?
  4. 我的学生在培训期间暴露出哪些问题?
  5. “随便找个工作混经验”,这样的做法有什么利弊?

根据我的经验,极少有测试行业里的翘楚会给出上面的建议。这意味着,你需要慎重对待这类建议。

给出这些建议的人群中,既包括做测试工作一两年的“萌新”,也包括一些做了七八年甚至十年的“老手”。他们根据自身的经历(无论他们是否曾经参加过专业培训),认为并不需要参加培训即可获得测试人员需要的技能。那么,在他们看来,测试人员需要什么样的技能呢?我给出一个不负责的推测——写文档,找bug,仅此而已。很多人觉得测试人员的工作就是通过“点点点”找bug,因为这就是他们的全部工作内容。但可能他们忽略了,找bug只是我们测试人员实现我们工作目标的一个“手段”,且仅依靠这个“手段”无法保证我们的工作结果“出色”。

我们测试人员的工作是保证项目在规定期限内以尽可能高的质量上线。想要实现这个目标,测试人员需要掌握非常多的技能和知识,比如流程,资源的调配,以及当下流行的自动化技术等等,或者我可以问一个更具体的问题:回顾你历往经历,有多少次测试任务是以“出色”完成的呢?是否经常连测试范围都难以界定?或者常常无法在规定时间内完成测试?(说到这里,可能会有朋友会说,工作中会有各种各样的困难阻碍我们把工作做好,很难甚至不可能做到理想的程度。相信我,朋友。我经历过的困难足够多,我相信你当前遇到的困难中,多数都是可以解决的。)

言归正传,除了上面这个原因,还有一个原因不得不提,即当下培训机构龙蛇混杂,极少有培训机构是以“教学生真正实用的测试技能”为目的。这也意味着,多数培训机构的教学水平令人堪忧(据我所知,有的培训机构甚至录用没有企业实际测试经验的人做老师),学员经过长期的培训,花了钱花了时间,缺得不到真正的提升,也许他们得到的,只是一堆不知如何使用的理论和应付面试官的技巧。不得不提的是,在大多数面试官眼里,测试培训机构都是“坑钱的”“骗人的”,所以极少有人会建议你去报名培训班。

那么,什么情况适合报班学习呢?

  1. 自律能力不足:俗话说太容易得到的东西就不会珍惜。报了班,花了钱,自然会很大程度上对自己进行约束。
  2. 自学能力差:在我的学生中,不乏自学了一段时间之后,还是没有搞清楚测试人员究竟干什么,也有人自学后花了几个月时间仍然没有找到一份测试工作。
  3. 希望更快速的得到一份测试工作:系统学习比“野蛮生长”花的时间和精力更少,在学习过程中的困难也有专人解答。相比自学,得到测试工作的时间会大幅减少。
  4. 希望得到实际项目经验:网上可以轻松找到测试流程相关的介绍,也可以找到很多练手的项目,但初学者并不清楚两者怎么结合。
  5. 得到测试设计的指导:测试需求分析和测试用例的设计,是测试人员非常基本且重要的能力。在我的培训班中,三分之一的时间都是花在这两方面的锻炼。
  6. 得到优秀的企业实践经验:结合上一条,好的培训结构会带学生体验不同类型企业的测试流程,比如BAT、互联网公司、传统软件公司、外包公司等。通过这样的体验,可以更深的理解测试流程,知其然亦知其所以然,在工作以后少走弯路。
  7. 工作以后提升更快:培训机构的老师,都会在学生就业后持续跟进和辅导。比如我的学生常常让我帮他们分析测试需求、辅助编写测试文档。这样可以让他们在入职初期更快的适应工作,并在转正之后比其他人得到更多的提拔机会。
  8. 职业规划:测试行业是一个入门门槛低但提升困难的行业,每个人情况都不同,适合走的路也不同。非常多的测试从业者在工作三年之后会进入迷茫期,而优秀的培训机构可以根据学生各自的情况帮助学生尽快走出瓶颈期。

02

应该看哪些书?

网上可以搜索到非常多的书籍,但书籍稂莠不齐,且并非所有书籍都适合初学者。另外,测试行业可以说是一个日新月异的产业,以前曾经被奉为经典的书籍可能当下已经并不合适。

在以前的文章中,曾经给新手推荐了涵盖测试技术、质量管理、项目管理、工作技巧、逻辑思维等数个方面的几十本书,但推荐太多也带来一个问题:很多人不清楚应该选择哪本书开始读。所以这一次我们简单一点,只给大家推荐几本书。

需求分析:《淘宝十年产品事》

测试方法和流程:

  • 《微软的软件测试之道 》
  • 《How Google Tests Software》
  • 《探索式软件测试 》

逻辑思维:《批判性思维》

工作方法:《麦肯锡工作法》

需要说明的是,软件测试是一门复杂而博大且没有专门教材的学科,想要把软件测试这份工作做好,需要掌握的知识非常多。除了测试领域的知识,还需要深入研究质量管理、项目管理、逻辑思维等方面。在这一点上,网上推荐的书籍存在不足,因为他们只会给你推荐软件测试领域的书籍。

作为初学者,在入行之对测试建立兴趣很重要。你可以根据自己在哪些方面有欠缺或者需要用到,挑着读一读。

03

自学需注意什么?

《大学的终结》这本书里里面讲到,曾经有很多人想要通过各种方式来颠覆大学,包括早期的邮政(即函授)、广播、电视以及知名大学创办的网络自学平台。他们的做法就是把知识通过音视频的方式搬到这些媒介上,但最后都失败了。为什么呢?究其原因,无外乎很多人即使坐在线下的课堂上都未必能听懂老师讲的内容。所以你能发现,教育和知识是两回事,你单单把知识给到学生,这不叫教育,教育还包括一系列后期的互动。

简单说一下我的看法:

学习目标:

掌握软件测试的基本概念、掌握常见的测试方法和类型以及软件测试的流程,会分析需求,并能熟练的应用常见的用例设计方法来设计测试用例,并知道如何进行每个阶段的测试。

各个阶段学习内容:

第一阶段:测试基础(理解,能用自己的话复述,会动手)

  • 测试的分类、测试方法、测试生命周期。
  • 测试计划、测试用例的编写。
  • BUG的分类、BUG的六要素、BUG的生命周期。
  • 开发模型(了解即可,不理解也没有关系)、测试模型(结合实际项目来掌握,可以从重测、开源中国下载项目练手)、敏捷迭代下的测试流程以及功能测试。
  • 质量管理体系CMMI(了解)。

第二阶段:测试工具(自学时会用即可,不必精通)

本文针对“新手”,只推荐新手需要掌握的工作。关于技能提升方面的建议会另行介绍。

  • 需求分析工具:Mindmanager、Visio
  • 用例编写:Excel(相关函数、统计、数据整合、条件判定、数据有效性等)
  • 性能测试工具:Loadrunner、Jmeter。
  • 接口调试工具:Postman
  • 抓包工具:Fiddle(捕获请求、修改请求)
  • 数据库:Mysql下的sql语法、Navicat(会基本的增删查改,会批量插入或修改数据)
  • 项目/BUG管理工具:禅道(完整走完至少一个项目的流程,会创建用例库、测试集、规划用例执行等)
  • 操作系统:Linux(搭建测试环境,会查日志初步定为问题)

关于性能测试,在一些中小型公司,其实只要会工具的使用,基本就能完成性能测试任务。但在复杂的项目中,或者一些大型企业,只学习工具是远远不够的,还包括性能场景分析,加压,性能调优。比如分析性能场景,要考虑每项业务使用人数、比例,使用人数是否随时间段变化,比如早晨登录操作比较多,十点业务比较多,这种情况每个时间点都要制定出各项业务的占比和人数。再比如加压和监控,要在出现瓶颈时分析是代码问题、负载机瓶颈、网络瓶颈(如网口是否足够)、硬件瓶颈(如cpu 和内存)、数据库瓶颈(如数据库命中率)还是中间件瓶颈等等。

第三阶段:代码学习

不懂代码,也可以完成一部分测试任务。但懂代码,可以让我们更好的跟开发人员交流,更好的界定测试范围,以及发现bug之后更轻松的分析和定位。更何况,招聘信息里一条都有“了解或掌握一门编程语言"。

没有计算机编程语言基础的朋友,建议从Python开始学习,一是简单易懂,二来这门语言应用也越来越广泛。

学习资料方面,RUNOOB.COM、慕课网、廖雪峰的官方网站都可以找到。

学习目标方面,从跟我咨询的朋友来看,多数人在初步入门之后就基本明确了学习目标。比如需要选择什么框架,掌握什么架构。如果不以找一份自动化测试工程师为目标,大概五千行代码量就足以。

顺便吐槽一句,现在很多培训机构都在培训一些过时的工具,网上也有人推荐某些工具。但这类工具目前在企业中使用率极低,比如QTP。所以,决定学习某个工具之前,可以跟我聊一下这个工具是否值得学习。

04

找什么样的公司?

关于这一条,网上的说法仁者见仁。从我的角度,其实还是看个人情况。

比如你希望得到大企业的锻炼机会自身水平又达不到大企业的录用标准,可以尝试外包。

比如你希望自己早期多锻炼一下,成为一个“全能型”人才,可以考虑中小型传统软件公司。

比如你希望后期进入一家知名互联网公司,可以先从一些创业中的互联网公司做起。

比如你希望得到大企业的工作背景,那就努力去应聘大企业。

......

......

有一个悲观的事实,企业并不是我们想去就能去,而且非常多的人并不清楚自己需要什么,或者应该锻炼什么。

说一下我的经历,大家可以参考。

第一份工作是在TCS,以前是印度第一大集团,号称软件咨询业世界第二,当初在杭州很有名气。这份工作中我的工作内容非常单一,能力锻炼的也不多。从职业技能锻炼这个角度,可以说有点失败。好处就是跳槽时有一份大企业工作的背景,面试时加分很多。

第二份工作是在大华,世界前三的安防企业,这份工作开始真正测试,当时的主要锻炼了数据库和bug定位方面的能力,其他方面也极少。

后来回到青岛,思考了一段时间,觉得自己需要沉淀一些东西,所以去了一家本地软件公司,华正。工作之后负责把测试融入项目开发流程,并搭建测试团队。这份工作挑战很大,也让我的各方面能力快速成长,并积累了很多人脉。如果要从中挑出最大的好处,我想应该是这家公司的老板对我的信任和“纵容”了,我是那种如果心里有疑惑就要想方设法去验证的人,在当时,我给自己的定位是业务能力低下,情商特低不通人情世故的人,有很多东西都不知道如何去做,或者知道应该那么做但不清楚为什么要那么做(其中既有专业技能,也有很多人情世故方面的),主观感受是“好”的,但我不知道它们好在哪里;主观感受是“坏”的,我也不知道他们坏在哪里。这家公司给我非常多的“试错”机会。所以我常常建议若有机会,可以去有潜力的小公司,特别是能让你独当一面的公司,成长会远超预期。在后来我的管理生涯中,我也坚持贯彻一点,就是多给员工“试错”的机会,拿布置测试任务来说,在自己交代了测试任务之后,就不再对下属指手画脚,不强求他们按照我的想法去做,而是让他们自由发挥,很多时候眼睁睁的看着他们“犯错”,我只把握大方向。说实话这过程很难受,但我知道这对员工来说,是一次很好的成长机会。我们常常说“企业不是学校”,但如果苛求这一点,我觉得就少了很多人情味,久而久之,企业的人情氛围就会冷漠,员工不归心,企业的经营成本也会上升。

之后仍然去了一家本地安防公司,海博。这家企业给我的最大改变在于管理方面,包括项目的管理,人员的管理,并完成了自身性格方面的转变——从一个优柔寡断嘻嘻哈哈的人,变成一个严肃苛刻的人。性格的转变无关好坏,但在管理方面,利大于弊吧。

从这家公司离职之后,已经决定要自己创业,考虑自己还缺乏互联网公司和外包公司的经历,所以后来分别去这类公司工作了一段时间,感受了一下这类公司的流程、氛围。

再之后,就是自己开始做一个软件测试的培训班。还在企业中工作的时候,我是不喜欢招收培训班出来的求职者,因为我面试过的培训出来的求职者全都远远达不到我的要求,无一例外。我创业的初衷,是希望改善软件测试培训行业的乱象,帮助到有需要的人。哈,野心有点大。

也许这次创业失败,我会考虑两个方向,一个是创业型公司,因为我比较喜欢跟公司一起成长的感觉。另一个是知名企业,这样可以好好沉淀我的业务技能,也能更好的扩大我的影响力。

总之,就是如此了。

原文发布于微信公众号 - 软件测试经验与教训(udatest)

原文发表时间:2019-03-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券