5个Midscene.js核心功能实战:从重复操作到智能自动化的高效指南
你是否曾遇到过需要反复执行相同UI操作的场景?面对跨平台兼容性测试是否感到力不从心?当AI操作出现偏差时是否难以排查问题?Midscene.js作为视觉驱动的AI自动化框架,正是为解决这些痛点而生。本文将通过"问题-方案-验证-扩展"四象限框架,带你掌握环境配置、设备连接、脚本编写、桥接模式和报告分析五大核心功能,让AI成为你的自动化测试助手。
问题:如何搭建稳定的跨平台自动化测试环境?
方案:环境配置四步法
环境配置是自动化测试的基础,就像盖房子需要坚实的地基。以下是经过实践验证的四步配置法:
graph TD
A[安装核心依赖] --> B[配置环境变量]
B --> C[初始化项目结构]
C --> D[验证环境完整性]
D --> E{环境正常?}
E -->|是| F[开始使用]
E -->|否| G[排查依赖问题]
基础配置
首先克隆项目并安装依赖:
# 克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/mid/midscene
cd midscene
# 安装项目依赖
pnpm install
创建基础配置文件.env:
# 基础环境变量配置
MIDSCENE_MODEL="gpt-4-vision-preview" # AI模型选择
MIDSCENE_CACHE="true" # 启用缓存加速
MIDSCENE_TIMEOUT="30000" # 操作超时时间(毫秒)
高级技巧
针对不同开发环境,可创建环境特定配置:
# 进阶环境配置 - .env.development
MIDSCENE_MODEL="gpt-4-vision-preview" # 开发环境使用更强大的模型
MIDSCENE_CACHE="true" # 开发阶段启用缓存
MIDSCENE_DEBUG="true" # 开启调试模式
MIDSCENE_LOG_LEVEL="verbose" # 详细日志输出
# 生产环境配置 - .env.production
MIDSCENE_MODEL="gpt-4o" # 生产环境使用更高效的模型
MIDSCENE_CACHE="false" # 生产环境禁用缓存确保数据新鲜
MIDSCENE_TIMEOUT="60000" # 延长超时时间
[!TIP] 环境变量的优先级为:命令行参数 > .env.local > .env.[环境] > .env。建议将敏感信息如API密钥存储在.env.local中,并确保该文件不会提交到版本控制系统。
⚠️ 风险提示:使用错误的模型可能导致操作不准确或成本过高。建议开发环境使用功能全面的模型,生产环境使用成本效益更优的模型。
验证:环境检查工具
运行内置环境检查脚本验证配置:
# 执行环境检查
pnpm run check-env
成功输出示例:
✅ Node.js版本检查通过 (v18.18.0)
✅ 依赖包完整性检查通过
✅ 环境变量配置有效
✅ 端口可用性检查通过
ℹ️ 建议: 考虑设置MIDSCENE_PROXY提高API访问稳定性
扩展:多环境配置管理
对于团队协作或复杂项目,可使用配置管理工具:
# 安装配置管理工具
pnpm add -D dotenv-cli
# 为不同环境创建快捷命令
# package.json中添加
"scripts": {
"start:dev": "dotenv -e .env.development pnpm run start",
"start:prod": "dotenv -e .env.production pnpm run start"
}
问题:如何实现多设备统一管理与连接?
方案:设备连接架构设计
设备连接就像自动化测试的神经网络,需要稳定且灵活的架构。Midscene.js采用适配器模式设计,支持多种设备类型:
graph TD
A[设备管理器] --> B[Android适配器]
A --> C[iOS适配器]
A --> D[浏览器适配器]
A --> E[桌面应用适配器]
B --> F[ADB连接]
C --> G[XCTest连接]
D --> H[桥接模式]
E --> I[系统API]
原理解析
设备连接的核心是通过统一接口抽象不同设备的差异。以Android设备为例,Midscene.js通过ADB(Android Debug Bridge)与设备通信,发送操作指令并接收屏幕数据。这种分层设计使上层代码无需关心具体设备类型,实现了"一次编写,多端运行"。
基础配置
Android设备连接步骤:
# 设备配置示例 - android-device.yaml
name: "测试手机"
type: "android"
deviceId: "emulator-5554" # 通过adb devices命令获取
features:
screenshot: true
keyboard: true
touch: true
connection:
type: "usb"
autoReconnect: true
连接设备命令:
# 启动设备管理器
pnpm run device-manager
# 在管理器中连接设备
> connect android --config android-device.yaml
高级技巧
设备池配置实现负载均衡:
# 设备池配置 - device-pool.yaml
name: "测试设备池"
devices:
- name: "安卓测试机1"
type: "android"
deviceId: "emulator-5554"
weight: 1 # 负载权重
- name: "安卓测试机2"
type: "android"
deviceId: "emulator-5556"
weight: 1
- name: "iOS测试机"
type: "ios"
deviceId: "00008020-001A123456789012"
weight: 2 # 分配更多任务
strategy: "round-robin" # 轮询分配策略
⚠️ 风险提示:设备驱动冲突可能导致连接不稳定。连接前请确保已安装对应设备的官方驱动,并关闭其他可能占用设备的应用程序。
验证:设备功能测试
使用内置设备诊断工具验证设备功能:
# 运行设备诊断
pnpm run device-diagnose --deviceId emulator-5554
诊断报告示例:
设备信息:
- 型号: Google Pixel 6
- Android版本: 13
- 分辨率: 2400x1080
功能测试结果:
✅ 屏幕截图: 正常
✅ 触摸操作: 正常
✅ 键盘输入: 正常
✅ 应用安装: 正常
⚠️ 性能警告: 设备响应时间较慢(>300ms)
扩展:远程设备管理
配置远程设备访问:
# 远程设备配置
name: "远程测试机"
type: "android"
deviceId: "remote-android-01"
connection:
type: "network"
host: "192.168.1.100"
port: 5037
auth:
username: "device-user"
password: "${REMOTE_DEVICE_PASSWORD}" # 从环境变量获取
问题:如何编写高效的AI自动化脚本?
方案:智能脚本设计模式
AI自动化脚本不同于传统脚本,它更像给AI的"操作指南"而非精确指令。好的脚本应该平衡灵活性和可维护性。
原理解析
Midscene.js的AI脚本基于"意图驱动"设计,你描述想要实现的目标,AI会自动规划具体操作步骤。这种方式将你从繁琐的元素定位中解放出来,专注于业务逻辑而非技术细节。底层通过视觉识别和自然语言理解,将抽象指令转化为具体操作。
基础配置
任务管理应用测试脚本(基础版):
# 基础版脚本 - add-todo-basic.yaml
name: "添加待办事项"
description: "在任务管理应用中添加新的待办事项"
platform: "android"
preconditions:
- "应用已启动并显示主界面"
tasks:
- name: "点击添加按钮"
flow:
- ai: "点击屏幕右下角的'+'按钮"
- name: "输入任务内容"
flow:
- ai: "在输入框中输入'完成Midscene.js教程'"
- name: "保存任务"
flow:
- ai: "点击保存按钮"
进阶版
添加验证和错误处理:
# 进阶版脚本 - add-todo-advanced.yaml
name: "添加待办事项"
description: "在任务管理应用中添加新的待办事项并验证"
platform: "android"
preconditions:
- "应用已启动并显示主界面"
- "确保没有名为'完成Midscene.js教程'的任务"
tasks:
- name: "点击添加按钮"
flow:
- ai: "点击屏幕右下角的'+'按钮"
- aiAssert: "验证是否显示新建任务表单"
- name: "输入任务内容"
flow:
- ai: "在输入框中输入'完成Midscene.js教程'"
- aiQuery: "获取输入框内容"
- assert:
condition: "${inputValue} === '完成Midscene.js教程'"
message: "任务内容输入不正确"
- name: "保存任务"
flow:
- ai: "点击保存按钮"
- aiAssert: "验证任务已添加到列表中"
errorHandling:
retryCount: 2
retryDelay: 1000
onFailure: "takeScreenshot"
优化版
添加参数化和数据驱动:
# 优化版脚本 - add-todo-optimized.yaml
name: "添加待办事项"
description: "在任务管理应用中添加新的待办事项并验证"
platform: "${platform}" # 从外部传入平台参数
preconditions:
- "应用已启动并显示主界面"
- "确保没有名为'${taskName}'的任务"
variables:
taskName: "完成Midscene.js教程"
priority: "high"
dueDate: "${today + 3 days}" # 使用日期函数
tasks:
- name: "点击添加按钮"
flow:
- ai: "点击屏幕右下角的'+'按钮"
- aiAssert: "验证是否显示新建任务表单"
- name: "填写任务信息"
flow:
- ai: "在标题输入框中输入'${taskName}'"
- ai: "将优先级设置为'${priority}'"
- ai: "设置截止日期为'${dueDate}'"
- name: "保存并验证"
flow:
- ai: "点击保存按钮"
- aiAssert: "验证任务'${taskName}'已添加到列表中"
- aiAssert: "验证任务优先级显示为'${priority}'"
dataSources:
- name: "taskData"
type: "csv"
path: "./test-data/tasks.csv"
skipHeader: true
errorHandling:
retryCount: 2
retryDelay: 1000
onFailure:
- "takeScreenshot"
- "logToFile:./logs/error-${timestamp}.log"
[!TIP] 编写AI脚本时,描述应该具体但不过度指定位置。例如,使用"点击保存按钮"而非"点击屏幕右上角的蓝色按钮",这样脚本更具适应性。
验证:脚本调试工具
使用交互式调试模式验证脚本:
# 启动脚本调试器
pnpm run script-debugger --script add-todo-optimized.yaml
调试器提供分步执行、变量监视和AI决策查看功能,帮助你理解AI如何解析指令并执行操作。
扩展:脚本模块化与复用
创建可复用的脚本模块:
# 模块 - common-actions.yaml
name: "通用操作模块"
actions:
- name: "tapButton"
parameters:
- name: "buttonName"
type: "string"
flow:
- ai: "点击'${buttonName}'按钮"
- name: "inputText"
parameters:
- name: "fieldName"
type: "string"
- name: "text"
type: "string"
flow:
- ai: "在'${fieldName}'输入框中输入'${text}'"
在主脚本中引用模块:
# 使用模块的脚本
imports:
- "./common-actions.yaml"
tasks:
- name: "添加任务"
flow:
- action: "tapButton"
parameters:
buttonName: "添加"
- action: "inputText"
parameters:
fieldName: "任务标题"
text: "学习模块化脚本"
问题:如何实现手动与自动操作的无缝切换?
方案:桥接模式应用
桥接模式就像测试脚本的万能转换器,它允许你在自动执行和手动操作之间自由切换,特别适合需要人工干预的复杂场景。
Midscene.js桥接模式界面,显示Chrome浏览器与本地SDK的连接状态和控制代码示例
原理解析
桥接模式通过本地服务器建立脚本与浏览器/应用的通信通道。当启用桥接模式时,AI操作指令不再直接执行,而是通过这个通道传输,你可以在任何时候暂停自动执行,进行手动操作,然后继续自动流程。这种设计特别适合处理验证码、复杂登录流程等自动化难点。
基础配置
启用桥接模式的基础配置:
# 桥接模式基础配置
bridge:
enabled: true
port: 8765
autoConnect: true
timeout: 30000
debug: false
启动桥接服务器:
# 启动桥接服务器
pnpm run bridge-server
在脚本中使用桥接模式:
// 基础桥接模式控制代码
const { AgentOverChromeBridge } = require('@midscene/web-integration');
async function run() {
// 创建桥接代理
const agent = new AgentOverChromeBridge();
try {
// 连接到当前浏览器标签页
await agent.connectCurrentTab();
// 执行AI操作
await agent.aiAction('搜索"Midscene.js桥接模式"');
await agent.aiAction('点击搜索结果中的官方文档');
// 这里可以暂停自动执行,进行手动操作
console.log('请完成验证码验证,完成后按Enter继续...');
await new Promise(resolve => process.stdin.once('data', resolve));
// 继续自动执行
await agent.aiAction('导航到API参考页面');
} finally {
// 断开连接
await agent.disconnect();
}
}
run().catch(console.error);
高级技巧
结合自定义逻辑的桥接模式应用:
// 高级桥接模式应用
const { AgentOverChromeBridge } = require('@midscene/web-integration');
const fs = require('fs');
const path = require('path');
async function run() {
const agent = new AgentOverChromeBridge({
port: 8765,
logLevel: 'debug',
// 自定义请求处理
onRequest: (request) => {
console.log('桥接请求:', request.type);
// 可以在这里拦截和修改请求
}
});
try {
await agent.connectCurrentTab();
// 复用已登录状态
await agent.aiAction('访问项目管理系统');
// 检查是否需要登录
const isLoggedIn = await agent.aiQuery('页面上是否显示"我的项目"字样?');
if (!isLoggedIn) {
console.log('检测到未登录状态,正在加载cookies...');
// 加载保存的cookies
const cookies = JSON.parse(fs.readFileSync('./saved-cookies.json', 'utf8'));
await agent.setCookies(cookies);
// 刷新页面
await agent.refreshPage();
}
// 执行主要任务
await agent.aiAction('创建新的项目任务,标题为"桥接模式测试"');
await agent.aiAction('添加任务描述"使用Midscene.js桥接模式实现手动-自动混合操作"');
// 保存当前cookies供下次使用
const currentCookies = await agent.getCookies();
fs.writeFileSync('./saved-cookies.json', JSON.stringify(currentCookies, null, 2));
} finally {
await agent.disconnect();
}
}
run().catch(console.error);
⚠️ 风险提示:桥接模式下,手动操作会影响AI对界面状态的判断。建议在手动干预后,通过aiQuery指令让AI重新识别当前界面状态。
验证:桥接模式诊断
使用桥接诊断工具检查连接状态:
# 运行桥接诊断
pnpm run bridge-diagnose --port 8765
诊断结果示例:
桥接服务器状态:
- 状态: 运行中
- 端口: 8765
- 连接数: 1
- 已处理请求: 24
- 平均响应时间: 127ms
连接客户端信息:
- 类型: Chrome浏览器
- 版本: 118.0.5993.88
- 页面: https://project-management.example.com
- 连接时长: 00:15:32
✅ 桥接模式工作正常
扩展:桥接模式与CI/CD集成
在CI/CD流程中集成桥接模式,处理自动化测试中的人工干预点:
# .github/workflows/test.yml 中的桥接模式配置
jobs:
e2e-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: 安装依赖
run: pnpm install
- name: 启动桥接服务器
run: pnpm run bridge-server &
env:
MIDSCENE_BRIDGE_PORT: 8765
- name: 运行测试脚本
run: pnpm run test:e2e
env:
MIDSCENE_BRIDGE_URL: http://localhost:8765
# 启用交互模式,当需要人工干预时暂停
MIDSCENE_INTERACTIVE: true
- name: 保存测试报告
if: always()
uses: actions/upload-artifact@v3
with:
name: test-report
path: ./reports/
问题:如何分析自动化测试结果并优化流程?
方案:测试报告分析系统
测试报告不仅是测试结果的记录,更是优化自动化流程的重要依据。Midscene.js提供了可视化的报告系统,帮助你深入理解AI的决策过程和操作效果。
Midscene.js测试报告界面,展示任务执行时间轴和界面变化过程
原理解析
测试报告系统通过记录AI的每一步决策和操作结果,构建完整的执行时间线。它不仅捕获最终结果,还记录中间状态、AI思考过程和界面变化,帮助你理解AI为什么做出某个决策,以及如何优化指令以获得更好的结果。报告生成基于事件溯源模式,将所有操作和状态变化按时间顺序存储和展示。
基础配置
启用详细报告生成:
# 报告配置 - 基础版
report:
enabled: true
format: "html" # 报告格式: html, json, markdown
path: "./reports" # 报告保存路径
captureScreenshots: true # 捕获操作截图
includeAIThoughts: false # 不包含AI思考过程
进阶版
详细报告配置:
# 报告配置 - 进阶版
report:
enabled: true
format: ["html", "json"] # 生成多种格式报告
path: "./reports/${timestamp}" # 使用时间戳创建报告目录
captureScreenshots: true
captureVideo: false # 不录制视频
includeAIThoughts: true # 包含AI思考过程
includePerformanceData: true # 包含性能数据
screenshotQuality: 80 # 截图质量(0-100)
maxScreenshotSize: "2MB" # 截图大小限制
exportMetrics: true # 导出性能指标
优化版
集成分析和通知的报告配置:
# 报告配置 - 优化版
report:
enabled: true
format: ["html", "json"]
path: "./reports/${timestamp}-${testName}"
captureScreenshots: true
captureVideo: true
videoQuality: "medium" # 视频质量
includeAIThoughts: true
includePerformanceData: true
screenshotQuality: 80
maxScreenshotSize: "2MB"
exportMetrics: true
# 分析配置
analysis:
enabled: true
detectFlakiness: true # 检测不稳定测试
suggestImprovements: true # 自动建议优化
compareWithPrevious: true # 与之前报告比较
# 通知配置
notifications:
email:
enabled: true
recipients: ["qa-team@example.com", "dev-team@example.com"]
on: ["failure", "success"] # 成功和失败都通知
slack:
enabled: true
channel: "#test-results"
on: ["failure"] # 仅失败时通知
[!TIP] 在调试AI操作问题时,启用
includeAIThoughts可以查看AI的思考过程,了解它为什么做出某个决策,这对于优化提示词非常有帮助。
验证:报告分析工具
使用报告分析工具提取关键指标:
# 分析最新报告
pnpm run analyze-report --latest
# 比较两个报告
pnpm run compare-reports --base reports/20231025-1430 --new reports/20231026-0915
分析结果示例:
测试执行摘要:
- 总任务数: 12
- 成功: 10 (83.3%)
- 失败: 2 (16.7%)
- 平均任务执行时间: 4.2s
- 总执行时间:52.3s
性能指标:
- AI决策平均耗时: 1.8s
- 操作执行平均耗时: 0.7s
- 最长任务: "填写表单" (8.3s)
稳定性分析:
- 不稳定任务: 1 ("上传文件")
- 平均重试次数: 0.3
改进建议:
1. 任务"填写表单"可拆分为多个小任务提高稳定性
2. 优化提示词"点击提交按钮"为"点击页面底部的蓝色提交按钮"
3. 考虑为任务"上传文件"增加预检查步骤
扩展:自定义报告插件
创建自定义报告处理器:
// 自定义报告处理器 - report-plugin.js
const fs = require('fs');
const path = require('path');
const { ReportProcessor } = require('@midscene/core');
class JiraReportProcessor extends ReportProcessor {
constructor(config) {
super(config);
this.jiraUrl = config.jiraUrl;
this.projectKey = config.projectKey;
}
async process(reportData) {
console.log(`生成Jira报告: ${reportData.testName}`);
// 提取关键信息
const summary = {
testName: reportData.testName,
startTime: reportData.startTime,
endTime: reportData.endTime,
status: reportData.success ? 'PASS' : 'FAIL',
failureCount: reportData.failureCount,
totalTasks: reportData.tasks.length
};
// 创建Jira兼容的报告格式
const jiraReport = {
fields: {
project: { key: this.projectKey },
summary: `测试报告: ${summary.testName} (${summary.status})`,
description: this.generateDescription(summary, reportData),
issuetype: { name: 'Test' },
customfield_12345: summary.status, // 自定义字段: 测试状态
customfield_12346: summary.failureCount // 自定义字段: 失败数量
}
};
// 保存报告
const outputPath = path.join(this.config.path, 'jira-report.json');
fs.writeFileSync(outputPath, JSON.stringify(jiraReport, null, 2));
console.log(`Jira报告已生成: ${outputPath}`);
return jiraReport;
}
generateDescription(summary, reportData) {
// 生成Jira描述内容
let description = `*测试概要*\n`;
description += `• 测试名称: ${summary.testName}\n`;
description += `• 开始时间: ${summary.startTime}\n`;
description += `• 结束时间: ${summary.endTime}\n`;
description += `• 状态: ${summary.status}\n`;
description += `• 总任务数: ${summary.totalTasks}\n`;
description += `• 失败任务数: ${summary.failureCount}\n\n`;
if (summary.failureCount > 0) {
description += `*失败任务:*\n`;
reportData.tasks.filter(t => !t.success).forEach(task => {
description += `• ${task.name}: ${task.error.message}\n`;
});
}
return description;
}
}
module.exports = JiraReportProcessor;
在配置中使用自定义报告处理器:
report:
enabled: true
format: ["html", "json"]
path: "./reports/${timestamp}"
processors:
- name: "jira"
module: "./report-plugin.js"
config:
jiraUrl: "https://your-jira.example.com"
projectKey: "TEST"
配置速查表
| 配置类别 | 关键参数 | 基础值 | 推荐值 | 说明 |
|---|---|---|---|---|
| 环境配置 | MIDSCENE_MODEL | "gpt-4-vision-preview" | 开发:"gpt-4-vision-preview" 生产:"gpt-4o" | AI模型选择,平衡性能与成本 |
| MIDSCENE_CACHE | "false" | 开发:"true" 生产:"false" | 启用缓存加速调试 | |
| MIDSCENE_TIMEOUT | "30000" | "60000" | 操作超时时间(毫秒) | |
| 设备配置 | type | - | "android", "ios", "browser" | 设备类型 |
| deviceId | - | 通过adb/idevice_id获取 | 设备唯一标识符 | |
| connection.type | "usb" | "usb", "network" | 连接方式 | |
| 脚本配置 | tasks[].name | - | 描述性名称 | 任务名称,便于报告分析 |
| errorHandling.retryCount | 0 | 2 | 失败重试次数 | |
| variables | - | 根据测试场景定义 | 脚本参数化 | |
| 桥接配置 | bridge.enabled | false | 复杂场景:true | 是否启用桥接模式 |
| bridge.port | 8765 | 自定义端口避免冲突 | 桥接服务器端口 | |
| bridge.autoConnect | true | false | 是否自动连接 | |
| 报告配置 | report.enabled | true | true | 是否生成报告 |
| report.format | "html" | ["html", "json"] | 报告格式 | |
| report.includeAIThoughts | false | 调试:true 生产:false | 是否包含AI思考过程 | |
| report.captureVideo | false | 关键测试:true | 是否录制操作视频 |
常见问题诊断树
graph TD
A[问题类型] --> B[设备连接问题]
A --> C[AI操作失败]
A --> D[报告生成问题]
A --> E[桥接模式问题]
B --> B1[设备未检测到?]
B1 -->|是| B1a[检查USB连接/驱动]
B1 -->|否| B2[ADB连接失败?]
B2 -->|是| B2a[重启ADB服务: adb kill-server && adb start-server]
B2 -->|否| B3[权限不足?]
B3 -->|是| B3a[以管理员权限运行]
B3 -->|否| B3b[检查设备是否授权调试]
C --> C1[元素未找到?]
C1 -->|是| C1a[优化提示词,更具体描述元素]
C1 -->|否| C2[操作超时?]
C2 -->|是| C2a[增加超时时间或检查网络]
C2 -->|否| C3[AI决策错误?]
C3 -->|是| C3a[启用AI思考过程记录分析原因]
C3 -->|否| C3b[检查应用状态是否符合预期]
D --> D1[报告文件不存在?]
D1 -->|是| D1a[检查报告路径权限]
D1 -->|否| D2[报告内容不完整?]
D2 -->|是| D2a[增加报告生成超时时间]
D2 -->|否| D3[报告格式错误?]
D3 -->|是| D3a[检查报告配置格式]
E --> E1[桥接服务器启动失败?]
E1 -->|是| E1a[检查端口是否被占用]
E1 -->|否| E2[连接被拒绝?]
E2 -->|是| E2a[检查防火墙设置]
E2 -->|否| E3[通信超时?]
E3 -->|是| E3a[检查网络连接或增加超时]
进阶学习路径图
timeline
title Midscene.js进阶学习路径
section 基础阶段 (1-2周)
环境搭建 : 完成本地开发环境配置,运行示例脚本
设备连接 : 掌握Android/iOS设备连接方法
基础脚本 : 使用AI指令编写简单测试脚本
section 中级阶段 (2-3周)
脚本优化 : 学习参数化、模块化和错误处理
桥接模式 : 掌握手动-自动混合操作技巧
报告分析 : 学会从报告中提取关键信息和优化点
section 高级阶段 (3-4周)
自定义扩展 : 开发自定义报告处理器和设备适配器
性能优化 : 优化AI调用和设备交互性能
大规模测试 : 实现设备池管理和并行测试
section 专家阶段 (持续学习)
源码贡献 : 理解框架内部原理并参与开源贡献
高级集成 : 与CI/CD、测试管理系统深度集成
最佳实践 : 形成团队特有的自动化测试方法论
通过本文介绍的五大核心功能,你已经具备了使用Midscene.js构建智能自动化测试系统的基础。记住,自动化测试的关键不仅在于工具的使用,更在于构建适合项目需求的测试策略。随着实践的深入,你会发现AI驱动的自动化测试不仅能提高效率,还能让测试过程更加灵活和智能。现在就动手实践,开启你的智能自动化之旅吧!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
FreeSql功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+、Xamarin 以及 AOT。C#00

