自定义接口测试返回码是什么(自定义接口测试返回码是什么)

网友投稿 258 2023-01-11


本篇文章给大家谈谈自定义接口测试返回码是什么,以及自定义接口测试返回码是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享自定义接口测试返回码是什么的知识,其中也会对自定义接口测试返回码是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

面试官95%会问的接口测试知识

接口测试最近几年被炒的火热了,越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢? 主要是平常的功能点点点,大家水平都一样,是个人都能点,面试时候如果问你平常在公司怎么测试的,你除了说点点点,还能说什么呢,无非就是这个项目点完了点那个项目, 这就是为什么各行各业的只要手指能点得动的人都来转行软件测试了。面试的时候面试官希望你除了点点点,还能更深入一点的思考页面上看不到的功能,也就是接口测试了。接口是看不见的,但是可以访问!

DNS是域名系统(Domain Name System) ,DNS是用来做域名解析的,它会在你上网输入网址后,把它转换成IP,然后去访问对方服务器;没有它,你想上百度就要记住百度的IP,但有了DNS的处理,你只需要记住对应网站的域名,即网址就可以了。

HTTP协议:超文本传输协议,是基于TCP的协议,默认为80端口。它的作用是用来规定客户端和服务器的数据传输格式。是一种用于请求与响应模式的、无状态、无连接 的应用层协议。 由于HTTP协议是一种请求-响应模式,所以一般需要关注HTTP请求和HTTP响应。

使用fiddler工具抓取HTTPS, 具体操作请查看文末领取教程

1xx -- 信息提示(表示临时的响应。客户端在收到常规响应之前,准备接收一个或多个1xx响应)

2xx -- 成功(表明服务器成功地接受了客户端请求)

3xx -- 重定向(客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求)

4xx -- 客户端错误(发送错误,客户端有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份证验证信息)

5xx -- 服务器错误(服务器由于遇到错误而不能完成该请求)

常见的返回码有:

200 OK - [GET]:服务器成功返回用户请求的数据

201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功

202 Aceepted - [*]:表示一个请求已经进入后台排队(异步任务)

204 NO CONTENT - [DELETE]:用户删除数据成功

400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作

401 Unauthorized -[*] :表示用户没有权限(令牌、用户名、密码错误)

403 Forbidden -[*] :表示用户得到授权(与401错误相对),但是访问被禁止

404 NOT FOUND -[*]:用户发出的请求针对得到是不存在的记录,服务器没有进行操作,该操作是幂等的

406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。

422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

HTTP协议常用的请求方式有如下几种:

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

POST和GET都是向服务器提交数据,并且都会从服务器获取数据。

区别:

(1)传送方式:get通过地址栏传输,post通过报文传输

(2)传送长度:get参数有长度限制(受限于url长度),而post无限制

(3)GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)

(4)get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留

(5)在做数据查询时,建议用GET方式;而在做数据添加、修改或删除时,建议用post方式

请求报文: 一个HTTP请求报文由请求行(Request Line)、请求头(Header)、空行(Blank Line)和请求体(Body)4个部分组成。

响应报文: HTTP响应报文和请求报文的结构差不多,由状态行、响应头、空行、响应体4个部分组成。

是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。

解决方案:通过cookie和session来保持状态。

请求body;请求url+请求body:

Content-type:

application/x-www-form-urlencoded: 表单提交--键值对, form

multipart/form-data:文件上传---文件 ,MIME

application/json,text/xml:

http协议目前有4个版本(0.9,1.0,1.1,2.0),其中1.0、1.1版本在互联网上被广泛使用,2.0版本目前应用很少,是下一代的http协议。

1.存储位置不同:Cookie 是将用户数据通过加密的方式保存在客户端,大多数情况 Cookie 存储在浏览器;Session 是用于控制客户端和服务端的连接,Session 存储在服务器;

2.存储容量不同:单个 Cookie 保存的数据不得超过 4kb,一个站点最多 20 个 Cookie,Session 一般情况下没有上限,不过建议不要存放太多东西,否则影响性能;

3.存取方式不同:Cookie 只能用 ASCII 字符串,通过编码方式获取 Unicode 字符或者二进制数据,不好存储复杂的信息,而 Session 能存储任何类型的数据;

4.隐私策略/安全性不同:Cookie 放在客户端,可以进行 Cookie 欺骗,所以不安全,Session 放在服务端,更加安全;

