接口规范
1.请求常用符号
符号 | 解释 |
---|---|
? | 0或者一项,要么一项要么没有 |
* | 0到N项,可有可无 |
+ | 1到N项,至少一项可多项 |
1 | 只能填一项 |
2 | 数据长度描述 |
Fx表示指定x位长度
Vx表示数据最长是x位,长度可变
2.(报文)请求字符串写法
- key =value
- Html
- xml
Xml直观容易分清层级适合人来看,但是成对出现字符串长,一般转为json格式。
xml
<request>
<operatorId>qqqq</operatorId>
<province>qqqq</province>
<city>qqqq</city>
<district>qqqq</district>
<channelId>qqqq</channelId>
<channelType>qqqq</channelType>
<promotionType>qqqq</promotionType>
<commodityList>
<commoditItem>
<commodityType>qqqq</commodityType>
<commodityCode>qqqq</commodityCode>
</commoditItem>
<commoditItem>
<commodityType>qqqq</commodityType>
<commodityCode>qqqq</commodityCode>
</commoditItem>
</commodityList>
</request>
Json
{
"request": {
"operatorId": "qqqq",
"province": "qqqq",
"city": "qqqq",
"district": "qqqq",
"channelId": "qqqq",
"channelType": "qqqq",
"promotionType": "qqqq",
"commodityList": {
"commoditItem": [
{
"commodityType": "qqqq",
"commodityCode": "qqqq"
},
{
"commodityType": "qqqq",
"commodityCode": "qqqq"
}
]
}
}
}
3.字符编码
1不同的字节数
2不同编码表
12345678123456781234567812345678
编码格式 | 国家 | 字节字数 |
---|---|---|
ASCLL | 美国 | 最基础的编码表 |
ISO-8859-1 | 欧洲和美国 | 一个字节4个字 |
GBK | 中国用的字符 | 2个字节,两个字; |
UTF-8 | 全球所有字符 | 4个字节,一个字 |
4.安全机制
MD5单向加密:明文——加密(不可以解密)——只能对比加密结果
客户端
MD5签名(防篡改)
1.要加密字段;
2.要字段按照一定顺序排列;
3.可选字段若为空是否加密;
4.key字符串;
5.md5加密;
6.把加密的请求报文发到服务端;
7.接收请求;
8.服务端按照同样的方式加密一次;
9.对比两次加密结果是否一致.
进行自动化测试
1.key串,加密字段,排列,为空处理方法。
2.MD5类。
3.BeanShellPostProcessor取出加密参数值,调用MD5加密然后将结果放入变量池。
4.报文里通过参数化变量取签名值。
5.RSA加密(防止信息泄漏,也防止篡改)
双向加密:明文——加密成密文——解密——明文
1.A向B请求;
2.B会生产两个证书(公钥,私钥);
3.A请求字符串加上公钥加密传给B,B用私钥解密请求字符串.
自动化测试
1要公钥证书,2 RSA加密算法,3生成加密字符串参数化传入接口报文
B回调A流程
A会生产两个证书(公钥,私钥)公钥给B
B发起回调请求 ,使用A的公钥加密报文
A用私钥对B报文解密
6.验证码
目的:防止自动登录;
原理:服务端随机生成验证码(图片,短信,语音)客户端输入验证码要与服务端一致;
自动化测试
方法一:让开发把验证码功能关闭
方法二:让开发改代码,放通特定验证码(万能验证码)if(){}elso
7.界面session会话和cookie
Http报文3部分
1请求行(地址,请求方法,版本等)
2请求头(对请求的描述)
3请求正文(业务数据)
浏览器cookie
是浏览器本地数据,可以向cookie里面放东西
1.登录的时候服务器会生成一个sessionID值,本地备份一份;
2.sessionID值存入到响应报文响应头的cookie里面;
3.浏览器接收到响应报文,把cookie存入到浏览器本地
4.下一次发请求,会自动把浏览器中放入cookie值取出来,放到请求头的cookie里面;
5.服务器收到请求会到请求头的cookie里查是否有;sessionID值如果有跟服务器本地做对比一样就说明登录过了;
6.根据sessionID找到登录时候的用户拿到用户各类信息.
token
sessionID