Software requirements best practices - Requirements shall be testable
I've written about this before over on my devdaily.com website, but one software requirement best practice is that all requirements should be testable. In fact, I suggest that whenever you write a software requirement, you should always ask yourself this simple question:
Is this requirement testable?
If you think about it, if a requirement isn't testable, how can it actually be a requirement? How can you prove later that this requirement has been met?
Vague, untestable software requirements
The easiest way to demonstrate this technique is by listing some of the vague, untestable software requirements I've seen in my career as a business analyst:
- The system shall be fast.
- The system shall be scalable.
- The system shall be easy to use.
As written, all of those requirements are subjective and not testable. What these statements are missing is objective criteria that makes them testable.
Writing testable software requirements
To fix these problems, let's specify each requirement in a testable way:
- The login screen will display in XX ms.
- The system shall handle a simulated user load of 10,000 with all web pages responding in less than XX seconds.
- A team of XX sample users, not involved in the design process, shall be used to test the usability of the system. Without a user manual or training, they must be able to do X, Y, and Z in less than XX minutes.
Of course you'll want to add actual numbers to each of those requirements, but I hope you can see that these software requirements are testable, where the earlier requirements were not.
Software requirements best practices - Summary
In summary, I hope you can see that this is a great question to ask:
Is this software requirement testable?
Or, to put it another way, which I prefer:
How would I test this software requirement?
In summary, I hope this "software requirement best practice" has been helpful. I'll try to share more best practices related to software requirements and the Business Analyst role as time permits.
Recent blog posts
- Free Scala and functional programming video training courses
- Free: Introduction To Functional Programming video training course
- The #1 functional programming (and computer programming) book
- The User Story Mapping Workshop process
- Alvin Alexander, Certified Scrum Product Owner (CSPO)
- Alvin Alexander is now a Certified ScrumMaster (CSM)
- Our “Back To Then” app (for iOS and Android)
- A Docker cheat sheet
- Pushing a Scala 3 JAR/Docker file to Google Cloud Run
- Reading a CSV File Into a Spark RDD (Scala Cookbook recipe)