Qa 小型开发团队的质量保证

Qa 小型开发团队的质量保证,qa,Qa,理想情况下,在一个项目中,开发人员、测试人员、QA经理等都会对代码质量做出贡献。但是如果你没有这样的资源呢?例如,如果您只有三名开发人员,但没有资源雇佣全职QA经理,您如何确保代码质量符合既定标准 在质量保证方面,你注意什么?质量不仅仅是代码做它应该做的事情(代码通过自动测试得到正确的测试)。质量也是关于代码是否干净(可读、可维护、结构良好、文档化等) 我期待着听到您在团队中采用了什么样的流程,以确保质量符合既定标准。我们已经应用了一个过程,在这个过程中,我们在开发人员之间轮换QA角色。每个开发

理想情况下,在一个项目中,开发人员、测试人员、QA经理等都会对代码质量做出贡献。但是如果你没有这样的资源呢?例如,如果您只有三名开发人员,但没有资源雇佣全职QA经理,您如何确保代码质量符合既定标准

在质量保证方面,你注意什么?质量不仅仅是代码做它应该做的事情(代码通过自动测试得到正确的测试)。质量也是关于代码是否干净(可读、可维护、结构良好、文档化等)

我期待着听到您在团队中采用了什么样的流程,以确保质量符合既定标准。我们已经应用了一个过程,在这个过程中,我们在开发人员之间轮换QA角色。每个开发人员负责一周一次的QA。对每个变更集进行修改并检查现有测试是否通过,所需的新测试是否已编写,代码是否干净,当然,项目是否已构建

编辑:


当然,有些过程可以通过CI实现自动化,但我要寻找的是人为因素的经验。我的意思是,如何确保每个开发人员编写干净的代码并实际测试所有内容。测试覆盖率不会告诉您是否所有内容都已经过测试(从自动的角度来看,几乎不可能实现100%的覆盖率),除非您手动检查它。即使报道会告诉你某些东西已经过测试,但这并不意味着实际的测试是正确的。

听起来你朝着正确的方向前进了,我相信你使用的是错误/问题跟踪系统。这里还有一些其他的想法

如果您正在开发GUI软件,那么编写测试脚本和进行临时测试都会有所帮助。其中的陷阱是,作为开发人员,您所做的一切都是白盒测试,因此您可能偶尔会要求不太了解该软件的朋友或家人在很少的指导下处理它

使用GUI软件可以做的另一件事是获得一个自动工具,可以在软件上随机单击鼠标和按键,然后让它长时间运行。令人惊讶的是,能找到这么多的虫子

如果您有一个备用框,那么您可以设置自动构建,使之在夜间、每小时甚至每次签入后完成,甚至可以在这些自动构建上运行单元测试


不过,我所做过的最大的单次质量提升是在意外地向客户发送了一个非功能版本之后。在把鸡蛋从我们脸上刮下来之后,我们拿出了一份正式的六页清单,用于创建和验证版本,从不同的构建和测试机器开始,每台机器都有一个新安装的操作系统和适当的、定义良好的工具。有三个不同的角色(构建工程师、测试人员、发布工程师)、交叉检查,每个人在完成每一步时都在自己负责的每一步上签名。如果有什么事情没有完全按照计划进行,我们解决了问题,重新开始。对于大多数项目来说,大约需要4-8个小时,当事情不顺利,我们不得不重新开始时,我们有时会很晚才发布,但我们再也没有发布过不稳定的版本。

作为一个开始,如果您还没有这样做,我强烈建议您设置一个同时运行单元测试的自动构建,最好使用代码覆盖率来检查是否有需要更多单元测试覆盖率的区域。我不是一个要求100%代码覆盖率的超级粉丝,但是任何只有60%-80%的代码覆盖率的东西都可能需要研究

我曾经在团队中工作过,每天的构建都是手工完成的,而进行构建的开发人员也必须执行集成工作,因为签入标准常常是“it在我的机器上构建”。让一个自动构建在每次签入时启动,或者至少每小时启动一次,并要求签入破坏构建的开发人员修复它是朝着正确方向迈出的一大步,并且(希望)能够确保随着时间的推移提高质量


代码整洁是我发现很难从外部给团队留下深刻印象的事情。从某种意义上说,这听起来像是你在做什么——QA角色在清理代码但也许我弄错了。如果我没有弄错的话,我想你需要改变这一点。质量不是你可以或应该事后考虑的事情,从事代码工作的人应该努力实现质量目标,代码审查应该突出原始开发人员需要改进代码的地方,但不要让“QA人员”介入并清理代码。抱歉,如果我误解了这一点,但如果这是您流程的一部分,则需要立即更改,因为您正在做的工作相当于妈妈清理凌乱少年的卧室。

您是否使用任何软件开发方法,例如?Scrum是一种很好的工作方式,但也有其他很好的过程

我们使用Scrum。这是提高团队效率的好方法,但也是将规则引入软件开发方式的好方法。和你一样,我也是一个小团队的一员。不幸的是,我们没有一个QA部门或任何专门的QA人员。在Sprint期间完成的工作应该是可以交付的,因此团队中的开发人员需要处理QA工作

在Scrum和看板中,您使用一个列来跟踪当前的Sprint,这些板上通常有一个列,用于等待QA批准的任务。我们所做的是,当一项任务完成时,我们将其移至“准备验证”。然后团队中的另一个开发人员做QA工作。他将:

  • 确保新功能实现了预期功能/bug已修复/etc
  • 验证是否有足够的单元测试
  • 快速检查代码是否干净