Requirements are the rules that make software possible; they’re the building blocks upon which software is developed. Not only do they keep developers on track as they build the software, they’re also important for testers to keep in mind. In fact, the definition that most people give for functionality testing is “ensuring that a software meets its requirements in the most efficient way possible,” and many other types of testing are performed while keeping the system’s technical requirements in mind.
Put simply, software requirements are a list of conditions or capabilities which ensure that the software meets the needs it was designed to address. According to Wikipedia:
Software Requirements is a field within Software Engineering that deals with establishing the needs of stakeholders that are to be solved by software. The IEEE Standard Glossary of Software Engineering Technology defines a software requirement as:
The process of defining requirements can be broken down into four steps: Elicitation, Analysis, Specification, and Management. Elicitation is the process of defining the needs which the software must address. The process of Analysis follows, wherein the elicited results are further honed to create a more detailed understanding of the requirements. Specification involves translating the analyzed results into well-organized standards, such as use cases or user stories. Finally, Management is keeping track of the changes the requirements undergo during the software development process and ensuring that the initial stakeholder needs are met.
A simple way to think of requirements is to break them into three categories:
For testers, software requirements are vital to keep in mind during the testing process. They should be considered somewhere between guidelines and laws: rules set by people whose job it is to do so, the content of which should be considered before carrying out any relevant actions. This is particularly true when performing functional testing, as mentioned above, of which ascertaining whether or not the system meets its requirements is a huge facet. Beyond that, some could even consider it a tester’s job to question how the entire system works in relation to the requirements; more than just, “does it do what it’s supposed to?” a good tester will ask, “does it do those tasks as efficiently as possible?”