一、接口测试需要考虑的地方有哪些?
1、考虑输入参数和输出参数的合法性,参数必填,默认值,参数长度和格式校验,边界等,图片长传考虑图片大小和格式。查询考虑数据排序,分页考虑分页显示等。
2、业务逻辑和功能实现
3、数据库校验
4、性能测试(接口tps、响应时间等)
5、兼容性,新老版本数据的兼容
6、安全性,敏感信息加密,恶意攻击的防范,权限控制等
7、幂等性(接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为 多次点击而产生了副作用。举个最简单的例子,点击一次或者多次点击同一个数据生成多条相同数据,即在发布帖子或者支付时不能产生这种错误,这就没有保证接口的幂等性;
二、接口测试流程是
1、获取接口文档
2、编写接口测试用例;
3、使用接口工具,或者自己搭建的测试平台进行测试;
4、输出测试报告(持续集成发邮件等形式都可以),
详情注意事项:
1、获取接口文档,熟悉单接口以及链路接口业务,包括接口地址,请求方式,鉴权方式,入参,出 参,错误码等。没有接口文档的,已抓包获取接口相关参数,然后进行测试,相关错误报告给对应开发,根据项目实际情况确定修改方案;
2、编写接口测试用例并评审。接口功能用例设计:
A、正常用例例:单接口返回成功场景!链路接口(业务流接口)逻辑实现!
B、反例: 鉴权反例:鉴权码为空,错误的鉴权码,鉴权码已过期。数反例:参数为空,参数类型异常,参数长度异常, 错误码反例:(根据业务而定) 。其他反例场景: 如接口黑名单,接口调用次数限制等,分页场景:(0,第一页1,中间页5,最后一页10,100,其他 业务异常)
C、兼容性用例:比如一个接口需要兼容多个版本的前端调用。
3、使用接口测试工具Postman/Jmeter执行接口测试,通常执行过程中需要考虑以下几个方面:
A、是否满足前提条件:有些接口需要满足前提,才可成功获取数据。常见的,需要登录Token
B、参数之间是否存在关联:有些参数彼此之间存在相互制约的关系
C、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
D、参数是否是动态参数。
E、接口是否需要签名验证等。
4、实现持续集成并输出接口测试报告发送电子邮件,企微(钉钉群)等,有bug报bug。每天固定时间运行,从而监控是否有因开发代码变更或者新功能添加而导致的遗漏接口 bug。
三、get和post的区别
1、GET一般用于查询数据;而POST一般用于添加、删除或修改数据。
2、传参方式不同:get通过地址栏传输,post通过表单报文传输,所以post请求比get请求的安全性相对较好。get请求可以直接通过浏览器访问,支持刷新和后退。post请求不能直接使用浏览器访问,刷新后数据要重新发送。
3、传参长度不同:get参数有长度限制(受限于url长度),而post无限制
4、GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)
四、http和https的区别
1、http是超文本传输协议,信息是明文传输,Https协议是由HTTP协议+SSL协议构建的加密传输协议,比http协议安全;
2、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;
3、HTTP无需证书,而 HTTPS需要认证证书
五、cookie,session,token有什么相同点和不同点。
1、相同点:三者都是用于鉴权并且都是由服务器产生的。
不同点:
2、cookie保存在客户端的浏览器上,cookie不安全,其他人可以通过分析存放在本地的cookie并进行cookie欺骗。
3、session比cookie安全,它会在一定时间内保存在服务器的内存,但当访问增多时,比较占用服务器的性能。单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储于服务端,浏览器对其没有限制。
4、token就是令牌,是一个字符串,主要是用于做客户端身份认证,通常登录成功后,服务端会返回token,客户端需要把token值保存下来,后续请求其他接口时,需要在请求中携带这个token值,只有服务端对token校验通过后,才允许访问。
六、接口测试中是怎么校验接口返回结果是否正确
1、验证接口响应状态码是否是200。
2、当接口响应正文比较短,比较固定时验证响应的完整内容是否等于预期。
3、当响应内容较长较多时,验证响应报文是否包含关键信息。
4、当响应正文为XML格式或JSON格式时,可以通过XPATH或JSONPATH,正则表达式,获取其中的某个节点,验证响应报文关键字段是否存在。
5、查询数据库或调用其余接口查询。当要验证的信息在当前测试接口的响应内容中不存在时,可以调用 其他接口来验证。例如,一个增加用户信息的接口,要验证信息确实增加成功了,可以再调用查询用户信息接口来确认用户信息添加成功。当然,在获取数据库查询权限的情况下,也可以直接查询数据库来验证。
七、为什么要做接口测试
A、 在目前前后端分离开发的模式下,项目在开发过程中,客户端和服务端开发的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行接口测试,确保服务端逻辑和返回数据是正确的,然后再测试客户端。
B、在测试某些业务时,不能仅仅通过前端来测试,比如用户注册,前端限制了用户名不能为空,但是可以通过工具绕过前端直接调用服务端接口,如果服务端没有做相关的逻辑判断,就会造成数据错误。包括接口数据传输过程中是否对关键信息加密等。所以必须针对服务端接口做测试。
C、接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,其修复问题的成本越低,在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都是通过的,快速判断服务端接口是否符合预期。然后再通过UI界面进行测试。否则接口有bug,前端页面必定有bug。并且接口测试非常快速、接口测试用例执行的时间是毫秒级的。
八、HTTP状态码,以及它们代表什么意思
1xx 信息提示(表示临时的响应) 、200 正常(表明服务器成功地接受了客户端请求)、307 重定向(服务器要求客户端重新请求一个新的URL)、401 未授权,需要身份认证、403 服务端禁止访问 、404 请求的资源未找到(比如url写错了,页面被删除等)、405 请求方法不允许(比如服务端的POST类型,客户端使用GET方式请求)、 5xx 服务端内部错误(服务器由于遇到错误而不能完成该请求)
九、一个接口请求不通该如何排查,可能的原因是:
1.检查请求四要素:请求方式,请求路径,请求头,请求参数是否写错。
2.客户端和服务端网络不通
3.服务端项目没有部署起来,接口无法访问。
4.请求被服务器的***拦截了
5.服务端程序内部发生了错误
6.没有访问权限(比如缺乏token、cookie之类)
7.客户端设置了网络代理(比如打开了Fiddler/Charles等抓包工具)
8.如果是浏览器访问,是不是绑定了错误的hosts ;
十、接口测试中的加密或签名的接口如何处理?
加密接口:
1、首先要先了解接口使用的加密方式(如:base64、md5、sha系列加密、rsa加密等)
2、检查接口测试工具是否支持这种加密方式,如果支持的话,直接使用对应功能就行了(比如Jmeter 支持md5);如果加密方式是公司内部特有的算法,可以在接口测试工具中调用公司的加密算法代码 (如jar包)来实现加密。
签名接口: 了解签名规则之后,在接口请求之前先对参数按照签名规则加密之后再发送请求。签名sign一般通过请 求头传值。
-
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
-
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
-
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
-
分享他们的经验,还会分享很多直播讲座和技术沙龙
-
可以免费学习!划重点!开源的!!!
-
qq群号:455787643【暗号:csdn11】
十一、没有接口文档,如果做接口测试
1、方式一:可以使用Fiddler、Charles等抓包工具抓取接口数据之后整理成接口文档,接口中不清楚的字 段,找时间集中找开发解答。然后再进行接口测试;
2、方式二:可以通过Jmeter的代理录制功能,先把接口请求录制下来,然后再逐一进行接口测试。
十二、依赖于第三方数据的接口如何进行测试
可以通过Postman搭建mock服务,但是Postman的mock服务有访问次数限制,每天只能访问1000 次,也可以通过Flask,Servlet等技术搭建接口Mock服务器。
十三、依赖于登录状态的接口如何测试
依赖登录状态的接口的本质上是在每次发送请求时需要带上session或者cookie才能发送成功, postman会自动关联cookie,jmeter通过添加http cookie管理器来处理cookie关联。
十四、常见的请求头以及它们的作用是什么?
1.Accept: (客户端可以接收的数据格式)
2. X-Requested-With:(ajax请求,异步请求)
3. User-Agent: (客户端的用户)
4. Content-Type: application/x-www-form-urlencoded;
5.charset=UTF-8(内容的格式)
6.Cookie: csrf_token=2c76c391ab3922fe; (cookie信息)
十五、常用的jmeter自带函数有哪些
1、 random():随机数函数
2、randomString():随机字符串函数
3、time():获取当前时间戳函数
4、 md5():加密函数
5、setpropty():跨线程组设置属性值函数
十六、使用jmeter如何做接口之间的数据关联
接口数据关联指的是上一个接口的某个返回值,作为下一个接口的请求参数。 如果上一个接口返回的是json格式的,可以用json提取器把数据保存到一个变量里,如果是其他格式 的,可以使用正则提取器保存数据。 那么在下一个接口中,直接使用${变量名}就能使用这个数据。
十七、Jmeter中常用的断言方式
1、Json断言,可以通过Json路径表达式判断接口返回的Json字符串中某些字段是否符合预期
2、响应断言,可以判断响应头/响应体中是否包含预期的字符串。区别在于:Json断言只能判断Json格式;响应断言只要是文本格式都可以判断,应用范围更广
3、beanshell断言,可以判断当一个接口经过CSV数据驱动之后,对返回的正常结果和异常结果同时进行判断。
十八、postman在工作中使用流程
1、获取接口文档,熟悉单接口以及链路接口业务,包括接口地址,请求方式,鉴权方式,入参,出参,错误码等。
2、 编写好用例
3、在 postman 先建好 url 环境变量
4、根据接口用例所属的模块新建集合管理
5、 在集合中不同模块下录入测试用例
6、录入测试用例的时候根据预期结果在 tests 页签中增加断言
7、 导出通过 Newman+Jenkins 去运行
十九、Postman中常见的POST提交数据方式有哪些?
主要有以下四种方式:
1、application/x-www-form-urlencoded:表单方式提交数据。
2、multipart/form-data :报文包含有文件上传
3、application/json(text/plain,text/xml):报文类型为json字符串类型。
4\binary 报文类型为二进制文件上传。
二十、如何用 postman 设置关联
关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行在 postman 中设置关联的步骤如下:
1、 先通过正则表达式提取的方式或 json 取值的方式把下一个接口需要的信息从上一个接口截取出来
2、 使用设置全局变量的代码把取出来的值保存到全局变量
3、在下一个接口中,使用{{全局变量}}代替要替换的静态值
二十一、工作中用fiddler抓包工具来做什么
1、当测试出bug时,可以通过fiddler抓包,分析bug是客户端还是服务端的问题
2、当做接口测试时,通过抓包获取接口的入参和返回值,包括接口之间的数据关联
3、当对客户端做弱网测试,可以修改fiddler的网络模拟参数,模拟出不同的网络速度
4、当需要对客户端测试一下特殊场景(线上调试),可以使用fiddler设置响应断点,修改服务端响应的数据,测试客户端对应的逻辑处理。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。