Teaching testing seriously in academia
本立场论文认为,软件测试教育应当从理性主义的、规范性的范式转向经验主义的、探究驱动的方法,并提出 P4TEST 框架和 4C/ID 指导模型,以更好地使学生具备应对复杂且集成人工智能系统的批判性推理能力。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你正在教一个人如何成为一名侦探。
问题:教错了类型的侦探
目前,大学正在像教数学课一样教授软件测试。他们给学生一个清晰的规则列表(“规格说明”)、一个特定的谜题以及一个唯一的正确答案。如果学生遵循步骤并找到了答案,他们就能得到 A。
作者认为这是错误的教学方式。现实世界的软件(尤其是带有 AI 的软件)是混乱且不可预测的,通常没有明确的规则手册。通过教导学生仅仅是“勾选清单”并确认他们预期的结果发生,我们是在把他们培养成校对员,而不是调查员。当他们毕业后面对一个行为异常的系统时,他们会感到沮丧,因为他们从未被教导过如何去问:“如果出错了会怎样?”或者“我遗漏了什么?”
解决方案:“整体任务”法
该论文建议我们需要将范式从“理性主义”(遵循食谱)转向“经验主义”(探索未知)。为此,他们提出了一个名为 P4TEST 的新教学框架,该框架基于一种名为 4C/ID 的学习模型。
不要把 4C/ID 看作是一个你必须一步步攀爬的梯子,而要把它看作一个飞行模拟器。你不是从学习在车库里拧紧一颗螺栓开始。你首先是坐在驾驶舱里,观察整架飞机,学习如何驾驶它,即使在最初阶段可能会坠毁几次。
P4TEST 如何运作:侦探的工具箱
P4TEST 将测试分解为四个主要活动循环,就像侦探破案一样:
- 建模 (Modelling): 绘制一张关于你认为系统是什么样子的地图(即便这张地图是错的)。
- 调查 (Investigation): 出外收集证据(测试软件)。
- 意义构建 (Sensemaking): 理解这些证据意味着什么。是软件崩溃了吗?为什么?
- 反思 (Reflection): 根据你的发现改变你的地图,并再次尝试。
四个训练阶段(飞行模拟器等级)
该论文概述了四个阶段,旨在将学生从初学者培养为专业人士:
- 第 1 级(案例研究): 学生还不需要进行测试。他们观察一位“大师级侦探”(经验丰富的测试员)如何调查一个简单的物体,比如一支钢笔。他们观察专家如何提问、如何改变想法以及如何发现隐藏的缺陷。这就像在动手拿刀之前先看烹饪节目。
- 第 2 级(引导式练习): 学生测试一个简单的小程序(如随机数生成器)。他们会被给予一张地图和指南针(工具和提示)来帮助他们找到漏洞。老师就在旁边,引导着他们。
- 第 3 级(复杂任务): 学生测试一个更复杂的系统(如收银机)。老师退到一旁。学生必须选择自己的地图,并决定使用哪些工具。他们必须独自处理更多的困惑。
- 第 4 级(真实工作): 学生进行一个现实世界的测试项目。没有地图,没有指南针,也没有老师手把手地指导。他们必须弄清楚测试什么、如何测试,并向客户解释他们的发现。
秘诀:思维习惯
论文强调,你不能只教“步骤”;你必须教“思维方式”。他们称之为“思维习惯”:
- 严谨的怀疑精神 (Disciplined Skepticism): 不要仅仅因为结果看起来正确就相信它。要问:“这是一个陷阱吗?”
- 认识论的开放性 (Epistemic Openness): 当出现新证据时,要愿意改变自己的想法。
- 对未知的容忍度 (Tolerance for the Unknown): 当你没有所有答案时,不要恐慌。将困惑作为持续调查的动力。
- 刻意的好奇心 (Deliberate Curiosity): 不要仅仅因为找到了一个漏洞就停止。要问:“还有什么可能会出错?”
如何测试学生
最后,论文认为你不能用选择题来测试这些技能。你不能问“什么是 Bug 的定义?”并期望以此判断一个人是否是优秀的测试员。
相反,他们提出了基于视频的评估。学生录制自己测试软件的过程,同时进行大声思考(即“出声思维”式的解说)。老师通过观看视频来观察学生的思考过程、他们如何处理困惑,以及当情况出错时他们如何改变策略。这就像医学院中,老师通过观察学生进行手术,而不是仅仅通过批改一份书面报告来评分。
总结
这篇论文是在呼吁停止将软件测试视为一个只有唯一正确答案的数学问题。相反,它应该被作为一种复杂的、调查性的技能来教授,其目标是探索未知、拥抱不确定性,并在规则不存在时学会批判性地思考。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。