我是应该使用TDD的大型软件项目的一部分。全世界大约有90位开发者。在复查软件组件的测试后,我确定大量测试是没有意义的。它们按照以下方式执行操作:


在模拟对象上设置真值,并检查它是否为真
设置模拟对象,期望某些行为不会发生,然后调用一些不相关的方法。当然,测试变量的默认值仍为false-测试没有碰到它。
测试说明与测试逻辑的实际操作发生冲突(说明说“已禁用”,但是测试逻辑通过了“启用”)

在纸面上,似乎有集成测试和单元测试。实际上,其中很多都是公然的假货。由于团队规模庞大,我希望人们会继续编写此类垃圾测试。

我该如何处理低质量的单元测试?
我可以倡导什么改变文化?
我该如何帮助强制初级开发人员不要为关键系统组件编写垃圾测试?

评论

我想您已经知道了这一点,但是我仍要这样说:他们没有使用TDD。他们只是在编写任意测试。他们可能不知道如何正确实施TDD。

#1 楼

认识到存在很大的组织问题。
管理必须改变并给予真正的领导才能

与管理层讨论:


质量
开发人员士气
开发人员培训和教育
没有质量测试的风险
以身作则的高级开发人员
对收入(错误和返工)的影响
影响对客户(错误和返工)的影响
对响应市场敏捷性的影响
对快速交付竞争能力的影响
高级开发人员不断提供午餐,学习和培训
>
如果找不到合适的听众,请在另一家公司找工作。

#2 楼

我认为,过滤这种低质量测试的最强大工具是代码审查。您可以使用突变测试技术来增强代码审查的能力,这将帮助您检测可能不会对整个项目范围产生任何价值的测试。您可以选择一些概念,并可能会寻找编程语言的替代方法。

#3 楼

有些事情似乎对我所工作的团队有用:


获得许可,记录下您的工作内容,然后将最终结果提交给您的同事以获取有兴趣开发更好的测试。确保您不会侮辱任何人的才华-我们都必须从某个地方开始!出于说明目的可能很吸引人,但是甚至没有在演示文稿中包含原始代码。
如果出现负面测试,请找到一种对它们进行正面测试或删除它们的方法。实际上与文档相对应。如果您在生产代码中发现任何错误,这可以作为奖励,您可以添加到演示文稿中。
记录所有丢失的测试,并在有空的时候编写它们。
记录匿名指标,例如如何您大大降低了循环复杂度,SLOC和修复的各种类型的测试错误的数量。


#4 楼


如何改善测试文化:





Mob会话可帮助开发人员开始研究可行的示例,并查看良好的测试与vs不好,所以他们可以通过示例来学习。
代码审阅,以检查变更集并查看已提交的代码,并向开发人员反馈有关所添加测试的信息。
开始定期组织“午餐和学习”或“技术开发会议”,重点是每个轮换团队每周主持一次,讨论他们的做法和工作。您可以从
开始改进功能测试。
任命测试冠军,他们将传授编写单元测试的正确方法。他们可以帮助宣传正确的测试。您可以
说服管理人员,这也将有助于确定年度冠军的目标

在您的组织中开始代码制作技巧课程,这将
帮助每个人了解理论的良好测试对它的支持。


#5 楼


最好的测试只是对SUT的一个布尔问题。


在类似的情况下,我会尝试将每个发现的缺陷(从缺陷数据库)映射回这些测试用例。并且会尝试找出(作为一个团队)我们是否提出了正确的问题,尤其是遗漏了哪些问题以及为什么?

如果大多数测试都没有意义,那么许多缺陷将不会被映射这些测试用例中的任何一个。

此练习本身将向团队建议测试的有效性和将来的正确操作方法。