Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Software testing:

Software testing is the process of verifying whether the developed software meets the customer
requirements and is defect free. It is the process of verifying Application Under Test with respect
to the requirements. Software testing checks for the missing features, defects on the software,
security issues, reliability issues of the developed software.

Why software testing is important?


Software testing is important due to following reasons:
1. To Improve quality of the software
2. To increase customer satisfaction
3. To make software cost effective
4. To improve the security of the software

Who is responsible for software testing?


Software Quality Analysts or software testers are responsible for software testing.

Difference between project and product

Project:
● Project is well defined in terms of what needs to be done and when it should be finished.
● Project has a start and end date.
● Project is temporary.
● Project is managed by the project manager.
● Project is output focused.
● Project has fixed requirements.

Product:
● Product is designed to solve customer problems which evolve continuously.
● Product don't have an end date.
● Product is more permanent than project.
● Product is managed by the product manager.
● Product is outcome focused.
● Products have varying requirements.

QA vs QC
QC:
● QC is the process that is done to ensure the software meets quality requirements.
● QC is the process which helps to fulfill the quality requirements.
● QC is quality validation.
● QC is a corrective measure.
● QC is performed on end products.
QA:
● QA is the process that ensures quality in method, processes, techniques that are used to
develop the software.
● QA is the process which ensures that quality standards are met.
● QA is quality verification.
● QA is a preventive measure.
● QA is performed from the beginning of the SDLC.

Roles and objectives of QA and QC:


Roles and objectives of QA:
● Review the specification and design documents.
● Develop test plans and test cases.
● Planning of the testing related activities.
● Design and develop automation test scripts.
● Track ,report and document bugs.
● Regression testing after bug fix.
● Interact with other team members

Roles and objectives of QC:


● Gather and analyze quality control measurements
● Identify and audit the results that vary with requirements
● Suggest for quality improvement
● Review the result of the corrective measures and generate quality control reports.

Seven testing principles:

1. Exhaustive testing is not possible:


Testing all positive and negative scenarios is not possible. So testing should be optimized to
cover all the risky factors.

2. Defect Clustering:
Defects are clustered rather than dispersed. About 80% of the defects are found in 20% of the
modules which are risky. So focus should be given to those risky modules.

3. Pesticide paradox:
Repetitive use of the same test case will not find new bugs. So test cases should be reviewed,
revised from time to time.

4. Testing shows presence of defects:


Testing shows presence of defects not their absence. Software testing helps to reduce the
number of undiscovered bugs.
5. Absence of error-fallacy:
Absence of error does not guarantee the software is usable if the software is tested for wrong
requirements.

6. Early testing:
Testing should start as early as possible in SDLC. Testing should start from requirements
gathering and design phases which helps to reduce the cost and effort during later stages.

7. Testing is context dependent:


Testing is context dependent which means testing approaches, types, methods varies from
software products. No two different types of software products can be tested in exactly similar
ways. Testing should be done on the basis of requirements and nature of software.

Verification VS Validation:
Verification:
● Verification is the process of checking documents, designs, codes to check whether the
software is built as per specifications or not.
● It is a static process which does not involve executing the codes.
● It involves processes like reviews, walkthrough, inspections.
● It answers the question of Am i building the product right?

Validation:
● Validation is the process of checking if the software actually meets user requirements or
not.
● It is a dynamic process which involves executing the code.
● It involves processes like unit testing, integration testing,system testing,user acceptance
testing.
● It answers the question of Am I building the right product?

Bug Vs Defect Vs Error Vs Failure:

Bug:
Bug is the result of coding error which results in the program to behave in an unintended way.

Defects:
When there is variance between actual result and expected result it is called defects.
.
Error:
It is a mistake, misconception, misunderstanding from the side of a software developer.

Failure:
If the end user detects an issue in the software it is called failure. It is the inability of the system
to perform intended work.
Roles and Responsibilities of Actors:
Business Analyst:
● Identify the customer requirements.
● Develop an idea to provide solutions to customers' problems.
● Develop the plan into requirements.
● .Advise developers and QA team
● Negotiate with the customers

Product Owner:
Product owner is responsible for the project's outcome.
● Define project vision.
● Define project backlog.
● Assign priority to the tasks.
● Learning customer’s needs
● Acts as a bridge between the customers and the scrum team.
● Evaluate product progress.

