Portability testing
Portability testing is the process of determining the degree of ease or difficulty to which a software component or application can be effectively and efficiently transferred from one hardware, software or other operational or usage environment to another.{{cite web|title=ISO/IEC/IEEE 29119-4 Software and Systems Engineering - Software Testing -Part 4- Test Techniques |url=http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=60245}} The test results, defined by the individual needs of the system, are some measurement of how easily the component or application will be to integrate into the environment and these results will then be compared to the software system's non-functional requirement of portability{{cite web|title=Portability Testing|url=http://www.opfro.org/index.html?Components/WorkUnits/Activities/Testing/PortabilityTesting.html~Contents|publisher=OPEN Process Framework Repository Organization|accessdate=29 April 2014}} for correctness. The levels of correctness are usually measured by the cost to adapt the software to the new environment{{cite web|last=Rouse|first=Margaret|title=DEFINITION environment|url=http://whatis.techtarget.com/definition/environment|accessdate=29 April 2014}} compared to the cost of redevelopment.{{cite web|last=Mooney|first=James|title=Bringing Portability to the Software Process|url=http://www.cs.wvu.edu/~jdm/research/portability/reports/TR_97-1.pdf|accessdate=29 April 2014|archive-url=https://web.archive.org/web/20080725004932/http://www.cs.wvu.edu/~jdm/research/portability/reports/TR_97-1.pdf|archive-date=25 July 2008|url-status=dead}}
Use cases
When multiple subsystems share components of a larger system, portability testing can be used to help prevent propagation of errors throughout the system. Changing or upgrading to a newer system, adapting to a new interface or interfacing a new system in an existing environment are all problems that software systems with longevity will face sooner or later and properly testing the environment for portability can save on overall cost throughout the life of the system. A general guideline for portability testing is that it should be done if the software system is designed to move from one hardware platform, operating system, or web browser to another.{{cite web|last=Salonen|first=Ville|title=Automatic Portability Testing|url=https://jyx.jyu.fi/dspace/bitstream/handle/123456789/40043/URN%3ANBN%3Afi%3Ajyu-201210212735.pdf?sequence=1|accessdate=29 April 2014}}
=Examples=
- Software designed to run on Macintosh OS X and Microsoft Windows operating systems.
- Applications developed to be compatible with Google Android and Apple iOS phones.
- Video Games or other graphic intensive software intended to work with OpenGL and DirectX API's.
- Software that should be compatible with Google Chrome and Mozilla Firefox browsers.{{cite web|last=Salonen|first=Ville|title=Automatic Portability Testing|url=https://jyx.jyu.fi/dspace/bitstream/handle/123456789/40043/URN%3ANBN%3Afi%3Ajyu-201210212735.pdf?sequence=1|publisher=Ville Salonen|accessdate=15 May 2014|pages=11–18|date=October 17, 2012}}
Attributes
There are four testing attributes included in portability testing. The ISO 9126 (1991) standard breaks down portability testing attributes as Installability, Compatibility, Adaptability and Replaceability. The ISO 29119 (2013) standard describes Portability with the attributes of Compatibility, Installability, Interoperability and Localization testing.
- Adaptability testing- Functional test to verify that the software can perform all of its intended behaviors in each of the target environments.{{cite book|last=Hass|first=Anne Mette Jonassen|title=Guide to advanced software testing|date=2008|publisher=Artech House|location=Boston|isbn=978-1596932852|pages=272–273|edition=[Online-Ausg.]}} Using communication standards, such as HTML can help with adaptability. Adaptability may include testing in the following areas: hardware dependency, software dependency, representation dependency, standard language conformance, dependency encapsulation and/or text convertibility.
- Compatibility/ Co-existence- Testing the compatibility of multiple, unrelated software systems to co-exist in the same environment, without effecting each other's behavior.{{cite web|title=What is Compatibility testing in Software testing?|url=http://istqbexamcertification.com/what-is-compatibility-testing-in-software/|publisher=Mindstream Theme on Genesis Framework|accessdate=29 April 2014}}{{cite book|last=Hass|first=Anne Mette Jonassen|title=Guide to advanced software testing|date=2008|publisher=Artech House|location=Boston|isbn=978-1596932852|page=272|edition=[Online-Ausg.]}} This is a growing issue with advanced systems, increased functionality and interconnections between systems and subsystems who share components. Components that fail this requirement could have profound effects on a system. For example, if 2 sub-systems share memory or a stack, an error in one could propagate to the other and in some cases cause complete failure of the entire system.
- Installability testing- Installation software is tested on its ability to effectively install the target software in the intended environment.{{cite book|last=Hass|first=Anne Mette Jonassen|title=Guide to advanced software testing|date=2008|publisher=Artech House|location=Boston|isbn=978-1596932852|pages=271–272|edition=[Online-Ausg.]}}{{cite web|title=ISTQB Advanced Level Syllabi|url=http://www.astqb.org/educational-resources/advanced-characteristics5.php|publisher=ASTQB|accessdate=29 April 2014}}{{cite web|title=Installability Guidelines|url=http://www.testingstandards.co.uk/installability_guidelines.htm|accessdate=29 April 2014}}{{cite web|title=What is Portability testing in software?|url=http://istqbexamcertification.com/what-is-portability-testing-in-software/|publisher=Mindstream Theme|accessdate=29 April 2014}} Installability may include tests for: space demand, checking prerequisites, installation procedures, completeness, installation interruption, customization, initialization, and/or deinstallation.
- Interoperability testing- Testing the capability to communicate, execute programs, or transfer data among various functional units in a manner that requires the user to have little or no knowledge of the unique characteristics of those units.
- Localization testing- Localization is also known as internationalization. Its purpose is to test if the software can be understood in using the local language where the software is being used.{{cite journal|last=Woods|first=Anthony|title=Operational Acceptance - an application of the ISO 29119 Software Testing standard|date=2015}}
- Replaceability testing- Testing the capability of one software component to be replaced by another software component within a single system. The system, in regards to the replaced component, should produce the same results that it produced before the replacement.{{cite web|title=Replaceability|url=http://maisqual.squoring.com/wiki/index.php/Replaceability|accessdate=29 April 2014}}{{cite book|last=Hass|first=Anne Mette Jonassen|title=Guide to advanced software testing|date=2008|publisher=Artech House|location=Boston|isbn=978-1596932852|page=273|edition=[Online-Ausg.]}} The issues for adaptability also apply for replaceability, but for replaceability you may also need to test for data load-ability and/or convertibility.