5.有效期不同:Cookie 可以设置属性达到长期有效,Session 依赖于 JSESSIONID 的 Cookie,Cookie JSESSIONID 的过期时间默认为-1,只需要关闭窗口 Session 就会失效,就算不依赖 Cookie,用 UrL 重写也不能完成,如果 Session 超时时间过长,容易导致内存溢出;

6.服务器压力不同:Cookie 保存在本地,不存在服务端压力,Session 保存在服务端,每个用户产生一个 Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用 Cookie;

7.浏览器支持不同:如果浏览器禁用 Cookie,那么 Cookie 直接失效,Session 比较好点,可以用 URL 重写;

8.Cookie 和 Session 应用的场景:Cookie 一般用于记住用户的登录状态,如记录用户的习惯,购物车;而 Session 用于登录验证。

https在应用层。

会话层为7层协议的第五层,为表示层提供建立、维护和结束会话连接的功能,并提供会话管理服务。

在浏览器中输入URL并回车后,主要发生以下步骤:

解析URL,获取要访问的域名

DNS域名解析,根据访问的域名获得目标服务器的IP地址

浏览器与服务端三次握手建立TCP连接

连接建立成功之后就可以发送HTTP请求报文以及服务器返回HTTP响应报文

断开TCP链接

浏览器解析响应报文,渲染页面

怎么判断curl调用接口返回成功:响应码

背景自定义接口测试返回码是什么:最近高可用测试自定义接口测试返回码是什么,双机倒换后,需要统计多久倒换结束了。我的方法是通过业务来测试,客户端和服务端都能正常访问了,对外提供服务的能力肯定就提供了。

因为不知道什么时候倒换开始和结束,需要每一秒都发curl请求,然后统计每次调用接口的时间和响应结果,并根据响应结果写入文件,方便统计和分析测试结果。

我选择简单的shell脚本,上手快。Python的话需要环境上安装相应软件,请求的响应更容易处理更便于处理。本文选择shell,curl来发请求。

1) #! /bin/bash

# 指脚本使用/bin/bash来解释执行,#!是对脚本的解释器程序路径。标记为#!/bin/sh的脚本不应使用任何POSIX没有规定的特性 (如let等命令, 但#!/bin/bash可以)。

2) while循环的格式
while expression

do

command

command

