get和post的区别?
get | post | |
---|---|---|
请求的参数位置 | url | 请求体 |
缓存 | 可以被浏览器缓存 | 不能被缓存 |
参数长度 | url的长度是受限的 | 长度不受限制 |
安全性 | 请求参数在url里面,安全性较差 | 请求参数在body里面,安全性较好 |
访问方式 | 直接通过浏览器访问,支持刷新和后退 | 不能直接通过浏览器访问,刷新后数据要重新发送 |
http和https的区别?
http | https | |
---|---|---|
http信息 | 明文传输 | 具有安全性的加密传输 |
http标准端口 | 80 | 443 |
http证书 | 无需证书 | 需要认证证书 |
有哪些HTTP状态码、以及代表什么意思?
200 | 正常 |
---|---|
307 | 重定向,服务器要求客户端重新请求一个新的URL |
401 | 未授权,需要身份认证 |
403 | 服务端禁止访问 |
404 | 请求的资源未找到,比如url写错了,页面被删除了 |
405 | 请求方法不允许,比如服务端的post类型,客户端使用get方式请求 |
5xx | 服务端内部问题 |
常见的Http请求头?
Host | 目标域名或ip |
---|---|
Content-Length | 请求数据长度 |
Accept | 客户端希望接受的数据类型,*/*代表所有类型 |
User-Agent | 客户端使用什么工具去访问(浏览器) |
Content-Type | 请求body中数据的类型,常用的:x-www-forn-urlencoded代表单页面application/json代表是json字符串 |
Cookie | 请求中携带的cookie信息 |
为什么要做接口测试
- 在公司里,客户端和服务端通常是由不同的团队开发的,在项目开发过程中,客户端和服务端开发的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行接口测试,确保服务端逻辑和返回数据是正确的,然后再测试客户端,另外某些测试部门,专门测试服务端开发团队,因此,他们的测试对象就是接口
- 在测试某些业务时,不能仅仅通过前端来测试,比如用户注册,前端限制了用户名不能为空,但是有些人可能通过工具绕过前端直接调用服务端接口,如果服务端没有被相关的逻辑判断,就会造成数据错误,包括接口数据传输过程是否对关键信息加密等,所以必须针对服务端接口单独做测试
- 在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都是通过的,快速判断服务端接口是否符合预期,然后再通过UI界面进行测试,否则接口有bug,前端必定有bug
接口测试什么时候介入?
当服务端接口开发完成,开发提测后,就可以开始介入接口测试,根据接口测试用例编写脚步,然后执行测试就行
接口测试用例的编写要点有哪些?
- 入参,包括参数合法性、参数校验、参数边界、参数为空、缺少参数等
- 返回值,包括各种情况下的响应内容是否正常
- 接口业务逻辑和功能是否正常
- 数据库校验
- 性能测试(接口tps、响应时间等)
- 安全性,敏感信息加密、权限控制等
怎么测试接口的?
- 先了解接口的业务功能、入参出参以及接口对应的数据库存储
- 再依据接口测试用例设计方法完成接口测试用例的设计
- 最后依据测试用例使用接口测试工具完成接口测试,并在测试过程中通过查看响应数据确保接口测试结果的正确性
接口测试流程?
接口测试流程大体和功能测试流程一样(区别在于多了接口文档,使用工具执行测试)
- 分析需求文档和接口文档(URL、入参、返回值等)
- 制定测试计划
- 根据需求文档编写接口测试用例
- 测试用例评审
- 根据用例,使用接口测试工具执行测试
- 提交bug,回归测试
- 预生产环境测试
- 输出接口测试报告
- 上线
接口测试有没有测试出什么问题?
接口测试中发现的bug,大多数都是参数校验、代码逻辑、边界条件、数据错误方面的问题
- 比如,新增促销活动接口,满减金额为空也能保存成功,原因是后端代码没有对满减金额参数做空值判断
- 比如,活动列表接口,查询出来的活动数据少了第一条,原因是SQL中的limit条件传入起始序号是1而不是0,更新活动接口,接口提示更新成功,但是数据库中的update_time字段没有更新成最新时间,原因是开发忘记更新这个字段
接口请求不通(或页面无法访问)该如何排查试?
请求不通,可能是原因:
- ip或者端口号或者url写错
- 客户端和服务端网络不通
- 服务端项目根本没有部署起来
- 服务器的防火墙拦截了
- 服务端程序内部发生了错误
- 没有访问权限(比如缺乏token、cookie之类)
- 客户端设置了网络代理如果是浏览器访问,是不是绑定了错误的hosts
接口测试中的加密参数如何处理?
- 先了解接口使用的加密方法(md5、rsa...)
- 检查接口测试工具是否支持这种加密方法,如果支持的话,直接使用对应功能就行(比如Jmeter支持md5);如果加密方式是公司内部特有的算法,可以直接在接口测试工具中调用公司的加密算法代码来实现加密
接口自动化优缺点?
优点:
- 提高回归测试效率
- 开发提测时,先跑下接口自动化脚本,提前发现功能bug
缺点:
- 需要提前写脚本,有一定的维护成本
- 不能覆盖所有的测试用例和所有场景