|
金三银四已经到来,相信已经有很多的小伙伴已经在物色新的公司,以及有很多零基础想要入行的小伙伴。其实对于有能力的人来说,多会儿都会有机会出现。但现在刚刚过完年,大多数人已经拿完了去年的年终奖开始找下家了。 在此为大家分享一些在软件测试面试时常见的问题分析。 测试思维 面试中很常见的一个问题就是“给你一个登录页面/给你一支笔,你会怎么测试”。 在面对面试官问你问题的时候,实际是在考察你的测试思维,这个时候你就应该从以下几个方面进行回答:UI测试、功能测试、用户体验、安全性、性能等等几个方面。 然后将以上的每个方面进行扩展,简单讲几个用例就可以了。 面试官除了会问你某个东西怎么测试外,还会关注你的简历内的经验,从简历中挑选一个来进行深度的考察。 例如简历中如果写了财务模块测试,那相对应的在面试前你就要对该模块进行简单的总结。以下是我的简单总结,仅供参考: UI测试:通过对比UI效果图进行支付按钮、支付详情页面等UI测试; 字段规则校验:检测页面字段的必填、非必填、合法、不合法规则; 业务逻辑校验:主要分为正向逻辑、逆向逻辑、前后端交互数据同步等方向; 暴力测试:同一条数据重复提交检验、请求超时校验、请求中断校验等; 安全测试:支付金额与收款金额不一致测试、重复支付测试; 性能测试:关于性能模块,目前个人还没去升入了解。 问题定位能力 面试中经常会遇到以下两种问题:页面崩溃了如何定位,如何定位前后端问题? web页面问题定位 前台错误: 前台的bug通常是功能、界面和兼容性等有关,涉及到jstl、jsp、js、css,html方面比较多。 bug主要是两块,第一就是JS写的问题,这个你可以按F12打开控制台,在console中查看报错信息,一般浏览器都会显示报错的js,对于出错的js可以在Sources下查看对应报错的资源文件,基本上都会找到错误的原因变量未定义,参数未定义等,JS错误都很好解决的。 第二个就是页面中的bug了,现在做web项目基本上没有做静态页面的都是动态了,所以你在页面中要么使用了小脚本要么使用了EL表达式来存值。页面报错的话,在控制台是可以看到你错误行号和附近代码的,你自己去找就行。 后台错误: 根据后台日志文件查找错误 后台涉及到servlet,jms,ejb,还有很多框架,struts,hibernate,spring,ibatis等。bug比较难改,但是好找。主要就是看控制台报错,然后定位错误行号。如果配置文件没有问题,那么一般的报错就是空指针,或者是数组下标越界。看附近变量,看方法的参数基本都可以定位错误。 APP程序问题定位 安卓和ios对比同时存在错误,大概率为服务端错误。 抓包工具/app端调试模式日志/后台日志系统,通过日志内容分析是否服务端错误,常见的服务端错误有如下: 接口请求异常错误:直接提示系统异常; 接口请求成功返回状态码200,但是响应数据内容错误; 接口响应返回数据正常,但是前端字段取值错误 专业技术能力 任何一个产品都离不开功能测试,所以作为一个资深测试人员,至少必须具备上述的“测试思维"、”定位分析能力“。 除了必备能力外,作为测试人员如果能具备以下能力,无疑能大大加深面试官对你的好评。 自动化 1.使用什么测试框架做的上一个项目的自动化测试 2.自己最熟悉那个库,如何使用这些库的,是否做了基于复用封装,怎么考虑的这些封装。 3.如何定位app上的元素 4.//*[contains(@text,"登录")]是什么意思 5.自动化遇到用例fail掉如何排除故障 6.等待元素出现的这个方法如何实现的 7.如何在app一个列表的listview中查到自己想要的那个元素(图片,文字,按钮)并点击 8.如何在脚本中组织测试用例,用什么模式设计 9.如何测试app正确处理了服务器返回的异常,网络异常 服务异常等 Linux/环境部署 将常用的linux命令背起来, 面试的时候可以灵活的说出自己常用的命令都是哪些,然而一些不常用的命令在使用的时候查一下百度即可 数据库 如果自己在平常使用数据库比较多的话那应对面试就不会有什么问题,如果平时不常用的话,那就需要在面试之前将数据库的增删改查背熟,在面试的时候结合日常的测试场景进行描述 例如:数据库在日常测试的过程中,主要使用的功能是增删改查,例如说测试到支付场景,由于支付金额较大,我们需要提前根据订单号查询到对应的收款任务,再将收款任务的相关金额字段修改成0.01进行支付测试。 开发语言能力 如果做软件测试想要拿到一份可观的薪资,那么就需要熟练掌握一门开发语言。 因为现阶段软件测试行业更加流行的测试自动化,至于开发语言能力的掌握程度至少要能支撑你的自动化框架,对框架内的一些方法进行封禁使用。 在面试中可以具体告诉面试官你在做测试自动化中的具体内容,这样可以提高面试官对你的答案的可性度。 总结 想要成为一个,面面俱到的测试工程师确实很难。 软件测试工程师首先需要对产品有认知,在具备本身的测试能力以外还需要具备开发能力以及基础的运维能力。所以测试人员无疑是需要游走整个项目团队的核心人员,我相信软件测试的未来地位也会变得越来越高。 |