测试驱动也能很好地发现客户的需求。
例如客户说,我要求软件有这么个功能,我一点按钮A,就能找出来去年参加审批但今年没参加的。我们就可以编写一个测试用例
List<Company> withLastYearButWithoutThisYear() {
throw new BusinessException();
}
然后客户又说要这么个功能,想要点一下按钮B,就能给已经是4星,并且连续3年都参加审批的企业升级成5星。可以再编写一个测试用例
void upStarWith4StarAnd3YearReview() {
throw new BusinessException();
}
这些用例一开始都是红的,只有全变绿了才能说功能开发完了。
当然软件内部的一些测试也不能少,最常见的像表单验证,值过滤,除数非零之类的,算不上关键功能但也必不可少。这些测试是为了今后维护时一旦改动结构,仍然能保持软件可用,比如有人想将一个数值类型的金额变为字符串类型,希望直接在前面加人民币符号或者美元符号,如果文档里没有描述出这个字段的类型,他也不知道能不能改,但一运行测试是红的,就知道这里必须要求一个数字类型了。