1

两天前我参加了一个面试。我被问了一个问题,我还在寻找答案。问题是告诉我 c 中 atof(const char *str) 函数的测试用例。我告诉他各种测试用例,例如

  1. 我必须检查给定的字符串应该只包含数字。
  2. 给定字符串包含一个小数点。
  3. 转换后不应溢出。
  4. 字符串不应为空。

但面试官不满意并要求以结构化格式给我答案。现在我的问题是如何以结构格式表示这个答案,以便将来我不会犯同样的错误。

4

4 回答 4

2

我不确定面试官所说的“结构化格式”是什么意思,但我会通过写下浮点数的 BNF 语法(C 语言指定它们)来做到这一点,然后提供测试用例来测试通过句法。您的案例尤其不包括符号或指数,并且数字不需要包含小数点。

结构化方法将问题分解为子问题。语法是一个子问题,语法图表或 BNF 提供了一种将其分解为子问题的自然方法。另一个子问题是边界条件......应该有最小(> 0)和最大有效值的测试用例。还应该有处理无效输入的测试用例,但正如 lundin 在评论中指出的那样,这是不可能的,atof因为无效输入的行为是未定义的。

于 2012-09-24T09:02:38.823 回答
2

也许您可以通过您正在测试的内容来构建您的答案,例如给出错误的格式化字符串(null、empty 等)以及给出错误的参数,如错误的“数字”(0 前缀/后缀 2.0、0.4 等...)您还可以测试负浮点数,在字符串中放置多个点或其他任何内容。我希望我已经回答了你的问题,如果没有,我想我还没有很好地理解这个问题。

于 2012-09-24T09:16:24.140 回答
2

我对“测试用例”一词的理解与您不同。

我认为他想要的是各种输入atof及其预期结果。例如:
1.atof("1.5")应该返回1.5.
2.atof("-7")应该返回-7.0
3.atof("Hello, world")应该失败。但是按照 Lundin 的评论,对于 没有定义的失败行为atof,所以你不能真正测试这个。

测试用例应涵盖功能需要测试的所有不同内容。但是你不需要写下这些东西——只是示例输入和预期输出。

以结构化格式编写它很容易。

于 2012-09-24T09:19:29.513 回答
1

我们在代码中使用了 useatof大部分时间,我们需要将Internationalization/Localization许多语言10.0转换为10,0.

在调用之前,atof您需要设置语言环境,在完成功能后,您必须重置语言环境。

于 2012-09-24T10:56:00.753 回答