软件测试工程师面试分享
到达面试地点,面试官很友好的领我去了会议室,坐下自我介绍的同时,也就开始了正式的面试,这场面试我很开心,不是因为没有面试算法,而是这位面试官不仅仅在于面试,更多的是聊简历中写出来的内容,都是自己做过的,要说起来,自然顺畅得多,而遇到不懂的内容,他会很善意的给出引导,我所要做的,无非就是顺着他的引导拓展自己的思维,之后给出他想要我思考的内容的答案,这种方式的面试,对我来说,其实相对还是比较游刃有余的,毕竟不管做什么,我最喜欢的就是有人稍微提点一下,以至于我不容易走偏。
面试过程中,首先问我工作中怎么开展某项测试,这里他问的是兼容性,会考虑到哪几个方面,对于Web或者win32之间兼容性的考虑点的区别,对于兼容性测试与其他测试的区别,在做兼容性测试的时候,遇到最大的困难是什么?对于这个问题的回答他可能不是很满意,我说,兼容性测试中遇到最大的困难是跨平台遇到问题该如何找到问题所在,他说这个其实和其他的测试也一样,当你发现问题的时候,你必须排除是系统问题,是配置问题还是产品本身问题,所以他示意我再想想,我稍作沉思,告诉他,我之前在兼容性测试的过程中主要测试的是产品的补丁包,所以最大的困难是补丁包对向下兼容的问题,他似乎稍微满意了一些,微微笑了笑。
紧接着,看到我在简历中写出了对项目管理有一定的理解,于是话题转变到了项目管理上,先问了我自己如何对自己进行管理的',诸如一堆的tasks在手上,你会怎么安排?然后问,如果你手上有一个P1的task,但是这个task需要等某人完成一定的操作后你才能进行你的工作,不过,这个task在那个人手里是P3,这时候你该怎么办?最后问如果你是test leader,你的team members的手上已经有很多任务了,但是你又接到了更多的任务,你该怎么做分配?其实无非是考虑如何有效完成所有的任务,说实话,我不知道这些问题的答案是不是有哪本书会教大家怎么做,也不知道这些问题是不是有唯一的答案,我只是凭着自己对任务安排的理解在做资源的协调和分配。
紧接着,也不知道是不是还算管理的问题,反正与测试有关,他先给我描述了一个三层结构的系统,让我从test scope的角度去描述应该怎么测, 由于描述了三层的结构,我第一反应可能和代码逻辑有关,结果他反问我,你觉得代码方面的测试是开发做还是测试做,我不是十分明确,但还是给了他肯定的答案,开发做,于是他点了点头,说,那你现在可以撇开谁做这样的底层思维,继续向上一层思考这个问题,这个时候我才知道他在问什么,其实他想听到的答案是系统测试,集成测试等等宽泛而抽象的顶层概念,回答完后,又一一引导我分别对这些测试测什么做了提问,可以说,每个问题我都会选择沉思一下再做回答,沉思的时候可能脑子一片空白,但其实也是在努力搜寻头脑里的埋藏的知识。
在接下来的继续细化提问前,他一再问了关于数据库的知识,诸如同样要查询一个表的其中几个字段,视图和存储过程如何做出选择,视图、存储过程和方法呢?说真的,其实就是在考这几个的区别,但是我真的已经遗忘了。ok,继续细化测试,对于数据库层如何测试,对于logic层如何测试,对于呈现层又如何进行测试。其中,问数据库层如何测试的时候,我回答得最为完善,但是也可以说是没有思考完全,因为他提问了这么一个问题:现在我们要部署这个系统,用批处理的方式写代码去部署,
这个时候,关于数据库需要考虑哪些内容?说白了,还是兼容性测试,不过最初我没理解,在他的引导下,我才把能想到的都说了,不过当我说到要考虑软件的兼容时,他问我哪些软件,我只举了一个普通软件的例子,比如,同样是Sql Server,如果机器上安装了假设SQL Server 2012,而在安装Visual Studio的时候又装了一个Express,那么实例如何部署,他问还有什么的时候,我愣住了,软件兼容就相当于这个吖,难道我要考虑QQ,MSN么?就算要考虑,不是也一样的么?顶多就是会不会出现冲突的现象吖,结果他告诉我,应该再测杀毒软件,因为杀毒软件可能会屏蔽数据库端口。对啊,这个我怎么给忘记了,上回谁还在群里提到了来着。
回答得最差的应该就是logic层的测试,对于logic层我能测什么?我沉默了很久,我弱弱地说了句接口调用,他说这个是UI层考虑的问题,这里他给出了最多的引导,先是一个logic层的验证性问题,说实话,由于UI层是Web呈现,我以为会在UI层做,结果他说,Web呈现不过是轻量级的验证,逻辑的验证还得再逻辑层做,之后,又提示我协议,由于我对协议完全一窍不通,他用很浅显的话语描述了协议的意思,结果我第一反应就是要测安全性,然后他摇头,之前说了不考虑证书问题,这一刻才意识到,协议的安全性测试原来包含证书方面的测试,不得不说,这又是另一个收获,以前的我根本不知道。在他的提示下,渐渐地,我回答出来一部分测试的设计,当然,更多的,可能还是没让他太满意吧,没办法,这一块我确实很薄弱,也没怎么接触过,只能靠他引导的那一条路努力钻。
庆幸的是在UI层,他问的时候,因为我刚开始做测试的时候就是做UI测试,这一块回答得相对顺风顺水,不过依然还是有遗漏,如同他提问完后我的沉默一样,我在回答的时候,只要他觉得回答得还行,他就沉默着等我说下一个测试设计点,紧跟着沉默一秒钟到两秒钟,意识过来,然后我会回答下一个我想到的点,这一秒钟两秒钟,既是彼此等待对方打破沉默的优势谈判的特点,同时,于我而言,也是表现我在思考的时间,对我是有百利而无一害,但是,这种沉默如果持续时间过长,就要当心了,可能会由于过于安静的空气引起自己内心的恐慌,当然,我不会,因为至少那个时候,我已经知道沉默的意义,而等待超过三秒我回答不出的时候,我会选择和他直接对视,然后告诉他,可能我只能想到这些,而此时,也相当于向他求助,他会很友好地告诉你你回答得如何,或者很友善地开始引导你做出更多的考虑。
他问我,对于我在上一家公司第一个项目的了解程度,我很诚实地告诉他,由于那时候对测试的一窍不通,也对工作相对生疏,我只对自己负责的模块有较多的理解,并没有去学习整个项目的架构,而我在该项目待的时间比较短,也没有允许我考虑到去学习整个架构,于是他问我,作为UI team的工作者,有必要去熟悉了解整个架构吗?这个问题,说真的,我不知道,但是我不能直接这么回答,毕竟我已经有较长时间的工作经验了,这个问题理所应当去思考。我稍微想了一会会,然后说,如果对于工作内容来说,应该没有太多必要,毕竟架构了解起来可能花费很长时间,而对自己测试范围可能帮助不太大,但是要把测试做得更好,理解整个项目还是很有帮助的,它可以扩展测试的思维,让自己的测试进行得更加全面,而且可能会根据整个项目的架构,找到一些潜在的或者边缘性的问题。他点点头,表示对这样的回答还算满意。
最后,拿出一个小细节开始问测试用例的设计,有一个日历控件,选择日期这一块的测试怎么做,我问清楚了没有from date to date和手动输入或者复制黏贴等情况之后,说实话,脑袋一片空白,这还要测什么?测2月有没有29号?他在提问一开始就说清楚了,
这个日历就是系统日历,难道我要怀疑系统日历有问题么?疯了疯了,这个问题究竟在考什么?能不能不选择,以及是不是只能选择今天,选择未来的某天或者过去的某天是否可行?这几个点说完后,我觉得我真的要彻底沉默了,因为脑子里根本想不到任何东西了,于是他提醒我,是不是应该考虑时区?对,还必须考虑日期显示格式,我几乎脱口而出,也许我的莽撞吧,他笑了,也点点头,是的,格式,还有呢?国内外时差的存在,是不是也让我们需要考虑呢?在我说完了我觉得可能需要考虑的一切的时候,他突然问我,那如果时间要存储在数据库里,你觉得是统一存储然后用代码进行各个国家时间的转换还是存储的时候就先转换好?
问到这个问题,我简直要跳起来了,老三吖老三,必须谢谢你吖,你闲着没事蛋疼地去用Convert.DateTime()将阳历的3月29号转换成中国的农历,还抱怨VS的bug,让闲着没事的我无聊到上网去搜索C#代码怎么实现阴阳历转换。我说,应该统一存储然后用代码的方式去进行转换,然后他问我用什么方式呢?我说,具体我方式我不记得了,不过前几天我朋友遇到过日期转换的问题,虽然不是各个国家,仅仅只是中国的阴阳历转换,上网的时候我有看到 VS自带了一个dll,叫System.Globalization,虽然没尝试过,不过我想,可能这个方法行得通,他笑着说,很不错,这可能是个办法,不过,就我知道的,VS里面有一个UTC可以做到。
他看了看手机时间,一个小时多一点点,他笑着说,好了,我们的面试就到这里,整体还是很不错的。在他送我出门的一段不长的路上,我向他打听面试的结果什么时候可以知道,他说会尽快。于是微笑着,我们告别了,不过前脚刚走不久,就接到电话,告知面试通过了。说实话,很久没有遇到这么happy的面试了,虽然整场面试中说的中文不多,却感觉是那样的轻松。其实,很多时候,很多事情,真的需要有人稍稍点拨一下下,稍稍作出引导,这样,我就会有无限的思绪涌出来。
版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。
本文地址:https://www.gunzhua.com/jiuye/mianshi/774661.html