Forward Compatibility
Design your software and automated tests that can cope well with future changes.
In 1998, I participated in the WWW7 conference and had the opportunity to hear Sir Tim Berners-Lee (inventor of WWW and Director of W3C) deliver the keynote speech: “Forward Compatibility.” While the specifics of the speech elude my memory, the underlying concept remains vivid. In this article, I aim to delve into Forward Compatibility, drawing insights from my over two decades of software development and testing experience.
Table of Contents:
· Case Study
∘ 1. CSV version
∘ 2. XML version
∘ Change 1: Author with middle name
∘ Change 3: Author with nickname
∘ How do typical API consumers deal with the changes?
∘ Forward Compatibility for this case study
· Forward Compatibility in Test Automation
We all know “Backward Compatibility”, and “Forward Compatibility” is undoubtedly a level up. To help you understand, I will use a maybe-not-strictly-correct metaphor. PlayStation 5 console can play PS4 games; this is called “Backward Compatibility”. If the PlayStation4 console somehow can still play PS5 games, at least to a degree, it is called “Forward Compatibility”.
Some may wonder, “How could it be possible?”. In the PlayStation case, it is certainly not. But in software, this may be feasible in some areas. For instance, XML has a built-in “Forward Compablity “ design, and CSV does not.
Case Study: API That Returns Book Authors' Details
Imagine creating an API that provides information about a book’s authors using its ISBN. First, we will decide on the data format. For simplicity, the response data only had three fields: LAST_NAME, FIRST_NAME, and AGE.
1. CSV version
Example response data:
Beck,Kent,62
Fowler,Martin,59
2. XML version
<Authors>
<Author>
<LastName>Beck</LastName>
<FirstName>Kent</FirstName>
<Age>62</Age>
</Author>
<Author>
<LastName>Fowler</LastName>
<FirstName>Martin</FirstName>
<Age>59</Age>
</Author>
</Authors>
While the XML version certainly is verbose, it does provide many benefits, one of which is “Forward Compatibility”.
Change 1: Author with middle name
During the development, a change request came: “Return author’s middle names, e.g. “Joanne Kathleen Rowling”.
Keep reading with a 7-day free trial
Subscribe to The Agile Way to keep reading this post and get 7 days of free access to the full post archives.