ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

全球讲的最好的jmeter接口自动化 MMP 视频源不在了,只有笔记

2021-02-23 17:31:14  阅读:182  来源: 互联网

标签:http 请求 MMP auth 接口 org jmeter



全球讲的最好的jmeter接口自动化 avi-01

1,默认HTTP 可设置在线程组下(位置),作为父请求,子请求获取默认值
2,JSON Path Tester 获取值 Json Path Expresson $.args.user
3,POST 请求 消息体 格式: (“username”:“sss”)

全球讲的最好的jmeter接口自动化 avi-02

测试层: 底层单元测试,中间层接口测试,最顶层为UI测试 
HTTPS: hyper text Transfer Protocol over SecureSocket Layer
GET  请求:url 进行传参,和 url 会用 ? 分隔,多个用 “&” 分隔;
POST 请求:用户数据的提交,存在请求体里进行传输,保证安全。 
          POST 请求 消息体 格式: (“username”:“sss”,“password”:“123456”)

Referer:  用户从该URL 代表的页面访问当前请求的页面          
User-Agent :浏览器类型,如果Servlet 返回的内容与浏览器的类型有关,则该值非常有用。
Cookie: 这是重要的请求头信息之一。
From : 请求发送者的emial 地址,由一些特殊的Web客户端程序使用了,浏览器不会用到它。
Host:  初始URL 的主机和端口;
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时用到。
Authorization: 授权信息,通常出现在对服务器发送的 WWW-Authenticate头的应答中。
Context_Type: 表示后面的文档属于什么MIME类型。Servlet 默认为text/plain,但通常需要显示地指定为 text/html。由于需要设置 Context_Type,
因此 HttpServletResponse 提供了一个专用的方法 setContentType。

Request Body
    即请求体,一般用于PSOT 请求中,主要定义向服务器提交的数据类型,而对于请求 Request Body 则为空。

    Context_Type                                提交数据方式
    
    application/x-www-form-urlencoded            Form 表单提交
    multipart/form-data                         表单文件上传提交
    application/json                            序列化 Json 数据提交
    text/xml                                    XML 数据提交

    
Response
    即相应,由服务端返回给客户端。
    Response Status Code
    Response Headers
    Response Body

    
1xx        服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx状态码(很少出现)
2xx        成功。代表:200(成功)
3xx        重定向。代表:302(重定向),304(访问缓存)
4xx        客户端错误。代表:404(请求路径没有对应的资源) 405(请求方式没有对应的doXX方法)
5xx        服务端错误。代表:500(服务器内部出现异常)        

  
JSON 对象
    {"firstName":"John","lastNname":"Doc"}    
    优点
    1,数据体积小,轻量级的数据交换
    2,程序员编写更加容易
    3,相对XML ,JSON 不需要考虑父节点,更易于机器的解析和生成
    4,JSON支持多种编程语言,例如:Java,JavaScript,PHP,Python , C,C#等等。
    缺点
    1,过于严谨
    2,代码对数据描述性差
    3,代码不宜读


全球讲的最好的jmeter接口自动化 avi-03,04    


      断言
      包括:响应内容包括需要匹配的内容,支持正则
      匹配:响应内容完全匹配,不区分大小写,支持正则
      Equals:响应内容完全等于,区分大小写,需要匹配的内容是字符串正则表达式
      Substring:返回结果包含指定结果的字串,不支持正则
      否:不进行匹配

Jmeter Bean Shell
        定时器:     BeanShell Timer
        前置处理器:    BeanShell PreProcessor
        采样器:        BeanShell Smapler
        后置处理器:    BeanShell PostProcessor
        断言:        BeanShell 断言
        监听器:        BeanShell Listener

        Jmeter 在它的Beanshell 中内置了变量,用户可以通过这些变量与 jmeter 进行交互,其中主要的变量及其使用方法如下:
            vars - (JMeterVariables)操作这个变量实际引用了JMeter线程中的局部变量,容器本质上是Map 它是测试用例与 BeanShell 交互的桥梁 ,常用方法:
            //定义jmeter变量
            vars.put(String key,String value);
            //从 jmeter 中获取变量
            vars.get(String key);
            log:写入信息到 jmeter.log 文件,使用方法:log.info(“hello motuo”);
            

全球讲的最好的jmeter接口自动化 avi-05

CSV 数据文件变量    
        从外部 csv 文件读取数据出来作为变量。选择请求--添加--配置元件--  csv 数据文件设置
        注意:创建 csv 文件最好不要用记事本,推荐Nodepad++,文件编码为 UTF-8 
        用户参数和 csv 不要重复
         
