Robustness is a measure of how resilient software is to real-world use. It is not primarily about efficiency or usability, but about how software continues to behave correctly and predictably when things go wrong or when it is pushed beyond ideal operating conditions.

Moderators' report

“For robustness testing, it is expected that the candidate produces some evidence they have tried to break the system or test its limits: this can be using a wide range of test data (boundary and erroneous) or with some stress/performance tests, tests on multiple devices, browsers, etc.” [1].

When measuring the robustness of a system, you could consider:

  • Performance over time:
    • memory leaks or failure to release resources; and
    • behaviour when procedural generation reaches edge cases or upper limits.
  • Input validation and constraints:
    • rejection of invalid, malformed, or out-of-range input; and
    • prevention of crashes caused by user error.
  • Exception and error handling:
    • graceful handling of runtime errors.
  • Handling missing or unavailable resources:
    • missing/corrupted files.
  • Resilience to unexpected user behaviour:
    • repeated actions; and
    • cancelling operations mid-process.

Robustness testing should be tailored to the system being developed; there is little value in testing missing files, for example, if the system does not rely on external file resources.


References

  • [1]
    Cambridge OCR 2024. A Level Computer Science Moderators’ Report H446/03/04 Summer 2024 Series. Cambridge OCR.