其他分享
首页 > 其他分享> > 全球讲的最好的jmeter接口自动化 MMP 视频源不在了,只有笔记

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

作者:互联网


全球讲的最好的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