与实施系统本身相比,我们花费更多的时间来执行功能测试,这是否正常?


12

基本上,我们有三个主要项目,其中两个是Web服务,另一个是Web应用程序。尽管我对使用功能测试覆盖尽可能多的Web服务感到满意(所有三个项目都有其适当的单元测试),但针对Web应用程序的功能测试却需要花费大量开发人员的时间来实现。我所说的很多意思是实现包含单元测试的功能所花费的时间是两倍,有时甚至更多。

经理的政策是测试我们添加的每个功能,即使对业务不重要(即新的CRUD)也是如此。

我确实同意测试所有Web服务功能,因为很难对其进行手动测试,而且此测试运行速度很快,并且不需要太多的实现。

那么,花更多的时间编写功能测试,而不是编写系统代码,单元测试和修复QA标签,有什么价值?这正常吗?我们不应该只为关键功能编写功能测试,而让质量检查人员在没有关键功能的情况下进行回归测试吗?

注意:我们不是在开发医疗软件或NASA软件,或没有那么重要的工具。


14
我们没有测试。事实发生后,我们花费了大量时间来解决问题。“你现在可以付钱给我,或者以后可以付钱给我。” 是晚了,也不漂亮。
MetalMikester

3
是的-图片的一部分肯定是维护良好的测试套件可以减少实际实施所需的时间。
Michael Borgwardt


Answers:


16

功能测试非常重要。是的,它们需要花费一些时间来编写,但是如果您编写正确的功能测试,它们将是不值得的。

有几个很好的理由对应用程序进行自动化功能测试。

  • 当您将新功能添加到您的网站时,它会立即通知您对该新功能所做的更改是否破坏了您网站上的任何其他功能。
  • 它记录了有关应用程序如何运行和协同工作以实现业务需求的知识。
  • 当需要更新第三方库时,可以对其进行更新并运行功能测试套件,以查看是否有任何中断。无需您亲自浏览每个页面,您可以让计算机为您完成操作,并为您列出所有失败的测试的列表。
  • 负载测试!您可以模拟成千上万的同时访问用户,同时访问您的网站,您可以看到您的网站在压力下变慢和弯曲的位置。您可以在深夜致电网站崩溃之前查看网站的行为。
  • 功能测试需要花费一些时间来手动完成。是的,编写案例花费的时间很长,但是如果您不得不坐下活页夹,必须完成500页测试,然后才能发货,则希望您进行自动化测试!
  • 测试文档很快就会过时。添加新功能后,必须确保更新主测试文档。如果有人跳过某些测试,您会突然发现错误爬入“完成并经过测试”的页面。我目前在这样的环境中工作,可以向您保证,这是一场噩梦。

最后,是的,编写这些案例需要时间,但是您应该为编写这些案例感到自豪。这是您的证明方式,毋庸置疑您的代码可以正常工作,并且可以与所有其他功能一起工作。当质量检查人员出现问题并说有错误时,请对其进行修复,然后将其添加到测试套件中以表明已修复,并确保不再发生。

这是您的安全网。当某人进入并劫持存储的proc并进行少量更改以便可以与他们的代码一起使用时,您会发现它在此过程中破坏了其他3个功能。您会在当晚而不是截止日期前的晚上赶上它!

至于仅针对系统关键功能编写功能测试。那不会给您完整的画面,它会允许错误潜入。它所要做的只是添加一个不是系统关键的小功能,而是与系统关键功能间接交互,因此有可能引入错误。


感谢您的回答。我知道功能测试的重要性和好处,我担心的是测试ALL的成本效益。在过去的三年中,我们一直在开发功能测试,但是现在在这个项目中,我觉得实施测试ALL的成本远远不止于发现生产中的错误,抬高罚单并进行修复...我想知道是否在某些情况下,不进行功能测试要比不进行功能测试更好(就成本效益而言),我想知道我们是否处于这种情况下,在哪里明智地选择要测试的东西更好。
Pablo Lascano

