One of the pitfalls new testers experience often is forgetting to test their software, applications, apps, and web sites over all the platforms that they would work with. For software, web sites, and apps to compete in today’s market, the more “cross platform” they are, the more successful they will become. The term “cross-platform” or “multi-platform” is the ability for a particular program to run seamlessly on various computer platforms and/or operating systems.
There are two types of “cross platform” software applications:
- Platform Independent: Where the software is independently compiled or developed for each platform that it supports, and
- Multi-platform: Where the software operates on any platform without any additional effort or configuration.
The software and applications will function over two ways:
- Cross Browser
- Cross Operating System (OS)
As an example, if you develop a web app, program, or page – for it to be “cross-platform”, functionality and appearance must appear the same on a Windows PC computer, a Linux operating system, an Apple Computer, WebTV, and/or iphone, as well as exhibiting the same within Chrome, Microsoft Explorer, Opera, and/or Firefox browsers. For a software program, the functionality, operation, and General User Interface (GUI), would appear the same in Apple macOS, Linux, Unix, PC, Power PC, or Microsoft Windows operating systems.
In the computer world, a “platform” refers specifically to the type of CPU (computer processing unit) and/or other hardware that a specific operating system functions on, the type of operating system (OS) used by the computer, and/or the combination thereof. This includes the ever-popular smart phone and tablet platforms that must not be left out of consideration these days. Software platforms are a combination of programming environments and operating systems (minus Java) found very commonly used in Android, Kindles, Blackberries, iOS, MSWindows, Java, or browsers like Chrome, Opera, Explorer, Firefox, Linux, macOS, Solaris, and Playstation. Java however, in comparison with all of the above has been the exception compiling to a virtual machine and CPU allowing it to run on all systems implementing a Java Virtual Machine.
Technically for your software or app to be “cross platform”, it really only has to be able to operate on more than one platform’s architecture or operating system. This involves a great amount of time and funding since each OS has variable APIs (application programming interface). Especially true with web applications as browsers are specifically promoted to be cross-platform.
Methodology & Testing:
Define your boundaries, audience, and platform. Know your audience, budget, and timeline. Create a test matrix for the various test scenarios you might encounter. Creation of a heat map will isolate high risks in the test matrix helping identify areas to prioritize when time, funding, and tools are limited. Test and Re-Test. Consider tools, emulators, and automation in the testing process to simplify the process.
Emulators will save cost in the long run so you don’t have to invest in numerous machines, devices, and platforms. Graceful degradation must be considered to limit diminished functionality to a common denominator for more limited client browsers. Multiple codebases must be built to function on different platforms while trying to avoid duplication of effort versus a single codebase compiled for multiple platform specific formatting. Third party libraries can also help hide the complexities. Your goal is a responsive web design approach or GUI and a standardized basis. Find workarounds with OS/platforms that minimize numerous installations so you can properly test the programs. In shopping for tools/emulators, read reviews and determine what suits your needs.
Consider the Page Object Model to run one test usable for multiple versions of an app displaying a similar interface. You can also consider multiple versions of the product in different source trees. Of course, with this tactic, comes difficulties with installers, data storage, and UI differences. Utilizing the JVM – Java Virtual Machine can abstract the platform and allow it to function off pre-existing software hiding differences between the platforms.
Since each platform has different behaviors, subtle bugs, and varying interfaces testing gets convoluted. Each interface may not adapt with the various applications, display or functionality of the OS, causing extreme difficulties in consistency. Scripting languages translated to native executive codes each time the app runs can create performance issues or user friendliness especially with buttons and menus. Data storage concerns also need to be a consideration especially with phones and tablets. Native package formats and installers can be a concern. Security flaws can plague development opening doors to hacking and malware vulnerability.
Never fear though, many programs and tools exist to make it all manageable because “cross-platform” is the only way to succeed in this market.