Every development project has a purpose, a defined end user and a list of functionalities that are transformed from concepts to requirements and ultimately, into features or functionalities in a finished platform. These elements are interwoven to form the basis of the development project. The transformation process – moving from concepts to functional requirements – occurs at the beginning of the software development lifecycle (SDLC) and largely informs the development of your software solution.
Two exercises that assist this process are the creation of use cases and user stories. Let’s examine what these terms mean and how they are used throughout the development process, whether you’re developing a mobile app or developing a custom ERP platform for your business.
What is a User Story?
A user story is a simple description of a feature or function from a user’s perspective. They outline what the user is looking for from the system or application that’s being developed. Clients should put themselves in the position of the end user and imagine what goals they would like to accomplish with the app or software platform. This will then inform which features are necessary to develop in order to complete the defined goals.
For the exercise to be effective, user stories are often accompanied by functional acceptance criteria. Functional acceptance criteria are the minimum conditions the solution must meet for the end user to accept the solution. Supporting notes or data considerations are also included with the description, as needed.
|Definition: The User Story section of a Software Requirements Document captures a simple explanation of the feature/function to be developed from a user perspective, along with the functional acceptance criteria & supporting notes/data considerations.|
User Story Example
User stories can be developed during the creation of the requirements document for your software development project. Here’s an example of how this section of the requirements document might look:
User Story 1
|User Story Description||As an app user, I would like to use the application as a central communication platform, so I can communicate with other employees.|
|Notes||Chat functionality is dependent on API availability & integration.|
As you can see above, user stories generally follow the format: “As a User, I would like ‘X’ functionality so that I can accomplish ‘Y.’”
What is a Use Case?
While a user story is the description of a desired functionality, a use case is a description of the interaction between the system and an “actor.” The actor can be a user, another application, or another system. In other words, how would an actor actually accomplish an action?
Use cases are the technical application of the intention and purpose of the feature defined by the user story. A use case usually captures the action or input, the positive response (or expected outcome) of the interaction and also the alternate outcomes (negative use case).
|Tech fact: Negative use cases can be used to verify that unsupported actions (i.e. invalid data input) do not lead to a valid response. It may also include validating the display of relevant error messages. Other terms for negative use cases include error path testing or failure testing.|
To revisit the user story example, how would a user send a message, using the chat messenger tool? How would they receive corporate announcements? The use case would outline these processes, describing each action — the input, along with the expected and negative responses for each scenario.
Use Case and Negative Use Case Examples
If you wanted to test the validity of the chat feature, you could take the defined use cases and determine the expected and alternate flows along with criteria for a failed response.
|Did you know? Alternate flows are not the same as negative use cases. An alternate flow will allow the user to meet the same end goal via a path other than the basic flow. A negative use case, or exception flow, captures interactions that result in a failed response.|
Each of the examples below could be outlined to show the use case process flow, a detailed description of the interaction in the form of steps taken for the given scenario. Process flows may also include pre and post conditions for the use case to accomplish its goal.
Use Case Examples
|Input||Positive Response (expected outcome)||Negative Response (failed response)|
|Create an individual chat by selecting another user to message||A user will start a chat thread with another user.||
|Create a group chat by selecting multiple users to message||A user will start a chat thread with a group of users.||
|Send a message of each format/type (standard, with photo, with video, with GIF)||Messages will be sent and received successfully with the correct media format.||
|Attempt to add a photo/video to message without enabling Gallery permissions.||Error message displayed, user prompted to enable Gallery permissions.||
|React to a message.||Message shows correct reaction.||
|Message a user that does not have messaging permissions.||Unable to message selected user. Messaging permission error displayed.||
A complete use case process flow for the first example may look something like this:
Use Case Process Flow
|Precondition||Both users must have messaging permissions.|
From Use Cases to Test Cases
Use cases and negative use cases are useful for QA and user acceptance testing (UAT), so that testers can ensure that the app or system delivers the intended functionalities. Use cases are used to create positive and negative test cases.
A positive test case is attempting an action that corresponds to a developed functionality. A negative test case involves attempting actions that are not supported by developed functionality, or actions that would attempt to subvert rules that have been established.
Looking at the chart above, positive test cases would include creating chats and sending messages; actions that are supported by the chat feature. Negative use cases would include attempts to add a photo without enabling gallery permissions or messaging a user that does not have messaging permissions. These two examples should not be supported by the chat feature.
Positive and negative test cases ensure that software features are working correctly and effectively, within the requirements and boundaries that have been established.
Use Cases and User Stories in the Development Process
Both use cases and user stories help clients to communicate and even determine the capabilities of their software development project, along with the technical and functional requirements. In turn, these requirements will inform the layout, design and navigation of the software system. The process of creating user stories and defining use cases helps to identify potential barriers or errors that might occur during the development process. During and after development, they also serve to test that everything works correctly.
To learn more about developing a mobile app or custom software platform, check out 7T’ss software development process and our latest eBook, How to Create a Requirements Document for Your Next Software Development Project. This eBook equips clients to create a comprehensive, well-written requirements document to set their development projects up for success.
In addition to software development, the team at 7T offers software consulting services, guiding businesses through digital transformation. We help businesses make the most of their data and eliminate inefficiencies through data governance and cloud integrations. To discuss your software development needs, reach out to our team today!