Ethical Issues In Software Testing
This post provides an overview of software failure and ethical considerations.
Software failure is a common event with far reaching consequences. After a comprehensive examination of English language news sources for the year 2017, software testing company Tricentis found 606 software failures reported by 314 companies, impacting 3.7 billion people, costing $1.7 trillion dollars (Tricentis, 2017). The ethical and non-ethical implications of these failures are far reaching.
The Software Engineering Code of Ethics and Professional Practice is made up of eight principles related to the public, clients and employers, product standards, judgment, management, profession, collegues, and self (Association for Computing Machinery, 1997). The code provides a general framework to provide and explain fundamental principles as opposed to promoting “blind reliance on detailed regulations” (The software engineering code of ethics and professional practice, PREAMBLE). In total, the code represents the software engineers ethical responsibilities as a professional. Violations in the code, such as ensuring adequate testing has been completed before putting a software product into production, could easily lead to software failure.
For a more detailed discussion of ethical issues in software quality, one can look to Nindel-Edwards and Steinke (2008). After providing an overview of industry standards and criteria for ethical software development, Nindel-Edwards and Steinke suggest testing standards for ethical quality assurance. These standards are summarized below (Nindel-Edwards & Steinke, 2008, p. 57):
- Testing software functionality and recording all results, including defects.
- Testing plans and test cases should go beyond positive testing of functionality to include cases with predictable error conditions.
- Testing plan and test cases should go beyond the intended deployment environment to include likely scenarios.
- Disclosure to the project team of all tests executed, results, and findings including defects.
Application of these standards can systematize ethical practices and prevent software failure. Consider, for example, the Mariner 1 Spacecraft, which was to depart Cape Canaveril in 1962 (Raygun, 2018). Shortly after take-off, a coding error caused the Mariner 1 Spacecraft to veer off-course threatening a crash landing back to earth. Engineers, detecting the danger to the public caused by the redirection, were able to initiate a timely self-destruct sequence for the rocket. On its face, the software engineers are faced with two failures in their ethical duties; (1) failure to ensure adequate testing of the software product (Association for Computing Machinery, 1997, p. 3.10), and (2) to understand the potential danger to the public that could be caused by the software failure (Association for Computing Machinery, 1997, p. 1.04).
After the Mariner 1 Spacecraft incident, simulations were able to detect that the omission of a single hyphen in coded computer instructions facilitated the transmission of incorrect guidance directions. If ethical guidelines were followed, including test cases beyond normal functionality, these same simulations could have been performed pre-flight and in the process detected the potential failure before the rocket had to be destroyed, costing $18 million and putting public safety at risk.
Not all software failure is related to ethical considerations. For example, when dust accumulates on electronic components, they may become overheated components are unable to carry out software instructions (Homes, 2011, p. 3). In another scenario, software becomes obsolescent and can no longer carry out required functions as technological platforms change. Cory Doctorow suggests that all the software he uses has “disappearing as its principle merit” (Doctorow, 2014). He goes on to explain that, in a world with rapidly evolving technologies, software is rapidly becoming out of date or ineffective, i.e. it fails to serve user requirements which continue to evolve with technology.
Association for Computing Machinery. (1997, November). The software engineering code of ethics and professional practice. Retrieved from ACM Committee on Professional Ethics: https://ethics.acm.org/code-of-ethics/software-engineering-code/
Byrne, D. (2019, October 14). A quick guide to emotional self-care for programmers. Retrieved from SimpleProgrammer.Com: https://simpleprogrammer.com/emotional-self-care-for-programmers/
Doctorow, C. (2014, January 14). Digital failures are inevitable, but we need them to be graceful . Retrieved from The Guardian, Software Section: https://www.theguardian.com/technology/2014/jan/16/digital-failures-software
Homes, B. (2011). Fundamentals of software testing. Retrieved from https://ebookcentral.proquest.com
Levin, A. (2019, July 26). Latest 737 Max fault that alarmed test pilots rooted in software. Retrieved from Bloomberg Technology: https://www.bloomberg.com/news/articles/2019-07-27/latest-737-max-fault-that-alarmed-test-pilots-rooted-in-software
Nindel-Edwards, J., & Steinke, G. (2008). Ethical issues in the software quality assurance function. Retrieved from Communications of the IIMA, Volume 8, Issue 1: http://scholarworks.lib.csusb.edu/cgi/viewcontent.cgi?article=1088&context=ciima
Raygun. (2018, May 29). 11 of the most costly software errors in history. Retrieved from Raygun Developer Tips: https://raygun.com/blog/costly-software-errors-history/
Tricentis. (2017). Software fail watch: 5th edition. Retrieved from Tricentis: https://www.tricentis.com/wp-content/uploads/2019/01/Software-Fails-Watch-5th-edition.pdf