首先, 介绍下自己。 本人毕业于河南理工大学,专业是电子信息科学与技术。目前在汽车行业从事软件测试工作。在做这份工作之前,我曾经做过销售,进电子厂做过测试。

为什么写这个随笔呢?

  1. 想通过博客园这个平台记录自己学习的过程,总结学习方法。哪天有困惑的时候可以过来看看。

  2. 希望可以给看到这篇随笔的读者提供些许帮助。

本人刚开始也是一个小白,因为对软件测试感兴趣但又不想花钱找培训机构培训,所以就选择了自学的道路。相信很多小伙伴有和我一样的想法。

那么培训和自学各有什么优缺点呢?

去培训机构参加培训

优点:1. 可以快速熟悉软件测试的理论知识; 2. 可以快速掌握几种软件测试工具; 3. 可以快速学习一门编程语言; 4. 可以提供进入软件测试行业的通行证(并不是真的会发你一个证书);5. 培训结束后进一家公司可以很快的上手项目积累项目经验,后面通过不断跳槽可以实现工资质的变化

缺点:1. 昂贵的学费,一般培训机构会收取1万+的培训费,这对于一个刚毕业的学生来说是一笔不少的钱; 2. 学习周期长,少则几个月,多则半年,这期间生活费需要自理; 3. 培训结束后找工作不会像培训机构吹嘘的那样可以一次性找到工资高福利好这种理想的工作,因为这个时候你还没有项目经验,在用人单位眼里其实你也是一个小白,只不过是掌握了一些理论知识的小白。这个时候可能有的小伙伴会说,培训一般都有项目实战,毕业后也会在简历上做一定的包装。但是,你要知道,好的用人单位都不是傻子,这些很容易被识别出来。所以,大部分参加培训后好的选择是进一些小公司先积累项目经验然后选择跳槽。基本刚培训出来的工资在4000到8000之间,少部分人可能能拿到1万+吧。当然,找工作的情况也取决于整个市场的好坏。

自学

优点:1. 省钱,省钱,还是省钱。重要的事情说三遍。。(家境好的可以忽略); 2. 自学的人一般都是因为兴趣爱好才去学习,学习过程中不会感觉厌倦,永远有一颗好奇的心,不断学习,乐此不疲; 3. 网上有很多免费的自学网站,例如菜鸟教学,廖雪峰老师的官方网站等等; 4. 通过自学出来找工作和培训出来的工资差不多(主要是项目经验,你的成功项目经验越多工资自然会越高)

缺点:1. 培训的优点,我们基本都没有。但是,理论知识,测试工具,编程语言这些内容的学习速度视一个人的学习能力而定,学习能力强的其实也可以在很短的时间内掌握这些知识(尤其是学习一门编程语言基础,例如Python并不难,如果你有一定的英语基础,学起来会更简单)。而项目经验也可以在进入公司后积累。 2. 没有通行证,因为没有项目经验,好多公司可能直接看到你的简历就会刷掉,前期找工作并不是很好找,但是也有些公司注重学习能力愿意培养,自学的人前期进这种公司是比较理想的。有些公司不会太在意项目经验,例如外包公司,这种公司一般都是为一些大企业招聘工作人员,例如华为。前期若实在找不到理想的工作也可以考虑进外包公司先积累一些项目经验然后再选择跳槽。

介绍完了培训和自学各自的优缺点, 先来说说我为什么没有选择培训。首先,我选择自学软件测试主要是因为兴趣,所以我才在工作了一段时间后选择转行。然后,我选择自学而不是培训的主要原因是钱。我的家境并不富裕,刚大学毕业的时候只有一个心思那就是赶紧找工作挣钱,记得当时本以为找到工作后就不用向家里要生活费了,但是工资要在下个月发,所以第一个月的生活费还是找家里要的,我爸妈没有说什么还担心我自己在外面过的不好,但是我自己觉得很丢人而且很委屈,当时还掉眼泪的,也算是一段黑暗时期吧☺。所以,想想大学毕业了没有挣钱不说,还要花钱培训,并且生活费还要向家里要,脆弱的自尊心是我没有选择培训的一个重要原因。即便后来工作了一段时间,想转行,这个时候也攒了一些钱,但是知道了挣钱的不容易就更不想在这上面花钱了,所以走上了自学的不归路。

