51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2524|回复: 2
打印 上一主题 下一主题

[原创] 性能测试初探---接口性能测试

[复制链接]
  • TA的每日心情
    难过
    2017-11-4 17:44
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2017-11-4 17:57:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    鉴于接口性能测试的重要性,特发此文。
    (一).性能指标
    PV: PageView, 页面浏览量或点击量,用户每次刷新即被计算一次;用户的一次刷新,给服务器造成了一次请求。
    UV: UniqueVisitor, 访问你网站的一台计算机客户端为一个访客,0:00 - 24:00 内相同的客户端仅记一次。
    TPS: Transaction Per Second 每秒系统处理的交易或事物的数量,衡量系统处理能力的重要指标。
    RT: 响应时间,从客户端发送一个请求开始,到客户端接收到从服务器返回的响应结果结束所经历的时间,包括请求发送时间,网络传输时间和服务器处理时间三部分。
    VU: Virtual User, 模拟真实业务逻辑步骤的虚拟用户,虚拟用户模拟的操作步骤被记录在虚拟用户脚本中,通常使用并发实现。
    TPS波动: 系统性能依赖于特定的硬件、软件代码、应用服务、网络资源等,所以在性能场景执行期间,TPS可能会表现为稳定,或者波动,抑或遵循一定的上升或下降趋势。用TPS波动系数来记录这个指标值。
    CPU: CPU资源是指性能测试场景运行的这个时间段内,应用服务系统的CPU资源占用率。CPU资源是判断系统处理能力以及应用运行是否稳定的重要参数。
    Load: 系统正在干活的多少的度量,队列长度。系统平均负载,被定义为在特定时间间隔(1m,5m,15m)内运行队列中的平均进程数。
    I/O: I/O可分为磁盘IO和网卡IO。
    JVM: 即Java虚拟机,它拥有自己的处理器、堆栈、寄存器等,还有自己相应的指令系统。Java应用运行在JVM上面。
    GC: GC是一种自动内存管理程序,它主要的职责是分配内存、保证被引用的对象始终在内存中、把不被应用的对象从内存中释放。FGC会引起JVM挂起。
    网速: 网络中的数据传输速率,一般以Byte/s为单位。通过ping延时来反映网速.
    流量: 性能测试中,一般指单位时间内流经网卡的总流量。分为inbound和outbound,一般以KB为单位。
    VU(并发压测用户数) = TPS(每秒执行事务数) × RT(响应时间)
    在寻找合适的并发用户数上,建议使用PTS(淘宝性能自动化:https://pts.aliyun.com/lite/index.htm?spm=0.0.0.0.8t95Nt)的“梯度模式”,逐渐增加并发用户数,这个时候压力也会越来越大,当TPS的增长率小于响应时间的增长率时,这就是性能的拐点,也就是最合理的并发用户数;当TPS不再增长或者下降时,这个时候的压力就是最大的压力,所使用的并发用户数就是最大的并发用户数。如果此时的TPS不满足你的要求,那么就需要寻找瓶颈来优化。

    a点:性能期望值
    b点:高于期望,系统安全
    c点:高于期望,拐点
    d点:超过负载,系统崩溃
    (二).LoadRunner统计接口性能数据
    LoadRunner分成3步:
    1. Create/Edit Scripts;
    2. Run Load Tests;
    3. Analyze Test Results;
    第一步:编写脚本(GET请求)
    新建 New Scrips, 选择Web(HTTP/HTML)协议,因为不是对页面测试,无需记录操作,在“Start Recording”弹窗中,选择Cancel。
    手动编写脚本:

    按“F5”键运行脚本,Replay Log输出如下:

    Action.c(26): Notify: Transaction “unread_friends_timeline_reload” ended with “Pass” status (Duration: 0.8905 Wasted Time: 0.6256). 表示脚本调试通过。
    LoadRunner参数化设置可以参见:http://www.cnblogs.com/fnng/archive/2012/06/22/2558900.html
    模拟POST请求:
    web_custom_request中参数设置:”Method=POST”,“Body=属性名称=属性值&属性名称=属性值&……”,web_custom_request中Body中的属性值如果包含一些特殊字符,必须通过URL编码,否则Web服务器会返回500错误。
    例子:

    第二步: Run Load Tests
    自定义脚本之后,运行第二步,Run Load Tests, 弹出New Scenario小窗口,左下选择测试脚本,进入场景设计。
    场景设置主要包括4部分,选择Global Schedule->Edit Action设置场景:
    1.Initialize: VU初始化设置
    2.Start Vusers: 定义多少个VU, 用户增长选择
    (1)Simultaneously 同时;(2)每隔一定时间,增长用户
    3.Duration: 运行时间设置
    4.Stop Vusers: 终止VU的策略
    场景设置结束后,点击左下Run, 点击Start Scenario,开始场景性能测试。
    点击stop, 终止性能测试; 自动跳到第三步。
    第三步: Analyze Test Results
    结果展示,会有3份报告
    (1)Analysis Summary: Statistics Summary, Transaction Summary,HTTP Responses Summary
    (2)Averagee Response Time: Minimum, Average, Maximum, std.Deviation(标准方差), 单位:s
    (3)Transactions per Second:Graph Minmum, Average, Graph Maximum, Graph Median, Graph Std. Deviatior
    LoadRunner并没有提供响应时间的分布情况,只有最小,最大,平均,标准方差,90 Percent,如果需要统计50%,60%,70%,80%,90% RT的分布情况,需通过LR获取原始数据,通过Excel公式PERCENTILE计算:
    在Averagee Response Time报告下,选择Windows菜单->Raw Data, 右侧出现Raw Data, 展开该选项,通过Transaction Name(值为脚本中自定义的事务名)获取接口响应时间原始数据Transaction Response Time,粘贴到excel中,假设原始数据都在一列(A2-A57),比如要获得50% RT, 则使用公式=PERCENTILE(A2:A57;0.5)得到结果,依次类推…
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏3
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-25 16:10 , Processed in 0.065672 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表