ClassPad 真机测试结果

每一条都在真实平板上执行,并回到设备上核对结果 —— 不看接口返回,不看「已下发」。

测试时间:2026-09-23 18:39:37+0800 · 结论:有判据不通过
测试设备 厂商自有测试机,序列号 T69A2026080025
平板端版本 4.1.8.7 (601)
被测安装包 SHA-256 6e73e908fee9b9dcdb35b1b8b247e75a60f29861fd0d48f0399e87d06368a56b
与官网下载的安装包比对这一串,即可确认「测的就是发的」。
服务端 https://classpad.owly.cn
82通过
1不通过
0未验到
83合计
关于「未验到」:既不算通过,也不算不通过。算通过是自欺;算不通过等于把环境限制说成产品缺陷。下表中每一条「未验到」都写明了受限原因与补验条件。
单独复验某一项:改动只涉及一个功能时,不必跑完整轮 —— 在测试机上执行 python3 run.py --only <项名里的关键词>,例如 --only 举手、--only 推课件,只跑名字里含这个词的判据,前置由判据自己建好。

专注模式与应用锁定

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
多应用 Kiosk 桌面真的进了锁定白名单多应用桌面:桌面上的应用必须真的进了系统锁定白名单。通过 26 秒平板后台
固定到应用真的锁住了目标应用固定到应用:设备必须真的处于锁定任务,且前台是目标应用。通过 8 秒平板后台
Kiosk 加固在学生用着应用时也落得上(条款 4)Kiosk 加固在**学生正用着应用时**也要落得上(招标条款 4)。通过 72 秒平板后台
隐藏系统应用真的隐藏了浏览器与商店隐藏系统应用:浏览器与商店要对用户不可见,而「设置」必须仍在。通过 26 秒平板后台
隐藏浏览器商店不会把相机一起隐藏掉隐藏浏览器与商店,**不能把相机一起隐藏掉**。通过 26 秒平板后台

推送通道与远程看屏

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
推送通道真的连着且用的是签发账号推送必须真的连着,而且用的是服务端签发的账号。通过 0 秒平板后台
远程截屏的图真的到了服务端远程截屏:指令送到之后,服务端要真的多出一张新截图。通过 64 秒平板后台
一次授权撑一节课,之后截屏不再打扰学生一次授权撑一节课:第一次截屏学生点一次「开始」,之后连续再截两张都不再打扰他。通过 43 秒平板后台
硬件限制真的落到系统用户限制上硬件限制:系统里真正生效的限制集合要包含它们,撤销后要真的消失。通过 31 秒平板后台

即时指令

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
调节屏幕亮度真的改了系统亮度调节屏幕亮度:系统 screen_brightness 要落到期望值(我们发百分比,设备端换算成 0-255)。通过 5 秒平板后台
调节音量真的改了媒体音量调节音量:媒体音量要落到期望档位(读设备当前实际音量)。通过 2 秒平板后台
修改设备名做不到时如实回报失败(平台禁止,非缺陷)修改设备名:Android 禁止设备所有者改系统设备名 —— 我们要保证的是**如实回报失败**。通过 4 秒平板后台
开启/关闭定位真的改了定位模式开启/关闭定位:系统 location_mode 要跟着变(0=关,非 0=开)。通过 5 秒平板后台
启动应用真的把应用拉到前台启动应用:目标应用要真的到前台。通过 2 秒平板后台
强制同步真的让服务端时间前进强制同步:服务端的 last_sync_at 要前进。通过 3 秒平板后台

屏幕与消息

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
发送消息弹窗真的显示在设备上发送消息:弹窗要真的显示在设备上。通过 6 秒平板后台
共享桌面的授权框真的弹到学生屏幕上共享桌面:授权框要真的弹到学生的屏幕上。通过 42 秒平板后台
停止共享真的把投屏停掉停止共享:系统里的那一路投屏要真的没了。依赖上一条先把投屏开起来。通过 2 秒平板后台
锁屏时发起共享会如实说明原因而不是沉默锁屏时发起共享:必须如实回失败并说清下一步,不能沉默。通过 9 秒平板后台
锁定屏幕真的锁上了锁定屏幕:我们的锁屏界面要真的顶到前台。通过 2 秒平板后台
解除锁定真的解开了解除锁定:锁屏界面要真的退下去。依赖 check_lock 先把设备锁上。通过 2 秒平板后台

