自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 收藏
  • 关注

原创 AI时代下,关于UI自动化的一些思考

背后的工程常识很简单:越靠近问题根因,反馈越便宜;越靠近最终页面,链路越复杂。AI 时代我们最大的机会,就是把很多原本要到测试阶段才暴露的问题,提前挪到代码阶段、评审阶段、契约阶段去解决。

2026-09-03 11:47:53 184

原创 AI时代下,关于书写测试用例,谈一下我的思考

随便找个 AI,把需求贴进去,说一句"帮我生成测试用例",几分钟后你就能拿到几十条用例——标题规范、步骤齐全、预期结果写得有模有样。所以它写出来的往往是"需求说明书级别"的用例——很干净,但也很浅。这也是我们后来在做智能接口测试平台时,坚持把接口文档(入参约束、枚举值、依赖关系)作为结构化上下文喂给模型的原因——不给它这些,它只能写"正确的废话"。这正是 RAG(检索增强生成)在这个场景里的真正价值——不是让 AI 多引用几段资料装样子,而是让它在动笔之前,先找一找"这个需求像不像过去某个需求"。

2026-09-03 10:48:22 224

原创 从测试的角度,聊聊关于skills的一些思考和感悟

摘要: Skills平台化的核心在于构建测试能力的全生命周期管理,而不仅是简单的经验存储。测试团队真正需要的是将散落的测试经验(如接口分析、用例设计等)转化为可组织、调试、复用的工程化能力。仅靠管理Skills无法满足动态变化的测试需求,需建立包含创建、修改、调试、发布的闭环流程。平台化能解决经验沉淀难、AI输出不可维护、质量不可控及团队复用效率低等问题,最终形成可迭代的组织级测试资产。关键在于实现Skill从生成到验证、再到团队共享的完整链路,而非单纯积累数量。

2026-07-21 07:07:08 213

原创 聊聊接口自动化未来的发展趋势应该是什么样的?

这种不对称造成的结果,是大量"形式上覆盖、实质上漏测"的测试用例,以及无数靠"经验"才能发现的线上 Bug。文档只告诉它接口长什么样,却没有告诉它代码里究竟做了什么——没有逻辑分支、没有校验规则、没有调用链路、没有 SQL 语句。当大模型能够"看见"每一个校验注解、每一条 SQL 查询条件、每一层可能抛出的 Exception,它设计出的用例才真正配得上"智能"二字。导出,每个节点包含类名、方法名、文件路径、行号、参数约束、SQL、返回类型等字段,可以直接注入 LLM Agent 的上下文窗口。

2026-07-20 19:30:56 210

原创 聊聊“AI智能体Harness”该怎么测?

Harness 的每个组件都是可以独立测试的代码单元:工具的重试逻辑、状态持久化的读写接口、上下文压缩算法、权限拦截逻辑。数据认证不是 QA 的事,也不是 ETL 的事——在 Agent 测试里,它是一切测试的前提条件。集成测试要验证它们组合在一起工作时,有没有新的问题出现——这是经典的「集成地狱」:每个组件单独测都没问题,组合起来就出错了。一个常见的测试流程是这样的:准备 50 个测试问题,跑模型,看输出质量,打分,迭代提示词。模型的输出是概率性的,会干扰 Harness 逻辑的确定性验证。

2026-07-19 23:29:21 803

原创 从软件测试角度聊聊“Prompt / Context / Harness区别”

它是 Agent 的运行环境本身——工具的授权与执行、跨任务会话的持久化、任务失败的恢复逻辑、高风险操作的人工审批门、整个执行过程的可观测性。如果说 Prompt 是「告诉 Agent 做什么」,Context 是「让 Agent 看到什么」,那么 Harness 就是 「确保 Agent 能在真实世界里可靠地把事情做完」。它的核心工作是:用更好的措辞和结构,让模型在单次交互中给出更好的输出。Prompt Engineering 解决不了的问题:任务执行过程中的状态管理、错误恢复、跨步骤的一致性。

2026-07-19 22:42:47 371

原创 聊聊现在大火的“Harness Engineering”

2022 年你在优化提示词,2025 年你在管上下文,2026 年你该认识 Harness Engineering 了。好的软件工程一直要求的东西:质量门控、错误恢复、环境隔离、状态管理,恰恰就是生产级 Harness 的组成部分。Harness 应该追踪每一次工具调用、每一步推理、每一次失败,让你能够真正调试 Agent,而不是瞎猜。没有 Harness 的 Agent 是在裸奔,有 Harness 的 Agent 才能真正干活。只不过过去你做的对象是代码,现在你做的对象是 Agent 的行为。

2026-07-19 22:20:25 372

原创 智能Web自动化测试平台

本文介绍了一个Web自动化智能测试平台,旨在解决传统Web自动化测试的痛点,如脚本易失效、前置条件复杂、维护成本高等问题。该平台采用智能体驱动模式,整合大模型、Playwright和MCP技术,实现从功能分析到报告生成的全流程闭环。亮点包括全流程智能化、脚本自动修复、Playwright集成、资产统一管理等。平台通过DeepAgents进行工作流编排,结合Skills和Tools实现领域知识与原子操作,最终形成可复用的测试资产。功能演示展示了从输入功能描述到生成测试报告的全过程。

