你用Unit测试测试什么?

Ico*_*ood 6 unit-testing

我是单元测试的新手.假设我正在构建一个Web应用程序.我怎么知道要测试什么?您看到的所有示例都是某种基本的和函数,它实际上没有任何实际价值,或者至少我从未编写过添加到输入然后返回的函数!

所以,我的问题......在Web应用程序上,有哪些需要测试的东西?

我知道这是一个广泛的问题,但任何事情都会有所帮助.我会对链接或任何提供真实生活示例的内容感兴趣,而不是没有任何实际用法的概念示例.

the*_*ill 2

看看你的代码,尤其是那些有循环、条件等复杂逻辑的部分,然后问自己:我怎么知道这是否有效?

如果您需要更改复杂的逻辑以考虑其他极端情况,那么您如何知道您引入的更改不会破坏现有情况?这正是单元测试要解决的问题。

因此,要回答有关它如何应用于 Web 应用程序的问题:假设您有一些代码根据浏览器以不同的方式布置页面。您的一位客户拒绝从 IE6 升级,并坚持要求您支持。因此,您可以通过模拟 IE6 中的连接字符串并检查布局是否符合您的预期来对布局代码进行单元测试。

客户告诉您,他们发现了一个安全漏洞,使用特定的 cookie 将为您提供管理员访问权限。你怎么知道你已经修复了这个错误并且它不会再次发生?为其创建单元测试,并每天运行单元测试,以便在失败时获得早期警告。

您发现一个错误,名称中带有重音的用户在数据库中被损坏。从数据库层抽象出 Webform 输入并添加单元测试,以确保(例如)UTF8 编码的数据正确存储在数据库中并且可以检索。

你明白了。流程的一部分具有明确定义的输入和输出的任何地方都是单元测试的理想选择。任何不符合的东西都是重构的理想选择,直到它被明确定义为止。看看 WebUnit、HTMLUnit、XMLUnit、CSSUnit 等项目。