服务组件测试:持续交付充满信心

交货速度是今天的一个关键指标。特征和想法需要更快地向客户提供,以便更快地收集反馈,并且可以更改或调整产品以增加成功的机会。然而,在编写代码和运输代码之间介于关键的测试步骤,这可能是许多工程团队的瓶颈。

为了解决这个问题,团队聘请了测试人员编写了许多自动化测试。大多数测试都被编写了以完整的整体运行,(即将到达客户手的净产品的近似表示),并以类似于客户将如何执行它们的方式执行场景。这些测试称为端到端(E2E)测试。但是,他们很快意识到E2E测试通常会受到不可靠性,片状,缓慢等困扰。这发生是因为对于E2E测试,所测试的系统的边界太大。由于系统的每个部分都有失败的概率,因此在被测系统中存在的距离越多,系统的净失败概率越高,因此对其运行的测试。

因此,团队然后将焦点改为编写单元测试,其中系统的系统是最小的,因此测试失败的可能性是最低的。然而,由于非常微小的系统边界,单位测试在测试特征或产品的增值不是很好。

因此,需要另一种类型的测试,其中系统的系统的边界是中间的某个地方,以便能够测试我们正在运送的软件的主要价值,但在控制下具有失败的可能性。在这篇文章中,我们提供了在Realtor.com上进行的组件测试方法进行案例研究。

Continue reading “服务组件测试:持续交付充满信心”

稳定测试环境的矛盾

这篇文章最初出现在LinkedIn

在我几年与不同公司和不同类别的产品中的各种开发团队合作期间,各种各样的情况下有一个普遍存在的谈话–关于稳定的端到端测试环境的关键需要的对话。大多数一致的共识是实现这一目标将解决我们最大的发展生命周期问题–发布截止日期滑动,工程师倦怠,不确定性,压力等。本陈述的后半部分是真的,确实可以解决这些问题。不幸的是,前者不是–这不是一个可实现的状态,至少在常用的端到端环境中至少不在路径上。

想一想......“稳定的端到端测试环境” –这句话违背了自己。一方面,我们希望在这种环境中运行一系列测试,因为我们希望它有错误。并且正确地,毕竟我们正在抛出未经测试的犯罪。另一方面,我们也希望它稳定,换句话说基本上无臭。这是一个矛盾,而且它是一种不可成功的状态。

Continue reading “稳定测试环境的矛盾”

How to sunset a Legacy API

我们的服务就像沙城–我们有机会建立它们,维护它们,并最终要求我们被要求落日。这是后者,它很少发生,值得记录和分享我们对后遗症的经验。我们最近有机会停用一些遗产的API作为我们对AWS的迁移的一部分。尽管工作的压力性质,但这种过程非常顺利。

Continue reading “How to sunset a Legacy API”