zoukankan      html  css  js  c++  java
  • 接口测试02

    本篇博客

    1 jmeter特点
    2 jmeter安装启动
    3 jmeter中的元件
    4 jmeter实战
    5 使用jmeter实现自动化接口测试

    补充:jmeter具体实战操作:

    https://www.cnblogs.com/zhangyangcheng/p/12630613.html

    1 jmeter特点

    jmeter有一下特点:

    • 免费、开源的
    • 纯java语言开发
    • 需要安装jdk:java development kit

    2 jmeter安装启动

    jmeter安装启动步骤:
    解压即可:apache-jmeter-2.13.tgz
    目录

    1. bin:存放的是启动文件
    2. extras:里面存放的是实现接口自动化时的ant包

    启动:在bin目录下双击jmeter.bat文件即可

    保存:一定要选择最上面的测试计划进行保存。

    3 jmeter中的元件

    jmeter元件介绍:

    测试计划所有的请求或其他操作都存在测试计划中

    线程组:所有的操作都属于一个线程

    测试计划右键--添加--Threads(Users)--线程组(线程数就是并发数)

    取样器sampler:存放的是请求

    线程组右键--Sampler--HTTP请求

    断言:对结果进行判断

    右键线程组--添加--断言---响应断言

    注意:响应断言和断言结果是配套使用的。

    监听器:对结果进行收集

    右键线程组--添加--监听器--察看结果树(查看返回值)

    右键线程组--添加-----监听器----断言结果

     

    添加cookie:避过登录,直接请求接口

    线程组(添加)-----配置元件----HTTP Cookie 管理器

    附加小知识:

    请求结构 

    看到这里我们大致就明白了接口测试是怎么一回事了。接下来需要理解一下HTTP的URL是怎么组成为一个接口的。如图:

     

    一个URL就是一个接口:接口大致会分为一下几个部分:

    1.请求协议:

    • http — 普通的http请求
    • https — 加密的http请求,传输数据更加安全
    • ftp — 文件传输协议,主要用来传输文件

    2.请求IP:就是指提供接口的系统所部署的服务器地址

    3.请求端口:如果不填端口,默认80,否则需要填写端口号

    4.接口路径:指系统提供的接口在什么位置

    5.接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数,

    http请求方式

    这时,我们需要一种规则:

    当用“GET”方式时,只用来获取数据,成功了返回http状态码200
    当用“POST”方式时,只用来创建数据,成功了返回http状态码201
    当用“PUT”方式时,只用来修改数据,成功了返回http状态码203
    当用“DELETE”方式时,只用来删除数据,成功了返回http状态码204
    当请求发送失败,返回http状态码400

    http请求头

    请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度。示例:

     

    Accept:用于告诉服务器,客户机支持的数据类型

    Accept-Language:客户机的语言环境

    Connection:处理完这次请求后是否断开连接还是继续保持连接

    Host:客户机通过这个头高速服务器,想访问的主机名

    User-Agent:客户机通过这个头告诉服务器,客户机的软件环境

    Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式

    http请求体

    请求体就是请求等正文了,可以有很多种请求体。

    • json格式
    • xml格式
    • html格式
    • 二进制格式( 多数用于图片 )
    • 字符串格式

    ​看到上面的请求结构,就能接口测试了,只需要修改接口的参数,就可以像功能测试一样测了。可以用功能测试设计用例的方法来设计接口测试的用例。可以使用各种测试用具辅助测试,下图为“postman”测试工具。

    Postman工具进行接口测试

    接口地址:http://v.juhe.cn/weather/index
    返回格式:json/xml
    请求方式:get
    请求示例:http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&key=您申请的KEY

    get传参

    1:GET方式     2:参数在?后面,用&连接。   3:点击send     4:结果

    post传参:

    1. 选择POST传参

    2. url      http://192.168.44.133:8000/cart/update

    3. Header中要填写 Content-Type:application/javascript  

    4:Body中选form-date :填写参数。   

    5:点击send。(下面的Body是发送后的结果。)

    可以看到右边status状态:200 (接口成功)

    6.保存

    点击save把这条求情保存一下方便下次调试快速输入调用

    我们做接口测试,需要开发提供接口文档。最重要的有一下几点:

    1.被测接口的地址

    2.接口参数,以及各个参数的说明

    3.必要的http头与http体 ( http头是可以自定义的,可以用来校验是否是自己人访问 )

    4.接口返回什么值,以及各个返回值的说明

    5.接口是干什么的

    前面的搞清楚了,接口测试就简单了,其实就是几个步骤。

    1.拿到接口的url地址

    2.查看接口是用什么方式发送

    3.添加请求头,请求体

    4.发送查看返回结果,校验返回结果是否正确

    这个是正常的一套流程,异常的情况,就不用我多说来吧。比如参数不传值呀,传的值不正确呀,明明要求用"GET"请求发送,偏要用"POST"请求发送呀。等等有很多异常情况,一般懂功能测试都能想到很多的异常

    情况,这里不再举例来。

    接口测试用例

    接口测试用例的设计就没什么好讲的了,与功能测试一样设计就好了。我是用Excel来编写的,主要是为了方便管理,只要写的干净,让人看的很舒服就好了。我自己设计的用例是这样的:

    1. 一个模块对应一个Excel表
    2. 一条接口对应一张sheet表
    3. 表中一行对应一条测试用例
    4. 在开始要注明测试时需要的sql,如下图开始我会创建用户,用完了我会删除

    这样的用例比较好管理,如图:

     

    4 jmeter实战

    jmeter(GET,POST,三种参数化):

    https://www.cnblogs.com/zhangyangcheng/p/12630613.html

    4.1 get请求模拟

    4.2 post请求模拟

    4.3 接口间参数传递

    场景:访问两个url。访问第一个url,返回usersession。访问第二个url,带着usersession参数访问。

    (没有找到好的案例,所以知道原理就行,不用实现出来。)

    正则表达式提取器:添加----后置处理器---正则表达式提取器

    1)引用名称:变量名

    2)正则表达式内容:通过左右边界的内容提取

    3)模板:如果提取的参数有多个那么写相应的模板,如果为1个参数:$1$,如果为两个参数:$2$,参数为多个:$n$

    4)匹配数字
          0代表随机取,1取第一个,2取第二个..., -1取全部
    5)缺省值
          如果取出数据为空,则给默认值

    使用变量:${变量名}

    4.4 参数化

    方式一、通过读取csv、txt文件获取数据
    选中线程组--->配置元件--->CSV Data set config
    1)填写内容
    Filename:包括路径
    变量名variable names
    变量名之间用英文逗号隔开

    2)然后使用${变量名}来读取文件每一列内容

    注意:通过文件的行数来决定读取内容


    方式二、通过函数助手读取csv、txt文件(顺序会乱)
    选项菜单-->函数助手对话框--->__CSVRead函数

    填写文件路径和列号(列号从0开始)

    点击生成变量即可

    注意:函数助手是按照不同用户读取文件内容


    方式三、通过用户参数设置数据(顺序会乱)
    选中线程组--->添加前置处理器中的用户参数选项

    通过添加变量和用户来构造多条数据

    注意:是由不同的用户决定读取的内容

    5 使用jmeter实现自动化接口测试

    5.1 配置Jmeter环境变量

    JMETER_HOME:D:测试软件jmeterjme压缩apache-jmeter-2.13

    Path:%JMETER_HOME%in

    ClassPath:%JMETER_HOME%libextApacheJMeter_core.jar;%JMETER_HOME%libjorphan.jar;%JMETER_HOME%lib/logkit-2.0.jar;

    验证是否配置成功:在dos窗口输入jmeter

    注意:(JMETER_HOME这个是新建的,其余两个是编辑的。前面要加英文分号,如果有,就不加了)

    环境变量相关配置

    1.电脑桌面----》“计算机”图标----》鼠标右键选择“属性”----》点击高级系统设置----》高级---》环境变量页面

    2.开始配置环境变量了。在系统变量框,点击“新建”,建立一个变量:JMETER_HOME,值为你解压的jmeter安装路径。我的安装路径:D:测试软件jmeterjme压缩apache-jmeter-2.13 。然后点击3次确定进行保存即可。注意:一定要选择系统变量进行修改。

    3.在系统变量中找到Path,ClassPath变量,因为有其他值,在其后面进行添加下面的值即可。注意:要在前面分号

    Path:%JMETER_HOME%in

    ClassPath:%JMETER_HOME%libextApacheJMeter_core.jar;%JMETER_HOME%libjorphan.jar;%JMETER_HOME%lib/logkit-2.0.jar;

    4.验证环境变量配置的是否正确

    第一种启动jmeter方式:cmd   jmeter

    会出现jmeter界面,说明就配置成功。因为都把jmeter启动起来了。

    还第二种启动jmeter方式:首先进到你的jmeter安装路径,找到bin文件夹,点击进去,找到jmeter.bat双击

    如果觉得麻烦,可以鼠标右键jmeter.bat,快捷方式发送电脑桌面,就会方便很多。

    5.2 搭建自动化接口测试框架

    创建如下目录结构:test

     

    test下:ant   data  JmeterAutoTest

    1)ant:放解压好的ant软件

    2)data:放数据

    3)JmeterAutoTest 下:

    • app   pc

    pc下:

    • resultlog   script

    resultlog下:

    • html  jtl  (报告生成区)

    script:脚本区

    自动化接口测试框架---思维导图

    5.3 安装以及配置ant环境变量

    ANT_HOME:       G:2020软件测试代码3_接口及性能测试接口测试day2项目框架 estantapacheAnt
    Path:                    ;%ANT_HOME%in
    CLASSPATH:      ;%ANT_HOME%lib
    验证是否配置成功:在dos 创建输入:ant -version

     

    5.4 发送邮件&修改build.xml文件

    1)3个jar文件拷到项目测试框架test---ant---lib文件下(发送邮件)

    三个jar文件位置:F:2020软件测试第二版就业班6-20部分16_就业班之接口及性能测试(共82集)接口测试第二天5-拷贝文件

    拷贝到这里。如果重复就替换

    2)build.xml文件拷到pc目录下

    build.xml文件位置:F:2020软件测试第二版就业班6-20部分16_就业班之接口及性能测试(共82集)接口测试第二天5-拷贝文件

    通过build.xml文件,执行脚本,生成测试报告。

    修改build.xml文件

    可以通过notepad打开,有颜色比较好看。也可以pycharm直接打开。

    1.改成自己本地的jmeter

    <!-- 需要改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="D:测试软件jmeterjme压缩apache-jmeter-2.13" />

    2.改成自己的jtl路径

    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTestpc
    esultlogjtl" />

    3.改成自己的html路径

    <!-- jmeter生成html格式的结果报告的路径-->    
    <property name="jmeter.result.html.dir" value="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTestpc
    esultloghtml" />

    4.project   pc   pc前目录。如果是移动端,可改成app

    <project name="pc" default="all" basedir="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTest">

    发送邮件:还是改build.xml文件的东西。

    5.发送邮件邮箱(我用的是qq邮箱),接受邮件邮箱(163邮箱)

    <!-- 接收测试报告的邮箱 -->
    <property name="mail_from" value="107****@qq.com" />
    <property name="mail_to" value="yangcheng_2020@163.com" />

    6.发送邮件的邮箱用户名,密码,端口

    <mail mailhost="smtp.qq.com" mailport="587" subject="Test Report!" messagemimetype="text/html" user="1071****@qq.com" password="anrlvjalsdjklsbeae" >

    qq邮箱的密码,就不是登陆的密码。而需要登陆qq邮箱,发送短信,去获取密码(授权码)。qq的端口:587。mailhost="smtp.qq.com"

    注意:如果是163邮箱,密码直接是163邮箱登陆时的密码。端口是:25。可以百度查这些端口。

    7.声明要运行的脚本路径

    <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
    <testplans dir="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTestpcscript" />

    build.xml完整代码

    <?xml version="1.0" encoding="utf-8"?>
    <project name="pc" default="all" basedir="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTest">
        <tstamp>
            <format property="time" pattern="yyyyMMddhhmm" />
        </tstamp>
        <!-- 需要改成自己本地的 Jmeter 目录-->
        <property name="jmeter.home" value="D:测试软件jmeterjme压缩apache-jmeter-2.13" />
        <!-- jmeter生成jtl格式的结果报告的路径-->
        <property name="jmeter.result.jtl.dir" value="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTestpc
    esultlogjtl" />
        <!-- jmeter生成html格式的结果报告的路径-->    
        <property name="jmeter.result.html.dir" value="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTestpc
    esultloghtml" />
        <!-- 生成的报告的前缀 -->
        <property name="ReportName" value="TestReport" />
        <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
        <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
        <!-- 接收测试报告的邮箱 -->
        <property name="mail_from" value="1071183139@qq.com" />
        <property name="mail_to" value="yangcheng_2020@163.com" />
        <!-- 电脑地址 -->
         <!-- <property name="ComputerName" value="jkqsh-l0285" />-->
        <target name="all">
            <antcall target="test" />
            <antcall target="report" />
            <antcall target="send" />
        </target>
        <target name="test">
            <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
            <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
                <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
                <testplans dir="G:2020软件测试代码3_接口及性能测试接口测试day2项目框架	estJmeterAutoTestpcscript" />
            </jmeter>
        </target>
    
        <path id="xslt.classpath">
            <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
            <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
        </path>
    
        <target name="report">
            <xslt
            classpathref="xslt.classpath"
                force="true"
            in="${jmeter.result.jtlName}" 
            out="${jmeter.result.htmlName}" 
            style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
                <param name="dateReport" expression="${time}"/>
        </xslt>
            <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
            <copy todir="${jmeter.result.html.dir}">
                <fileset dir="${jmeter.home}/extras">
                    <include name="collapse.png" />
                    <include name="expand.png" />
                </fileset>
            </copy>
        </target>
        <!-- 发送邮件 -->
        <target name="send" >
            <mail mailhost="smtp.qq.com" mailport="587" subject="Test Report!" messagemimetype="text/html" user="1071183139@qq.com" password="anrlvvqiusgibeae" >
            <from address="${mail_from}"/>
            <to address="${mail_to}"/>
            <message>This email was sent automatically by ANT. Please check the automation test report. Thank you!</message>
            <attachments> 
                <fileset dir="${jmeter.result.html.dir}">
                    <include name="${ReportName}${time}.html"/>
                </fileset>
            </attachments>
            </mail>
        </target>
    </project>

    8.启动ant 执行脚本:cmd    先进入盘符:G: 然后cd进入pc目录下  输入ant   执行脚本,会生成测试报告(下面发送邮件配置好后,也是这样执行。会生成测试报告,并发送邮件。)

    接受邮箱就会有一封新的邮件

    qq设置获取密码:

    1)登录电脑版QQ邮箱,选择最上方的“设置”

     2)如图选择“账户”,切换到账户详情页面。

     3)在账户页面往下拉,可以看到smtp设置,选择“开启”。

    4) 按照弹出的窗口提示操作进行密保验证。有多种方式可以验证,比如手机令牌等。推荐使用短信验证。

    5)按照短信验证的提示发送短信。发送成功后直接点击“我已发送”。

     6)弹出的提示中直接显示16位的授权码,可以复制下来,或者是记下来,千万不要记错了。然后点击“确定”。

    以上就完成了qq密码(授权码)的获取。

    注意:jmeter写好的脚本,保存为自动化测试框架的script目录下。

    升级:ant只能执行一个,不能批量的进行。如果想再执行,需要还得再运行一下ant。使用下面的jenkins可以每隔多长时间执行一次。

    5.5 使用jenkins实现持续集成

    使用jenkins是为了定时执行脚本。

    将jenkins(是一个网站)搭建在tomcat(服务器)下

    1)需要安装tomcat:解压tomcat7.rar,解压完就安装好了。

    2)jenkins.war复制到:D:测试软件jmeter omcat压缩tomcat7webapps   

    注意如果有选择替换就可以。本篇博客其余处要拷贝的也是这样。

    3)启动tomcat----bin-----startup.bat(双击)

     

     出现running,说明运行成功。

    tomcat闪退、启动失败原因
    1)端口被占用

    修改tomcat端口

    tomcat7-->conf-->server.xml文件--->在该文件下将默认的8080端口修改即可 

    例如:port:8090

    2)异常退出

    正确退出方法:1.ctrl+c命令 2.在tomcat7的bin目录下点击shutdown.bat

    使用jenkins的步奏:

    1.先启动tomcat----bin-----startup.bat(双击)

    2.输入网址:http://ip:端口/jenkins

    http://localhost:8080/jenkins/

    jenkin构建任务
    1)新建-->输入item名称,选择“构建一个自由风格的软件项目”

    2)构建触发器

    有三种形式:

    • Build after other projects are built:另一个项目结束之后再执行
    • Build periodically:指定多长时间执行
    • Poll SCM:多久去svn拉一次代码

    这里选择Build periodically

    定义脚本执行的频率

    日程表:H/2 * * * *(表示每2分钟执行),下面也有表示时间示例提示。

    3)构建--->选择invoke ant--->高级----在build file位置输入build.xml文件的路径,保存

     4)点击返回面板选中该任务-->选择立即构建即可。就可以调用ant,执行打包过程。在这里,也就是执行生成测试报告的步骤

    pc-html中生成的测试报告:

    补充:

    测试软件的安装:F:2020软件测试第二版就业班6-20部分16_就业班之接口及性能测试(共82集)接口测试第一天自动化接口软件

     jmeter+ant+jenkins安装位置:D:测试软件jmeter

  • 相关阅读:
    AFHTTPRequestOperationManager网络请求的时候添加一个菊花,requestmapping
    媒体层图形技术之Core Animation 学习笔记
    PHP自动判断字符集并转码
    用PHP实现游戏中的一些常见功能
    从几个简单的程序看PHP的垃圾回收机制
    递归遍历PHP多维数组
    CodeIgniter的缓存机制与使用方法
    PHP的内存泄露问题与垃圾回收
    记录一下PHP数组数据分页的方法
    PHP正则表达式移除超链接文本
  • 原文地址:https://www.cnblogs.com/zhangyangcheng/p/12628314.html
Copyright © 2011-2022 走看看