面试需要准备,是责任感的体现
关于面试,很多人都有这么一个误区,觉得只要我个人能力过硬,根据不用去准备。只有那些在简历中注入了大量水分的,才需要去刷面试题,企图蒙混过关。真的是这样嘛?
我们先看来一下,一般的面试流程是怎么样的:
1.自我介绍。在自我介绍中,需要描述出工作经验,项目经验,职业技能,以及技能在项目中的运用
2.问答环节,考核你的技能水平是否达到用人单位的要求
上述这些问题,都是需要在有限的时间内,简单明了的描述出来的。而且很多时候,就算你都回答出来了,但是否有提前准备,面试官是能感受出来的,你有准备,是对用人单位的一种尊重,也可以表现出来你对工作的责任感。所以对于面试而言,准备工作一定要做,我们可以从两个大的方面进行准备:
1.个人介绍
2.测试技能准备
下面就讲。
一、我们来看一下,在个人介绍中我们需要准备哪些方面:
1.自我介绍
在自我介绍中,重点描述:
1)个人资料(姓名,籍贯,现住地,学历情况)
2)工作经历(在XX企业负责的XX项目,你在这个项目中的作用(重点说最近的一、两个项目,一般来说3年之前的项目,面试官基本上就不是很在意了))
分享一个自我介绍模板,供题主参考:
你好,面试官,我叫xx,来自xx,毕业于xx。目前有两年的功能测试经验。最近的一份工作是xx公司,主要参与app的功能测试,测试的APP叫xxapp,它是一款商城类的app,主要负责的是订单模块的测试,包括创建订单,订单状态的同步,订单信息的修改和查看等。主要运用边界值,等价类,错误推测等常见黑盒测试方法。
2.之前公司所负责的项目介绍
项目的介绍主要分为两大块:
1)简单明了的介绍你负责的项目,包括:
1)项目介绍
2)项目中迭代周期
3)项目规模
4)每次迭代需要涉及的开发部门(前、后端)
2)详细说明,在该项目中你负责的模块,并且你对负责的模块都进行了哪些测试,采用了哪些的工具或者方法
分享一个项目介绍模板,供题主参考:
xxapp,是一款集短视频、游戏、直播、社交互动于一体的内容娱乐APP。公司大约一个月发布一个较大的版本,需求数20几个-40几个不等(用例数xx+),每个版本包括的需求APP端(IOS和安卓),WEB端,后端。项目分APP端负责人,WEB端负责人,后端负责人,负责人牵头及落实整个测试流程。我当过的角色有APP端负责人、后端负责人。负责过的模块用例数大概是500左右。
3.技能描述
技能的描述,就参照简历中写的自己会的技能。说的时候,最好结合一下自己在项目中的应用。比如:使用adb抓取APP日志,使用的场景(白屏或者闪退);使用fiddler抓包,使用的场景(接口报错,定位是前端还是后端的问题)等等…
个人介绍准备的总结:
上述的准备其实比较简单,按照我给出的模板,基本上都可以过关了。所以我们真正需要花大量时间准备的应该是技能方面。因为软件测试行业,也算是一项专业性非常强的行业,对于职业技能是有一定的要求,同时又针对不同方面的测试,对技能的要求又会不一样。
二、测试技能面试题准备
不同测试方向,对应的测试技能是不同的
以下就是针对不同的测试方向,核心需要掌握的技能。
功能测试可以理解为软件测试的基础,是必须要会的。
接口测试其实起到的是承上启下的作用。不了解接口测试,之后的接口自动化以及性能测试就根本入不了门。
自动化测试是初级测试工程师与中级测试工程师的分界线,如果要想拿到更好的offer,不懂代码是不行的。
三、最后我们来说一下,今天的重点:预测常见的面试题
1、技术类的问题
1) 怎么保证软件产品的质量?
答:1.需要团队共同来参与测试;2.需求就开始介入;3.发现问题不能放过;4.加强技术,通过用例集来记录测试点防止有场景未被覆盖到。
2) 你在公司中,是怎么准备测试数据的?
答:1.把生产环境数据脱敏之后,导入到测试环境;2.通过业务逻辑,构造测试(例如需要登录,可以先注册然后再使用注册账号进行登录);3.通过数据库创建,这里面有分为"按照业务逻辑设计测试数据"和"通过导入的方式来设计测试数据"两种方式;4.通过代码来创建测试数据
3) 你们公司是怎么划分BUG的严重等级的,为什么这么划分?
答:我们公司主要分为4个等级:严重、高、普通、一般:
严重:一般是系统级别的错误,会导致系统奔溃,严重影响用户使用;以及影响范围广的BUG 高:不会导致系统崩溃,但是会有导致功能出现异常的BUG,不满足需求设计的BUG
普通:边界值错误等
一般:易用性错误,提示性错误等等
- 在实际工作当中,你主要从哪些维度设计测试用例?
答:我们设计用例时主要从功能、性能、安全、网络、兼容性、UI界面、专项测试这几大块。
其中功能,重点关注我们软件产品有没有实现具体的功能,只要测试是通过测试用法论,设计测试用例来进行测试。
性能上,我们主要考虑功能操作的响应时间,以及CPU、内存、网络、磁盘IO的消耗情况。
安全上,我这边没有深入的进行测试,但是有一定的了解,我知道需要进行敏感信息是否加密、SQL注入等一些简单的安全测试。
网络上,我们需要关注,无网络、弱网、网络之间的切换的测试点 兼容性上,主要关注不同的版本兼容,如果是前端界面,需要关注分辨率等测试,如果是手机需要关注操作系统的兼容性。 UI界面上,主要是关注一些UI测试点,按钮是否可用,界面之间是否能够顺利的跳转,布局等这些测试。 专项测试:针对一些独有的功能进行测试。
5) 你在公司当中,是怎么分析定位BUG的?
答:在公司里面,我们定位BUG必须借助工具才能完成。
例如我们可以使用fiddler抓包,抓取接口的信息,如果是前端问题,那么在前端输入信息,和fiddler抓到的请求肯定会不一样。如果是接口的响应数据有问题,那么就是后端BUG。
怎么深入定位后端里面的BUG呢?
这个时候,我们需要借助日志来完成,我们按照开发提供的日志文件路径,来使用关键字搜索对应时间所产生的错误日志,根据日志的描述,来判断问题出在哪个方面。如果日志文件看不懂,可以让开发帮助查询分析。
一般BUG的来源有这么几个:
开发修复BUG引发的BUG
开发新功能引发的BUG
开发使用了依赖的第三方插件导致BUG
缓存导致的BUG
6) 你们公司是如何做接口测试的?
答:1.先进行需求分析,了解此次迭代需要实现的功能;
2.解析API文档,了解此次迭代都新增了哪些接口,又有哪些接口更改了;
3.根据API文档,编写测试用例;
4.使用接口测试工具来完成接口测试用例的执行,常用的接口测试工具postman或者jmeter;
5.在测试的过程中,需要进行缺陷管理以及跟踪,确认开发即使响应,并且快速修复问题;
6.生成测试报告,将测试结果同步到项目组,来确定此次迭代是否可以上线;
7.考虑将此次迭代的接口,编写到接口自动化项目中,方面之后的回归测试
7) 什么时候开展接口测试?
答:1.开发给出API文档的时候,我们就可以开始编写接口的测试用例,这里有一个常识性的知识点:开发给出API文档的时候,接口并没有被开发出来;
2.后端的开发提测的时候,我们就可以开始进行接口的测试了(实现接口的测试用例);3.接口测试完成或者快完成,我们就可以开始考虑使用代码实现接口的自动化
8) GET和POST有什么区别?
答:1.Get通过URL来传输数据,POST通过URL和请求体传输数据,在请求体中的数据,我们是无法直接观测到的。
2.在安全性上,GET没有POST安全。但是他们都不是绝对安全。因为POST中的数据,可以通过抓包获取
3.在数据大小上,GET有限制,而POST没有上限。
9) 你在实际工作当中,是怎么解决数据之间的依赖关系的?
答:我在之前的XXXXX项目中,参与了的接口测试中,有大量接口存在依赖关系,以登录和添加员工接口为例。添加员工接口依赖了登录接口;我们使用的工具是POSTMAN,我这边通过先提取登录返回的令牌,然后保存到环境变量,再在下一个添加员工接口中,引入保存的环境变量,实现关联。
10) 自动化测试的优缺点?
答:优点: 自动化测试,可以很好的进行回归测试,自动化测试,能够解决手动测试一些难以测试的场景 自动化测试,可以解决一些复杂的业务逻辑。
缺点: 不能完全代替手工测试, 自动化测试的脚本的编写和维护比较困难,对于质量比较低的代码,不适合做自动化。 对于需求变更频繁的项目,项目周期比较短的项目也不适合做自动化
11) 请简单介绍下PO模式的原理?
答:什么是PO模式,它有什么作用?
PO模式,英文全称PageObject;它主要是为了减少代码重复,让代码可读性更强,更容易维护。
PO设计模式是怎么进行设计的?
PO设计模式主要包括三层:对象层、操作层、业务层
对象层:主要封装某些元素定位的方法;
操作层:封装元素的一些特定操作;
业务层:把一个或多个操作组合成具体的业务,实现具体的功能测试
用最简单的案例描述PO模式:
那么接下来我们就以登录页面为例,来描述PO设计模式的实现过程。
step1: 先实现BasePage基类,这个基类当中主要是实现driver的获取。通过这个driver可以进行 兼容性测试。
step2: 根据BasePage基类,实现对象层,封装登录页面的元素定位,封装定位用户名、密码、 确认按钮的定位方法
step3: 根据封装定位方法,封装他们的操作,例如输入用户名和密码,点击确认按钮
step4: 根据封装LoginPage页面和操作类,实现登录的测试。
12) 给你一个杯子你怎么测,至少写出20条测试用例
1.功能测试:
主要关注水杯基本功能
1.1 水杯是否可以正常装水
1.2 水杯是否可以正常喝水
1.3 水杯是否有盖子,盖子是否可以正常盖住
1.4 水杯是否有保温功能,保温功能是否正常保温
1.5 水杯是否会漏水,盖住盖子拧紧后是否会漏水
2.界面测试:
主要关注水杯外观、颜色、设计等方面
2.1 外观是否完整
2.2 外观是否舒适
2.3 颜色搭配及使用是否让人感到舒适
2.2 杯子外观大小是否适中
2.3 杯子是否有图案,图案是否易磨损
3.易用性测试:
主要关注水杯使用是否方便
3.1 水杯喝水时否方便
3.2 水杯拿起放下是否方便,这里会衍生到水杯形状的测试
3.3 水杯装水是否方便
3.4 水杯携带是否方方便
3.5 水杯是否有防滑功能
3.6 水杯装有低温或者高温水时,是否会让手感到不适
4.性能测试:
4.1 水杯装满水时,是否会漏出来
4.2 水杯最大使用次数
4.3 水杯的保温性是否达到要求
4.4 水杯的耐寒性是否达到要求
4.5 水杯的耐热性是否达到要求
4.6 水杯掉落时,是否可以正常使用
4.7 水杯长时间放置时,是否会发生泄露
5.兼容性测试:
主要关注水杯是否可以装其他液体,如果汁、汽油、酒精等
6.可移植性测试:
主要关注水杯放置环境等
6.1 将水杯放在常温环境中,使用是否正常
6.2 将水杯放在零下的环境中,使用是否正常
6.3 将水杯放在高于正常温度的环境中,使用是否正常
7.安全性测试:
主要关注水杯外观和各种异常条件下是否释放有毒物质等
7.1 当水杯装满热水时,水杯是否会烫手
7.2 当水杯装上水后,是否会产生有毒物质
7.3 把水杯放在零下环境时,是否会产生有毒物质
7.4 把水杯放在高温环境时,是否会产生有毒物质
13) 现在有一个登录页面,有一个账号和一个密码输入框,一个提交按钮。请问登录功能怎么设计测试用例?
此题的考察目的:
1、了解需求(测什么都是从了解需求开始);
2、是否有设计 Test Case 的能力
3、是否熟悉各种测试方法;
4、是否有丰富的 Web 测试经验;
5、是否了解 Web 开发;
我们可以跟面试官了解确认需求:
1、登录界面应该是弹出窗口式的,还是直接在网页里面;
2、账号长度和密码的强度(比如需要多少位、大小写敏感、特殊字符混搭等);
3、界面美观是否有特殊要求?(即是否要进行 UI 测试);
4、····
测试用例设计:
测试需求分析完成后,开始用例设计,主要可以从以下几个方面考虑:
一.功能测试(Function Test)
1、输入正确的账号和密码,点击提交按钮,验证是否能正确登录。(正常输入)
2、输入错误的账号或者密码, 验证登录会失败,并且提示相应的错误信息。(错误校验)
3、登录成功后能否跳转到正确的页面
4、账号和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示)
5、账号和密码,中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤)
6、记住账号的功能
7、登录失败后,不能记录密码的功能
8、账号和密码前后有空格的处理
9、密码是否加密显示(星号圆点等)
10、牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
11、登录页面中的注册、忘记密码,登出用另一帐号登录等链接是否正确
12、输入密码的时候,大写键盘开启的时候要有提示信息。
13、什么都不输入,点击提交按钮,看提示信息。(非空检查)
二. 界面测试(UI Test)
1、布局是否合理,两个 文本框和一个按钮是否对齐
2、文本框和按钮的长度,高度是否复合要求
3、界面的设计风格是否与 UI 的设计风格统一
4、界面中的文字简洁易懂,没有错别字。
性能测试 (Performance Test)
1、打开登录页面,需要几秒
2 、输入正确的账号和密码后,登录成功跳转到新页面,不超过 5 秒。
三、安全性测试(Security Test)
1、账号和密码是否通过加密的方式,发送给 Web 服务器
2、账号和密码的验证,应该是用服务器端验证,而不能单单是在客户端用 javaScript 验证
3、账号和密码的输入框,应该屏蔽 SQL 注入攻击
4、错误登录的次数限制(防止暴力破解)
5、考虑是否支持多用户在同一机器上登录
6、考虑同一用户在多台机器上登录
四、可用性测试(Usability Test)
1、是否可以全用键盘操作,是否有快捷
2、输入账号,密码后按回车,是否可以登录
3、输入框是否可以以 Tab 键切换
五、兼容性测试(Compatibility Test)
1、主流的浏览器下能否显示正常已经功能正常
2、不同的平台是否能正常工作,比如 Windows, Mac
3、移动设备上是否正常工作,比如 iPhone, Android
4、不同的分辨率
PS
分享技巧:在面试软件测试工作的时候,面试官可能不会直接问你掌握什么测试方法,他们会问你测过什么项目,可以举一个例子,一个网页就可以。你就可以使用上述登录的案例,先简单两三句介绍一下我们项目,然后开始描述测试用例。
2、职业发展类的问题
1)为什么要做测试?
答:从软件上来讲,测试是为了保证产品的质量而产生的技术。
从个人角度上来讲,为什么选择做测试呢?
我这边对比过开发,开发虽然薪资高,但是容易秃头,而且测试相对开发更容易学习和推广。因为随着软件的发展,我们发现测试也越来越来重要,光靠开发团队无法完全的保证产品质量,所以我们需要一个角色,也就是测试对接产品、开发,所以测试非常的重要。
而且测试薪资也不一定比开发要差
阿里的总监某某就是测试出生,但是现在年薪几百万,比开发还要牛B;职友集的薪资统计得出,同样10年工龄,测试平均薪资就能超过开发,所以无论是做测试还是做开发,都可以很高很远。
2)你认为测试在行业中的比重大概是多少,未来的发展趋势是什么?
答:按照IT行业的情况,根据数据统计,可以知道开发人数在500W左右,一般来说测试开发的比例是1:5-1:10之间,按照1:10来算,我们测试大概有50W个。未来5-10年,测试还是非常重要
1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;
2、关注我。让我们成为长期关系,下一个视频会分享更多的硬核干货;
3、本文章学习资源,均可以免费分享。
目前测试平台项目研发已经完成并且在Github开源,有兴趣的朋友可以去Github下载
https://github.com/ooqitech/ATP
不要只做收藏从未停止,行动从未开始的人,很多事情,做着做着就无师自通了。如果在做的过程中还能稍微加点思考,稍微看一些别人的经验和做法,成长会更快,效果也会更好!加油吧,测试人!路就在脚下,成功就在明天!
一个用心码了这么多文字的人,往往渴望得到大家的认可。如果你觉得这篇文章对你有帮助,双击屏幕,给我点个赞呀!
更多软件测试资源分享微信公众号:【软件测试小dao】
软件测试技术交流群:1033482984