In life, the majority of us are consumed with things we can quantify. It is undoubtedly the driving force of our innate understanding of the world around us. This is also why our need for quantification has ledlead to our dependence on testing.
If, for example, you are in the market for a new touchscreen-enabled laptop and the need for this functional requirement was mandatory, you would not simply take the product description at face value. Instead, the first order of business would be to test the laptop’s touchscreen functionality.
The testability of the laptop’s touchscreen functionality should be a straightforward process. However, as you perform an analysis of the laptop’s location, you realize that it is stored within a plexiglass case. As you can imagine, testing the laptop’s touchscreen functionality is an impossibility at this moment under these conditions.
The Importance of Testability
First of all, testability refers to the ability to run an experiment to test a hypothesis, theory or even functionality. For example, when designing a circuit or software, the questions being asked by the researcher must be testable. If not, the questions in regards to functionality or capability become impossible to answer.
Furthermore, testability refers not only to the methods used for the investigation but also to the constraints of the researcher. Therefore, testability in its simplest form is defined as the degree of difficulty associated with testing something. So, if the testability of an item is high, then obtaining the answers to your questions by means of testing is easier.
Finally, testability is as important to product design as it is to product functionality. In fact, it should be taken into consideration as being an intricate part of the design process. As in the aforementioned scenario, there is a need for forward-thinking in terms of testability to be applied to one’s designs.
Testability Analysis and the Types of Requirements
Testability analysis is a process of examination that yields a greater understanding of a product in all phases of development. However, having a clear acceptance criteria for the product is key. Simply put, if you know what the product should do then you can more accurately test whether or not it actually can. Also, having these conversations early on can also uncover any potential issues that might affect performing the actual testing.
Keeping testability and testing analysis in mind can save frustration down the road
In general, testability analysis is conducted across the spectrum of two types of requirements. These requirements are called functional requirements and non-functional requirements.
As you may know, a non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors. NFRs are contrasted with functional requirements that define specific behavior or functions. Normally, when implementing functional requirements, it should be detailed in the design. However, when implementing non-functional requirements, it is detailed in the actual architecture because NFRs are usually architecturally significant.
Testability Analysis Framework for Non-functional Requirements
Non-functional testing is the testing of a circuit or system for its non-functional requirements. In essence, it tests the way a system or circuit operates, rather than specific behaviors of that system or circuit. This, of course, is in contrast to functional testing, which tests against functional requirements that describe the functions of a system and its components. The names of many non-functional tests are often used interchangeably because of the overlap in scope between various non-functional requirements.
Examples of these Non-functional Requirements include (but not limited to):
Accessibility is viewed as the "ability to access" and benefit from some system or device. Its design ensures both "direct access" (unassisted) and "indirect access" meaning compatibility with a person's assistive technology (for example, computer screen readers).
Adaptability is the ability of a system to adapt itself efficiently and quickly to changed circumstances. An adaptive system is, therefore, an open system that is able to fit its behavior according to changes in its environment or in parts of the system itself.
Availability describes the ability of a component or system to function at a specified moment or interval of time.
Baseline is a line that is a base for measurement (the norm).
Compliance means conforming to a rule, such as a specification, policy, standard or law.
Controllability describes our ability to guide a dynamical system from any initial state to any desired final state in a finite amount of time, with a suitable choice of inputs.
Cost is the value of money that has been used up to produce a product or deliver a service.
Durability is the ability of a physical product to remain functional, without requiring excessive maintenance or repair, when faced with the challenges of normal operation over its design lifetime.
Fault tolerance is the property that enables a system to continue operating properly in the event of the failure of some of its components.
Load is the process of putting demand on a system and measuring its response.
Observability is a measure of how well internal states of a system can be inferred from knowledge of its external outputs.
Performance is a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload.
Reliability describes the ability of a system or component to function under stated conditions for a specified period of time.
Scalability is the property of a system to handle a growing amount of work by adding resources to the system. Also, measures its capability to scale up or scale out in terms of any of its non-functional capability.
Stress is a form of deliberately intense or thorough testing used to determine the stability of a given system or entity. It involves testing beyond normal operational capacity.
Usability technique used in user-centered interaction design to evaluate a product by testing it on users.
Designs for Testability
Testability and testability analysis is an integral part of all design practices. The need to assess a product’s capabilities and behavior in a real-world setting is paramount. This is industry evident by the use of design for testing (DFT) techniques.
Design for testing or design for testability (DFT) consists of design techniques that add testability features to a hardware product’s design. The added features make it easier to develop and apply manufacturing tests to the designed hardware. The purpose of these manufacturing tests is to validate that the product hardware contains no manufacturing defects that could adversely affect the product's correct functioning.
The right equipment will help diagnose the most vital problems to address
These tests are applied at several steps in the hardware manufacturing flow and, for certain products, may also be used for hardware maintenance in the customer's environment. Furthermore, these tests are generally driven by various test programs. In addition to finding and indicating the presence of defects, these tests may be able to log diagnostic information about the nature of the encountered test fails. This diagnostic information is then used to locate the source of the failures.
In conclusion, testability analysis and DFT plays an important role in the development of products and the manufacturing process as a whole. The increased understanding of the non-functional requirements of a product reduces development time, cost, and increases the quality of the product's design.
SPICE Simulation and Testability
Although you may know the areas you need to test to improve your design and speed up the development process, you still need to know whether or not these required tests can be conducted.
What SPICE simulation tools offer you alongside testability analysis and physical testing is the ability to simulate for fault, tolerance, and yield — giving you accurate data regarding both the potential vulnerability of your circuit as well as the potential methods of failure of your board. What’s better is you can have this data throughout your design, working through the board to ensure that when it moves to production, there are no surprises regarding hazards.
Whether it is through easily simulated waveforms or voltage analysis of your power delivery network (PDN), SPICE tools are certain to make your design process more intuitive and efficient from beginning to end.
Thankfully, with Cadence’s suite of design and analysis tools, you’ll be sure to have your designers and production teams working together towards developing the best testability analysis plans for your integrated circuits and all of your CMOS technology. PSpice Simulator is the simulation solution you’ve been looking for and it can surely facilitate the best testability analysis plans for all of your circuit needs.
If you’re looking to learn more about how Cadence has the solution for you, talk to us and our team of experts.