全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某持续集成流水线在代码变更后依次执行:检出源代码、解析并获取依赖、编译;随后必须验证代码正确性,且只有验证通过才生成构建包。编译之后、生成构建包之前应执行____。
登录后查看答案
在测试驱动开发中,测试用例需要在编写产品代码之前先行设计完成。TDD的基本循环是:先编写一个尚未实现功能、必然失败的测试(该阶段称为____阶段),随后编写恰好能通过该测试的产品代码,最后在不改变外部行为的前提下对代码进行改进。请补全该循环第一阶段的中文名称。
某团队需为新项目选择构建工具。需求如下:①必须支持增量编译,即仅重新编译源文件发生变更的目标文件;②必须能自动处理模块间依赖,保证被依赖模块先构建;③需生成构建脚本以便在持续集成服务器上无人值守执行。现有候选工具甲:仅提供手动逐文件编译命令,无依赖管理;乙:提供声明式构建脚本与依赖拓扑排序,但增量编译只依据文件时间戳判断;丙:提供依赖分析与内容哈希判定的增量编译,支持脚本化构建但配置复杂;丁:仅提供集成开发环境内一键构建,无法脱离 IDE 运行。若以三项需求全部满足(③以脚本化可无人值守为准,时间戳判定视为满足增量编译)且配置代价最小为选择标准,应选择哪个工具? A. 甲 B. 乙 C. 丙 D. 丁
某团队发现,持续集成服务器有时会检出分支最新代码,而非触发构建的那次提交,导致构建结果无法对应到具体版本。以下哪项调整能直接解决这一问题? A. 按触发构建的提交哈希检出代码并记录构建结果 B. 每次构建前将分支切换到最新提交 C. 仅在发布时把构建产物提交到版本库 D. 由开发者手动选择构建所用的提交
判断:新增单元测试运行失败后,若失败确实暴露了待实现的功能,TDD循环的下一步应是修改测试,使其适应当前实现;测试通过后再补充功能代码。
在持续集成(CI)环境中,开发者向版本控制仓库推送代码后,构建流程的正确顺序是: A. 提交代码 → 触发 CI 服务器 → 拉取最新代码 → 编译 → 运行自动化测试 → 反馈构建结果 B. 运行自动化测试 → 提交代码 → 编译 → 触发 CI 服务器 → 反馈构建结果 C. 触发 CI 服务器 → 提交代码 → 反馈构建结果 → 编译 → 运行自动化测试 D. 编译 → 提交代码 → 拉取最新代码 → 触发 CI 服务器 → 运行自动化测试
判断:某学生在 TDD 中采用先写测试的方法为函数 isLeapYear(year) 设计测试。他先依据需求写出测试用例:2000 年是闰年返回 true,1900 年不是闰年返回 false,随后运行该测试确认其失败(红),再编写功能代码使测试通过(绿)。整个流程符合先写测试的测试设计方法。
某函数接收令牌和整数金额。令牌等价类为:合法令牌“K7”和所有非法令牌;金额等价类为:小于0、等于0、1至99、等于100、大于100。测试覆盖要求为每个“令牌等价类×金额等价类”组合至少有一个用例。现有用例为:(K7,−1)、(K7,0)、(K7,50)、(其他令牌,−1)、(其他令牌,0)、(其他令牌,50)、(其他令牌,100)。至少还需补充多少个用例才能满足要求? A. 2 B. 3 C. 4 D. 5
某配置项在受控库中当前版本为 3.7.4。项目版本控制规则规定:只有通过配置审计的检入才使修订号加 1,未通过审计的检入不改变版本号;已检入的变更若被撤销,版本号不回退,且撤销操作本身不改变版本号。现有变更请求处理序列如下:CR-51 首次检入未通过审计,修改后第二次检入通过;CR-52 检入通过;CR-53 检入通过后因需求变更被撤销;CR-54 检入通过;CR-55 首次检入未通过审计,第二次检入仍未通过,第三次检入通过。则最终受控库版本号为 ___。
开发者为“优惠码无效时拒绝下单”编写了一个断言该行为的单元测试,运行结果为失败,失败原因是当前实现尚未拒绝无效优惠码。按红绿重构循环,下一步应做什么?完成后测试通过,且代码存在重复逻辑,此时应进行什么操作?填空:先____,再____。
判断:在测试驱动开发中,采用先写测试的测试设计方法时,应当先实现功能代码,再根据功能代码的内部结构编写测试用例,以保证测试与实现完全一致。
在重构课上,李同学审查了支付模块:calculateFee() 方法中包含一段对会员折扣与运费累加的代码,而 invoice() 方法中存在几乎逐行相同、仅变量名不同的同一段逻辑。若后续费率规则变更,必须同时修改两处才能保持一致。按照 Fowler 对代码坏味道的分类,这种同一代码结构出现在多个位置、必须同步修改的现象所属的坏味道名称是____。
采用先写测试的测试设计方法时,针对需求中的一个具体输入编写测试,应先明确该输入对应的____。
采用先写测试的方式,为函数 isValidName(s) 设计测试。需求规定:当字符串长度为 3 至 8 个字符(含边界)时返回 true,否则返回 false。下列哪组测试最能体现等价类划分与边界值测试? A. 测试长度为 1、2、4、7、9 的字符串 B. 测试长度为 2、3、5、8、9 的字符串 C. 测试长度为 3、4、5、6、7 的字符串 D. 测试长度为 1、3、5、8、10 的字符串
某团队在引入测试驱动开发(TDD)前后分别统计同一模块的质量指标:缺陷密度从每千行代码 5.2 个降至 2.1 个,代码圈复杂度平均值从 12 降到 6,公共 API 设计返工次数由每版本 8 次降为 3 次。从 TDD 对代码质量影响的角度看,下列关于上述变化成因的解释最准确的是哪一项?A. TDD 通过测试先行约束接口设计并持续回归验证,使缺陷更早暴露、设计更简洁,各项质量指标随之改善 B. TDD 的主要作用是让程序员写更多代码,代码量增加导致缺陷密度数值下降 C. TDD 直接消除了静态分析工具的必要性,质量提升来自工具替代 D. TDD 的改善完全来自团队编程经验的自然增长,与开发流程无关
判断:某类的 switch 语句根据字段 type 区分分支,重构者主张:将该 switch 与其分支涉及的各逻辑一并移入一个新建的基类,用多态取代条件表达式后,switch 即被消除,且这一做法消除了「依恋情结」坏味道;但只要新基类中仍保留对调用方对象字段的连续多分支取值判断,依恋情结就并未真正消除。以上整体论述是正确的。
判断:为保障重构不改变外部可观察行为,重构前应建立可运行的测试基线,并在每个小步后运行测试;若只在全部改动完成后运行一次,也能提供同等的过程保障。
订单模块的 `memberTotal(price, level)` 与 `renewalTotal(price, level)` 中都重复出现同一段逻辑:当 `level` 为 `"gold"` 时返回 `price × 0.8`,否则返回 `price`。要求保持现有行为,仅消除这段重复代码,且不改变调用方接口。下列哪种重构及实施方式最恰当? A. 提炼函数,将逻辑抽成接收 `price`、`level` 的私有函数,并由两个方法调用 B. 以多态取代条件表达式,为等级建立类型层次并改造调用方 C. 内联函数,将两个方法中的逻辑分别展开 D. 重命名两个方法,使其名称表达等级判断
在代码重构过程中,为保障重构行为不改变程序可观察的外部行为,每次执行一个小的重构步骤后,都应当立即____,确认全部通过后再进行下一步重构。这种做法使错误能够被及时发现并定位,避免多处修改叠加导致问题难以排查。
某模块当前功能稳定且测试通过。团队确认下个迭代必须增加一种新的处理规则,评估发现现有结构会使这次修改容易波及多个位置。此时最合适的重构时机是? A. 立即在功能稳定的基础上先重构,再实现新规则 B. 等新规则上线并出现故障后再重构 C. 暂停所有需求,直到整个系统都完成重构 D. 等新规则实现后,无论代码状况如何都重构