哪些人适合自学呢?

对软件测试感兴趣,家境并不是很富裕,希望通过自己的努力从事IT行业。

哪些人适合培训呢?

个人认为家境比较好的,希望快速进入IT行业。

说了那么多,可能会有人问我为什么不选择开发呢, 开发听着多高大上。首先, 自学开发的门槛比较高并且没有项目实战经验很难找到工作(选择培训的除外)。然后,我们看下数据(摘自百度):

国外软件企业,开发人员与测试人员比例一般为1:1,而国内只有8:1。目前国内120万软件从业人员中,能真正担当软件测试职位的不超过5万人,专业软件人才缺口达50万。企业开出5位数的月薪仍招不到人。

据统计,软件测试专家的薪资水平如下:

起始薪资:5000-8000;1-2年平均薪资:8000-15000;3-5年平均薪资:15000-20000。

那么从事软件测试有哪些优势呢?

  1. 竞争压力小:软件测试人才供不应求的现状决定了该行业的竞争压力会相对较小,对励志于在该行业有所追求的职场人来说,是一个极有利的形势。
  2. 能力提升快:软件测试人员不仅检测产品质量,更熟悉整个工作管理流程,对于项目从立项到上线交付的每一个环节都将参与,所以无论技术还是管理,能力都将得到极大的提升。
  3. 无性别歧视:软件测试从业者需要有足够的耐心并且细心,发现问题和隐藏的问题。可能在软件开发领域,男生更具优势,但是软件测试,女生会更受欢迎,不存在什么性别歧视。
  4. 行业前景好:智联招聘发布了最新一期的IT职场人气排行榜,其中软件测试工程师、高级程序员、产品项目经理等高薪职位进入”三甲”,成为IT就业市场最新风向标。

由于本人这里主要想记录的是自动测试,所以软件测试的一些理论知识,例如质量测试,集成测试,单元测试,白盒测试,黑盒测试,压力测试,耐久测试,性能测试等等茫茫多的理论知识,大家可以买相关的书或者在网上查找资料。

ok,废话不多说。我们开始介绍自动测试。

自动测试基本框架:

以下转自http://www.cnblogs.com/tobecrazy/

  1. 什么是自动测试

自动化测试,顾名思义,自动完成测试工作。通过一些自动化测试工具或自己造轮子实现模拟之前人工点点/写写的工作并验证其结果完成整个测试过程,这样的测试过程,便是自动化测试。自动化测试,看上去很高大上,可以用机器代替手工,实则不然.因为每一个自动化测试的测试案例都是从手工测试做起的,
要先有手动测试,才能转自动化。

  1. 为什么要进行自动测试

为什么进行自动化测试,答案要从自动测试的收益和人肉测试的成本说起:

a. 自动化测试节约成本(根据项目)

   毕竟自动化测试确实解放了一批人力(人力成本才是IT公司最大的成本),尤其可以利用夜晚这段时间,可以让机器没日没   夜的执行一些重复劳动.

b.有些测试项目手工很难实现(手工成本较高)

   比如12306的压力测试、负载测试,同时找那么多人去测试不现实可以通过机器去模拟.

c.项目质量流程需要

比如版本管理需要build verify,以保证check in的code不会影响版本库。类似于smoke test
  1. 自动化测试的优缺点

优点
 
避免测试人员因重复劳动产生厌倦

提高测试效率

保证每次测试地一致性和可重复性

更好的利用无人值守时间

进行一些手工无法进行的测试

缺点

系统开发时间不一定能缩短

没有手工测试发现缺陷多

UI layout issue 不容易发现

维护成本相对比较高

  1. 什么样的项目适合做自动化测试(dev手一抖,auto忙一宿)

