Software testing can provide independent and objective information about the quality of software and the risk of its failure to users or sponsors.
WHAT is the Quality assurance (QA) in general?
By definition: Quality assurance (QA) is a way of preventing mistakes and defects in manufactured products and avoiding problems when delivering products or services to customers.
WHAT is QA (Quality assurance) in terms of computer science?
By definition: QA (Quality assurance) Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.
A study conducted more than a decade ago reports that software bugs cost the U.S. economy almost 60 billion USD annually. More than 35% of this cost could be avoided if better software testing was performed. Software testing can provide objective, independent information about the quality of software and risk of its failure to users or sponsors.
It is a common belief that the earlier software bugs are found, it is cheaper to fix it. If a problem in the requirements is found only post-release, then it would cost 10–100 times more to fix than if it had already been found during the requirements review phase.
- Planning: Make a test plan/strategy.
- Development: Test procedures, test cases, test datasets, and/or test scripts to use in testing software.
- Execution: QA team execute the software based on the plans and test documents then reports any errors found.
- Reporting: Once testing is completed, QA team generates metrics and makes final reports on their tests and whether or not the software tested is ready for release.
- Result analysis: Or defect analysis, is done by the development team usually along with the client, in order to decide what defects should be assigned, fixed, rejected or deferred to be dealt with later.
- Defect Retesting: Once a defect has been dealt with by the development team, it is retested by the testing team.
SOFTWARE TESTING APPROACHES
Two main approaches in the software testing are: white box and black box testing
In white-box testing, an internal perspective of the source code, as well as programming skills, are used to design test cases. The white-box verifies the internal structures of a program, as opposed to the functionality exposed to the end-user.
Black box testing
Black-box testing (also known as functional testing) treats the software as a “black box,” examining functionality without any knowledge of internal implementation, without seeing the source code. The testers are only aware of what the software is supposed to do, not how it does it.
One advantage of the black box technique is that no programming knowledge is required. Whatever biases the programmers may have had, the tester likely has a different set and may emphasize different areas of functionality. On the other hand, black-box testing has been said to be “like a walk in a dark labyrinth without a flashlight. Because they do not examine the source code, there are situations when a tester writes many test cases to check something that could have been tested by only one test case or leaves some parts of the program untested.
There’s also an approach between white box & black box testing
A black-box tester is unaware of the internal structure of the application to be tested, while a white-box tester has access to the internal structure of the application. A gray-box tester partially knows the internal structure, which includes access to the documentation of internal data structures as well as the algorithms used.
Gray-box testers require both high-level and detailed documents describing the application, which they collect in order to define test cases.
Gray-box testing is beneficial because it takes the straightforward technique of black-box testing and combines it with the code-targeted systems in white-box testing.