Testing is a process to detect and remove errors from the software product.
The purpose of testing is to show that the program performs its internal functionalities correctly.
It is the process to meet specifications of a software in order to improve quality and reduce risk in the software.
It is the procedure used to execute a program with intent of finding errors.
Software Quality Vs. Software Quality Testing
Software quality is the ability of the software product to perform as per the requirement with highest level of satisfaction to the users.
Software quality testing is the process of evaluating the system or its components in order to draw out defects.
Quality of a software product directly depends upon software testing process. If testing process is able to minimize as many defects as possible then, the software product obtained will be of highest quality.
The two major types of testing typically used to obtain quality software are:
Functional-Testing.
Structural-Testing.
Software Quality Testing : Functional-Testing
It is a type of testing that can be used to assess the features and functionality of the system or software product.
Functional-Testing has a special feature with the help of which each and every function of a software product so that it can be verified with requirement specifications.
Software Quality Testing : Functional-Testing Need
Checking a software product for its functionalities is the prime objective of functional-testing. It mainly focuses on:
Basic Usability: It deals with basic usability testing of software product which involves basic functionalities of user interface and navigation through pages.
Mainline Functions: Main functions and features are tested of the software product.
Accessibility: To check, how much the software product is accessible to users.
Error Conditions: Error conditions either generate warnings or displays error messages, if any.
Software Quality Testing : Structural-Testing
The structure of a software product is responsible for designing test cases in order to test a software product.
Since, the whole structure is known, it is also known as white box testing.
Structural-Testing is more technical than functional-testing as it attempts to design test cases from the source code and not from the specifications
The major structural testing approaches are:
Statement Coverage: In this, the aim is to achieve 100% statement coverage i.e. each and every statement of program is executed.
Branch Coverage: In this, the aim is to achieve 100% branch coverage i.e. every branch either containing “true” or “false” conditions needs to be executed.
Path Coverage: This technique corresponds to test all possible paths i.e. it is a combination of branch and statement coverage techniques.
Structural-Testing can broadly be classified into four types. These are:
Types of Structural Testing
Control Flow
In this, various paths of programs and various test cases are designed to execute those paths which ultimately results in finding out the cyclomatic complexity of the programs.
Data Flow
It is a technique used for determining improper use of data inside a software programs.
Incorrect variable declaration, Multiple times declaration and assigning values to variables can be some of the examples.
Slice Based
Slicing a software program and testing those slices individually for defects and errors.
Mutation-Testing
When small changes are made in some certain statements of source code to check whether the test cases are able to find the errors or not.
These changes are known as mutants.
The changes are very small such that they does not affect the overall objective of the program.
The goal of mutation testing is to assess the quality of test cases which should be powerful enough to fail the mutants in the code.
Software Quality Testing : Testing Tools
Testing tools are the software tools which can be used in software for error detection and corrections. Static Testing tools and Dynamic testing tools are their types.
Static-Testing Tools
These tools does not involves in actual input and output i.e. they do not test the actual execution of the software . These tools are:
Flow Analyzers.
Coverage Analyzer.
Interface Analyzer.
Dynamic-Testing Tools
These tools are used to test the software system with live data. Dynamic test tools includes the following: