测试两年回忆录(移动测试牛人monkey)

我的两年多的
测试
生涯到头了。我想再这里总结一下点点滴滴。以及我也会说明我为什么选择离开。在中国有着很多很多的
软件测试
,很多迫于环境,迫于leader,迫于很多原因,导致只是一个“执行者”。以下只是我个人的一些经历。大家可以借鉴,可以吐槽。大家随意。
  首先在测试的时候需要有一些心理暗示,其实未必是暗示,可能是给自己的一些自信。

  第一:产品一定是有bug的。
 无论你测试什么产品,一定是需要报有这样的心态。为什么?其实就如一句说的“如果自己都不爱自己,那么就不要奢望别人来爱你”。如果连测试潜意识里面都觉得产品是没有bug的那么还能有谁认为产品是有bug的呢?
  测试的历史上有两种验证方法,一种是测试是用来验证产品一定是没有bug的,一种是测试是用来验证产品是有bug的。无论哪种你都要有一种原则,要有一种信念。就如人生漫漫长路一样,我们必须坚信自己的梦想,坚信自己是能够成功的。那么才有可能,才有希望。当碰见挫折的时候,当迷茫的时候,才不会真的被打败。
 一个新的feature,一个刚刚fix的bug,一个用户反馈,一个不起眼的问题。我们都需要坚信里面有缺陷的。没有任何一个产品,任何一个细节是完美的。
  许多公司从上级到下属对于产品的质量根本没有概念,又或者对于质量不重视。在这种情况下,就需要测试产生力量,需要用各种事实依据去告诉公司,告诉大家这样一个产品质量的真想。国外的公司相对好点,国内有很多公司是需要有这种有责任感的测试存在。
第二,任何的bug都是能够repro的
  无论你面对一个很小的功能测试,还是很复杂的场景化的测试,又或者说某个用户很简单明了的描述了一个问题。我们需要坚定不移的告诉自己,只要是一个bug就是有重现步骤的。  微软曾经有测试,一个问题的重现步骤长达50步。虽然可能不是最佳的步骤,但是依然对于解决问题起到了决定性的作用。
  自然,在实际中很多情况下的确会碰见一下子找不到重现步骤的方法。找不到方法意味着什么?意味着你可以开bug,dev可以fix这个bug。但是谁都不知道到底有没有真的修复这个问题。还可能因此出现很多regression的bug。所以找到一个bug的repro step可以说是一个测试基本功也是体现价值的地方。
 和第一点一样,只有你自己信念中去相信了,那么你才有可能成功。
  第三,只相信自己看到的
  在很多情况下,dev或者同事会告诉测试“这个功能很小,没有bug的”“简单测一下就好啦”等等的话。我主张还是不要太相信任何一个人。
  面对bug,我们需要好好的理清问题的根源逻辑,在进行一个完全的测试之后告诉自己“这个功能基本上不会有很大,或者很block用户的问题”;面对一个
讨论
,不要听到别人说什么就是什么,任何的决定都没有完全正确的。我们需要自己亲手去验证很多决定和
设计
,小到你可以google,找出各种证据来证明某些事情。大到你可以进行用户
数据
搜集,很多企业不会去做。但是如果一个有sense的测试,我相信必须什么事情都亲手去实践去证明!
以上说了这么多,可能很多人觉得,这个还是测试么?ok,我认为真正的一个测试满足以上三点是远远不够的。以下是我认为一个有sense的测试,记住是有sense的测试需要做到的。
第一:探知精神 乐于学习
 为什么我将这两个放在一起呢。两者密不可分。我所在公司是做Android产品的。目前中国国内很多企业也是一样的问题,就是只是在乎自己的产品怎么样,并不会很关心你的发展。作为测试,必须有探知精神,必须乐于学习。比如你测试A平台的B产品,如果只是一味的测试,只是一味的报bug。的确你会有进步,做任何一行你都会有进步,行行都能够出状元。但是几年光阴一过去,当别人或者自己问问自己,自己真的知道了多少?可能对于自己公司做的产品很了解之外,一无所知。那么这样对于自身发展又有什么好处呢?
     探知,对于任何一个design,任何一个bug,任何一个细节都需要去探知。这样无论你做了多久,无论你是否做多少个
