如何在测试抗文化中开始测试?[关闭]


20

我要坦白:正式的自动化测试从来都不是我编程背景的一部分。我现在在一家非常大的公司工作,有很多开发人员(其中大多数是某种类型的Web开发人员),很明显,他们中的大多数人都没有测试*。(*我不会继续正式发言;请推断出来。)

如果我等待组织的支持开始测试,那将永远不会发生。如果我试图通过推动管理层的测试来“从内部改变事情”,那么在改变发生之前,我将精疲力尽。我需要立即开始测试。

但是对于TDD及其同类产品,我将最终获得大量测试代码以及​​生产代码。我们的版本控制系统(全部为集中式)并不是为了存储测试代码而组织的。我必须在我的工作站上找到所有放置的地方。

是否有可能在一种不重视或不提供工具的文化中开始个人软件测试实践?当官方工具和组织没有测试,框架和自动化的地方时,您使用什么技术和工具来进行测试?


14
为什么不能将测试代码存储在公司的VCS中?我想象在一个具有src用于生产代码的目录的项目中,也可以添加test目录-还是出于某些原因而明确禁止使用?
彼得Török


@PéterTörök您高估了我们。我们没有src目录,有网络根目录。要将代码检入中央VCS,我会将其检入Web根目录。
kojiro 2011年

如果您在反测试文化中没有源代码控制,那么我将首先尝试(或同样)这样做,因为这将解决您确信团队遇到的许多其他问题。然后,它为您要进行的测试奠定了基础。
Scott Wylie

@ScottWylie我没那么说。我们有VCS,我们只是没有组织它来进行测试(或除直接编辑Webroot内容外的所有其他内容)。我认为某人的侄子于1998年建立了CVS,此后没有人对其进行过更改。
kojiro 2011年

Answers:


22

我个人已经取得了很大的成功。成功的关键因素:

  • 获取(暂定)管理支持。自动化测试的优点已得到充分证明,应该说服任何经理至少尝试一下。这包括在VCS和构建服务器中找到位置,因为
  • 自动化测试只有在频繁且自动运行的情况下,才能发挥其全部价值,这样您就可以很快地了解问题,而不必依赖那些不会忘记运行它们的人。您需要一个至少每天运行一次的构建服务器。这可能是旧的工作站。詹金斯(Jenkins)花费很少的精力去跑步。
  • 以身作则。编写测试,讨论他们提供给您的好处,以及当他们发现其他开发人员引入的错误时,就如何避免潜在的更大尴尬来谈论它。
  • 追求低垂的水果。应用程序的某些部分将很难测试,而其他部分则很容易。有些会很强大,有些会很脆弱。为易碎但易于测试的零件编写测试可在最短的时间内提供最大的价值。
  • 查看您是否可以编写可重用的测试,例如所有模块(网页,REST服务等)必须具有的测试约定或功能,但是这些功能经常被遗忘。

7

没有管理支持,您将陷入困境。管理层将声称您没有做值得的工作,您将在评论中受到惩罚,最后被解雇。有多种方法可以使管理层看到早期测试的成本更低以及所有这些成本。可以改变文化,但是您将脖子放在砧板上。

我建议阅读《马基雅维利王子》一书中有关如何做任何事情之前引入变化的内容。


您的第二个答案表明,测试将花费原本不会花费的时间。但是测试传教士(在我看来)会告诉您测试可以节省时间。不仅从长远来看,甚至在中等规模的项目中也是如此,因为您不会花费太多时间调试生产代码,并且测试迫使您定制代码以通过它们,这在我对理论的理解)都有助于减少花费在编码上的总时间。您是否发现情况并非如此?
kojiro 2011年

1
@kojiro:是的,整体测试将减少时间和成本。但是,短期内不会这样做。一些经理认为短期更为重要。毕竟,如果没有一家公司可以向您收取费用,并且可以向客户收取错误修复费用,那是什么好软件呢?
Sardathrion-恢复莫妮卡2011年

2
测试可以节省时间,但是当您必须重做一半代码才能进行测试时,您首先是在浪费所有时间来进行所有工作,只是花了几个月的时间才能进行测试,然后再加快速度。经理们不会在“本月”中思考,而在“本月”中思考,因此他们所看到的只是“时间浪费”,因为开发人员不会创建新的代码,而他们正在使用我们可以进行的测试进行测试”出售或更有可能重构“已经有效”的代码
Wayne Molina

通常,即使在短期内也可以节省时间。当您进行某些工作时,能够通过测试来执行一段代码,然后运行整个应用程序并哄骗它执行特定的代码,要快得多。
Stefan Billiet

3

以我的经验,如果这种文化是反测试的,那么就无法合理地引入它。要么将测试视为浪费时间,要么因“浪费时间”或“花费太长时间”而受到谴责,或者代码因多年未以可测试的方式编写而恶化(例如,没有接口,紧密耦合),您将不得不花费大量时间进行重构和/或重写代码(因此冒着“花费太长时间”和“浪费时间”的风险)以使其可测试,因此您可以首先编写测试。

如果您正在做的新事物只需要与现有事物进行交互(在不良区域周围创建一个好的包装器),或者可以少量进行而不会引起问题或需要您这样做,则可能会有机会“处理未分配给您的任务”会使您陷入困境。


1

我不认为您会走得很远,直到您有足够的理由说明自动测试可以解决的问题(当前可能尚未发现)。

如果有针对定义的脚本进行手动测试的文化,那么执行这些脚本会带来成本,并伴有结果不完整或不准确的风险。可能有这样的历史记录或“战争故事”形式。建议一个试点项目以使其中的一些手动测试自动化,以期长期节省成本。

如果甚至没有手动测试功能,那么我建议企业不认为任何形式的正式测试(自动化或其他方式)都没有价值。在那种情况下,我认为前进的道路是漫长而陡峭的,但同样有可能需要一个明确的证明,即企业可以通过对软件质量采用不那么随意的方法而受益。如果您不能做到这一点,那么很难在商业上看到对这一想法的支持。


0

一个想法是,您打算编写一个测试来证明别人编写的代码是错误的。应该卖的概念。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.