尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

JMeter性能测试从入门到实战:环境搭建、脚本设计与结果分析

JMeter性能测试从入门到实战:环境搭建、脚本设计与结果分析
📅 发布时间:2026/6/29 7:42:35

1. 项目概述:为什么选择JMeter作为性能测试的起点

如果你正在寻找一款能扛住高并发压力测试、功能强大且完全免费的工具,那么Apache JMeter几乎是不二之选。作为一个在软件测试领域摸爬滚打了十多年的老手,我见证过LoadRunner的辉煌,也用过Gatling的轻快,但最终在团队协作、成本控制和灵活性上,JMeter始终是我的主力武器。它不仅仅是一个“接口工具”,更是一个完整的性能测试生态系统,从简单的HTTP请求到复杂的分布式压测,从脚本录制到精细的结果分析,它都能搞定。很多新手觉得JMeter界面有点“复古”,学习曲线陡峭,但一旦你掌握了它的核心逻辑,就会发现它的设计其实非常直观和强大。

这篇教程的目标,就是带你从零开始,绕开我当年踩过的那些坑,快速搭建起JMeter环境,并亲手设计出你的第一个真正可用的性能测试脚本。我们不会停留在“点一下按钮”的层面,而是会深入每一步背后的“为什么”:为什么这么配置参数?为什么选择这个监听器?脚本设计时有哪些看不见的“雷”?无论你是刚入行的测试工程师,还是需要对自己开发的API进行压测的后端程序员,这篇内容都能给你一套可直接落地的方案。

2. 环境准备与安装:避开版本兼容的“天坑”

安装JMeter本身很简单,但“配好”一个能稳定工作的JMeter环境,却有很多细节需要注意。很多人卡在第一步,不是因为教程看不懂,而是因为忽略了Java环境这个前提,或者选错了JMeter版本。

2.1 JDK的选择与安装:性能的基石

JMeter是纯Java应用,它的运行效率和稳定性直接依赖于Java运行时环境(JRE)。但我强烈建议你直接安装完整的JDK(Java Development Kit),而不是JRE。原因有两个:第一,某些JMeter插件或高级功能可能需要编译环境;第二,方便你后续使用JMeter与Maven、Jenkins等CI/CD工具集成。

注意:JMeter 5.5及以上版本要求至少Java 8,但为了获得更好的性能和稳定性,我推荐直接安装JDK 11或JDK 17(LTS长期支持版本)。避免使用过新的非LTS版本,以免遇到未知的兼容性问题。

安装步骤以Windows平台为例(Mac/Linux用户可通过包管理器如Homebrew、apt-get安装,原理相通):

  1. 访问Oracle官网或Adoptium等开源发行版站点下载JDK安装包。我个人更倾向于使用Adoptium的OpenJDK,完全免费且没有商业使用限制。
  2. 运行安装程序,记住你的安装路径(例如C:\Program Files\Eclipse Adoptium\jdk-17.0.10+7)。
  3. 配置系统环境变量。这是关键一步,配置错了JMeter就无法启动。
    • 新建系统变量JAVA_HOME:变量值就是你的JDK安装路径(如C:\Program Files\Eclipse Adoptium\jdk-17.0.10+7)。
    • 编辑系统变量Path:在末尾添加%JAVA_HOME%\bin。
  4. 验证安装:打开命令行(CMD或PowerShell),输入java -version和javac -version。如果正确显示版本号,说明安装成功。

2.2 JMeter的下载与“绿色”安装

JMeter采用“绿色版”设计,无需安装,解压即用。这带来了极大的灵活性,你可以在不同目录存放多个版本,针对不同项目进行测试。

  1. 官网下载:务必前往Apache JMeter官网的下载页面。国内网络有时访问较慢,可以耐心等待或寻找可靠的镜像站。不要从第三方不明站点下载,以免捆绑恶意软件或版本过旧。
  2. 版本选择:下载后缀为.zip的压缩包(Windows)或.tgz(Linux/Mac)。我建议选择最新的稳定版(如本文撰写时的5.6.3)。对于生产环境,如果团队已有固定版本,则保持一致。
  3. 解压到合适路径:路径中不要包含中文或空格。例如,解压到D:\Tools\apache-jmeter-5.6.3。包含空格的路径(如C:\Program Files\...)有时会导致脚本或插件加载异常,这是一个经典的坑。
  4. 配置JMeter环境变量(可选但推荐):为了方便在任何路径启动JMeter,可以设置系统变量JMETER_HOME,值为你的JMeter解压路径,并在Path中添加%JMETER_HOME%\bin。
  5. 启动验证:进入%JMETER_HOME%\bin目录,双击jmeter.bat(Windows)或运行./jmeter.sh(Linux/Mac)。你会看到先弹出一个命令行窗口,然后出现JMeter的图形界面(GUI)。请记住,这个GUI仅用于脚本开发和调试,真正的压测必须在命令行(非GUI)模式下运行,否则会消耗大量本机资源,导致测试结果严重失真。