应用管理

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
安装应用真的装到了设备上安装应用:包要真的出现在设备上。通过 16 秒平板后台
清除应用数据真的清空了应用私有数据清除应用数据:夹具的标记文件要真的没了。通过 9 秒平板后台
上报应用列表与设备上的真实应用对得上上报应用列表:服务端存下来的名单要与设备上真实的启动器应用对得上。通过 1 秒平板后台
采集应用使用时长真的收到了非空记录采集应用使用时长:服务端要真的收到这台设备的使用记录。通过 0 秒平板后台
卸载应用真的从设备上卸掉了卸载应用:包要真的从设备上消失。跑在 clearAppCache 之后,顺手收掉夹具。通过 105 秒平板后台
卸不掉的应用如实回失败而不是报成功卸不掉的应用必须如实回失败 —— 不许报成功。通过 107 秒平板后台
清除通讯录数据真的清掉了系统里的联系人清除「通讯录」的应用数据,系统里的联系人要真的没了。通过 12 秒平板后台
商店里的包都登记了签名指纹应用商店里的每个包都要登记签名指纹 —— 没有指纹的包到了设备上装不了。通过 0 秒平板后台

文件下发

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
下发文件真的落到平板的目录里下发文件:课件要真的落到平板的 /sdcard/Download/ 下。通过 6 秒平板后台
删除文件真的把平板上的文件删掉删除文件:平板上的那个文件要真的没了。依赖上一条先把文件放上去。通过 3 秒平板后台

诊断与设备设置

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
单次定位真的取到了新位置点单次定位:服务端要真的多出一个这台设备的位置点。通过 25 秒平板后台
持续定位真的连续上报轨迹持续定位:一段时间内要连续上报多个位置点,不是只报一个就停。通过 41 秒平板后台
网络探测能分辨通与不通网络探测:要能分辨通与不通,两边都验。通过 15 秒平板后台
抓取日志做不到时如实回报失败抓取日志:标准设备所有者形态做不到,必须如实回失败并说清楚下一步。通过 4 秒平板后台
检查固件更新做不到时如实回报失败检查固件更新:本机未预置系统升级程序,必须如实回失败。通过 4 秒平板后台
设置锁屏口令真的设成了下发的那个设置锁屏口令:系统里要真的有口令,且就是我们下发的那个。通过 4 秒平板后台
清除锁屏口令真的把口令清掉清除锁屏口令:系统里要真的没有口令了。依赖上一条先设上。通过 4 秒平板后台
自升级时机设置真的落到设备上自升级时机:设置要真的落到设备上(写完读回一致)。通过 7 秒平板后台

策略下发

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
25 项限制类策略真的落到系统限制上25 项限制类策略:下发后系统里要逐项多出对应的限制键。通过 85 秒平板后台
撤销后这些限制真的从系统里消失撤销后这些限制要真的从系统里消失。依赖上一条先把它们加上。通过 44 秒平板后台
落在系统设置里的策略真的改了设置落在系统 settings 里的策略:值要真的改过去,撤销后要回落。通过 8 秒平板后台
锁屏口令策略真的落到系统上锁屏口令策略:复杂度与最短长度要真的落到系统上。通过 22 秒平板后台
禁止截屏真的置上了系统标志禁止截屏:系统的 screenCaptureDisabled 要真的置上,撤销后要真的放开。通过 8 秒平板后台
做不到的策略如实回报失败而不是配了白配当前设备形态做不到的那几项:必须如实回报失败,不能配了白配还显示成功。通过 61 秒平板后台

