Undoubtedly, QA in software development has become more popular and important in the software development industry over the course of many years. Software testing is not a narrow ecosystem. It is quite broad and encircles a variety of activities along the development cycle and beyond, aimed at different goals.
Since it is so vast, it faces a bunch of challenges. In software testing, the starting point is harbored by important past achievements, while the destination comprises two major identified goals to which research ultimately leads. The path to achievements and goals is paved with breathtaking research challenges.
The testing of software is a vital means of scrutinizing the software which helps determine its quality. A typical testing scenario consumes 40~50% of development efforts and it takes more effort for systems which require higher levels of reliability. This makes it an integral part of software engineering.
A typical software testing process involves many technical and non-technical areas like specification, design and implementation, process and management issues in software engineering, maintenance etc. Testing is one of the most challenging and dominating activities carried out in the industry. Hence, improvement in its effectiveness with respect to the time and resources, is taken as an important factor by many researchers
The ultimate goal of testing can be either of the following: quality assurance, verification, and validation or reliability estimation; a near perfect tradeoff between budget, time and quality. Unarguably, testing can be said as the single most widely used approach to ensuring software quality.
The Purpose of Software Testing
Objective of Testing
The most basic type of testing most people are aware of is the method involving to find problems and fix them to improve overall quality. The four vital objectives of testing are:
- Demonstration:– which shows that the system can be used for integration with acceptable risk. Its task is to demonstrate functions under special conditions and show that products are ready for integration or use.
- Detection:– as the name suggests, this aspect discovers defects, errors and deficiencies. The purpose is to determine system capabilities and limitations in quality of components, work products and the system.
- Prevention:– a major task being able to provide information to help prevent or reduce the number of errors clarify system specifications and performance. It also states to identify ways to avoid risk and problems in the future.
- Improving Quality: By doing effective testing, we can minimize errors and hence improve the quality of software.
Types of Testing and Models
Software testing also, like other aspects, is divided into different parts. In order to understand various models of software testing, we need to understand the software development life cycle first; let’s call it SDLC for short.
It is, at its core, a systematic way of developing software. It includes various phases starting from the functional requirement of software to getting into the designing part, then the development and then comes the testing. As a part of the procedure, once testing is done, the source code is generally released for Unit Acceptance Testing in the client testing environment. Once the client approves it, the source code is then released into the production environment.
Various types of SDLC Models are :
- Water-fall Model
- Prototype Model
- V Model
- RAD Model
The waterfall Model
This is a pioneer approach in the software development ecosystem. This is a top to bottom approach like a straight waterfall which does not branch anywhere in the middle and there is water available at the bottom only when it drops from the top. The process phases in the Waterfall model are:- Requirement Specifications phase, Software Design, Implementation, Testing, Deployment of system & Maintenance. In this model all the different phases are cascaded to each other in a way where the second phase starts only when a defined set of goals are achieved for the first phase and it is signed off.
The Prototyping Model
We know by the name that a prototype is something which is a working model of an actual project (software, construction, automobile etc) that is functionally equivalent to a component of the product. It may happen that a client does not have an intricate idea about his requirements and only has a general view of what is expected from the software product. Absence of detailed information regarding the input to the system, led to the development of prototyping model.
QA in Software Development
Safety and quality are the most important aspects of every industry. Without them any company, be it service based or product based, would come crashing down like a house of cards. Everyone is committed to quality. However, there are still some confusing ideas shared by many individuals which inhibit achieving a quality commitment.
Even today, many individuals believe that defect-free products and services are impossible, and accept certain levels of defects as normal and acceptable.
People know that quality demands requirement specifications in enough detail that the products produced can be quantitatively measured against those specifications. It is known that many organizations are not capable enough or willing enough to stretch the effort to produce specifications at the level of detail required.
Many people still believe that quality comes with a cost. They frequently associate it with price, meaning that high quality equals high cost. This is confusion between quality of design and quality of conformance.
Quality cannot be achieved by analyzing an already completed product. The aim is to prevent quality defects or deficiencies in the first place, and to make the products accessible by quality.
Some of the existing QA methods include structuring the development process with a software development standard and supporting the development process with methods, techniques, and tools. There have been numerous examples in history where undetected bugs in the software have caused millions in losses to businesses. This has necessitated the growth of independent testing, which is performed by a company other than the developers of the system; thereby increasing the availability of quality assurance testing services.