In this Digital world all the businesses have online presence. But not all of them are able to achieve success even though they are providing the same services, goods or products in comparison to those businesses who made it big. The main reason behind this is the website of the business, company or organization. Time and again it is proved that the websites which are user friendly and without any errors have benefited a lot and has been successful in achieving a lot of potential clients. So in order to achieve success one needs a website which is flawless.
So testing has become a compulsion for all the websites as testers can find out the bugs and problems in the website which the developers may have missed due to heavy workload and limited timeframe. Almost all the organizations have understood the importance of testing and have hired testers to perform manual testing.
What is Manual Testing?
Manual testing is the process of manually testing software for defects. It requires a tester to play the role of an end user whereby they use most of the application’s features to ensure correct behavior.
According to ANSI/IEEE 1059 standard, Testing can be defined as “A process of analyzing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item”.
Who does testing?
- Software Developer
- Software Tester
- Project Leader/Manager
- End User
Objectives of software testing
Testing is the process of executing a program with the intent of finding errors. Each attitude is translated into a hard objective you can include in your test planning documentation.
- To ensure that the solution meets the business and user requirements
- To catch errors that can be bugs or defects
- To determining user acceptability
- To ensuring that a system is ready for use
- To gaining confidence that it works
- Creating use cases can also be considered as major objective of software testing
Testing Life Cycle
STLC stands for Software Testing Life Cycle. STLC is a sequence of different activities performed by the testing team to ensure the quality of the software or the product.
STLC starts as soon as requirements are defined or SRD (Software Requirement Document) is shared by End user.
STLC provides a step-by-step process to ensure quality software.
The basic requirements in software testing life cycle are to deal with software testing methodologies like Manual, Automated and Performance testing.
Let’s see each phase of STLC in details:
- Requirements Analysis
- Test Planning
- Test Analysis
- Test Design
- Construction and verification
- Testing Cycles
- Final Testing
1. Requirements Analysis
In this phase Software testers analyze the customer requirements and work with developers during the design phase to see which requirements are testable and how they are going to test those requirements.
It is very important to start testing activities from the requirements phase itself because the cost of fixing defect is very less. if it is found in requirement phase rather than in future phases.
2. Test Planning
In this phase all the planning about testing is done like what needs to be tested like
- How the testing will be done
- Test strategy to be followed
- What will be the test environment (Which environment we had test like: System and applications , Test data , Database server , Front end running environment , Browser etc…)
- What test methodologies will be followed (like Black box, white box, Grey box)
- Hardware and software availability, Resources, risks etc.
- A high level Test plan document is created which includes all the planning inputs mentioned above.
3. Test Analysis
In this phase we need to figure out what testing needs to be(testing) carried out in each SDLC phase.
- Automation activities are also decided in this phase.
- Non functional testing areas (Stress and performance testing) are also analyzed.
4. Test Design
In this phase various black-box and white-box test design techniques are used to design the test cases for testing.
Automation scripts also needs to written in this phase.
Test cases: A test case is also defined as a sequence of steps to test the correct behaviour of a functionality/feature of an application.
5. Test Construction and Verification
In this stage we need to done all test activities. Complete the all test plans and test cases.
In this stage need to done stress, performance test case plans.
6. Testing Cycles: Test Execution and Bug Reporting
In this stage we need to done test cycles until test cases are executed without errors. And our test plans is reached.
- Run test cases
- Report bugs
- Revise test case
- Add new test cases Add new (if needed)
- Bug fixing
7. Final Testing
In this phase the final testing is done for functional testing and non functional testing.
- The software is also verified in the production kind of environment.
- Final test execution reports and documents are prepared in this phase.
Software development life cycle [SDLC] models there are defined phases like requirement gathering and analysis, design, coding or implementation, testing and deployment.
A. Functional Testing
Functional testing is to testing the functionality of the software application under test.
Also check whether software application is meeting the user expectations and expected output.
B. Non Functional Testing
Non-functional testing used for load testing , performance testing, stress testing etc…
Non-functional testing is a type of testing to check non-functional aspects (performance, usability, reliability, etc) of a software application.
Various levels of functional Testing
1. Unit Testing
Unit testing is a method by which individual units of source code are tested.(particular one module test that is called unit testing).
Determine if they are fit for use. A unit is the smallest testable part of an application like functions/procedures, classes, interfaces.
Example of unit testing :- Test only login module.
2. Integration testing
Integration testing tests integration or interfaces between components, interactions to different parts of the system such as an operating system, file system and hardware or interfaces between systems.
Example of Integration testing :- (Testing more than one module like: sign up and login page testing in combine. We have to check that register email id should be allowed in login page)
a. Big bang integration testing
In Big Bang integration testing all components or modules are integrated simultaneously, after which everything is tested as a whole.
b. Top down
Testing takes place from top to bottom, following the control flow or architectural structure A-B-D-E
c. Bottom up
Testing takes place from the bottom of the control flow upwards. Components or system are substituted by drivers. E-D-B-A
d. Functional incremental
Integration and testing takes place on the basis of the functions and in the functional specification. A-D-G-C-E
3. Component Integration Testing [CIT]
To test the interactions between software components.
The software components themselves may be specified at different time by different specification groups, yet the integration of all of pieces must work together.
4. System Integration Testing [SIT]
To tests the interactions between different systems. It verifies the proper execution of Software components an proper interfacing between components within the solution.
5. Sanity Testing
After receiving a Software build with the minor issues fixes in code or functionality, Sanity testing is carry out to check whether the bugs reported in previous build are fixed.
The main aim of Sanity testing to check the planned functionality is working as expected. Instead of doing whole regression testing the Sanity testing is perform.
Example of sanity testing :- In login page username should not be below than six characters but as username accepts the less than six characters it is the bug. It against the requirement.
6. Smoke Testing
Smoke testing covers most of the major functions of the software but none of them in depth.
Example of smoke testing :- user is able to login with valid login credentials or not. All link clicking working fine or not. That will cover in major functionality
7. Regression testing
Regression testing is a category of software testing performed to make sure the change in the code has not disturbed the current features & functions of the tested application.
Example of regression testing :- Login screen submit button not working that was fixed by developer in that duration other features working as it is.
8. Acceptance Testing
Main purpose of acceptance testing is software system has met the requirement specification.
The goal of acceptance testing is to establish confidence in the system. Acceptance testing is most often focused on a validation type testing.
a. Alpha Testing
This test takes place at the developer’s site. Alpha testing is final testing before the software is released to the general public. It has two phases
In the first phase of alpha testing, the software is tested by in-house developers.
In the second phase of alpha testing, the software is handed over to the software QA staff, for additional testing in an environment that is similar to the intended use.
b. Beta Testing
It is also known as field testing. It takes place at customer’s site.
It sends the system to users who install it and use it under real-world working conditions.
Various levels of Non-functional Testing
1. Load Testing
Load testing is performed to determine a system’s behaviour under both normal and at peak conditions.
Load testing involves simulating real-life user load for the target application. It helps you determine how your application behaves when multiple users hits it simultaneously.
Example of load testing :- If the number of users are increased then how much CPU, memory will be consumed, what is the network and bandwidth response time.
2. Performance Testing
Performance testing is used to check the performance of system to measure the responsiveness, speed, scalability, stability under variety of load condition.
It is a type of testing to ensure software applications will perform well under their expected workload.
The goal of performance testing is not only find the bugs in the system but also eliminate the performance bottlenecks from the system.
3. Stress Testing
Stress testing is used to test the stability & reliability of the system.
stress testing is to analyze the behaviour of the system after failure. Displaying appropriate error message when the system is under stress.
The main purpose of stress testing is to make sure that the system recovers after failure which is called as recoverability.
4. Usability testing
It tests that whether the application or the product built is user-friendly or not.
Usability testing also reveals whether users feel comfortable with your application or Web site according to different parameters – the flow, navigation and layout.
5. Security testing
Security testing is basically a type of software testing that’s done to check whether the application or the product is secured or not.
It checks to see if the application is vulnerable to attacks, if anyone hack the system or login to the application without any authorization.
Sample Test examples for Security Testing
- Password should be in encrypted format
- Application or System should not allow invalid users
- Check cookies and session time for application
- For financial sites, Browser back button should not work.
Types of Testing
1. Manual Testing
This type includes the testing of the Software manually. i.e. without using any automated tool or any script.
In this type the tester takes over the role of an end user and test the Software to identify any un-expected behaviour or bug.
There are different stages for manual testing like unit testing, Integration testing, System testing and User Acceptance testing.
2. Automation testing
Automation testing which is also known as Test Automation, is when the tester writes scripts and uses another software to test the software.
This process involves automation of a manual process. Automation Testing is used to re-run the test scenarios that were performed manually, quickly and repeatedly.
This is also used for regression testing, Automation testing test the application from load, performance and stress point of view.
It will increases the test coverage; improve accuracy, saves time and money in comparison to manual testing.