高级开发人员是否应该免于单元测试 - 或者他们应该被允许使用走狗来实施它们吗? 激励那些不习惯使用单元测试技术的人采用它们的最佳方法是什么?

===============>>#1 票数:20 已采纳

我认为,从TDD纯粹观点(即认为应该实施之前编写单元测试的观点),高级开发人员应该编写更多的单元测试而不是走狗,而不是更少

原因在于,由于单元测试首先出现,因此编写它们需要对代码库有深入的了解。 如果你让这些走狗写下来,你基本上就是让那些对你的域知之甚少的人决定你的代码库的结构。 这对我来说听起来不错。

===============>>#2 票数:7

我认为让走狗为其他人做单元测试正在摧毁开始进行单元测试的重点。 编写代码的程序员应该知道代码应该如何破坏以及它的预期行为是什么。 仅仅因为其他人不会释放原始程序员的责任。

(由于性别中立而导致的尴尬措辞。)

===============>>#3 票数:5

写测试的人=定义系统应该如何工作=“老板”

实施测试的人是所谓的“走狗”

听起来像一只不喜欢新技巧的老狗。 正如俗话所说,很难让他们改变......一旦你开始做TFD(测试优先开发)非常有趣,也许有一个关于整个团队的TDD或TFD内部为期一天的研讨会。

===============>>#4 票数:5

高级开发人员是否应免于单元测试

绝对不。 他们当时不应该是高级开发人员。 高级开发人员应该是领导者展示方式,走狗这样做的想法似乎很荒谬 - 为什么还要费心去测试呢。

===============>>#5 票数:4

我认为处理这些情况的一种可能方法是高级开发人员可以编写大部分单元测试。 这意味着他们正在定义和设计程序应该工作的方式。 然后,走狗可以编写代码来匹配测试,学习高级人员的设计哲学。

===============>>#6 票数:4

第一部分 (高级开发人员和单元测试)

当我想到TDD或测试驱动设计时,单元测试的目的是驱逐系统的演化设计 ,希望确保持续改进。
编写测试会对代码进行整形或突出显示已经做出决策的问题,希望能够进行重构过程以提高设计质量。

根据我的经验,高级开发人员通常是具有最多经验和能力的人,这意味着他们应该更好地发现这些重构机会。 (检测代码味道)

我可以想到三种情况,在我的脑海中,其他人为你编写测试是可以接受的。

  1. 验收测试 /客户测试/结束测试。 按照你的意愿调用它们,但我的意思是从数据输入点开始的测试(Web服务,网页,应用程序屏幕输入),并遍历整个系统堆栈,(到数据库,调用另一个服务,回到输入结果屏幕等)。 这可以由没有实施将由测试行使的各个单元的细节的人编写。
  2. 配对编程( 乒乓模式 ) -

    A编写一个新测试并发现它失败了。
    B实现了通过测试所需的代码。
    B写下一个测试。
    A实现它。

  3. 错误修复测试 - 当发现错误时,编写暴露缺陷的失败测试通常是一种好习惯。 一旦完成此测试,就有可能有人实现了使测试通过的代码。 我不认为这是一个好主意,因为编写因缺陷而失败的测试的行为通常会给出一些关于如何产生修复的见解。

简而言之,我对你的第一个问题的回答是,高级开发人员不应该免于编写单元测试。

第二部分 (激励人们编写测试)

这是我过去遇到的问题。 尽管我现在尝试并且经常执行TDD,但我花了几个月的时间才发现编写测试确实有好处。
我相信试图向其他人展示TDD和单元测试的好处是非常困难的。 只有当这个人为自己体验时,TDD /单元测试突显了他们的代码中的一个微妙之处,他们可能会错过或者帮助他们在短时间内修复错误,那就是'啊哈'时刻看到好处。 让他们达到这一点可能非常困难。
我个人通过前面提到的Ping Pong模式中的结对编程到达那里,与经验丰富的TDDer一起工作,看到我们编写的代码解决了一个非平凡的功能,演变成可能被称为优雅的解决方案。 接下来是通过QA进入实时环境的工作,没有任何缺陷。

简而言之,我认为与经验丰富的程序员配对,他们已经确信编写单元测试所带来的好处是帮助某人有动力编写单元测试的好方法。

===============>>#7 票数:2

绝对不; 至少是因为为自己开发的代码编写测试要容易得多。 但是对所有开发人员来说,无论资历如何,对所有代码进行单元测试都很重要; 如果他们发展知道他们的代码必须是可测试的,他们的劳动成果会更大。

如果您需要激励开发人员进行单元测试,只需按下主页,从长远来看,将节省优势和时间。 如果他们养成了为代码编写单元测试的习惯,他们很快就会开始这样做。

===============>>#8 票数:2

如果您是高级开发人员,部分原因在于您有足够的经验知道单元测试是一种很好的开发实践,可以帮助生成更好的软件

===============>>#9 票数:2

如果高级开发人员没有进行自己的测试,那么他们就不是高级开发人员。

缺乏测试意愿几乎总是懒惰或无能(或两者)的标志,也不是高级开发人员应该发现的特征。

我能想到的唯一情况是,一个高级开发人员让其他人编写他们的单元测试的适当位置将是一个初级新员工正在加快速度。 在编写代码时,让自己的脚湿润可能是一项很好的任务。

===============>>#10 票数:2

单元测试的最大好处之一是即时反馈,它可以告诉您自己的表现如何。 如果您将测试的实施外包,如果您的设计有效,您将得不到任何反馈。 那些在糟糕设计中苦苦挣扎的人们无法纠正它。

===============>>#11 票数:1

我不赞同TDD的宗教信仰,但我确实在单元/等测试中看到了很多价值,并且在编码时做了很多。

