Correct option is A
Assertion A: Software developers do not do exhaustive software testing in practice.
This is
true because exhaustive testing involves testing all possible inputs, which is impractical due to time and resource constraints.
Reason R: Even for small inputs, exhaustive testing is too computationally intensive (e.g., takes too long) to run all the tests.
This is
true because the number of test cases grows exponentially with the number of input variables, making exhaustive testing infeasible for all but the simplest systems.
Relationship between A and R: Reason R correctly explains
Assertion A, as the computational intensity and impracticality of exhaustive testing is why developers avoid it in practice.
Conclusion: Both A and R are true, and R is the correct explanation of A.
Information Booster:
1.
Exhaustive Testing:
· Refers to testing every possible combination of inputs.
· Not feasible for real-world applications due to:
·
Combinatorial Explosion: Exponential growth in test cases.
·
Resource Constraints: Time and memory limitations.
2.
Alternative Testing Approaches:
·
Equivalence Partitioning: Dividing inputs into equivalence classes.
·
Boundary Value Analysis: Focusing on edge cases.
·
Random Testing: Randomly generating test cases to cover diverse scenarios.
3.
Importance of Non-Exhaustive Testing:
· Balances cost and time constraints with sufficient test coverage.
· Ensures critical paths and boundary conditions are tested effectively.
Additional Knowledge:
·
Formal Verification: A mathematical approach to proving software correctness, used when exhaustive testing is not feasible.
·
Stress Testing: Identifies the system's limits under extreme conditions.
·
Regression Testing: Ensures new changes do not break existing functionality.