Unit testing 如何让初级程序员编写测试?

Unit testing 如何让初级程序员编写测试?,unit-testing,testing,Unit Testing,Testing,我们有一个初级程序员,只是没有编写足够的测试。 我每两个小时就得唠叨他一次,“你有笔试吗?” 我们尝试过: 显示设计变得更简单 显示它可以防止缺陷 让它成为一种自负的东西,说只有糟糕的程序员才不会 这个周末,两个团队成员不得不来工作,因为他的代码有一个空引用,他没有测试它 我的工作需要高质量、稳定的代码,通常每个人都能“理解”,不需要推动测试。我们知道我们可以让他写测试,但我们都知道有用的测试是在你投入其中时编写的 你知道更多的动机吗?如果初级程序员或任何人看不到测试的价值,那么就很难让他们

我们有一个初级程序员,只是没有编写足够的测试。
我每两个小时就得唠叨他一次,“你有笔试吗?”
我们尝试过:

  • 显示设计变得更简单
  • 显示它可以防止缺陷
  • 让它成为一种自负的东西,说只有糟糕的程序员才不会
  • 这个周末,两个团队成员不得不来工作,因为他的代码有一个空引用,他没有测试它
我的工作需要高质量、稳定的代码,通常每个人都能“理解”,不需要推动测试。我们知道我们可以让他写测试,但我们都知道有用的测试是在你投入其中时编写的


你知道更多的动机吗?

如果初级程序员或任何人看不到测试的价值,那么就很难让他们去做…期间

我会让初级程序员牺牲他们的周末来修复这个bug。他的行为(或缺乏)并没有直接影响到他。此外,要清楚地表明,如果他不提高自己的测试技能,他将不会获得晋升和/或加薪


最后,即使有你的帮助、鼓励和指导,他也可能不适合你的团队,所以让他去寻找一个真正适合你的人。

坦白说,如果你不得不花那么多精力让他做一些事情,那么你可能不得不接受他可能不适合团队的想法,而且可能需要离开。现在,这不一定意味着解雇他。。。这可能意味着在公司里找一个更适合他的地方。但是如果没有别的地方…你知道该怎么做

我假设他也是一名相当新的员工(<1年),可能最近刚从学校毕业……在这种情况下,他可能不习惯公司环境中的工作方式。像这样的事情,我们大多数人在大学里都可以侥幸逃脱

如果是这样的话,我发现有一件事很有效,那就是做一个“新员工惊喜回顾”。不管你以前是否做过,他都不会知道。让他坐下来,告诉他你将检查他的表现,并向他展示一些真实的数字……拿着你的常规审查表(你确实有正式的审查流程,对吗?),如果你愿意,改变标题,让它看起来正式,并向他展示他的立场。如果你在一个非常正式的环境中向他展示,不做测试会对他的表现评分产生负面影响,而不是只是“唠叨”他,那么他很有希望得到这一点。你必须向他表明,他的行为实际上会影响到他,无论是薪酬方面还是其他方面


我知道,你可能不想这样做,因为这不是官方的。。。但我认为你有理由这么做,而且这可能比解雇他并招募新人要便宜得多。

我注意到很多程序员都看到了理性测试的价值。如果你听过类似“是的,我知道我应该测试一下,但我真的需要尽快完成”,那么你知道我的意思。然而,在情感层面上,他们觉得只有在编写真正的代码时才能完成某些事情

因此,我们的目标应该是以某种方式让他们明白,测试实际上是衡量某件事情何时“完成”的唯一方法,从而给他们编写测试的内在动机

不过,恐怕这要比实际困难得多。你会听到很多这样的借口:“我真的很忙,我稍后会重写/重构它,然后添加测试”——当然,后续工作从未发生过,因为令人惊讶的是,他们下周也一样忙。

这是最难做的事情之一。让你的人得到它

有时候,帮助初级程序员“理解”并从高级程序员那里学习正确技术的最好方法之一就是做一些结对编程

试试这个:在一个即将到来的项目中,把初级程序员和你自己或其他高级程序员配对。他们应该一起工作,轮流“驾驶”(在键盘上打字)和“指导”(看着司机的肩膀,指出建议、错误等)。这似乎是浪费资源,但你会发现:

  • 这些人一起可以快速、高质量地生成代码
  • 如果你的下级成员学到了足够多的知识,能够在上级成员的指导下“获得它”(例如:“好的,在我们继续之前,让我们在测试时为这个函数编写代码。”),那么你投入的资源将是物有所值的
  • 也许你的团队中也有人来做Kate Rhodes的演讲,我认为这是一个让人们对测试感到兴奋的好方法,如果交付得好的话


    您可以做的另一件事是让您的Jr开发人员进行实践,这将帮助他们学习测试驱动开发。它是用java编写的,但可以很容易地适应任何语言。

    如果您的同事缺乏编写测试的经验,那么他或她可能在简单情况之外的测试中遇到困难,这表现为测试不足。以下是我将尝试的:

    • 花点时间和同事分享测试技术,比如依赖注入、查找边缘案例等等
    • 主动回答有关测试的问题
    • 对测试进行代码审查一段时间。请您的同事回顾您的更改,这些更改是良好测试的典范。查看他们的评论,看看他们是否真的在阅读和理解您的测试代码
    • 如果有特别适合您团队测试理念的书籍,请给他或她一本。如果您的代码评审反馈或讨论参考了这本书,那么他或她就有了一条线索可以学习和遵循,这可能会有所帮助
    我不会特别强调羞耻/内疚因素。值得指出的是,测试是一个广泛的领域