Project Managers:
● Defines the requirements of projects.
● Build a project team.
● Define project scope, parameters, goals.
● Communicate with team members about project goals, project target.
● Allocate budget required for the projects.
● Ensure the expectations of the company and clients are fulfilled.

Scrum master:
A scrum master is a facilitator of the agile development team.
● Facilitate daily scrum as needed.
● Host sprint planning meetings.
● Conduct sprint reviews.
● Assist product owners with the product backlog.
● Removes distractions and roadblocks that hinder the progress of the team.
● Teach scrum practices and principles to the team.

Developers:
● Understanding the technical requirements and developing the project deliverables.
● Communicating the status of the project to the technical lead.
● Communicate with other team members for understand the project requirements to
reduce the risks and develop software with success.

Designers:
● Responsible for developing virtual user experience.
● Determines how users interact with the system.
● Design all the possible ways for user to navigate throughout the system.

QA:
● Review the requirements and design documents.
● Design and develop test plan, test cases.
● Develop test data.
● Setup test environment.
● Execute test cases.
● Design and develop automation test scripts.
● Detecting, tracking and reporting bugs.
● Regression test after the big fix.
● Create detailed test reports.

Support team:
● Provides support regarding hardware, software and network related issues.

Marketing team:
● Promotes the business and mission of the company to the customers.

What is SDLC?
SDLC stands for software development life cycle. Is the set of processes that is done to develop
high quality softwares which meets the customer requirements.

Phases of SDLC:
● Requirement gathering and analysis:
In this phase requirements are gathered from customer point of view and
documented in a Business Requirements Documents. These requirements are then
analyzed for feasibility and based on that a Software Requirement Specification
document is developed.
● Design
In this phase SRS document is used as an input to create an overall design of
the system. Hardware and software requirements are specified as well as system
architecture is developed. Testing strategy is also developed in this phase.
● Development
In this phase actual coding is done where developers write code using the
predefined programming language. Here the tasks are divided into modules and units
and are assigned to different developers. While writing code developers follow certain
predefined guidelines.
● Testing
Testing phase is carried out when the coding phase is completed. The testing
team carries out the testing process where overall functionality of the software is tested.
In this phase the software is tested according to the requirements and any defects found
are logged and assigned to the developer for fixing. Retesting for failed test cases and
regression testing is carried out to verify the correctness of defect fix. Testing is carried
out until all the user requirements are fulfilled.
● Deployment
Once the software is tested completely then it is deployed in the production
environment. The software goes through User Acceptance Testing if required where a
limited number of end users operate the software to check for any defects.Based on the
feedbacks from the customers the software is then released in the market.

● Maintenance
Once the end user starts using the software various issues may arise. Then such
issues are fixed in this phase. Any upgrade to the requirement and enhancement to
existing features are also done in this phase.

Software Testing Life Cycle (STLC):


Software testing life cycle is the set of activities that are done during the testing process
to ensure that the software meets the quality requirements. STLC defines a series of steps that
should be followed to ensure the software meets the quality. STLC involves both verification and
validation.

The phases of STLC are:


1. Requirement Analysis
In this phase requirements are gathered from testing point of view where testable items
are identified. Here types of testing that needs to be performed are identified. Priorities
are set and test environment details are identified.

2. Test Planning
In this phase test strategy is prepared. Also the cost and effort estimation is done. The
resources required along with the testing schedule and the tools required are also identified..

3. Test Case Development


In this phase the test cases are developed, validated and revised along with the test
scripts. Test data are also identified and created.

4. Test Environment Setup


In this phase the hardware and software requirements required to carry out the testing
process is identified and set up

5. Test execution:
In this phase the test is executed.Testers perform the testing based on the test plan and
test cases that are developed on the previous phases. In this phase test cases, test
scripts are executed and the expected and the actual results are compared. Bug
reporting is done as well as the retesting for the bug fix are also done in this phase.
6. Test Cycle Closure
It is the last phase of the testing process where test closure activities are performed.
Here the test completion reports are prepared along with the test result and test
completion matrices. Test completion criteria is evaluated based on the test
coverage,cost,time etc.Test closure reports are also prepared.

