马上就又到了程序员们躁动不安,蠢蠢欲动的季节~这不,金三银四已然到了家门口,元宵节一过后台就有不少人问我:
现在外边大厂面试都问啥
想去大厂又怕面试挂
面试应该怎么准备
测试开发前景如何
面试,一个程序员成长之路永恒绕不过的话题。每每到这个时期,不管当前有没有跳槽换工作需求的,都多少会跟着观望一下“外边的世界”~
当然外边的世界很精彩,但出来混,可不能没有一点准备,赤手空拳上阵。给大家分享一份免费的 测试工程师面试题,涵盖不少大厂高频必考点,需要的同学可免费领取。
不只是面试,了解市场需求,认识自己的问题,熟悉Python高频难点,巩固 Python相关知识...这份资料都可以帮助到你。
金三银四刚开始就拿到了蚂蚁的offer,这份阿里大牛总结的面试笔记,能掌握这份笔记的70%以上感觉就能拿大厂offer。
为了帮助更多的粉丝朋友们都拿到心仪的offer,小编在此把这份笔记分享出来
接上篇:
8.16 post 申请方式,用 get 会报什么错误。
404 Not Found
请求失败,请求所希望得到的资源未被在服务器上发现,没有信息能够告诉用户这个状况到底是暂时
的还是永久的,假如服务器知道情况的话,应当使用 410 状态码来告知旧资源因为某些内部的配置机
制问题,已经永久的不可用,而且没有任何可以跳转的地址,404 这个状态码被广泛应用于当服务器
不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下,出现这个错误的最有可能的原
因是服务器端没有这个页面。
8.17 http 协议提交请求头内容
Accept-Charset:浏览器能够显示的字符集
Accept- Encoding:浏览器能够处理的压缩编码
Accept-Language:浏览器当前设置的语言
Connection:浏览器与服务器之间连接的类型
Cookie:当前页面设置的任何 Cookie
Host:发出请求的页面所在的域
Referer:发出请求的页面的 URL
User-Agent:浏览器的用户代理字符串
Content-Type:请求数据的格式或者是类型
九、接口测试
9.1 接口测试怎么测
(jmeter 版本)
首先开发会给我们一个接口文档,我们根据开发给的接口文档,进行测试点的分析,主要是考虑正常
场景与异常场景,正常场景,条件的组合,参数的格式校验等价边界值;异常场景,多一个参数,少
个必填参数,参数为空;接着编写测试用例,用的 Jmeter 工具去运行,创建线程组,建立 http 请求,
输入测试用例,请求参数,建立察看结果树,运行,看返回的结果,是否跟接口文档里面要求的返回
结果一致,其他用例,值需要修改里面的参数,请求地址这些信息。
举例说明:(不要登录跟注册)
比如说原来我们做一个申请借款的接口,对接口进行测试分析,考虑正常场景与异常场景,正常场景,
考虑不同参数组合,比如说,不同借款方式,还款期限,还款曰期,借款的利率等参数组合;也要测
试每个参数格式校验,异常场景,:多一个参数,少一个必填参数,比如没有借款的利率,参数为空
的,比如借款标题为空,编写测试用例
在 jmeter 中执行,填写参数,更地址就 ok,发送请求
(python + request)
原来我们接口主要是用的 python + requests 去运行的
首先,开发会给我们一个接口文档,拿到接口文档后,我们就进行测试点的分析,
考虑正确场景,条件的组合,
异常场景,多一个参数,少一个参数,参数为空的情况
比如原来我们做一个生成订单的接口,考虑正常场景,异常场景
正常场景就是不同的订单类型,订单金额,能不能申请订单,每个参数的格式类型的校验,
异常场景,多一个参数,少一个必填参数的时候,还有参数为空的情况
原来我们是用 python + request 去做的接口
首先,导入 request 包
建立一个 headers,保存请求头的信息,因为订单请求方式是 post 类型,数据格式是 form 表单格式,
我们把数据保存到 data 的字典里面
这个时候我们还需求登录的 cookie 值跟登录后产生的 token 值
我们会去通过动态关联去获取登录的 token 跟 cookies,
cookies 值的话,我们是直接调用登录返回的 cookies、token 值的时候,我能是通过导入 re 模块,
通过正则表达式去提取
当参数, headers、cookies 输入完成以后,我们就发送请求,打印返回结果,检返回结果是否跟我
们测试用例一致
当运行其他测试用例时,我们去修改 data 里面的参数就行,在发送请求
有的请求时 htps 协议的时候,我们发送请求的时候还会 very= false 去忽略掉证书验
证对应多个接口调用 cookies 我们会用到 session 去保存接口发现比较多的问题,就是格式校验这
块
比如说我们提交订单,订单数据没有显示,订单格式也没有显示,输入字母,汉字都可以
订单类型为空,也会生成订单成功
我觉得接口可以发现接口更多的 bug,还可以提早进行测试,提高测试的质量
9.2 两个接口有关联, jmeter 具体怎么做
另外两种问法:上个接口的返回值是下个接口的请求参数,这种如何处理?动态关联有没有了解过?
这个涉及到动态关联,首先要搞清楚后一个接口需要用到上一个接口的什么数据,例外要看数据是在
哪里取的,是在 head 还是在 body 里,然后如果要取的数据是 json 格式我会在发请求用 json 提取器
去取这个数据,如果是其他格式的就用边界提取器或正则表达式去取数据47
就拿我当时做的那个下单接口来说吧,因为下单接口需要先登录,需要用到登录接口的
cookies 来做鉴权,首先就是把登录接口调试通过,然后在登录接口的 http 请求中添加一
个边界值提取器或者也可以用正则表示式提取器去提取登录接口的响应头中的 cookies 值
然后在下单接口中需要添加一个 http cookies 管理器,在 http cookies 管理器中引用登录
接口提取出来的 cookies,这样就可以了
如果是不同的线程组的话,那在登录接口中还得添加一个 Beanshell 取样器,在
Beanshell 取样器中,利用函数助手中的 SetProperty()函数把提取出来的 cookies 设置为全局变量,
然后在下单接口的 http cookies 管理器中利用函数助手中的 Property()函数引用登录接口中设置的
全局变量,这样就可以了。
9.3 接口测试主要目的是什么?
例外两种问法:接口测试的价值,意义?为什么要做接口测试?
主要就是验证后台服务端的业务逻有没有问题,提高测试的效率
①越底层发现 bug,它的修复成本是越低的
②前端页面修改频繁情况下,接口测试不受页面元素改变而影响
③检查系统的安全性,前端传参不可信,比如京东购物,前端价格不可能传入-1 元,但是
通过接口可以传入-1 元
④如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口自动化测试
可以提高测试效率
⑤接口测试相对容易实现自动化持续集成,且相对 U 自动化也比较稳定,可以减少人工,回归测试人
力成本与时间,缩短测试周期
9.4 接口测试的流程
1,首先分析开发给到的接口文档
2,接口文档分析完成,编写测试用例
3,然后借助接口测试工具去测试执行测试用例
4,发现 bug 提交 bug,并跟进 bug 修复
9.5 接口测试和平常的 Ul 测试有什么区别?
其实这两者测试的侧重点是不同的,接口因为没有界面,更多考虑后台服务器对请求的,处理逻辑问
题,业务交互,检测的是后台“容错机制”是否完整;
而 ui 更多会去关注页面展示,数据转换,界面排序这些功能,当然也会后台数据处理的问题,ui 测
试其实已经包含了接口测试。系统功能的用例更全面,不仅有界面的,也有业务功能用例,还有其他
用户场景的用例功能入口用例,流程用例,而接口测试主要根据各种入参场景来设置用例。
9.6 给你一个新的接口,你怎么去设计用例?
首先要对于每个要测的接口都要先搞清楚这个接口的功能,它的作用是什么,熟悉这个业务功能需要
用到什么协议,请求方式是什么,接口有哪些参数。对于每个参数的作用都要搞清楚,像数的类型,
是否有约束限制,是否为必填的,长度,其他的限制等等,如果两个参数之间有关联我们还要考虑参
数的组合场景,对于参数不理解的,一般都会跟开发沟通下,然后考虑返回数据的类型,返回数据中
的返回码和返回信息是什么,通过以上几个点去提炼测试点,设计用例。
参数约束——长度、必选项、格式、数据类型
业务场最——正确的业务场景;错误的业务场景;异常场景:服务器空间不足
组合场景——相互依赖:手机和验证码、用户名和验证码;
相互排斥:二选一当然还有边界值等价类等等
Jmeter 测试流程,步骤如下:
创建 jmeter 线程组一添加 HPPT 请求-输入协议-域-端口-路径-编码-请求方式-请求参数-启动
Jmeter 测试流程:
先需求,再根据需求写测试点转换成测试用例,根据测试用例编写测试脚本;执行测试脚本;
提交 BUG,跟踪 BUG
9.7 接口文档主要包含哪些内容?
接口文档一般两种形式的,要不就是 word 版本的要不就是 htm 的形式,具体内容
1.URL(接口地址)
2.接口功能
3.请求方式:post
4.请求参数,以及接口中每个参数的详细说明,类型,是否为必填,约束条件等等
5.响应数据及格式,返回码,返回码解释等等
9.8 你们什么时候测试接口
一般有需求就会做,后台的接口开发好,就可以开始测。例外,如果增加了新需求,也要做接口测试,
还有就是开发对后台的接口做了修改,交互逻辑发生变化,我们也要重新对接口进行测试。
9.9 你怎么去检查,分析
我们主要是根据入参情况,去看接口的返回值,对于返回值,我主要关注的几个点:1.状态码
2.提示信息 3.返回数据的具体内容。根据接口文档的说明去检查这个 3 个点是否满足接口需求文档,49
4.有些如果要检查数据库的,就连接数据库获取数据与返回的数据做对比。
如果不满足就是有问题,如果满足则通过,如果有 Bug 我们会先大概分析下,是什么原因,
并进行复测,如果还是有问题,提交 Bug 给开发,让开发修复,之后再回归测试
持续更新,敬请期待