全球讲的最好的jmeter接口自动化 avi-06


        正则表达式提取器
        请求--添加--后置处理器--正则表达式提取器
        根据 http-get 的响应,提取返回值中的 num 中

        正则表达式配置表
        模板:用$num$ 有多个匹配,num 表示第几个给变量,如:
        $1$ 匹配到第一个值存储在变量中
        匹配数字:0 代表随机取值,1 代表全部取值
        缺省值:参数没用取到值,默认给的值(null一般习惯)

        num':().+?)}
        ()要提取的值
         . 匹配任意字符
         + 一次或多次
         ?在找到第一个匹配项后停止
         更多匹配规则:https://www.runoob.com/regexp/regexp-syntax.html

         其他请求从正则表达式提取器中取到的值名称,要与正则表达式提取器的引用名称一致 
         
全球讲的最好的jmeter接口自动化 avi-07

        循环控制器多请求发起
        CaseNum    apiType    CaseName          CasePriority        url      methods    paramter    expectValue
        case001    HTTP    GET request cmxy  1                 /get  GET        user=cmxy    cmxy
        case002    HTTP    POST request cmxy 1                 /post POST        user=yzp    yzp
        case003    HTTP    GET request cmxy  1                 /get  GET        user=xln    xln
        case004    HTTP    POST request cmxy 1                 /post POST        user=xz        xz    
        。。。
        从csv 文件可以看出发送的请求很多,可利用循环控制器进行逻辑判断使用什么请求去发送,使用哪个方法去调用值,简单快捷
        1,线程组下加入 HTTP请求默认值 设置要访问的同一个地址前缀
        2,线程组下加入 循环控制器,根据发送请求的多少来进行设置循环次数
        3,循环控制器下 加入逻辑控制器下的如果控制器,设置该控制器使用哪种请求(利用函数groovy来设定值${__groovy("${methods}"=="GET",)})
        注意:1,先写"${methods}"=="GET",打开函数助手找到函数直接粘贴,生成函数,在粘贴覆盖之前赋的值
             2,名称最好简洁一眼就能看出是访问哪个接口,利用函数获取值eg:名称:${CaseNum}-${CaseName}-${methods}
             3,向服务器发送请求时 GET 和 POST 所带的值不一样,一个在路径中,POST在消息体中,其路径只保留url即可
        4,添加 csv 文件,根据其需要的值进行设置匹配规则
        5,断言 可设置 为 expectValue 的值
                
全球讲的最好的jmeter接口自动化 avi-08

        HTTP Cookie 管理器
        对 http 请求服务器会返回一个cookie, JmeterCookie 管理器会保存起来,方便后面使用同一个cookie,
        每个 Jmeter 线程都有直接独立的 cookie保存区。

        http://httpbin.org/cookies/set
        http://httpbin.org/cookies
        http://httpbin.org/cookies/delete
        http://httpbin.org/cookies/set/{name}/{value}
        线程组--添加--配置元件--HTTPCookie 管理器
        结果树中可查看cookie值,Cookie管理器可设置具体域名,路径,安全性,标准模式,是否需要清除;
        注意:Cookie管理器 可对第一次请求设置的cookie值和后续在管理器设置的cookie值都能进行保存;并返回给下一次请求;
        
        
全球讲的最好的jmeter接口自动化 avi-09
        授权设置
        接口不对外开放,可进行授权机制(Authorization)
        授权过程验证您是否有权限访问服务器所需数据的权限。
        Jmeter 提供授权类型,可以轻松在本地应用程序中处理身份验证协议

        Basic auth 
        Digest auth 

        Basic auth 
        基本身份验证,简单授权类型,只需要验证用户名和密码即可访问服务器数据资源。
        
        http://httpbin.org/bearer
        http://httpbin.org/basic-auth/{user}/{passwd}

        GET http://httpbin.org/basic-auth/yzp/2021
        请求中会返回授权信息,Authorization: Basic NTF6eHc6ODg4OA== 而 “NTF6eHc6ODg4OA==” 
        这个数值就是用 用户名和密码 经过 Base64 编码后计算出来的

        Digest auth 
        是一个简单的认证机制,也称 HTTP 摘要,采用hash加密方法,以避免用明文进行传输用户的口令,核实参与通信的双方都知道共享的一个口令;
        
        http://httpbin.org/digest-auth/{qop}/{user}/{passwd}
        
        {qop}    规定server 支持哪种保护方案,client 能够从列表列表中选择(auth,auth-int)
        auth     仅表示对身份验证
        auth-int 身份和完整性保护验证
        algorithm 加密方式 
        
        http://httpbin.org/digest-auth/{qop}/{user}/{passwd}/{algorithm}/{stale_after}
        http://httpbin.org/digest-auth/{qop}/{user}/{passwd}/{algorithm}
        http://httpbin.org/hidden-basic-auth/{user}/{passwd}

        
