2020年4月12号,终于开始了期盼已久的python高级自动化培训的课程,今天主要学习接口测试,所用工具为Postman和Jmeter。
- 接口测试,首先必须要有接口文档,通过url,根据请求方式以及相关参数说明,进行测试。
- 当请求方式为get时,可以直接浏览器发;但如果是post请求,就必须借助测试工具,我们课上用了Postman和Jmeter。针对postman,如果默认接口接口文档不写的话就 k-v传参;如果写了是json的话,那就要选raw里面的json,传json就ok;如果是上传文件的话,那就把参数类型改成file,然后选择要上传的文件。
- 然后还介绍了cookie和session的区别:
3.1.Cookie
- 通俗讲,是访问某些网站后在本地存储的一些网站相关信息,下次访问时减少一些步骤。更准确的说法是:Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器,是在客户端保持状态的方案。
- Cookie的主要内容包括:名字,值,过期时间,路径和域。使用Fiddler抓包就可以看见,比方说我们打开百度的某个网站可以看到Headers包括Cookie,如下:
- key, value形式。过期时间可设置的,如不设,则浏览器关掉就消失了,存储在内存当中,否则就按设置的时间来存储在硬盘上的,过期后自动清除,比方说开关机关闭再打开浏览器后他都会还存在,前者称之为Session cookie 又叫 transient cookie,后者称之为Persistent cookie 又叫 permenent cookie。路径和域就是对应的域名,a网站的cookie自然不能给b用。
3.2.Session
- 存在服务器的一种用来存放用户数据的类HashTable结构。
- 浏览器第一次发送请求时,服务器自动生成了一HashTable和一Session ID来唯一标识这个HashTable,并将其通过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。
- 一般这个值会有个时间限制,超时后毁掉这个值,默认30分钟。
- 当用户在应用程序的 Web页间跳转时,存储在 Session 对象中的变量不会丢失而是在整个用户会话中一直存在下去。
- Session的实现方式和Cookie有一定关系。建立一个连接就生成一个session id,打开几个页面就好几个了,这里就用到了Cookie,把session id存在Cookie中,每次访问的时候将Session id带过去就可以识别了。
3.3.区别
- 存储数据量方面:session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象
- 一个在客户端一个在服务端。因Cookie在客户端所以可以编辑伪造,不是十分安全。
- Session过多时会消耗服务器资源,大型网站会有专门Session服务器,Cookie存在客户端没问题。
- 域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用,解决这个问题的办法是JSONP或者跨域资源共享。
4.http请求
4.1 请求头包含信息
header
发出去请求的额外信息
用什么浏览器发的
想让服务端返回什么样的信息
cookie
4.2 请求体包含
body
正常发送的主体数据
5. get与post区别
- get请求没有请求体,只有请求头
- get请求没有post安全,因为get把参数都写到url里面
- get请求有参数的大小限制,post请求。
- get请求一般用来获取数据,像服务端发送数据的时候用post
6. Jmeter
- java开发的开源的性能测试工具。
- Jmeter返回中文乱码,解决方法:①在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把sampleresult.default.encoding=UTF-8加到最下面。②重新打开jmeter。
- Jmeter bodydata里面中文乱码,解决方法:①在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把jsyntaxtextarea.font.family=Hack加到最下面。②重新打开Jmeter。
- Jmeter参数化