Monday, September 15, 2014

Seven Testing Principles

There are several testing principles identified by several parties during past years. Seven are identified as most common among those.

1. Testing shows the presence of defects.
Testing can show the available defects in the software but cannot prove that there are no defects. Although the tests are concluded with no errors, cannot guarantee that the software is error free. Testing reduces the risks that can occur due to undiscovered errors.

2. Testing everything is not feasible
Testing all combinations of pre-conditions and inputs is not feasible. Simply exhaustive testing cannot be approached. Have to prioritize the scenarios and risk analysis should be focused.

3. To find defects early, start testing early
If the defects should be found as early as possible, testing should be started early.

4. Defect Clustering
Testing should be focused on early found defect density and should be compared with expected results.

5.  If the same tests are repeated, there will be no new defects found
Test cases should be regularly revised and updated. Because, software changes. If the same sets of test cases are run over and over it will find no defects. Have to be updated with new scenarios. (pesticide paradox)

6. Testing is done differently in different contexts
Testing is context dependent.

7. Absence of errors fallacy
Finding and fixing defects will not be helpful if the system is not usable by the users and if it doesn’t fit to user expectations.



Thursday, September 11, 2014

Software Testing and Quality

In today’s world, software has become an integral part of life. Hence quality has become something crucial in software since inferior software can cause really big problems even death.
Humans are prone to errors. Time pressure, complexity, technology… all these factors (and many more) expose us to mistakes which eventually distract us and produce bugs and eventually fail the product. Bugs (Fault, defect) itself will not cause failures but if executed will do. J Human beings are not the only cause for the failures of the products. Environmental conditions such as pollution, radiation etc. will be a cause by changing the H/W conditions.

Since both the causes and the outcome (Quality) is something that is unavoidable in a software, Testing also becomes something unavoidable. Testing is something that has to be maintained throughout the software development life cycle, from the requirement gathering to maintenance. Testing will give the stakeholders an idea about the proceedings of the product and a level of confidence. Learning is a kind of main objective of testing. Improving quality through preventing reoccurring defects is a main aspect of quality assurance.