如何使自动化测试流行?[关闭]


13

我们的代码库已经增长了20年。我们大约有10位开发者+平方英尺与500kloc合作。不久前,我们的一个小团队(2个开发人员,一个来自sqa)开始着手进行自动化测试程序。目前,一次运行需要11小时,并且某种程度上是一项集成测试。我们正在努力解决这个问题,减少误报,并在此方面取得了良好的进展。但是细节并不重要。

一切正常,我们将继续对其进行改进。我们(小团队)非常喜欢。如果我们弄坏了东西,我们会在一天后而不是两个月后注意到sqa。此外,我们的经理(开发人员+平方英尺)也很喜欢这个想法。但是团队中的其他人只是忽略了测试结果。在他们看来,如果在签入后测试失败,这是测试的问题,而不是代码更改的问题,这只是我们的玩具项目。如果失败的测试是真正的错误,我们进行了几次讨论。大多数时候是这样。

我们不能也不想强制执行某些事情。我们如何证明自动化测试是一回事?


11
这不是软件工程问题。这是一个人的问题。
罗伯特·哈维

@RobertHarvey我对SO表示不赞成,因为“基于观点”以及该站点非常适合的评论(对此评论表示赞成)。所以:我应该问哪里?教我
彼得·施耐德

2
我与@RobertHarvey在一起,认为这是一个人的问题。但是根据Workplace,您的问题可能会被视为骗子。例如看到这个问题,这是从根本上你问workplace.stackexchange.com/questions/44964/...
彼得·中号

1
不要让那些不赞成投票的人(甚至是不赞成投票的人)阻止您!某些人可能理解此类问题很重要,也许可以提供帮助。顺便说一句,尽管以前的版本(没有任何自动化测试)是一堆错误,但我的同事也看不到自动化测试的用处。只需更改一件事,然后破坏其他看似无关的事情即可。有些人只是不想学习(学习新事物有公开的阻力)。
伯恩哈德·希勒

1
这个问题被关闭真是遗憾。如果软件工程意味着任何事情,那就意味着与实际人员合作的问题,而对这些问题的答案将涉及观点。也就是说,有两个简单的想法:(1)如果您的测试给出了错误的否定性,则肯定会增加推后的时间,因为结果感觉像是在浪费时间;(2)尽可能减少运行时间。即使比两个月要好得多,也不会立即感到11个小时;(3)将使用这些测试作为他们观察的指标。他们已经被您所在地区的组织所认可。
戴尔·哈格伦德

Answers:


4

免责声明

尽管我听起来像是一位经理,但我还是以开发人员的身份写这封信的,他还需要说服自动化测试是好的。


您必须了解开发人员的基本心理。开发人员提交代码的根深蒂固的需求。阻止他们这样做的任何事情都是非常非常糟糕的事情。测试失败肯定会阻止他们这样做,因此,这是一件坏事。因此,抵抗。

您必须指出的是,尽管自动化测试会在短期内减慢它们的速度,但从长远来看,这将为他们节省很多麻烦并实际上会加快它们的速度,因为它们将能够更加专注于开发新事物,将减少开发人员讨厌做的另一件事:修复错误。

是的,您必须执行它。您必须获得管理层的无条件支持,并且使编写自动测试成为强制性且不可协商的。随着时间的流逝,开发人员将习惯它们。有帮助的是,您可以设计一些度量标准,以显示完成了多少新开发,以及自引入自动测试以来减少了多少错误。单词易变。数字是实心的。数字是普通开发人员比文字更能理解的东西。如果您可以使用实数证明自动测试是好的,那么您对它们的抵抗力将很小甚至没有。


11

在他们看来,如果在签入后测试失败,这是测试的问题,而不是代码更改的问题,这只是我们的玩具项目。如果失败的测试是真正的错误,我们进行了几次讨论。 大多数时候是这样。

有你的问题。如果您的测试不可靠(即使“在大多数情况下”是可靠的),那么人们将倾向于忽略结果。您的自动化团队应专注于消除那些假阴性。只有这样,团队的其余成员才能对结果获得足够的信任,以真正信任他们。


5
再说一遍,这可能是另外一回事。喜欢改变。如果测试失败,那么总有一些问题需要修复,无论是代码还是测试,因此人们放错了人们的态度,因为他们认为测试是易碎品。
罗伯特·哈维

当我们确定发生故障时,我们与他们进行了交谈(例如,在他的签入影响所涉及的功能后,Test连续3次失败)。但是,是的,提高可靠性是当前的重点。
彼得·施耐德

1
@PeterSchneider一个测试可能连续失败100次,它将这样做,尤其是在测试错误的情况下。
Pieter B

另一方面,永不失败的测试很可能完全无用
弗拉基米尔·斯托基奇(Fladimir Stokic),

1
+1脆性测试绝对是一个问题。开发人员必须确信他们编写的测试是有用的,不会引入不必要的复杂性,并且不会很忙
安德列斯F.

6

我们不能也不想强制执行某些事情。

您绝对应该执行它!如果有人推送新代码而测试失败,则应拒绝该代码!这是可靠地维护较大的软件项目的唯一方法。


我猜这取决于系统,测试,规模和开发过程。并非所有错误都可以立即得到解决,也不是所有问题都必须立即得到解决。
NickL
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.