提供 13 组、74 个用例,覆盖 49 项可执行组件。 新增隔离运行、真实界面检查、结果汇总和安全安装脚本。 升级仅覆盖未修改的测试模板,并保留原文件备份。 为手动操作设置保护开关,保留修复前后验证证据。 验证:43 项相关检查、类型检查与构建通过。
13 KiB
13 KiB
应用与系统组件测试报告
记录时间:2026年10月30日 18:50:29(北京时间)。覆盖 49 项可执行组件,13 组任务。
按组件统计:通过 36,失败 0,阻塞 5,待人工确认 8,未运行 0。
状态依据是断言、前置校验和人工证据,节点执行成功不直接代表功能通过。未执行手动系统操作。
| 组 | 组件 ID | 名称 | 状态 |
|---|---|---|---|
| 01 | App_Run | 启动应用程序 | 通过 |
| 01 | App_GetPid | 获取一个匹配PID | 通过 |
| 01 | App_GetPids | 获取全部匹配PID | 通过 |
| 01 | App_Kill | 关闭应用程序 | 通过 |
| 01 | App_KillV1 | 关闭应用程序 | 通过 |
| 02 | Basic_StringToNum | 将文本转换为数字 | 通过 |
| 02 | Basic_ConvertNumber | 数据转为数值类型 | 通过 |
| 02 | Basic_ConvertInt | 数值转为整数类型 | 通过 |
| 02 | Basic_ConvertBool | 数据转为布尔类型 | 通过 |
| 02 | Basic_ConvertString | 将数字转换为文本 | 通过 |
| 02 | Basic_DataTypeConversion | 转换数据类型 | 通过 |
| 03 | Basic_IsDictionary | 判断数据是否为字典 | 通过 |
| 03 | Basic_IsNumber | 判断数据是否为数值 | 通过 |
| 03 | Basic_IsNull | 判断数据是否为空 | 通过 |
| 03 | Basic_IsArray | 判断数据是否为数组 | 通过 |
| 03 | Basic_Type | 获取数据类型 | 通过 |
| 03 | Basic_JudgeDataType | 判断数据类型 | 通过 |
| 04 | Basic_SetVariable | 设置变量 | 通过 |
| 04 | Basic_SetVariable_V1 | 设置变量 | 通过 |
| 04 | Basic_Clone | 复制数据 | 通过 |
| 04 | Basic_GetProcessInfo | 获取流程信息 | 通过 |
| 04 | Basic_DebugOutput | 调试输出 | 通过 |
| 04 | CustomConfig_GetConfig | 自定义配置 | 通过 |
| 04 | Basic_BusinessOrderCount | 业务办理计数 | 通过 |
| 05 | Basic_Delay_V2 | 等待 | 通过 |
| 05 | Basic_Delay_V1 | 等待 | 通过 |
| 05 | Basic_Delay | 流程延迟执行 | 通过 |
| 05 | Basic_RandomInt | 生成随机数 | 通过 |
| 05 | Basic_Rnd | 生成随机数 | 通过 |
| 06 | System_GetTempPath | 获取临时文件夹路径 | 通过 |
| 06 | System_GetHomePath | 获取用户文件夹路径 | 通过 |
| 06 | System_GetSystemPath | 获取系统文件夹路径 | 通过 |
| 06 | System_GetEnv | 获取环境变量 | 通过 |
| 06 | System_SetEnv | 设置环境变量 | 通过 |
| 07 | System_ExecuteCommand | 执行命令行 | 通过 |
| 07 | System_ExecuteCommandV1 | 执行命令行 | 通过 |
| 08 | System_AddCredential | 添加Windows凭据 | 阻塞 |
| 08 | System_ReadCredential | 获取Windows凭据 | 阻塞 |
| 08 | System_DeleteCredential | 删除Windows凭据 | 阻塞 |
| 09 | System_GetInputMethodState | 获取输入法状态 | 待人工确认 |
| 09 | System_SetInputMethodState | 设置输入法状态 | 待人工确认 |
| 10 | System_PlaySound | 播放音频 | 待人工确认 |
| 11 | System_ScreenSaverShow | 开启屏保 | 待人工确认 |
| 11 | System_ScreenSaverShowV1 | 开启屏保 | 待人工确认 |
| 11 | System_ScreenSaverStop | 关闭屏保 | 待人工确认 |
| 12 | ScreenControl_Screenlock | 屏幕锁屏 | 阻塞 |
| 12 | ScreenControl_ScreenUnlock | 唤醒屏幕(非登录解锁) | 阻塞 |
| 13 | System_ConnectRemoteDesktop | 连接远程桌面 | 待人工确认 |
| 13 | System_CloseRemoteDesktop | 关闭远程连接 | 待人工确认 |
真实界面验证
已通过独立 Electron 窗口检查:类型下拉选项、PID/名称参数切换、DOS/PowerShell 参数切换,以及唤醒组件不再索要账号密码。界面快照及 ui-check.json 保存在 test-output/app-system/。
用例证据
| 用例 | 组件 | 状态 | 预期 | 实际/原因 |
|---|---|---|---|---|
| 01-01 | App_Run | 通过 | 第一个测试进程 PID 大于 0 | 53688 |
| 01-02 | App_Run | 通过 | 第二个 PID 大于 0,且与第一个不同 | 47408 |
| 01-03 | App_GetPid | 通过 | 返回本次创建的任一 PID | 47408 |
| 01-04 | App_GetPids | 通过 | 列表恰含本次创建的两个 PID | [47408,53688] |
| 01-05 | App_Kill | 通过 | 结束第一个夹具 PID,第二个仍在运行 | [53688,false,true] |
| 01-06 | App_KillV1 | 通过 | 只填写 PID 即可结束第二个夹具进程 | [47408,false] |
| 01-07 | App_GetPids | 通过 | 所有夹具结束后应返回空数组 [] | [] |
| 01-08 | App_GetPid | 通过 | 无匹配时应返回 null | null |
| 02-01 | Basic_StringToNum | 通过 | 数字 123.5 | 123.5 |
| 02-02 | Basic_ConvertNumber | 通过 | 数字 -42.25 | -42.25 |
| 02-03 | Basic_ConvertInt | 通过 | 整数 -3(向零截断) | -3 |
| 02-04 | Basic_ConvertBool | 通过 | 布尔 true | true |
| 02-05 | Basic_ConvertBool | 通过 | 布尔 false | false |
| 02-06 | Basic_ConvertString | 通过 | 文本 "42" | "42" |
| 02-07 | Basic_DataTypeConversion | 通过 | 数值 42,严格区分文本和数值 | 42 |
| 02-08 | Basic_DataTypeConversion | 通过 | 整数 -3 | -3 |
| 02-09 | Basic_DataTypeConversion | 通过 | 布尔 false | false |
| 02-10 | Basic_DataTypeConversion | 通过 | 文本 "42" | "42" |
| 03-01 | Basic_IsDictionary | 通过 | true | true |
| 03-02 | Basic_IsDictionary | 通过 | false | false |
| 03-03 | Basic_IsNumber | 通过 | true | true |
| 03-04 | Basic_IsNumber | 通过 | false | false |
| 03-05 | Basic_IsNull | 通过 | true | true |
| 03-06 | Basic_IsNull | 通过 | true | true |
| 03-07 | Basic_IsNull | 通过 | false | false |
| 03-08 | Basic_IsArray | 通过 | true | true |
| 03-09 | Basic_IsArray | 通过 | false | false |
| 03-10 | Basic_Type | 通过 | "list" | "list" |
| 03-11 | Basic_Type | 通过 | "null" | "null" |
| 03-12 | Basic_JudgeDataType | 通过 | 数字 42 属于数值类型,返回布尔 true | true |
| 04-01 | Basic_SetVariable | 通过 | 原值及输出变量均保持中文文本 | "中文变量往返" |
| 04-02 | Basic_SetVariable_V1 | 通过 | 数字 42 | 42 |
| 04-03 | Basic_SetVariable_V1 | 通过 | 数组 [1,2] | [1,2] |
| 04-04 | Basic_Clone | 通过 | 深复制内容相同,外层和嵌套对象均不共用引用 | {"title":"中文","nested":{"n":1}} |
| 04-05 | Basic_GetProcessInfo | 通过 | 当前流程 ID、名称、运行 ID 和节点数一致 | {"id":"test_appsystem_04","name":"组件测试 04 · 变量与配置","description":"查看运行日志中的用例结果;有失败时任务最终显示失败,其他用例仍继续。","enabled":true,"trigger":{"type":"manual","label":"手动运行"},"version":"0.1.0","createdAt":"2026-10-30T00:00:00.000Z","updatedAt":"2026-10-30T00:00:00.000Z","nodeCount":99,"runId":"run_mvuupg9x_yifj"} |
| 04-06 | Basic_DebugOutput | 通过 | 日志及返回值为“中文日志测试:42” | "中文日志测试:42" |
| 04-07 | CustomConfig_GetConfig | 通过 | 数字 30 | 30 |
| 04-08 | CustomConfig_GetConfig | 通过 | 未命中返回 null | null |
| 04-09 | Basic_BusinessOrderCount | 通过 | 首次计数 12 | 12 |
| 04-10 | Basic_BusinessOrderCount | 通过 | 同一流程再次计数 14 | 14 |
| 05-01 | Basic_Delay_V2 | 通过 | 实际等待耗时 120~1800 ms | 165 |
| 05-02 | Basic_Delay_V2 | 通过 | 实际等待耗时 80~1800 ms | 122 |
| 05-03 | Basic_Delay_V1 | 通过 | 实际等待耗时 120~1800 ms | 154 |
| 05-04 | Basic_Delay | 通过 | 实际等待耗时 2800~6500 ms | 3011 |
| 05-05 | Basic_RandomInt | 通过 | 最小值等于最大值时返回整数 7 | 7 |
| 05-06 | Basic_RandomInt | 通过 | 返回 -2~2 的整数 | 2 |
| 05-07 | Basic_Rnd | 通过 | 随机小数满足 0 ≤ x < 1 | 0.18320588816502648 |
| 06-01 | System_GetTempPath | 通过 | 与系统临时目录一致(忽略尾部分隔符) | "C:\Users\Administrator\AppData\Local\Temp" |
| 06-02 | System_GetHomePath | 通过 | 与 Windows 用户文件夹一致 | "C:\Users\Administrator" |
| 06-03 | System_GetSystemPath | 通过 | 与 Windows 实际桌面目录一致(包含重定向) | "C:\Users\Administrator\Desktop" |
| 06-04 | System_GetEnv | 通过 | 读取测试专用变量的原始值,作为恢复依据 | "隔离环境原始值" |
| 06-05 | System_SetEnv | 通过 | 当前应用进程内设置成功 | "中文-测试-42" |
| 06-06 | System_GetEnv | 通过 | 能读回中文-测试-42 | "中文-测试-42" |
| 06-07 | System_SetEnv | 通过 | 恢复测试前读取值 | "隔离环境原始值" |
| 07-01 | System_ExecuteCommand | 通过 | RPA-PS-中文-OK | "RPA-PS-中文-OK" |
| 07-02 | System_ExecuteCommandV1 | 通过 | RPA-DOS-OK | "RPA-DOS-OK" |
| 07-03 | System_ExecuteCommandV1 | 通过 | RPA-PS-V1-OK | "RPA-PS-V1-OK" |
| 07-04 | System_ExecuteCommandV1 | 通过 | RPA-BAT-OK | "RPA-BAT-OK" |
| 07-05 | System_ExecuteCommand | 通过 | 非零退出码应抛出异常 | "桌面操作失败:Command failed: powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -EncodedCommand JABQAHIAbwBnAHIAZQBzAHMAUAByAGUAZgBlAHIAZQBuAGMAZQA9ACcAUwBpAGwAZQBuAHQAbAB5AEMAbwBuAHQAaQBuAHUAZQAnADsAIABbAEMAbwBuAHMAbwBsAGUAXQA6ADoATwB1AHQAcAB1AHQARQBuAGMAbwBkAGkAbgBnAD0AWwBTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBVAFQARgA4AEUAbgBjAG8AZABpAG4AZwBdADoAOgBuAGUAdwAoACQAZgBhAGwAcwBlACkAOwAgACQATwB1AHQAcAB1AHQARQBuAGMAbwBkAGkAbgBnAD0AWwBDAG8AbgBzAG8AbABlAF0AOgA6AE8AdQB0AHAAdQB0AEUAbgBjAG8AZABpAG4AZwA7ACAAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAnAFIAUABBAC0ARQBSAFIATwBSAC0AUABSAE8AQgBFACcAOwAgAGUAeABpAHQAIAA5AA==\n" |
| 08-01 | System_AddCredential | 阻塞 | 安全输入机制准备好后,在专用目标添加测试凭据 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 08-02 | System_ReadCredential | 阻塞 | 仅验证测试凭据存在,不读取或打印密码 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 08-03 | System_DeleteCredential | 阻塞 | 删除刚创建的测试目标,之后人工确认不存在 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 09-01 | System_GetInputMethodState | 待人工确认 | 读取前台窗口的真实输入法状态,人工对照任务栏 | 手动任务不纳入自动执行 |
| 09-02 | System_SetInputMethodState | 待人工确认 | 前台编辑器应切换到英文模式;仅子进程返回 set:true 不能算通过 | 手动任务不纳入自动执行 |
| 09-03 | System_SetInputMethodState | 待人工确认 | 恢复原输入法;人工确认前台窗口的实际状态 | 手动任务不纳入自动执行 |
| 10-01 | System_PlaySound | 待人工确认 | 听到一次短提示音;没有声音不能算通过 | 手动任务不纳入自动执行 |
| 11-01 | System_ScreenSaverShow | 待人工确认 | 屏幕实际进入屏保;无配置时记录阻塞 | 手动任务不纳入自动执行 |
| 11-02 | System_ScreenSaverStop | 待人工确认 | 屏保实际关闭,可正常操作 | 手动任务不纳入自动执行 |
| 11-03 | System_ScreenSaverShowV1 | 待人工确认 | 开启 Windows 已配置的屏保,不要求输入密码;人工确认屏幕实际变化 | 手动任务不纳入自动执行 |
| 11-04 | System_ScreenSaverStop | 待人工确认 | 第二种屏保实际关闭 | 手动任务不纳入自动执行 |
| 12-01 | ScreenControl_Screenlock | 阻塞 | 实际锁屏;需要人在机器旁用 Windows 登录凭据恢复,不改变账户密码 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 12-02 | ScreenControl_ScreenUnlock | 阻塞 | 仅尝试唤醒屏幕,loginUnlockSupported 必须为 false;Windows 登录仍需人工完成 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 13-01 | System_ConnectRemoteDesktop | 待人工确认 | 人工完成登录,并确认已连接到正确测试机器;启动 mstsc 不等于连接成功 | 手动任务不纳入自动执行 |
| 13-02 | System_CloseRemoteDesktop | 待人工确认 | 确认目标会话及恢复方式后才能执行;当前实现会调用 tsdiscon | 手动任务不纳入自动执行 |
运行前校验阻塞
- test_appsystem_08:「System_AddCredential」缺少必填参数:用户名
- test_appsystem_12:「ScreenControl_Screenlock」缺少必填参数:用户名;「ScreenControl_Screenlock」缺少必填参数:密码;「ScreenControl_Screenlock」缺少必填参数:分辨率(宽);「ScreenControl_Screenlock」缺少必填参数:分辨率(高)
证据位置
隔离用户目录:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C
- test_appsystem_01:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C\runs\run_mvuuparb_ikwv\run.json
- test_appsystem_02:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C\runs\run_mvuupg4i_9qr9\run.json
- test_appsystem_03:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C\runs\run_mvuupg6q_6ij5\run.json
- test_appsystem_04:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C\runs\run_mvuupg9x_yifj\run.json
- test_appsystem_05:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C\runs\run_mvuupgcn_2wod\run.json
- test_appsystem_06:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C\runs\run_mvuupj2n_b65x\run.json
- test_appsystem_07:D:\work\code\RPA-only-demo\test-output\app-system\isolated-PN2R7C\runs\run_mvuupjiv_mh0i\run.json