zoukankan      html  css  js  c++  java
  • 接口测试基础07

    项目:功能测试(重点)

    A、是什么

    测试系统中各个接口基本功能是否能够正常运行,提交的数据:正向 + 逆向

    B、为什么?

    要模拟用户的多样性操作,检测程序的响应是否合情合理(符合预期)

    C、怎么用?

    C-1、搭建功能测试框架(CSV 必须)
    1)、将数据存入外部文档文件
    2)、添加组件读取文档(CSV Data Set Config)
    3)、JSON 数据以固定格式引入步骤2读取的数据
    C-2、设计测试用例(将用户的操作进行分类)
    分类原则:正向 + 逆向(重点)
    1. 覆盖所有的必选参数(正向)
    2. 组合可选参数(正向_覆盖率问题,考虑人力和时间成本)
    3. 参数边界值(逆向_ 比如年龄边界)
    4. 如果参数的取值范围是枚举变量,需要覆盖所有枚举值(测试所有可能的数据)    
    5. 空数据(逆向_不录入数据)
    6. 包含特殊的字符(+-=/....)
    7. 越界的数据(逆向_比如长度过长或过短)
    8. 错误的数据(逆向_比如错误的手机号、身份证号、重复的id....)    
    实现模板:
    C-3、参数化覆盖测试用例
    按照测试用例编写测试数据
    总结:
    测试用例是在设计测试时使用什么类型的数据,就是预设条件以及预期结果 ---- 大纲
    参数化覆盖测试用例声明使用什么样的数据(具体的),按照测试用例实现的   ---- 细节

    项目:自动化测试

    A、是什么?

    由程序生成测试数据且让程序代替人工判断响应结果,就是自动化测试(程序代替人工)

    B、为什么?

    安全、高效、功能强大

    C、怎么用?

    C-1、自动化测试原则
    1)、测试程序的主要功能以及一些经常被复用的功能,并非所有
           自动化测试是对功能测试的补充,应用场景:程序升级时,拓展了一些功能,可能要测试之前的功能是否可用
    2)、自动化测试测试数据一般只考虑正向数据
           自动化测试是对功能测试的补充 +   程序生成多样的测试数据有困难
    3)、自动化测试完毕,数据库数据必须恢复成测试之前的状态,优点:重复使用,功能测试不能
    4) 、线程组之间不要有**关联**,不要有业务逻辑,优点:可以单独测试某一个功能
    C-2、实现流程
    1)、搭建框架(抽取 http请求默认值、http信息头管理器、结果树)
    2)、setUp 和 tearDown 线程组
    3)、数据生成可以借助于  counter 函数,数据格式:自定义前缀_调用计数器函数
    4)、使用断言组件让程序代替人工判断响应结果
            5)、跨线程组传值
     思想:setUp 将数据导出到共享空间,tear down 再将数据引入
    流程:
     1)、setUp 要使用  setProperty 导出数据
        怎么获取要导出的 id?使用正则表达式提取器
     2)、tearDown 使用 property 函数引入数据
          6)、普通线程组结合 setUp 和 teardown 使用时的执行顺序:(先setUp线程组,最后teardown线程组)
                 多个普通线程组可能并发执行
    7)、直连数据库 
         a、Jmeter本身不具备数据连接功能,整合第三方实现
      b、配置数据库连接信息
              变量名 + 数据库路径 + 第三方的启动入口 + 账号密码
        c、使用 JDBC Request 操作数据库数据
             SQL语句有类型: select statement | update statement
            variable names: 查询的结果赋值给的变量名
      d、将数据传递给 http 请求 
            结果的赋值规则:变量名\_# 结果个数 | 变量名_N 第N个结果
           可以通过 debug sampler 查看底层赋值规则

    项目:性能压力测试

    A、是什么?

    模拟多种场景测试程序的响应时间,出错率....等实现

    B、为什么?

    测试程序的执行效率,执行效率直接关系到用体验

    C、怎么用?

    聚合报告使用图
    1. Label:在不勾选"Include group name in label?"复选框的情况下,为请求取样器的名称,
        否则为“请求取样器所在线程组:请求取样器名称”
    2. Samples:用同一个请求取样器,发送请求的数量(注意:该值是不断累计的)。
        比如,10个线程数设置为10,迭代10次,那么每运行一次测试,该值就增加10*10=100
    3. Average:请求的平均响应时间
    4. Median:中位数。50%的样本都没有超过这个时间。
        这个值是指把所有数据按由小到大将其排列,就是排列在第50%的值。
    5. 90% Line:90%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第90%的值。
    6. Min:针对同一请求取样器,请求样本的最小响应时间
    7. Max:针对同一请求取样器,请求样本的最大响应时间
    8. Error %:出现错误的请求样本的百分比
    9. Throughput:吞吐量以“requests/second、requests /minute、requests /hour”来衡量。
        时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求。
    10. Received KB/sec - 收到的千字节每秒的吞吐量测试。
    11. Kb/sec - 以Kilobytes/seond来衡量的吞吐量(发送的千字节每秒的吞吐量测试)
    提示
    1. 参数化:参数化尽量避免采用从外部读取参数,使用固定参数+函数形式( 如:${__counter(TRUE,)})
    2. 察看结果树:必须清除单个接口内察看结果树
                (如不去掉,非常占用测试机自身性能),在测试计划下添加一个察看结果树  
    3. 报告:性能报告可根据实际需求选择,建议保留添加聚合报告  
    4. 线程组:增删改查每一个功能点,都需建立单独线程组,而避免在同一个线程组内添加
               多个HTTP请求完成增删改查(以便参数化对单个请求做压测和并发)
    5. 分布式:如并发数量大,采用分布式测试,因为测试机可能性能不够开启太多虚拟用户
    6. 新增/删除:新增和删除接口建议不要采用时间模式来压测,直接使用线程数和循环;
    案例:
    模拟300秒内开启100个虚拟用户(线程组设置线程数为100),每个用户循环访问服务器资源10次(设置循环次数为10),要求平均响应时间在 30 ms内,且错误率为0

    模拟 100 个用户同时访问服务器资源(集合点用定时器,设置group by为100),要求平均响应时间在30ms内,且错误率为0

    模拟3个用户都以10QPS的评率访问服务器资源(线程数设为3),持续10秒(循环次数为100:频率*持续时间),要求平均响应时间在30ms内,
    且错误率为0,constant Throughput Timer组件的:Target throughput(in samplers minute):10*60=600

    项目:生成 html 格式测试报告

    提示:
    JMeter 3.0以上开始支持自动生成动态报告
    操作步骤:
    两种模式:
    无jtl日志或csv日志文件生成报告
    有jtl日志或csv日志文件生成报告
    1. 无日志文件生成:
    基本命令格式:
    jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>
    样例:
    jmeter -n -t E:课件JmeterScript自动化脚本Stu_AutoScript.jmx -l testLog -e -o ./output/report
    参数详解:
    -n :以非GUI形式运行Jmeter
    -t :source.jmx 脚本路径
    -l :运行结果保存路径(.jtl),此文件必须不存在
      1) .jtl
      2) .txt
      3) 无后缀
    -e :在脚本运行结束后生成html报告
    -o :保存html报告的地址, 此文件必须不存在
    2. 使用已有的jtl日志文件或csv日志文件生成
     基本命令格式:
    jmeter -g <log file> -o <Path to output folder>
    样例:
    jmeter -g E:课件JmeterScript自动化脚本
    esultt.jtl -o ./outputreport
    提示:
    执行命令时,出现Jmeter不是内部或外部命令
    解决:
    将Jmeter目录下bin文件目录添加到环境变量Path中,注意追加路径是,前面分号;


  • 相关阅读:
    一键复制文本框内容代码、
    改掉这些坏习惯,你不再是菜鸟
    使用cookie保存页面登录信息
    二维数组转换成一维数组
    jQuery选择器总结
    cookie 和session 的区别详解
    PHP扫雷(转载)。
    PHP简易计算器方法2
    PHP简易计算器方法1
    业务逻辑的存储过程(添加学生的案例)(自动编号)
  • 原文地址:https://www.cnblogs.com/st998/p/13786307.html
Copyright © 2011-2022 走看看