Quality is defined as a degree of excellence; a distinctive attribute or characteristic of a product or process or service or program. It largely depends on the amount of testing it undergoes. One of principal advantages of testing is the credibility it provides to a product; hence Quality assurance is an important part of most of the industries. When it comes to Software industry, what does testing or quality assurance mean? In simple terms, Testing is a process of finding defect(s) (deviation from expected behavior) in a software application, so as to define the application functions according to the accepted requirements.
Much detailed look into software testing will give us more insights.
A software product is designed and developed according to the requirements of the end user. Testing as a process, helps to identify if the product is usable, meets the requirements, achieves the expected results. This involves various checks to find, if the product responds correctly to all kinds of acceptable inputs, performs its functions within an acceptable time, etc., Testing can also check if the product can be installed and run in various combinations of intended environments. When any of such a thing is missed, it is called a defect/bug/error.
To proceed further, it is very important to know the difference of these.
DEFECT: A defect commonly refers to several issues/unexpected behaviors/problems associated with functional or performance aspects of a software.
ERROR: An unexpected outcome of an action is defined an error. When a product functions not as expected, it leads to error.
BUG: A bug is an error found in the development environment before the product is released. It is a malfunction of product. The process of fixing the bug is hence termed debugging.
FAILURE: A failure is also the inability of a software or product to perform its required functions. This is a defect, which is not identified in the development environment and slips to the end customer.
Software testing can be broadly classified in to 2 categories,
- Non- functional
Functional tests are performed to check if the application functions as expected. This tests if the application works against the set of requirements. The various types of functional testing, includes but not limited to
- Unit testing
- Integration testing
- System Testing
- Acceptance Testing
Non-functional tests are performed to done to verify the behavior of the system requirements like Performance, Usability etc. There are various types of non-functional testing, that includes but not limited to
- Performance testing
- Load Testing
- Stress testing
- Volume testing
- Security testing
- Installation testing
These tests can be done manually or can be automated. Manual testing is done by a designated quality assurance engineer, by manually clicking and entering data through the application and interacting with the software and APIs with the appropriate tools and technologies. Automated tests, are performed by a tool that executes an automated test script, which mimics the actions performed in a manual test.