编码问题中的测试用例

Last updated: July 9, 2026

测试用例对于评估候选人的代码至关重要。它们由特定的输入和预期的输出组成,用于验证代码的正确性和功能。通过涵盖各种场景,包括边界情况和典型用例,测试用例有助于确保代码按预期运行。

当候选人编译他们的代码时,每个测试用例都会检查代码的执行状态和结果。得分取决于代码成功通过了多少个测试用例。

编码问题中的测试用例类型

示例测试用例

示例测试用例对候选人是可见的。它们显示输入和预期输出值,允许候选人验证和调试他们的代码。在创建过程中将测试用例标记为示例测试用例,可以让候选人查看执行结果并在需要时下载。

2024-11-22_15-59-03.png

示例用例:对于需要识别字符串中第一个不重复字符的问题:

  • 示例测试用例帮助候选人理解预期的解决方案方法。

  • 候选人可以看到输入、预期输出和他们代码的执行结果。

示例测试用例的重要性

示例测试用例通过展示具体示例,增强了问题陈述的清晰度。提供2-3个示例测试用例可以帮助候选人有效理解问题要求。我们建议每个编码问题包括8-15个测试用例,以确保全面评估。这些测试用例应:

  • 涵盖多种场景和复杂性。

  • 通过测试不同的概念避免重复。

隐藏测试用例

隐藏测试用例在不透露输入或预期输出的情况下,评估候选人在各种边界条件下的表现。不将测试用例标记为示例测试用例将隐藏测试用例,并用锁图标表示。这些用例:

  • 挑战候选人编写能够处理边界场景的健壮代码。

  • 在执行过程中仅显示候选人的输出和调试信息。

2024-11-22_15-58-35.png

示例用例:对于识别第一个非重复字符的相同问题:

  • 隐藏测试用例验证解决方案在极端条件下的正确性,例如空字符串或长字符串。

提示:您可以通过测试设置中的问题标签禁用隐藏测试用例的输出可见性。但是,建议启用输出以获得更好的调试体验。

创建新测试用例

1. 在创建新的编码问题或编辑现有问题时,您需要按照创建新问题的步骤操作,最终到达第4步,即添加测试用例

2. 在测试用例部分,您可以上传解决方案逐个添加测试用例,也可以通过批量上传Zip文件一次性上传。

2024-11-11_12-06-30.png

3. 添加测试用例时,输入姓名、难度、分数、输入和输出等必填信息。 

4. 仅在您希望将测试用例识别为示例类型时,选择标记为示例测试用例。您可以为问题添加所需数量的示例测试用例,并选择不为它们分配分数。

5. 类似地,您可以向问题添加所需数量的隐藏测试用例(取消选中"标记为示例测试用例")。隐藏测试用例应包含边界情况,以验证候选人的代码解决方案。当候选人编译代码时,隐藏测试用例将被执行以显示状态,并帮助候选人了解他们的代码是否返回了预期的结果。 

添加测试用例.png

6. 为避免EOF问题,我们建议所有需要多值输入的测试用例按照以下格式定义输入:

行数(例如 4)
第1行的值(例如 100)
第2行的值(例如 500)
第3行的值(例如 40)
第4行的值(例如 200)

7. 利用我们的代码模板生成器来管理候选人的输入解析。我们代码模板的测试用例输入格式如下:

5个单独的输入参数,例如foobar(a, b, c, d, e) - 用换行符分隔参数:
2
3
4
5
6

整数 / 字符串数组 - 数组的大小,后跟数组中的值列表
3
100
200
300

以下图片展示了候选人对已编译代码在测试中的测试用例执行状态的视图。请注意,候选人只能查看示例测试用例的输入和预期输出值。隐藏测试用例的测试执行结果仅显示测试结果。

请参考📄 查看候选人的详细测试报告,了解测试用例在测试报告中的显示方式。 

评分测试用例

根据难度为测试用例分配不同的分数,确保候选人技能水平的公平区分:

  • 为复杂的测试用例分配更多分数。

  • 如果需要,示例测试用例可以分配零分。

  • 所有测试用例得分的总和构成问题的总分。

如果候选方案在测试用例时间限制内未完成,测试用例将失败,候选人将不获得任何分数。超时通常发生在解决方案未优化的更具挑战性的测试用例中。有关特定语言的时间限制的更多信息,请参阅 📄 执行环境

测试用例的最佳实践

与代码存根同步

确保输入和输出结构与代码存根一致,以保持语言一致性:

  • 对于数组,先读取大小(n),然后是n个元素。

  • 对于链表,输入包括元素的数量及其各自的值。

关键建议:

  • 多样化测试用例的复杂性和规模。

  • 避免在多个测试用例中重复测试目标。