ITQA has taken birth to help millions of job seekers by providing them a quality education in the field of Software Testing, Quality Assurance and Database programming and Administration.
In the Test implementation and execution phase, test cases are written, Test data is created, optionally test harness is created and test scripts get generated for Test Automation. In this phase, Test Cases are also executed and the outcome is noted. If the outcome is not what expected, Defect is created and the Defect Life Cycle starts. If the outcome matches with the expected then the result is logged. During the Defect Life Cycle, Confirmation testing also get performed. Confirmation testing gets performed by the tester to confirm that the defect has actually been fixed.
One of the most important tasks of the Test Design phase is to come out with testable requirements out of business requirements. So requirement review is an important activity in this phase. How the requirements would also be tested get determined in this phase. Designing the test environment is also an important activity in this phase.
Any software activity starts with a planning phase. Similarly, Software testing also starts with a planning phase.
Test Planning activity determines the objective(s), Scope, Approach,Schedule,test resources(People and environment),Test Suspension and Resumption Criteria etc.
A good Test Plan template can look like the following.
1. Objective 2. Scope - In Scope - Out Of Scope 3. Test Schedule(Activities and their corresponding dates) 4. Test Approach(Techniques,Types of Testing, How the requirements would be validated etc) 5. Test Resources(Both people and environments) 5. Risks and Mitigation Plan 6. Suspension Criteria and Resumption Requirements
As the name suggests, the functional Testing is for ensuring that the system requirements and/or specifications have been implemented in the application. Functional testing uses the following techniques:
1. Requirements Based Testing 2. Regression Testing 3. Error – Handling Testing 4. Manual – support Testing 5. Intersystem Testing 6. Control Testing 7. Parallel Testing
Requirements Based Testing:
This technique is to ensure that the requirements have been properly incorporated in the application. Here the base is the Functional Specification Document or the Software Requirement Specification or the User Requirement Specification or simply the Use Case document(Different in different Organization). The testing involves validating the application's behaviour against the doument.
Regression Testing:
Software applications are subjected to change. There are many examples where new change in the system have introduced several defects and/or affected the old functionality. So the dependent functionality(s) should be tested whenever a change is introduced in the system. The regression test(s) should be automated to reduce time in testing the same scenarios multiple times.
Error-handling Testing:
This testing is to test the ability of the application to recognize the error conditions and to respond them correctly. Testers should identify sufficent number of negative scenarios to cover up all possible error conditions.
Manual – support Testing:
The functions performed by people while preparing the test data which would be used in the automated system is equally imporant as the testing of the actual application. Because if the functions performed are incoorect, then obviously the testing would be improper.
So this testing concentrates on testing the functions performed by people.
Intersystem Testing:
This testing concetrates on the integration aspect. The interconnection would be in terms of data coming from another system or data leaving this system to go into another system. This testing ensures that all these data and parameter movements are proper.
Control Testing:
This testing attributes to testing of integrity aspects of the system. For example, testing data validation is equally important as testing an application with respect to the requirement document. Similarly, testing Back up/Recovery, Audit trail and Documentation etc is equally important.
Parallel Testing:
In software industry versioning of the application is a very common phenomenon. Testing the consistency of the processing of the new application with respect to the previous version becomes important. This is what is done in this testing.
Testing of individual component is called as component testing.
Integration Testing:
Testing the components together to find out how they behave with each other. Here the focus is on the interface. There are several instances where the individual components would be working fine, but when all the components get integrated, they don't work. So integration testing has lot of importance.
System Testing:
Testing the functionality of a system with the intent of identifying defects is called as System Testing. Here the testing usually focuses either/or two documents. 1) Specifications 2) Use Cases. Some times non-functional testing also becomes part of system testing. This basically depends on the SLAs.
Acceptance Testing:
Here usually the customer gets involved. But sometimes, the customer suggests the organization to keep a team in stead of he being involved in the testing. Here the application is tested against the defined acceptance criteria in the contract
Regression Testing:
Software applications are subjected to change. There are many examples where new change in the system have introduced several defects and/or affected the old functionality. So the dependent functionality(s) should be tested whenever a change is introduced in the system. The regression test(s) should be automated to reduce time in testing the same scenarios multiple times.
Of late, Software Testing has become an essential part of any software project or product. Organizations have realized/been realizing its importance and have implemented/been implementing it in each and every application they are delivering.
Software Testing is essential because: - It identifies defects and so gives scope to quality being included in the application - It ensures the functional requirements have been properly met in the application - It ensures that the possible risks,known issues have been identified
The definition of Software Testing is, it's a process of executing an application with the intent of finding defects. Less defects lead to better customer satisfaction which in turn leads to better revenue for the organizartion.