What is software testing?
Software testing is a set of actions and activities that can be planned out and executed systematically to garner information about the quality of a software product. It can be summarized as a process of verifying and validating a computer program, application or product complies with requirements used to create the program, works as expected, can be executed and hold to it’s required characteristics, and finally and most importantly, it satisfies the needs of the customer.
When does testing happen?
Testing can occur throughout the development process, but is traditionally carried out after the specifications and coding is finished. Agile programming is the only type that tests throughout the entire software development process. Software testing needs to look at both low-level tests of small segments of the code and high-level large system wide tests that ensure the customer’s requirements are met.
Why is testing software important?
Testing software is important because it offers a high probability of discovering errors. It also demonstrates that the SRS (Software Requirement Specifications) document has been followed precisely in the creation of the software product. Without testing, there is no way to ensure that the user will be able to use the product and be satisfied with the outcome. If the customer is not satisfied with the product, the consequences can be dire for the development team and it’s company. At the least reputation will be affected, at the worst jobs and lots of potential income will be lost. All software must be extensively tested prior to release to the customer/user.
What principles are core to software testing?
Principles are important and plentiful in software testing. One of the principles is that tests should be traceable to customer requirements. Additionally, tests should be planned long before testing begins. Once the design model is in place, planning for testing can commence. Keep in mind that the Pareto principle applies to software testing, meaning that 80% of all errors discovered during testing will be attributed to 20% of the system components. Also testing should be start “in the small” and move towards “in the large.”
What is the order testing occurs in?
In the beginning, testing focuses on the small individual components; towards the end, testing narrows in on errors that effect the entire system through larger integrated systems. Remember that exhaustive testing is not possible. The amount of path options in any medium size program are so many that it is not possible to test them all in any reasonable amount of time. Finally, to be most effective, testing should be conducted by an independent third party. The creators of the software are not the best suited to test the software because they won’t put it through the same sort of rigorous testing activity as a third party who doesn’t understand the software.
What are the verification & validation process of software testing?
Verification and validation are whole life-cycle processes, meaning that they occur throughout the lifetime of the software product. Verification is a static process of verifying code, documents, design and the program at large. No code execution is carried out in the verification process. Validation occurs dynamically and involves testing of the actual product and running it through the paces. Validation always involves testing and running the code. Verification is done by humans who check the code, documentation and program, whereas validation is completed by the computer.
What’s the difference between black box testing and white box testing?
Black box testing does not consider the structure of the program. Test cases are decided by the requirements or specifications and the internal details of the program or modules are not chosen for test cases. This type of testing involves only observation of output for the different input. It’s important because it gives the engineer a set of input conditions that can fully exercise the program capability. White box testing goes hand in hand with black box testing, and to do the test the group must have complete knowledge of the internal composition of the program. This testing is usually applied to smaller parts of the program, like subroutines. The analysis that comes out of this process can be used to determine how many test cases will be required.
What is integration testing?
Integration testing is low-level, modular and piece-by-piece testing that is always completed before system testing which is high-level, whole program testing. System testing is focused on finding incompatibilities between subsystems and components. Integration testing is a systematic approach to building a program structure while discovering bugs. The goal of this form of testing is to see if the modules of the program can be integrated successfully.
What are code reviews?
Code reviews are the process of going over code after it has been developed in the hopes of discovering any errors in the program. During this process, common vulnerabilities such as memory leaks, endless loops, and race conditions are removed or fixed.
What are some of the errors caught by code reviews?
Some of the errors caught by code reviews are: uncontrolled string formats, which can be used to crash a program; race conditions, which are when a piece of code that is supposed to fire sequentially in a specific order but does not; memory leaks, sucking up the resources of the computer in unnecessary ways.
Have your own question about software testing? Fill out our contact form and a software expert will get back to you soon.