top of page

Testing Complex Systems

Testing Complex Systems

"Testing a complex software system is crucial to ensuring it meets all of the needs of its creators over its lifetime."

(See below)
3-blade.jpg

Website Summary

DSC00657.JPG

[Note: gDS V2 is now in use. It brings normalized syntax and semantics, and also referential integrity. Substantial documentation for it is in:

 

        https://talborough.github.io/tcsDocs/README_gDS/ ]

​​​​​

----------

​

Testing is a critical practice in software engineering, sitting at the nexus of many activities. It uncovers defects in both existing and new code, helps guide development toward the product owner’s goals, and becomes a long-term resource for understanding and maintaining the product.

​

This website presents two activities that make testing more productive:

​

  • For complex systems, especially concurrent or distributed ones, the website shows how to build a dedicated "test platform" that drives, observes, and verifies the system under test. A test platform can be thought of as a "video game" that exposes the inner workings of the system under test and helps the test engineer exercise it, verify it and expose and triage defects.​ 

​

  • A critical part of a test platform is its core data handling component. The website introduces a simple Python data-handling pattern that can serve as the core of a test platform. The pattern works well in concurrent environments. It helps test practitioners visualize, design, and evolve the test platform easily. The feature can be provided by a variety of code bases however; the choice is left up to the user.

What Exactly Is A Python-based “Test Platform” And Why Build One?

A test platform is a broad concept, much like an operating system. In the context of this website, the platform is built using Python on Linux. This combination provides a flexible and user-friendly environment that offers capabilities often unavailable in other language and operating system pairings.

 

A test platform is designed to interface with, drive, load, stress, and intentionally disrupt complex software systems while simultaneously verifying their functionality. These activities occur concurrently and often in unpredictable sequences. The platform also includes a capable user interface that enables test and development teams to interact efficiently with the system and maximize productivity.

​

Because many activities run simultaneously, a test platform shares several characteristics with an operating system. Building one requires an understanding of concepts such as concurrency, resource management, and process coordination. Fortunately, these skills can be learned incrementally as the platform evolves.

 

Organizations often require engineering buy-in before investing in a test platform. Stakeholders reviewing engineering budgets may question the value of building and maintaining a sophisticated testing system alongside an already complex product. In practice however experience shows that:

 

  • A relatively small team of test practitioners can successfully build and maintain a powerful test platform.

​

  • Test platforms consistently uncover critical defects throughout the software lifecycle.

​

  • Most test platforms follow common architectural patterns and operational principles.Once established, they provide substantial value to both developers and testers.

​

The greatest return on investment comes from enabling users to execute and validate their code as quickly as possible. When combined with techniques such as chaos testing, a test platform can also evaluate system resilience by introducing controlled failures and measuring how effectively the system responds and recovers.

What Other Topics Are Covered In This Website?

Refer to the pull-down menus at the top of the website screen: 

​

  • gDS -- This section presents gDS, a "low code", Python-based data handling facility that simplifies the process of building Python test platforms for chaos testing in complex software systems. You can, however, use the data handling facility of your choice. 

​​

  • Test Platforms -- This section covers building test platforms, including how to manage concurrency while ensuring effective chaos testing.

​​​​​

  • Case Studies & Code -- Case studies are an integral part of this website, showcasing real-world applications. The case studies come complete with running (Linux only) code housed in a public GitHub repository (browse to or “git clone” the URL below): 

​​

​                https://github.com/talborough/testingComplexSystems

​​​

In total this website provides engineering staff with resources to analyze, run, and draw upon as they evaluate and build the automation needed for the testing of their complex software systems.

bottom of page