Hello, in this article, I will touch upon some general information about the testing field through certain topics. To summarize the topics we will cover: "what is testing, historical examples of software errors, responsibilities, characteristics, and skills of test engineers." I wish you enjoyable reading in advance :)
What is Testing?
Testing is one of the steps in the software life cycle. When we look at the dictionary meaning of testing, it is defined as "an examination to measure a person's or a group's natural or acquired abilities, knowledge, and skills." (TDK). When we focus on testing in software, we can say that it is a process that verifies whether the product meets the relevant business requirements and is suitable for its purpose.
Although it seems to be an important part of the process according to its definitions, the perspective in the industry is often not like this, and many test engineers encounter phrases like "test it quickly, two hours are enough for testing" in their professional life. Contrary to popular belief, testing is not such a short and easy task. Our aim when testing is to minimize the risks that may arise when the product meets the user or goes live. Because when a product that does not work correctly goes live, it can result in consequences such as financial loss, waste of time, and reputation damage for companies. Let's talk about a few costly errors from history...
Air Traffic Control System Failure in the UK
Due to a software-related problem in the air traffic system in the UK, the system was disabled on August 28, 2023, and more than 2000 flights had to be canceled or postponed. It is said that the error occurred in the flight data processing system. As a result of the error, while all flights nationwide were canceled, it also affected all passengers who were to transfer through the UK globally.
Toyota Prius
In 2014, Toyota recalled its Prius Hybrid model vehicle due to a software error. In their statement mentioning that the software error could damage the transistors in the vehicle, they stated that as a result, warning lights could malfunction, driving power could decrease, and the vehicle could be forced to stop by causing power loss while driving.
Mars Climate Orbiter
The Mars Orbiter launched in 1997 was lost in 1999. It was stated that the accident was caused by a conversion error from English units to the metric system in the software. While the NASA team used English units (inches, feet) in their calculations, the other team involved in the project used the metric (mm, cm, m) system. It is thought that the satellite disappeared in Mars' atmosphere while trying to be fixed in orbit due to approaching Mars more than necessary.
Ariane 5 Flight 501
In 1996, the working code of the Ariane 4 rocket was reused in Ariane 5, but the rocket exploded 40 seconds after launch. It was understood that the reason for the explosion was a software error made during the development of Ariane 4. The error occurred while converting a 64-bit floating-point number to a 16-bit integer. The engine of Ariane 5, which was faster than the engine of Ariane 4, created larger numbers and caused a numerical overflow. This caused the support computer of Flight 501 to crash, and the crashed computer resulted in the rocket's main processor overloading the engines with too much power. The explosion of Ariane 5 became one of the most expensive software errors in history.
Patriot Missile Battery
During the Gulf War on February 25, 1991, a Scud missile fired by Iraq could not be intercepted, and as a result of the Scud missile hitting military barracks, it caused numerous injuries and deaths. After the investigations, it was revealed that due to a rounding error in the system software, the missile could not be destroyed.
The examples mentioned above provide striking evidence of the critical role of testing. However, even though tests are conducted under conditions close to real environments, it is impossible to test a product to be 100% error-free. Undiscovered errors can be found in every product. At this point, the most important task of us test engineers is to detect these hidden dangers as early as possible and ensure the follow-up of these errors. Correcting errors detected at early stages not only saves time and cost for companies but also helps prevent fatal errors. Therefore, software testing is of critical importance for the security and success of the product.
But who are these test engineers, and what do they do? Let's briefly touch upon.
Responsibilities and Processes of Test Engineers Test engineer:
• Monitors all processes from planning, designing, performing, to reporting of tests.
• Reads product-related documents, attends meetings to understand business requirements. • Creates test scenarios based on the information obtained.
• Analyzes the expected results according to the test scenarios.
• Checks the functional requirements of the product when it is opened to testing, in the light of business requirements.
• Tries to test the product not only with positive scenarios but also with the most negative scenarios.
• Ensures the reporting of errors detected during the test processes.
• Follows up on reported errors.
• Advances test processes after error corrections.
• Ensures that the non-functional requirements of the product are checked after ensuring that the functional requirements are met.
• Aims to produce a user-friendly and quality product.
• Creates automation test processes according to the needs of the team. Characteristics and Skills of a Good Test Engineer
• They are curious and skeptical individuals.
• They pay attention to details.
• They have developed communication skills.
• They establish constructive communication.
• They have a high persuasion ability.
• They have logical thinking and can predict the result from small pieces.
• They have high focus and examination skills.
• They do not compromise on quality.
• They have developed empathy skills and can look at events like a user.
• They have developed planning skills.
• They never promise 100% coverage.
• They can identify and manage risks.
• They focus on the negative during testing to target detailed testing.