2.3 可选但重要的初步配置

安装完成后,有两点配置可以极大提升你的初始体验:

  • 语言设置:首次启动后,可以通过菜单Options -> Choose Language切换为中文。但作为从业者,我建议你保持英文界面。因为所有官方文档、社区讨论和错误信息都是英文的,使用英文界面能帮助你更快地定位和解决问题。
  • 调整JVM参数(高级):对于复杂的测试场景,你可能需要调整JMeter启动时的内存分配。编辑bin目录下的jmeter.bat(Windows)或jmeter.sh(Linux/Mac),找到HEAP相关的参数。例如,将默认的HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"修改为HEAP="-Xms2g -Xmx4g -XX:MaxMetaspaceSize=512m",这表示堆内存初始2G,最大4G。调整原则是:不要超过你物理内存的70%,并且为操作系统和其他应用留出足够空间。

3. JMeter核心概念与脚本设计逻辑拆解

在急着创建线程组和发请求之前,理解JMeter的几个核心概念至关重要。这就像学开车,先要明白方向盘、油门、刹车的功能,而不是直接上路。

3.1 测试计划(Test Plan):你的测试容器

启动JMeter后,你看到的唯一一个节点就是“Test Plan”。它是所有其他元素的容器,相当于一个.jmx项目文件。这里有几个关键配置:

  • 独立运行每个线程组:如果勾选,那么各个线程组将按顺序执行,而非并行。通常不勾选,以模拟真实的并发场景。
  • 函数测试模式:如果勾选,JMeter会记录每个请求的响应数据,这会极大消耗内存和性能,仅在功能调试时临时开启,性能测试时必须关闭!
  • 用户定义的变量:可以在这里定义全局变量,如服务器地址base_url,方便后续所有请求引用。

3.2 线程组(Thread Group):定义虚拟用户的行为模型

线程组是性能测试场景的骨架,它定义了虚拟用户(Vuser)的数量、启动方式、执行次数等。

  • 线程数(Number of Threads):模拟的虚拟用户数。这是并发数的核心参数。不要盲目设置成千上万,先从你系统预估的日常并发量开始。
  • Ramp-up时间(Ramp-up period):所有虚拟用户在多少秒内启动完毕。例如,线程数100,Ramp-up时间50秒,意味着JMeter会在50秒内均匀地启动这100个用户(每秒启动2个)。设置为0表示立即同时启动所有线程,这会对服务器产生巨大的瞬间冲击,通常用于压力极限测试,而非模拟真实场景。
  • 循环次数(Loop Count):每个线程执行测试计划的次数。勾选“永远”则表示一直执行,直到手动停止或达到调度器设置的时间。

实操心得:设计一个“阶梯加压”场景是常见的需求,但JMeter标准线程组不支持。这时你需要使用“Stepping Thread Group”插件,或者创建多个线程组,通过“调度器”控制它们的开始延迟时间来实现。

3.3 取样器(Sampler)、逻辑控制器(Logic Controller)与配置元件(Config Element)

这是脚本的“血肉”。

  • 取样器:向服务器发出请求的元件,如HTTP请求、JDBC请求、TCP请求等。最常用的是“HTTP请求”。
  • 逻辑控制器:控制取样器的执行逻辑。例如,“循环控制器”可以让其子元件重复执行;“仅一次控制器”常用于登录操作;“如果(If)控制器”可以根据条件决定是否执行。
  • 配置元件:为取样器提供配置信息。“HTTP请求默认值”元件极其有用,你可以在这里设置所有HTTP请求共享的协议、服务器名称、端口号,这样具体的HTTP请求取样器就只需填写路径,避免了重复配置。“HTTP信息头管理器”用于管理Cookie、Content-Type等头信息。“CSV数据文件设置”用于参数化,从外部文件读取测试数据。

