Welcome!

Microservices Expo Authors: Stackify Blog, Pat Romanski, AppDynamics Blog, Liz McMillan, Elizabeth White

Related Topics: Microservices Expo, Java IoT, Microsoft Cloud, Adobe Flex, CRM, Apache

Microservices Expo: Article

Developers – Stop Doing QA's Job

Unit Testing can solve the problem

We've all been there - it's Friday night, 11PM and the system you just deployed doesn't work. There's a bug. Your manager just hung up. You phone your friends to tell them that you're not going out tonight. You start thinking: Why didn't QA catch that. Now management is going to add more QA staff, give them more budget, and there's going to be a zero bug tolerance policy once again.

There is a way out of this problem. Could it actually be unit testing? I had the good fortune to visit two development teams in the same company and compare firsthand the experience of teams that might prove this assumption.

Two years ago, the teams diverged on different paths.

"Unit testing?" said the first team leader. "We know it is going to be hard. But we heard that it's likely to provide lots of benefits: cleaner code, fewer bugs, quicker development cycle... and our whole development team has been begging for this. QA also spends significantly less time finding bugs. Manual testing may have taken too long but that's gone the way of the dodo. We're going to have to get management on board. "

"We've heard that unit testing is a good practice but we are under a lot of pressure. I'm sure that it will postpone our release date," said the second team leader. "Let's do it after the release. "

The first team convinced the management to give 20% of its time to unit testing and continued to learn, improve, and were persistent in writing unit tests.

The second team kept on postponing unit testing ‘til after the "next release."

I went back to visit the teams recently, to see how they are getting along. It was eye-opening.

I had a great discussion with both teams.

The team that learned about unit testing and started testing (using Typemock Isolator) kept on speaking highly of their results and gave the unit testing love as they were overwhelmed with joy over their processes and tools.

Why?

Their software release cycle (developers and QA) is much shorter (25%-33%) than the other team. Software is released quicker. The team has stayed relatively intact as engineers prefer to work in environments with automated unit testing.

QA is relatively happy. Compared to the other team, they focus on real usage issues rather than simply getting the application to work. They find less critical bugs and the bugs they find are significantly less severe than the other team. The developers are more confident in their code, allowing them to make changes quickly, without introducing bugs.

The developers are consistently adding functionality. Of course bugs still creep in even with unit testing. However, the few bugs found by QA aren't anything to be ashamed of - both sides are happier and trust among the teams has increased. Management is also happier with the quality of the software - after all, fewer customer complaints means reaching the business goals.

What about the second team that didn't unit test?

The team that didn't start unit testing kept talking about how they would like to do unit tests and the developers are ashamed that they never started.

The team members were having problems. Pressure, delayed releases, and management were on the team's back because of too many bugs. That is why the management decided on a zero bug tolerance policy again. This meant that the team had to build a QA-style environment and had to test the system manually before sending the application to the QA team. Practically, they were doing QA's job in order to lower the bugs sent to the QA.

The developers are not happy. Their focus turned from adding more features to get the bugs to QA down. They do this by manual ‘QA style' testing, constantly running the debugger, engaging in time-consuming deployment and manual testing for every small feature instead of developer-style unit testing ... and they know it. This makes the development cycle longer and no one is happy as they are all overworked. Caffeine and foosball doesn't compensate for sleepless nights and endless debugging.

QA is saddled with bugs and is working overtime to bring them down and is requesting more and more money in their budget to get the bugs ironed out....tired of fighting with the developers and management about the number of bugs and consistently delayed release due to the incessant back and forth between the two teams.

By not unit testing, the team is doing their work plus QA's work: they are developing their software, plus testing their code

It is obvious that the team that was persistent with unit testing, and went through the ropes and hardship of learning how to do it correctly, had the upper hand. They improved their coding skills, were energized by their coverage and had a better time-to-market. The other team, well they starting to do the QA's job too.

