avatarZhimin Zhan

Summary

The web content discusses the importance and feasibility of daily software deployments to production, emphasizing the necessity of comprehensive automated end-to-end regression testing and the use of Continuous Testing servers, as exemplified by the author's own web applications and industry practices at companies like LinkedIn and Facebook.

Abstract

The article titled "Did You Push Software Updates into Production Yesterday?" advocates for the Agile software development practice of "Daily Deployment (to production)" as a means to make Agile methodologies more authentic. The author, inspired by Kent Beck's "Extreme Programming Explained," shares personal experiences and insights into how daily deployments are not only feasible but also more natural than commonly perceived. The key enabler for this practice is a robust automated regression testing process, which the author has implemented for their web applications: ClinicWise, SiteWise, and WhenWise. The article cites the success of LinkedIn and Facebook in adopting continuous integration and testing, which allows them to push updates multiple times a day. It also recommends resources for learning end-to-end test automation using Selenium WebDriver and setting up Continuous Testing processes, with the aim of moving towards real Agile practices.

Opinions

  • The author believes that the term "Extreme Programming" might have been a misnomer, suggesting that "Agile" is more readily accepted.
  • There is a critique of "fake agile" practices that do not adhere to the true spirit of Agile, such as merely moving user stories in JIRA or not following through on retrospective notes.
  • The author asserts that top engineers, like Kent Beck, prioritize quality and that test automation should be an integral part of the daily working life of developers.
  • The article suggests that to confidently deploy daily to production, a comprehensive automated end-to-end regression suite is essential, as highlighted in the book "How Google Tests Software."
  • The author recommends Selenium WebDriver for test automation, noting its flexibility, ease of learning, and status as a W3C standard.
  • The article encourages readers to start learning end-to-end test automation and to set up a Contin

Did You Push Software Updates into Production Yesterday?

Extreme Programming Explained (by Kent Beck, the father of Agile) is my first and favourite Agile book. I still remembered reading its first edition at the UQ library 21 years ago. Then I naively suggested this new way of software development to the project. The project manager disliked the idea, in particular, the Extreme Programming (XP) name. He might be right about the name part though, Agile is easier to accept.

I bought the 2nd edition one the first day it was out (reserved a copy at McGills Tech Book Store, which no longer exists,). I read it many times, it is so good, still get more insights after so many years. It is a pity that while virtually all projects claim to be “Agile”, most of them do fakely.

“Daily Deployment (to production)” is an XP practice. I know some fake agile coaches will argue that XP Agile. I think if they understood the history of Agile and the work that Kent Beck did, they probably wouldn’t say that. Anyway, putting the arguments aside, “Daily Deployment” surely a good thing. This would make Agile more real than “dragging user stories in JIRA” or “writing some notes on retrospective sessions then forget all about them”.

First of all, “Daily Deployment (to production)” is feasible, and it is more natural than most think. I wouldn’t repeat what Kent wrote in his book. I will just share my experiences.

For all of my web apps: ClinicWise, SiteWise and WhenWise. If there are any changes to the code base, I will deploy to production that day on a condition: passing automated regression testing in the Continuous Testing server.

A recent regression testing (492 Selenium tests) report for WhenWise on BuildWise CT server

People are puzzled about “Daily deployment to production” is because test automation (end-2-end in particular) and Continuous Testing are not a part of their daily working life. The top engineers, such as Kent, take quality for granted.

Still not a believer? check out this article by Wired: The Software Revolution Behind LinkedIn’s Gushing Profits.

“It was Scott and his team of programmers who completely overhauled how LinkedIn develops and ships new updates to its website and apps, taking a system that required a full month to release new features and turning it into one that pushes out updates multiple times per day”.

“Newly-added code is subjected to an elaborate series of automated tests designed to weed out any bugs. Once the code passes the tests it is merged into trunk and cataloged in a system that shows managers what features are ready to go live on the site or in new versions of LinkedIn’s apps.”

It was quite clear: LinkedIn totally changed its development process: continuously testing the apps with automated tests to enable release to production multiple times a day. The detail was not covered in this article, you will find this presentation “Continuous Integration at Facebook” helpful. Also, you might have heard of “Facebook updates its code twice every day”.

Here I want to point out: to have the confidence to release daily to production, you must have a comprehensive automated end-to-end regression suite, as stated in the “How Google Tests Software” book.

“For all of our end-to-end tests at Facebook we use WebDriver” — in “Continuous Integration at Facebook” presentation by Katie Coons

Want to do real Agile? Start learning end-to-end test automation today. I recommend Selenium WebDriver, which Google and Facebook use. Selenium WebDriver the most flexible and easiest to learn web test automation framework, and a W3C standard, period. Then set up a Continuous Testing process to run all the Selenium tests daily, gradually move up in AgileWay Continuous Testing Grading.

Resource (the eBooks by me):

Agile
DevOps
Test Automation
Continous Delivery
Software Release
Recommended from ReadMedium