Testing 如果输入不是预期的,但处理正确,是否有效?

Testing 如果输入不是预期的,但处理正确,是否有效?,testing,Testing,我正在web服务上进行软件测试,我想知道web服务是否接受邮政编码并返回邮政编码的坐标。如果我输入99999,它不是邮政编码,但系统没有崩溃,它只是在两个坐标上回复0,这被认为是无效的输入吗?我不太确定,因为它没有破坏系统,这意味着它可以处理输入,所以它是使输入有效还是仍然无效,因为99999不是邮政编码?如何定义无效?谷歌的定义之一是: (指计算机指令、数据等)不符合正确格式或规格的 根据这个定义,它是无效的。它产生了一个无效的答案 但是,如果它是你的Web服务,并且如果这是预期的行为(为了

我正在web服务上进行软件测试,我想知道web服务是否接受邮政编码并返回邮政编码的坐标。如果我输入99999,它不是邮政编码,但系统没有崩溃,它只是在两个坐标上回复0,这被认为是无效的输入吗?我不太确定,因为它没有破坏系统,这意味着它可以处理输入,所以它是使输入有效还是仍然无效,因为99999不是邮政编码?

如何定义无效?谷歌的定义之一是:

(指计算机指令、数据等)不符合正确格式或规格的

根据这个定义,它是无效的。它产生了一个无效的答案


但是,如果它是你的Web服务,并且如果这是预期的行为(为了防止崩溃而向用户呈现明显错误的答案),那么我就不会认为它是无效的。在某种程度上,这是“预期输入”-这是一种防止用户错误的保护措施,您应该始终将其添加到代码中

但是如果是这种情况,那么我假设您采取不同的方法来警告用户错误的用户。

这完全取决于web服务规范的状态

例如:

  • 如果它声明在无效输入时返回0,则它工作正常-继续
  • 如果它说你只应该提供有效的信息,那你就违反了合同,它可以随心所欲。往前走
  • 如果它没有说明它将对无效输入执行什么操作,那么它也可以执行它希望执行的任何操作。人们通常遵循最不惊讶的原则,但决不是强制性的
最后一点是很重要的:只有当软件不能像文档中描述的那样工作时,才存在真正的bug。太多的人认为,当软件不能像他们期望的那样工作时,这是一个bug,但实际上,这是一个实现决策

例如,如果您无法区分“错误”条件和有效输入之间的差异,则该决定可能是错误的,但这里可能不是这种情况。假设这些坐标是纬度/经度,<代码> 0/0 < /代码>位于大西洋中部,距最近的主要陆地约600公里。因此,任何邮政编码都不可能解析为该坐标


话虽如此,任何体面的web服务都应该记录允许的输入,并说明如果合同被破坏会发生什么。您正在使用的一个可能会发生这种情况(我们无法确定,因为我们不知道您正在使用的是哪一个),您可能需要搜索它。

您是如何获得坐标的?你在用图书馆吗?你用什么语言?@YMD:这些都与问题无关。你穿什么颜色的内衣?你所在的时区是几点?空载燕子的空速是多少?:-)我没有这些信息,它不是我的Web服务,它只是一个公共Web服务,但其他人如何指出,这与我的问题无关