Facebook is famous for its rapid development and frequent releases. That agile software development cycle requires diligent software testing and bug tracking. Steven Grimm, a Test Engineering Tech Lead at Facebook, has shared his experience using a combination of manual and automated tools while developing at Facebook.
In order to manage the steady stream of updates, Facebook has implemented a hybrid system of automated and manual tests. This system is built of several tools (mentioned below) that interface with their bug tracking software. By integrating testing with their bug tracking software, they are able to efficiently identify which tests are failing and which engineers can resolve the issues. The suite will also run tests on edited code and include the test results when a patch is submitted for review.
Software testing tools used at Facebook:
- For PHP they use PHPUnit and have developed over 2200 test cases. They are run both manually by developers and automatically by the back-end system.
- For browser-based testing they use the Watir Framework. They use Watir to both double check that backend rules have been followed and to semi-automate tests that include manual form entry.
- For backend testing they use a combination of open source and internally built C++ frameworks. Backend tests are built right into the build process and report error automatically.
Facebook is very proud of their frequent release cycle, they take a delay in pushing a release to production very seriously; however, the engineer in charge of the release may hold back if there are issues.
Facebook’s other major concern is protecting user’s privacy, so they have redundant tests at both the back-end and front-end. Even with this redundant testing, Facebook has still run into problems protecting user’s privacy. We can learn a lot from Facebook’s rapid development/testing cycle, so thank you to Steven Grimm for sharing his experiences.