You are here

You are here

Software testing for complex, integrated applications? Go modular!

Amy Reichert QA Engineer, RxMxUSA

When testing complex, integrated applications, test teams frequently turn to "modular testing" as a way to break down application functionality into small pieces. The modular pattern provides an easier-to-follow road map then rearranges the chunks of functionality into software testing scenarios that represent different customer workflows. Creating a modular regression suite takes time, but in the end the business has a complete list of functional areas, along with integration points.

Modular testing isn't new—it's been around for years. The modular pattern of software testing includes both writing and organizing tests, and it's highly effective. In the modular test pattern, tests are written as small, function-based tests and then placed in execution order within the test suite. Each function-specific test provides full application test coverage for use in regression testing as well as feature (functional) testing; this creates a clean, effective base for automated test development.

Using the modular pattern for test management creates a full test suite of manual and automated tests that are easier to maintain and, when defects are found, these suites make failure analysis and automated test maintenance simpler.

Flexible test development with multiple uses

Granted, it takes time for QA testers to break down and construct a base of tests. Covering all of these functions in small, functional tests is a large project. However, the advantages make the effort worthwhile:

  • The business will have a manual test base and a solid base for automated test development.
  • The modular pattern provides tests organized by function.
  • The functions are combined into scenarios, the modular pattern creates integrated, negative, and alternate customer workflow tests.
  • Modular tests can be reused, which saves the QA team time that would be spent rewriting tests.

On this last point: Instead of writing tests each time from scratch, testers can search for an existing module and edit it to fit their testing needs. QA testers learn to focus less on writing tests and more on execution and finding defects.

Additionally, function-focused modular test cases provide QA training materials. Basically, each functional test serves as documentation. Regression test scenarios created from the test modules can be used to train new testers or development staff on the details of the internal application functions.

Creating a sustainable base for automation and maintenance

Performing failure analysis on manual tests is relatively straightforward by nature. However, when testers have to analyze failures with an automated test suite, it becomes time-consuming and difficult. If automated tests aren't written in a functional, modular fashion, it's incredibly hard to debug the test to determine if the problem is in the test or in the application code.

Failure analysis on modular automated tests isn't simple either, but it takes less time. When a test module fails, it's easier to determine precisely which function caused the failure. Then, that module can be analyzed to pinpoint the source of the defect.

You should also keep in mind that, with automated testing, the cost of test maintenance constantly changes. Creating a manual suite of modular functional test cases creates a logical base for automated test development and maintenance. Each manual, functional test module is automated and then grouped into an infinite number of test scenario combinations. Now, rather than simply having automated unit tests written by developers, or automated smoke tests that test basic application features, a business can develop automated customer workflow tests. Modularization for automated test development ensures that automated tests are effective in testing customer workflows repeatedly.

Proceed with caution

Modularization is essential for building effective tests for both manual and automated test suites. Modular tests are small and function-focused. They can be easily combined into a variety of scenarios to cover numerous customer workflows. The small, functional nature of the tests makes them easier to debug and makes the tests more efficient to maintain. It's an investment to create the base of functional tests, but it's essential for success when developing tests for a complex, integrated application suite.

A mistake people frequently make is to replace manual tests with automation. The problem with this is that if the automation later becomes too difficult to maintain, tests can be lost, along with the test objectives and documentation. I always recommend keeping the manual test, even if only as a backup.

Creating a manageable test automation suite is an effective way to create valid and maintainable test automation at the user level. It's imperative that businesses consider allowing their testing teams time to develop the modular manual test base, and then create the automation from the manual base. It's well worth it in the long run.

Keep learning

Read more articles about: App Dev & TestingTesting