您的团队使用不同类型的软件测试的比例是多少?

软件测试 自动化测试 测试管理 测试设计 回归测试
2022-01-17 22:59:44

注意:我已经在 SO 和 p.SE 上问过这个问题,但它已经关闭了。我不是想玩这个系统,只是想找个家:)


我正在寻求一些“群体智慧”估计或指向权威参考的指针,以了解将工作分配给测试的最佳实践。

虽然有各种各样的不同类型的测试,但给出了以下列表:

  • 手动探索性测试(通过用户界面或 API 进行随机临时测试)
  • 手动端到端测试(预定义的用户界面驱动测试)
  • 自动化端到端测试
  • 手动集成测试
  • 自动化集成测试
  • 自动化单元测试

并给出以下技术和应用:

  • 某种 LAMP 堆栈
  • 面向消费者的电子商务网站
  • 基于 REST 的业务逻辑中间层,供网站和面向内部的后台应用程序使用
  • 后台应用程序(库存/订单管理、仓库物流、BI)

并给出以下组织:

  • 定义面向用户的网站的产品管理
  • 前端大家都是PHP coder,有的还擅长javascript/css
  • 中间层是java
  • 后台应用程序目前是 PHP 并正在迁移到 java
  • 后台应用程序由内部消费者(采购、财务、仓库等)定义。

让我们考虑一下执行测试活动(开发人员创建单元和集成测试、测试工程师创建和执行测试计划、测试工程师创建工具和线束并运行它们)的总小时数。

问题:

有没有人指点关于这种资源分配的权威研究?

例如,在我的公司,我猜这是我们目前的组合:

60% Manual exploratory testing
10% Manual end-to-end testing
10% Automated end-to-end testing
 5% Manual integration testing
 5% Automated integration testing
 5% Automated unit testing

至于我对更好做法的建议,我更希望看到类似的东西:

 5% Manual exploratory testing
 5% Manual end-to-end testing
10% Automated end-to-end testing
 5% Manual integration testing
20% Automated integration testing
55% Automated unit testing

如果能帮助我找到一些可以站立的肩膀来帮助指导我的团队,我将不胜感激。


后记:我对整个“主观”事物感到困惑,并试图根据 SQ 的六个准则来制作这个问题(请注意,这个问题对程序员来说是封闭的,所以这不是答案)。无论如何,鉴于这六项指导方针,我认为这让他们感到满意。只是为了回顾:

  • 激发解释“为什么”和“如何”的答案 - 诚然这里有点弱,但我很清楚地问“如何”
  • 需要长而不是简短的答案——同样,有人可以用一串五个数字来回答,但我希望能看到一些关于他们为何选择这种特定组合的见解
  • 有建设性、公平、公正的语气——我希望提供我目前和希望的情况的估计不会破坏这个特征
  • 鼓励经验而不是意见——我认为这很清楚地询问人们在做什么以及什么对他们有用
  • 坚持观点有事实支持——我希望人们能说出他们的测试组合的真相(分析确定他们的组合成功的原因将是一个奖励,请参阅#1,2 和 4)
  • 不仅仅是盲目的社交乐趣——我希望在这里学到一些东西
4个回答

你在问一个独角兽问题

为什么?

因为你跳过了所有工作的重点。如果您不知道您的利益相关者想要从哪些信息中发现什么信息,那么您进行不同类型测试的比例无关紧要,您的组织是什么无关紧要,使用什么技术也无关紧要你的测试

而已。这就是最重要的。如果你不从那开始无论你做什么,你都注定要失败。您可能会提供一些有用的信息,但这只是偶然而不是设计。

找出你的利益相关者、你的产品所有者、你的内部消费者、你的开发人员想知道什么。什么问题对他们很重要,不是我,不是山姆,不是地球上的其他任何人。您可以向他们提供哪些信息,以使他们对您正在构建的内容做出不同的决定。

测试本身并没有使任何事情变得更好。它只是为那些将做出更好的事情并让事情变得更好的人提供有用的信息。如果你不知道他们最关心什么样的问题,什么样的错误会对你的产品价值构成最大的威胁——那么你就不能选择你的测试类型组合来给你最好的发现机会这类问题。没有最佳实践,除了:做有效的事,迭代,不断思考,继续与你的利益相关者交谈。没有一个附有数字。

恐怕你从错误的一端开始。我同意user246,这里没有人可以给你这些答案。除了你。

我不知道您是在寻找提倡某种资源组合的研究,还是只是在寻找描述使用某种资源组合的经验的研究。除了我会在谷歌搜索中找到的内容之外,我不知道有任何此类研究。

在我之前的一份工作中,QA 人员中有几位非常有才华的开发人员。他们倾向于专注于既难以手动测试又不太可能在开发过程中进行测试的事情:例如,压力测试。我们没有自动化我们的任何 UI 测试,因为它经常变化,以至于我们认为自动化不值得投资。开发人员有时会编写 API 级别的单元测试,但通常不会。在那家公司,我相信我们的资源组合更接近贵公司目前的组合。

在您的问题中,您说您希望将大部分测试资源从手动测试转移到自动化测试。适合您的组织的组合取决于此论坛中没有人可以为您衡量的考虑因素:例如,您组织的技能、组织的兴趣水平以及自动化的维护成本(您没有提到在你的问题中)。我认为你描述了一个合理的目标,但我建议你逐步接近它,从你认为最简单和/或最有价值的开始。我相信这会增加你成功的机会。它还将使您有机会在出现问题和机会时进行中途更正。

我会试一试答案。其中一些我认为不属于,其中一些我认为需要分成几个问题:
我的测试应该占多少百分比 1) 探索性测试 2) 端到端测试 3) 集成测试。不幸的是,这个问题的答案很大程度上取决于产品本身,应该在产品规划阶段确定并记录在测试计划中。

