本文选自《大话软件测试》一书
算一算工作快小5年了,对一个技术来说,5年是一个坎儿,是一个你已经该从职场小白转向资深人士的一道坎。但是我说实话,我感觉我并没有达到那样的高度,说技术没有那么高的高度,说能力可能有,但是个人还是感觉满满的不自信。可能大家也有跟我同样的困惑,是在一个公司慢慢养老,成为一根老油条还是去适应一下新的环境,哪怕这个环境不如这个顺心。还有很多人像我一样,有一颗不安分的心,但是却是思想的巨人,行动的矮子,想动却感觉自己好像什么都不会,然后又在犹豫和迷茫中继续安分下去。其实我觉得这样是有弊端的,你会慢慢发现周围的好多人都在进步,都在不停的往大的公司迈进,而自己却停滞不前,与其这样,不如准备一下,开始慢慢让自己面试起来,慢慢的找到一些自信,我很赞同一种说法,不管你换不换工作,一定要时时保证自己信息的更新,一定要隔一段时间去面试一下,看看别的公司的一些新鲜的工作方式,还可以让自己时刻拥有随时可以换工作的战斗力。
小强点评:很多朋友问到多久换一次工作比较好,根据调查显示一般2到3年比较好,过于频繁会让人觉得你不踏实,而时间太久又会产生这位学员描述的现象。就如本章开头所说,跳槽面试既是一种提高薪水的途径,也是一种检验自己能力的方法,如果自己能力不达标自然也不会拿到满意的薪水。干了IT这一行业就要明白学习也许成为了我们生命中的永恒。
我呢,也是很久没有面试过了,突然心血来潮想年前试一把,看看自己是什么水平,就投了两份简历,其中一个是朋友内推的,一个是自己投的,但是面试下来,效果都不理想,我总结了下面试的一些问题,供大家参考。
1、首先进行自我介绍,人的第一印象很重要,自我介绍更是重中之重,这里可以简单介绍一下你在上一家公司所负责的项目的内容、你自己的工作职责、或者有没有什么突出的业绩等。
小强点评:曾经听我一位学员说,他面试别人的时候让面试的人做下自我介绍,结果被面试的人说了一句:简历上都有。我听到之后也表示一脸懵逼!自我介绍是非常重要一环,好的介绍可以让面试官快速了解你甚至对你有好感。介绍要扬长避短,突出自己贡献或者引入的新技术,而不是大家都会说的写计划、写用例、写报告。
2、你们是如何进行接口测试的?
我:这个问题一问出来,很多人会想就是用Jmeter 或者Postman 发个请求就好了呀,其实我也是这么想的。可以从接口测试的目的,你设计或者了哪些接口等等,如果公司里面开展了接口自动化,可以介绍一下接口自动化的大体框架是什么样的,你们是如何进行验证的。
小强点评:回答任何问题不要表现出简单,不要一两句就说完,要从总体流程和具体某些点上来表述。比如这个问题你就可以先回答你们接口测试的流程是怎么做的,然后再具体说下你在做接口测试的时候遇到的问题,这样既有“概要”的内容,也有“具体”的内容,会让面试官觉得你的回答丰富“丰满”。
3、你们是如何收集用户反馈的?
我:我们公司会用用户反馈系统,平时用户出现的一些问题会打电话给客服进行反馈,客服会在用户反馈系统上标记用户的问题,问题会推送到钉钉群里面,由技术或者值班人员来进行解答和处理
面试官:那你们这个问题是用户反馈了才能解决,如果出现了用户没有反馈你们就不太清楚了,我们这边是在APP做埋点的,埋点之后会通过埋点日志来查看线上问题。线上的APP会留有入口,入口供用户提出问题反馈,并且我们会对用户问题进行收集整理,并且对问题进行分类整理,关注是用户体验类的问题多还是功能Bug多,Bug进行小版本迭代修复,用户体验的问题会留到下个版本进行迭代。安卓和IOS接入了友盟,可以查看和关注APP的崩溃记录等。
小强点评:学员的回答不能说不对,但不够全面。一般的用户反馈收集方式就是上面说的两种,分别是用户主动反馈和我们的主动收集。
4、你们是如何保证产品质量的?
我:我们测试先足够的了解需求,需求了解之后开始写测试用例,然后等开发提测了之后我们开始进行功能测试,提出的Bug做到日清,之后等Bug都修复好我们开始做回归测试,测试之后就上线。
反思:其实这个问题就是问公司的整体的一个测试流程或者一个业务从开始到完成的一个完整的流程,而我的回答只是针对了测试的个人角色来进行回答的。其实可以这么回答:
首先进行需求评审,在需求评审阶段测试和研发人员会对产品提出的需求的价值和可实现程度进行衡量,不合理的需求要及时卡掉,如果多数的需求是老板提出来的,我们没有卡掉的权利,那我们会在业务上线之后进行数据收集,看这个需求实现的价值供二期需求参考。
其次,RD进行技术评审,评审出来这个产品的实现方案和技术手段,然后进行编码,编码后进行必要的单元测试,单元测试覆盖率要达到一定的百分比。
再次,测试进行测试用例编写,测试用例评审,用例评审后并提供一些冒烟测试用例给开发人员,供开发人员在代码集成的完之后进行冒烟测试,只有冒烟测试通过之后才能提测给测试人员。
然后,开发人员开始集成代码,解代码冲突,最后将代码打成一个包供测试人员测试,测试进行测。
接着,代码测试完成后我们会进行整体的回归测试,回归测试完成开始准备服务端的上线,上线后将APP进行小范围的灰度(灰度可以是内部的或者外部的),灰度之后收集问题反馈,最后进行整体发版,发版后收集用户的问题反馈并进行下一个版本的迭代或者发小版本进行修复。
小强点评:首先值得肯定的是反思内容很好,但这样的回答还是不够全面。保证产品质量并不是测试一个部门就可以完成的,而是需要全员的整体配合,所以在回答这类问题的时候要有一定的高度。比如:可以从产品设计规范、开发规范、测试规范、运维规范等方面进行,这里就有流程上的规范也要有技术上的描述。
5、你想提升哪方面技能或者你人生规划或者你比较感兴趣的地方?
我:我想提升技术,多多提升自己的能力。
反思:其实面试官想听的是你行提升哪一方面的技能,而不是笼统的我想要提升自己的技术方面,技术方面很大,性能、自动化、接口、APP专项?这里就需要在回答的时候自己有一个清晰的目标,比如你想提高自己的代码能力,你想提高到什么程度?你通过什么样的努力能够使你的目标能够达成,比如你想提升自己的性能测试能力,性能测试的哪一个方面,是接口脚本的实现能力,还是发现问题的能力,还是性能调优方面?其实只要自己内心里面有一个清晰可达的目标即可,很多人可能会想,非要分的这么细吗?我哪一方面都想提升啊,性能自动化我都想接触,两手抓啊,这样可能使面试官觉得你的目标不够清晰,没有一个确定的目标。
小强点评:学员反思非常好。这个问题其实是大部分面试者存在的问题,这里也希望大家能认真想想。
6、你觉得H5、客户端APP和接口测试有什么不同?
我:没什么不一样啊,都是实现同一个功能。
反思:H5可能关注的页面渲染、承载在不同容器里显示的不同的效果,比如:我一个H5页面在电脑浏览器是正常的,但是放在IOS设备中就出现了UI问题等。APP可能更关注APP本身的性能,比如耗电量、cpu等等,包括闪退和崩溃、覆盖安装、升级安装等等。
7、你来介绍一下Appium吧。
我:其实这个问题是考察你掌握一款工具,要懂工具的实现原理。这个问题我很想吐槽一下我自己,明明会但是又说不清楚,有些重要的专业词语又支支吾吾,其实不管掌握哪一款工具,最重要的是知道这款工具的工作原理。
小强点评:我们把这个问题扩展来说,很多朋友明明会某个概念或技术,但就是表述不清楚。我一直建议大家对于概念、技术还是其他都要转化为生活化的例子,这样就能帮助我们理解记忆,又可以很好的解释给别人。比如:在移动APP内存测试一章中生活化的解释就是一个非常好的例子。
8、你们如何做兼容性测试的?
我:首先,兼容性测试一种是手工去测试,通过友盟进行手机型号的手机、查看哪个版本手机型号比较多,然后着重测试使用不同安卓或者IOS系统版本、使用不同的屏幕尺寸的手机进行测试。这里还需要了解一下现在最新的安卓和IOS手机版本更新到什么程度
其次,发版之前的小范围灰度,可以在发版前在员工内部和外部进行小范围的试用,大家手机型号不同,可以反馈出不同的适配问题。
再次,可以通过接入第三方平台来进测试,比如Testin等。
9、如果APP端出现崩溃了怎么办?
我:手机崩溃比较常见的是使用友盟、百度等第三方分析工具。安卓可以通过adb logcat 来查看日志,并且将日志反馈给开发。
IOS可以通过自己实现应用内崩溃收集,并上传服务器,也可以通过iTunes获取崩溃日志。
10、如果让你测试短信验证码这个功能,你准备怎么测试?
我:验证码数据是否记录成功、验证码是否是合法的、验证码的有效期、验证码是否发送到用户手机里、验证码输入等。也可以验证一下这个接口的性能。
小强点评:其实这个问题大家在回答的时候可以想想“一个水杯、电梯如何进行测试”这样的问题,我们可以从功能、非功能等方面进行回答。而这里学员就限制于功能方面进行回答了。
综上,测试无非面试的有几大模块:自我介绍、项目介绍、数据库、Linux、Java基础或算法、测试流程、工具、软件测试方法等,不管面试的结果和过程如何,一定要保持良好的心态,面试过程中难免受到个种打击,但是没关系,一呢是善于积累总结不足、二来呢面试有时候也是看缘分的,一定要相信自己能够进入理想的公司。