控制台页面

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
控制台页面打得开且有内容:dashboard用浏览器以管理员身份打开控制台的 dashboard 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 3 秒平板后台
控制台页面打得开且有内容:org用浏览器以管理员身份打开控制台的 org 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:groups用浏览器以管理员身份打开控制台的 groups 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:enroll用浏览器以管理员身份打开控制台的 enroll 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:devices用浏览器以管理员身份打开控制台的 devices 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:devices/d9e50cdc0514b1e5b39681124e836ffe8用浏览器以管理员身份打开控制台的 devices/d9e50cdc0514b1e5b39681124e836ffe8 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:policies用浏览器以管理员身份打开控制台的 policies 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:apps用浏览器以管理员身份打开控制台的 apps 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:client用浏览器以管理员身份打开控制台的 client 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:filelib用浏览器以管理员身份打开控制台的 filelib 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:alerts用浏览器以管理员身份打开控制台的 alerts 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:classroom用浏览器以管理员身份打开控制台的 classroom 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:wall用浏览器以管理员身份打开控制台的 wall 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:reports用浏览器以管理员身份打开控制台的 reports 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:branding用浏览器以管理员身份打开控制台的 branding 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:theme用浏览器以管理员身份打开控制台的 theme 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:users用浏览器以管理员身份打开控制台的 users 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:sso-settings用浏览器以管理员身份打开控制台的 sso-settings 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:parent-requests用浏览器以管理员身份打开控制台的 parent-requests 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:parent-portal用浏览器以管理员身份打开控制台的 parent-portal 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:audits用浏览器以管理员身份打开控制台的 audits 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台
控制台页面打得开且有内容:storage用浏览器以管理员身份打开控制台的 storage 页面,等它真正渲染出内容,再确认三件事:页面主体不是空的、没有出现错误提示、浏览器控制台没有报 JS 异常。只看 HTTP 200 不算 —— 白屏页面同样会回 200。通过 0 秒平板后台

功能性测试(模拟真人点界面)

测试项测试步骤(机器实际执行的动作)结论截图(平板 / 后台)
指令面板发完,下发记录不刷新也会自己变成「成功」在指令面板发一条指令、不刷新页面,下发记录要自己从「未回执」变成「成功」。不通过 48 秒
下发后 40 秒,下发记录最新一行仍是「(找不到 dataSync)」——列表没有自己刷新
同一安装包单独重跑(2026-09-23 18:41:10+0800,工件 20260923-184029):通过
平板后台
每个下载源都能跨源读到且内容一致每个候选下载源都要能被控制台跨源读到,且内容一致。通过 4 秒平板后台
点「选择安装包」真的唤起文件选择点「选择安装包」要真的唤起文件选择。通过 5 秒平板后台
界面上点「启动应用」设备真的把应用拉到前台在设备详情页选一个应用点发送,设备上那个应用要真的到前台。通过 14 秒平板后台
界面上点「固定到应用」设备真的被固定住在设备详情页点「固定到应用」,设备要真的进入锁定任务且前台是那个应用。通过 13 秒平板后台
界面上点「解除固定」设备真的解开点「解除固定」,设备要真的退出锁定任务。依赖上一条先固定住。通过 9 秒平板后台
老师点「上课」+「锁定全班」学生平板真的锁上老师点「上课」→「锁定全班」,学生平板要真的锁上。通过 16 秒平板后台
点「解除锁定」学生平板真的解开点「解除锁定」,学生平板要真的解开。依赖上一条先锁上。通过 8 秒平板后台
点「全班截屏」真的拿到学生屏幕图点「全班截屏」,服务端要真的多出学生的屏幕图。通过 67 秒平板后台
老师点「推课件到全班」学生平板真的打开了课件老师点「推课件到全班」,学生平板要真的把课件打开在屏幕上。通过 29 秒平板后台
老师出的随堂题真的弹到学生平板上老师在界面上出一道随堂题,学生平板上要真的弹出题目并能选。通过 23 秒平板后台
学生答题后老师界面上的统计真的变了学生在平板上选一项,老师界面上的统计要真的变。依赖上一条先把题推出去。通过 13 秒平板后台
学生点「举手」老师界面上真的看到他学生在平板上点「举手」,老师界面上要真的出现这个学生。通过 61 秒平板后台
看屏幕:两条入口都真的看到学生屏幕的画面老师发起看屏,浏览器里要真的出现学生屏幕的连续画面 —— **两条入口都验**。通过 63 秒平板后台
平板连不上服务器时,共享失败如实报回、看屏页说得出原因平板连不上服务器时,共享桌面要如实报失败,老师的看屏页要说出平板给的原因。通过 48 秒平板后台
点「下课」课堂真的结束点「下课」,课堂要真的结束(服务端不再有进行中的课)。通过 10 秒平板后台