Back to blog

Software quality and dependability

Testing is not enough: Dependable software is completed by quality records.

Software testing is often described as performing a sequence of steps and marking the outcome as pass or fail. That definition is incomplete. A test is a controlled comparison between a requirement and observed system behaviour. A quality record preserves who made that comparison, in which version, with what data, and under which conditions. Documentation connects both elements across a lifecycle. Testing, records, and documentation are therefore not three separate administrative tasks; they are complementary parts of one engineering control.

01

Testing is more than showing that software runs.

A program opening successfully or completing a few common operations does not demonstrate that it is fit for purpose. The central question is not simply “does it work?” but “does it repeatedly show the expected behaviour within its intended use and an acceptable level of risk?”

Software failure is not limited to a wrong message on screen. Incorrect authorisation, silent data loss, faulty calculation, an incomplete audit trail, failed restore, or unexpected boundary behaviour are also failures. Good test design examines the normal user path and the conditions under which confidence may be lost.

Testing is therefore not a declaration of perfection. It is structured evidence that defined requirements are satisfied under known conditions and within stated limits.

02

A good test begins before the test step.

A testable requirement identifies the actor, expected behaviour, condition, and acceptance criterion. “The system shall be fast” expresses intent but defines no test. “An authorised user shall open a report containing 10,000 records within five seconds under normal operating load” creates a measurable comparison.

The expected result must be established before execution. Interpreting acceptance after seeing the outcome turns a verification activity into a justification exercise. Test data, preconditions, and the software version should be fixed for the same reason.

I saw the practical value of this connection while testing and documenting production automation, enterprise applications, and other operational systems. When a requirement is unclear, the traceability matrix exposes the gap; when test design is weak, a large stack of approved pages cannot close it.

03

Negative testing verifies that the system rejects correctly.

A positive test shows that an expected function completes with valid input and an authorised user. A negative test deliberately compares the system with conditions such as missing or malformed data, an out-of-range value, a duplicate action, an unauthorised role, an interrupted connection, or an unavailable dependency. The expected result is not merely that the system “does not work”; it must reject or manage the invalid condition safely, consistently, and explainably.

Passing only positive scenarios can create false confidence. A system may calculate correctly with valid inputs yet lose data integrity when a value is missing, requests arrive concurrently, or a transaction is interrupted. Negative testing verifies whether the error is detected, the user receives the correct message, the failed operation leaves no partial or duplicate record, the event is recorded appropriately, and the system returns to a controlled state.

In my work with production automation, enterprise applications, and imaging systems, negative scenarios were often more revealing than the normal path. Preventing an out-of-range process parameter, blocking approval by an unauthorised user, ensuring an interrupted transfer creates no incomplete record, or routing insufficient image quality to review instead of a false acceptance are examples of the same principle. Such scenarios are not chosen at random; they are derived from requirements, boundaries, state transitions, failure models, and risk assessment.

04

Covered risk matters more than test count.

Testing every function at the same depth misuses resources. Treating a colour preference like an access permission, critical calculation, data transfer, or production parameter hides important risks while increasing low-value evidence.

A risk-based approach begins with three questions: What can go wrong, what would the consequence be, and how effectively can existing controls prevent or detect it? As the consequence grows, testing should place greater emphasis on boundaries, negative scenarios, access control, data integrity, recovery, and independent review.

Across industrial automation, SCADA, enterprise applications, and automated imaging systems, I learned to connect test scope to the real impact of a function. In a vision system, false acceptance and false rejection matter; in an enterprise application, unauthorised access, incorrect calculation, and data loss may dominate. The technology changes, but the potential effect on users and operations should determine test depth.

05

A quality record is not a by-product of testing.

A test may have been performed correctly, yet the organisational result is unverifiable when the record cannot reconstruct the execution. “Pass” is a decision, not evidence. Evidence connects the requirement, condition, data, system and document version, expected outcome, observed outcome, and decision.

Records should be created during execution. Steps completed later from memory easily lose sequence, initial observations, and unexpected behaviour. Hiding a deviation and retaining only a passing retest does not make the process cleaner; it makes it less trustworthy. The original result, investigation, action, and rationale for retest belong to the same account.