项目
都会依然有进步。时不时的问问自己,对于这个产品feature真的了解很透彻么?对于产品功能逻辑很清楚么?对于这个产品所在平台了解么?业内是不是主流的tools都清楚了呢?是不是自己已经没有了进步的余地了。这样自己会明了很多。
  第二:责任

  这点可能很多人会说,测试最基本的不就是责任么?没有责任怎么去做一个测试呢?是的,责任每个人都有,程度是不同的。你作为一个
test
er,需要保证产品的质量。勿以bug小而不重视,本质上依然是不负责任的表现。
  相反的,很多测试对于产品是负责了,对于自己却是不负责任的。因为他们只是一个傀儡,天天被人操控着。做这个做那个,我觉得这种是更加可悲的。
  如果你作为一个tester leader,那么你的责任不是去指挥别人做事情,不是去拍老板马屁。而是自己不要忘记进一步的学习,不要忘记对于任何的细节去了解。更不要忘记如果出了什么问题,自己勇于承担这个责任。真正的leader是什么?需要在流程以及
技术
上面有自己的sense,需要不停的去完善项目流程,从而提高测试team的效率以及项目的效率。

  第三:通过各种渠道找到bug repro step

  bug会从各个渠道发现。公司内部bug bash的时候,用户反馈的问题,自己找到的问题。老板发现的问题等等。这个时候能否找到repro step就是体现一个测试的价值所在了。
  测试往往碰见的问题是这样的。突然发现一个问题,欣喜若狂!但是然后问问自己“我刚刚做了什么”,基本上很多人都不知道。有的时候是有log可以取,但是log只是一个告诉
开发
如何
dev去解决bug的。所以找出重现步骤才是王道。并非要时时刻刻保持警惕,可以有两个做法,一个就是自己在测试的时候留个心眼,养成时不时回忆自己做了哪些操作。一个就是养成一边测试一边记录log的方法,这个方法相对很保险,不过前提是自己需要有完全看得懂log的能力。

  另外一类bug是从用户这里报出。用户一般是无知的,根本不会懂你产品的逻辑,可能描述出来的错误和真正的错误根本就是天差地别。这个时候就需要测试去按照
经验
以及各种方法去判断。判断出用户说的产品的真正的问题在哪里,然后使用各种方法(automation.etc)去模拟bug产生的环境。这样一来,bug在修复的情况下能够在公司内部马上得到confirm。这样无论是对于产品,用户,还是公司都是一种无限大的利益。

  还有一类bug是公司同事报出的,或者是老板提出的。一般都是一句话“这里有个很大的bug”。木有任何细节,木有任何解释。
  当然,总结一下来讲,一个测试就如同一个侦探,慢慢的寻找蛛丝马迹,慢慢的看到真相。能够找到这条路的人那么必然是一个有价值的测试。毋庸置疑。

   第四:bug定义sense

  bug到底是什么?是一种缺陷么?是的。那么测试产品bug这个行为是什么?我相信很多书本上面都没有定义过。

  测试产品bug行为定义:是寻找产生bug过程的一种行为,是缩短人们用产品开始到产品发生bug的周期的一种行为。

  所谓找出bug,无非是一系列的操作序列造成了
程序
的缺陷或者崩溃。序列可能是几步,
时间
周期也可能是一年两年十年。那么测试产品bug不就是要在项目周期内尽量多的去寻找问题么?所以,其实本质就是,如果一个用户用一个产品十天才出现的一个bug,那么测试就需要压缩这种时间,将其在很短的测试周期内发现这个缺陷。
  方法有很多,模拟环境,使用各种已经有的tools,使用各种automation进行测试,甚至自己写用户的一个环境等等。缩短用户发现bug的周期其实就是一种战斗,一场无止尽的斗争!
  第五:UE
  UE,用户体验。很多人会说用户体验是UI team以及UE team的人需要了解的。但是往往这个sense对于测试是最最最为重要的。
  所谓最高级的bug,最有价值的bug就是贴近用户的使用习惯。但是如果一个测试没有UE,那么你如何模拟用户操作?你用户是使用
windows
的,是用mac的,是用android的,是用dvd机的等等,而你一个都没有用过,你何以测试?你何以找到用户真正care的bug?根本就是无稽之谈。  

  UE的学习对于谁都是有利的,无论你是做什么产品的,你是什么
