In March 2001, the director of the National Institute of Oncology of Panama (ION[1]) learned about the overexposure of 28 patients in radiotherapy. Investigations revealed that 28 patients received radiation overdoses, with errors of +10% to +105%. They were part of 56 patients treated between the end of 2000 and the beginning of 2021.
Later, by September 2005, 18 of the overexposed patients had died due to the incorrect radiation doses they received[2]
The oncologists needed to enter the data into the radiation treatment planning software correctly. As a result, the algorithm of this software doubled the treatment times. In addition, the software did not alert the physician that an incorrect data sequence had been entered[3].
Following this serious incident, the Latin American Association of Radiation Oncology implemented an accreditation of radiation therapy centers with a quality assurance program. In summary, a software had a defect and then calculated the wrong radiation times.
Why do we test?
From another perspective, one can prevent such an incident from occurring. Indeed, opportunities to evaluate (to some extent) this software before putting it into service might have highlighted the failed use cases. It is the domain of software testing. The evaluation opportunities I’m talking about here can be:
- Resources, such as additional testing time,
- Business-specific skills – in radiation oncology – to evaluate the software even further,
- Techniques or heuristics to check the most relevant use cases.
By definition, software testing is a way to evaluate software quality and reduce software failure risk during operation. However, in reality, testing goes beyond executing software to verify the results. Some common objectives of testing include:
- Prevent defects to protect clients.
- Verify the coverage of previously expressed requirements.
- Build confidence in the test object.
- Reduce the risk of failure.
- Support decision-making for the software under test.
- Comply with contractual, legal, or regulatory standards.
Thus, executing well-identified test cases would allow for identifying situations where the calculated radiation lead time is wrong.
Starting from software creation and throughout its life cycle, we should cover testing or verification activities in one way or another.
What is a software tester?
The software tester is the one who creates and conducts testing activities. These activities are specific. I mean test planning, analysis, design, implementation, execution, closure, monitoring, and control. They can be very complex. So “software tester” is a real job. For example, ensuring that the radiotherapy software we mentioned works ideally and as expected is a complicated task. Indeed, it requires thousands of test cases that are difficult (even impossible) to identify completely. For that reason, there are testing techniques[4] a professional in this field must master. A tester generally uses his know-how, techniques, or methods to find defects that customers will not see. So, we protect the customer. The tester helps to have an informed opinion about the quality of the software. Further, as an expert, it is also up to him to help his organization make fewer defects and thus develop a capability for better software.
Becoming a software tester
From my experience, to become a testing professional, there are three main requirements:
- A sufficient level of general knowledge: there is no specific list there. But you should understand the requirements for a feature or a complete software. You must be rigorous in your reasoning and critical thinking, especially when you suspect a failure. It is essential to put yourself in the customer’s shoes. You also have to be able to communicate without ambiguity. We develop knowledge throughout our life, so it is crucial to have the ability to adapt.
- Learning the software tester job: First, it is necessary to attend full training. It should cover the fundamentals of testing, the software development life cycles with the specific roles and expectations for testers, testing techniques, investigation and problem-solving techniques, test management, and tools. Then, I recommend an internship to gain practical experience. It is also an opportunity to understand the market expectations for software testers better.
Pass a recognized certification in the field: a certificate requested on the job market remains proof of competence, an element of recognition by other professionals.
Evolving as a software tester
I have been a developer, tester, test manager, and IT project manager before moving to other specific jobs. So naturally, your career evolution depends on your skills and the opportunities you manage to seize. Nevertheless, I often observe two types of growth:
- Tester moving towards other IT positions. For example, from test automation to RPA[5] or software development. From testing to test project management, then to IT projects globally. Or even a role specific to the development lifecycle: Product Owner.
- Tester learning the skills specific to the client business: for example, testing a health insurance software leads to becoming an insurance professional. It can be sub-domains of finance, robotics, automotive, aeronautics, and indeed Machine Learning or Data, for example.
A tester is a software quality specialist. The latter includes many other aspects, such as defect prevention. Today, IT projects have become complex. Therefore, ensuring software quality is something we do during its entire life cycle and thus remains essential. For that reason, there are several possibilities for software quality specialists. Moreover, “software tester” remains one of the most accessible jobs in IT. So, it is an entry point for a career in IT.
Contact us about becoming a Professional Tester[1] Instituto Oncológico Nacional, ION, Panama
[2] A summary of the situation : https://pubmed.ncbi.nlm.nih.gov/17199912/
[3] For more details, please see « identification of the computational error » here https://www.scielosp.org/article/rpsp/2006.v20n2-3/173-187/
[4] We have white-box, black-box and experience-based testing techniques.
[5] Robotic Process Automation
Leave a Reply