3. 测试布尔判断函数的真值表覆盖
闰年判断函数的条件结构
闰年判断是典型的布尔逻辑函数,其规则为:能被4整除但不能被100整除,或者能被400整除。该函数包含三个条件分支,适合用真值表方法系统化设计测试用例。
真值表驱动的测试用例设计
根据条件组合,四个测试用例即可覆盖所有分支路径。每个用例对应真值表中一行,确保 (A && B) || C 的每个子表达式都被独立验证。
测试代码实现
// leapYear.js
function isLeapYear(year) {
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
}
module.exports = isLeapYear;
// leapYear.test.js
const isLeapYear = require('./leapYear');
describe('isLeapYear 真值表覆盖', () => {
// 用例1:A=T, B=T, C=F → 普通闰年
test('2024 是闰年(被4整除且不被100整除)', () => {
expect(isLeapYear(2024)).toBe(true);
});
// 用例2:A=T, B=F, C=F → 世纪平年
test('1900 不是闰年(被100整除但不被400整除)', () => {
expect(isLeapYear(1900)).toBe(false);
});
// 用例3:A=T, B=F, C=T → 世纪闰年
test('2000 是闰年(被400整除)', () => {
expect(isLeapYear(2000)).toBe(true);
});
// 用例4:A=F → 普通平年
test('2023 不是闰年(不被4整除)', () => {
expect(isLeapYear(2023)).toBe(false);
});
});
覆盖验证要点:运行测试后,检查每个
test 是否独立通过。若用例2失败,说明 year % 100 !== 0 条件未被正确排除;若用例3失败,说明 || year % 400 === 0 分支未生效。四个用例全部通过即表示真值表所有行均被覆盖。
边界值补充
真值表覆盖了逻辑分支,但整除边界还需额外验证:year = 4(最小闰年)、year = 100(最小世纪平年)、year = 400(最小世纪闰年)。这些值验证取模运算在边界处的正确性,与真值表用例互补。