知识卡片
要求解的问题与要证明的问题
内容
数学上有两类问题:要求解的问题(如”存在平方等于4的数吗”,找到答案就能验证)和要证明的问题(如”质数集是无限的吗”,需论证所有情况都成立)。这影响能不能用少量测试验证风险:像”数据库能否保存100字符名称”属于求解问题,写个测试用例就够;但”系统是否一直符合框架API约定”或死锁问题属于证明问题,再多测试通过也可能遗漏未覆盖组合。选技术前先判断风险属于哪一类,避免用错误方式应对需要证明的风险。
参考来源
- 位置:《恰如其分的软件架构》第3章《风险驱动模型》3.5节《选择技术的指导原则》(源文件:_epub-src/OEBPS/text00031.html)
- 结论依据:原文引用George Polya在《怎样解题》中区分的"要求解的问题"与"要证明的问题",并用数据库字段长度(求解)和死锁问题(证明)说明少量测试能否提供有说服力证据的差异。
- 原始内容:George Polya……指出了两种截然不同的数学问题:要求解的问题与要证明的问题……要证明的问题的另一个例子是死锁:即便再多的测试可以顺利运行,也不能暴露锁协议(locking protocol)中的一个问题。