Niroshan Rajadurai

  • Increase font size
  • Default font size
  • Decrease font size
System Verification


Using C++ with Test Driven Development

E-mail Print PDF
User Rating: / 1
PoorBest 
Introduction
This whitepaper explains how Test Automation tools can be used with C++ to support Test Driven Development (TDD) in an Agile-programming environment. This paper assumes some basic familiarity with Test Automation products. Traditional Software Development Most projects currently use a test automation tool in a traditional development environment where individual C++ classes are unit tested as they are developed. This pure unit testing allows the developer to ensure that the low-level requirements attributed to a unit are implemented correctly, while at the same time verifying the completeness of the testing via code coverage analysis.
Traditional Software Workflow
Figure 1 - Traditional Software Development - Waterfall Methodology
Since the code has already been written at this point, there are a number of issues in working this way:
  • The identification of a potential defect in the code developed is delayed by several days, if not weeks, after it has been written
  • There is a risk that developers will create unit tests based on the code developed, rather than deriving them directly from the requirements
  • Code is over engineered, and more code is developed than is required to satisfy the project requirements
Comments (0)
Last Updated on Wednesday, 13 July 2011 10:52 Read more...
 

What code am I testing?

E-mail Print PDF

The importance of completely testing software applications, and achieving it cost effectively is currently one of the major growth areas in the software development tools industry. There are many tools that offer solutions for automating the unit and unit integration test process for our application code. These tools can parse our code, and from a few simple options automatically create test drivers to stimulate our code under test, and test stubs for our dependencies. While these tools vary in capability and automation, they all offer an improvement on current manual testing processes that are in place.

One of the areas that is relatively poorly understood, and perhaps glossed over in the selection of these tools, is the process they go through to parse the code under test and automatically build the test framework. Every unit test automation tool in the market today needs to parse the source code under test to determine types, and interfaces for functions to be tested, and implement stubs for its dependencies. As a result all of these parsers understand standard C or C++ code, however every compiler not only supports the standard C or C++ language, they have extensions.

Comments (0)
Last Updated on Wednesday, 12 January 2011 10:24 Read more...
 

Illuminating System Integration

E-mail Print PDF

System Integration no matter the approach; modular, big bang, regressive, controlled or adhoc can often be one of the most critical phases of a project. This is often amplified when the final product consists of many software modules brought together in unison through a number of non-trivial interfaces. In our current world today we have many different interfaces, ranging from VME, PCI and PC104 buses, to ethernet, fibre, ATM, serial, wireless, bluetooth and other possible proprietary buses that will provide the final product with the technological edge to make it "tomorrow's must have item".

In such a changing dynamic world, the fundamental concepts we gleened from our forefathers who punched holes in cards to write programs has remained true. If you don't know what your sending and receiving over an interface, then other than through pure luck, or an extended integration phase composed of 'tiger teams' and an infinite budget, don't expect the problem solved quickly. In today's market, the once simplistic embedded processor with a few interrupts now has every interface conceived to man compressed into a single microchip no bigger than your thumbnail. Without a strategy to attack this problem, the harsh reality is that your project is doomed to fail. So lets take a look at how we can we solve this problem.

 

Comments (0)
Last Updated on Sunday, 24 October 2010 22:56 Read more...
 

Code coverage, what is it and why do I need it?

E-mail Print PDF

One of the challenges with developing software is to know when the software is at a sufficient quality such that we consider it ready to ship to our customers. The only provable way of ensuring that the our software will not contain any defects is to test it. Testing can occur at many stages, it could be unit testing, where we test a single class or source file in isolation to the rest of the system, integration testing, where we test the interaction of several units, while isolating others, or finally system testing where we test all of the software running as the final system. The challenge that software projects are faced with is to know when testing should stop. Is it sufficient to ensure every requirement has been tested?

 

Comments (0)
Last Updated on Sunday, 24 October 2010 22:54 Read more...
 

A400M Demo Flight at Farnborough 2010

E-mail Print PDF

I was lucky enough to view the EADS A400M demo flight at Farnborough 2010. This aircraft has a lot of significance to me, as I have worked closely with the engineers developing the software on this aircraft. Helping them test and verify it to the DO-178B certification standard.

Dim lights

 

 

Comments (0)
Last Updated on Tuesday, 05 October 2010 10:41
 


Related Articles