Quality Assurance (QA) makes sure obstacles such as Defect, Fault and Failure are eliminated in a controlled manner. All three are somewhat negative towards a positive goal. Remember that equal positivity against a specific negativity result in neutral. To out perform and to glitter apart QA team needs to work systematically.
Defect vs Fault vs Failure
But how those differ? I’m just taking “dining” to explain without any filthy things ;).
Defect is when something is not working the way we expected.
“Defect is, when you expecting your mate to have dinner with you but he/she is not.”
Fault is when something is not working correctly.
“Fault is when your mate having dinner with someone else”
Failure is when a feature is not working nor available at all.
“Failure is when you both not dining together at all.”
Responsibility of software testing team/ QA is to eliminate these negativities from the application before the delivery. Would it be possible if the QA is begin only after the coding is done. No, Software Quality Assurance begins early in the software development life cycle(SDLC) from system specification or defining period itself.
QA Factors
The Software Testing Team comprises of talented people those who have thorough understanding of software development process. There are many factors needs to be considered and work hard to achieve by the QA to ensure Software Quality.
Some are,
[table id=2 /]
Testing team applies their own best practices to overcome obstacles and reach out for contents of the table above.
Usability Testing
- Ease of use
- Ease of learn
- Satisfactory
See more about user experience by Jared Spool team: here
Performance Testing
Typically inputs for performance testing comes from the clients or the network person. Like “Hey System is slow”!
Intent of performance testing is to collect statistics such as loading time, report generation time , etc.
- Load Testin
- Stress Testing
Security Testing
Checking the robustness of the system. Or hacker proof of the system.
- Vulnerability Testing – Scanners like Nessus, OpenVas, Burp Suite – Identifying loops.
- Penetration Testing – Ethical/White Hat Hacking – exploiting vulnerabilities.
Regression Testing
Testing the project after certain changes done to the code. Changes may be because of,
- Requirements Changing
- Bug Fixing
- Adding Features
Intention of regression testing is the change to the code did not accidentally break anything that surround the functionality.
Sanity testing is a subset of regression testing, happens when available time for testing is limited or not enough.
Exploratory Testing
Randomly testing few functionalities of the product/task/document is known as Exploratory Testing. This is happened without following any structured testing documentations.
- Adhoc Testing
- Monkey Testing
User Acceptance Testing(UAT)
Makes sure user requirements are met after product is ready to be deployed.
- Alpha Testing – If UAT happens in QA environment
- Beta Testing – If UAT happens in Production environment.
Smoke Testing
Testing for most importance functions are working correctly.
Bug isn’t big until it’s bubbled!
A defect is aka Error or Bug.
Example for Common Defects
- IT improperly interprets requirements.
- Users specified wrong requirements.
- Requirements are incorrectly recorded.
- Errors in program coding
- Data entry errors
- Testing Errors
A fault is when you want to place food details to the “dining” table of backend database but those content goes to the “room” table of the database.
A failure is when there is not such “dining” feature available on the system being developed but available on the System Requirement Specification.