PRA-only-demo/resources/test-flows/app-system/REPORT-before-fix.md

154 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 应用与系统组件测试报告
记录时间:2026年10月30日 16:52:04(北京时间)。覆盖 50 项可执行组件,13 组任务。
按组件统计:通过 29,失败 4,阻塞 11,待人工确认 5,未运行 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 | 关闭远程连接 | 待人工确认 |
## 用例证据
| 用例 | 组件 | 状态 | 预期 | 实际/原因 |
|---|---|---|---|---|
| 01-01 | App_Run | 通过 | 第一个测试进程 PID 大于 0 | 37796 |
| 01-02 | App_Run | 通过 | 第二个 PID 大于 0,且与第一个不同 | 48484 |
| 01-03 | App_GetPid | 通过 | 返回本次创建的任一 PID | 37796 |
| 01-04 | App_GetPids | 通过 | 列表恰含本次创建的两个 PID | [37796,48484] |
| 01-05 | App_Kill | 通过 | 结束第一个夹具 PID,第二个仍在运行 | [37796,false,true] |
| 01-06 | App_KillV1 | 通过 | 结束第二个夹具 PID | [48484,false] |
| 01-07 | App_GetPids | 失败 | 所有夹具结束后应返回空数组 [] | [0] |
| 01-08 | App_GetPid | 失败 | 无匹配时应返回 null | 0 |
| 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";目录没有目标类型选项映射,不能猜测编号;当前实现也未读取 into_type。 |
| 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 | 失败 | 返回布尔判定结果(true 或 false),不是类型名称 | "number" |
| 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_mvuqh8oe_gmpo"} |
| 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 | 161 |
| 05-02 | Basic_Delay_V2 | 通过 | 实际等待耗时 80~1800 ms | 186 |
| 05-03 | Basic_Delay_V1 | 通过 | 实际等待耗时 120~1800 ms | 156 |
| 05-04 | Basic_Delay | 失败 | 实际等待耗时 2800~6500 ms | 1013 |
| 05-05 | Basic_RandomInt | 通过 | 最小值等于最大值时返回整数 7 | 7 |
| 05-06 | Basic_RandomInt | 通过 | 返回 -2~2 的整数 | -2 |
| 05-07 | Basic_Rnd | 通过 | 随机小数满足 0 ≤ x < 1 | 0.6374054093586852 |
| 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 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 07-02 | System_ExecuteCommandV1 | 阻塞 | RPA-DOS-OK | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 07-03 | System_ExecuteCommandV1 | 阻塞 | RPA-PS-V1-OK | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 07-04 | System_ExecuteCommandV1 | 阻塞 | RPA-BAT-OK | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 07-05 | System_ExecuteCommand | 阻塞 | 非零退出码应抛出异常 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 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 | 阻塞 | 未启用密码保护时无需密码也应能运行 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 11-04 | System_ScreenSaverStop | 阻塞 | 第二种屏保实际关闭 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 12-01 | ScreenControl_Screenlock | 阻塞 | 实际锁屏;需要人在机器旁用 Windows 登录凭据恢复,不改变账户密码 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 12-02 | ScreenControl_ScreenUnlock | 阻塞 | 核对 Windows 登录解锁;当前实现仅尝试唤醒屏幕,不能标记自动解锁通过 | 运行前参数校验拦截,未绕过校验;详见校验问题 |
| 13-01 | System_ConnectRemoteDesktop | 待人工确认 | 人工完成登录,并确认已连接到正确测试机器;启动 mstsc 不等于连接成功 | 手动任务不纳入自动执行 |
| 13-02 | System_CloseRemoteDesktop | 待人工确认 | 确认目标会话及恢复方式后才能执行;当前实现会调用 tsdiscon | 手动任务不纳入自动执行 |
## 运行前校验阻塞
- test_appsystem_07:「System_ExecuteCommandV1」缺少必填参数:BAT文件;「System_ExecuteCommandV1」缺少必填参数:PowerShell命令;「System_ExecuteCommandV1」缺少必填参数:DOS命令;「System_ExecuteCommandV1」缺少必填参数:BAT文件;「System_ExecuteCommandV1」缺少必填参数:DOS命令;「System_ExecuteCommandV1」缺少必填参数:PowerShell命令
- test_appsystem_08:「System_AddCredential」缺少必填参数:用户名
- test_appsystem_11:「System_ScreenSaverShowV1」缺少必填参数:password
- test_appsystem_12:「ScreenControl_Screenlock」缺少必填参数:用户名;「ScreenControl_Screenlock」缺少必填参数:密码;「ScreenControl_Screenlock」缺少必填参数:分辨率(宽);「ScreenControl_Screenlock」缺少必填参数:分辨率(高);「ScreenControl_ScreenUnlock」缺少必填参数:用户名;「ScreenControl_ScreenUnlock」缺少必填参数:密码
## 证据位置
隔离用户目录:D:\work\code\RPA-only-demo\test-output\app-system\isolated-I8utNv
- test_appsystem_01:D:\work\code\RPA-only-demo\test-output\app-system\isolated-I8utNv\runs\run_mvuqh1m8_mpns\run.json
- test_appsystem_02:D:\work\code\RPA-only-demo\test-output\app-system\isolated-I8utNv\runs\run_mvuqh8fe_enbw\run.json
- test_appsystem_03:D:\work\code\RPA-only-demo\test-output\app-system\isolated-I8utNv\runs\run_mvuqh8lw_3nsu\run.json
- test_appsystem_04:D:\work\code\RPA-only-demo\test-output\app-system\isolated-I8utNv\runs\run_mvuqh8oe_gmpo\run.json
- test_appsystem_05:D:\work\code\RPA-only-demo\test-output\app-system\isolated-I8utNv\runs\run_mvuqh8sp_54xy\run.json
- test_appsystem_06:D:\work\code\RPA-only-demo\test-output\app-system\isolated-I8utNv\runs\run_mvuqha0h_4bfu\run.json