C 结构格式的atof()函数的测试用例

C 结构格式的atof()函数的测试用例,c,testing,C,Testing,两天前,我参加了一次面试。我被问到一个问题,我仍在寻找答案。问题是告诉我c中atofconst char*str函数的测试用例。我告诉他各种测试用例,如 我必须检查给定的字符串是否只包含数字。 给定字符串包含一个小数点。 转换后不应溢出。 字符串不应为空。 但是面试官不满意,要求以结构化的形式给我答案。现在我的问题是如何用结构化的形式来表达这个答案,这样以后我就不会犯同样的错误了。我不确定面试官所说的结构化形式是什么意思,但是我会写下C语言指定的浮点数的BNF语法,然后给出测试用例,通过语法测试

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

我必须检查给定的字符串是否只包含数字。 给定字符串包含一个小数点。 转换后不应溢出。 字符串不应为空。
但是面试官不满意,要求以结构化的形式给我答案。现在我的问题是如何用结构化的形式来表达这个答案,这样以后我就不会犯同样的错误了。

我不确定面试官所说的结构化形式是什么意思,但是我会写下C语言指定的浮点数的BNF语法,然后给出测试用例,通过语法测试每条路径。您的大小写不包括符号或指数,数字不需要包含小数点


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

我不确定采访者所说的结构化格式是什么意思,但我会写下C语言指定的浮点数的BNF语法,然后通过语法展示测试每个路径的测试用例。您的大小写不包括符号或指数,数字不需要包含小数点


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

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

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

我对术语测试用例的理解与你不同

我认为他想要的是对atof的各种投入及其预期结果。例如: 1.atof1.5应返回1.5。 2.atof-7应改为-7.0。 3.阿托夫赫洛,世界应该失败。但是在Lundin的评论之后,atof没有定义失败行为,所以您无法真正测试它

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


以结构化的格式编写这篇文章很容易。

我对术语测试用例的理解与您不同

我认为他想要的是对atof的各种投入及其预期结果。例如: 1.atof1.5应返回1.5。 2.atof-7应改为-7.0。 3.阿托夫赫洛,世界应该失败。但是在Lundin的评论之后,atof没有定义失败行为,所以您无法真正测试它

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

以结构化格式编写这篇文章很容易。

我们在代码中使用atof,大多数时候我们需要处理许多语言的国际化/本地化10.0转换为10,0

在调用atof之前,您需要设置区域设置,在完成功能后,您必须重置区域设置。

我们在代码中使用atof的大部分时间,我们需要处理多种语言的国际化/本地化10.0转换为10,0


在调用atof之前,您需要设置区域设置,在完成功能后,您必须重置区域设置。

您想从stdlib了解所有atof测试,对吗?你的结构形式是什么?我想知道什么是给定问题答案的更好表示形式

因为我的回答没有给他留下深刻印象。你想知道stdlib的所有atof测试,对吗?你的结构形式是什么?我想知道什么更能代表给定问题的答案,因为他对我的答案印象不深。他给我举了一个与此相关的例子,有两种方法可以找到针,一种是通过跑步搜索整个地板,另一种是在单个瓷砖中找到针,如果找到了,则确定,否则将其标记为十字,以便下次不再检查,并告诉我现在解释问题。@Aalok听起来像是他在问你将问题分解为子问题。我所描述的是针对语法问题的。附加的子问题是无效的空指针和值超出范围,这可以分解为尾数超出范围和指数超出范围。我想他是在要求我在子问题中给出答案。他告诉我一个与此相关的示例,有两种方法可以找到针,一种是通过跑步搜索整个地板,另一种是在单个瓷砖中找到针,如果找到了,则确定,否则将其标记为十字,以便下次不再检查,并告诉我现在解释问题。@Aalok听起来像是他在问你将问题分解为子问题。我所描述的是针对语法问题的。附加的子问题是无效的空指针和值超出范围,这可以分解为尾数超出范围和指数超出范围。我想他是在要求我在子问题中给出答案。将有效的浮点数字符串以外的任何内容传递给atof都会导致未定义的行为。您无法确定地测试未定义的行为。因此,除非问题是实现atof,否则您对测试用例的理解似乎是不正确的。您提出了一个测试的一般问题—您不能测试未定义的行为。因此,对于atof,测试用例只能包含有效的输入。但是测试用例的概念是一样的。考虑到有多少用例你没有测试过,也许这并不那么容易。例如,考虑处理指数的测试用例…结构化的方法将确定您需要针对最大值和最小值但非零值的测试用例。@JimBalter,我不想提供完整的测试用例列表。我只是举了一些例子来说明这个想法。我是在回应你的评论,用结构化的格式写这篇文章很容易。。。如果能轻松地写出整个列表,而不仅仅是一个不完整的列表,那么这就很容易了。正如我在回答中指出的,要完全涵盖语法,您需要通过BNF或语法图进行操作,这对于浮点数来说并不难,但通常并不容易。将有效浮点数字符串以外的任何内容传递给atof都会导致未定义的行为。您无法确定地测试未定义的行为。因此,除非问题是实现atof,否则您对测试用例的理解似乎是不正确的。您提出了一个测试的一般问题—您不能测试未定义的行为。因此,对于atof,测试用例只能包含有效的输入。但是测试用例的概念是一样的。考虑到有多少用例你没有测试过,也许这并不那么容易。例如,考虑处理指数的测试用例…结构化的方法将确定您需要针对最大值和最小值但非零值的测试用例。@JimBalter,我不想提供完整的测试用例列表。我只是举了一些例子来说明这个想法。我是在回应你的评论,用结构化的格式写这篇文章很容易。。。如果能轻松地写出整个列表,而不仅仅是一个不完整的列表,那么这就很容易了。正如我在回答中所指出的,要完全涵盖语法,您需要通过BNF或语法图进行操作,虽然对于浮点数来说并不难,但通常并不容易。