我有一个开发人员,它将通过编写永不失败的测试来绕过我们的代码覆盖率。
代码很糟糕,但测试永远不会捕捉到它,因为它们断言(真)。
我进行代码审查,但我不能一直为每个人工作。你如何让这样的人有动力去开发好的软件?
是否有用于检测不会失败的测试的构建插件?
C#,mbUnit 测试。
我有一个开发人员,它将通过编写永不失败的测试来绕过我们的代码覆盖率。
代码很糟糕,但测试永远不会捕捉到它,因为它们断言(真)。
我进行代码审查,但我不能一直为每个人工作。你如何让这样的人有动力去开发好的软件?
是否有用于检测不会失败的测试的构建插件?
C#,mbUnit 测试。
真正的动力来自内心。有些人会利用他们获得的每一个机会来玩这个系统,有时他们只是出于他们的原因。其他人这样做只是因为他们是黑客。
也就是说,假设您的经理,与开发人员“来找耶稣”会面。如果这仍然不起作用,那么门总是存在的。
如果您不是经理,请使用适当的渠道。
我想你几乎已经为自己回答了这个问题。如果您有人为您或与您一起工作(您不清楚您是否是该开发人员的经理),那么如果他们没有正确地完成工作,那么肯定有一些程序可以让这个人清楚地知道他们没有按照可接受的标准生产工作。
开发人员是 TDD 的新手吗?也许他们需要一些关于编写好的测试等的辅导。否则他们需要踢屁股并向他们强调测试似乎并不比他/她正在生成的代码更重要。
哦,是的,在插件方面,忘记这一点,你正在做的相同的代码审查应该足够好。
您应该真正指定您正在使用的语言/框架。
在最简单的情况下,我想用简单的-ping检测assert(true)
字符串应该很容易。grep
对于应用程序配置值,您始终可以尝试使用垃圾进行测试运行。
任何通过的测试都是可疑的?
与其花时间寻找不会失败的测试,不如稍微扩展测试——让代码在很多方面都失败。那会
您必须使用的一段错误代码将是一个很好的起点——您必须确保它有效......
取他正在测试的界面并将其简化为最简单的形式。换句话说,获取类/方法签名并仅添加编译所需的代码。对此进行测试。问他为什么程序什么都不做时他的测试通过了。
由两个或多个已经被测试感染的开发人员进行的代码审查可能是让有问题的开发人员看到自动化单元测试真的没有那么困难或不寻常的最佳方式。每次审查都有两个受测试感染的开发人员将加强质量单元测试对他的重要性。此外,分配他对经过良好测试的其他开发人员代码的评论将帮助他学习如何进行单元测试。
你应该看看做一些突变测试,以检测弱测试。Nester(Jester的 .Net 等价物)是一种您可能会发现有用的工具。
请告诉我们你的进展情况!
更新:我遇到了:“为什么大多数开发人员仍然不编写单元测试?” 并认为在这里阅读也会很好。
我认为您需要先尝试让他写一个失败的测试。试着让他养成这个习惯。通常,单元测试的新手很难编写它们。
还有一些工具可以帮助您“探索所有可能的代码路径”。我建议你看一下,PEX会生成自动化测试,它很可能会破坏他的代码......虽然这可能不是一个最佳方案,但尝试推广共享代码库的概念。
让您的开发人员配对程序,当您与其他人一起使用相同的功能时,“偷懒”会困难得多,并且会分散代码所有权。您似乎没有这样做,因为您谈论“他的”代码。如果有 2 个人从事同一份工作,您可以完成多少工作,这可能会令人惊讶,这将大大提高质量。
此外,单元测试并不是消除所有问题的圣杯……它们应该是您可以使用的工具之一。
你的代码覆盖要求是什么?