一个完全独立的问题是——我的测试中应该自动化的百分比是多少?
这个问题的答案要简单一些。如果自动化测试用例会比手动测试获得更好的投资回报率,那么将其自动化。这意味着如果开发自动化测试、维护该测试并执行它所花费的时间少于在产品生命周期内运行手动测试的总时间,那么将其自动化是有意义的。其他可能发挥作用的因素是对自动测试与手动测试的信心。人类可能会犯错误、跳过步骤、将测试标记为已通过(即使它们没有真正通过)、错误地解释指令等。同样,自动化可能会出现错误,而您认为正在测试一件事的自动化测试可能会完全跳过重要的验证.

单元测试和探索性测试似乎不适合我的两个部分。几乎任何可以进行自动化单元测试的东西都应该有自动化单元测试。这里的目标是 100%,除非有任何重大障碍。手动探索性测试通常是我尝试做更多的事情,一旦我的大部分测试自动化了。这是您发现大多数错误的地方,也是您可以找到其他测试用例以添加到列表中以运行构建覆盖构建的地方。通过探索性测试发现的新测试用例随后可以自动化。回归测试,无论是手动还是自动,都很少发现新的错误,它主要是防止回归并为您提供覆盖范围和信心。

  • 决定百分比和分配没有黄金法则。这取决于您的组织中遵循的应用程序、复杂性、技术、测试过程
  • 这必须根据您当前的团队组合、曝光度、经验来决定
  • 从您建议的发行版中,自动化单元测试和自动化 Ingeration 测试取得了很好的飞跃。这表明您对自动化的兴趣
  • 您是否探索并尝试过免费工具来自动化您的应用程序。不仅仅是您的组织试图为工具/自动化资源提供资金。我建议你自动化回归案例。这也将展示突出管理需求/效益投资自动化的方式
  • 将手动探索性测试从 60% 减少到 5% 是一个很大的目标。我建议用较小的里程碑进行评估。尝试每月自动化 5-10% 并有针对性。确定要自动化的测试用例/需要投入时间来学习/开发自动化
  • 您还可以组建一个对开发自动化感兴趣的测试人员小组。从你的学习/作为一个小组工作。你们可以一起发起这项倡议
  • 由于它是一个面向客户的电子商务网站,您是否尝试评估 Selenium 以使其自动化