- "这是QA的工作,只需专注于功能和开发"
- "应用程序并非关键任务,如果有一些错误也不是世界末日"
- "我们不能浪费时间在单元测试上"
- "尽量不要太花哨"
我经常看到在生产环境中出现故障,其中一些故障本可以通过运行单元测试来静态捕获并避免。
我只是想开展对话,看看人们的经验是什么,以及解决这个问题的最佳方法是什么。
更新:感谢大家提供了许多有见地的建议。有几个答案我希望能选为正确答案。
将单元测试引入开发流程就像投资一样:您必须先花一些时间成本才能获得以后的利润。如果您坚持这个比喻,管理层应该更加关注它:描述所需的投资,然后制定获利计划。
例如:
利润:
当然,我并不是说这很容易 - 我上面所说的是一种过度简化了的表述,即使我每天也在挣扎鼓动所有人。
如果将来您决定转到另一家公司,您可能希望明确寻找实践TDD的公司。
人们会听从他们的钱包。展示你可以通过及早捕捉漏洞而节省多少时间。将其转化为节省的美元金额。
注:本文中不保留空格和换行符。
就第三点而言,投入时间进行单元测试很可能会减少上市时间。这是一篇很棒的文章- http://blog.scottbellware.com/2008/12/does-test-driven-development-speed-up.html
对我来说,采用单元测试的最大优势是我可以改变我的编码行为,使其更易于测试,换句话说,以更松散耦合的方式进行。
如果由于管理问题而无法在实际项目中实践单元测试,我会选择在一些小型玩具项目上进行实践,只是为了强迫自己找到编写可测试代码的方法,即使没有单元测试。
这是我的个人看法。
我的简短而不完整的建议是:
换工作。一个管理层会给出这种回答的公司注定会失败,并且很快就会倒闭。在为时已晚之前离开。
反转责任游戏。每次发布没有单元测试的东西时,发表一份官方声明,说明已经这样做了,并且您不能保证它没有错误。
记录您在任务上花费的时间,将修复失败部署后的漏洞与其他任务分开,并将其总计与(潜在的)编写单元测试的时间分配进行比较。
在这个主题的其他出色评论中,还有一个想法要补充(其中许多我已经点赞):确保您的管理层知道单元测试目前已经高度自动化。我发现将 NUnit 弹出屏幕,点击“运行全部”按钮并在几秒钟内通过数十个绿色测试非常令人印象深刻。只需这样做一次,说“这验证了尽管进行了许多新更改,但所有旧工作仍然是正确的”,您可能会赢得一些信徒。无论如何,他们会比其他人更信任您 - 因为您可见的质量证明 - 这对您的职业生涯只有好处。