Advice on Software Projects to Survive at COVID-19: Time to Skill Up Continuous Testing
This morning (2020–03–16), my daughter told me that her Uni announced “ close for one week” overnight. Based on what is happening in Europe and USA, unless a sudden miracle, all schools will be closed in Australia soon. If the situation gets worse, and it looks quite likely, Australia will be like Italy and Spain in a few weeks. This has led me to think: how software projects will survive this crisis? My advice: it is the perfect time to skill up your team on Continuous Testing.
The crisis will affect my business activities, but not my software development. Over the last 8 years, the development of all our software ( ClinicWise, WhenWise, TestWise, and BuildWise) has always been done in an off-line mode. Our customers communicate with us via feature requests/support tickets/emails. Please note this is not help desk support. We actively enhance our software based on customer’s requests. Most feature requests were implemented overnight and pushed into the production server the following day. How could this be possible? The answer is Continuous Testing.
In fact, we just pushed out a new release of WhenWise this morning. Yesterday afternoon, a customer (driving school) requested to display a special (and customizable) Covid-19 warning message on the booking form. As usual, it is now available (the day after the request).
Some might think it was a ‘cowboy’ act. No, it’s not. Here is our process:
- implemented the new feature
- added two automated functional tests (in Selenium WebDriver) to cover the new feature, passed locally in my testing IDE: TestWise
- git commit and push up, trigger a build to run all tests (438 in total) in a Continuous Testing process (using our own award-winning BuildWise server)
- detected one minor regression issue, fixed it, and another run in BuildWise.
- got a green build (see below)
After getting a green build, I deployed that release to the production and notified the customer.
How a good Continuous Testing process will help your software project in this difficult time when team members can only work from home? I am not a big believer in Work-From-Home (WFH) where a quick and repeatable quality control process (that’s Continuous Testing in software) is NOT in place. For example, we see “Designed by Apple in the USA, Made in China” on many Apple products. As you can imagine, Apple has a good quality control process against the specification. If the quality process is maintained well (obviously, Apple did), a company’s products can be manufactured elsewhere. The same principle applies to many industries, including aircraft manufacturing.
Comparing to the other industries, software development is harder to outsource, the reasons are as below:
- the requirement changes often, let alone the specifications
- a simple update (maybe a typo of an extra comma) could cause major regression errors.
- software testing is usually conducted manually in an ad-hoc fashion.
The sensible way for software projects during this pandemic time, unless with a safety net provided by CT, is not to push for developing new features, which is highly risky. The reality is:
- Your customer representatives might not be available
- The team members’ mind is not on the project (naturally, they need to worry about their families and personal wellbeing)
- Staff loss, especially contractors, is fairly common, which will again add more uncertainties.
If offense (developing new features) is not a goer, the natural choice is to improve your defense (efficient testing), especially in:
- Developing user story level automated functional tests for existing features
- Building a Continous Testing process to run all automated tests, multiple times a day
These should have been done in a real agile project anyway. Now without the fake agile ceremonies (Kent Beck, the father of Agile, think it is wrong! watch this video ~34 mins), your team can focus on real agile, the fun stuff that will make you proud.
Once you set up a good continuous testing process, trust me, what you read from the software legends about big productivity gain in real Agile is true. Once the coverage of your test automation suite is good enough, you may start developing new features gradually (while the whole team is WFH). It is totally possible as the Continuous Testing process provides quick feedback. My apps are living proofs. Still not a believer? Have a look at Kent Beck’s “ test && commit || revert” method: solve problems in small steps while keeps all tests green.
According to the commonly-seen DevOps 8 shape, Continuous Testing glued the whole team together.
Originally published at https://www.linkedin.com on 2020–03–16