@donsenior〜如果您觉得测试时间太长,请查看所使用的工具。您是否正确使用它们?您是否还在使用节省时间的工具?编写测试确实比编写代码b / c需要更长的时间,因为您编写的代码更多。那就是测试的本质。如果您开始挑选并选择要编写的测试内容,那么将达到无人编写测试的地步,否则这些测试将变得草率。
蒂安娜

我选择测试对象的想法不是随机选择,而是选择最关键的业务功能(这不是开发人员的决定,而是经理的决定)。我认为恰恰相反,开发人员现在倾向于编写草率的测试,因为他们必须测试所有内容,即使该功能要花5分钟进行质量检查和2天才能使开发人员自动化。我确实同意,也许我们使用的工具并不是测试Web应用程序(fitnesse和java)的最佳工具。恐怕我们要比系统更注重编写和维护功能测试的点
Pablo Lascano 2013年

@donsenior〜当然,测试一个案例需要5分钟的质量检查,但一台计算机只需不到一秒钟的时间即可完成测试。您应该问:“为什么要花5分钟才能完成手动测试,却要花2天的时间?” 再次,查看您的工具。也许质量检查人员也应该编写一些测试用例?问题不在于为您的系统编写测试用例,而是这些测试用例的编写方式。
Tyanna

很好,此测试需要花费一秒钟以上的时间(请记住,这是功能测试,而不是单元测试)。但这不是问题,它们在夜间运行。我认为您的观点是正确的,质量检查人员也应该编写一些测试用例,但是遗憾的是,这不是我可以做出的决定。非常感谢您的回答,我已将此问题标记为已接受!
Pablo Lascano

7

超过2次...对我来说似乎有点多。您可能要分析其原因,它们可能包括:

  • 不良的工具支持,无法创建和维护测试

  • 在设计中没有充分描述Web服务的合同。开发人员需要在测试时制定合同,这通常是一个耗时的调整过程。

与您的开发人员交谈。

假设您正在冲刺中进行开发,那么如果只是冲刺的一部分,请进行这些功能测试。没有这些测试就无法完成。如果没有它,那么在开发阶段之后进行集成测试的时间可能会增加一倍。


我同意,也许我们没有使用正确的工具来测试Web应用程序。尽管测试我们的Web服务没有问题。无论如何,除了我们执行测试的对与错之外,我还担心成本。我认为,从成本/收益方面考虑,最好还是对质量检查部门进行测试,并修复即使在生产中发现的错误。
Pablo Lascano

您忽略了设计不良的类,这是花费太长时间进行测试的可能原因。到目前为止,这是我看到人们永远测试其代码时最常见的原因。
Dunk

4

花费比执行系统本身更多的时间来执行功能测试吗?

绝对。在很多(好)商店中,编写真正好的测试可能会花费大部分时间。
因此2-1的比例很好。经验不足的开发人员本身往往不会将所有时间都考虑在内。


2

有收益递减法则。假设您首先为风险最高的代码编写测试,则随着时间的推移,进一步测试生成的值将减少。

单元测试是代码,因此它们将包含错误(就像所有其他代码一样)。修复这些错误需要花费时间。

以我的经验,单元测试所包含的错误远远超过所测试的系统,而修复这些错误则是一个持续的负担。


1

这是关于质量。

如果您需要占领市场-您将尽快开发应用。您甚至可以根本没有自动测试=),但是您会将您的应用程序提供给您的听众,而不是竞争对手。

但是,如果您知道听觉不会消失,您会做的任何事情都不会令他们失望。每张漏洞票都会降低您的声誉。想象一下,一个错误将删除您50%的声誉,另一个将删除您25%的声誉,等等。那么可以有太多的测试吗?


好吧,我不确定目前是否真的在减少机票。也许我们减少了(但不是很多)QA票据,但是(根据我的观点),此测试发现的错误率不足以证明拥有2/3的软件工程师用于开发功能测试的成本是合理的。
Pablo Lascano

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.