持续测试
最近有人向我指了一个Twitter帖子,其中包含一篇关于“持续测试” 的文章的链接。我很惊讶地在文章中读到了连续测试的这个定义:
持续测试是将自动化测试作为软件交付管道的一部分执行的过程,以尽快获得与软件发布候选项相关的业务风险的反馈。
嗯,当然,这是连续测试的一部分,也是一个重要的部分,但还有更多。
在我阅读并浏览了一些之后,我发现有关于连续测试的全书都使用了“只有部署管道中的自动化回归测试”的相同狭义定义。无论是谁写了维基百科条目也同意这种狭隘观点。
不是我的定义!
我对“连续测试”的构成有一个非常不同的想法。在我看来,“敏捷测试”与“连续测试”是一回事。Janet Gregory和我以及敏捷测试社区的其他人以这种方式定义了 敏捷测试:
从开始到交付及以后不断发生的协作测试实践,支持为客户频繁交付价值。测试活动侧重于在产品中建立质量,使用快速反馈循环来验证我们的理解。这些实践加强并支持整个团队对质量的责任。
有关DevOps中连续测试的更具体定义,我发现Dan Ashby的定义,特别是他的视觉模型(许多其他作者,包括我自己,Janet和Katrina Clokie 在我们的书中提到的)反映了我自己的高绩效团队在过去的几十年里,我们已经接受了。他没有简短的定义,但他的模型,基于DevOps无限循环,表达得很好:
Dan Ashby,“ DevOps中的持续测试 ”,2016年Dan的帖子在该帖子的末尾附近有另一个很好的连续测试模型,表明我们的测试从测试新功能想法开始,并扩展到我们可能对软件产品进行的许多其他可能类型的测试。他也想出了另一个模型,你可以在他的推文中看到它。
更多观点
我询问了几个测试社区Slack工作区,看看其他人在听到“持续测试”时会想到什么。我喜欢Benjamin Fellows在测试部的testersio.Slack.com工作区所描述的内容:
我认为这意味着没有测试阶段,而是从左移和右移两个元素(在整个开发和运营过程中测试,从测试初始需求到使用客户指标到发布后的进一步测试)。
Matt Lievertz在同一个帖子上发表了他的观点,我发现这个也很有趣:
我不确定是否有正常的定义,但如果我听到它,我会怀疑它指的是:1)持续集成的测试组件2)连续监控产品 - 作为功能级监控器连续测试产品
连续测试的监控和可观察性方面绝对是至关重要的。
在这次谈话中的其他人说,他们可以看到两种定义的价值,但他们倾向于采用Dan Ashby的观点。
我根据Dan的模型以及Jez Humble和David Farley的连续测试书,写了我自己对连续测试的看法。Peter Zimmerer的评论和他所包含的链接值得一读。他对“连续测试的真正本质”进行了一些研究,结果他使用了两个“基本目标和特征”,我非常喜欢:
连续测试意味着:1.通过左移和右移测试整个生命周期,即从开始到结束连续测试2.战略测试自动化,即以智能方式连续重复使用,适应和执行(仅)所需的测试
其他连续测试名称?
术语很棘手。有许多与测试相关的术语对于不同的人来说可能意味着很多不同的事情(这就是为什么mabl 将测试称为“旅程”,因为“测试”是一个如此负载的术语)。进行“集成测试”。我听到人们在端到端测试,包括数据库层的单元级测试,测试两个不同系统或应用程序的交互以及通过用户界面进行测试的环境中使用它。当人们使用术语“连续测试”时,他们的意思可能与我自己的意义完全不同。我们是否应该提出一些其他地方尚未使用的术语?我们很乐意听到您对术语的看法,请使用页面底部的Twitter按钮告诉我们。
Heather Reid开始就测试俱乐部的同一主题进行讨论。我喜欢Sergio Freire的想法,使用不同的名称进行“连续测试”,以使其更清楚我们的意思:
对我来说,连续测试更多的是Omni测试(或无所不在测试),因为在整个开发生命周期中始终存在测试。有些人可能会考虑连续测试,因为测试是“持续”运行的; 假设这些测试是自动测试(即自动检查)。在我看来,我更喜欢Omni测试,因为我认为测试始终存在,无论您遵循什么样的方法,或者您的开发生命周期处于什么阶段。您使用测试来保证并寻求一系列质量属性。
珍妮特格雷戈里和我在即将出版的新书“ 敏捷测试凝聚”中写了关于连续测试模型的文章。珍妮特想出了一个我非常喜欢的术语:“整体测试”。
我们了解客户可能需要的功能,我们构建并交付它,并了解客户如何实际使用它。我们使用该反馈来决定接下来要构建(或删除)的内容。
我继续问人们他们自己对“连续测试”的定义。我想保持开放的心态,总会有更多的东西需要学习。无论我们称之为什么,测试都不会与软件开发分开。它在整个无限循环的软件交付中与编码和许多其他活动集成在一起。
,