我正在研究一个列表比较器,以帮助根据客户的非常特定的要求对搜索结果的无序列表进行排序。需求要求使用重要性规则按以下规则排序相关性算法:
- 姓名完全匹配
- 搜索词中所有单词的名称或结果的同义词
- 搜索查询中某些单词的名称或结果的同义词(%降序)
- 说明中搜索查询的所有单词
- 说明中搜索查询的某些单词(降序排列)
- 最后修改日期降序
该比较器的自然设计选择似乎是基于2的幂的得分排名。次要重要规则的总和永远不会与重要性较高的规则的正比匹配大。这可以通过以下得分来实现:
- 32
- 16
- 8(基于决断百分比下降的次决胜局得分)
- 4
- 2(基于降低百分比的次决胜局得分)
- 1个
本着TDD的精神,我决定首先进行单元测试。对于每个唯一方案都有一个测试用例,至少要有63个唯一测试用例,而不考虑规则3和5上的辅助抢断逻辑的其他测试用例。这似乎太过分了。
实际的测试实际上会更少。根据实际规则本身,某些规则可确保较低的规则将始终为真(例如,当“所有搜索查询词都出现在说明中”时,规则“某些搜索查询词会出现在说明中”将始终为真)。写下每个测试用例的努力水平仍然值得吗?在谈论TDD中100%的测试覆盖率时,这通常是要求的测试级别吗?如果不是,那么什么是可接受的替代测试策略?