一、基础题(软能力)

        主要考察面试者的语言表达能力、逻辑思维能力、反应能力、理解能力、协调能力等,一般会在面试开始热身的时候问一两道题。

1、自我介绍

2、换工作的意图,遇到了什么问题,你想要新的公司/团队给你带来什么?

3、为什么选择软件测试这一行,觉得自己有什么优势或劣势?

        沟通能力强,善于与人打交道;

        是一个比较细心且有耐心的人;

        有点强迫症,追求完美;

        爱总结,会将测试过程中发现的问题进行归纳总结,形成经验教训;

        爱学习并且善于学习,能很快掌握新工具的使用;

        综合起来我觉得我是胜任这个工作的。

4、你未来的职业规划?

5、当开发人员说不是bug时,你如何应付?


二、测试理论(基础题)

        主要考察面试者的基本能力,比如测试计划、流程、bug的定义、做过哪些测试。一般我们认为这些能力做的再好都是应该的,不会有加分;但如果做的不好,那就是个不合格的测试工程师了。

1、请描述你上个项目的测试流程?

        参与需求评审->编写测试计划->设计测试用例->用例评审->执行测试用例->缺陷提单->编写测试报告

        细一点的话,可以将冒烟测试-接口测试-UAT用户验收测试等也加入进去,视情况而定。

2、请描述下bug的几个要素?        

      包含:标题、问题描述,详细操作步骤,发现时间,系统环境,硬件环境,严重程度,功能模块,是否会重现,最好提供:有问题的账号、对应的报错截图、或者报错日志等。

3、测试分为哪几个阶段,分别由谁来负责?

        一般来说分为5个阶段:单元测试、集成测试、系统测试、验收测试

        单元测试一般由开发人员进行自测;

        集成测试和系统测试,由测试工程师负责;

        验收测试,则由甲方或者业务方进行验收。

三、移动端测试(专项题)

        如今是移动互联网的天下,大部分公司都有APP应用、小程序、公众号等,做好响应准备是必备的。

1、你是如何做应用的兼容性测试的?

        主要涉及iOS和Android端,

(硬件方面)

        1)设备类型:区分iOS不同机型、Android不同机型、平板电脑、穿戴式设备等;

        2)生产商:Android手机不同厂商会有定制化差异

        3)显示屏:屏幕大小、分辨率、刘海屏、大屏、小屏、折叠屏、曲面屏等

        4)、不同系统(12、13、14、15等)

(软件方面)

        操作系统:安卓不同版本的系统、鸿蒙系统、iOS不同版本的系统等;

 (其他方面)

        1)开发技术、语言的不同:RN、H5、native等;

        2)网络:2G、3G、4G、5G、wifi、弱网等;

        3)用户使用习惯:如大字体的适配、语言的变化(中文、英文、繁体)等。

2、举几个你测试过程中遇到的兼容性问题?

        1)H5页面中CSS样式兼容:样式错乱、布局不灵活、样式便捷处理不好看,导致窄屏手机显示异常等;(一些属性的浏览器标示前缀没有添加,导致默认浏览器不认识这个属性,所以样式错乱)

        2)H5页面缓存问题:页面一直显示修改前的样式,需要强制刷新页面或者清除缓存才生效;

        3)上下滑动卡顿:安卓和大部分iOS手机上下滑动顺滑,小部分iOS手机卡顿等

3、你觉得哪些场景需要做兼容性验证?

  • UI显示
  • 多次快速点击
  • 拉起虚拟键盘挡住输入区
  • 虚拟物理按键收起与显示
  • 多个输入框来回切换
  • 控件焦点热区文体
  • 前后台、多个应用切换
  • 指纹识别和faceid等
  • 框架升级
  • 网络
  • 新老版本兼容
  • 第三方依赖库或者SDK升级
  • 前后端版本兼容
  • 安装卸载更新

4、有没有遇到过手机崩溃(闪退)?碰到了怎么解决,通常是什么原因造成的?一般怎么抓取日志?

        1)系统不兼容,版本不兼容,导致一安装就闪退;

        2)空指针:对象没有初始化就使用了(点击某个功能的时候闪退);

        3)代码错误:没有经过测试的新功能,可能会导致App在生产环境中失败等。

四、接口测试

1、在接口测试过程中发现的bug多不多?能举几个例子?

        比如,输入框,在页面上输入负数,肯定是无法提交过去(前端页面会判断金额),如果我不走前端,直接用接口工具发请求,输入一个负数过去。 (假设服务端没做提现金额数据判断) 余额=当前余额(100)-提现金额(-100),那么提现-100,余额就变成200了,也就是越提现,余额越大了。

        1)数字录入框:输入非数字

        2)长度校验:输入超过最大长度、输入空等

2、你们公司的接口测试流程是怎样的?

  首先是从开发那里拿到API接口文档,了解接口业务、包括接口地址、请求方式,入参、出参,token鉴权,返回格式等信息。

  然后使用Postman或Jmeter工具执行接口测试,一般使用Jmeter的步骤是这样的:

1)在测试计划下新建一个线程组;

2)添加HTTP请求默认值(输入接口服务器IP和端口);

3)添加对应的HTTP请求,一个请求一个用例(包括输入接口路径,访问方式,参数等);

4)然后创建断言和查看结果树;

5)最后调试并执行用例,最后编写接口测试报告。

3、jmeter中如何实现关联?

  先从上一个接口中通过正则表达式提取器或jsonpath解析器截取下一个接口需要的参数值保存到变量,然后在下一个接口中通过${变量名}去获取。

        Jmeter,JSON提取器【提取满足特定条件的变量值】

4、谈谈你对HTTP协议的了解?

        http:超文本传输协议,端口为80,特点(无记忆功能、快速)是由请求和响应两部分组成。请求由请求头、请求行、请求正文组成;响应是由响应头、响应行、响应正文组成,之前我们公司的接口是采用https协议的。

        https:http+ssl协议,端口443,面向安全的超文本传输协议,较http更安全。    

5、get和post请求有什么区别?

get和post请求都是客户端向服务器提交的一种请求方式

get是明文传输参数、倾向于请求服务器资源。比如打开网站

post传输数据不可见,安全性高,倾向于向服务器提交数据,比如注册等

五、SQL数据库(必备技能)

1、说下左连接和右连接的用法?

        left join (左连接)、right join (右连接)、inner join (等值连接或者叫内连接)、full join (全外连接)

        用法:select * from A表 left join B表 on A.id = B.id; 

2、写一个更新语句?

        update 表A  a set a.phone = '188XXXXXXXX' where a.id = '2212';

3、模糊查询用什么关键词?like

六、Linux(必备技能)

1、说说你常用的linux命令?

2、查日志一般用什么命令?tail 

3、查日志时,搜索关键词的命令?

        tail -f log |grep '188XXXXXXXX'

4、如何查看进程,CPU使用率?top

七、敏捷开发模式(项目模式)

1、有做过敏捷项目吗,和传统的项目有什么区别,使用了什么措施?

        敏捷项目:每日站会,看板监控,燃尽图,开短会,计划发布,迭代复盘会议等,

        敏捷相对于传统项目迭代会更快,一般2周一个迭代,快速响应需求,需求变更频繁等。

2、敏捷测试下的工作流程?

        1)更侧重于用x-mind编写测试场景,进行测试场景评审,减少测试用例、测试计划等工作的比重

        2)在前后端联调期间即进行接口测试,尽早开始测试;

        3)关注持续迭代的新功能,针对新功能进行足够的SIT测试;

        4)引入探索性测试,由于时间原因,一般只进行一轮回归测试等。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