3.4 断言(Assertion)、监听器(Listener)与定时器(Timer)

这是测试的“感官”和“调节器”。

  • 断言:验证服务器返回的响应是否符合预期。例如,“响应断言”可以检查响应文本中是否包含某个关键字,或检查响应代码是否为200。没有断言的性能测试是盲目的,你无法确认请求是否成功。
  • 监听器:收集和展示测试结果。重要警告:在GUI中添加过多监听器(尤其是“查看结果树”)并在非GUI模式下运行,会生成巨大的结果文件(.jtl),可能导致内存溢出。性能测试时,通常只添加“聚合报告”或“汇总报告”,并将结果保存到简单的CSV文件,后续再用GUI进行分析。
  • 定时器:在每个请求之间引入停顿,以模拟用户思考时间,使测试更贴近真实。常用的有“固定定时器”、“高斯随机定时器”。不加定时器的测试是“满负荷冲击”测试,通常用于探知系统极限;加上合理的定时器才是“负载”测试,模拟真实用户行为。

4. 第一个性能测试脚本实战:模拟用户登录与查询

理论说再多,不如动手做一遍。我们来设计一个经典场景:模拟100个用户登录系统,然后随机查询一些信息。假设我们有一个简单的用户服务。

4.1 步骤一:创建测试计划与线程组

  1. 打开JMeter,测试计划名称改为“用户登录查询压测”。
  2. 右键“测试计划” -> “添加” -> “线程(用户)” -> “线程组”。
  3. 线程组命名为“登录用户组”。设置线程数为100, Ramp-up时间为20秒,循环次数为10。这意味着100个用户将在20秒内陆续启动,每个用户执行10轮“登录-查询”操作。

4.2 步骤二:配置默认请求与参数化数据

  1. 右键“登录用户组” -> “添加” -> “配置元件” -> “HTTP请求默认值”。
  2. 在“HTTP请求默认值”中,填写“协议”(http/https)、“服务器名称或IP”(如api.yourdomain.com)、“端口号”(如 80 或 443)。这样后续请求就不用重复填了。
  3. 右键“登录用户组” -> “添加” -> “配置元件” -> “CSV数据文件设置”。我们将使用CSV文件来参数化用户名和密码。
    • 文件名:指向一个CSV文件,如D:\testdata\users.csv。文件内容如下:
      username,password user1,pass123 user2,pass456 ...(至少100行,可以重复)
    • 变量名称:username,password(与CSV表头对应)。
    • 其他选项:忽略首行(选True),分隔符用逗号,遇到文件结束符再次循环(选True)。

4.3 步骤三:实现登录请求(含关联与断言)

  1. 右键“登录用户组” -> “添加” -> “逻辑控制器” -> “事务控制器”。命名为“登录事务”。事务控制器可以将其下的所有请求合并为一个事务进行统计。
  2. 右键“登录事务” -> “添加” -> “取样器” -> “HTTP请求”。命名为“登录接口”。
    • 方法:POST
    • 路径:/api/v1/login
    • 在“Body Data”选项卡中,填写JSON格式的请求体:{"username":"${username}","password":"${password}"}。这里引用了CSV文件中的变量。
  3. (关键)处理登录后的Token:登录成功后,服务器通常会返回一个Token(如JWT),后续请求需要携带它。我们需要提取这个Token。
    • 右键“登录接口” -> “添加” -> “后置处理器” -> “JSON提取器”。
    • 变量名称:auth_token(你自定义的变量名)。
    • JSON路径表达式:$.data.token(假设返回的JSON结构是{"code":0, "data":{"token":"eyJhbGciOi..."}})。你需要根据你接口的实际返回结构来调整。
  4. 添加断言,确保登录成功:
    • 右键“登录接口” -> “添加” -> “断言” -> “响应断言”。
    • 测试字段:响应代码。模式匹配规则:等于。测试模式:200。
    • 再添加一个“响应断言”,测试字段:响应文本,选择“包含”,测试模式:"code":0(或你接口定义的成功码)。双重验证更保险。

4.4 步骤四:实现查询请求(使用Token)

  1. 在“登录事务”控制器下(登录请求之后),添加另一个“HTTP请求”,命名为“查询用户信息”。
  2. 方法:GET
  3. 路径:/api/v1/user/profile
  4. 传递Token:通常Token放在HTTP请求头中。
    • 右键“查询用户信息”请求 -> “添加” -> “配置元件” -> “HTTP信息头管理器”。注意:这个管理器的作用域。如果放在请求下,则只对该请求生效;如果放在线程组下,则对所有请求生效。这里我们放在请求下。
    • 添加一个头:名称Authorization,值Bearer ${auth_token}。这样就动态使用了上一步提取的Token。
  5. 同样,为这个请求添加“响应断言”,验证响应码为200。

