A stakeholder has provided a set of requirements for some software widget for which a requirement was provided along the form of:

The widget shall perform action A.

As the developer, I won't actually be using the product myself and thus I won't be using this widget to perform action A. In my mind, I should be handing a product to the stakeholder in which I've verified the widget is able to perform action A. It's up to them to use the widget to perform action A. Because of this reason, I believe a more relevant requirement, especially for testing purposes, should be:

The widget shall be able to perform action A.

This is a requirement that actually seems testable and can be verified as opposed to the one above. Am I looking at this the right way or am I just splitting hairs? Is there any significant difference between these two requirements from a verification/testing stance?

  • I'd argue you're splitting hairs . . . if someone was to test the widget, they'd be testing to ensure that it performs action A when they use it . . .
    – ernie
    Commented May 1, 2017 at 21:36
  • @ernie My thinking though is that I can verify, through testing, that the widget is able to perform action A. I'm not entirely sure what it means to verify that it does perform action A. In both cases, you still need to test that it can perform action A, but they do seem distinct to me in terms of what actually can be verified with a test.
    – zephyr
    Commented May 2, 2017 at 12:03

3 Answers 3


To my understanding:

  • As the developer, even you will not perform this action; you will still need to test running it as part of your unit tests.
  • In the case of this action can not be performed due to other parts of software unavailable, you will still need to code a stub to execute it.

Back to your question:

IMO, The widget shall be able to perform action A and The widget shall perform action A; carry two different meanings. It is like to say:

  • I shall kick start a new project= Yes, I am going to do it.
  • I shall be able to kick start a new project = Am I going to do it?

I think you've got caught up in english language differences. "Shall be able" is getting into an odd tense where we are talking about the future. With testing we are talking about the present - running the tests now and seeing the results now.

For testing purposes

The widget performs the action

Also you may wish to consider approaches such as:

  • Given I have a widget with x characteristics
  • When I use the widget action
  • Then I expect to see y

"Shall be able to" is usually a discouraged wording for a functional requirement. If a function has to be implemented in the SW, a requirement describing that function shall be present in the specification document.

Since a function is required and described in the document, one (or more) requirement/s shall be added to describe when (conditions) that function has to be performed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.