Mainframe Blog

Spell Check, Shift Left and Automated Testing

4 minute read
Mark Schettenhelm

Overview: “Shifting left” and the benefits of automated testing aren’t new ideas. Everyday tools, like modern spell check features, show how this methodology improves quality, increases productivity, and lets users focus on the project at hand, rather than error checking.

Early word processors had this great feature to check spelling—I know I needed it. When you were done typing your document you would select the spell check option and it would find your errors so you could correct them. This made me much more productive because I could put out a quality document faster. I wasn’t slowed down by manually checking my spelling, so I was able to focus more on the content.

But the feature evolved to make it even more useful. Up to that point, I was happy, but someone was thinking about ways to make me happier. That’s great product management. In looking at the process, they realized that this spell check feature should always be on, allowing users to find errors immediately. Why does this matter? Because it’s easier for the user to find errors as they are typing versus later, when they are focused on finalizing the document.

This led to a big, but subtle, improvement in my productivity. I was able to fix errors faster and without really thinking about it. Over time, the quality and accuracy of suggestions got better and better. Then I noticed that it was looking at more than spelling; it was looking at sentence structure. This started to make me a better writer, not only by making my sentences better, but by gradually training me to avoid those errors. I learned and, with time, saw those suggestions less often. It taught me in a much better manner than what I had experienced in school. I didn’t know it at the time, but with spell check, I was “shifting left” in my writing process. I was testing changes as I entered them and correcting errors before they got into production.

Test Early & Often

Looking at how we write code, there is something similar now: automated code quality and testing. In the past, you might wait for a compile to spot an issue; you might have all of your code ready before doing a test. Today we probably only look right before the deadline, or maybe each sprint, but what if we did it at every commit?

This is an example of the shift left in software development, but as I mentioned above, this idea isn’t new. What is new is doing it for mainframe development. You may start minimizing errors with Topaz Editor’s syntax assistance. Then you probably save your changes and wait for the compile to find errors. Once you decide to compile, you wait for those results to come back and tell you of any compile errors. You fix them and do it again. Then, when do you test, it is set up manually. This is where most of us stop – manual testing. Instead of testing after each save, or commit, we wait until we have “enough” to make the test worth the time and effort. By then it is late in the process, and we’ve already committed a lot of code. Waiting until this point in the process makes it much harder to determine the exact spot where the error was introduced.

We now have the tools to enable a quick check of your program as soon as you are ready to check it in. Using SonarQube initiated from a Jenkins script, you can get instant feedback on your changes. This can be tied into your compile process so that if there are serious errors, you won’t waste the time taken to compile—it will come right back to you for changes. Once it passes that verification, it can be compiled. That’s great because you have fast feedback. But it can be improved.

But Does it Work?

Just because your code compiled, that doesn’t mean it will work, or that you haven’t broken something. This is where automated testing with Topaz for Total Test comes in. It will automatically run a test and pass back your results. Almost immediately after saving your changes you will have a quick assessment of code quality, then the results of an actual test.

Automated testing makes turnaround faster by allowing you to check code in smaller increments, more often. This is shift left in action. You get several benefits here, like the obvious quicker fixing of problems, but some of the benefits are more subtle. You will be trained to make smaller, more frequent commits of code. And you’ll want to see if there are any errors in what you have produced so you can fix them before going forward, generating a feedback loop of productivity.

Learn From Your Mistakes & Open the Door to Innovation

The next benefit, as I mentioned with the spell check feature, is being trained by the software itself. Seeing the error so close to when I created it became a learning experience, making me a better writer. That same thing will happen with coding: you will see traps you’re prone to fall into and correct them before they occur.

The last benefit I’ll mention is that it can unleash the creativity we all need to be great developers. With less time dedicated to testing, we can focus on the important aspects of the code itself, knowing there is a safety net right beneath us.

Reducing the drudgery of manually checking or testing code gives us more time to produce better applications for our users. And isn’t that the point?

Access the 2024 BMC Mainframe Report

The results of the 19th annual BMC Mainframe Survey are in, and the state of the mainframe remains strong. Overall perception of the mainframe is positive, as is the outlook for future growth on the platform, with workloads growing and investment in new technologies and processes increasing.


These postings are my own and do not necessarily represent BMC's position, strategies, or opinion.

See an error or have a suggestion? Please let us know by emailing blogs@bmc.com.

Business, Faster than Humanly Possible

BMC empowers 86% of the Forbes Global 50 to accelerate business value faster than humanly possible. Our industry-leading portfolio unlocks human and machine potential to drive business growth, innovation, and sustainable success. BMC does this in a simple and optimized way by connecting people, systems, and data that power the world’s largest organizations so they can seize a competitive advantage.
Learn more about BMC ›

About the author

Mark Schettenhelm

Mark is a DevOps Evangelist and Lead Product Manager at BMC who has experience working with developers around the world in Source Control Management, Testing, DevOps and Application Portfolio Analysis. He is a frequent conference speaker, webinar presenter, blogger, and columnist, often explaining the benefits of bringing Agile and DevOps to mainframe development and encouraging development teams to adopt new methodologies and continuously improve.

His writing has appeared in Enterprise Executive and Enterprise Tech Journal and he is a frequent contributor to DZone.com and SHARE Tech Watch. Mark is currently the Lead Product Manager for BMC products in Source Control Management, Deploy, Code and Fault Analysis.