目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
面试题1:没有接口文档,如果做接口测试?(这是个送命题)
没有接口文档,那还能咋办,瞎测呗!一个公司的开发流程里面,如果接口文档都没有,是无法展开接口测试的,你都不知道这个接口干什么的,也不知道具体每个字段代表什么意思,那还测啥呢?
当然,你肯定不能回答面试官不测(心理mmp,脸上笑嘻嘻),接下来就是扯犊子时间
1)没有接口文档,那就需要先跟开发沟通,然后整理接口文档(本来是开发写的,没办法,为了唬住面试官,先说自己整理了)
2)没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通
本题主要靠情商,通俗来说就是忽悠能力,先唬住面试官了再说,进去了也是瞎测测,随时做好背锅的准备
面试题2:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
1)手工测试中,用postman使用Tests中的set a global variable生成全局变量或者set an environment variable生成系统变量,后续直接引用这个变量值;用jmeter则使用后置处理器的正则表达式提取器、边界值提取器、json提取器提取,后续引用该变量值。
2)自动化测试中,通常会把接口响应的数据提取出来赋值给一个变量,后续直接调取该变量的值就可以使用。
用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那就用全局变量来传token参数
面试题3:如何分析一个bug是前端还是后端的?
平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug
这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯
面试题4:GET与POST的区别?
1)GET请求资源数据,POST向服务器传递需要处理的数据
2)GET传递数据大小不超过2083字节(2K+35),POST没有限制(Tomcat默认2M)
3)GET请求的参数会在Url上暴露显示,POST请求参数在Requestbody里,所以相对GET来说,POST安全性较高
4)GET 请求的静态资源会被浏览器缓存,POST不会被缓存
5)GET传递的数据类型是文本,POST是文本或者二进制
6)GET请求被回退时是无害的,POST请求被回退是会被重新再执行一次
GET和POST的使用场景:
1)在传递一些机密信息时必须要使用POST
2)只是查询获取数据时可以用GET
3)POST请求速率会比GET慢,因为GET请求产生一个TCP数据包;POST请求产生两个TCP数据包
面试题5:说说接口测试的流程和接口自动化流程,介绍一下request有哪些内容?
1)流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。
2)request 内容:
封装了get、post等;
3)以关键字参数的方式,封装了各类请求参数,params、data、headers、token、cookie等;
4)封装了响应内容,status_code、json()、cookies、url等;session会话对象,可以跨请求;
面试题6:接口测试用例的编写要点有哪些?
1)必填字段:请求参数必填项、可选项
2)合法性:输入输出合法、非法参数
3)边界:请求参数边界值等
4)容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
5)响应数据校验:断言、数据提取传递到下一级接口…
6)逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点
8)安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑
(如:跳过某些关键步骤;未经验证操纵敏感数据)
面试题7:postman的使用方式?高级用法?
1)基础使用:入参出参校验返回;
2)Environment:配置不同的环境参数,Globals:设置全局变量,Pre-request Script:配置使用环境变量或进行前置脚本处理;
3)团队可以更好地并行工作,前后端人员只需要定义好接口文档就可以开始并行工作,互不影响,只在最后的联调阶段往来密切;
面试题8:jmeter上一个接口参数返回值做为下一个接口入参的实现方式有几种,举例?
1)正则表达式处理器
2)JSON Path Extractor
3)边界值提取器
面试题9:接口自动化中,遇到签名、鉴权加密等,如何处理的,用到哪些方法?
比如MD5加密–hashlib内置库,看怎么回答怎么具体问:开放性。
面试题10:不可逆的操作,如何处理,比如删除一个订单这种接口如何测试?
此题考的是造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的
比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。
平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作
测试用例前置操作,setUp做数据准备
后置操作,tearDown做数据清理
面试题11:你之前自动化测试的数据放哪?怎么使用?公共变量的管理方式?
1)对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)
2)对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成
3)对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以
4)对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理
5)对于邮箱配置的一些参数,可以用ini配置文件
6)对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据
7)对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
别让昨天的失败阻挡明天的梦想。坚持奋斗,相信自己的能力与价值,勇敢去追求你所渴望的生活。每一次努力都是一次积累,只要不放弃,成功将会属于你!
坚持不懈,才能超越自己;追逐梦想,才能创造奇迹。无论前路多么艰难,只要心怀勇气与毅力,每一次努力都会让你离成功更近一步!
只有不怕困难的勇气,才能打破自我,实现梦想。相信自己的实力与能力,坚定追求人生目标,用汗水和努力书写精彩绝伦的人生篇章!