2026-07-18 09:11:22 230

原创 智能接口自动化测试平台

生成测试用例 → 保存测试用例 → 生成测试脚本 → 保存测试脚本 → 执行测试脚本 → 判断测试用例错误→ 自动修复测试用例→ 执行新的测试脚本→ 生成测试报告。,把大模型能力真正落地到接口测试的全流程中,让系统不仅能执行测试,更能自动完成测试计划生成、测试用例生成、测试脚本生成、测试执行、失败修复和结果沉淀。生成测试用例 → 保存测试用例 → 生成测试脚本 → 保存测试脚本 → 执行测试脚本 → 生成测试报告。接口分析 → 测试计划 → 测试用例 → 测试脚本 → 执行 → 修复 → 报告。

2026-07-18 08:14:04 234

原创 王根生AI智能数据分析系统

王根生AI智能数据分析系统

2026-07-08 01:40:25 203

原创 聊聊“ERP系统”和“WMS系统”

什么是ERP和WMS系统,它们是干什么的?有什么联系?

2025-07-02 14:50:40 663

原创 聊聊关于“大模型测试”的一些认识

聊聊关于“大模型测试”的一些认识

2025-07-02 11:22:56 680

原创 聊聊“测试时间”被压缩,我们该怎么应对

项目时间被大幅压缩,应该怎么应对

2025-06-25 20:54:12 1177

原创 为什么有的公司使用Java有的公司使用Go?

为什么有的公司使用Java有的公司使用Go?

2025-06-08 22:19:18 485

原创 数据库整理

数据库整理

2022-07-07 15:16:13 890

原创 南理工在线交流群

项目总结

2022-06-28 13:48:49 571

原创 基于SpringBoot+Mybatis的个人博客系统

项目分享

2022-06-27 11:36:21 1130

原创 String以及StringBuffer的基本操作