SDLC Models
Waterfall Model
In this model the phases are completed in a sequential way one after another. One phase is
completed before moving to the next phase. Each phase is designed to perform a specific
activity. Output of previous phase is used as input of next phase.

Phases of waterfall model:


1. Requirement Gathering and analysis
All the requirements are gathered in this phase from the customers
perspective.Understanding of the requirements is done. Then feasibility studies of the
requirements are also done.

2. System Design
System design is prepared based on the requirement document. Hardware and software
requirements are also identified and design documents are prepared.

3. Implementation
As per the design documents, the system is developed in small units and each unit is
tested for its functionality.

4. Integration and testing


In this phase all the units that are developed in the previous phase are integrated into a
system and are tested as a whole. Both functional and non functional testing is done.

5. System Deployment
In this phase software is deployed in either the customer's environment or released in
the market.

6. Maintenance
If the system shows any issues in the respective environment it is then fixed. Also
enhancement and upgradation is done in the system as per need.

Iterative Model
In this model software is developed in small iterations. Features are added continuously in the
next iterations. In this model a working version of the system is developed frequently.
Spiral Model:
This model is the combination of iterative and waterfall models with high emphasis on risk
analysis. This model is useful for large projects where there is a need for continuous
enhancement. In each iteration specific activities are performed and small features of large
projects are delivered. The same activities are performed until all the features are built.

V-Model
It is a type of SDLC model where there is a testing phase in parallel with each development
phase. In this model development and testing phase are carried out parallely. This model is also
known as verification and validation model.

Figure: V- model

In the figure above the left side denotes the verification phase whereas the right side denotes
validation phase.

Verification phase of V model


1. Requirement analysis
In this phase requirements are gathered from the customer's perspective. Based on the
user acceptance test is designed.
2. System Design
In this phase system design is prepared. Hardware and software requirements are
identified. System plan is developed which helps in developing the system test plan.
3. Architecture Design
In this phase the system is divided into different modules with different functionality. The
interaction between the modules and interfaces is defined which helps in developing the
integration test plan.
4. Module Design
In this phase each module is developed in detail. It is also known as low level design.
From this phase a unit test design is developed.
5. Coding
Actual coding is done in this phase. Based on the requirements appropriate
programming language is used. Some predetermined guidelines are used during coding.

Validation phase of V model


1. Unit Testing
2. Integration Testing
3. System testing
4. User acceptance testing

Big bang model:


In this model no specific process is followed. Development is started with required money and
effort as input. The output of this model is a software which may or maynot meet customers
requirements. It does not follow any specific process and involves very little or no planning.
Here even the customers do not know the exact requirements and the requirements are
implemented on the fly.

Defect or Bug Life Cycle:


Defect cycle is the series of states that the bug goes through in its life. It denotes the phase the
bug travels from its start to end.
Different stages in bug life cycle:
1. New
When a new bug is identified and posted for the first time it is assigned status.

2. Assigned
After reporting the bug the test lead approves the bug and is assigned to developer to fix
it.

3. Open
When the developer starts working on the bug it is given status open.

4. Fixed
When the developer fix the bug and verified it the bug is given a status fixed.

5. Pending retest
When the developer sends the bug fix to the tester to test it is assigned status pending
retest. Here the tester has not started retesting the bug.
6. Retest
Here the tester check the updated code from developer whether or not the bug is fixed.

7. Verified
If the bug is fixed by the developer and is not regenerating then it is assigned status
verified.

8. Reopen
If the buf is still present in the software even after the developer fixes it it is assigned
status reopen. The bug then goes through the previous stage once again.

9. Duplicate:
If the same bug has been reported twice then it is assigned status duplicate.

10. Rejected:
If the developer thinks that the bug is not genuine then it is rejected and is assigned
status rejected.

11. Deferred:
If the bug is expected to be fixed in the next release then it is given status deferred.

12. Not a bug


If there is no change in the functionality of the system then the status not a bug is given.

Software Testing-Myths
● Quality Control = Testing
● The objective of Testing is to ensure a 100% defect- free product.
● Testing is easy.
● Anyone can test
● There is no creativity in testing.
● Automated testing eliminates the need for manual testing.
● When a defect slips, it is the fault of the Testers.
● Software Testing does not offer opportunities for career growth.

You might also like