关键是,没有人真正知道代码应该做什么,除了编写它的人,他们通常甚至都不知道。

考虑到这一点,你不会从编写测试的'lackeys'中获得太多价值,因为

  1. 他们不会对所有微妙的角落案件有深入的了解
  2. 他们不会关心代码,因为他们没有投入任何代码
  3. 他们会觉得他们被当作白痴对待。

即使他们是白痴,也没有人喜欢被当作一个人对待。 如果您希望您的员工退出,这是鼓励他们的好方法。

===============>>#12 票数:1

没有人应该免于编写单元测试。 所有开发人员都需要能够编写它们,并且单元测试也应该作为代码审查过程的一部分进行审核。 单元测试的复杂性通常取决于开发人员的技能 - 对于更高级的开发人员来说代码更复杂,因此更复杂和更大量的单元测试也会发生。

如果你有一个或多个开发人员无法适应,你应该尝试给他们一对一的帮助,并配对开发人员进行单元测试,直到他或她开始掌握它为止。 没有什么技术上足够复杂,以至于可以编写代码的人无法进行单元测试。 如果情况确实如此,那可能是该人技能更大问题的前兆。

我个人认为,测试人员至少能够理解作为项目一部分的单元测试也是有帮助的。 开发人员和测试人员之间的协作对于正确诊断和修复缺陷非常重要。 我不希望他们必须编写它们,但是他们应该能够和开发人员坐在一起,然后回顾一下测试失败的原因和方式的概念。

===============>>#13 票数:0

好吧,我会说是的,但只有在允许将发现的错误修复到老年人的情况下才允许。 那将教会他。

  ask by Joe Schneider translate from so

未解决问题?本站智能推荐:

9回复

开发人员测试与QA团队测试 - 什么是正确的工作分工? [关闭]

在尝试提倡更多的开发人员测试时,我发现“这不是QA的工作吗?” 经常使用。 在我看来,为QA团队提供所有测试职责是没有意义的,但同时Spolsky和其他人说你不应该使用100美元/小时的开发人员做一些30美元/小时的测试人员可以做的事情。 在拥有专门的QA团队的公司中,其他人的经验是什么?
3回复

作为专业开发人员,不编写单元测试是否可以接受? [关闭]

只是想知道TDD /自动单元测试的优缺点,并寻找社区对于专业开发人员在不支持单元测试的情况下编写应用程序是否可接受的观点? 重新向程序员询问: https : //softwareengineering.stackexchange.com/questions/159572/is-it-ac
4回复

单元测试是否保护您的代码免受其他开发人员的错误?

我一直在研究单元测试的好处,并验证代码的正确性以及如果你正确地执行它,你自然会创建松散耦合代码的额外好处。 换句话说,一个单位就像一个方法一样小 - 而不是更大。 这些似乎是最重要的2.我只是想知道好的单元测试是否会围绕代码并保护其功能免受其他开发人员代码更改(假设单元测试失败是一个失败的构
3回复

如何为系统编写开发人员测试(单元测试,集成测试等)?

我有一个WCF服务,该服务运行并与数据库,文件系统和少数外部Web服务进行交互,然后创建结果,并Xml对其进行序列化并最终将其返回。 我想为此解决方案编写测试,并且正在考虑如何使用(全部使用依赖注入和按合同设计)。 我可以采用3种主要方法。 1)我可以选择最小单位的代码/方法并
1回复

非开发人员的Android测试框架

我的问题与此类似。 我正在寻找适用于Android的自动化测试框架,其中的测试用例可以由QA技术人员编写。 到目前为止,我看到的所有框架都要求对Java,JUnit,Eclipse,Adb,Activity等有深入的了解。
1回复

如何确保开发人员知道要测试的不重要内容? [关闭]

在提出这个问题之前,我阅读了以下问题及其答案: 单元测试的合理代码覆盖率是多少(为什么)? 在进行单元测试时,100%的代码覆盖率真的是一件好事吗? 单元测试代码覆盖率-您有100%的覆盖率吗? 并阅读其他博客,例如Martin Fowler-TestCover
1回复

在实现API时,是否应该信任其他开发人员? [关闭]

假设您正在使用(PHP,但没关系)库,该库有时会被其他开发人员使用。 该库包含大量单元测试,以确保其按预期工作,还对一些边缘情况进行了测试,例如在明显不好的参数上引发异常(例如,传递期望标量值的数组等)。 应该在牺牲性能的同时编写更多的单元测试,并在代码中进行更多的值检查,以确保从不传递无效
2回复

是否有必要在Web开发中编写单元测试? [关闭]

我从事网络开发已有4年多了。 我曾参与过几个不同的项目,但我们从未在单个项目中编写单元测试。 由于所有紧张的时间表和死线,编写测试变得非常困难。 所以我的问题是: - 在进行Web开发时是否真的有必要编写单元测试? 如果是,那么在编码和测试时如何管理他的时间?
2回复

想要为业务开发人员团队创建包含测试用例的UI界面

我想为业务开发人员团队创建UI界面,其中包含测试脚本,这些脚本在我的PC中用c#编写在硒中。 问题:- 业务开发团队的PC上没有安装Visual Studio,因为他们没有许可证。现在,如果他们想向客户端显示Application演示,那么如果他们的UI包含我在selenium中
2回复

更高级别的单元测试

我在php中有一个遗留代码库,我们在python(新代码库)中有一些应用程序。 我正在尝试将旧版块迁移到新的代码库/语言。 目前我只能想到使用回归测试(意味着有人手动访问遗留代码曾经处理过的链接)来验证和验证代码是否已成功迁移。 然而,我是单元测试的忠实粉丝,并且想知道是否可以在更高级别应