4.5 步骤五:添加思考时间与监听器

  1. 模拟用户操作间隔:右键“登录用户组” -> “添加” -> “定时器” -> “高斯随机定时器”。设置偏差(Deviation)为1000毫秒,常数延迟偏移(Constant Delay Offset)为2000毫秒。这表示每次循环(登录+查询完成后)会等待一个大致在1秒到3秒之间的随机时间。
  2. 添加必要的监听器用于调试和报告:
    • 右键“线程组” -> “添加” -> “监听器” -> “查看结果树”。仅在脚本调试阶段使用!运行前可以打开它检查请求和响应是否正确。正式压测前务必禁用或删除它,因为它会记录所有请求/响应细节,产生巨大开销。
    • 右键“线程组” -> “添加” -> “监听器” -> “聚合报告”。这是性能测试的核心报告,会显示TPS、响应时间、错误率等关键指标。
    • 右键“线程组” -> “添加” -> “监听器” -> “用表格查看结果”。这个监听器开销较小,可以实时看到样本结果。

4.6 步骤六:运行、调试与保存

  1. 点击工具栏的绿色开始按钮(或Ctrl+R)运行测试。在“查看结果树”中观察请求是否成功,Token是否被正确提取和传递。
  2. 调试过程中常见的错误:
    • 响应码400/401:检查请求体JSON格式、参数名、Token传递是否正确。
    • 变量未替换:在“查看结果树”的“请求”选项卡中,检查${username}是否被实际值替换。如果没有,检查CSV数据文件配置的路径和变量名。
    • JSON提取器失败:在“查看结果树”的“响应数据”选项卡中,确认返回的JSON结构,并调整JSON提取器的路径表达式。
  3. 调试无误后,禁用“查看结果树”。将脚本保存为.jmx文件。

5. 非GUI模式执行与结果分析:生产级压测的正确姿势

在GUI里点运行,只能叫“调试”。真正的性能测试必须在命令行(非GUI)模式下进行,以最小化客户端资源消耗,确保测试结果反映的是服务器端的真实性能。

5.1 命令行压测命令详解

打开命令行(CMD或PowerShell),切换到JMeter的bin目录下,执行以下格式的命令:

jmeter -n -t [测试脚本路径] -l [结果文件路径] -e -o [HTML报告输出目录]
  • -n:指定以非GUI模式运行。
  • -t:指定要运行的JMX测试脚本文件路径,例如D:\scripts\login_test.jmx。
  • -l:指定保存原始结果数据(.jtl文件)的路径,例如D:\results\20240527_result.jtl。
  • -e:测试结束后生成HTML报告。
  • -o:指定生成HTML报告的目录,此目录必须为空或不存在,例如D:\reports\html_report。

一个完整的例子:

jmeter -n -t D:\performance\user_login_test.jmx -l D:\performance\results\run01.jtl -e -o D:\performance\reports\html

执行后,控制台会输出实时进度。压测结束后,你会在D:\performance\reports\html目录下得到一个完整的、可视化的HTML报告。

5.2 解读聚合报告与HTML报告

聚合报告(Aggregate Report)是核心中的核心,你需要关注这几列:

  • Label:取样器名称。
  • # Samples:总请求数。
  • Average:平均响应时间(毫秒)。这是评估系统性能的首要指标之一。
  • Median:中位数响应时间,50%的请求响应时间低于此值。它比平均值更能抵抗异常值的影响。
  • 90% Line (95%, 99%):百分位响应时间。例如90% Line=1500ms,表示90%的请求响应时间在1500毫秒以内。这个指标对于评估用户体验至关重要(如“页面加载时间应满足P90<2秒”)。
  • Min/Max:最小/最大响应时间。Max值异常高可能意味着有某些请求卡住了。
  • Error %:错误率。任何非零的错误率都需要重点分析。
  • Throughput:吞吐量,通常指每秒完成的请求数(Requests per Second)。这是衡量系统处理能力的直接指标。
  • Received/Sent KB/sec:网络吞吐量。