```

done
或while [条件判断式]
do

程序

done

举例:计数器控制的while循环

#!/bin/bash

int=1

while [ $int<=5 ]

do

    echo $int

    let "int++"

done

3) if判断

if [ 条件判断一 ] (||) [ 条件判断二 ]; then
elif [ 条件判断三 ] (||) [ 条件判断四 ]; then

else

  执行第三段内容程式

fi

4) curl

curl -I -s --connect-timeout 5 -m 5 -w "%{http_code}" -o /dev/null  http://baidu.com
200

-I/--head 仅返回消息头部,使用HEAD请求

-s/--slient 减少输出的信息,比如进度

--connect-timeout <seconds 指定尝试连接的最大时长

-m/--max-time <seconds 指定处理的最大时长
-w "参数"  自定义curl的输出

-o/--output <file 指定输出文件名称
#!/bin/bash

#根据测试背景填写连接超时时长,单位秒

ct=5
#根据测试背景填写响应最大时长,单位秒
rm=5

#根据测试背景填写URL
uri="http://baidu.com"
i=1
while [ $i<=36000 ]
do
    echo  `date` === $i === get-baidu.log
    let i++
    resp=`curl -I -s --connect-timeout $ct -m  $rm -w "%{http_code}" -o /dev/null  $url`

      if [ $resp==200 ]; then

              echo  `date`  == $i ==$resp  get-baidu.log

      else

            echo  `date`  == $i ==$resp  get-baidu.log

            echo  `date`  == $i ==$resp  get-baidu-fail.log

fi

done

找个和待测试环境网络可达的Linux环境,修改相关信息,直接运行即可。

注意uri是get请求,如果是post需要修改curl。

如果需要token认证则根据待测系统的实现进行携带token , 修改curl命令即可。

如果需要ssl证书,则携带相应证书,修改curl命令即可。

如果是ipv6的URL,curl中带上-6 -g参数。

计算响应时长(本例子是双机倒换时长)日志查看,从 get-baidu-fail.log找到失败点,在总的日志中找到相应记录,进行计算即可。

postman post请求 返回响应码500

记录学习postman遇到的一个小问题。

现象 :在按照接口文档写了一个新增教师信息的接口时,返回的状态码500,如下图。
解决 :参数里的JSON格式错误

data对应的value值是json格式,少写了一个[]

错误: "courses":{"id":1322,"name":"初中化学1571537232316"},

正确: "courses": [ {"id":1322,"name":"初中化学1571537232316"} ] ,
小结 :500响应码一般指服务器发生了不可预期的错误,但也要多次验证,因为请求参数错误也会导致500的问题。归根结底还是要细心。

python接口测试request返回json数据,自定义一个字典,怎么判读这个字典是返回数据的子集

def is_subdict(dict1, dict2):
    '''tell whether dict2 is a part of dict1
    判断字典dict2是否为dict1的子集
     is_subdict({'a': 1, 'b': 2}, {'a': 1})
    True
     is_subdict({'a': 1, 'b': 2}, {'c': 3})
    False
    '''
    d = dict(dict1, **dict2)
    return d == dict1
    
if __name__ == '__main__':
    import doctest
    doctest.testmod()

接口测试用例设计

接口测试发现的典型问题:

(1)传入参数处理不当,导致程序crash;

(2)类型溢出,导致数据读出和写入不一致;

(3)因对象权限未进行校验,可以访问其他用户敏感信息;

(4)状态处理不当,导致逻辑出现错乱;

(5)逻辑校验不完善,可利用漏洞获取非正当利益等。
用例设计:

1:入参类型:

数值型 :

如果参数规定了值的范围,则需要考虑等价类取值范围内、取值范围外,取值的边界,如有需要,可能会遍历取值范围内的各个值。

类型的特殊值:-1,0

数据类型的边界值:int的最小值最大值;

特殊值处理不当导致程序异常退出;

类型边界溢出

取值范围外值未返回正确的错误信息等
字符串型:

字符串型的参数,主要考虑字符串的长度和内容:

特殊值:空字符;

边界值:String的最大长度;

字符串内容可考虑类型:数字,非数字;

特殊字符。

超长字符未进行处理,导致存储、显示等异常
 数组或链表类型

参数类型为数组或链表时,用例可以考虑:

例如批量提交任务的接口submitTask(int[] taskID),参数用例设计考虑:

正常取值:1-5个权限,范围外:6个权限;

边界值:1-35的边界值,请求允许最大最小值;

特殊值:0个;

合法ID和不合法的;

重复的ID等。

可能存在的问题和风险:

0个item时程序异常退出;

重复的item处理时未去重导致结果异常等。
2:针对逻辑设计

约束条件分析

(1)数值限制:分数限制、金币限制、等级限制等等。

例如:兑换Q币活动要求积分50才可参与。

(2)状态限制:登录状态等。

例如:同步用户信息需要先登录账号。

(3)关系限制:绑定的关系,好友关系等。

例如:帮家人防骗功能只能查询绑定家人的来电信息。

(4)权限限制:管理员等。
3: 针对输出结果

接口处理正确的结果可能只有一个,但是错误异常返回结果有很多情况很多值。如果知道返回结果有很多种,就可以针对不同结果设计用例。例如提交积分任务的时候我们通常能想到的是返回正确和错误,错误可能想到:无效任务,无效登录态,但是不一定能否完全覆盖所有错误码,而接口返回定义的返回码可以设计更多用例:

覆盖返回码也是用例设计的一种思路。

常见问题和风险:

(1)错误前端处理不足,导致前端异常;

(2)错误提示处理不当,导致用户看到晦涩的错误码;

(3)错误提示不当,导致用户不知道哪里出了问题,如何解决。
4:接口超时

( 1)未进行超时处理,导致整个流程阻塞

(2)超时后又收到接口返回,导致逻辑出现错乱

如何做接口测试

1、可以使用postman软件进行接口测试,这里以较复杂的上传图片的接口为例进行测试,首先打开postman软件选择Post方式,输入后台接口调用地址。

2、然后填写Headers,注意这里的Headers部分不要写任何东西,如果之前是有Content-Type头信息, 那么就会上传失败。

3、接着填写Body,选择form-data,填写Key后台规定的接收文件的名称参数,格式选择为File,此时value会自动变成选择文件。

4、最后点击Send,可以发现下方返回了接口的响应,说明上传图片是成功的,这样简单的图片上传的接口测试就完成了。

关于自定义接口测试返回码是什么和自定义接口测试返回码是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 自定义接口测试返回码是什么的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于自定义接口测试返回码是什么、自定义接口测试返回码是什么的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java文件上传下载代码实例
下一篇:SpringBoot记录Http请求日志的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~