What is Abundance Testing?
Almost every product in the world has a software in it and is enabled by it. Abundant Testing is a revolutionary software testing manifesto which takes existing basic premise of software testing and expands it to architecture and design of the product under test by considering characteristics which include stability, sustainability, safe usage, reusability, and delight.
Abundant testing is very different. It focuses on current and future role of the software in the product instead of performing just verification and validation. It redefines software testing.
Abundant testing can be defined as an architecture and design support process to provide insight to improve the product by helping in uncovering architectural limitations and design problems by going beyond conventional testing of uncovering component-subsystem-system faults to show that product and its components work as required, continue to work in real environment with stability, sustainability, reuse, and delight.
Abundance Testing expands scope of testing by not only covering short term objectives of making the software product operational for the first time after release and installation, but also addresses long term implications of the software by considering objectives like software is being used where it is of value so that it can give the most benefit without compromising future needs. It shall also ensure safe use, ease of decommission, and reuse to make the software component to continue to stay in techno sphere. The approach focuses on abundance by using lesser resources in nature and also, how to gain a deep understanding of causation and incorporate that knowledge into practical architecture and design of testing.
Manifesto of Abundant Testing
Abundant testing manifesto is to increase life span of software by providing insights and information on software related risks, limitations, and problems associated with architecture and design of software so as to support development of stable, sustainable, reusable, delightful, safe software which stays in techno sphere.
Core Principles behind Abundant Testing
Core principles of software testing are as follows:
- Software testing shall use causation and abundance as core principles by bringing out issues related to architecture and design of software in terms of stability, sustainability, reuse, and delight
- Software testing shall provide gaps in architecture and design towards clean production, fully healthful products, and reusable software enabled product in techno sphere
- Software testing shall look not only at short term use of software but also, long term implications on environment, politics, economy, society, and users
- Software testing shall consider factors like implications of software on environment and society by considering factors like energy utilization, toxic emissions, safety from software system that is operational and also, in case of decommissioning
- Software testing shall consider factors like implications of software on users and society by considering human factors like privacy, protection, safety, and psychology
- Software testing shall provide insights and information on implications of technical disruptions, and support an architecture and design process in creating sustainable software
- Software testing shall visualize the gap in technology at the time of ideation of the software and production of software while strategizing software testing, and shall provide insights into possible risks towards user delight
The concept of causation and abundance are the core principles behind abundant testing. Think of technical platforms as a basis for making the software system operational which needs integration and interoperability, and then the way we perform software testing fundamentally changes. A software is just something that converts inputs into outputs so as to produce or trigger operation and behaviour of components, subsystems, and systems for immediate benefits and also, future use. In order to perform its intended functionality, software requires platform, enabling external environment, energy, and many a times electro-mechanical devices. All of them undergo frequent changes. Also, user requirements also change. Abundant testing considers all these factors. Also, in abundance testing, we need to consider technical disruptions as a challenge and latent requirements, heterogeneous data, and platform change as design issues; and stability, sustainability, safe usage, reusability, manufacturability, decommissioning, and delight as questions of test design. This improves software testing as we envision, design, create, and execute tests. This focus of testing not only supports software sustainability but also, supports reusability and growth.
How to Do Abundance Testing?
Abundance Testing requires- understanding current software architecture and design; visualizing software architecture and design of future releases; developing product image in our mind; deciding and defining what we test and what we miss. Effectiveness or limitation of testing depends on quality of thinking, ability to visualize, ability to imagine, and creativity in test designing.
In order to perform Abundance Testing, we need to perform 3 steps:
- Step 1. Create mental picture of current and future architecture and design of software
- Step 2. Creatively experiencing through your imagination
- Step 3. Formation of new mechanism of reaction patterns by acting out and as acting as a tester
Abundance testing supports sustainability and reuse by expanding software testing as an architecture and design support manifesto. When incorporated fully it ensures evolutionary products that use less energy and also, reducing possibility of decommissioning software enabled systems by supporting clean and sustainable design which supports stability, sustainability, safe usage, reusability, and delight