质量与性能保障体系
1. Jest 单元测试覆盖
采用 Jest 作为单元测试框架,构建了全面的测试体系:
1.1 测试配置
javascript
// jest.config.js
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {
prefix: "<rootDir>/../../",
}),
};
这个配置支持:
- TypeScript 测试文件处理
- 路径别名映射
- Node.js 测试环境
1.2 测试脚本集成
在 package.json 中,测试集成到 Turbo 构建系统:
json
"scripts": {
"test": "turbo run test"
}
这种集成允许:
- 并行测试执行
- 增量测试运行
- 缓存测试结果以提高效率
1.3 测试目录结构
测试文件组织在各个包的 tests 目录中,如:
2. 性能指标监控系统
框架内置了强大的性能指标监控系统,主要通过审计工具插件实现。
2.1 核心监控模块 CoreAudit
typescript
export class CoreAudit {
private static readonly PLUGIN_ID = "CoreAudit";
private datas: AuditSourceData[];
private config: AuditConfig;
private config: AuditConfig;
// 监控各类性能数据
public addPerformanceData<K extends keyof TaskDetails>(
data: AuditSourceData<K>,
options?: {
unique?: (item: TaskDetails[K], data: TaskDetails[K]) => boolean;
}
): void {
/_ ... _/;
}
// 收集 setData 调用情况
public addSetDataQueue(params: { page: string; data: any }): void {
/_ ... _/;
}
// 收集网络请求情况
public addRequestQueue(params: { api: string }): void {
/_ ... _/;
}
// 收集数据变更情况
public addOnDpDataChangeQueue(params: {
deviceId: string;
dps: Record<number | string, any>;
}): void {
/_ ... _/;
}
}
2.2 监控指标范围
该系统监控的关键指标包括:
- 渲染性能指标
- setData 调用频率: 监控页面状态更新频率
- setData 数据大小: 监控状态更新的数据量
- 页面渲染耗时: 跟踪页面渲染完成时间
- 网络性能指标
- 请求并发数: 监控同时发起的网络请求数量
- 请求响应时间: 跟踪网络请求的完成时间
- 请求成功率: 记录网络请求的成功/失败状态
- 设备交互指标
- DP 数据变更频率: 监控设备状态数据变更频率
- 设备交互延迟: 分析用户操作到设备响应的时间
- 异常监控
- JS 错误: 捕获并记录 JavaScript 运行时错误
- Promise 异常: 监听未捕获的 Promise 拒绝
- API 调用异常: 记录 API 调用失败情况
2.3 评分触发机制
typescript
// 评分结束处理
const experienceRateEnd = (
res: Record<string, any>,
{ auditInstance }: { auditInstance: CoreAudit }
) => {
const nativeDatas =
typeof res?.source === "string" ? JSON.parse(res?.source) : [];
auditInstance.stopAudit();
const datas = auditInstance.getAuditData();
const mergedData = [...datas, ...nativeDatas];
// 收集基础信息
const accountInfo = appApi.getAccountInfoSync?.();
const systemInfo = appApi.getSystemInfoSync?.() || {};
// 构建评分报告
const basicInfo = {
miniprogramId: accountInfo?.miniProgram?.appId || "",
miniprogramName: accountInfo?.miniProgram?.appName || "",
versionCode: accountInfo?.miniProgram?.version || "",
versionType: versionType,
brand: systemInfo.brand || "",
model: systemInfo.model || "",
network: auditInstance.networkType,
jssdkVersion: systemInfo.SDKVersion || "",
};
return { mergedData, basicInfo };
};
2.4 数据收集与监听
审计工具通过 API 拦截和事件监听收集数据:
typescript
// 监听体验评分结束事件
appApi.onExperienceRateEnd?.((res: Record<string, any>) => {
const { mergedData, basicInfo } = experienceRateEnd(res, { auditInstance });
appApi.navigateToMiniProgram({
appId: "tyraytkqpysspn7jv7",
extraData: {
source: mergedData,
basicInfo: basicInfo,
},
});
});
// IDE 评分结束处理
appApi.onIDERateEnd = (callback) => {
auditInstance.stopAudit();
const datas = auditInstance.getAuditData();
callback?.({ source: datas });
};
3. 集成工程化质量工具
3.1 代码质量工具
json
"devDependencies": {
"@eslint/eslintrc": "^2.1.4",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"prettier": "^3.4.2",
"husky": "^8.0.3"
}
提供:
- ESLint 代码规范检查
- TypeScript 类型检查
- Prettier 代码格式化
- Husky Git 钩子集成
3.2 依赖分析工具
json
"devDependencies": {
"dpdm": "^3.14.0"
}
用于:
- 分析依赖关系
- 检测循环依赖
- 优化包体积
4. 总结
建立全面的质量与性能保障体系:
- 测试驱动质量:使用 Jest 实现单元测试覆盖,保证代码质量
- 实时性能监控:通过 CoreAudit 系统监控关键性能指标
- 用户体验评分:建立评分机制,定量评估应用性能
- 代码规范保障:集成多种工程化工具,确保代码质量
- 依赖优化工具:分析依赖关系,优化包体积和加载性能