Software Testing Part-1 -Introduction to Manual Testing.

Gvnswetha
10 min readDec 2, 2019

--

In this article series we will understand basics of manual testing and SDLC models.

What is software?

A software is a collection of computer programs that help us to perform a task.
Types of software:

System Software : This include Device drivers,OS,servers,utilities etc.,
Programming Software: This includes Compiler.debugging,interpreters etc.,
Application Software:This includes Industrial automation, business software,games,telecoms etc.,

What is software testing?
Software testing is a part of software development process, this is an activity to detect and identify defects in the software.
*The main objective is to release a quality product to the client.

What is the need for testing?
This ensures that a software is bug free.
*Also, to make sure that system meets customer requirements and software specifications and meets end user expectations.
*Fixing the bugs identified after release is expensive.

What is software quality?
This is defined as justification of all the requirements in a product.
Quality software includes:
1)
Bug Free
2)Delivered on time
3)Within budget and meeting requirements and/or expectations.
4)Maintainable

How do we differentiate product and project:
If software application is developed for specific customer requirement then it is called project.
If software application is developed for multiple customer requirements then it is called product.

How we do differentiate between an Error,Bug and the Failure?
Error
: Ant incorrect human action that produces a problem in the system is called an error.
Defect/Bug: Deviation from the expected behavior to the actual behavior of the system is called defect.
Failure: The deviation identified by end user while using the system is called a failure.

In short a mistake in coding is called Error, an error found by tester is called Defect, a defect accepted by development team then it is called Bug, build does not meet the requirements then it Is Failure.

The bugs in the software may arise due to may reasons few of them are:
1)Miscommunication or no communication
2)Software complexity
3)Programming errors
4)Changing requirements
5)Lack of skilled testers etc.,

Software Development Life Cycle:

SDLC, is a process used by software industry to design, develop and test high quality software’s.
*The life cycle defines a methodology for improving the quality of software and the overall development process.

The following figure is a various stages of SDLC.

Lets understand the importance of each phase.

Stage 1: Requirement Analysis

This phase involves collection of inputs from the customer.This information is then used to plan the basic project approach and to conduct product feasibility study in the economical, operational and technical areas.

Stage 2: Defining Requirements

Once the requirement analysis is done the next step is to clearly define and document the product requirements and get them approved from the customer or the market analysts. This is done through an SRS (Software Requirement Specification) document which consists of all the product requirements to be designed and developed during the project life cycle.

Stage 3: Designing the Product Architecture

Based on the requirements specified in SRS, usually more than one design approach for the product architecture is proposed and documented in a DDS — Design Document Specification.

This DDS is reviewed by all the important stakeholders and based on various parameters as risk assessment, product robustness, design modularity, budget and time constraints, the best design approach is selected for the product.

Stage 4: Building or Developing the Product/Coding

In this stage of SDLC the actual development starts and the product is built. The programming code is generated as per DDS during this stage. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle.

Developers must follow the coding guidelines defined by their organization and programming tools like compilers, interpreters, debuggers, etc. are used to generate the code. Different high level programming languages such as C, are used for coding. The programming language is chosen with respect to the type of software being developed.

Stage 5: Testing the Product

After the code is generated, it is tested against the requirements to make sure that the products are solving the needs addressed and gathered during the requirements stage.

Stage 6: Deployment in the Market

Once the software is certified, and no bugs or errors are stated, then it is deployed. Sometimes product deployment happens in stages as per the business strategy of that organization. The product may first be released in a limited segment and tested in the real business environment (UAT- User acceptance testing).

Stage 7: Maintenance

Once when the client starts using the developed systems, then the real issues come up and requirements to be solved from time to time.This procedure where the care is taken for the developed product is known as maintenance.

We have few SDLC models like
1)Waterfall Mode
2)Incremental Model
3)Spiral Model
4)V-Model
5)Agile Model //this is the latest model

Waterfall model:
This model is a popular version of the systems development life cycle model for software engineering which describes a development method that is linear and sequential.
*In this model each activity takes place one after the other and the output of every phase becomes input of next phase.
*This has multiple phases as shown below.

We will use this model when:
*Requirements are very well known, clear and fixed and product definition is stable.
*Technology is understood and no ambiguous requirements.
*Ample resources with required expertise are available freely
*The project is short.

Lets see that advantages of this model:
*For each phase a clear documentation is maintained.
*This is suitable for long term projects.
*This is simple and easy to understand and use.
*Phases are processed and completed one at a time.
Disadvantages:
*
This model doesn't allow for much reflection or revision.
*High amounts of risk and uncertainty.
*It is very difficult to go back and change something and this is a dependency model that is each phase is dependent on other phase.

Example:

As there are 6 phases and if 5 people are allocated for every phase.Until the first phase is complete the people allocated in the next phase will be idle and are paid by the company which is a drawback.

Incremental/Iterative Model

This somehow overcomes the problems in the waterfall model.
*Iterative process starts with a simple implementation of a subset of the software requirements and enhances the evolving versions until the full system is implemented.
*At each iteration, design modifications are made and new functional capabilities are added.
*The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).

Example:

If a customer is having 10 requirements but he gave only 3 requirements. For those requirements we have started the process. Later if he gave few more requirements and we can start the process which goes in parallel with the past cycle. Same is implemented till all the requirements are processes hence every one is engaged in every phase.

