Software Quality Assurance involves the entire software development process, making sure that any agreed upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to prevention.
Software Testing involves operation of a system or application under controlled condition and evaluating the results. The conditions include both the normal and abnormal conditions. It is oriented to detection.
Objectives of Testing
Software testing is essential because of:
QA ensures that all parties concerned with the project adhere to the process and procedures, standards and templates and test readiness reviews. First the process and procedure are reviewed and verified. Then a plan will be formulated to document, implement and monitor these process and procedures.Process and procedures will be reviewed and updated periodically by QA team to ensure they are current and relevant.
Different Levels of Testing
Each level of testing involves either Black Box or White Box Testing. Black Box Testing is based on requirements and functionalities. This is testing against the specification and will discover faults of omission, indicating that part of the specification has not been implemented. White Box Testing is based on the internal logic of an application’s code. This is testing against the implementation and will discover faults of commission,indicating that part of the implementation is faulty.
This is a procedure used to validate that a particular module of source code is working properly. It is the most basic level of software testing and is done by the programmers.
Incremental Integration Testing
This involves continuous testing of an application as new functionalities are being added up. It requires that various aspects of an application’s functionality are independent enough to work separately before all parts of a program are completed. To be done by programmers.
This is the phase of software testing in which individual software modules are combined and tested as a group. Functional Testing This is done to test that the developed software functions properly based on the specifications and conditions provided. This is done by the testers.
This is based on overall requirements specifications, covers all combined parts of a system.
End – To – End Testing
This involves testing of a complete application environment in a situation that mimics real world use, such as interacting with a database, using network communications or interacting with other hardware, applications or systems id required.
Sanity and Smoke Testing
Smoke testing is a non-exhaustive s/w testing, ascertaining that the most crucial functions of a program work but not bothering with finer details. Sanity testing is a cursory testing. It normally includes a set of core tests of basic GUI functionality to demonstrate connectivity to the database,application servers, printers, etc.
This is the selective retesting of an s/w system that has been modified to ensure that no other previously working functions have failed as a result of the reparations and that newly added features have not created problems with previous versions of the s/w. it is a quality control measure to ensure that the newly modified code still complies with its specified requirements and that unmodified code has not been affected by the maintenance activity.
This is the final testing based on specifications of the end-user or customer, or based on use by end-users/ customers over some limited period of time.
Load, Performance and Stress Testing
Load Testing is the process of exercising the system under test by feeding it with largest task it can operate with. It involves constantly increasing the load on a system via automated tools to access the behavior of the system. Performance Testing involves the same process of using heavy loads on the system to check for bottlenecks and establish a baseline for the system. This involves careful, controlled measurement and analysis. Stress (Recovery) Testing tries to break the system under test by overwhelming its resources or by taking resources away from it. The main purpose behind this is to make sure that the system fails and recovers gracefully.
This is testing for the user-friendliness of the product. It is a means for measuring how well people can use some software for its intended purpose.
Install / Uninstall Testing
This is the testing of full, partial or upgrades install/uninstall processes.These tests are a set of scripts that automatically download all necessary packages and install them.
This is testing how well the system protects against unauthorized internal or external access, willful damage, etc.
Compatibility Testing These are tests to be carried out to validate proper inter-working of interconnecting network facilities and equipment.
Alpha testing is the software prototype stage when the software is first able to run. It will not have all the intended functionality, but it will have core functions and will be able to accept inputs and generate outputs. An alpha test usually takes place in the developer’s office on a separate system.
This is the last stage of testing, and is the new or revised software test performed by users at their facilities under normal operating conditions.
This involves three major steps a) Create Test Strategy b) Create test Plans and Test cases and c) Perform Test.
Create Test Strategy involves gathering of all requirements and specifications for that particular software to determine the goals, scope, extent and criteria of the test plans and processes that are going to be implemented to test that particular product. This will include determining the standards that are to be followed, accessing the time required for each phase of testing etc.
Create Test Plans and Test Cases involves collecting the test strategy, functional requirements and specification to build proper test cases in order to properly test that particular software.
Perform Test involves getting the test cases and test plans, executing them to test the particular software, report bugs and file errors and changes in well documented format.