Software Testing is the process of checking a system with the purpose of identifying any bugs, missing requirement or gaps versus the actual requirement. This post will discuss in detail about what is Software Testing, what are its objectives, types, different methodologies, Testing levels & Documentation.
What is Software Testing
Software Testing is a process used to identify the completeness, correctness and quality of developed software. Programs/applications are executed under positive and negative conditions by Manual or Automated Testing. Testing is a critical element of software Development Life Cycle. It checks for the Specification, Functionality and Performance of software.
Fig. 1 – Introduction to Software Testing
Main Objectives of Software Testing
The objectives include:
- Uncover as many as errors (or bugs) as possible in a given product.
- To check whether software matches its requirement specifications or not.
- Quality of Software Testing should be maintained using the minimum cost and efforts.
- Create Test Cases, perform Tests and issue Test Reports.
Fig. 2 – Objectives of Testing
The objectives of Software Testing is achieved using:
Verification is the process of evaluating a system or component to check and analyse whether the products of a given development phase satisfy the conditions imposed at the start of the phase. It could be in the form of reviewing, testing, auditing, checking or documenting relating to the specified requirements.
Simply put, Verification checks if “X” meet its specification; where “X” can be code, model, design diagram, requirement etc.
Validation evaluates a system during or at the end of development process. It is also called as ‘end-to-end’ verification. It ensures if the product or software is suitable for operational use.
Software Testing Methodologies
The two methodologies of Testing Software are:
- Black Box Testing
- White Box Testing
Black Box testing
- Knowledge of internal working structure, program design or code is not required.
- It is also known as Functional Testing, data-driven Testing or closed box Testing.
- Tests in Black Box Testing are based on requirements and functionality.
White Box Testing
- Knowledge of the internal working structure, program design and code is required.
- It is also known as structural testing, clear box testing, code-based testing, and transparent testing.
- Tests in White Box testing are based on coverage of code statements, branches, paths, conditions.
Gray Box Testing
- Partial Knowledge of the internal working structure, program design and code required.
- It is a combination of Black Box and White Box Testing methods.
Software Testing Types
Below are the types of Testing which are chosen depending upon the application to be tested.
- Manual Testing
- Automation Testing
Manual Testing means the testing of the software manually, without using any automated tool or any script. Tester manually executes all Test Cases to meet the expected results or user’s perspective.
Automation Testing (also known as Test Automation) means testing the software using special Automated Testing software tools. The tool executes Test Scripts which are generated using various scripting languages.
Fig. 3 – Schematic Representation of Manual and Automation Testing Process
Software Testing Levels
Following are the main levels of Software Testing:
- Functional Testing
- Non- Functional Testing
Functional Testing is a type of Black Box Testing that validates the software system against the Functional requirements. Functional Testing of the software is conducted on whole system to evaluate the system’s acceptance with its specified requirements. Below are five steps for testing functionality of an application.
- The determination of the Functionality that the intended application is meant to perform.
- The creation of Test Data based on the specifications of the application.
- The output based on the Test Data and the specifications of the application.
- The writing of Test Scenarios and the execution of Test Cases.
- The comparison of actual and expected results based on the executed Test Cases.
Types of Functional Testing
Below are the important and commonly used Functional Testing types:
- Unit Testing
- Integration Testing
- System Testing
- Regression Testing
- Acceptance Testing
Tests each module individually. It is done by developers on the individual units of source code and ensures that individual modules meet the software requirement specifications.
Integration Testing is performed to test the interface between two software modules or units.
The whole system is tested to uncover errors and verifies that all system elements are working properly. It is basically conducted on a complete integrated System to assess system specified features.
Change in a software application can possibly affect other areas within the application. Hence Regression Testing is done to ensure that the changes made in a recent program or code has not affected existing features of the application.
It is performed to determine whether or not the software system has met the requirement specifications. It is also called User Acceptance Testing or Final testing in which the testing activity is carried as per the Acceptance Test Plan. It checks if the application behaves as expected.
Fig. 4 – Software Testing Levels
Non- Functional Testing
It involves testing the Software from its attributes which are Non- Functional in nature like performance, security, user interface etc.
Types of Non-Functional Testing
Below are the important and commonly used Non-Functional Testing methods:
- Performance Testing
- Usability Testing
- Security Testing
- Portability Testing
It is performed to identify any Performance issues like speed, responsiveness and stability of a computer, network, software program or device under a workload.
It is performed to identify how easy a design is to use for users.
It is performed to identify any flaws from security and vulnerability point of view.
It is performed to identify how easily the software component or application will be integrated into the environment.
Software Testing Documentation
This phase involves the documentation of all the requirements which should be developed before or during the Testing of software. Below are some commonly used documented artifacts related to Testing Software such as:
- Test Plan
- Test Scenario
- Test Case
- Traceability Matrix
Fig. 5 – Represents Test Scenario with Multiple Test Cases
Test Plan baselines the approach that will be used to test a software application, the test environment in which testing will be performed, how many resources will be used, limitations of the testing and the schedule of testing activities etc. Basically, it outlines the scope, objective, approach, schedule and estimation of the intended Testing activities.
Test Scenarios are one-line statements that tell which module in the software application is to be tested. Test Scenarios are used to ensure that all functionalities in application are tested from end to end. Depending on the magnitude and complexity of the application, a particular Module of an application can have a minimum of one Test Scenario to a few hundred Scenarios.
Test Cases are the set of inputs and conditions used while performing the testing tasks of software application. The main purpose of this activity is to ensure whether the software application Passes or Fails in terms of its functionality and other aspects.
Many types of Test Cases are used while testing, like Functional Test Cases, Negative Test Cases, Test Cases based on error-guessing, Logical Test Cases, Physical Test Cases, UI Test Cases etc.
Traceability Matrix is a document that traces all requirements to the Test Cases which in turn reflects the system being built. This matrix is created before the Test Execution process and plays a main role in convincing client about all the requirements are being met which helps in smooth product conveyance.
Fig. 6 – Sample RTM (Requirements Traceability Matrix)
Test of Software prior launch helps to deliver a quality product or application which is error-free.
Also Read: Software Testing Life Cycle (STLC) – Characteristics and Various Phases SCADA System – Components, Hardware & Software Architecture, Types Software Development Models in SDLC Process – Waterfall, Iterative, Spiral, V & Agile RAID – Types, Implementation, Architecture, Applications and Advantages