The aim is not to turn every click into a screenshot. Excess evidence can bury critical information in noise. The correct principle is to retain the necessary and sufficient context for an independent person to understand and verify the decision.

06

Traceability turns documents into an evidence system.

Requirements, risks, tests, and deviations may live in separate files. Without explicit relationships, the organisation has many documents but no coherent assurance. Traceability connects each critical requirement to an appropriate risk assessment and adequate test, then connects every result to its evidence and any related deviation.

The relationship works in both directions. Forward traceability answers “How was this requirement verified?” Backward traceability answers “Why was this test performed and which decision does it support?” Redundant tests, untested requirements, and unresolved deviations become visible.

Its greatest value appears not on audit day but on change day. When a module, parameter, or role changes, the links reveal which requirements and tests may be affected. Regression testing can then follow a justified impact assessment rather than habit.

07

Documentation carries the system beyond today.

Documentation is not merely the report produced at project end. Intended use, responsibilities, configuration baseline, test strategy, operating instructions, incident and change management, backup, periodic review, and retirement belong to the same lifecycle.

An outdated procedure can misdirect even when it was once written correctly. Ownership, approval status, effective date, version, and the difference from the previous version must therefore be clear. Document control does not freeze content; it makes change visible, reviewed, and traceable.

My work in enterprise IT and end-user services showed that the same principle applies to everyday operations. SOPs, work instructions, workflows, checklists, and RACI models for inventory, computers, mobile devices, and return-and-reuse processes moved work from individual experience into a repeatable team capability. A good document does not stop people thinking; it removes routine ambiguity so that exceptions receive more thought.

08

A deviation records learning, not defeat.

When expected and actual outcomes differ, the test has produced information. It has revealed something about the system, requirement, data, or test design. That information should be classified, assessed for impact, and closed through appropriate action rather than erased.

Not every failed step is a software defect. The requirement may be ambiguous, test data may be wrong, or an infrastructure precondition may be missing. Sound deviation management distinguishes the cause, separates correction from corrective action, and justifies the scope of retesting.

This changes quality culture. The team's purpose is not to produce a flawless-looking protocol; it is to produce correct knowledge about the system. A record that conceals early attempts is weaker than one that openly manages a deviation.

09

Confidence comes from reconstructability, not the outcome alone.

Consider reviewing a test months later without the executor in the room. If the requirement, software version, source of test data, comparison of expected and actual outcomes, and closure of deviations remain understandable, the record has done its job.

The criterion applies from web and mobile products to enterprise IT, industrial automation, and regulated systems that require tighter controls. The level of assurance changes, but the operational reality does not: memory is limited, teams change, software evolves, and the rationale behind decisions fades.

The output of testing is therefore more than a working function. It is a system with known limits, a decision with visible reasoning, and organisational knowledge that can be reused at the next change.

References and further reading

  1. General concepts and shared terminology for software testingISO/IEC/IEEE 29119-1:2022 — Software Testing: General Concepts
  2. Foundation guidance on complementing positive scenarios with negative testingISTQB — Certified Tester Foundation Level Syllabus v4.0.1
  3. Verification and validation across system, software, and hardware lifecyclesIEEE 1012-2024 — System, Software, and Hardware Verification and Validation
  4. Developing and maintaining documented information suited to organisational needsISO 10013:2021 — Guidance for Documented Information
  5. A practice framework for the secure software development lifecycleNIST SP 800-218 — Secure Software Development Framework
  6. A regulated-industry example of electronic record integrityFDA — Data Integrity and Compliance With Drug CGMP
  7. A regulated-system example of lifecycle and risk-based controlsEuropean Commission — EU GMP Annex 11: Computerised Systems

Software quality is not created by a check mark at the end of a test. It emerges when clear requirements, risk-appropriate positive and negative testing, contemporaneous and complete records, traceable deviation management, and controlled documentation work together. A good test does more than say, “the system worked today”; it shows that the system also behaved safely under invalid and unexpected conditions. Good records and documentation make the stronger statement: “we know what we verified, why we trust it, and how that trust will be challenged again after change.”