The testing process is such a crucial part of software development. Maximising the development process is key to business, SCL share some of the testing technology tools that they find invaluable to visualise dependencies, eliminate ‘tough-to-find’ bugs (static analysis tools) and ensure code coverage.

Code is an ever-changing and temperamental beast. Those millions of lines, the painstaking work of many different developers, are each dependent on so many factors: other elements of code, the specific architecture that has been mapped out, upgrades and fixes that happen along the way. These dependencies are a normal part of any software project, but without tools to help manage them they can create a tangled mess of code that make it virtually impossible to change the architecture or to fix bugs or defects.

With over half a century of experience in the computing industry, we have built up a pretty good understanding at SCL of what works best. We thought we would share the details with you of some of the testing technology that we find particularly effective, starting with three that, we think, are invaluable for the testing process that is such a crucial part of software development.

1. Lattix Software to visualise dependencies

Lattix Software helps you to understand and visualise code dependencies so you can measure, track and report on changes to your extended development team. Lattix also allows developers to formalise processes by setting design rules, so the team can understand and stick to the intended architecture of the software. How many times have you found that the architecture described in the design document bears no relation to the structure of the code? Worse still, those tricky little dependencies and ‘current architecture’ are often filed in the knowledge of your longest lasting developer or software architect that everyone always turns to.

Lattix is a great way to improve quality control and speed the delivery of potential new product features to market by creating an accurate, visual ‘blueprint’ of your software architecture, providing the development team with a complete picture and better understanding of the system.

Lattix’s Dependency Structure Matrix (DSM)-based technology algorithms and tools help you to find, fix and prevent ‘bad’ dependencies within your code. As it is a static analysis testing tool, the code is analysed rather than executed, which means that Lattix allows your development team to run scenarios based on the code to see the impact, risks and costs of proposed software changes before the code is executed, increasing coding accuracy, as well as saving time and money.

2. CodeSonar to eliminate tough-to-find bugs

CodeSonar is also a static analysis tool and one we recommend for identifying bugs and defects in your code as part of the development process. It allows your developers to perform a whole-program analysis of millions of lines of C, C++ and Java source code.

CodeSonar creates a ‘build’ of your software’s code by compiling your source code without the need for modification or instrumentation. This means that developers can test the code as they create it without disrupting or slowing down processes. As the build is based on the software’s actual code, it avoids the problems of false positives associated with early static analysis tools which relied on abstract models.

CodeSonar uses incremental analysis to review changes to the code, making it quick and easy for the team to inspect and fix any bugs as part of their day-to-day routine, long before it gets to the testing team for final review. In addition, CodeSonar analyses the computation of the entire program which uncovers defects with new or unusual patterns. Its flexible and open architecture also makes it easy to import and export data and add your own custom metrics and checks.

3. Testwell to ensure code coverage

After using static analysis to develop quality code, the next step is to test the finished software to ensure it performs as it is meant to in the real world. This requires code coverage testing, which tests the software in a variety of different environments and products to ensure it functions properly. Code coverage testing is essential for achieving health and safety certification for software running in mission critical devices from aeroplanes to defibrillators.

We recommend Testwell CTC++ for code coverage testing. It is powerful, will work with any code compiler and can be deployed to any target with a low instrumentation overhead. Testwell is easy for developers to learn and use and is specifically designed to analyse C, C++, Java, Android and C# code. The tool also allows you to see which parts of the code have been executed.

Testwell’s instant qualification kits make it easy to improve standards and gain certifications in automotive, avionics, rail transportation and medical industries for:

  • DO-178B / DO-178C (all levels) of the Federal Aviation Administration (FAA)
  • ED-12C of EUROCAE (European Organisation for Civil Aviation Equipment)
  • ISO 26262 – Automotive
  • IEC 61508 – Electronic safety related systems
  • EN 50128 – Rail
  • IEC/EN 62304

As with any industry, success is a combination of the skill of the craftsman and the quality of their tools. We are always keeping a look out for what’s new, and looking for new ways to take the pain out of development projects, and we can confidently say that all of the above testing technology is useful, reliable, and if you haven’t come across it yet, do take a look.