Implementing Agile Testing Practices
Agile software development is an interactive method of development and delivery. The Agile software development approach is an adaptive framework allowing development professionals to adapt quickly to change. Central to this approach is the division of projects into small iterations that require minimal planning and can be completed within short time frames.
Agile development methods also allow for better collaboration while the software is built. Each iteration incorporates all stages of the traditional development cycle, including analysis, design, coding and testing. Once an iteration is complete, it is ready for deployment.
Traditional Development Approaches
Waterfall and V-Model Development
The Waterfall and V-Model development methods are characterized by distinct phases, each having a thorough review and authorization process that should be completed before proceeding. These processes are not bad. They have been used and still recommended in many regulated industries building embedded systems. The phases: requirements definition, design, code, and test, sound logical enough but don't allow for easy incorporation of change. In this scenario, the testing phase almost always gets shortchanged.
Manual or Automatic Test Code Generation
An indisputable fact related to unit testing is that the majority of the time spent unit testing is actually getting ready to test. The amount of test code generated will be at least equal to the amount of application code generated. For safety-critical systems the amount test code written can be 5 to 10 times the amount of application code. This test code consisting of mocks, stubs, and drivers when built manually or with a code-driven framework is prone to error. Many frameworks lack advanced unit test features.
Unit testing frameworks are most often third-party products that are not distributed as part of the compiler suite. They help simplify the process of unit testing, having been developed for a wide variety of languages. Examples of testing frameworks include open source solutions such as the various code-driven testing frameworks known collectively as xUnit, and proprietary/commercial solutions such as VectorCAST/C++. In the case of some of these frameworks, many advanced unit test features are missing or must be manually coded.
When you are building a test environment with VectorCAST, you simply point to the directory containing the header files that you want to create test cases for, and then choose one or more headers as the "Unit(s) Under Test".
VectorCAST will create the test environment, including empty definitions for the functions defined in the header files chosen. This results in a complete executable test harness that can be run on the host platform, or any embedded development environment.
Continuous Integration
Continuous Integration is a software development practice where the development team will frequently integrate their work. Developers will integrate daily leading to multiple integrations per day. Each integration is then verified by an automated build and test step to detect integration errors as quickly as possible. Many organizations have found this approach leads to significantly reduced integration issues; allowing them to develop more cohesive software in a shorter amount of time.
Regression Testing
The goal of regression testing is to demonstrate that you have not "broken" something while fixing a bug or adding new functionality to your application. Many projects have no ability to build or modify source code with the confidence it will work because of the lack of regression testing. Proper regression testing of software applications requires the execution of hundreds to thousands of unit and integration test cases and the need to effectively manage the results. Historically, this has been a very difficult, if not impossible, and time consuming process.
Manage Continuous Integration and Regression Testing VectorCAST/Manage is an extension of the VectorCAST family of unit and integration testing tools. VectorCAST/Manage allows development teams to import previously developed VectorCAST test environments into regression test suites, providing a single point-of-control for all unit and integration test activities. At-a-glance logs, summary reports, and color-coded pass/fail criteria highlight the status of each test within the regression suite.
VectorCAST/Manage Benefits
- Centralized management of all VectorCAST testing activities
- Automated testing of multiple baselines and releases
- Supports Extreme Programming, and Agile / Test Driven Development
- Easy regression testing of an entire application at regular intervals
- Accurate and immediate reporting of testing status
- Easy identification of testing trends and regressions
- Enables management to make confident build/release decisions
Request a Free trial and discover the benefits of VectorCAST
Register today for a free 30-day, trial and learn how VectorCAST can support extreme programming and Agile / Test Driven Development.




