两天前我参加了一次采访。我被问到一个问题,我仍在寻找答案。问题告诉我atof(const char * str)函数的测试用例c 我告诉他各种测试案例如
但是面试官不满意并要求以结构化格式给我答案。现在我的问题是如何用结构格式表示这个答案,这样以后我就不会犯同样的错误。
答案 0 :(得分:2)
我不确定采访者的“结构化格式”意味着什么,但我会通过写下浮点数的BNF语法(C语言指定它们)来做到这一点,然后提出测试每个的测试用例通过语法的路径。您的案例尤其不包括符号或指数,并且该数字不必包含小数点。
结构方法将问题分解为子问题。语法是一个子问题,语法图表或BNF提供了一种自然的方法来将其分解为子问题。另一个子问题是边界条件......应该有最小(> 0)和最大有效值的测试用例。还应该有处理无效输入的测试用例,但正如lundin在评论中指出的那样,atof
不可能,因为无效输入的行为未定义。
答案 1 :(得分:2)
也许你可以根据你正在测试的内容来构建你的答案,例如给出不良的格式化字符串(null,empty等等)以及给出坏的“数字”(0前缀/后缀2.0,0.4等)。 ..)你也可以测试负浮点数,在字符串中放置多个点或其他。我希望我能回答你的问题,如果没有,我想我还没有理解这个问题。
答案 2 :(得分:2)
我对“测试用例”一词的理解与您不同。
我认为他想要的是atof
的各种输入及其预期结果。例如:
1. atof("1.5")
应该返回1.5
2. atof("-7")
应该重新-7.0
3. atof("Hello, world")
应该失败。但是根据Lundin的评论,atof
没有明确的失败行为,所以你无法真正测试它。
测试用例应涵盖功能需要测试的所有不同内容。但是你不需要写下这些东西 - 只是示例输入和预期输出。
以结构化格式写这个很容易。
答案 3 :(得分:1)
我们在代码中使用了atof
,大部分时间我们需要处理Internationalization/Localization
多种语言10.0
转换为10,0
。
在调用atof
之前,您需要设置区域设置,在完成功能后,您必须重置区域设置。