What is an Edge Case?
Bugs that are uncommon to users are known as edge cases. It is a problem which effect only a subset of end users. Edge Cases in software testing verifies if software handles unexpected situations gracefully and ensures reliability and robustness of the system. These scenarios occur when users leave the happy path and try to follow a path that was overlooked during development and testing. These use cases are unexpected and rare ones. These cases might have been overlooked in early stages of writing Product Requirement Document.
We cannot say that these are hard to reproduce. But we can say that it might happen for a particular device, particular browser, for a particular hardware configuration, network conditions, for some real-world data that was not included in testing or if certain user scenarios have been overlooked. Even if these cases are not affecting many users, still testers must be aware of these edge cases.
Example of this can be that for a particular website, a particular button on a website might not work for an iPhone user but this may be only for 5% of users. This is an edge case.
Why do edge cases occur?
Some of the reasons which may lead to the occurrence of an edge case are as follows:
-
Incomplete requirements:
Some edge cases may arise if some requirements are missed or overlooked during the early stages of development. If some test scenarios are missed, then it may lead to edge cases in future.
-
User’s unpredictable behaviour with the product:
It may be possible that user may behave with the product in an unpredictable way which tester might not have encountered during product Development.
-
Working on real time data in real world:
Users interact with the product with varying configuration of hardware, software, network boundaries. So, it is possible that software behaves in an unexpected way at certain times.
-
Data Variability:
In real time, users can interact with the product with various sets of data that can lead to edge cases that did not get encounter during different levels of testing.
-
Increase in the complexity of software:
As the software evolves, the interdependencies between modules increase, so it is possible that it can lead to the generation of edge cases anytime in future.
Identification of edge cases:
It’s very important to identify edge cases as early as possible so that it may not lead to unexpected issues in the product and ensures smooth user experience.
1. In-depth requirement gathering:
Requirement gathering is an important phase in software development. Conduct in-depth discussions with client and stakeholders to find out edge cases early in the development process. Thorough reviews should be done to avoid such edge cases in future.
2. Well prepared Product Requirements Document:
Make sure when the requirements are added to sprint, they are thoroughly reviewed by test engineers for quality checks. Make best use of analytical skills of the testers which may avoid any such edge case in future.
3. Scenario based Testing:
Work closely with quality engineers to cover a broad range of scenarios to validate product’s behaviour under various conditions.
4. Iterative Development:
It’s not possible to cover all edge cases at once so best way is to follow iterative approach and analyse the edge cases from the previous releases and focus on such scenarios that have led to some edge cases in the past that can help to combat edge cases in future.
5. Beta testing with diverse users:
Involve beta testers to simulate real world scenarios and collect feedback given by them to avoid edge cases in future.
What are user Scenarios and how can they help in finding edge cases?
User scenarios are the stories that help you understand how users use your system in a specific context. They help you design and test your system from user’s perspective. User scenarios are useful in finding edge cases because they help you find different ways in which users can interact with your system and their possible outcomes. User scenarios can help you simulate situations like invalid input, network issues, security breaches, etc that can trigger edge cases. Now this way you can uncover hidden or overlooked edge cases and help improve user’s experience and the system’s performance. We can create user scenarios in the following ways.
- Identify target users and their goals.
- Define the main scenarios that represent happy paths of your system.
- Define edge cases in clear format.
- Review and prioritize scenarios based on their relevance, frequency and impact.
Examples of user scenarios for edge cases:
- In an e-commerce website, a user may find a product which is no more in stock, a user may give invalid address etc.
- In an online course, a student may not be able to enrol due to it being full.
- In an online medical facility, a patient may not be able to book an appointment with a doctor due to unavailability of a doctor or if the medical insurance of the patient is expired.
Importance of fixing Edge cases:
Do edge cases need to be fixed? It really depends on the severity of the edge case and the risk associated with this edge case. Example: In an e-commerce website, if place order button is not working in an edge browser, then this bug will bring about a huge loss in the company’s revenue and will affect user experience. Users can abandon app or website due to bad user experience. In today’s world of social media, customers tend to post their issues on different platforms thereby bringing about bad name to the company. So, any such edge case should not be overlooked.
Conclusion:
Though edge cases are uncommon to users but if not fixed on time can lead to bad customer experience and loss in the revenue of the company. Quality engineers should not take it lightly and should thoroughly investigate the cause of it and its future implications on the software. As focus is to deliver quality product so it’s important to provide bug free software to customers and built the confidence of the customer in products so that customers can rely on the software and can trust our services.