美文网首页
Python自动化学习笔记(一)----接口测试基础

Python自动化学习笔记(一)----接口测试基础

作者: 非文艺女青年_dd0c | 来源:发表于2018-11-08 13:46 被阅读0次

    1.1 接口基础知识

     1.1.1    Get&post请求

    GET和POST请求:

          GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.

          POST请求是把提交的数据放在HTTP包的Body中.

          get请求可以用浏览器来发送,直接输入URL,post请求需借助工具来发送。

     GET请求和POST请求的区别:

    GET使用URL或Cookie传参。而POST将数据放在BODY中。也就是说get请求没有请求体,只有请求头。

    get请求没有post安全,因为get把参数都写到url里面

    get请求有参数的大小限制,post请求没有大小限制。

    get请求一般用来获取数据,像服务端发送数据的时候用post

       个人理解来说,第二点和第三点区别比较勉强,get请求虽然将参数暴露在url中,看起来很不安全,但post请求也并没有好到哪里去,只要抓包,它的参数照样无所遁形,而第三点呢,在 HTTP 协议定义中,没有对GET请求的数据大小限制,所谓的get请求有参数大小限制,不过是浏览器的限制而已。


    1.1.2 关于请求体和请求头

    HTTP请求报文由3部分组成(请求行+请求头+请求体):

    请求头

          header

          你发出去这个请求的额外信息,例如你用什么浏览器发的,你想让服务端给你返回什么样的数据等

          cookie

    请求体

          body

          发送给服务端的参数


    1.1.3   http状态码

    HTTP状态码是用以表示HTTP响应状态的3位数字代码。

    每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:

    1、200 2开头的都表示这个请求发送成功,200请求已成功,请求所希望的响应头或数据体将随此响应返回。

    2、300 3开头的代表重定向,302请求的资源现在临时从不同的 URI 响应请求。301 - 资源(网页等)被永久转移到其它URL

    3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404 - 请求的资源(网页等)不存在

    4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果

    -部分摘自网站:www.besttest.cn

    1.1.4    cookiesession

    cookie和session被用来跟踪用户的会话 。

    cookie是在本地存的键值对,session是在服务端存的键值对

    在使用postman和jmeter时,cookie 可以在header发送出去,为键对{'Cookie':’xx=xx,xx=xx,xx=xx'}的格式

     


    1.2接口用例设计

    1.2.1 测试内容

      通过性验证、接口安全、异常验证(必传非必传、参数类型、入参长度)、业务逻辑

        例如:接口安全关键字段如密码有没有加密 (F12开发者工具-network)

     

    1.2.2 用例参考

     

     


    1.3 postman请求接口

     1.3.1postman-get示例

     

    1.3.2postman-post示例

     

     


     

    1.3.3postmant添加cookie

     

     


    1.3.4postman使用json格式发送数据

     

     


    1.4jmeter请求接口

    1.4.1简单的get请求

     

     

     

     

     


    1.4.2get请求的两种参数方式

     

     


    1.4.3post请求

     

     


    1.4.4添加cookie

    选中请求-右键-添加-配置元件-HTTP信息头管理器

     

     


    1.4.5 jmeter参数化

    1.4.5.1 函数助手对话框

    选项-函数助手对话框-选择__Random,随机生成一个指定范围的整数,将生成的字符串复制粘贴来使用

     

     

     

    1.4.5.2CSV Data Set Config

    选中请求-右键-添加-配置元件-CSV Data Set Config

     

     


    1.4.6jmeter关联

    1.4.6.1json提取

    从一个请求的响应结果中提取参数,用于下一个请求

    选中请求-右键-添加-后置处理器-jp@gc - JSON Path Extractor(只要有json字样就可以)

     

     

     

    引用json提取的值:${sign}

    1.4.6.2正则表达式提取

    选中请求-右键-添加-后置处理器-jp@gc - 正则表达式提取器

    响应报文: { "error_code": 0, "login_info": { "login_time": "20180520170814", "sign": "337ca4cc825302b3a8791ac7f9dc4bc6", "userId": 1 } } 正则表达式提取: "sign": "(.*)"

     

     

    引用正则表达式提取的值:${sign}

     


    1.4.7响应断言

    响应结果:{ "error_code": 0, "login_info": { "login_time": "20181108131056", "sign": "e9cff923a69dbcc96e1b6cd0d26aed58", "userId": 9786 } }

    添加断言:选中请求-右键-添加-断言-响应断言

    响应结果中若包含sign字符串,则请求通过,不包含sign字符串,则请求失败

     


    1.5 Jmeter压测

    1.5.1线程组

     

    线程组相当于有多个用户,同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。

     

    1 默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。

    Ramp-Up Period: 线程启动的时间,如:5个线程,5秒启动时间。那么每秒会启动一个线程。

    调度器 如果不想立即执行,可以通过调度器控制测试执行的开始时间和结束时间。

     启动时间:控制测试在某个时间点启动。这个配置会被“启动延迟(秒)”配置覆盖。

    结束时间:控制测试执行的结束时间。这个配置会被“持续时间(秒)”配置覆盖。

    持续时间(秒):控制测试执行的时间。比如如果你要让用户持续不断登录1个小时,你可以在文本框中填写3600。如果在1小时以内,结束时间已经到达,它将会覆盖结束时间,继续执行。

    启动延迟(秒):控制测试多久后启动执行。

     


    1.5.2聚合报告

    选中请求-右键-添加-监听器-聚合报告

     

     

    1

    相关文章

      网友评论

          本文标题:Python自动化学习笔记(一)----接口测试基础

          本文链接:https://www.haomeiwen.com/subject/sdoixqtx.html