How do software platforms/frameworks test for backwards compatibility with third party extensions?

For instance, say I have a framework that many third party extensions rely on, and I want to make a minor update to the framework. How do I find out if the changes I make to my framework will effect these third party extensions? And what is the best way to ensure that they don't?

  • 2
    Sharing your research helps everyone. Tell us what you've tried and why it didn't meet your needs. This demonstrates that you've taken the time to try to help yourself, it saves us from reiterating obvious answers, and most of all it helps you get a more specific and relevant answer. Also see How to Ask
    – gnat
    Aug 30, 2018 at 21:29

1 Answer 1


A significant part of the answer is in the question:

How do software platforms/frameworks test for backwards compatibility with third party extensions?

If you have already a comprehensive test suite (for example if you use TDD), you just have to run it, and you'll have the answer.

Tests for extensibility are not much different from the other tests; it's just that you not only call framework's method, but also have tests where the framework invokes the extension:

  • It requires that the test-extensions/test-budies/test-doubles need to verify that the promised pre-conditions are true (e.g. accessibility of some framework component, status of some other)
  • It implies also that you have a minimum level of integration tests (e.g. hook the extension + ensure the parameters it successively receives are as expected).

The rest of the answer is to make sure your design is as SOLID as it can. In this regard, you should have a special focus on interfaces when you develop your new release, because every time you change something in an interface it might well have an impact on extensions.

P.S: do you already use semantic versioning ? It won't ensure backwards compatibility, but will inform your framework users of the level of compatibility they can expect from each new version.

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.