职位
上面的。UE的学习是永无止境的。没有UE的测试只是monkey test罢了。

  第六也是最后一点:勇敢的去做
  和第一点不同的是,测试这个职业在国内还是一个比较新的职业。很多测试本身都不知道测试到底是干什么的。更加不要说一些互联网产品的测试。很多领域根本就是没有被开发过。你要做的就是勇敢的去尝试。可能有一个point,开始你的潜意识就觉得level太高,根本就是做不到的。但是你要去试试,不试试怎么知道不可能,勇于去做第一人。可能你做的事情就是别人没有做过的呢?要记住!你不去做总有人去做。我相信大家都希望自己成为第一人,而不是跟着别人的脚步再踏步踏。
  目前只是想到这些,原本是想写工作回忆录的,却写成了这样一篇东西。真的惭愧。要不要写回忆录呢。。纠结!!
ok,最近我辞职写了一封给测试的信,一周内反响很大。尤其是豆瓣和51testing,大家的热情真的让我很开心。至少国内测试行业依然还有那么多热血的朋友、兄弟在。至此,我也应大家的要求,写下两年以来的回忆录。

  首先先简单介绍一下自己,自己是一个专科生并且自认为还是很烂的专科。唯一让我感到能够弥补这一点的是在我毕业的时候能够拿到一些基本证书(计算机二级,英语4级,日语三级)以及一些实习经验(从客服到硬件维修到网站编辑到理财师等等的实习)。毕业的时候粗粗看看,简历上至少还是有点东西可以写。

  进入这家公司是偶然的机会,该公司也刚成立不久,我是这家公司第一个签署正式合同的员工也是第一个正式的测试人员。公司无任何测试流程以及测试用例或者测试技术的文档,让我着实有点没有方向。并且那时自己也从来没有接触过Android,android是什么呢?自己抱着问号在09年年底拿着2k不到的工资就入职了。

  起初开始依然和很多公司一样,熟悉产品的基本功能,模仿着网上很多的模板进行测试用例的编写。在试用期的第一个月自己接触到了第一个客户(foxconn),当然当时的自己根本就不清楚用户的重要性,只是对于这份工作的责任心在进行一种简单的bug fix的检查。在工作期间还各种偷懒,和同事打游戏,也因为这些耽误过工作,也被老板骂过。

  试用期的两个月,老板对我的帮助非常之大。让我懂得,人其实逼依然是逼的出来的。对于我这样的专科生来讲,进入一家移动互联网公司,还是和大公司合作的项目,自己还是唯一的测试,这样的机会或者是责任是自己无法想象的到的。两个月的时间,在boss的引导下,自己完成了1.熟悉bug系统上面以前的几百个bug  2.看完了一本测试的书籍  3.用不同的方式去完成几份从测试用例  4.知道如何进行monkey测试(一种android平台的半自动化随机流压力测试工具)让我印象深刻的是,曾经我一度和boss抱怨说“monkey这个工具咱们的产品用不了”,但是boss的话让我印象深刻“foxconn既然能够做,咱就能够做”。说实话,对于我刚刚毕业两个月的学生来讲真心很难,但是可能就是因为这种魄力,这种压力才能够成长吧。
  转正之后,面临的是更加多的客户,在半年内公司依然没有进来过测试。接下来至关重要的几点我觉得对于我的成长有着很大的作用。

  1.客户
   客户也是业内很知名的一些(CMCC,SEMC,HUAWEI,Foxconn,ZTE.etc),在做这些客户的产品的同时,我慢慢的理解了客户对于公司和自身的重要性。当然也犯过了很多的错误,也许很多对于这家创业型的公司有着毁灭性的打击。失去一家客户可能就是一条发展的道路。
  曾经给SEMC写过几份英语的case,也是我人生中第一份英语的case。经过一个月之后,SEMC严厉的指责了我们。(无论自己犯了什么错,客户不会指责个人的!)并非是很大的错误,指出我400+case中有六个单词拼写错误。但无论怎么说,经过这次,我也认清了其实错误再小依然是错误。也认清了,客户的重要性以及SEMC的风格。
  在和这些客户打交道的时候,我觉得能够学到好多。因为公司小的关系,我也有很多机会能够和他们的pm交流。慢慢的,我了解了他们的测试流程,他们的测试方法。问到一点点有空自己多google。由于产品的特殊性,在做测试的期间我也对于全球大大小小三十几种语言有了了解。慢慢的,也了解不能够光靠pm给的spec进行测试,自己也要去验证也要去学习。

  2.面试
  由于我是第一任测试,所以可能面试的职责在所难免。不过我自己由于本身就是很注重态度,并非其经验以及学历,所以在面试过程中不会被简历上面写的去先入为主。
 在面试中,其实放正心态的话,自己会发现很多自己现在欠缺的地方。无论是对于项目流程的了解,还是对于移动互联网的了解,还是对于测试技术的了解很多很多。我能够从别人以前公司的做法,以前公司的一种流程中取长补短去运用到自己的工作中去。
  3.钻研的精神
  这个并非是夸自己,但是歪打正着的是因为某件事情,让我觉得钻研这件事情真的很有趣。可能因为个人想法的关系,我希望我能够知道的更多,我希望无论什么我能够了解的更多。
  我相信很多做过android的人都知道monkey的这个工具。其是一种cmd命令的非常简单的工具。但是我再最初的两个月去学习monkey的时候根本就是和别人不同的过程。最初是用命令让自己公司的产品run了起来。但是到底是为什么?我是不是可以利用这个工具从随机流变成不随机流呢?在接下来的几天里,我下载了android的源码,进行了monkey十多个类的学习。并且安装了linux进行了monkey.jar的make。从而生成了属于自己的monkey工具。
  对于我来讲,任何一个现有的工具都是有用的。因为他们可以直接拿来用,他们已经将很多复杂的逻辑封装好。但是相对的,任何一个现有的工具都是无用的。因为他们不是最最符合自己项目的。那么只有在了解他们如何实现的机制基础上,自己写出一个框架来才是最优解。
  从monkey开始,也是我踏上了automation test的道路,就目前为止,我已经看过了很多很火的tools以及他们的源码。也开始了自己编写的工程。这个也是一个比较漫长的道路。
  4.贵人
  不得不说的是,很多人会想一个专科出来的学生,再多大的能耐也不可能自己看懂源码进行make,也不可能hold住那么大的客户。是的!你们没有错,虽然事实是我一个人在顶,但是背后也是有原因的。我遇见了可以说在我生命中,或者在我开始的这两年职业生涯中最最重要的两个人。一个是出于交大ACM班的开发,一个是曾经多次在google全球竞赛中取得好成绩ID是lympanda的人。
  他们的出现最初对于我压力真的非常大。说心里话,任何一个专科生面对acm班以及一个清华出来的牛人心理上多少都会存在压力。曾经很多次我自己真的被这种压力打败过。但是我没有退路,由于09年的金融危机让自己只能硬着头皮继续工作。他们不但在工作上给了我很多的帮助,并且教会了两件最重要的事情。
  一,万事不懂问google,google才是最好的工具。自己才是最好的老师。在一个很多人都不懂的领域中只有这样才能够成长。
  二,任何事情你不去做,总有人去做。如果你愿意努力,愿意钻研去争做第一人,那么无论结果如何你都是成功的。相反的,你退缩了,那么总有别人会去做。谁都是很渺小的人,你不做,地球照样转。没有区别
  在之后的一段时间中,也开始接触了ios的测试。慢慢的学会了如何用工具进行统计android黑盒测试的代码覆盖率。知道了原来影响到一个应用的条件实在太多,知道了原来系统的不同,是否越狱是否享有权限对于一个应用的测试影响那么多。开始慢慢看android的sdk,开始慢慢尝试着去了解ios上架的准则了解ios的文档。
  在几个星期前,我依然是该公司第一任测试,并且享有期权。在这样的一个情况下,我相信很多人,肯定是无法认同我,为什么要离职,要很多人都会留下来。
  其实我自己的想法很简单,并非公司有什么不好。只是我不想被所谓的senior所束缚,不想被一种公司里面的地位所束缚。更加不想被公司本身所束缚。我简单的认为年轻就是那么几年,我必须趁着那么几年多看看外面的世界,无论是公司,还是人还是项目。
  曾经在GDD上面我和google一位意大利开发交流google是如何进行android 自动化测试的,两个人谈到最后都很开心。我自己也在不停的追求这种交流。这种能够让自己快速成长的交流。所以接下来自己也会不断的参加各种沙龙,会议等等。

转载于:
http://www.testdao.com/thread-7607-1-1.html

你可能感兴趣的:(测试两年回忆录(移动测试牛人monkey))