Code improves code, and certifies certainty

Siva Ganesan, Vice President and Global Head at TCS Assurance Services Unit, blogs about ensuring fast paced assurance that matches the high velocity deployment and release cycles.

We truly have arrived in the age of digital disruption. Machine to machine communication has reached a new high, paving the way for the internet of things (IoT), buzzing with sensors and devices. Algorithms and robotics using a plethora of open-source, crowd-source, 3D and 4D print sources are all set to win us over. The boundaries defining human-computer interactions are blurring. Our devices are becoming an extension of ourselves. In an earlier post, I discussed the potential perils and the need to address these privacy and security risks towards making the IoT a safe proposition for consumers.

We have an emerging customer base that expects nothing short of the best-of-best features and performance, doled out in high-velocity cycles! All this brings forth a very important question of assuring quality and security – How do we ensure fast paced assurance that matches the high velocity deployment and release cycles?

Test automation is the answer

Automation is the answer. Unfortunately though, most test automation initiatives focus on and stop with automating test data. That’s where it all begins, and sadly, ends. For test automation to go beyond mere test data, we need efficient scripts. And that brings me to the focus of this post: only code can improve code.

Let’s substantiate with a common example. When the iron blades of two knives are rubbed together, they become sharper, significantly improving their ability to cut and slice. Only a diamond can polish another diamond. Similarly, software assurance needs three quality assurance (QA) harnesses – assurance engineering, assurance architecture, and assurance code. Recursive as it may sound (and it indeed is), there is a great need for assurance specialists to create the best possible assurance code to test code. Because, with precision engineering, and optimized, process-driven, algorithmic and reusable code bases, we can improve software quality, and also accelerate speed to market.

Assurance code

What is extremely important in this context, however, is that these assurance code bases need to be subjected to equal if not more rigorous checks than the code they assure. The reason is simple. Assurance code has the responsibility and accountability to certify certainty. The assurance code that vouches for the quality of other code needs to be treated with the same respect and rigor – code hygiene, semantics, structure, reusability, modularity, configuration control, and release management.

So do keep in mind that assurance is not just about testing. It is about coding too. It is about architecture-design-instrumentation-engineering also. That, though, is the subject of another post. And it is about ensuring the right assurance code with the right level of rigour.

The next time someone says testing is about testing, think again! Testing is about architecture, instrumentation, validation, verification, certification, and structural quality. And testing is also about coding the right testware – testware that certifies certainty – and makes software perform as expected – anytime, anywhere. It is no surprise then that there is great demand for assurance specialists – people who formulate assurance strategies and develop effective test architecture.

An earlier version of this blog was published at #ThinkAssurance, the quality assurance (QA) and testing blog of Tata Consultancy Services. Edited for web by Cecilia Rehn.

More
articles