AI 实践探索:辅助生成测试用例
背景
目前我们的测试用例主要依赖人工生成和维护,AI时代的来临,我们也在思考“AI如何赋能业务”,提出了如下命题:
“探索通过AI辅助生成测试用例,完成从需求到测试用例生成的穿刺”。
目标
- 找全测试路径
- 辅助生成测试用例
实践案例:登录注册流程
自然语言描述需求
需求名称:注册登录流程
需求描述:
1、注册和登录在同一个页面,有2个按钮,一个注册,一个登录,用户输入用户名、密码进行登录或者注册
2、首页:加载一张图,有个退出按钮,点击则退出首页
注:这里只是为了验证思路,需求描述会比较简单,实际需求考虑会更完善。
如何找全测试路径
使用LLM生成mermaid格式的状态机描述
使用Dify 搭建的工作流:
将前面的需求描述作为输入参数,提供Prompt模板告诉LLM,如下所示:
LLM 生成的mermaid 状态机描述:
stateDiagram-v2[*] --> UnregisteredUnregistered --> Registering: start_registerRegistering --> Unregistered: register_failedRegistering --> LoggingIn: register_successUnregistered --> LoggingIn: start_loginLoggingIn --> Unregistered: login_failedLoggingIn --> LoggedIn: login_successLoggedIn --> Unregistered: logoutLoggedIn --> [*]: exit
Markdown对mermaid支持友好,可以直接渲染成状态机图:
这里选择Mermaid来描述状态机的理由,主要是Mermaid天然适合文档化,代码轻量且无额外依赖,无需处理图片格式的一些问题。
参考:AI大模型生成的图表为什么倾向使用Mermaid格式?
使用AI帮我们开发工具
前面通过LLM能够帮我们理解需求生成状态机图,如果想基于状态机找全测试路径,我们尝试使用AI编程工具来辅助生成规则工具,来确保每次遍历的路径是一致的。
比如Cursor:
通过多轮的对话和人工修正,Cursor能够很高效的帮助我生成符合预期的代码,但仍需要人工去验证和调试。
核心路径生成算法:
from typing import List, Dict, Set
from abc import ABC, abstractmethodclass PathGeneratorBase(ABC):def __init__(self):self.graph = {}self.paths = []self.events = {}@abstractmethoddef parse_input(self):"""解析输入源(Mermaid或SCXML)"""passdef generate_paths(self, max_depth: int = 15) -> List[List[str]]:"""通用的路径生成算法"""paths = []start = self._find_start_state()visited_states = set()def dfs(current: str, path: List[str]):if len(path) > max_depth:returncurrent_transitions = self._get_transitions(current)if self._should_terminate(current, path, current_transitions):paths.append(path[:])returnvisited_states.add(current)for next_state in current_transitions:dfs(next_state, path + [next_state])visited_states.remove(current)dfs(start, [start])return self._deduplicate_paths(paths)def _find_start_state(self) -> str:"""查找起始状态"""if 'START' in self.graph:return 'START'in_degrees = self._calculate_in_degrees()for node, degree in in_degrees.items():if degree == 0:return nodereturn Nonedef _get_transitions(self, state: str) -> List[str]:"""获取状态的所有可能转换"""if state not in self.graph:return []return [target for target in self.graph[state]]def _should_terminate(self, current: str, path: List[str], transitions: List[str]) -> bool:"""判断是否应该终止当前路径"""return len(path) > 1 and (not transitions or current in path[:-1])def _deduplicate_paths(self, paths: List[List[str]]) -> List[List[str]]:"""去除重复路径"""unique_paths = []path_strings = set()for path in sorted(paths, key=len):path_str = "->".join(path)if path_str not in path_strings:path_strings.add(path_str)unique_paths.append(path)return unique_pathsdef calculate_coverage(self) -> Dict:"""计算测试覆盖率"""all_states = set(self.graph.keys())all_transitions = set()covered_states = set()covered_transitions = set()for path in self.paths:covered_states.update(path)for i in range(len(path) - 1):transition = (path[i], path[i + 1])covered_transitions.add(transition)all_transitions.add(transition)return {"state_coverage": len(covered_states) / len(all_states) * 100,"transition_coverage": len(covered_transitions) / len(all_transitions) * 100}
根据路径生成算法遍历生成的路径索引:
如何生成测试用例
用例关键要素
- 前置条件:描述复现测试场景所需的条件;
- 操作步骤:描述测试场景下用户的操作行为;
- 预期结果:描述测试场景下,用户执行完操作预期得到的结果。
示例:
场景 | 前置条件 | 操作步骤 | 预期结果 |
---|---|---|---|
银行卡支付场景 | 用户已绑定有效银行卡 | 在收银台选择银行卡支付 | 显示支付成功页面,账户余额减少相应金额 |
LLM 生成测试用例
工作流设计:
- 输入需求描述和测试路径
- 设计prompt提示词,要求LLM按固定格式输出测试用例
生成的测试用例结果示例:
[{"precondition": "用户未注册,系统处于未登录状态","operation_procedure": ["1. 访问系统首页","2. 输入用户名:a1_(3字符)","3. 输入密码:Passw0rd!","4. 点击'注册'按钮"],"expected_result": ["注册失败,提示'用户名长度需在4-20字符之间'","页面停留在注册/登录页面"]},{"precondition": "用户未注册,系统处于未登录状态","operation_procedure": ["1. 访问系统首页","2. 输入用户名:existing_user","3. 输入密码:Passw0rd!","4. 点击'注册'按钮","5. 再次输入相同用户名和密码点击'注册'按钮"],"expected_result": ["第二次注册时提示'用户名已存在'","页面停留在注册/登录页面"]},{"precondition": "用户未注册,系统处于未登录状态","operation_procedure": ["1. 访问系统首页","2. 输入用户名:user😊name","3. 输入密码:Passw0rd!","4. 点击'注册'按钮"],"expected_result": ["注册失败,提示'用户名包含非法字符'","页面停留在注册/登录页面"]},{"precondition": "用户未注册,系统处于未登录状态","operation_procedure": ["1. 访问系统首页","2. 输入不存在的用户名:new_user","3. 输入错误密码:wrongPass","4. 点击'登录'按钮"],"expected_result": ["登录失败,提示'用户名或密码错误'","页面停留在注册/登录页面"]},{"precondition": "用户已注册,系统处于未登录状态","operation_procedure": ["1. 访问系统首页","2. 输入已注册用户名:valid_user","3. 输入正确密码:Passw0rd!","4. 点击'登录'按钮"],"expected_result": ["登录成功,跳转至带图片的首页","页面显示退出按钮"]},{"precondition": "新用户完成注册,系统处于未登录状态","operation_procedure": ["1. 访问系统首页","2. 输入符合要求的用户名:new_user_123","3. 输入符合要求的密码:Passw0rd!","4. 点击'注册'按钮","5. 使用相同凭证点击'登录'按钮"],"expected_result": ["注册成功后自动清除表单","登录成功跳转至首页"]},{"precondition": "用户已登录,处于首页","operation_procedure": ["1. 点击'退出'按钮"],"expected_result": ["返回注册/登录页面","用户会话终止"]},{"precondition": "用户未注册,系统处于未登录状态","operation_procedure": ["1. 访问系统首页","2. 输入有效用户名:valid_user","3. 输入无效密码:password","4. 点击'注册'按钮"],"expected_result": ["注册失败,提示'密码需包含大写字母、小写字母、数字和特殊字符'","页面停留在注册/登录页面"]}
]
这里可以进一步将json数据转成xmind或excel格式的文件。
收益
价值思考? 几个方向:
- AI辅助建模(状态机、类图),提升研发需求建模效率和规范
- 释放助理生成测试用例的生产力,转变为review/修改用例的角色
- AI辅助生成符合业务规则的可测试数据,提升构造数据的效率
经验总结
- 使用AI帮助我们进行自然语言推理和图解析
- 要让AI生成的测试用例更准确,需要精确描述需求,对需求进行建模,描述清楚业务规则
- 使用AI编程工具帮助我们开发工具,比如有明确规则的工具开发
- 通过搭建AI工作流完成需求穿刺
附录
- Dify文档: https://docs.dify.ai/zh-hans
相关文章:
AI 实践探索:辅助生成测试用例
背景 目前我们的测试用例主要依赖人工生成和维护,AI时代的来临,我们也在思考“AI如何赋能业务”,提出了如下命题: “探索通过AI辅助生成测试用例,完成从需求到测试用例生成的穿刺”。 目标 找全测试路径辅助生成测…...
2025年链游行业DDoS与CC攻击防御全解析:高带宽时代的攻防博弈
2025年,链游行业在元宇宙与Web3.0技术的推动下迎来爆发式增长,但随之而来的DDoS与CC攻击也愈发猖獗。攻击者瞄准链游的高频交易接口、NFT拍卖系统及区块链节点,通过混合型攻击(如HTTP FloodUDP反射)瘫痪服务࿰…...
LeetCode热题100--73.矩阵置零--中等
1. 题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示例 2ÿ…...
51camera将参加第九届沥青路面论坛暨新技术新成果展示会
51camera志强视觉 51camera即将参加第九届沥青路面论坛暨新技术新成果展示会,届时会有相关动态应用展示,欢迎广大客户朋友莅临参观。 会议时间:2025 年5月16日-18日 会议地点:长沙国际会议中心一层多功能厅1-6厅(长…...
python 闭包获取循环数据经典 bug
问题代码 def create_functions():functions []for i in range(3):# 创建一个函数,期望捕获当前循环的i值functions.append(lambda: print(f"My value is: {i}"))return functions# 创建三个函数 f0, f1, f2 create_functions()# 调用这些函数 f0() # 期望输出 &…...
Java的HashMap面试题
目录 1. 说一下HashMap的工作原理?(1.7和1.8都是) 2. 了解的哈希冲突解决方法有哪些 3. JAVA8的 HashMap做了哪些优化 4. HashMap的数组长度必须是 2 的 n 次方 5. HashMap什么时候引发扩容 5.1 数组容量小于64的情况: 5.2…...
spring4.x详解介绍
一、核心特性与架构改进 全面支持Java 8与Java EE 7 Spring 4.x首次实现对Java 8的完整支持,包括: Lambda表达式与Stream API:简化代码编写,提升函数式编程能力; 新的时间日期API(如LocalDate、LocalTime&…...
从图灵机到量子计算:逻辑可视化的终极进化
一、图灵机:离散符号系统的奠基者 1.1 计算理论的数学根基 1936 年,艾伦・图灵在《论可计算数及其在判定问题中的应用》中提出的图灵机模型,本质上是一个由七元组\( M (Q, \Sigma, \Gamma, \delta, q_0, q_{accept}, q_{reject}) \)构成的…...
Python初学者笔记第九期 -- (列表相关操作及列表编程练习题)
第17节课 列表相关操作 无论是内置函数、对象函数,用起来确实很方便,但是作为初学者,你必须懂得它们背后的运行逻辑! 1 常规操作 (1)遍历 arr [1,2,3,4] # 以索引遍历:可以在遍历期间修改元素 for ind…...
设备指纹破解企业面临的隐私与安全双重危机
在数字经济高速发展的今天,黑灰产攻击如影随形,个人隐私泄露、金融欺诈、电商刷单等风险事件频发。芯盾时代 “觅迹” 设备指纹全新升级,以跨渠道识别能力打破行业壁垒,为金融、电商、游戏等多场景构筑安全屏障。 黑灰产肆虐隐私…...
多功能气体检测报警系统,精准监测,守护安全
在化学品生产、石油化工、矿山、消防、环保、实验室等领域,有毒有害气体泄漏风险严重威胁工作人员和环境安全。化工企业生产中易产生大量可燃有毒气体,泄漏达一定浓度易引发爆炸、中毒等重大事故;矿井下瓦斯、一氧化碳等有害气体的浓度实时监…...
【HarmonyOS 5】鸿蒙中常见的标题栏布局方案
【HarmonyOS 5】鸿蒙中常见的标题栏布局方案 一、问题背景: 鸿蒙中常见的标题栏:矩形区域,左边是返回按钮,右边是问号帮助按钮,中间是标题文字。 那有几种布局方式,分别怎么布局呢?常见的思维…...
登顶中国:基于 Trae AI与 EdgeOne MCP 的全国各省最高峰攀登攻略博客构建实践
一、背景与目标 随着户外运动和登山活动的日益流行,越来越多的人希望挑战自然,体验登顶的乐趣。中国幅员辽阔,34个省级行政区(包括23个省、5个自治区、4个直辖市和2个特别行政区)拥有众多壮丽的山峰,其…...
iOS蓝牙技术实现及优化
以下是针对2025年iOS蓝牙技术实现的核心技术要点的深度解析,结合当前iOS 18(推测版本)的最新特性与开发实践,分模块结构化呈现: 一、硬件与协议层适配 BLE 5.3 支持 iOS 18默认支持蓝牙5.3协议,需注意&…...
STC单片机--仿真调试
目录 一、仿真介绍二、仿真步骤 一、仿真介绍 通常单片机的仿真有ST-Link、JTAG等,连接好线路之后,在keil的debug选项设置好就可以仿真了。但是,STC需要在STC-ISP软件上的仿真界面进行配置,然后才能在keil里正常仿真 二、仿真步骤…...
SecureCRT SFTP命令详解与实战
在日常的开发工作中,安全地进行文件传输是一个常见的需求。无论是部署应用到远程服务器,还是从生产环境下载日志文件分析问题,一个可靠的工具可以大大提高工作效率。今天,我们就来详细介绍如何使用SecureCRT内置的SFTP功能&#x…...
Unity Gizmos
简介 Gizmos 是Unity编辑器中的一种可视化调试工具,用于在场景视图(Scene View)中绘制辅助图形、图标或文本,帮助开发者直观理解游戏对象的位置、范围、逻辑关系等信息 核心功能 1. 辅助可视化调试 在场景视图中显示碰撞体、触…...
EEG设备的「减法哲学」:Mentalab Explore如何用8通道重构高质量脑电信号?
在脑电图(EEG)研究领域,选择适配的工具是推动研究进展的重要步骤。Mentalab Explore 以其便捷性和高效性,成为该领域的一项创新性解决方案。研究者仅用较少的 EEG 通道即可完成实验,并且能够确保数据的高质量。其搭载的…...
PDF文档压缩攻略
前言:早上花了一点时间网上搜索了一下压缩pdf文档大小的方法,发现大部分是利用第三方在线网页,上传文件付费压缩,同时缺乏文件保密性。 经实践,利用浏览器或者wps(不付费)即可轻松处理。 一、…...
vllm命令行启动方式并发性能实测
设备V100双卡,测试模型qwen2.5-7b,并发度为100。 表现如下: 单卡959.48token/s 双卡 使用 --pipeline-parallel-size 2 939.78token/s双卡 使用 --tensor-parallel-size 21084.82token/s双卡,两张卡分别跑一个接口,形成两个接口…...
医疗AI存在 9 类系统性漏洞
医疗AI存在9类系统性漏洞 理解1. 从整体目的入手2. 关键术语:什么是“红队测试”(Red Teaming)?3. 红队测试的对象:LLM(大模型)4. 红队测试的切入点:为什么要让“临床专家”来做?5. 什么叫做“脆…...
怎么有效管理项目路径(避免使用绝对路径)
怎么有效管理项目路径(避免使用绝对路径) import os 使用 os.path 方法会自动处理不同操作系统的路径分隔符(如 \ 和 /) 1.**current_dir os.path.dirname(os.path.abspath(\__file__)) ** __file__ 获取当前脚本的文件路径&…...
MySQL的行级锁锁的到底是什么?
大家好,我是锋哥。今天分享关于【MySQL的行级锁锁的到底是什么?】面试题。希望对大家有帮助; MySQL的行级锁锁的到底是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL的行级锁是数据库管理系统(DBMS)的一…...
多账号管理、反追踪与自动化测试:我的浏览器实战笔记
作为一名在自动化测试和数据采集方面“踩坑”无数的开发者,我想聊聊自己在浏览器工具选择上的一些经验,也许能帮到同样在“账号风控”“浏览器指纹”“隐私追踪”这些问题上挣扎的朋友们。 一、从最初的Chrome开始:万能但不够隐蔽 起初做Se…...
如何应对客户在验收后提出新需求?
应对客户在验收后提出新需求的方法包括:明确新需求的范围与影响、与客户积极沟通、进行影响评估、合理协商费用与时间调整。其中,明确新需求的范围与影响最为关键。明确新需求的范围意味着迅速界定新需求的边界,分析它对现有项目进度、成本和…...
Android Studio根目录下创建多个可运行的模块
右键选中根目录,选择New -> Module 接着选中Phone & Tablet, 填写项目名和包名 选择一个模板,选择Next 然后可以看到app对应一开始创建的app模块,刚创建的customcomponent对应的,这样就可以在一个根目录下有多个可以安装运…...
【Linux】Linux环境基础开发工具
前言 本篇博客我们来了解Linux环境下一些基础开发工具 💓 个人主页:zkf& ⏩ 文章专栏:Linux 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 目录 1.Linux 软件包管理器 yum 2.Linux开发工具 2.1…...
五子棋html
<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8" /> <meta name"viewport" content"widthdevice-width, initial-scale1" /> <title>五子棋游戏</title> <style>bo…...
分布式-基于数据库排他锁
原理: 除了可以通过增删操作数据表中的记录以外,其实还可以借助数据库中自带的锁来实现分布式的锁。 我们还用刚刚创建的那张数据库表。可以通过数据库的排他锁来实现分布式锁。 基于MySql的InnoDB引 擎,可以使用以下方法来实现加锁操作&…...
docker host模式问题
为什么乌班图得docker 我装什么都必须要host 而-p映射不管用 在 Ubuntu 上使用 Docker 时,如果你发现只有 --network host 模式能正常工作,而端口映射(-p)不管用,可能有以下几种原因: 1. Docker 网络模式…...
分布式-Redis分布式锁
Redis实现分布式锁优点 (1)Redis有很高的性能; (2)Redis命令对此支持较好,实现起来比较方便 实现思路 (1)获取锁的时候,使用setnx加锁,并使用expire命令为锁…...
【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
前言 随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序&a…...
大数据应用开发和项目实战-电商双11美妆数据分析2
数据可视化 使用seaborn库绘制复杂图表,展示各品牌和品类的销售情况。 绘制嵌套柱形图,分别按主类别和子类别进行对比。 通过饼图展示男士专用产品的销售偏好,发现男士主要关注清洁和补水类产品。 用seaborn包给出每个店铺各个大类以及各个…...
GSENSE2020BSI sCMOS科学级相机主要参数及应用场景
GSENSE2020BSI sCMOS科学级相机是一款面向宽光谱成像需求的高性能科学成像设备,结合了背照式(Back-Side Illuminated, BSI)CMOS技术与先进信号处理算法,适用于天文观测、生物医学成像、工业检测等领域。以下是其核心特点及技术细节…...
基于深度学习的交通标志识别系统
基于深度学习的交通标志识别系统 项目简介 本项目实现了一个基于深度学习的交通标志识别系统,使用卷积神经网络(CNN)对交通标志图像进行分类识别。系统包含数据预处理、模型训练与评估、结果可视化和用户交互界面等模块。 数据集 项目使用德国交通标志识别基准数…...
Golang的linux运行环境的安装与配置
很多新手在学go时,linux下的配置环境一头雾水,总结下,可供参考! --------------------------------------Golang的运行环境的安装与配置-------------------------------------- 将压缩包放在/home/tools/下 解压 tar -zxvf g…...
时间序列数据集增强构造方案(时空网络建模)
时间序列数据集增强构造方案(时空网络建模) 时间序列数据集TimeSeriesDataset 时间序列数据集增强EnhancedTimeSeriesDataset 一、方案背景与动机 1.1 背景分析 传统时间序列预测方法(如ARIMA、Prophet等)以及很多深度学习方法…...
实验六 基于Python的数字图像压缩算法
一、实验目的 掌握图像压缩的必要性; 掌握常见的图像压缩标准; 掌握常见的图像压缩方法分类; 掌握常见的图像压缩方法原理与实现(包括哈夫曼编码、算术编码、行程编码方法等); 了解我国音视…...
Vue 3 中的 nextTick 使用详解与实战案例
Vue 3 中的 nextTick 使用详解与实战案例 在 Vue 3 的日常开发中,我们经常需要在数据变化后等待 DOM 更新完成再执行某些操作。此时,nextTick 就成了一个不可或缺的工具。本文将介绍 nextTick 的基本用法,并通过三个实战案例,展示…...
Docker + Watchtower 实现容器自动更新:高效运维的终极方案
文章目录 前言一、Watchtower 简介二、Watchtower 安装与基本使用1. 快速安装 Watchtower2. 监控特定容器 三、Watchtower 高级配置1. 设置检查间隔2. 配置更新策略3. 清理旧镜像4. 通知设置 四、生产环境最佳实践1. 使用标签控制更新2. 更新前执行健康检查3. 结合CI/CD流水线 …...
OpenCV 中用于背景分割(背景建模)的一个类cv::bgsegm::BackgroundSubtractorGSOC
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::bgsegm::BackgroundSubtractorGSOC 是 OpenCV 中用于背景分割(背景建模)的一个类,它是基于 GMMÿ…...
AI恶魔之眼使用说明书
AI恶魔之眼使用说明书 产品简介 1.1 产品介绍 AI恶魔之眼是一款具备动态视觉效果与仿生眼睛模拟功能的智能显示产品,可实现以下特性: 真实人眼模拟:支持虹膜样式变换、眨眼动画、瞳孔缩放等动态特效,仿真度高自定义内容上传&am…...
PBR材质-Unity/Blender/UE
目录 前言: 一、Unity: 二、Blender: 三、UE: 四、全家福: 五、后记: 前言: PBR流程作为表达物理效果的经典方式,很值得一学。纹理贴图使用的是上一期的Textures | cgbookcas…...
C++复习
线程库(类) 在C11之前,涉及到多线程问题,都是和平台相关的,比如Windows和Linux下各有自己的接口,这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行了支持,使得C在并行编程时不需要依赖第三方…...
如何使用docker配置ros-noetic环境并使用rviz,gazebo
参考链接:【Ubuntu】Docker中配置ROS并可视化Rviz及Gazebo_docker ros-CSDN博客 前言: 其实这个东西是相当必要的,因为我们有时候需要在一台电脑上跑好几个项目,每个项目都有不同的依赖,这些依赖冲突搞得人头皮发麻&…...
计算机网络中相比于RIP,路由器动态路由协议OSPF有什么优势?
好的!以下是关于路由信息协议(RIP,Routing Information Protocol)的技术原理详解,以及其与OSPF(Open Shortest Path First)的对比分析。内容分为技术原理、对比优势和不足两部分。 一、RIP技术原理深度解析 1. 基本概念 协议类型:RIP属于距离向量路由协议(Distance-V…...
相似命令对比
awk 命令用法表格 场景命令示例说明示例输入文件内容 (input.txt)输出结果1. 基础字段提取awk -F: {print $1} /etc/passwd按分隔符提取第1列(如用户名)。root:x:0:0:root:/root:/bin/bashroot2. 多字段组合输出awk -F: {print $1, $3, $7} /etc/passwd…...
Vuerouter 的底层实现原理
文章目录 前言🧩 Vue Router 底层实现核心原理🧠 执行流程图(简化版)🔍 核心模块源码原理(简要)① 路由注册与匹配(createRouterMatcher)② 历史模式管理器(c…...
按拼音首字母进行排序组成新的数组(vue)
数据按首字母相同的组成新的数组,使用拼音(Pinyin)转换 比如想要的效果: 下载 npm install pinyin代码: import pinyin from "pinyin"; let studentAllList [{onLine: true,points: undefined…...
在IPv6头部中,Next Header字段
在IPv6头部中,Next Header字段 在IPv6头部中,Next Header字段是一个8位的字段,它的作用是指示下一个头部扩展的类型或者最终的传输层协议类型。这个字段的值决定了数据包中紧随IPv6头部之后的头部扩展的类型,或者是直接指向传输层…...