Manual testing is a part of software testing. If you are new to the world of testing, this manual testing tutorial will prove to be of use to you. It will help you understand the basics of software testing and clear basic concepts for you.
Software development goes through a chain of process. It starts with requirement analysis phase and ends with the maintenance phase. There are two important phases of software development, namely coding and testing. Testing phase is an important phase, as it verifies and validates that the software has been developed according to the requirements of the user. Software testing can be carried out using two methods which are automation testing and manual testing. The names of software testing types are indeed self-explanatory. This manual testing tutorial will help you to understand the basics of software testing in general and manual testing in particular.
What is Manual Testing?
Manual testing is the method used to check a software for defects manually. In this type of testing, a tester wears garbs of an end-user. All features of a software are tested to know, if the behavior of the software is exactly according to the expectations of the customer. Normally, the tester has a test plan, which he uses. Other than test plan, there are test cases written, which are used for implementing the test plan.
Manual Testing Guide
After the introduction to software testing, we will now turn towards software testing tutorial. This tutorial deals with almost basics of manual testing.
Stages of Manual Testing
The entire process of manual testing goes through four phases. First phase is known as unit testing. It is the job of the developer to test units of the code written by the developer himself. In some cases, the code may also be tested by a peer. Integration testing is second phase of software testing. It is carried out, when big chunks of codes are integrated to form a bigger block. Either black box or white box testing is carried out in this phase. The next phase is system testing phase. The software is tested for all possibilities to rule out any kind of abnormality in the system. Normally black box testing technique is used in system testing phase. User acceptance testing is per se the last stage of manual testing. In this phase, software is tested keeping the end-user in mind. There are two types of acceptance testing which are used, namely alpha testing and beta testing.
Software Testing Life Cycle
Like the development life cycle, the software also goes through a testing life cycle. The different phases of software testing life cycle are:
Software Testing Strategy
There are three types of software testing, under which all software testing activities are carried out. They are:
- White Box Testing: Testing of internal structure of the software is known as white box testing.
- Black Box Testing: This testing strategy is used to test different functionality of the software, that is being developed.
- Gray Box Testing: The software is tested to find defects of any kind, whether in code or in structure.
There are other types of software testing, which are used to test a product to ensure that the software meets requirements of the end-user. They include:
- Functional Testing
- Smoke Testing
- Usability Testing
- Validation Testing
- Compatibility Testing
- Sanity Testing
- Exploratory Testing
- Security Testing
- Regression Testing
- Recovery Testing
- Performance Testing (This includes 2 sub-types - Load Testing and Stress Testing)
Software Testing Techniques
Software testing methodologies are divided into static testing techniques and dynamic testing techniques. Software review and static analysis by using tools are methods, which come under static testing techniques. Specification based testing techniques, structure based testing techniques and experience based testing techniques are all included under dynamic testing technique. Equivalence partitioning is one of the important strategy used in specification based testing technique.
Bug Life Cycle
The aim of entire software testing activity is to find defects in the software, before it is released to the end-user for use. Bug life cycles starts after a tester logs a bug. Phases in the bug life cycle are
There are different software testing models, which the software testing team can choose from. Each of these models have different methods, as they are based on different principles. A number of factors are taken into consideration, before a particular model is chosen. The different models that are used are:
- Waterfall Model in Testing
- Validation and Verification Model
- Spiral Model
- Rational Unified Process (RUP) Model
- Agile Model
- Rapid Application Development (RAD) Model
1. Validation vs.
Verification answers the question, Am I building the product right, while validation answers the question, Am I building the right product. To explain it further, verification is carried out at the end of every phase to ensure that the software has been developed in accordance with the conditions set up at the beginning of the said phase. On the other hand, validation is carried throughout the software development life cycle, to ensure that all the requirements are satisfied.
2. What is severity and priority?
Impact the defect has on working of the system is called severity. It is the tester, who decides severity of the defect found in the system. Priority, however, is used to describe level of importance of the defect from customer or business standpoint. The developer is the one, who will decide priority of the defect logged in.
3. Tell me in short about requirement testing?
Requirement testing has an important role to play in entire software testing process. In this testing method missing, vague, incomplete and wrong requirements are tracked down, because if the software is made with wrong, incomplete or wrong requirements, then the software may not serve the purpose it was developed for. It ensures incomplete requirements do not make their way into the software.
4. Explain boundary value analysis in brief.
It is an integral part of black box testing, where tests are carried out using values on the boundary. It can either be a maximum value or a minimum value permitted for that input or output. It helps in analyzing, if the system performs in the desired manner for both ends of the spectrum.
5. Differentiate between Usability and Functional testing.
In usability testing, application is tested to find, if there are errors pertaining to functioning of the software. For example, if software gives erroneous messages, which can confuse the user is a part of usability testing. Functional testing is carried out to find, if the software performs an action it is not supposed to. A classic example can be when the software accepts an erroneous username and/or password and logs into the system.
6. What is a Test Strategy?
This is a document, which is used to define the test approach for a particular software. It is decided using system requirement specification document. In the initial phase, test plan is drawn using this document, however, since the document is not updated at regular interval, it may not prove to be useful in case there is a change in system requirement specification.
7. Explain in short a 'test case'
It is in a test case, that desired behavior of the software is described. It includes input, expected output along with the action as well as the actual output. Different parameters, which are essentially a part of a test case are test case objective, test conditions, input data, test case name, etc. Test cases are normally prepared at the beginning of the development cycle to ascertain that requirements specification document does not have a problem.
8. Explain: a test suite
Several test cases put together is known as test suite. Often a test suite is designed for every component of software under test. Post condition of the first test case becomes the precondition of subsequent test case.
9. Differentiate between Load and Volume Testing.
As the name suggests, load testing checks whether the system works as it is supposed to work, when load on the system increases. Increased load can either be due to increase in number of users at the same time or it can be due to numerous transactions taking place on the system simultaneously.
10. Distinguish between regression testing and retesting.
Regression testing is testing the software after changes have been made to it, in order to ensure no new bugs have been introduced in the software. The added advantage of regression testing is that any undiscovered bugs may also come to fore. Retesting on the other hand is running the same set of test cases on the system, which failed during the last round of tests, after changes were carried out to the software. This helps in verifying corrective actions taken on the software.
If you have an interview to attend, then make sure you are well versed with this manual testing guide, so that you are able to crack the interview. Along with the knowledge about manual testing, you should also be acquainted with automation testing, as there are certain companies, which require the knowledge of automation testing along with the knowledge of manual testing.