自主测试服务的规模
Enabling developers to prototype, test, and iterate on new features quickly is important to Facebook’s success. To do this effectively, it’s key to have a stable infrastructure that doesn’t introduce unnecessary friction. This gets significantly more challenging when the infrastructure in question must also scale to support more than 3 billion people around the world, leverage an increasing amount of computational power, and handle an extremely large and growing codebase.
让开发者能够快速地对新功能进行原型设计、测试和迭代,对Facebook的成功非常重要。要有效地做到这一点,关键是要有一个稳定的基础设施,不要引入不必要的摩擦。当有关的基础设施还必须扩展到支持全球30多亿人,利用越来越多的计算能力,并处理一个极其庞大和不断增长的代码库时,这就变得明显更具挑战性。
Two of the ways we address this challenge are better abstractions and automated testing. The abstractions include a service-oriented infrastructure that allows structuring our business logic into independently written, deployed, and scaled components. While this is important for fast iterations, it also increases testing complexity: Unit tests are useful for checking the logic within a service but fail to test the dependencies between services. Integration testing comes to the rescue, but as opposed to the well-standardized unit testing frameworks, there was no off-the-shelf integration testing framework that we could use for our back-end services. Therefore, we designed and built one.
我们应对这一挑战的两个方法是更好的抽象和自动测试。抽象包括一个面向服务的基础设施,允许将我们的业务逻辑结构化为独立编写、部署和扩展的组件。虽然这对快速迭代很重要,但它也增加了测试的复杂性。单元测试对于检查服务中的逻辑很有用,但不能测试服务之间的依赖关系。集成测试来拯救我们,但相对于标准化的单元测试框架,没有现成的集成测试框架可以用于我们的后端服务。因此,我们设计并建立了一个。
A 10,000-foot view of Facebook’s infrastructure with back-end testing options emphasized.
万丈高楼平地起,Facebook的基础设施,强调后端测试选项。
Today, we are detailing a new autonomous testing extension that we’ve built on top of this integration testing infrastructure, as well as a behind-the-scenes look at the infrastructure itself. This extension borrows ideas from fuzz testing, an automated technique that uses random inputs to find bugs, and leverages the homogeneity of our software stack to provide a seamless developer experience and encourage quic...