Compatibility testing is a part of non-functional testing conducted on application software to ensure the application's compatibility with different computing environment.The ISO 25010 standard, (System and Software Quality Models) defines compatibility as a characteristic or degree to which a software system can exchange information with other systems whilst sharing the same software and hardware. The degree to which a product can perform its required functions efficiently while sharing a common environment and resources with other products, without detrimental impact on any other product is known as co-existence while interoperability is the degree to which two or more systems, products or components can exchange information and use the information that has been exchanged. In these contexts, compatibility testing would be information gathering about a product or software system to determine the extent of coexistance and interoperability exhibited in the system under test.
什么是碎片化？举个例子，1000 个 Android 手机制造商拿到 Android 内核之后，可以制造出 1000 种搭载不同硬件平台、界面的 Android 手机，虽然它们仍是基于 Android ，但其实已经不再是原来的 Android 了。经过一系列改造之后，每个手机制造商都拥有一个“独立”的 Android ，这就是碎片化。碎片化会导致的常见问题有：想下载一款应用，但是每次下载都失败；手机一登录 App 就死机，只能删掉；每次进行到游戏最关键的环节就闪退……这些问题归根结底就是 App 的适配性问题。用户设备种类那么多，产品如何匹配？如何保证产品在不同平台及版本、不同网络制式、不同分辨率和机型都有很好的用户体验呢？
Although the problem is widely recognized among web developers, no systematic approach to tackle it exists today. None of the current tools, which provide screenshots or emulation environments, specifies any notion of cross-browser compatibility, much less check it automatically.
Because there are complex and changing interdependencies between components and their versions, and because there are such a large number of configurations, it is generally infeasible to test all potential configurations. Consequently, in practice, compatibility testing examines only a handful of default or popular configurations to detect problems; as a result costly errors can and do escape to the field.