代码总结package String和StringBuffer.exam;import java.util.Arrays;public class test { /*equals:比较的是内容,区分大小写*/ public static void main1(String[] args) { String str1 = new String("Hello"); String str2 = new String("Hello"); Sy

2022-04-05 23:11:22 714

原创 AOP详解

AOP:面向切面编程,AOP是一种编程思想,和语言无关。拦截器和AOP之间的关系?拦截器的拦截粒度比较粗,而SpringAOP拦截粒度更细什么是AOPAOP称为面向切面编程,在系统开发中主要用来解决一些系统层面上的问题,比如:日志,权限,事务等等。AOP利用一种称为“横切”的技术,将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。使用“横切”技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关

2021-12-21 23:52:29 2222

原创 前后端交互方式

前后端交互方式可以分成两种整个页面提交:比如:注册功能(post方式)ajax局部提交(java项目前后交互使用最多的技术):jQuery.getJSON()这种ajax请求方式是get方式请求,不能使用post方式,所以用这种方式不能上传图片和文件,在博客项目中注册使用的是post方式的表单提交。但是ajax本身是支持多种方式的,get,post,put,delete…控件的id和name的作用控件的id它是一种标识,它不是给后端接口用的,它是给前端js用的控件的name后端接收的key就

2021-12-20 10:28:06 1308

原创 @value注解

@value注解作用:这个注解是用来读取配置文件中的信息在application.properties文件中的内容:2:可以在程序中,使用并且把它打印出来打印结果:

2021-12-19 16:23:47 389

原创 mybatis中的动态SQL(if,trim,where,set,foreach标签)

动态SQL的使用

2021-12-18 17:41:30 723

原创 mybatis中一对一和一对多

拿博客系统的用户表和文章表来说一对一如果以文章为主题看用户,那么文章表和用户表之间的关系就是一对一;因为一章文章博客由一个用户写。一对多如果以用户为主题看文章,那么用户表和文章表之间的关系就是一对多;因为一个用户可以写多篇文章。...

2021-12-17 10:35:13 3207

原创 #{}和${}的区别

sql注入

2021-12-13 17:55:44 840

原创 mybatis中#{}和${}的区别以及SQL注入问题

mybatis

2021-12-13 17:40:28 2388

原创 @Param注解的使用

如果mapper层,mapper方法中的参数只有一个,那么mapper.xml中对应方法中的参数是什么无所谓,比如:mapper:mapper.xml:如果有两个以上的参数,那么可以在mapper层,mapper的方法中的参数添加@Param注解,mapper.xml中的参数可以和mapper中的方法中的参数不一致,利用@Param注解,实现映射。mapper:mapper.xml:...

2021-12-13 11:01:06 463

原创 mybatis中resultMap和resultType的区别

resultMapresultMap是返回值的类型映射,当程序中实体类的元素属性名称和对应的数据库中的字段名称不一致时,就需要使用resultMap这个返回值的类型映射。resultTyperesultType是返回值的类型,当程序中实体类的元素属性名称和对应的数据库中的字段名称完全一致时,就使用resultType。...

2021-12-13 09:40:50 618

原创 @Transactional注解

这是SpringFramework的注解,表示当执行完业务之后,进行回滚操作,不会污染数据库,保证方法可以正常执行,并且不会存储到数据库中@SpringBootTest@Transactional//表示当执行完业务之后,进行回滚操作,不会污染数据库,保证方法可以正常执行,并且不会存储到数据库中class UserMapperTest {@Resourceprivate UserMapper userMapper; @Test void addUser() { Us

2021-12-13 09:26:16 354

原创 @Autowired注解爆红原因及解决方法

@Autowired

2021-12-12 18:05:07 14540 1

原创 基本数据类型和包装类

基本数据类型和包装类为什么有了基本数据类型还要使用包装类因为类中有方法,使用包装类可以帮助我们实现不同数据类型之间的转换。装箱/装包装箱也叫装包,其实就是把简单数据类型转换成包装类型。自动装箱 public static void main(String[] args) { int i = 10; Integer a = i; }这就是自动装箱手动装箱 public static void main(String[] args) {

2021-12-11 23:00:27 336

原创 Java泛型详解

拿一个顺序表举例子这个:代表当前类是一个泛型类new T[10]:这是不被允许的,不能new泛型类型的数组,T[] t = new T[];是不允许的泛型的意义:在存储元素的时候,可以自动类型检查在获取元素的时候,可以自动类型转换泛型类型的参数不能是简单类型,是不参与类型的组成的。泛型到底是怎么编译的?泛型只在编译的时候起作用,在运行的时候是没有泛型的概念的,泛型是为了解决某些容器,算法等代码的通用性而引入,并且能在编译期间做类型检查。泛型在编译的时候使用的是擦除机制,也就是像Int

2021-12-11 22:01:30 365

原创 @ResponseBody

在类或者方法上加上这个注解,说明方法的返回类型不是视图,具体是什么看方法的具体返回值。

2021-12-10 15:40:47 153

原创 @RequestParam和@RequestBody的区别

注解

2021-12-09 15:17:57 1131

原创 socket API-UDP(客户端-服务器交互原理)

public class UdpEchoServer { //对于一个服务器程序来说,核心流程也是要分成两步: /* * 1:进行初始化操作(实例化Socket对象) * 2:进入主循环,接收并处理请求,(主循环就是一个“死循环”,因为服务器需要24小时不间断工作) * a)读取请求并解析 * b)根据请求计算响应 * c)把响应结果写回到客户端*/ private DatagramSocket socket = null;/

2021-10-11 14:34:32 459

原创 linux-(上)

linux初心:让我们写的代码能够被部署到服务器上,被外网用户访问到。因为软件开发的生命周期:需求分析,设计阶段,编码开发,测试阶段,部署/上线。之前部署的代码是部署到本机的Tomcat上了,此时外网用户是无法访问的,想要让外网用户也能访问最简单的办法就是:把程序部署到云服务器(Linux)上,这样才能被其他用户访问到。在公司中,大多数服务器,也都是Linux,所以必须要掌握Linux的基本操作,才能够完成部署。...

2021-10-08 12:23:22 627 1

原创 剑指offer(06)-从尾到头打印链表

题目描述输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。牛客链接本题牛客链接解题思路一可以使用stack的方式,但是这种方法会存在占用空间过大的问题先创建一个栈,然后依次从头到尾循环将链表中的节点元素入栈,再创建一个数组集合,利用栈先进后出的特点将栈中的元素分别出栈添加到数组集合中,return 数组集合。解题代码一/*** public class ListNode {* int val;* ListNode next =

2021-10-06 16:01:46 153

原创 剑指offer(05)-替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路字符串中定义两个新老索引下标,设置字符串里新的大小防止越界。首先判断老索引位置上的元素是不是空格,是空格的话对新索引位置进行操作,不是空格的话,再对新索引的位置进行另外的操作。解题代码import java.util.*;public class Solution { public String replaceSp

2021-10-04 22:13:33 124

原创 剑指offer(04)-数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。牛客链接https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?解题思路1这道题思路比较明确,定义map,使用<数字,次数>的映射关系,最后统计每个字符出现的次数,看是否有次数超过数组元素个数一

2021-10-04 18:07:42 340 1

原创 剑指offer(03)-调整数组顺序使奇数位于偶数之前

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路这道题原题是不需要保证奇偶位置不变的,现在新增了需求,解决方法也比较多,我们用较优方式解决一下,借鉴一下插入排序的思想。代码实现注释一代码实现:public class Solution { public void reOrderArray(int [] array) { if(arra

2021-10-04 10:10:18 94

原创 剑指offer(2)-旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如:数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。给出的所有元素都大于0,若数组大小为0,请返回0。解题思路该题属于查询,查询的本质是排除,相比遍历,二分查找可以排除更多,那么查找的效率也就更高。当出现中间位置的元素值=左边位置的元素值,或者中间位置的元素值=右边位置的元素值,或者左边位置的元素值=右边位置的元素值,此时二分查找

2021-10-03 16:19:43 113

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除