• Python自动化学习笔记(一)——接口测试基础、postman、jmeter


    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请求的区别:

    1. GET使用URL或Cookie传参。而POST将数据放在BODY中。也就是说get请求没有请求体,只有请求头。
    2. get请求没有post安全,因为get把参数都写到url里面
    3. get请求有参数的大小限制,post请求没有大小限制。
    4. 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 测试内容

    1.根据业务逻辑设计的不同场景下的正向用例
    2.根据参数来设计的逆向用例:异常验证(必传参数不传、参数类型不符合、入参长度不符合)

    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

  • 相关阅读:
    Codeforces Round #631 (Div. 1) B. Dreamoon Likes Sequences 题解(思维+求贡献)
    牛客练习赛66 C公因子 题解(区间gcd)
    evincevim控喜欢的pdf阅读器
    水手郑智化
    使用diskpart管理自己的分区
    Hacker's Browser
    How Browser Works
    解决vim ctags R失败的问题
    ubuntu更改登录对话框
    使用bcdedit删除多个Windows系统
  • 原文地址:https://www.cnblogs.com/luoyc/p/9928612.html
Copyright © 2020-2023  润新知