在大多数情况下,非技术人员在编写单元测试时看不到任何价值。他们只想完成基本代码,不要花钱和时间在单元测试等事情上。后来,他们每天都要求更多修复一个bug。项目缺少最后期限,他们仍然认为在良好的自动化测试中没有价值。
答案 0 :(得分:9)
最好的方法是不要让“非技术”人士如此技术化。只需将其构建到交付时间而无需详细说明。
另一方面,听起来项目截止日期实际上并不现实。
答案 1 :(得分:7)
我只是wrote at length关于这个话题。
总结我反对共同抱怨的论点:
清理对用户是不可见的;我们需要添加新功能。 用户也可以看到由杂乱的代码不断产生的错误。修复这些错误的时间本来可以用于添加功能。我们保持高质量债务的时间越长,添加每个新功能所需的时间就越长。
我们没有时间进行清理。 您宁愿花时间修复问题所产生的错误而不是修复问题?这就像每个周末都在捣乱杂草,而不是从根本上拉扯它们。预防的价值是治愈的十六倍。
开发人员陷入了困境;他们应该在自己的时间内摆脱它。 如果开发人员没有像他们那样快速地发布新版本,如果他们没有迅速回应早期采用者的反馈,即使产品变形为与其原始概念完全不同的野兽,我们也不会拥有我们当前的客户和收入。我们将为另一家公司工作,而不是抱怨我们建立的软件。
注意CEO:指点阻碍解决方案。相反,挑战您的开发人员以减少错误报告。这很容易测量,因此您可以跟踪时间与结果。请记住,开发人员更喜欢实现新功能来修复错误,所以如果他们乞求时间来修复错误,那就很严重了。
答案 2 :(得分:6)
尝试使用模拟。询问他们是否希望他们的孩子驾驶沃尔沃或Kit汽车在街上制造。答案应该始终是沃尔沃。然后问为什么?答案是它更可靠和安全。他们怎么知道的。答案是测试。所有汽车都经过了极端的测试,成本也反映了这一点。如果他们希望软件尽可能可靠,则需要进行测试。 (或者他们成为碰撞测试假人)
答案 3 :(得分:6)
我觉得问题是你说“所有功能”。所有函数都不需要单元测试,有些人认为单元测试单个函数在很多情况下都是正确的错误。
相反,我建议单元测试实际的“功能单元”。不是为每个函数编写单个测试,而是为每个场景或特征编写测试。除了节省大量时间并允许您在雷达下进行测试之外,它通常更准确,因为它实际上测试了它们使用的功能。通常,功能单元测试不能测试正确的东西,甚至更糟糕的是测试模拟。
我建议您不惜一切代价避免使用模拟测试。模拟的使用基本上使测试无效,因为您正在测试它在理想情况下的工作方式,而不是它在现实世界中的工作方式。
另一个好处是您还可以获得更好的死代码检测。高级测试未涵盖的任何代码可能未被使用,可以删除。永远不要低估消除死代码的价值。
答案 4 :(得分:1)
在开发已经开始之后销售完整的单元测试非常非常。我甚至会说它通常是不可能的。如果您没有从所有项目利益相关者那里获得完整的单元测试,那么您应该为您可以发出的任何单元测试感到高兴。
答案 5 :(得分:1)
你没有。测试不应该是单独编写的,因此不需要在日程安排中考虑它们,而不是专门安排“编译”或“输入代码”。编写测试所花费的任何时间都应该由他们保存你的时间来抵消。
答案 6 :(得分:1)
做吧。当你编写更多代码并首先考虑问题时,你会在开始时变慢。但是你会很快通过项目中的其他人,因为你有更少的错误/错误,你的设计更好。
如果您在设计系统时考虑到测试,那么设计本身就会比不可测试的设备更灵活。然后,将来更快地添加功能。
答案 7 :(得分:0)
答案 8 :(得分:0)
销售单元测试价值的一个好方法是从支持的角度来看 - 如果您使用的单元测试框架具有可以部署的运行时(nUnit是一个),您可以进行“运行单元测试” “帮助菜单上的菜单项。这可以运行所有单元测试,结果可以发送给技术支持,以帮助调试客户端问题。
显然,有很多方法可以用来销售增加的稳定性,但技术支持是大多数管理者希望降低的“真钱”成本。