Episode #2 of The DroidDevCast Series
Shifting to DevOps means new approaches to development, operations, and testing. To paraphrase Larry Smith, DevOps teams must test early, test often, and test like they mean business. This where the practice of adopting extreme testing methodology can be extremely valuable.
Esper recently launched The DroidDev Cast, a podcast on all things Android, DevOps, and OSS. This week, Content Marketing Manager and host Rin Oliver was joined by Karthik Gaekwad, who is Head of Cloud Native Engineering at Verica and a DevOpsDays organizer. This podcast episode explores Karthik’s journey to extreme testing, continuous verification, QA best practices, and some stellar resources.
Think About Testing Before You Write Code
Listen and Subscribe: YouTube | Apple | Simplecast
Thinking about testing before you write code is key, according to Gaekwad. Extreme testing is really about shifting testing left along with the rest of development and operations.
“I’m always in the mindset of, hey, let’s always be shipping our software… And I think the same thing goes for testing as well,” he explains. “It’s about making sure your code or module is actually supported,” And, that testing, “is not an afterthought, but really it brings it more to the forefront.”
Extreme testing is proactive, so “You know that whatever you’re going to write actually conforms to a specification,” explains Gaekwad. “And then you have [a] test to prove that the module works as expected.”
As a Cloud Native Engineer, Gaekwad uses Kubernetes in Docker (KIND) virtual device testing with unit and integration tests. “The really nice and interesting thing about [virtual device testing] is you can actually test deployments…in a continuous integration kind of manner.”
Using a production-aligned virtual test lab like Dockernetes is a “nice little wrapper that runs locally inside of your existing infrastructure,” says Gaekwad. It “spins up really fast, and then you can run like quick little tests on there. So it gives you a little harness to be able to run specific experiments that you might need.”
And, here’s a related resource on Android Virtual Devices for DevOps teams.
The Value of Testing Early and Often
Diving head-first into production code can be thrilling for developers. But, treating testing as an afterthought can harm deployment quality.
“I get really excited about writing code and writing specific modules, writing features, but it’s really even more important to think about how things are going to work upfront,” says Gaekwad. “Consider all your different inputs, and all the different outputs that might be coming out and wrap them in tests.”
Often, developers “have a different kind of frame of mind before you’ve already written a bunch of code,” admits Gaekwad. Extreme testing also supports objectively measuring code coverage against a defined bar, using code coverage tools. “I kind of discounted that early on in my career,” he says. Today, he’s discovered that code coverage requirements “gives you confidence that your code is going to work in a majority of scenarios.”
How Extreme Testing Improves the Code Lifecycle
“Code is long lived,” says Gaekwad. But, he explains, well-documented test requirements can offer insight into code written years ago by a different dev. “You can look at a test and…understand what your code might actually be doing.” Extreme testing also gives developers confidence a functionality will continue working after making changes.
Gaekwad has seen code modules and functions for unit testing easily become huge and unusable, especially over time. “Consider breaking them down into smaller, more testable modules. It helps you reuse code and makes it more testable.”
Why Continuous Verification Improves cX
Karthik Gaekwad is a seasoned developer who’s been in the industry for a “while.” But, he discovered years ago that testing has a direct impact on the customer experience – or, cX.
“At Verica, one of the ideas that we have is..continuous verification, where you’re always making sure that your software and your code is kind of working over time.”
In the world of Kubernetes or Android, things can quickly “change and mutate.” Continuous verification improves long-term observability. The result is a better customer experience.
Extreme Testing Resources
For nearly a decade, Gaekwad has been a local DevOpsDays community organizer in Austin. He’s watched the regional, technical conference series grow to 300 regional events in cities worldwide. And, he believes devopsdays is a valuable resource for engineers to hear quality speakers and get feedback from peers.”
“The most important part about devopsdays is…in the afternoon you have open spaces” Gaekwad says. “You can kind of pitch questions or problems that you might have to groups of 10, 12 people. So, I highly recommend it.”
“I actually really want to give Lisa Crispin a shout out,” Gaekwad adds. “I started reading a bunch of her work on testing in DevOps. She has a lot of really good ideas on how to integrate folks that are in the testing world more closely into DevOps.”
A Look at this Episode:
01:49 – Gaekwad’s current approach to extreme testing at Verica.io.
03:51 – Why extreme testing yields more objective results, especially over time.
05:07 – The case for agile, iterative testing design.
06:44 – Gaekwad’s career journey from waterfall to DevOps.
08:51 – The connection between customer empathy and extreme testing.
10:35 – devopsdays and other resources for DevOps + QA alignment.
14:09 – How to adopt a CI/CD approach to testing.
You can also read the full transcript of this episode on Simplecast.
Next Friday, we’ll return with Episode #3 of The DroidDevCast. Rin Oliver will discuss rapid prototyping with Daniel Magnum, Senior Software Engineer at Upbound.
Questions? Reach out to firstname.lastname@example.org to start a conversation or learn about becoming a guest of The DroidDevCast. And, here’s a link to last week’s episode – The Case for Android DevOps with Yadhu Gopalan.