有以下几个特点的项目比较适合自动化测试:

  1. 项目变动少
  2. 周期长
  3. 项目资源足够(自动化不是一个人完成的,需要一帮人长期维护)

举例说明:

互联网项目,一周内要上线,你不上线别人上线人家就不用你的,项目周期短,变动快,你自动化还没做好,项目说不定就下线了。比如某宝双12活动相关项目,一周之内就下线了。

适合做自动化测试的项目,比如某宝客户端,每个release,大部分功能都不变,并且3-5年内项目不会下线,这个就比较适合自动化.

  1. 什么样的人适合做自动化测试?

这个问题是写给想要做自动化测试的人,或许你以为软件测试的门槛很低,低到任何人都可以做,随便点点就可以了,这个行业太low了,所以你想做自动化测试,提升自己的逼格,我想说手工测试并不low,如果让一个什么都不懂,一点业务基础都没有的人去做测试,能测出来问题吗?不要忽略你的业务知识储备.
你的业务知识储备的积累能让你成为不可替代的行业专家,而做自动化的码农会因为一个时代的更迭被小鲜肉替代。

扯了这么多,究竟什么什么样的人能做自动化测试?
我的理解分一下几点:

a. 拥有代码能力

掌握一门开发语言,java、Python、ruby、c#

b. 熟悉被测系统

比如你是web测试,你就得懂js、css、html、xpath

你是移动端测试,你就得具备Android 开发基础和iOS开发基础,会debug app

你是 C/S测试你就要很熟悉TCP、IP协议

c. 掌握一套自动化测试框架(工具)

比如 selenium/appium

nunit/testng

robot framework/cucumber

d. 善于学习,达到知其然知其所以然

IT行业变化太快,每隔一段时间就会出现一些新兴的东西,也会出现原来很火的东西逐渐没落,谁也无法预测。
曾经诺基亚还是手机霸主,靠塞班一统天下,然而不思进取,落得个卖身求生存.
曾经qtp很火,曾经selenium也很火,现在appium也很火
软件行业从桌面软件到web端,又从web端迁移到移动端,谁也不知道下一个是什么。而我们作为软件行业的从业者,不能因为那些很火的东西不火了而让自己没落,一个人最为核 心的能力就是学习能力,如果你善于学习,你就不必担心这些变迁,因为你可以毫无压力的迁移,selenium的原理你掌握了,学习appium简直小菜一碟,因为appium使用的是
selenium WebDriver protocol .如果你能做到知其然知其所以然,你也可以造轮子,改造appium,毕竟现在很多功能需要完善。

如果你没有达到以上的几点,建议你还是做手工测试吧。

  1. 如果你有代码基础,想要从事自动化测试怎么去学习?

很多初学者很纠结,学qtp还是学selenium

我的建议是学selenium,开源的,免费的,你可以下载源码研究,去了解其原理,再者现在selenium的资料不要太多,随便搜搜一大堆,学起来比较轻松。

不建议学selenium IDE录制,当然你可以通过录制一些然后转换为相应的脚本去学习,等你学好了selenium, 再去学appium你会有一种天然的似曾相识。为什么不建议学QTP/UFT?因为收费/臃肿/现在做桌面软件测试的工作已经不太多了。

关于买书,不建议买书,很多书已经过时了,并且质量渣渣,你买了那些书中的code已经不能用了,如果你真的想学,就去官网找example,去相应的社区和群交流,或者直接看API/源码.

总结:

新人学习自动化测试要:

掌握一门开发语言

掌握一些基础的知识

少买书,多看测试框架的document,多去社区交流

不断学习,提升自己发现问题,解决问题的能力(不做伸手党,多动手)

此外,对于做嵌入式测试的小伙伴还需要掌握一种调试工具。例如lauterbach。一种自动化测试工具,例如ECU-TEST。后面我会将我在使用这两套工具时学到的知识做的总结也更新到博客园。有需要了解的可以@博主,我会尽快更出来。有不足的地方欢迎大佬们指正。

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢我们自动化的小伙伴们,可以加入我们的技术交流扣扣群:914172719(里面有超多学习资料免费分享哟)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…