Testing Edge Cases
In the previous chapters, we discussed the implementation and testing of web applications. We made use of a variety of functional and non-functional tests to ensure that the individual services within our microservice architectures remained performant and delivered the correct functionality.
In Chapter 4, Building Efficient Test Suites, we discussed the definitions of edge and corner cases, as well as learning how to implement them using table-driven testing. For production systems, it would be nearly impossible to fully test complex systems, no matter how dedicated we might be to implementing tests across a variety of scenarios. Therefore, testing strategies should be designed with system requirements and user journeys in mind.
However, no matter how carefully we design and implement them, testing strategies also have their limitations. As discussed in Chapter 9, Challenges of Testing Concurrent Code, testing cannot prove the absence of concurrency bugs but...