HTML报告提供了更丰富的图表,如:

  • Over Time Charts:响应时间、吞吐量随时间变化的曲线。可以清晰看到系统在压力下的稳定性。
  • Throughput Vs Threads:吞吐量随并发用户数变化的曲线,用于寻找系统的最佳并发点和性能拐点。
  • Response Time Percentiles:响应时间百分位图。
  • Active Threads Over Time:活跃线程数(并发用户数)变化图。

5.3 分布式压测简介

当单台机器无法产生足够压力,或者需要模拟来自不同地理位置的用户时,就需要使用JMeter的分布式测试(Master-Slave模式)。

  1. Slave机(压力机):在所有Slave机上安装相同版本的JMeter和Java,并启动bin目录下的jmeter-server.bat(Windows)或jmeter-server(Linux/Mac)。
  2. Master机(控制机):在Master机的bin目录下,编辑jmeter.properties文件,找到remote_hosts配置项,添加所有Slave机的IP和端口(默认1099),例如:remote_hosts=192.168.1.101:1099,192.168.1.102:1099。
  3. 在Master机的GUI中,运行菜单选择“远程启动”即可。或者在非GUI模式下,使用-R参数指定Slave机列表:jmeter -n -t test.jmx -R 192.168.1.101,192.168.1.102 -l result.jtl。

重要提示:分布式测试涉及网络和防火墙配置,确保Master和Slave之间1099和其它自定义端口畅通。所有Slave机上的测试数据文件(如CSV)路径必须一致,或者使用共享网络路径。

6. 高级技巧与常见问题排查实录

掌握了基础,我们来看看那些能让你的测试更专业、更高效的技巧,以及如何解决那些令人头疼的常见问题。

6.1 参数化与关联的进阶用法

  • CSV数据文件设置的高级配置:
    • Recycle on EOF?:设为True,当读取到文件末尾时,从头开始循环。这在虚拟用户数大于数据行数时非常有用。
    • Stop thread on EOF?:设为True,当读取到文件末尾时,停止该线程。用于需要精确控制每个用户只使用一次数据的情况。
    • Sharing mode:共享模式。All threads:所有线程共享文件指针,数据不会重复。Current thread group:每个线程组独立。Current thread:每个线程独立,这是最常用的,确保每个虚拟用户使用独立的数据行。
  • 使用函数助手生成动态数据:JMeter内置了强大的函数,可以生成随机数、时间戳、UUID等。通过菜单“工具” -> “函数助手对话框”可以生成函数表达式,如${__Random(1000,9999,)}生成4位随机数,${__time()}获取时间戳。这些可以直接用在请求参数中。
  • 正则表达式提取器与JSON提取器的选择:对于HTML或非结构化文本,用“正则表达式提取器”。对于标准的JSON或XML响应,优先使用“JSON提取器”或“XPath提取器”,它们更精确、不易出错。

6.2 监听器资源消耗与优化策略

监听器是JMeter的资源消耗大户,不当使用会严重影响测试结果,甚至导致OOM(内存溢出)。

  • 生产压测监听器配置:
    1. 只保留“聚合报告”和“汇总报告”,并将它们配置为“仅日志错误”(在监听器的配置中勾选)。这样它们只记录错误样本的详情,大幅减少内存占用。
    2. 或者,完全不添加任何监听器,只通过命令行-l参数将原始数据写入.jtl文件。测试结束后,再用GUI打开一个空的测试计划,添加“聚合报告”,点击“浏览...”按钮导入.jtl文件进行分析。这是最推荐的方式。
  • 调整JTL文件内容:在jmeter.properties中,可以配置jmeter.save.saveservice.*系列属性,决定.jtl文件中保存哪些数据。例如,关闭保存响应数据、请求头等,可以极大减小文件体积。

6.3 典型问题排查清单

