Unit testing 以编程方式测试代码:由程序员还是其他人?

Unit testing 以编程方式测试代码:由程序员还是其他人?,unit-testing,testing,tdd,selenium,web-testing,Unit Testing,Testing,Tdd,Selenium,Web Testing,下面是我老板的一句话:“[…]我们需要把重点放在编程上[…]归根结底,我想写一个好的软件,而不是陷入测试的泥潭。”这是在我们经历了3个月令人生畏的错误列表之后说的,最近我们指定了一个非程序员用Selenium框架编写web测试 我的老板非常害怕单元测试(当它减慢开发速度时,他看不到成本效益)。您对web测试和编程测试的总体看法是什么?它们应该由(或)程序员编写,还是很重要?我的想法是编写好软件的一部分就是编写测试?他是一个喜欢微软象牙塔的人,所以微软(或一般的好文章)提供的任何支持设计测试的资源

下面是我老板的一句话:“[…]我们需要把重点放在编程上[…]归根结底,我想写一个好的软件,而不是陷入测试的泥潭。”这是在我们经历了3个月令人生畏的错误列表之后说的,最近我们指定了一个非程序员用Selenium框架编写web测试

我的老板非常害怕单元测试(当它减慢开发速度时,他看不到成本效益)。您对web测试和编程测试的总体看法是什么?它们应该由(或)程序员编写,还是很重要?我的想法是编写好软件的一部分就是编写测试?他是一个喜欢微软象牙塔的人,所以微软(或一般的好文章)提供的任何支持设计测试的资源都会很有帮助。

以下是我所做的

  • 不管怎样,我还是写了测试

  • 我在编写测试之后编写了代码

  • 代码坚如磐石,而且(大部分)没有bug(在我的能力范围内)

  • 我从来没有告诉任何人我在做TDD。除非他们要求

    事实证明,TDD实际上比胡乱设计、编写代码并希望它能工作要快

    一些事情包括一个额外的步骤0:一个“技术尖峰”,看看事情是如何运作的。接下来是一些测试开发,以测试尚未编写的真实软件

    在开始设计时,我有点落后于计划。因为我的设计是“为那个设计设计并编写测试”,而另一些人的设计是“用一些聪明的想法,但并没有真正的证据到处乱摸。”一些人可以在纸上很好地设计。我不能。但我可以设计测试

    在完成代码方面,我通常遥遥领先。因为——当我完成编码时——所有的测试都通过了。

    以下是我所做的

  • 不管怎样,我还是写了测试

  • 我在编写测试之后编写了代码

  • 代码坚如磐石,而且(大部分)没有bug(在我的能力范围内)

  • 我从来没有告诉任何人我在做TDD。除非他们要求

    事实证明,TDD实际上比胡乱设计、编写代码并希望它能工作要快

    一些事情包括一个额外的步骤0:一个“技术尖峰”,看看事情是如何运作的。接下来是一些测试开发,以测试尚未编写的真实软件

    在开始设计时,我有点落后于计划。因为我的设计是“为那个设计设计并编写测试”,而另一些人的设计是“用一些聪明的想法,但并没有真正的证据到处乱摸。”一些人可以在纸上很好地设计。我不能。但我可以设计测试


    在完成代码方面,我通常遥遥领先。因为——当我完成编码时——所有的测试都通过了。

    我知道你的老板来自哪里。毕竟,程序员应该能够写出“有效”的代码。但是,无论是在您的公司进行单元测试、集成测试,还是在客户安装之后,测试都将进行。每个阶段的错误都有不同的成本和后果,不过…

    我知道你的老板是从哪里来的。毕竟,程序员应该能够写出“有效”的代码。但是,无论是在您的公司进行单元测试、集成测试,还是在客户安装之后,测试都将进行。每个阶段的错误都有不同的成本和后果,尽管……

    CodeComplete是Microsoft收藏的一本书。它包含建议,提倡同行评审,并将单元测试作为一个概念加以讨论。单元测试的细节不会太多,但这可能会让他对这个想法产生兴趣,你可以从那里进一步探索这个主题

    最终你需要一个直接参与自动化测试的程序员。。。我是说,这就是定义

    单元测试最有效的编写者是最熟悉为其编写的子系统的人员,当选择其他人编写单元测试时,他们需要花费时间来加速,并且他们可能会错过代码中未记录或未明确的意图,这可能会导致更差的覆盖率。另一方面,子系统的所有者也可能对某些缺陷视而不见(但这正是同行代码评审的目的!)


    剩下的这只是对伦理学的空谈,但重要的是要考虑。

    当管理层做出愚蠢的决定时,有些人喜欢尝试“偷偷摸摸”构建。这不仅让我感到不安,也让我对那些程序员有些警惕。我理解其中的动机,我认为我们都经历过,但最终你应该接受教育,而不是参与其中

    管理在日程安排中扮演着重要的角色,他们依靠您对所完成的工作进行准确的估计和全面的了解。如果你把你的估计数加起来,把额外的工作掩盖起来,那真的是件好事吗?一个简单的谎言变成了这个精心设计的恶作剧,你在对那些直接帮助你事业发展的人进行恶作剧

    合法工作的过程和评估问题现在已经成为一个棘手的道德问题

    我强烈建议你按照计划行事,说服你的经理通过理性、逻辑和对微软的热爱来看待你的观点

    从长远来看,如果你发现自己在编程过程的决策上不断与管理层发生冲突(这实际上不是他们的工作,不需要做出决策),那么最好是润色简历,找到一份更好的工作

    程序员工作的一部分是教育那些缺乏专业知识的人。向你的经理解释这一点可能有助于分解一些问题