定义编码问题的测试用例

Last updated: March 10, 2026

概述

测试用例有助于验证候选人的代码。它们构成了自动评估候选人代码的基础。一个测试用例由代码的输入和预期输出组成。一旦候选人提交代码,它将针对所有测试用例运行。候选人代码的输出将与预期输出进行比较,以查看测试用例是否通过或失败。

带有解释的示例测试用例也可以帮助更好地向候选人解释问题。理想情况下,你应该使用2到3个这样的示例测试用例,以帮助程序员理解问题。我们建议总共拥有8到15个(理想情况下为10个)测试用例,涵盖所有场景。测试用例应具有不同的规模,涵盖不同的复杂程度。没有两个测试用例应测试相同的概念。 

注意:请参考你的编码问题中的测试用例,以了解在为HackerRank测试创建编码问题时测试用例的使用方法。

测试用例的类型

每个问题有两种类型的测试用例,一个示例测试用例和一个隐藏测试用例

示例测试用例

示例测试用例是候选人可以查看并用来验证其代码的测试用例。他们可以看到这些测试用例的输入和预期输出值。在创建测试用例时,你可以将某些测试用例标记为示例测试用例。 

例如,下面是为编码问题定义的示例测试用例的示意图。该问题要求候选人编写代码以找到给定字符串中的第一个非重复字符。 

Sample_Test_Cases.jpg

在测试中,当候选人编写并编译问题的代码时,示例测试用例会与候选人的代码进行验证。候选人可以查看示例测试用例的执行结果以及由你定义的输入和预期输出值。查看示例测试用例的执行结果有助于候选人理解其代码的预期结果。候选人还可以下载他们的示例测试用例。

以下图片显示了候选人在编译测试中的代码后,样本测试用例执行状态的视图。Test_Case_execution_status.jpg

隐藏测试用例

在向你的编码问题添加测试用例时,如果没有将其标记为样本测试用例,则视为隐藏测试用例。隐藏测试用例起源于竞赛编程的时代。

你可以将各种角落情况作为隐藏测试用例,以评估候选人在不同场景下的表现。当候选人运行他们的代码时,隐藏测试用例由 图标指示。

与样本测试用例不同,候选人无法看到这些隐藏测试用例的输入和预期输出值。不过,当他们点击任何隐藏测试用例选项时,可以看到他们的输出和可调试输出。此功能旨在为候选人提供更好的调试体验。

考虑一个编码问题,候选人需要编写代码以找到给定字符串中的第一个不重复的字符。 Hidden_Test_Case.jpg

在测试中,当候选人为此问题编写并执行代码时,隐藏测试用例会根据候选人的代码验证,以返回测试用例的执行结果。如果候选人的代码成功执行隐藏测试用例并返回预期输出,则候选人获得为此测试用例分配的分数。

mceclip1.png

禁用隐藏测试用例的输出

您还可以选择不显示候选人的隐藏测试用例的输出。要禁用隐藏测试用例的输出,请按照以下步骤操作。

  • 测试主页上,点击所需的测试。
question.jpg
  • 点击问题后,点击设置标签,然后从左侧选择问题选项。
question_settings_.jpg
  • 点击问题标签后,向下滚动,您会看到禁用隐藏测试用例输出的选项,如下所示。不过,不建议这样做因为显示输出可以帮助候选人有效调试他们的代码。默认情况下,显示输出的选项是被选中的。如果您想隐藏您的输出,可以取消选择显示隐藏测试用例的输出复选框。
hidden_test_case_output.jpg

注意:我们的报告显示,候选人在寻找解决方案或调试时,往往会浪费大量测试时间,因为隐藏测试用例。为了减少这一挑战并为候选人提供更好的调试体验,HackerRank 希望未来逐步取消隐藏测试用例,并引入基于断点的可调试体验。

评分

并非所有测试用例的难度都相同。在创建测试用例时,您必须确保为难度较高的测试用例分配更多的分数,而不是简单的测试用例。这有助于更好地区分杰出、良好和普通的程序员。所有测试用例的得分总和即为该题的总得分。您可以根据需要为示例测试用例分配零分。编码题的总得分是所有成功通过的测试用例的得分之和。

在下图中,您可以看到 HackerRank 中候选人的详细测试报告,显示根据测试执行状态获得的题目得分。Test_Report_status_of_score_achieved_for_Test_case.jpg

与代码存根同步测试用例

当您使用自动生成的代码存根时,确保输入和预期输出与代码存根保持同步。您可以参考尾部部分以理解这一点。

例如

  • 如果输入是数组,您将始终先读取“n”(表示数组大小),然后在“n”个不同的行中读取“n”个数组元素。这是为了确保在不同语言中读取输入的一致性。

  • 如果输入是链表,您将始终读取“n”(表示要添加到输入链表中的元素数量),然后在“n”个不同的行中读取“n”个元素。

有关创建和添加测试用例的更多信息,请参阅主题如何添加新测试用例