In my Software Testing series, I will try to discuss why testing is necessary, how these tests are being performed, how testing methodologies work and why is software testing important.
What is Software Testing?
Software testing is an investigation conducted in order to provide stakeholders with information about the quality of the software product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and comprehend the risks of software implementation. Test techniques include the process of executing a program or application with the intent of finding software bugs (errors or other defects), and verifying that the software product is fit for use.
Software Testing and Importance
The software is an inseparable part of our daily life (mobile phones, televisions, automobiles, etc.). We also encounter problems when using them. There are many software that contains errors and do not meet our expectations. Even these errors sometimes reach such a dimension. Therefore, the correct and effective implementation of the software testing process is very important. I would like to share with you the story of the Threac-25 software error, which is one of the biggest software errors that cannot be forgotten, to reinforce the issue.
In 1986, Ray Cox went to the clinic for radiation therapy on his shoulder. The technician accidentally presses the “x” key, which causes the x-ray beam to be sent. He immediately realises the error by remembering that he must send an electron beam instead of the x-ray, erases “x”, prints “e” instead, and starts the machine by pressing “enter”. The computer emits a “beam-ready” signal and the technician presses “b”. The computer displays an error message. The message says the beam is not transmitted. The technician repeats the process by closing the error message and sends Ray a therapeutic ray once again. The error message reappears. At this very moment, Ray feels the pain in his back and realises that it is very different from his normal treatment. At the end of the third attempt, he wants the technician to stop the operation and leave the machine.
As a matter of fact, each time Ray was exposed, the amount of ray applied was very high. The beam from the machine was an explosion of 25 000 rads — a maximum adjustment dose of 25 million electron volts and more than 125 times the normal. Then Ray’s health deteriorated, and four months later he died of major complications.
Such errors can result in loss of money, loss of time, or loss of user’s confidence due to the software being used, and worst of all, as in the above example, it can result in loss of life. To avoid such situations, we must test our software and launch it with minimum errors.
Why Software Testing is Important?
The person makes a mistake in the software process and this causes a defect in the wrong program. The flaw also causes the software not to do what it needs to do or to do something different. This causes a malfunction in the system.
If the software test is carried out carefully, it prevents errors from turning into faults. In addition, the software test determines the quality of the software in terms of functional and non-functional requirements. The number and significance of errors found through software testing are also used to determine trust in the software. A well-designed and successful software test can reduce the perception of inaccurate risky software.
When the errors found in the tests are corrected, there is a feeling that it is an even better quality software. However, the software process can be improved with lessons learned during the test process and the development process can be handled by considering the errors. Software testing for such reasons; software development process as part of quality assurance activities.
The common idea is that the test is merely the provision of tests. Test run is an important part of the test, but not all test work is run. There are also works related to the test performed before and after the tests are run.
• Planning and Control,
• Test Conditions,
• Preparing and Running Test Scenarios,
• Checking Results,
• Evaluation of Output Criteria,
• Reporting on Test Process and Tested System,
• Completing the Test
In addition, requirements, analysis documents, source code review and static analysis, such as operations are part of this test.
The test should be considered and implemented from the very beginning of the software development process. In this way, it is prevented that faults are turned into faults and even occur…
What is manual testing?
Manual testing means testing of an application manually by a human. A Quality Assurance Specialist (tester) performing manual testing ensures that an application is working properly by following conditions written in test cases. The tester evaluates the design, functionality, and performance of the application by clicking through various elements. Manual testing is helpful when the automated testing is not possible.
What is automated testing?
In automated testing, there are pre-scripted tests which run automatically. The tests are run to compare the actual results with the expected results. The automated tests help to determine whether the application performs as expected or it does not. Automated tests come handy while performing repetitive and regression tests to ensure that an application performs correctly after new changes are implemented. Automated tests run with the help of tools, scripts, and software to perform pre-defined actions written in the test cases.
Difference between Manual testing and Automated testing
8 Key Software Testing Methods 
How you test software is just as important as what you test. And when it comes to software testing methods, there are many different approaches that you can take.
1Black box testing is done without knowing the contents of the software. You treat the software as though it’s a black box — and you can’t see what’s inside. The tester might know what the software should do, but not how it’s done.
2White box testing is done with knowledge of how the software works. It’s also known as clear box, glass box, transparent box, and structural testing. You know how the software should work — and you test to verify that it does work.
3Scripted testing follows the steps outlined by a tester. This testing method is well documented, including a test case and clear test steps. Tests are often scripted if they’re used to fulfill a requirement. This includes your functional and non-functional tests.
4Exploratory testing lets the tester check the software based on their instinct. This testing method is great for finding hidden risks or errors that ordinary scripted testing might miss.
5Manual testing is done by testers. A tester might have a test script or test steps to go through. Or the tester might do exploratory testing manually.
6Automated testing is done by scripts or tools. A tester may set up the tool or script, but the test runs through its steps automatically.
7Waterfall testing happens after the development phase is complete. Testing is a phase on its own. Once a test plan is set in Waterfall testing, it typically doesn’t change.
8Agile testing happens continuously as developers build the software. And Agile tests are typically done in sprints. Agile test plans can evolve as the software itself evolves.
Highlights of Software Testing
Inorder to implement an effective testing process, I would like to conclude with some important points:
- Quality: Software tests are performed to provide a quality application to the customer. Quality is in essence a relative concept. Everything that makes the majority of users happy to use the application is in quality.
- Approach: Applications can be tested in many different ways. It is very important that we determine the type of test before the test. In some cases a planned test is required, in other cases we may use randomly thought-out ad-hoc tests. Similarly, we test mobile apps unlike web apps. Our approach may vary depending on the application, time and project we are testing.
- Scope: The more we test the features of the application, the more robust and desired the application. At this point, it is essential to determine the scope targets of the tests together with the reasons.
- Error Handling: The main output of the test activity is generally viewed as the presentation of a report containing errors. But the main thing is to ensure that the errors found are handled by the related parties. What is the meaning of a detected but unresolved error?
- Simplicity: Providing the application that the user can work in the simplest way is also included in the software test.
- Collaboration: Although software testing is generally viewed as the last activity, it is actually a collaborative process. We can see this in the preparation of requirements, the coding phase and the acceptance of users. The error that cannot be caught in one step will cost more in the next step. Therefore, it is very valuable to understand the need, function or reason of the design. In this, communicating with stakeholders involved in the relevant parts of the process can make it easier to understand the part. Facilitates testing of the relevant stage.
- Documentation: Plays a very important role in software testing. Documentation of test scenarios, creation of traceability matrix, creation of checklists, taking screenshots and recording videos… The list may go on and on. This type of document is very useful in repeating the test or in eliminating errors. Of course, they should be careful enough. Adequate amount of documents differs from project to project, from customer to customer and from application to application.
- Time Management: The cost of eliminating errors found in the live environment will naturally be higher than the removal of problems found in test or development environments. The sooner we catch up with the errors and get them fixed, the more successful we can think. Obviously, at this point, we will have a difficulty in time management. I think it will be easier to manage the time of the total test activity if we manage the times of the following tasks well.
◦ Preparation of test data,
◦ Monitoring the status of test scenarios,
◦ Monitoring of errors,
◦ Resolving the errors,
◦ Production and conditioning of regression tests
- Measurement: As in many activities, measurement is very important in test activity. The testing process needs to be continuously improved. It’s good to have him in a corner of our mind. It is fortunate that we heal something we have not measured.
In the next software testing article, we’ll discuss some of the details of software testing procedures and testing types. Thanks for reading!