多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

AI服务器质量测试大纲V0.3解读:115项测试与送测checklist

AI服务器质量测试大纲V0.3解读:115项测试与送测checklist 简介这份《AI服务器产品质量测试大纲》面向AI服务器研发、测试工程师及国产化AI加速卡相关从业者用于解决产品从硬件到软件缺乏系统性质量验证依据的问题。文档围绕一致性核查、环境适应性、电磁兼容、功能、易用性、维护性、可靠性、兼容性以及训练与推理性能测试等模块展开并给出被测样品要求、测试依据、测试环境与测试方法等完整框架可帮助读者快速建立覆盖全流程的测试思路。资源包共1个docx文件约52KB内容以测试大纲与条目化要求为主便于按章节查阅和二次编辑。目前已有595人学习下载适合需要制定测试方案、梳理验证项或对照查漏补缺的测试与质量人员参考。1. 从一份意见稿 V0.3 说起AI 服务器质量测试到底测什么很多团队第一次拿到 AI 服务器送测任务时第一反应是「跑个 ResNet50 看吞吐不就完了」。真到第三方测试机构现场才发现光「一致性核查」这一项就要抄录 CPU 型号主频核数、内存品牌型号类型条数单条容量插槽数、硬盘品牌型号接口类型容量、加速计算芯片类型个数内存信息、网卡品牌型号传输速率、主板品牌型号、RAID 卡型号类型、整机电源型号额定功率、BMC 与 BIOS 固件厂商版本、操作系统厂商版本、加速芯片驱动固件版本、AI 框架名称版本——十几项配置信息一项都不能漏。这份《AI 服务器产品质量测试大纲》意见稿 V0.3 就是干这个的它把从加电到性能测试的全流程拆成 115 个测试项覆盖一致性核查、环境适应性、电磁兼容、功能、易用性、维护性、可靠性、兼容性、训练性能、推理性能十个维度适用于第三方测试机构开展产品质量测试也适用于产品厂商开展内测。如果你正在做国产化 AI 加速卡的整机适配、准备送测或者要给团队搭一套内测流程这份大纲能直接当 checklist 用。2. 送测前必须对齐的三件事样品要求、引用标准与测试环境2.1 被测样品与陪测设备的硬性门槛大纲第二章把送测主体和样品要求写得很死。产品厂商是送测主体送测时要附带测试环境说明送测单位对送测样品负责。被测样品中所有选用的产品应为正式设计定型或发布的产品需要提供自主知识产权证明并加盖送测单位公章。送测时还要提交整机 3C 测试报告、节能证书及其测试报告以及第三方机构平均无故障运行时间测试报告——这份 MTBF 报告要按 GB/T 9813.3 测试方法执行MTBF 时间不低于 10000 小时且盖 CNAS、CMA 章。整机服务器与操作系统视为一个组合进行送测不能拆开单独送。被测样品送测前厂商要基于本大纲先做自测送测时提交带产品自测结果的自测报告、测试用例测试样本、测试脚本、测试数据。配套陪测设备由送测单位提供包括网线等所需的交换机也要一并提供送测单位对配套陪测设备负责。提示MTBF 报告是很多厂商容易翻车的地方。盖 CNAS、CMA 章意味着报告必须出自有资质的第三方机构厂商自己实验室出的报告不认。建议提前两个月启动 MTBF 测试排期。2.2 测试依据与引用文件清单大纲第三章列出的测试依据和引用文件是整份文档的合规底座送测前建议逐条核对版本号是否现行有效编号名称版本号发布日期1GB 9813.3-2017《计算机通用规范 第3部分服务器》20172017.05.312GB18030-2005《信息技术中文编码字符集》20052005.11.083GB/T 25645-2010 中文 Linux 服务器操作系统技术要求2010—4GB/T 32394-2015 中文 Linux 操作系统运行环境扩充要求2015—5信息技术 人工智能 术语20190851-T-469—环境适应性测试大量引用 GB/T 9813.3-2017 的具体条款比如工作温度下限试验按条款 5.8.2.1、贮存运输温度下限按 5.8.2.2、工作温度上限按 5.8.3.1、恒定湿热按 5.8.4.1、振动按 5.8.5、冲击按 5.8.6、运输包装件碰撞按 5.8.7、跌落按 5.8.8。电磁兼容测试则引用 GB/T 17618-2015静电放电抗扰度看条款 4.2.1、电快速瞬变脉冲群看 4.2.2、浪涌冲击看 4.2.5测试等级及判定要求统一看条款 10。2.3 测试环境的搭建逻辑大纲第四章把测试环境归为硬件环境、软件环境、其它三类配置是 AI 服务器加操作系统采用服务器单机测试模式。测试方法在第五章说得很清楚功能性测试集中在被测应用系统的功能是否有缺失、核心功能是否可正常使用、业务流程是否能走通效率测试主要考察被测设备推理或者训练的吞吐率兼容性测试侧重对各种外设及模型的兼容情况。实际搭建时我一般会先把 BMC 管理网口单独接一条网线到管理交换机业务网口接另一台交换机避免带外管理和业务流量互相干扰。操作系统安装方式按大纲要求覆盖 USB 方式和 PXE 方式安装介质要覆盖 SATA/SAS、RAID 等不同类型。测试前把固件版本、驱动版本、AI 框架版本全部记录在案后面出问题时才有对照基线。3. 一致性核查与环境适应性115 项里最容易被低估的两块3.1 一致性核查测试的抄录项与接口检查一致性核查测试分四组加电测试、外特性检查、基本配置检查、接口配置检查。加电测试只有一项——设备加电后正常启动到操作系统。外特性检查记录机箱长宽高和主机重量。基本配置检查是重头戏从 CPU 配置到 AI 框架信息共 12 项其中 RAID 卡为选测项AI 框架信息仅训练服务器适用。接口配置检查有 7 项覆盖 USB 接口、显示接口、以太网接口、管理网口、PCI-E 扩展槽、电源接口、串口每一项都要记录数量、类型、接口功能正确性以太网接口和管理网口还要记录接口速率。# 在 Linux 下抄录 CPU 信息型号、主频、核数 lscpu | grep -E Model name|CPU MHz|CPU\(s\) # 抄录内存信息品牌、型号、类型、条数、单条容量、插槽数 dmidecode -t memory | grep -E Manufacturer|Part Number|Type|Size|Locator # 抄录硬盘信息品牌、型号、接口类型、容量 lsblk -d -o NAME,MODEL,TRAN,SIZE # 抄录网卡信息品牌、型号、传输速率 lspci | grep -i ethernet ethtool eth0 | grep -E Speed|Duplex这几条命令的逻辑很直接lscpu拿 CPU 型号主频核数dmidecode -t memory逐条读内存槽位的品牌型号类型容量lsblk列出块设备型号接口类型容量lspci配合ethtool拿网卡品牌型号和协商速率。参数上注意dmidecode需要 root 权限lsblk的TRAN字段能区分 SATA、SAS、NVMe 等接口类型。加速计算芯片信息通常用厂商自带的nvidia-smi或对应国产卡的xxx-smi工具抄录记录芯片类型、个数、内存信息。3.2 环境适应性测试的严酷程度与波动值计算环境适应性测试共 17 项序号 22 到 38分气候环境试验和机械环境试验两大类。气候类包括工作温度下限、贮存运输温度下限、工作温度上限、贮存运输温度上限、工作条件下的恒定湿热、贮存运输条件下的恒定湿热机械类包括振动、冲击、运输包装件碰撞、运输包装件跌落。此外还有功耗测试、噪声测试、电源适应能力试验、产品安全认证检查、节能检查、平均无故障时间检查、气候环境适应性。温度试验按 GB/T 2423.1「试验 Ad」和 GB/T 2423.2「试验 Bd」进行受试样品须进行初始检测检查外观和结构以及开机启动是否正常工作。严酷程度取表 1 规定的工作温度上下限值加电运行工作 2h受试样品应工作正常恢复时间 2h 后再做外观结构检查和开机启动检查。恒定湿热试验按 GB/T 2423.3「试验 Ca」进行严酷程度取温度40±2℃、相对湿度93±3%加电运行 2h恢复 2h 后同样检查。表 1 边缘 AI 服务器工作温度分了四个类别原文中部分表达式有误从上下文推断应为类别工作温度下限℃工作温度上限℃I045II-1055III-2560IV-4070性能波动值计算是环境试验的关键指标。测试项目序号 11-13固件、操作系统、加速芯片软件信息在序号 1-6 样机开始试验前测 1 次、全部完成后再测 1 次计算气候环境试验前后的性能波动值在序号 7-10 样机开始试验前测 1 次、全部完成后再测 1 次计算机械环境试验前后的性能波动值。波动值公式为 C data2 / data1 × 100%。注意波动值公式里 data1 是试验前数据、data2 是试验后数据算出来是百分比。如果 data2 明显低于 data1说明环境试验对性能有影响需要排查散热或结构设计。3.3 电磁兼容测试的三个抗扰度项电磁兼容测试只有三项但都是硬骨头。静电放电抗扰度测试样品遭受直接来自操作者和对邻近物体的静电放电时的性能按 GB/T 17618-2015 条款 4.2.1 方法测试。电快速瞬变脉冲群抗扰度评估样品供电电源端口、信号、控制和接地端口在受到电快速瞬变脉冲群时的性能按条款 4.2.2 方法测试。浪涌冲击抗扰度测试样品对有开关和雷电瞬变过电压引起的单极性浪涌冲击的抗扰度按条款 4.2.5 方法对样品电源端口进行测试。三项的测试等级及判定要求都依照 GB/T 17618-2015 条款 10。实操中静电放电测试最容易出问题的是机箱缝隙和接口金属裸露部分。我一般会在测试前先用铜箔胶带把非测试区域做好防护避免放电枪打到不该打的地方导致误判。电快速瞬变脉冲群测试时电源线和信号线要分开走线耦合夹的位置按标准要求摆放否则重复性很差。4. 功能、维护性与可靠性从 BIOS 到 BMC 的逐项验证4.1 功能测试的三层结构功能测试分基本功能、BIOS 固件测试、BMC 设备管理三块。基本功能有 13 项序号 42 到 55覆盖操作系统安装、硬开关重启、键盘字符操作、键盘功能切换、鼠标移动操作、鼠标按键功能、创建硬盘分区、删除硬盘分区、硬盘分区格式化、创建逻辑卷、删除逻辑卷、RAID 测试、设备属性、设备识别和安装卸载。操作系统安装要支持磁盘分区、口令设置等基本功能配置安装方式为 USB 或 PXE要覆盖 SATA/SAS、RAID 等不同可启动介质。RAID 测试分别按 RAID0、RAID1、RAID5、RAID10 方式部署单机测试环境属选测项。BIOS 固件测试有 11 项序号 56 到 66包括基本信息、启动管理、安全管理、文件系统、系统安装、USB 外设、PCI/PCIE、电源管理、固件更新、恢复出厂设置、SMBIOS 支持。文件系统要求固件至少支持 FAT32、Ext3、Ext4、ISO9660 中的两种。SMBIOS 支持要求通过操作系统中 DMI decode 工具查看 SMBIOS 中的信息。# 查看 SMBIOS 信息验证 BIOS 固件对 SMBIOS 的支持 dmidecode -t 0 # BIOS 信息 dmidecode -t 1 # 系统信息 dmidecode -t 2 # 主板信息 dmidecode -t 3 # 机箱信息 dmidecode -t 4 # 处理器信息 dmidecode -t 16 # 物理内存阵列 dmidecode -t 17 # 内存设备 # 查看 BMC 固件版本以 IPMI 为例 ipmitool mc info ipmitool fru printdmidecode -t后面跟类型编号0 是 BIOS、1 是系统、2 是主板、3 是机箱、4 是处理器、16 是物理内存阵列、17 是内存设备。ipmitool mc info读 BMC 管理控制器信息ipmitool fru print读现场可替换单元信息能拿到 BMC 固件版本和硬件序列号。参数上注意ipmitool需要加载ipmi_devintf和ipmi_si内核模块本地操作要 root 权限。4.2 BMC 设备管理的 28 项验证要点BMC 设备管理是功能测试里最厚的一块从序号 67 到 94 共 28 项。核心验证点包括通过管理网口对服务器进行管理、支持标准 IPMI 2.0 协议和 SNMP 协议、支持下载 BMC 管理固件、检查记录 BMC 管理固件版本信息、BMC 管理界面支持中文化、BMC 管理模块支持独立于服务器和管理界面单独重新启动、日志功能测试、硬件告警功能测试、运维管理测试、远程管理测试、虚拟媒体测试、硬件远程管理安全性测试、服务器温度监控、数据读取、外部管理、BMC 固件恢复出厂。其中几个容易忽略的点BMC 管理模块要能通过重启等方式独立于服务器和管理界面单独重新启动不需要重启整个服务器或者断开电源输入硬件告警要能通过服务器指示灯或声音告警BMC 管理固件界面要显示告警信息且能显示告警等级运维管理要支持通过 IPMI2.0 接口远程开启、关闭、重启服务器并查询当前服务器开机运行状态支持通过 IPMI2.0 或 SNMP Trap 接口主动提示故障并通过接口读取服务器故障信息支持风扇转速设置和监控支持通过 BMC 管理软件实现服务器定位。# 通过 IPMI 远程开关机和状态查询 ipmitool -I lanplus -H BMC_IP -U user -P pass power status ipmitool -I lanplus -H BMC_IP -U user -P pass power on ipmitool -I lanplus -H BMC_IP -U user -P pass power off ipmitool -I lanplus -H BMC_IP -U user -P pass power reset # 读取传感器数据温度、风扇、电压 ipmitool -I lanplus -H BMC_IP -U user -P pass sdr list ipmitool -I lanplus -H BMC_IP -U user -P pass sensor list # 读取系统事件日志 ipmitool -I lanplus -H BMC_IP -U user -P pass sel list-I lanplus指定 IPMI 2.0 的 LAN 接口-H是 BMC 管理 IP-U和-P是用户名密码。power status查当前电源状态power on/off/reset分别执行开机、关机、重启。sdr list和sensor list读传感器数据能拿到主板温度、CPU 温度、AI 芯片温度、风扇转速、电压等。sel list读系统事件日志验证日志功能是否正常。参数上注意lanplus比lan更安全支持加密传输但需要 BMC 固件支持 IPMI 2.0。4.3 维护性与可靠性测试的量化指标维护性测试有 8 项序号 97 到 102包括系统性能监控、系统日志管理与维护、指示灯检查、故障报警、风扇热插拔、上架方式。系统性能监控要支持监控进程占用的物理内存总数量、共享内存数量、进程状态、CPU 使用率、内存使用率。故障报警要在非正常状态下提供故障告警机制记录内存、硬盘、电源、网卡、风扇等支持故障报警的部件。风扇热插拔要求热插拔后其他风扇转速自动调整。可靠性测试有 8 项序号 103 到 110量化指标很具体开关机测试整机 100 次开关机后设备正常运行强制关机测试强制关机 30 次后设备正常运行稳定性测试被测设备长时间运行 AI 芯片压力软件 7 天测试过程中被测设备应工作正常IO 访问压力测试整机在 500MB、1GB 和 3GB 文件拷贝、创建、压缩、解压的健壮性循环多次每次停顿 1 分钟并做内存刷新操作熔断保护测试整机在 AI 芯片达到告警值时支持熔断外设的准确识别利用 USB 鼠标、USB 键盘、USB 光驱、U 盘等热插拔设备在多种状态下反复热插拔 30 次用户切换响应能力创建多个用户多用户之间随机相互切换切换过程中系统运行正常无黑屏卡屏花屏现象网络模块响应能力网卡禁用启用反复 30 次后网络识别率不低于 95%、识别时间不超过 1 分钟在 CPU 内存网络负载条件下网络接口反复插拔 30 次后同样要求识别率不低于 95%、识别时间不超过 1 分钟。# 开关机测试脚本示例循环 100 次 for i in $(seq 1 100); do echo 第 $i 次开关机测试 ipmitool -I lanplus -H BMC_IP -U user -P pass power off sleep 30 ipmitool -I lanplus -H BMC_IP -U user -P pass power on sleep 60 # 检查系统是否正常启动 ping -c 3 OS_IP || echo 第 $i 次启动异常 done # IO 访问压力测试500MB、1GB、3GB 文件拷贝创建压缩解压 for size in 500M 1G 3G; do dd if/dev/zero of/tmp/testfile_$size bs1M count$(echo $size | tr -d MG) cp /tmp/testfile_$size /tmp/testfile_${size}_copy tar czf /tmp/testfile_$size.tar.gz /tmp/testfile_$size tar xzf /tmp/testfile_$size.tar.gz -C /tmp/ rm -f /tmp/testfile_$size /tmp/testfile_${size}_copy /tmp/testfile_$size.tar.gz sleep 60 # 每次停顿 1 分钟 sync echo 3 /proc/sys/vm/drop_caches # 内存刷新 done开关机脚本用ipmitool power off/on控制电源每次关机后等 30 秒、开机后等 60 秒再检查系统是否可达。IO 压力脚本用dd生成指定大小文件cp拷贝、tar压缩解压每次操作后停顿 60 秒并用drop_caches做内存刷新。参数上注意dd的bs1M和count配合控制文件大小drop_caches需要 root 权限。5. 性能测试与问题分级训练/推理吞吐率怎么测、问题怎么定级5.1 训练服务器性能测试的模型与公式训练服务器性能测试有两项序号 112、113。ResNet50 训练性能验证 ResNet50 在 ImageNet 数据集上单加速器训练的吞吐率images/s和整机数据并行训练的吞吐率images/s。YOLOv3-Darknet53 验证 YOLOv3-Darknet53 在 COCO 数据集上进行多尺度训练单加速器训练的吞吐率images/s和整机数据并行训练的吞吐率images/s。训练吞吐率公式训练吞吐率 (1 / 平均每迭代端到端训练时间) × 迭代的总 batch size单位 images/s。迭代端到端训练时间包含从数据读取、数据预处理、前反向计算到参数更新的端到端时间总 batch size 为参与分布式训练的各加速器的 batch size 之和。# 训练吞吐率计算示例 import time def compute_train_throughput(iter_times, total_batch_size): iter_times: 每次迭代的端到端时间列表秒 total_batch_size: 参与分布式训练的各加速器 batch size 之和 avg_iter_time sum(iter_times) / len(iter_times) throughput (1.0 / avg_iter_time) * total_batch_size return throughput # 假设 8 卡训练每卡 batch size 32总 batch size 256 # 平均每迭代端到端时间 0.5 秒 iter_times [0.48, 0.52, 0.49, 0.51, 0.50] throughput compute_train_throughput(iter_times, 256) print(f训练吞吐率: {throughput:.2f} images/s)这段代码的逻辑是先算平均每迭代端到端时间再用 1 除以它得到每秒迭代次数乘以总 batch size 得到吞吐率。参数上iter_times要包含数据读取、预处理、前反向、参数更新的完整时间不能只算计算时间。total_batch_size是各加速器 batch size 之和8 卡每卡 32 就是 256。5.2 推理服务器性能测试的精度与公式推理服务器性能测试有两项序号 114、115。ResNet50 推理性能验证 ResNet50模型输入通道数为 3输入分辨率为 224×224在 ImageNet 数据集上单加速卡、整机推理的吞吐率images/s。YOLO v3 推理性能验证 YOLO v3模型输入通道数为 3输入分辨率为 416×416在 COCO 数据集上单加速卡、整机推理的吞吐率images/s。推理测试有两个注注 1 是针对 FP16、BF16、INT16、INT8 其中的一种或多种精度进行测试注 2 是推理吞吐率 (1 / 平均每个 batch 纯推理时间) × batch size单位 images/s纯推理时间不包含图片读取和预处理时间。# 推理吞吐率计算示例 def compute_infer_throughput(batch_times, batch_size): batch_times: 每个 batch 的纯推理时间列表秒 batch_size: 每个 batch 的图片数量 avg_batch_time sum(batch_times) / len(batch_times) throughput (1.0 / avg_batch_time) * batch_size return throughput # 假设 batch size 64纯推理时间 0.02 秒 batch_times [0.019, 0.021, 0.020, 0.020, 0.020] throughput compute_infer_throughput(batch_times, 64) print(f推理吞吐率: {throughput:.2f} images/s)推理吞吐率的关键在于「纯推理时间」——不包含图片读取和预处理。实操中我一般会先把数据预加载到内存或显存用 CUDA Event 或time.perf_counter()卡在模型 forward 前后排除数据加载的干扰。精度方面FP16 和 INT8 的吞吐率差异可能很大测试报告里要注明用的哪种精度。5.3 问题等级分类与终止条件大纲第八章把问题分四级。致命性问题导致测试工作无法继续的问题如设备无法加电启动、设备宕机或异常重启、零部件损坏等。严重性问题在测试工作可继续的情况下出现影响系统功能或操作的问题如功能缺失、系统还原结束后系统崩溃、关键服务如网络服务失败、接口失败、AI 芯片无熔断机制等。一般性问题不影响设备的正常使用、可通过其他操作避免的问题如特定条件下的功能失效、零部件故障无明显提示、BMC 管理界面阈值无法设置等。建议性问题仅对易用性有影响的问题如用户手册说明描述不清楚、指示灯提示异常等。终止条件分正常和异常。正常终止是按测试大纲要求完成所规定的测试或送测方提出终止。异常终止是若出现安装部署问题、或重要功能项缺失、或系统不稳定影响测试工作、或致命问题等重大错误无法继续测试。一致性要求方面如服务器整机的内存或硬盘数量发生变化在保证稳定与兼容的前提下经与第三方测试机构协商一致后可视为同一型号设备。这条对厂商很实用——内存硬盘数量微调不用重新送测整机但前提是稳定与兼容且要跟测试机构协商。6. 把大纲变成可执行 checklist我的内测流程与三个硬习惯6.1 从大纲到测试用例的映射方法大纲给了 115 个测试项但直接拿去测容易漏。我的做法是先建一张映射表把每个测试项映射到具体的测试用例、测试脚本、预期结果和判定标准。比如序号 42「操作系统安装」映射到「USB 安装 CentOS 7.9 到 RAID5 阵列」和「PXE 安装 Ubuntu 20.04 到 SATA 盘」两个用例序号 103「开关机测试」映射到「IPMI 循环开关机 100 次脚本」序号 112「ResNet50 训练性能」映射到「8 卡数据并行训练 ImageNet记录吞吐率」。映射表建好后按测试项编号顺序执行每完成一项就在表里标记通过/失败/阻塞。失败项记录现象、复现步骤、日志按第八章的问题等级分类定级。阻塞项如果是致命性问题直接触发异常终止条件。6.2 三个硬习惯第一个习惯送测前自测必须走完整流程。大纲第二章明确要求厂商送测前基于本大纲自测并提交自测报告、测试用例测试样本、测试脚本、测试数据。我见过太多团队自测只跑性能项到第三方机构现场才发现 BMC 管理界面中文化没做、日志导出功能没实现、风扇热插拔后转速不自动调整。自测报告里每一项都要有结果不能留空。第二个习惯固件和驱动版本全部冻结。测试过程中如果 BMC 固件、BIOS 固件、加速芯片驱动、AI 框架版本发生变更之前测过的项要重测。我一般会在测试启动前把所有固件和驱动版本记录在案测试期间禁止任何版本变更。如果必须变更变更后从一致性核查开始重测。第三个习惯环境试验前后各跑一次性能基线。大纲要求序号 11-13 在气候环境试验前后各测一次、序号 7-10 在机械环境试验前后各测一次计算波动值。我一般会把性能基线测试脚本化环境试验前跑一遍存数据环境试验后跑一遍存数据自动算波动值。波动值超过 5% 就要排查原因是散热问题还是结构松动。6.3 一个具体的验证技巧用 IPMI 日志做时间线回溯测试过程中出问题时BMC 的 SEL 日志是最好的时间线证据。我一般会在测试开始前清空 SEL测试过程中定期ipmitool sel list导出日志测试结束后把 SEL 日志和测试用例执行时间对齐就能看出问题发生的时间点前后 BMC 记录了什么事件。# 清空 SEL 日志 ipmitool -I lanplus -H BMC_IP -U user -P pass sel clear # 导出 SEL 日志到文件 ipmitool -I lanplus -H BMC_IP -U user -P pass sel list sel_log.txt # 查看 SEL 日志的时间范围和事件类型 ipmitool -I lanplus -H BMC_IP -U user -P pass sel elistsel clear清空日志sel list列出日志sel elist列出扩展日志包含传感器读数。参数上注意sel clear会清掉历史记录测试前清一次就行测试过程中不要清。sel elist比sel list多传感器信息排查温度告警时更有用。从那以后我每次送测前都强制走一遍「自测报告逐项核对 固件版本冻结 环境试验前后性能基线」这三步再没出现过到现场才发现漏测的情况。希望帮到你。本文还有配套的精品资源点击获取
返回列表