Software Testing
Orientation
July 25, 2014
Deepak Dua,
QA Manager
Industry Analysis-Nelson Hall
• The software testing services market was worth $29bn in 2007
• $6bn was spent on “Independent testing
• The market would increase to $37.6bn by 2012
• The market share for independent testing growing to approximately 30%
($12bn)
• Global Testing Service Market $17B (2010) with India $8.5B
• 50% of global testing service market is managed by India based test
community (>95K Test Engineers)
• QUALITY continue to be the #1 choice of the end users, service providers,
network operators, solution integrators and R&D Orgs
2
Market Study
3
Software Testing Budgets
Top Software Testing Trends for 2016
Software Testing Budgets
Career Path of a Tester
What exactly does a software tester
do?
The goal of software tester is to find bugs.
The goal of software tester is to find bugs as early
as possible.
The goal of software tester is to find bugs as
early as possible and make sure they get
fixed.
What is Bug?
• When software doesn’t operate as intended.
• Terms for Software Failures
– Defect
– Fault
– Problem
– Error
– Feature
– Bug
– Inconsistency
– Incident
Formal Definition
• The Software doesn’t do something that the
product specification says it should do.
• The software does something that the product
specification says it shouldn’t do.
• The software does something that the product
specification doesn’t mention.
• The software is difficult to understand, hard to
use, slow.
Why Do Bugs Occur?
• Specification
• Design
• Code
• Other
The Cost of Bugs
• Specification $1
• Design $10
• Code $100
• Test $1000
• Release $10000
What Makes a
Good Software Tester
• They are Explorer
• They are Troubleshooter
• They are creative
• They are perfectionist
• They exercise good judgment
• They are tactful and diplomatic
• They are relentless
Specialization in SW Testing
• Automation Engineer
• Performance Testing
• Accessibility Testing
• UI/UX Testing
• Security Testing
• Web Services Testing
• BI Testing
• Telecom
The Software Development Process
• Product Components
• Software Project Staff
• Software Development Lifecycle Model
Product Components
• Customer Requirements – to fill the need of customer we takes
survey, feedback, competitive product information.
• Specification – Define what the product will be, what it will do, and how it
will look.
• Schedule – to track the progress, Gantt Chard,
• Software Design Documents - Architecture, DFD, Flowchart,
Commented Code.
• Test Documents – Test plan, Test Cases, Bug Reports, Metrics and other
reports.
What Parts Make Up a Software
Product?
• Help Files • Users Manual
• Samples and examples • Labels and stickers
• Product Support info • Icons and art
• Error messages • Ads and marketing
material
• Setup and Installation • Readme file
Software Project Staff
• Project Manager – write project spec, manage schedule, make critical
decision and trade offs.
• Architect or System Engineer – Technical Expert, design Architecture
or detailed design.
• Programmer – write code, fix bugs
• Tester or QA – find bugs, report bugs, assure the quality
• Technical writer – prepare user manuals and other documentations.
Software Development Lifecycle Model
• Code and Fix Model
• Waterfall Model
• Prototype Model
• Spiral Model
The Realities of Software Testing
• Testing Axioms
• Software Testing Terms and Definitions
It’s Impossible to Test a Program
Completely
• The number of possible inputs is very large.
• The number of possible outputs is very large.
• The number of paths through the software is
very large.
Software Testing Is a Risk-
Based Exercise
Testing Can’t Show That Bugs Don’t
Exist
You can perform your tests, find and report
bugs, but at no point can you guarantee that
there are no longer any bugs to find. You can
only continue your testing and possibly find
more.
The More Bugs You Find, the More
Bugs There Are
• Programmers have bad days
• Programmers often make the same mistake
• Some bugs are really just the tip of the
iceberg
The Pesticide Paradox
If you keep applying the same pesticide, the
insects eventually build up resistance and the
pesticide no longer works.
To overcome the pesticide paradox, software
testers must continually write new and
different tests to exercise different parts of the
program and find more bugs.
Not All the Bugs You Find Will Be
Fixed
• There’s not enough time
• It’s really not a bug
• It’s too risky to fix
• It’s just not worth it
When Bug is Difficult to Say Bug
If there’s a problem in the software but no
one ever discovers it—not programmers, not
testers, and not even a single customer—is it a
bug?
Bugs that are undiscovered or haven’t yet
been observed are often referred to as latent
bugs.
Product Specifications Are Never Final
As a software tester, you must assume that
the spec will change. Features will be added
that you didn’t plan to test. Features will be
changed or even deleted that you had already
tested and reported bugs on. It will happen.
Software Testers Aren’t the Most
Popular Members of a Project
Team
Your job is to inspect and critique your peer’s work, find
problems with it, and publicize what you’ve found. Ouch! You
won’t win a popularity contest doing this job.
Tips to keep the peace with your fellow teammates:
• Find bugs early
• Temper your enthusiasm
• Don’t just report bad news
Software Testing Terms and Definitions
Precision and Accuracy
As a software tester, it’s important to know
the difference between precision and
accuracy. Suppose that you’re testing a
calculator. Should you test that the answers it
returns are precise or accurate? Both? If the
project schedule forced you to make a risk-
based decision to focus on only one of these,
which one would you choose?
Verification and Validation
Verification and validation are often used
interchangeably but have different definitions.
These differences are important to software
testing.
• Verification is the process confirming that
software meets its specification.
• Validation is the process confirming that it
meets the user’s requirements.
Quality and Reliability
A software user’s idea of quality may include the breadth
of features, the ability of the product to run on his old
PC, the software company’s phone support availability,
and, often, the price of the product. Reliability, or how
often the product crashes or trashes his data, may be
important, but not always.
To ensure that a program is of high quality and is reliable,
a software tester must both verify and validate
throughout the product development process.
Testing and Quality Assurance (QA)
• The goal of a software tester is to find bugs,
find them as early as possible, and make sure
they get fixed.
• A software quality assurance person’s main
responsibility is to create and enforce
standards and methods to improve the
development process and to prevent bugs
from ever occurring.