51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 425|回复: 1
打印 上一主题 下一主题

JMeter:测试场景创建与配置的无限可能

[复制链接]
  • TA的每日心情
    无聊
    2024-10-29 09:20
  • 签到天数: 76 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2024-8-5 15:01:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一、JMeter 测试场景创建的多样方式


    图形界面创建测试场景
    JMeter 的图形界面为用户提供了直观且易于操作的方式来创建测试场景。其特点包括:
    操作便捷:无需深入了解编程知识,通过拖拽和配置组件就能构建测试场景,适合新手快速上手。
    可视化展示:能够清晰地看到测试计划的结构和组件之间的关系,便于直观理解和调整。
    实时预览:在设置参数和组件时,可以实时预览效果,及时发现和纠正错误。


    适用场景:
    对于简单的测试需求,如少量的并发用户、基本的请求设置等,图形界面能快速满足。
    当需要快速创建一个初步的测试框架以便进行初步的性能评估时,图形界面的高效性得以体现。


    脚本创建测试场景
    脚本方式创建测试场景则更加灵活和强大。其特点主要有:
    精细控制:可以实现对测试场景的精确控制,包括复杂的逻辑、动态参数设置等。
    可复用性高:编写好的脚本可以在不同项目或测试场景中重复使用,提高工作效率。
    批量处理:适合处理大量数据和复杂的业务逻辑。


    适用场景:
    对于大型、复杂的项目,需要模拟大量并发用户和复杂业务流程时,脚本方式更具优势。
    当需要与其他自动化工具集成,实现全流程自动化测试时,脚本是理想的选择。
    总的来说,JMeter 提供的图形界面和脚本两种创建测试场景的方式各有优劣,用户应根据具体的测试需求和自身技术水平选择合适的方式。


    二、设置并发用户数的方法与技巧



    在 JMeter 中设置并发用户数主要通过线程组的相关参数配置来实现。
    线程组参数配置
    线程数(Number of Threads):这直接决定了模拟的并发用户数量。例如,设置为 100 就意味着模拟 100 个并发用户。
    Ramp-Up 时间(Ramp-Up Period):用于控制线程的启动时间。若设置为 10 秒,线程数为 50,那么每秒会启动 5 个线程。这样可以避免瞬间的高并发对系统造成过大冲击。
    循环次数(Loop Count):决定每个线程发送请求的次数。若线程数为 50,循环次数为 5,那么总请求数为 250 次。
    勾选“永远”:如果勾选此项,线程将一直发送请求,直到手动停止,这通常在需要持续压力测试时使用。


    根据不同测试需求调整并发数的策略
    对于小型系统或初步测试,可以先从较小的并发数开始,如 10 - 20 个用户,逐步增加以观察系统的性能变化。
    对于大型系统或关键业务场景,需要根据系统的预期负载和性能要求来设置较高的并发数,可能达到几百甚至上千。
    还需考虑系统的资源限制,如服务器的 CPU、内存、网络带宽等。如果资源有限,应适当降低并发数,以免导致系统崩溃或测试结果不准确。
    同时,结合定时器(Timer)来模拟真实用户的操作间隔,能更真实地反映系统在实际负载下的性能表现。
    总之,合理设置并发用户数需要综合考虑测试目标、系统性能、资源状况等多方面因素,通过不断的试验和优化,以获得准确且有价值的测试结果。

    三、配置请求参数的要点与策略



    GET 请求参数设置
    在 JMeter 中,对于 GET 请求的参数设置相对简单。通常可以直接在 URL 中添加参数,形如 https://example.com/page?param1=value1¶m2=value2 。也可以通过 Query String Parameters 选项在 HTTP Request 中进行设置。


    POST 请求参数设置
    POST 请求的参数设置一般在 Request Body 中进行。可以选择 form-data 或 x-www-form-urlencoded 等格式来传递参数。例如,若要传递一个用户名和密码,可设置为 {"username":"user1","password":"pass1"} 。同时,还需注意根据接口要求设置正确的 Content-Type 头信息。


    文件上传参数配置
    文件上传是一种特殊的参数配置情况。在 JMeter 中,首先需要勾选 Use multipart/form-data for post 选项。然后在上传文件选项页中,准确填写文件名称、参数名称和 MIME 类型等参数。例如,文件名称填写文件的完整路径,参数名称自定义,MIME 类型根据文件类型选择,如 image/jpeg 对于 JPEG 图片。


    参数化配置策略
    为了使测试更具灵活性和真实性,可以采用参数化配置。可以通过 CSV Data Set Config 元件从 CSV 文件中读取参数值,也可以使用 JMeter 中的函数如 __Random 生成随机参数。还可以利用用户自定义变量或用户参数,为不同的线程分配不同的参数值。
    总之,在配置 JMeter 请求参数时,要根据具体的请求类型和测试需求,选择合适的参数设置方式和参数化策略,以确保测试的准确性和有效性。


    四、思考时间的设置及其影响



    思考时间的设置方式
    在 JMeter 中,思考时间可以通过多种定时器来设置。
    固定定时器(Constant Timer):能够为每个线程请求之前设定固定的等待时间,单位为毫秒。例如,设置为 3000 毫秒,线程就会在每次请求前固定等待 3 秒。
    均匀随机定时器(Uniform Random Timer):产生的延迟时间是随机的,且各随机值出现的概率均等。总延迟时间由随机延迟时间和固定延迟时间组成。
    高斯随机定时器(Gaussian Random Timer):其延时时间接近正态分布,95%的线程在一定范围内浮动,如 300ms 上下浮动 2*100ms 。
    同步定时器(Synchronizing Timer):常用于实现线程的同步操作,如设置集合人数和超时时间。
    固定吞吐量定时器(Constant Throughput Timer):通过控制每分钟请求数来控制是否进行延时暂停。


    思考时间对测试结果的影响
    思考时间的设置对测试结果的准确性和真实性有着重要影响。
    如果不设置或设置不当的思考时间,可能会导致测试结果失真。例如,在模拟复合业务场景时,若没有合理的思考时间,可能会出现某些业务请求过度抢占资源,导致其他业务的性能表现被低估。
    相反,恰当设置思考时间能够更真实地模拟用户行为,使测试结果更接近实际情况。比如,设置与真实用户操作习惯相符的思考时间,可以准确评估系统在实际负载下的性能和稳定性。
    总之,在进行 JMeter 性能测试时,合理设置思考时间是确保测试结果准确、可靠的关键因素之一。


    五、利用 JMeter 插件创建复杂测试场景




    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-10-29 09:20
  • 签到天数: 76 天

    连续签到: 1 天

    [LV.6]测试旅长

    2#
     楼主| 发表于 2024-8-5 15:05:01 | 只看该作者
    常用的 JMeter 线程组插件
    1.Ultimate Thread Group 插件
    特点:提供了丰富的线程组配置选项,能够实现多种复杂的并发场景模拟。
    打开方式:在 jmeter 窗口中,依次单击菜单项“测试计划 -> 右键 -> 添加 -> 线程组 -> jp@gc - Ultimate Thread Group”。
    执行计划参数:
    • Start Threads Count:启动的线程总数。
    • Initial Delay/sec:延时启动线程的时间。
    • Startup Time/sec:启动所有线程达峰值所需时间。
    • Hold Load For/sec:线程达到峰值后的稳定加载时间。
    • Shutdown Time:停止所有线程所需时间。



    场景设置示例:
    简单并发场景:在Start Threads Counts列设置 100 并发,Startup Time列值为 30 秒完成,持续运行Hold Load For列值为 60 秒,缓减压Shutdown列值为 10 秒完成。
    浪涌场景:多次加载不同数量的并发,通过设置不同的参数来模拟业务系统压力的变化。


    2.Custom Thread Groups 插件
    特点:常用于模拟负载测试场景,可灵活控制线程的加载和停止。
    打开方式:在 jmeter 窗口中,依次单击菜单项“测试计划 -》添加 -》 线程组(用户)-》jp@gc - Stepping Thread Group”。
    执行计划参数:
    • This group will start * threads:加载的线程总数。
    • First,wait for * seconds:等待开始加载线程的时间。
    • Then start * threads:初次加载的线程数。
    • Next,add * threads every * seconds:下次加载的线程数及间隔时间。
    • Then hold load for * seconds:线程全部加载完成后运行的时间。
    • Finally,stop * threads every * seconds:停止线程的时间间隔。



    运用插件构建复杂性能测试场景
    在实际的性能测试中,可以根据具体的测试需求灵活运用这两个插件。例如,对于一个电商网站的促销活动模拟,可能会在活动开始瞬间出现高并发访问,随后并发量逐渐增加,然后保持一段时间的高峰,最后逐渐下降。这时,可以使用 Ultimate Thread Group 插件来设置浪涌场景,模拟活动开始时的瞬间高并发,再通过 Custom Thread Groups 插件来实现后续并发量的逐步增加和稳定保持。通过合理配置这些插件的参数,能够更真实地模拟复杂的业务场景,从而有效地评估系统的性能和稳定性。


    六、JMeter 测试场景配置的灵活应用与案例分析



    案例:模拟电商网站购物高峰场景
    首先,我们明确测试目标,即模拟电商网站在购物高峰时的系统性能表现。
    使用 Ultimate Thread Group 插件设置初始的高并发线程。将 Start Threads Count 设置为 500,Startup Time/sec 设为 10 秒,以在短时间内迅速达到较高的并发量,模拟购物高峰的瞬间涌入。
    接着,利用 Custom Thread Groups 插件进一步细化并发增长。设置 This group will start * threads 为 100,First,wait for * seconds 为 30 秒,Then start * threads 为 50,Next,add * threads every * seconds 为 60 秒增加 20 个线程,Then hold load for * seconds 为 180 秒,Finally,stop * threads every * seconds 为 60 秒停止 10 个线程。这样可以模拟购物高峰期间用户数量的持续增长和逐渐减少。
    在请求参数配置方面,通过 CSV Data Set Config 元件导入大量真实的用户购物数据,包括商品种类、数量、支付方式等,实现参数化。
    对于思考时间,采用均匀随机定时器,设置平均延迟 2 秒,模拟用户在购物过程中的浏览和思考行为。
    在测试过程中,密切关注服务器的各项性能指标,如响应时间、吞吐量、错误率等。


    测试结果分析
    如果响应时间过长,可能是服务器处理能力不足,需要优化数据库查询或代码逻辑。
    若吞吐量未达到预期,可能是网络带宽受限或服务器资源分配不合理。
    错误率过高则需要检查接口是否存在异常或系统是否存在瓶颈。


    优化方向
    根据测试结果,若发现服务器 CPU 利用率过高,可以考虑增加服务器资源或优化算法。
    若数据库响应慢,可优化数据库索引或进行分库分表。
    对于网络带宽问题,可升级网络设备或优化数据传输方式。
    总之,通过综合运用 JMeter 的各种配置和插件,并结合对测试结果的深入分析,能够不断优化测试场景,更准确地评估系统性能,为系统的优化和改进提供有力支持。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-22 12:18 , Processed in 0.068988 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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