An introduction to Software testing
What is Software testing ?
Software testing is the process of making sure that in this machine (powered by Softwares) dominated age all machines are behaving the exact way we want them to. In Verbiage term we can say that The process of verifying a system with the purpose of identifying any errors, gaps versus the actual requirement is called Software testing.
Necessity of Software testing
In my 5 years of career span, I have seen many products owner especially Indians who neglects the Software testing and thinks QA profile is good for nothing as according to them the person who builds can test also.But with changing industry standards software testing is now an integral part of the Software development life cycle.
Following are the points which help us to understand the necessity of Software testing
- Software testing assures that all the functional requirements have been implemented.
- It gives confidence about the quality of the final product.
- It gives assures that application has no errors in the code/
- Helps to verifies how the end-user can work with the application and ensures that the end product is easy to use.
- Testing ensures that data of the application is protected from unauthorized access and hacking.
- Testing confirms that the application is able to perform in all the required conditions and on all supported operating systems or web browsers correctly.
Principles of Software Testing
There are 7 principals of Software testing which are defined as the following
Principle 1: Testing shows the presence of defects:
Software Testing reduces the probability of undiscovered defects remaining in the software but even if no defects are found it is not a part of correctness.
Principle 2: Exhaustive Testing is Impossible:
To test entire possible combination, project execution time and cost will rise exponentially. Exhaustive Testing is the principle that is not possible instead we need an optional amount of testing based on the risk assessment of the application.
Principle 3: Early testing:
To find defects early, testing activities should be started as early as possible in the software development life cycle and shall be focused on defined objectives.
Principle 4: Defect clustering:
Small number of modules contains most of the defects detected.
Principle 5: Pesticide paradox:
Test cases need to be regularly reviewed and revised, adding new and different test cases will help in finding more defects.
Principle 6: Testing is context-dependent:
Testing is done differently in different contexts. Testing effort should be based on what is to be tested. The testing focus will depend on what is more important for that type of application.
Principle 7: Absence–of–errors fallacy:
If the system built is unusable and does not fulfill the user’s needs and expectations then finding and fixing defects does not help.
All of us has come across this term many time STLC. What is this STLC and how it is connected to our testing.!!!STLC means Software testing life cycle. It is a process of different steps to be executed in a definite sequence to ensure that the quality goals have been met.
Stages of STLC
1. Requirement Gathering Stage: As per the testing point of view, we need to identify testable requirements. Requirement Gathering Activities
- QA team interact with stakeholders(Client, Business Analyst, Technical Lead etc.) to understand the requirement in detail.
- Identify types of tests to be performed.
- Gather details about testing priorities and focus.
- Identify test environment details to be carried out
2. Test Planning and Control: QA Managers determine effort and cost estimates of the project and would create and finalise a test plan.Test Planning Activities:
- Type of Testing: System or Functional, UAT, Performance
- Scope of testing – Features that will be tested, Features out of scope
- Test Environment: Hardware, Software needed for the Test Environment, Test Data
- Test Tools Selections and Resources needed for testing
- Schedule: The dates when each activity will start and complete and dependencies if any
- Review & Sign-off of test artefacts from Stakeholders – PM, BA, Customer, Development Lead etc.
- Number of Test Cycles planned
- Risks – Software Risks, Project risks (Test Environment not ready, unable to procure a license, resource quits) and Prioritization of tests based on risk during a time crunch
- What to do when deliverables to Testing are delayed
- Test Control: This is to address what to do when actual progress does not match with the estimates when things go wrong etc.
3. Test Analysis and Design: This STLC stage defines “WHAT” to be tested. We basically identify the test conditions through the requirements document, product risks, and other test bases. The test condition should be traceable back to the requirement.Test Analysis and Design Activities
- Requirements document, Functional Spec, Design Documents etc. are reviewed and understood in detail and tests are designed.
- Levels and depth of testing
- Designing and prioritizing test cases
- Designing the Test Environment
- Determining the Test data
4. Test Implementation and Execution: Creation of test cases and execution is main agenda of this stage.Test Implementation and Execution Activities:
- Test Conditions are transformed into test cases .
- Developing and prioritizing test cases.
- Executing test cases (either manually or by using test execution tools) according to the planned sequence .
- Logging the outcome of test execution and recording the identities and versions of the software under test .
- Comparing actual results with expected results
5. Evaluating exit criteria and reporting: Evaluating exit criteria and reporting Activities
- Checking test logs against the exit criteria specified in test planning .
- Assessing if more tests are needed or if the exit criteria specified should be changed.
- Writing a test summary report for stakeholders.
6. Test Closure : Final stage of STLC Test Closure Activities
- Specified objective or target is achieved by the team .
- Maintenance and required changes are needed to be done .
- Lessons learned when testing is completed and documented.
Please tell us about your Software testing knowledge before-and-after reading. I bet you’ll have something to say!!!
Happy Learning 🙂