针对通用API的BDD方案的建议?

时间:2009-05-05 13:06:09

标签: unit-testing bdd

我正在为我的应用程序的API部分组装BDD启发的单元测试。 (是的,我知道,BDD应该是关于域名并与诉讼交谈,但我宁愿在不太明显的东西上试用BDD)

  • 普通使用。开发人员使用 具有普通参数值的API方法。

  • 极端使用。开发人员调用API 异常大/小 参数。例如。 zip()方法传递一个2 GB的文件。

  • API滥用。开发人员调用 带疯狂参数的API - 多么疯狂 程序员会把日期传给一个 整数参数,对吗? - 参数是 忘了,等等。

  • 恶意黑客。开发者 不关心API的用途 要这样做,而是寻找 执行任意代码的方法。 测试包括JavaScript,SQL 只是为了看看我们是否可以让他们去 在任何地方执行。

我还应该考虑其他任何情况吗?

1 个答案:

答案 0 :(得分:1)

当然,总有更多场景需要考虑。坦率地说,有一个无限的场景。这真的是一个非常开放的问题。

关于恶意黑客攻击场景,你应该只关注缓冲区溢出的明显位置,然后坚持测试已确认的安全漏洞,这样你就不会意外地重新打开它们。每当您确实获得已确认的漏洞时,请搜索使用类似编程技术和模式的代码中的每个位置,并抢先测试/修复这些漏洞。但是,在很多情况下,模糊测试会给你带来更好的效果。自动化测试是处理安全问题的重要部分,但它绝不应成为工具箱中的主要工具。

其他需要考虑的事项可能是数据特定的。例如,在解析日期时,请务必处理类似2/29/2009或9/31/2009的内容。如果可以,请尝试处理1/1/1900和12/31/2038(您的图书馆可能不会让您)。

您可以做的一件事是检查您正在进行的所有库调用的文档,找出在哪些条件下抛出的异常,并故意尝试查找将触发这些异常的输入,然后确保您'我们得到了一些测试,用于验证是否处理了这些异常,或者在库代码的情况下进行了记录。

代码覆盖率工具和代码变异还可以帮助您识别以前未涵盖的方案。