In waterfall model until we get all the requirements we need to wait.
but in this model as soon as we get few requirements we can start the process and we do not have to wait to get all the requirements.

Advantages of this model are listed below:

*Some working functionality can be developed quickly and early in the life cycle.
*Results are obtained early and periodically.
*Parallel development can be planned.
*Progress can be measured.
*Less costly to change the scope/requirements.
*Testing and debugging during smaller iteration is easy.

Disadvantages

*More resources may be required.
*Although cost of change is lesser, but it is not very suitable for changing requirements.
*More management attention is required.
*System architecture or design issues may arise because not all requirements are gathered in the beginning of the entire life cycle.
*Not suitable for smaller projects.

Spiral Model

The spiral model has four phases as shown below.

A software project repeatedly passes through these phases in iterations (called Spirals in this model).

Let’s see how each phase works:

Planning Phase: Requirements are gathered during the planning phase. Requirements like Business Requirement Specifications’ and System Requirement specifications.

Risk Analysis: In this phase, a process is undertaken to identify risk and alternate solutions. If any risk is found during the risk analysis then alternate solutions are suggested and implemented.

Engineering Phase: In this phase software is developed, along with testing at the end of the phase. Hence in this phase the development and testing is done.

Evaluation phase: This phase allows the customer to evaluate the output of the project a day before the project continues to the next spiral.

Advantages:

*High amount of risk analysis hence, avoidance of Risk is enhanced.
*Strong approval and documentation control.
*Additional Functionality can be added at a later date.

Disadvantages :

*Can be a costly model to use.
*Risk analysis requires highly specific expertise.
*Project’s success is highly dependent on the risk analysis phase.
*Doesn’t work well for smaller projects.

V model:

This model is introduced to overcome all the problems in the previous models.
*In the previous models there is only one testing phase so if we find any issues in the later phases we need to go back and change or check all the previous phases, in order to avoid all these V model came into picture.

*In this model the the left side is the verification part and the right is called validation part.
*All the development activities are taken care on the verification side and the testing activities are taken care on the validation side.
*Hence development and testing are done in parallel.
*In each and every step there is a testing phase which is the main advantage.

How this works?

If the testing is done in the requirement phase then there are less changes of issues/errors/defects to occur in the design phase and the same is followed till the end of the process.
*Avoiding or clearing the issues in the earlier stages is also an advantage in this V model.
*In the requirement and design phases we have only the documentation hence testing is done on the same.

How is the testing done on requirement and design phase?

Through walk through,reviews etc.,
*Documents are tested to ensure correctness and completeness of the documents.
*Also, as there are multiple test phases at multiple levels testing is done by different teams.

Let’s see how different stages of Verification works:
*BRS/CRS/URS/SRS : This comes under the requirement phase.
*BRS: Business requirement specification.
*CRS: Customer requirement specification.
*URS: User requirement specification.
*SRS: System requirement specification.
*BRS,CRS,URS are given by the customer which is not in a technical way.
*In SRS all the requirements are converted to technical terms which is understandable by the project team.

Let’s see how different stages of Validation works:
*Integration testing is done on HLD AND LLD (High level and low level document).
*HLD and LLD comes under the design phase.
*Coding is done by developers and unit testing is also done by the developers on programs or the code.

*Unit testing is testing the individual programs or parts of code divided as units.
*Integration testing is combining all the unit test cases and testing.
*System testing is testing the end to end application based on customer requirements.
*User acceptance testing and system testing comes under black box testing.Testing is done on the application to check if that has met customer requirements,where code is not involved.
Unit testing and integration testing comes under white box testing where internally create programs are tested.

We will discuss more about these testing in coming article.

What is Verification and Validation?

*Verification involves static analysis technique done without executing code this is a process of evaluation of the product development phase to find whether specified requirements meet.Verification checks whether we are building the right system.
*Validation involves dynamic analysis technique(functional and non functional)testing done by executing code.this is a process to evaluate the software after the completion of development phase to determine whether software meets customer expectations and requirements.Validation checks whether we are building the system right.This takes place after verification.

Static testing is an approach to test project documents in the form of reviews,walk through and inspection.
Dynamic testing is an approach to test the actual software by giving inputs and observing the results.

Reviews:
This is conducted on documents to ensure correctness and completeness.
Examples:
Requirement Review
Design Review
Code Review
Test Plan Review
Test case Reviews etc.,

Walk through:
This is a formal review and we can raise/discuss the issues at peer level.

Inspection:
It is a formal approach to the requirements schedule.

Advantages of V-Model are:

*Easy to use.
*Testing activities like planning, test designing happens well before coding.
*Time saving and quick.
*Defects are found at early stage.
*Works well for small projects where requirements are easily understood.

Disadvantages of V-Model are:

*Very rigid.
*Least flexible.
*If any changes happen in midway, then the test documents along with requirement documents has to be updated.

Note:

  1. The main drawback with this model is, it cannot accommodate frequently changed requirements.
  2. If customer wish to change the existing requirement or want to add new requirements that will be an issue, hence to over come this let’s see what is done in the next article.

That’s all about part-1. In the next article lets see how Agile methodology works.

--

--