Agile Best Practices: SVP of Engineering Jeff Nielsen on “Continuous Testing”

Testing during the software development process is usually seen as a separate step to be completed after the code is fully written. 3Pillar’s SVP of Engineering, Jeff Nielsen, explains why it’s important for development teams to implement continuous testing practices to ensure the highest quality product.

Access this video on both Vimeo and YouTube.

Transcription:

Many people think of testing as a separate step in the software development process—something that you do after you write the code. You code and then you test. But with an agile software development approach, we are after a steady stream of defect free software. And if you are serious about that, then thinking of testing as a phase or a separate activity doesn’t work very well. You need a whole different way of thinking about building and testing software to achieve that.

To explain this different mindset, I came up with an analogy years ago that I think is helpful. That is an analogy to making a hand-dipped candle. You may have seen this or even participated in it.  You take a wick and a large container of hot wax, and you repeatedly dip the wick into the wax. And at each step along the way, a little bit more of the wax adheres to that wick until after a large number of dips, you get a sizable taper candle. The reason I think this is a good analogy for agile software development is because at each step along the way you’ve got a working candle. Even after that very first dip, you’ve got an embryonic candle—a working version of the final product. Now it might not burn very long, but it actually is functional.  And each additional dip after that only serves to increase the size and the capability of the candle. That is exactly the same way that agile software development works. We start by building an embryonic version—but working version—of the system that we want, and then we gradually layer on functionality a little bit at a time.

That works great as long as your approach to quality is sound. Imagine trying to make a flawless candle with this hand-dipped method. You would want to make sure to check the candle after each dip­—check its roundness, check to make sure that it is still perfectly straight, even pull out your optical densitometer and check the overall consistency of the candle. That would be the best way to ensure a flawless candle at the end—to ensure a flawless candle at each step along the way.

It is exactly the same for software development.  The best way to ensure a defect-free big system is to ensure that, at each step along the way, you are remaining defect-free. And that is a different approach to testing and quality assurance. That’s the approach that I call continuous testing. What that approach means is that testing is not a separate phase or separate activity or done by a separate group of people. Rather, it is an integral part of the team’s day-to-day work. For example, you’ve got developers every few minutes doing testing with automated developer tests (ideally). You’ve got testers daily looking at the stories that are in progress, the ones that are just finishing—not waiting until the stories are done, but continually testing the system from the user’s point of view. You’ve got exploratory testing happening every day, where we are checking for strange interactions of things that we just built and how they interact with other things. And then, at least once per iteration, you’ve got some sort of user acceptance testing where you are looking at fitness for purpose—whether what you built actually accomplishes the objectives.

And if you have got that kind of activity happening literally every hour and every day of your project, you can see why testing is not a phase. Testing is just part of something we do all the time. And that is how you ensure quality with an incremental, agile approach to software. It might be tempting to think, “We’ll just do a whole bunch of work and then we will test it and fix all the problems together in a batch.” It is a very tempting philosophy, but you can see why it wouldn’t work very well with candles, and it doesn’t work very well with software.

Jeff Nielsen

Jeff Nielsen

SVP of Engineering

Jeff Nielsen is 3Pillar’s SVP of Engineering. In this role, he oversees the delivery of technology services to all 3Pillar clients. Jeff is responsible for all development processes in the company and manages numerous global client-based engineering teams.

Prior to 3Pillar, Jeff was the CTO and SVP of Delivery at the Santeon Group, where he ran their global software development initiatives and their agile coaching practice. At Santeon he provided executive-level coaching to federal agencies and Fortune 100 commercial clients making large-scale transitions to agile. As Head of Engineering at TrapWire for three years, he oversaw more than 50 production releases of the company’s flagship SaaS product. Jeff was also Vice President/Chief Scientist at Digital Focus, pioneering their use of agile methods in early 2001. Jeff has worked with a number of organizations – from startups to multibillion-dollar firms – over the course of more than a decade to help them improve their software development processes.

Jeff holds M.S. and M.A.Ed. degrees in Computer Science and Instructional Technology from Virginia Tech and a Bachelors in Music from BYU.

Leave a Reply

Related Posts

Shift Your Mindset to Find Product Success 3Pillar CEO David DeWolf spoke on the importance of seeing software development through the lens of product at the recent “Product Matters” event in I...
Flexing Your (Underused) Creative Muscle On this episode of The Innovation Engine, we talk about how to start flexing what is likely an underused muscle, if you're like 98 percent of the popu...
Where Are the Female Leaders in Tech (& How Can We Attr... On this episode of The Innovation Engine, we examine the dearth of female leaders in technology and look at ways we can mentor and encourage more fema...
Microservice & Serverless Architectures – Is Eith... On this episode of Take 3, we explore microservices and serverless architectures - what they are, why microservices have gained so much in popularity ...
5 Cost Saving Strategies When Using AWS Amazon Web Services, or AWS, offers reliable and scalable cloud computing services. More and more companies are realizing the benefits and are migrati...

SUBSCRIBE TODAY


Sign up today to receive our monthly product development tips newsletter.