接口自动化的常见面试题
一、在自动化测试过程中上下游接口有数据依赖如何处理
用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那就用全局变量来传token参数
二、依赖第三方数据的接口如何进行测试
可以利用一些MOCK工具(如:Moco)来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖
三、Cookie和Session、Token的区别
cookie:是一门客户端技术,一般是由服务器生成返回给浏览器客户端来保存的,并且cookie是以键值对的形式保存在浏览器客户端的,每一个cookie都会有名称,值,过期时间...。
Session:是一种让请求从无状态变成有状态的机制,session是服务端的会话技术,当用户登录了系统,服务器端的就会创建一个会话,此会话中可以保存登录用户的信息。
token:是代表用户身份的令牌,通常客户端在登录时就发起申请由服务端进行授权签发,里面存放着一些关于用户的合法信息,用于判断请求是否合法(已登录),哪个用户发送的请求。
四、说说接口测试的流程
1、进行需求分析,熟悉项目需求
2、分析接口文档
3、制定测试计划
4、然后根据接口文档设计测试用例
5、搭建测试环境
6、执行用例
7、发现/提交BUG、回归测试
7、提交测试报告
五、什么时候开展接口测试?
1、一般是在前后端开发进行联调后进行接口测试
2、通过Mock接口测试,我们可以将接口测试提前介入,依据接口文档编写测试用例
3、在持续集成时,使用接口自动化测试进行集成持续保证测试质量
六、get请求和post请求对比?
1、get没有请求体,它的请求参数直接拼接在了url后,post是有请求体的
2、get请求相对来讲不安全,因为参数直接暴露了,post将数据放在了请求体中,相对来讲安全
3、get请求的数据量受到URL长度限制,post理论上没有限制
七、post请求的参数类型有哪些?
1、form表单传参, Content-Type: application/x-www-form-urlencoded
2、json传参,Content-Type: application/json
3、多参数表单传参(一般传输数据量大的文件,比如上传文件),Content-Type: multipart/form-data
4、xml传参,Content-Type: text/xml
八、怎么开展接口自动化测试(自动化测试流程)
1、需求分析
2、选择适合实现自动化的测试用例
3、选择合适的自动化测试工具/框架
4、搭建自动化测试环境
5、设计自动化测试框架
6、编写脚本代码
7、运行测试用例脚本
8、生成自动化测试报告
9、框架/脚本维护
九、接口自动化测试框架的搭建的具体思路和内容
技术选型:
开发语言:Java
项目构建工具:Maven
测试框架:TestNG
底层接口自动化支持库:RestAssured
数据库操作:JDBC
可视化报表:Allure
设计思路:
1、RestAssured用来发送接口请求和接收响应,并统一封装通用的request方法,返回对应的response
2、单接口测试用例保存在Excel中,使用TestNG Dataprovider实现数据驱动测试
3、多接口(业务流程)用例直接写代码完成用例脚本编写,同时将使用频繁的场景组合API进行封装到service层为用例层提供服务
4、参考postman设计全局变量池,解决前后接口依赖的数据传递,先存放到变量池中,在需要使用时通过#XX#替换
5、在数据库断言时,使用JDBC技术操作数据库
6、设计一些工具类,比如随机数据生成工具类、Excel操作工具类、JDBC操作工具类等等
7、集成Allure可视化报表,并将接口日志添加到Allure报表中方便查看
8、使用Jenkins做持续集成,每日定时构建
十、自动化执行过程中产生的垃圾数据如何清理?
使用TesNG的@BeforeXX @AfterXX注解分别可以做测试环境的初始化和测试环境的清理动作,如果业务接口有提供删除的接口,通过调用接口实现数据的删除。如果没有则通过JDBC操作数据库实现数据的清理
十一、接口自动化如何上传文件?
只需要使用RESTAssured提供的multiPart方法,参数指定对应文件即可。
十二、接口权限验证怎么处理?
首先要确认使用的是什么类型的鉴权方式?Cookie+session还是token
1、Cookie+session方式,在调用登录接口之后,服务端会返回session ID,客户端下次发起请求前只需要在请求中携带这个ID即可
2、token方式,调用完登录接口,服务端会返回token串,客户端下次发起请求前只需要在请求中携带这个token即可
十三、接口加密如何处理的?
首先要确认使用的是什么类型的加密方式?摘要算法:MD5、SHA1 对称加密对称加密算法:AES、DES,非对称加密算法:RSA
1、找开发确认加密的算法
2、让开发打一个jar包
3、测试代码工程中引入,如果是Jmeter这样的工具也可以通过引入Jar包的方式
十四、接口自动化测试怎么校验结果?
1、断言接口的返回数据和预期是否一致(包括响应状态码、响应头、响应体数据),其中响应体数据可以通过JsonPath表达式解析获取关键字段做断言
2、如果接口有更新数据库的数据,还需要到数据库中查询数据是否和修改的一致,通过Java的JDBC技术实现数据库操作
十五、你的接口自动化测试有哪些可以优化的地方?
1、用例量大的情况,执行效率,后面可以考虑通过多线程的方式执行
2、目前主要通过代码编写方式实现自动化,对于业务测试人员不够友好,后期可以考虑基于现有的框架开发测试平台
十六、接口自动化遇到过哪些问题?发现了哪些BUG,成功率是多少,执行失败的原因是什么?