跳到正文

可观察行为与测试用例

55 分钟

可观察行为与测试用例

先把问题说清楚

程序设计的第一步不是敲代码,而是确认要解决什么。我们在测试、调试与证据里从一个成人日常或工程场景进入:给定明确输入,经过可解释步骤,得到可核对输出。今天围绕可观察行为与测试用例完成:围绕可观察行为与测试用例先手算两个样例,再编写最小程序,使用正常、边界、无效和回归四类输入验证。先写两个具体例子,再从例子中提取共同规则,避免一开始就被语法细节带走。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

跟我手工走一遍

取最小正常输入,画一张值表:每执行一行,就记录变量的新值、仍成立的不变量以及下一步为什么可执行。第一步列出输入与预期输出;第二步依据可观察行为与测试用例必须写清输入、输出、前置条件、状态变化、不变量和失败行为,再把每一步落实为可观察的 Python 执行选择一个最小操作;第三步检查状态是否更接近后置条件;最后把手算轨迹同程序输出逐项比较。若两者不同,定位首个分叉点,而不是盲目改到“看起来能跑”。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

从具体例子抽出程序结构

把手算中的名词变成数据,把动作变成表达式或函数,把选择变成条件,把重复变成循环。每引入一个变量都回答它代表什么、允许哪些值、何时改变;每引入一个分支都说明条件是否互斥且穷尽;每引入一个循环都写出终止条件。这样代码结构来自问题结构,而不是拼凑语句。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

围绕可观察行为与测试用例,我们坚持一个局部原则:可观察行为与测试用例必须写清输入、输出、前置条件、状态变化、不变量和失败行为,再把每一步落实为可观察的 Python 执行。先实现最小正确版本,再提取重复结构。不要过早追求短代码;清楚的中间变量、明确的函数名字和可检查的契约,比把多步计算挤在一行更适合学习、调试与评审。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

写成可运行的 Python

实现使用 Python 3 标准库,从标准输入读取,向标准输出给出稳定答案。输入解析、核心计算和输出格式分开处理:解析失败时说明失败规则,核心函数尽量不直接打印,最外层负责交互。代码题不是伪代码;参考程序与学习者提交都必须由判题器真实运行,并对同一组测试给出确定结果。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

用四类测试逼近正确

正常测试证明主路径,边界测试检查空集合、零、单元素或端点,无效测试验证类型和规格外输入,回归测试固定曾经出错的最短例子。若本节有4个等价类且每类至少准备4个测试,基础清单有4×4=16项;数量只是起点,还要说明每项究竟排除了哪个错误假设。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

学习分三轮完成。第一轮阅读一段可运行实现,给每行加上“读了什么、改了什么、保证了什么”的注释;第二轮只改变一个需求,例如端点是否包含、输入是否允许为空或结果是否保持顺序,预测需要修改的最小位置;第三轮合上示例,从规格独立重写,再用相同测试比较。能修改和重写,才说明理解了可观察行为与测试用例背后的结构,而不是记住了示例外形。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

测试失败时区分三层:若程序无法启动,先处理语法、名称和导入;若运行中断,沿异常与调用栈找到第一个违反前置条件的位置;若能运行但答案错误,把实际轨迹和手算轨迹并排。修复不能只让当前输入通过,还要解释原错误会影响哪一类输入,并添加最小回归测试防止以后重新出现。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

常见错误与调试路径

本节严格边界是:可观察行为与测试用例不能只凭一次示例通过;必须处理空输入、极值、类型错误或状态残留,并能解释首个错误步骤。看到错误输出,先保存输入、期望和实际,再缩小到最小失败输入;检查解析、类型、分支条件、循环边界、状态更新和输出格式。语法错误先读最靠前的报错位置,运行时错误画调用链,逻辑错误比较逐步轨迹。一次只验证一个假设,修复后重跑全部测试。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

与前后课时建立联系

可观察行为与测试用例不是孤立知识点。它向前依赖清楚的规格、数据表示与执行模型,向后会成为函数接口、测试证据、算法分析或项目模块的一部分。写下本节产物的输入接口、输出接口和仍未解决的限制;下一节只依赖公开接口,不依赖偶然的内部变量,这就是软件逐步长大的方式。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

把本节代码放进一个小型项目制品:保留规格、三个手算样例、源代码、自动测试和一次故意失败后的调试记录。提交前让另一位学习者只看公开接口使用它;如果对方必须读取内部变量、猜测输入格式或手工清理残留状态,接口仍不完整。根据反馈只修改一个职责清晰的模块,并再次运行全套测试。
(本段编程对象:可观察行为与测试用例;位置:9-1。)

练习与自检

完成单选、多选、计算题,并在实验课提交可运行代码。合上材料后回答:输入是什么,输出是什么,前置与后置条件是什么,不变量在哪一步保持,失败输入怎样处理,四类测试各自保护什么。最后围绕可观察行为与测试用例口述一次“规格—样例—算法—代码—测试—调试”的完整链条;能换一组输入重新推导,才算真正学会。

(本段编程对象:可观察行为与测试用例;位置:9-1。)

Practice

本课练习

4

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

1单选验收:可观察行为与测试用例 3

围绕实验“围绕可观察行为与测试用例先手算两个样例,再编写最小程序,使用正常、边界、无效和回归四类输入验证”,哪一步最符合操作系统机制分析?

登录 后答题可以领小红花
2多选验收:可观察行为与测试用例 3

本题验收可观察行为与测试用例的机制证据。哪些材料不可缺少?(漏选或多选均不得分。)

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领小红花
3计算验收:可观察行为与测试用例 3

请用可观察行为与测试用例中的简化串行预算检查下列负载:有6个请求,每个有效服务5ms,每次固定管理开销4ms,忽略并行与重叠。总墙钟预算是多少ms?填写数值,并在草稿写公式和适用条件。

登录 后答题可以领小红花
4U09独立题04:可观察行为与测试用例 4

请完成可观察行为与测试用例的系统设计题:题设现象为围绕可观察行为与测试用例先手算两个样例,再编写最小程序,使用正常、边界、无效和回归四类输入验证。提交对象与初态、状态图或公式、实验步骤、一个竞态/故障反例及恢复说明。

【学生可见评分量表(10分)】对象与不变量2分;机制推演3分;实验与证据3分;失败边界和恢复2分。只列术语不得分。

登录 后答题可以领小红花