iOS 的 bug 毁了一次我的 SAT 考试
TLDR: iOS 17 的 Automatic Assessment Configuration (用来防切屏的)框架存在一聚焦在 HTML 输入控件就会闪退的 bug,College Board 直到9月的 iOS 17 正式版发布都没有察觉,导致10月使用iPad考试的考生不幸中枪
在 2023 年 SAT 改革后,所有国际考场的 SAT 都会用机考来取代以往的纸考。而不同于 TOEFL、ACT 等同样采用机考的考试,SAT Digital Test 要求考生自行准备设备(支持 Mac, Windows, iPad 和 Chromebook),并安装 Bluebook app 来进行考试。考试分为 Reading 和 Math 两个部分,中间有 10 分钟的休息。
参加考试
我报名的这场考试是 2023 年 10 月 7 日,在澳门理工大学举行的。我当时手上有两台设备:一台 16 英寸 Intel MacBook Pro (2019) 和 iPad Pro 2022。因为考试大概持续 2-3 个小时,又因为我对 Intel MBP 的续航极其不信任(经常上课开几个 IDE 一个半小时就没电了),所以我决定使用 iPad 来进行考试。
进入考场后,连上考场 WI-FI,一直到等待开考,这一切还算顺利。但是在 proctor 读完 instructions 之后输入 Start Code 的时候,我的 iPad 直接闪退回了主界面。
这里补充一点,在使用 Bluebook 进入考试后,它会利用 iPadOS 的 Automatic Assessment Configuration 框架来自动锁定设备,防止切屏、自动拼写检查、共享剪贴板等功能。
我肯定不敢瞎碰啊,赶紧举手找监考员来处理。这个时候我的 iPad 处在一种很奇怪的状况:从顶部状态栏来看,我的 iPad 还处在 AAC 锁定模式下,只是回到了主屏幕。
此时 Bluebook 陷入了无限闪退,循环了几次 iPad 就自动重启了,这个时候我重新打开 Bluebook 登录,输入了 Start Code,界面正常的进入了第一个 Reading Section。一切看似都正常了,我也赶紧开始做题,没有多想。
这个时候已经开考5分钟了,虽然 SAT 机考每个人都是单独做题,但是中间休息的时间轴对不上,所有人都提前你 5 分钟去休息,心态多多少少的会收到一点影响。
就这样,我有惊无险的做完了 Reading 部分。
事态恶化
中场休息回来后,我深吸一口气,准备开始 Math 部分。此时我的心情还算比较平静,因为 SAT Math 的第一个 Module 大多都是送分题。
然而,在我计算完一道填空题后点击了屏幕上的输入框,正准备录入答案时,Bluebook 再一次毫无征兆地闪退了。我赶紧举手叫监考员,但还是重复了刚开始考试时候的一套步骤。
好在回到 Bluebook 后,我的时间和做题进度都被保存了。我胆战心惊的又做了几道题,在我做到另外一道填空题的时候,又闪退了。
这个时候我的心态已经崩了。好几个监考员围到我身边来看我的情况。这个时候重点来了,一个监考员让我把 Bluebook 卸载了重装,我照做了,然后这个时候对于 Bluebook 来说,我的设备成了一台新的设备,不能直接进入考试,而需要 Proctor 来批准。
然而由于此时已经进入到考试的第二部分,尽管 main proctor 批准了更换设备的请求,摆在我面前的只有一个冷冰冰的弹窗:
我被彻底地锁在了考试之外。尽管考场提供了备用的 Thinkpad 电脑,我也没有办法继续考试。我当时整个人还是懵的状态,但是不得不接受我这一趟白跑了的事实。考试费或许还能要求 CB 退还,但是我从北京到澳门的往返机票、酒店这些费用就全浪费了。
这个时候我去跟考场的人交涉,对方十分冷淡地表示什么都做不了,只能会给 SAT 的主办方 College Board 写一张 ticket 来描述一下事故(但是事后发现他们大概率并没有写),之后因为考试还没有结束,一直让我坐着干等到 11 点才能离场。
(这一点跟国内考场比真是差远了,至少国内大大小小的各项考试应急处理预案都很完善,肯定会尽快安排重考)
事后调查
我此时已完全没有心情在澳门闲逛,回到酒店拿上行李后便直奔机场。在机场候机时,我突然想到每一次的闪退都是在我点击到能输入文本的地方后出现的。我当即打开电脑,在搜索一番后,Apple Developer 上的一则几周前发布的标题为「iOS 17 bug - app crashes when input element is focused when using Automatic Assessment Configuration」(iOS 17 错误 - 使用自动评估配置时,当输入元素被聚焦时,应用程序会崩溃) 的帖文引起了我的注意:
根据帖子的描述,在使用 iOS 17 下的设备进入使用 WebKit 构建的应用的 AAC 锁定模式后,app 在聚焦到 HTML 的 <input>
输入控件后会崩溃。
这个时候我已经相信我找到了答案。我的 iPad 当时使用的就是于 9月18日(考试日前约半个月)发布的 iPad OS 17。而 Bluebook 也是一眼能看出来是用的 WebKit。
到这里真相水落石出了。尽管考前几天前就有 Device Test(设备检测)环节,但是也就是检查一下显示效果、试卷能不能正常加载等基础项目,并没有真的完全进入 AAC 锁定模式来完全模拟考试环境。
但令我无法接受的是,Apple 在今年的6月6日就推出了 iPadOS 17 的第一个 developer beta,而 CB (College Board) 的技术人员竟然根本没有在新系统上测试过他们的 Bluebook 考试软件,放任这个几乎 100% 复现的定时炸弹从 6月的 Developer Beta 就一直存在,中间经过了 8 个 beta 版,一直到了9月 Apple 秋季发布会后的正式版,在半个月后的 SAT 实考时炸了。
哪怕 CB 的 iOS 相关测试人员执行一次测试,或是多多关注一下 Apple Developer Forum,这样的事故就根本不会发生。
退一步讲,尽管我的 iPad 疯狂闪退,但是题还是能答的(似乎在聚焦到第二个 HTML Input 后才会触发崩溃)。如果我当时不找监考员,听了她的鬼话卸载重装 Bluebook,而是先把答案写在草稿纸上,再慢慢一边重启设备一遍填答案,还是能考完的。
我相信不仅仅只有我一个人遇到了这个问题。因为澳门理工大学考场规模较小,我貌似是唯一遇到这个问题的。但是只要使用升级到了 iPad OS 17 的 iPad 来参加考试,就大概率会碰到这个 bug。
考试后我在小红书上面也同样发现了和我经历一样的同学。我相信这场考试十分重要,因为这是美本申请早申 (ED) 截止前的最后一场 SAT 考试。在此我对 College Board 的不作为和澳门理工考场的傲慢表示强制谴责。
后续
考试后回到酒店我就在官网提交了 support ticket,也发了邮件说明情况,还在邮件里面附上了我的调查结果和 Apple Developer Forum 的链接,不出所料的这封邮件石沉大海了。
在考试后三天,也就是 10月10日,College Board 终于后知后觉,在 Bluebook Alert 上发布了这个事故。在10月25日,Apple 发布了 iPad OS 17.1,解决了这个问题。
在一个月后的 11 月 4 日的考试前,CB给所有考生发了邮件,警告考生不要使用搭载 iPad OS 17 的设备进行考试。
有意思的是,在这之后当我电话联系CB要求退还考试费用的时候,工作人员似乎完全对这个事情不知情,说「可能由于我设备关闭的太快了,只发送了阅读部分的答案」,但我也懒得和她解释了,能把钱退回来就行。
总结
很明显,这是一个由不可抗力因素导致的事故。希望 College Board 以后能及时测试设备,并且改进一下考前测试设备的程序,该模拟进入防切屏模式就模拟,不要偷懒。
而对于我们考生来说,能做的事情或许不多,但是或许:
- 不要在考前更新系统,即使是正式版(不然就跟我一样成为测试潜在 bug 的小白鼠了)
- 尽量使用大众化的设备来进行考试(Mac/Windows)
- 在考试时出现问题时尽早解决。如果我在开场输入 Start Code 崩溃的时候就要求使用考场的备用设备,就可以避免事故
- 开考后就不要删除 Bluebook 了!按理说每个设备都应该有一个 unique identifier,但是不知道 Bluebook 用的什么来识别设备,重装之后就变成新设备了,这时候进不去考试谁都救不了
事后回想起来这一次考试也是不太顺利,考试前一天发烧在床上躺了一天,结果还因为酒店白天火警演习,警铃声大作几个小时休息也没休息好,然后考试也没考成 ;(