Eli Lopian is the CEO of Typemock, the Unit Testing Company (http://www.typemock.com).

More Stories By Josh Litvin

Yaniv Yehuda is the Co-Founder and CTO of DBmaestro, an Enterprise Software Development Company focusing on database development and deployment technologies. Yaniv is also the Co-Founder and the head of development for Extreme Technology, an IT service provider for the Israeli market. Yaniv was a captain in Mamram, the Israel Defense Forces computer centers where he served as a software engineering manager.

Microservices Articles
Docker is sweeping across startups and enterprises alike, changing the way we build and ship applications. It's the most prominent and widely known software container platform, and it's particularly useful for eliminating common challenges when collaborating on code (like the "it works on my machine" phenomenon that most devs know all too well). With Docker, you can run and manage apps side-by-side - in isolated containers - resulting in better compute density. It's something that many developer...
Skeuomorphism usually means retaining existing design cues in something new that doesn’t actually need them. However, the concept of skeuomorphism can be thought of as relating more broadly to applying existing patterns to new technologies that, in fact, cry out for new approaches. In his session at DevOps Summit, Gordon Haff, Senior Cloud Strategy Marketing and Evangelism Manager at Red Hat, discussed why containers should be paired with new architectural practices such as microservices rathe...
DevOps is under attack because developers don’t want to mess with infrastructure. They will happily own their code into production, but want to use platforms instead of raw automation. That’s changing the landscape that we understand as DevOps with both architecture concepts (CloudNative) and process redefinition (SRE). Rob Hirschfeld’s recent work in Kubernetes operations has led to the conclusion that containers and related platforms have changed the way we should be thinking about DevOps and...
With the rise of Docker, Kubernetes, and other container technologies, the growth of microservices has skyrocketed among dev teams looking to innovate on a faster release cycle. This has enabled teams to finally realize their DevOps goals to ship and iterate quickly in a continuous delivery model. Why containers are growing in popularity is no surprise — they’re extremely easy to spin up or down, but come with an unforeseen issue. However, without the right foresight, DevOps and IT teams may lo...
"There is a huge interest in Kubernetes. People are now starting to use Kubernetes and implement it," stated Sebastian Scheele, co-founder of Loodse, in this SYS-CON.tv interview at DevOps at 19th Cloud Expo, held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
In his session at 20th Cloud Expo, Mike Johnston, an infrastructure engineer at Supergiant.io, will discuss how to use Kubernetes to setup a SaaS infrastructure for your business. Mike Johnston is an infrastructure engineer at Supergiant.io with over 12 years of experience designing, deploying, and maintaining server and workstation infrastructure at all scales. He has experience with brick and mortar data centers as well as cloud providers like Digital Ocean, Amazon Web Services, and Rackspace....
Today most companies are adopting or evaluating container technology - Docker in particular - to speed up application deployment, drive down cost, ease management and make application delivery more flexible overall. As with most new architectures, this dream takes significant work to become a reality. Even when you do get your application componentized enough and packaged properly, there are still challenges for DevOps teams to making the shift to continuous delivery and achieving that reducti...
Modern software design has fundamentally changed how we manage applications, causing many to turn to containers as the new virtual machine for resource management. As container adoption grows beyond stateless applications to stateful workloads, the need for persistent storage is foundational - something customers routinely cite as a top pain point. In his session at @DevOpsSummit at 21st Cloud Expo, Bill Borsari, Head of Systems Engineering at Datera, explored how organizations can reap the bene...
Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every real-life scenario that a Kubernetes user might encounter? How do you leverage advanced scheduling techniques to shape and describe each scenario in easy-to-use rules and configurations? In his session at @DevOpsSummit at 21st Cloud Expo, Oleg Chunikhin, CTO at Kublr, answered these questions and demonstrated techniques for implementing advanced scheduling. For example, using spot instances and co...
In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand using interactive visualizations and salary indicator tools to maximize earning potential. Manish Dixit is VP of Product and Engineering at Dice. As the leader of the Product, Engineering and Data Sciences team at D...