全球讲的最好的jmeter接口自动化 avi-10

        测试报告
            打开 jmeter 目录 bin 下执行 cmd
            执行命令:
            jmeter -n -t httpbin_test.jmx -l httpbin.jtl -e -o C:\users\AnySan\Desktop\report
                 命令参数:
                 -n  以非 GUI 形式运行 jmeter
                 -t  jmeter 脚本路径
                 -l  result.jtl 运行结果保存路径(.jtl)此文件必须不存在
                 -e  在脚本运行结束后生成 html 报告
                 -o  用于存放 html 报告的目录,不加该参数默认生成到 bin\report-output
                 
                 
            


                
全球讲的最好的jmeter接口自动化 avi-11
        自动化测试环境平台搭建
            一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成,Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,
            所以三者结合在一起,构成一个完善的接口自动化测试平台。
            环境准备
                环境依赖
                    JDK 环境配置
                    Jmeter 安装
                    Ant 安装环境变量配置
                    Jenkins 安装

                Ant 简介
                    Apache Ant 是一个将软件编译,测试,部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发

                    下载安装
                    地址:http://ant.apache.org/bindownload.cgi
                    下载之后解压到任意路径

                    环境变量配置:
                    ANT_HOME D:\apache-ant-1.10.9
                    CLASSPATH ;%ANT_HOME%\lib;
                    win7: PATH ;%ANT_HOME%\bin;
                    win10:PATH %ANT_HOME%\bin
                    
                    配置检测
                    cmd 窗口下输入命令
                    ant -version

                    Jenkins 安装
                    https://www.cnblogs.com/mecell224/p/12956059.html    

                    平台搭建
                        依赖文件配置
                            1,首先在 Jmeter 目录下建一个文件夹 TestCase (文件夹名称不要使用下划线,空格字符),
                            并将 Jmeter 测试脚本放置到该文件中
                            2,将 Jmeter extra 文件中的 ant-jmeter-1.1.1.jar 放到 Ant 的 lib文件夹中
                            3,将 Jmeter extra 文件夹的 jmeter-results-detail-report_21.xsl, build.xml, collapse.png, expand.png
                            放到 ant 目录的 bin目录下面 
                            <!-- html报告中时间显示为NAN,原因是ant中缺失了两个lib库  xalan-2.7.2.jar和serializer-2.7.2.jar ,
                            将这两个库拷贝到ant的lib目录下,或者在这里增加如下代码均可解决-->


                        build.xml 配置
                            在 Ant 的 bin 目录中 打开build.xml 找到以下内容
                                <property name="testpath" value="${user.dir}"/>
                                <property name="jmeter.home" value="${basedir}/.."/>
                                <property name="report.title" value="Load Test Results"/>

                                   <!-- Name of test (without .jmx) -->
                                <property name="test" value="Test"/>

                                参数说明
                                testpath 测试计划,这里用于存放测试脚本,测试生成的文件,测试报告
                                jmeter.home Jmeter 目录路径
                                report.title 测试报告标题
                                test jmeter 测试脚本名称(无须后缀.jmx)    

                                根据环境 修改配置
                                
                                <property name="testpath" value="D:\jmeter\apache-jmeter-5.3\TestCase"/>
                                <property name="jmeter.home" value="D:\jmeter\apache-jmeter-5.3"/>
                                <property name="report.title" value="TestPlan01 Httpbin API Test Report"/>        


                                <copy todir=""><copy/>    没有todir变量*****    
                                
                                将报告模板优化,使用jmeter-results-detail-report_30.xsl 
                                
                                默认模板jmeter-results-detail-report_21.xsl 改为_30.xsl
                                打开ant bin 下的 文件 build.xml     
        <!--报告配置-->
        <!-- html报告中Date report这里的时间没有正确显示出来,原因是未设定report.datestamp 属性值-->
    <target name="report">
        <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
        <xslt 
              classpathref="xslt.classpath"
              force="true"
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter-results-detail-report_30.xsl">
              <param name="dateReport" expression="${report.datestamp}"/>
       </xslt>

        jmeter 下的extras build.xml 修改 并将该目录下的文件 替换为 jmeter-results-detail-report_30.xsl
        <condition property="style_version" value="_30">

               Jenkins 安装
               插件下载中心
               http://updates.jenkins-ci.org/download/plugins/
               
            Jenkins实例似乎已离线处理办法    https://www.amd5.cn/atang_4222.html
                                             

标签:http,请求,MMP,auth,接口,org,jmeter
来源: https://blog.csdn.net/San6653/article/details/113996895

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有