问题现象可能原因排查步骤与解决方案
JMeter启动报错:Not able to find Java executableJAVA_HOME环境变量未正确配置或JMeter版本与Java版本不兼容。1. 命令行输入echo %JAVA_HOME%检查路径。
2. 输入java -version确认版本。JMeter 5.4+ 需要Java 8+。
测试运行时,JMeter自身卡死或报OOM错误1. GUI模式下运行压测。
2. 启用了“查看结果树”或“保存响应数据”。
3. JVM堆内存设置过小。
1.永远在非GUI模式下进行压测。
2. 移除或禁用消耗资源的监听器。
3. 调整jmeter.bat中的HEAP参数,增加-Xmx值(如-Xmx4g),但不要超过物理内存的70%。
吞吐量(Throughput)很低,远低于预期1. JMeter所在机器(压力机)性能瓶颈(CPU、网络、端口耗尽)。
2. 脚本中使用了不必要的定时器或同步定时器。
3. 断言或后置处理器过于复杂。
1. 监控压力机资源使用率。考虑使用分布式压测。
2. 检查并调整定时器设置,移除“同步定时器”除非必要。
3. 简化断言逻辑,或使用“响应断言”而非“BeanShell断言”。
错误率突然飙升1. 被测服务器达到性能瓶颈(CPU、内存、数据库连接池满)。
2. 参数化数据重复导致业务冲突(如重复用户名注册)。
3. 服务器端会话(Session)或应用服务器线程池耗尽。
1. 同时监控服务器资源。观察错误发生时间点与服务器指标(如CPU、慢查询日志)的关联。
2. 检查CSV数据,确保关键业务数据唯一。
3. 检查脚本是否未正确处理Cookie/Session,导致大量无效会话。
响应时间随测试进行越来越长内存泄漏的典型表现。可能是服务器端应用内存泄漏,也可能是JMeter自身(如使用了不当的监听器)。1. 监控服务器JVM的堆内存使用曲线,看是否持续增长不回收。
2. 检查JMeter脚本,确保未在“用户定义的变量”中存储大量递增数据。
分布式测试中,Slave机报告“Connection refused”1. 防火墙阻止了1099端口。
2. Slave机的jmeter-server未成功启动。
3. Master机jmeter.properties中remote_hosts配置错误。
1. 检查防火墙设置,开放1099端口(或自定义的RMI端口)。
2. 登录Slave机,查看jmeter-server.log日志文件。
3. 在Master机上用telnet slave_ip 1099测试连通性。

6.4 一个容易被忽略的优化点:HTTP连接管理

在“HTTP请求”取样器的高级选项卡中,有一个“HTTP请求默认值”配置元件也有的部分:

  • 实现(Implementation):对于HTTP/1.1,保持默认的“HttpClient4”即可。对于HTTP/2测试,需要选择“HttpClient4”并勾选“Use HTTP/2 Protocol”。
  • 连接(Connect Timeout)和响应超时(Response Timeout):根据你的网络情况和服务器性能设置合理的值(如5000ms)。设置太短会导致大量超时错误,太长则会在服务器无响应时长时间等待。
  • Use KeepAlive:通常勾选,复用TCP连接,这能显著提升压测效率,更贴近真实浏览器行为。
  • 从HTML文件获取所有内含资源:性能测试时务必取消勾选!这个选项会让JMeter解析HTML并下载其中的图片、JS、CSS,这完全改变了测试的性质,从API测试变成了网页爬虫,会得到毫无意义的性能数据。

设计一个可靠的JMeter性能测试脚本,其核心思想是“控制变量”和“贴近真实”。一开始不要追求复杂的场景,从一个简单的接口、合理的并发数开始,确保你的脚本本身是正确、高效的。然后,像剥洋葱一样,逐步增加并发、延长时长、混合业务场景,同时密切观察服务器和压力机自身的监控指标。性能测试的本质是一个发现系统瓶颈的过程,而一个好的JMeter脚本,就是你手中最精准的探测仪。最后记住,任何监听器在正式压测时都可能成为瓶颈,养成用命令行执行、用聚合报告和HTML报告分析的习惯,是走向专业性能测试工程师的关键一步。

相关新闻

  • python爬虫实战项目|第71篇:实时数据流处理架构
  • 角色、人气及角色转变
  • RoboBPP:机器人装箱物理仿真基准测试系统解析

最新新闻

  • 微信数据恢复终极指南:3步解密你的珍贵聊天记录
  • GEC6818开发板:从核心特性到多领域应用实战解析
  • 微信小程序自动化反编译与实时监控打包方案
  • 更换 Kingbase V9 License 踩坑记
  • 2026潮州黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • 大模型MoE架构揭秘:稀疏激活与专家路由的工程真相

日新闻

  • ENVI5.3.1实战:基于Landsat 8影像的区域无缝镶嵌与精准裁剪
  • 3步完成HS2-HF Patch安装:新手快速打造完美HoneySelect2体验
  • 微信好友检测终极指南:3分钟发现谁已悄悄删除你

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号