aby*_*byx 108 testing unit-testing
我们有一个初级程序员,根本没有写足够的测试.
我必须每两个小时唠叨他一次,"你有没有写过考试?"
我们尝试过:
我的工作需要高质量的稳定代码,通常每个人都"得到它",而且没有必要推动测试.我们知道我们可以让他写测试,但我们都知道有用的测试是你进入测试时所写的.
你知道更多的动机吗?
Jus*_*ard 123
这是最难的事情之一.让你的员工得到它.
有时,帮助初级程序员"获得它"并从老年人那里学习正确技术的最好方法之一就是做一些结对编程.
试试这个:在即将开展的项目中,将初级男生与自己或其他高级程序员配对.他们应该一起工作,轮流"开车"(在他们的键盘上打字)和"教练"(看着司机的肩膀并指出他们去的建议,错误等).这似乎是浪费资源,但你会发现:
也许你的小组中有人会给Kate Rhodes 提供单元测试101演示文稿,我认为这是让人们对测试感兴趣的好方法,如果交付顺利的话.
你可以做的另一件事是让你的Jr. Devs练习保龄球游戏Kata,这将帮助他们学习测试驱动开发.它在java中,但可以很容易地适应任何语言.
Rod*_*own 21
在每次提交之前进行代码审查(即使它是1分钟"我已经更改了此变量名称"),并且作为代码审查的一部分,请查看任何单元测试.
在测试到位之前,请勿签署提交.
(另外 - 如果他的工作没有经过测试 - 为什么它首先在生产构建中?如果没有经过测试,不要让它进入,那么你就不必在周末工作)
dmc*_*kee 20
对于我自己,我已经开始坚持认为我找到并修复的每个错误都表示为测试:
我尝试在敲打东西的同时做到这一点,我几乎在同一时间完成,只有部分测试套件已经到位.
(我不是生活在商业编程环境中,而且通常是处理特定项目的唯一编码人员.)
小智 16
想象一下,我是一个模拟程序员,名字叫... Marco.想象一下,我不久前已经毕业了,从来没有真正写过考试.想象一下,我在一家没有真正执行或要求的公司工作.好?好!现在想象一下,该公司正在转向使用测试,他们正试图让我对此进行内联.我会对目前提到的项目做出一些讽刺的反应,好像我没有对此进行任何研究.
让我们从创建者开始:
表明设计变得更简单.
如何写更多,让事情变得更简单.我现在必须密切关注获得更多案件等等.如果你问我,这会让事情变得更加复杂.给我详细的信息.
显示它可以防止缺陷.
我知道.这就是他们被称为测试的原因.我的代码很好,我检查了它的问题,所以我不知道这些测试会有什么帮助.
让它成为一个自负的事情只说坏程序员不会.
哦,所以你认为我是一个糟糕的程序员只是因为我没有那么多用于测试.我被侮辱并对你感到非常恼火.我宁愿得到帮助和支持而不是说法.
@ 贾斯汀标准:开始新的期望与初级男人和你自己或另一个高级程序员.
哦,这非常重要,我将花费资源确保我看到事情是如何完成的,并且有一些帮助我完成工作的方式.这很有帮助,我可能会开始做更多.
啊,这是一个有趣的演讲,它让我考虑测试.它打破了我应该考虑的一些问题,它可能会影响我的观点.
我很想看到更引人注目的文章和其他工具来帮助我认识到这是正确的做事方式.
@ Dominic Cooney:花一些时间分享测试技巧.
啊,这有助于我理解我对技术的期望,并且它将更多的项目放在我的知识包中,我可能会再次使用.
@ Dominic Cooney:回答问题,例子和书籍.
让一个点人(人)回答问题很有帮助,这可能会让我更有可能尝试.好的例子很棒,它给了我一些目标,以及寻找参考的东西.直接与此相关的书籍是很好的参考.
@ Adam Hayle:惊喜评论.
说什么,你提出了一些我完全没有准备的东西.我对此感到不舒服,但会尽我所能.我现在会害怕并且有点担心再次出现,谢谢.然而,恐吓战术可能有效,但确实有成本.但是,如果没有其他工作,这可能只是需要的推动.
@ Rytmis:只有在有测试用例时才会考虑完成项目.
哦,有趣.我觉得我现在真的必须这样做,否则我没有完成任何事情.这是有道理的.
@ jmorris:摆脱/牺牲.
强光,怒视,强光 - 我有机会学习,在支持和帮助下,我可以成为团队中非常重要和有功能的部分.这是我现在的一个障碍,但不会持续很长时间.但是,如果我没有得到它,我明白我会去.我想我会明白的.
最后,我的团队的支持在这一切中发挥了重要作用.让一个人花时间去帮助,让我开始养成良好的习惯总是受到欢迎.然后,拥有一个良好的支持网将是伟大的.总是会感激的是,有人来后几次,并查看一些代码,看看一切是如何流动的,不是在评论本身,而是更友好的访问.
推理,准备,教学,跟进,支持.
Ryt*_*mis 12
我注意到很多程序员在合理的层面上看到了测试的价值.如果你听过"是的,我知道我应该测试这个,但我真的需要快速完成"然后你知道我的意思.然而,在情感层面上,他们觉得只有在编写真实代码时才会完成某些事情.
那么,目标应该是以某种方式让他们理解测试实际上是测量什么时候"完成" 的唯一方法,从而给他们编写测试的内在动机.
不过,我担心这比应该的要困难得多.你会听到很多借口,"我真的很着急,我稍后会重写/重构,然后添加测试" - 当然,后续工作从未发生,因为,令人惊讶的是,他们"再接下来的一周一样忙碌.
这就是我要做的事情:
第一次......"我们将共同完成这个项目.我将编写测试,你将编写代码.注意我如何编写测试,因为我们是如何做事的在这附近,这就是我对你的期望."
接下来......"你已经完成了?太棒了!首先让我们看一下推动你开发的测试.哦,没有测试?让我知道什么时候完成,我们会重新安排查看你的代码.如果你'需要帮助来制定测试让我知道,我会帮助你."
作为一名初级程序员,我仍然在努力养成编写测试的习惯.显然,要养成新的习惯并不容易,但考虑到什么会让这对我有用,我必须对代码评论和辅导/结对编程的评论+1.
也许值得强调测试的长期目的:确保昨天工作的东西今天,下周和下个月仍在工作.我只是说,因为在略读答案时我没有看到提到的那些.
在进行代码审查时(如果您决定这样做),请确保您的年轻开发人员知道这不是要让他失望,而是要让代码更好.因为这样他的信心不太可能受到损害.这很重要.另一方面,知道你知之甚少也是如此.
当然,我真的什么都不知道.但我希望这些话有用.
编辑:[ 贾斯汀标准 ]
不要让自己失望,你要说的是非常正确的.
关于代码审查的观点:你会发现,不仅初级开发人员会在这个过程中学习,但审稿人也会如此.代码审核中的每个人都会了解您是否将其作为协作流程.
他已经在做这个了。真。他只是不写下来。不服气吗?看着他经历标准的开发周期:
步骤#3是测试。他已经进行过测试,只是手动进行。向他问这个问题:“明天您怎么知道今天的代码仍然有效?” 他会回答:“代码太少了!”
问:“下周怎么样?”
当他没有答案时,问:“您希望程序何时告诉您更改在昨天中断了某些工作吗?”
这就是自动单元测试的全部内容。