若有任何学习问题,能够添加做者微信:lockingfreehtml
Python接口测试实战1(上)- 接口测试理论
Python接口测试实战1(下)- 接口测试工具的使用
Python接口测试实战2 - 使用Python发送请求
Python接口测试实战3(上)- Python操做数据库
Python接口测试实战3(下)- unittest测试框架
Python接口测试实战4(上) - 接口测试框架实战
Python接口测试实战4(下) - 框架完善:用例基类,用例标签,从新运行上次失败用例
Python接口测试实战5(上) - Git及Jenkins持续集成
Python接口测试实战5(下) - RESTful、Web Service及Mock Servergit
更多学习资料请加QQ群: 822601020获取程序员
这里插播一个段子
上图中,程序员口中提到的接口是什么意思呢?
手机壳有没有颜色这个属性(功能)? --- 有
手机壳有没有提供让程序获取它颜色的途径? --- 没有,这个途径就是接口web
接口又称API(Application Programming Interface,应用程序编程接口),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工做机制的细节。算法
简单归纳为如下3点:数据库
接口自述(通俗的来讲):编程
举个栗子
西虹市公考报名处 --- 接口名称
报名地址: 西虹市街口区带莫路3号 --- 接口地址
现场需填写资料: 姓名,身份证证号码,专业,报考岗位等等 --- 接口参数
验证规则: --- 参数验证规则json
软件中的接口
api
软件项目中,接口是系统与系统之间,模块与模块之间或者服务于服务之间相互调用的入口。
从开发者角度,接口是分工协做的产物,不一样开发者实现本身的功能以后,封装成接口,供其余开发者调用。其余开发者只要按规定格式发送一些必要参数,就能使用该功能
浏览器
常见接口类型
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个
子系统之间的交互点。测试的重点是要检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
为何要作接口测试?
接口测试都测什么?
接口测试通常有如下岗位实施:
接口测试点参考:
怎样掌握接口测试?
接口测试重难点
就像每一个人都有一个身份证号码
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每个网络和每一台主机分配一个逻辑地址
查看IP命令
Python练习:检查字符串是否ip
def is_ip(ip): num_list = ip.split(".") for num in num_list: if not num.isdigit() or not 0 <= int(num) <=255: return False return True print(is_ip("101.1.0.201"))
使用map函数实现方法(参考)
def check_ipv4(str): ip = str.strip().split(".") return False if len(ip) != 4 or False in map(lambda x:True if x.isdigit() and 0<= int(x) <= 255 else False, ip) else True
"端口"是英文port的意译,能够认为是设备与外界通信交流的出口。
若是把IP地址比做一间房子,端口就是出入这间房子的门。一个IP地址的端口能够有65536(即:2^16)个
端口类型
常见软件默认端口
查看端口命令
解决端口占用问题
因为IP地址不容易记忆,为IP地址赋予了一个利于记忆的别名,称为域名
如,百度的ip为: 61.135.169.125,对应的域名为 www.baidu.com
如何查看域名所对于的ip?
DNS
DNS即域名解析系统,域名和IP地址相互映射的一个分布式数据库,提供域名转到对应ip的服务
OSI即开放系统互连参考模型,一种网络架构,分为7层。
OSI七层模型及各层协议
TCP和UDP都是传输层的协议
TCP和UDP的区别
参考:TCP和UDP协议的对比
HTTP:超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传输协议。
HTTP协议是一种无状态协议,主要包含请求和相应两大部分:
请求是咱们发送给接口的数据对象,包含接口地址(URL),请求方法,参数,请求头(Headers), Cookies, 数据等
真实抓包一个请求:
请求原始格式-GET(Raw格式:Fiddler抓包获得)
GET https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC HTTP/1.1 Host: www.sojson.com Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7 Cookie: __cfduid=dccd65c484a7657b468327b66023fefc41534934250; yjs_id=59d1c42afa817b578b4b562d1f72651f; ctrl_time=1
请求原始格式-POST请求(Raw格式:Fiddler抓包获得)
POST http://openapi.tuling123.com/openapi/api/v2 HTTP/1.1 Content-Type: application/json cache-control: no-cache Postman-Token: 1a39439e-61c8-4e59-82a1-736a362c5962 User-Agent: PostmanRuntime/7.2.0 Accept: */* Host: openapi.tuling123.com accept-encoding: gzip, deflate content-length: 468 Connection: keep-alive { "reqType":0, "perception": { "inputText": { "text": "附近的酒店" }, "inputImage": { "url": "imageUrl" }, "selfInfo": { "location": { "city": "北京", "province": "北京", "street": "信息路" } } }, "userInfo": { "apiKey": "ec961279f453459b9248f0aeb6600bbe", "userId": "206379" } }
URL:统一资源定位符,接口的访问地址(包含服务器地址+接口地址)
URL组成格式
协议\\: 服务器地址:端口号\资源路径?参数1=值1&参数2=值2
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京
注意:?号要使用英文?,不能使用中文?
URL编码
URL编码是一种浏览器用来打包请求参数及表单参数的格式, 参数和参数之间使用&分割,非ASCII码使用%加16进制编码替换
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京
编码后为:https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC
连接:URL编码/解码工具(http://tool.chinaz.com/Tools/urlencode.aspx)
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体 |
2 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)数据被包含在请求体中 |
3 | HEAD | 相似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
5 | DELETE | 请求服务器删除指定的页面 |
6 | CONNECT | 预留给可以将链接改成管道方式的代理服务器 |
7 | OPTIONS | 容许客户端查看服务器的性能 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
GET请求和POST请求的区别
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京
city=北京
,向接口传递一个参数“city”,参数值为“北京”常见Headers
请求数据类型(Content-Type)(重点)
数据编码
指定请求数据编码(解决中文乱码):
请求Headers设置Content-Type: application/json; charset=utf-8
参考:Base64编码及其做用
接口返回的信息,包含HTTP状态码,响应头和相应信息
原始相应数据(Raw格式,Fiddler抓包)
HTTP/1.1 200 OK Date: Thu, 23 Aug 2018 06:32:26 GMT Transfer-Encoding: chunked Connection: keep-alive {"intent":{"actionName":"","code":10005,"intentName":"","parameters":{"lon":"","checkout_date":"2018-08-25","star":"0","city":"北京","days":"1","order":"","price_range":"","nearby_place":"酒店","brand":"","checkin_date":"2018-08-24","place":"信息路","lat":"","needgeo":"0"}},"results":[{"groupType":1,"resultType":"url","values":{"url":"http://m.elong.com/hotel/0101/nlist/#indate=2018-08-24&outdate=2018-08-25&keywords=%E4%BF%A1%E6%81%AF%E8%B7%AF"}},{"groupType":1,"resultType":"text","values":{"text":"亲,已帮你找到相关酒店信息"}}]}
常见的响应格式
响应编码:有时须要根据不一样的编码来正确解析响应内容
常见HTTP响应码
HTTP协议传输的数据都是未加密的,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
HTTPS和HTTP的区别
Cookie和Session的区别
常见的接口安全策略:
常见的加密算法
在接口数据传输过程当中常对一些敏感数据(如密码)进行Base64编码或MD5加密,以增长安全性。
加密算法分为对称式加密算法和非对称式加密算法,对称式加解密使用同一个秘钥,非对称式使用不一样的秘钥。
HTTP 缓存机制做是 web 性能优化的重要手段,当用户第一次请求服务器资源时,服务器将资源缓存到客户端本地,在必定时间内(缓存有效期内)当用户再次向服务器请求一样的资源时,能够直接从缓存中读取,而不用从服务器下载。
接口测试中缓存相关注意点
此为北京龙腾育才 Python高级自动化(接口测试部分)授课笔记
课程介绍
想要参加现场(北京)/网络课程的能够联系做者微信:lockingfree
- 高效学习,快速掌握Python自动化全部领域技能
- 同步快速解决各类问题
- 配套实战项目练习