Overview
Of
Software Testing
By
Mina Desai, Joint Director
Shampa Dey, Project Engineer
Contents
• Software Testing
• Need for Software Testing
• Role of Software Tester
• Qualities required for a good tester
• Testing Team Members
• Software Testing Misconceptions
• General facts about Software Testing
• Advantages of Software Testing
• Limitations of Software Testing
06/15/2020 [Link] 2
Software Testing
• Software testing is a process
to evaluate the system or its components
to test the functionality of software application
to find whether the developed software meets the specified requirements or not
to find out the defects of the product
to identify any gaps, errors or missing requirements
• According to ANSI/IEEE 1059 standard, Testing can be defined as
A process of analyzing a software item to detect the differences between existing and required
conditions (that is defects/errors/bugs) and to evaluate the features of the software item.
06/15/2020 [Link] 3
Who can Test ?
• A company depending on its requirements can have a team with responsibilities to
evaluate the developed software in context of the given requirements.
• Moreover, developers also conduct testing.
• The following professionals are involved in testing a system within their respective
capacities −
1. Software Tester
2. Software Developer
3. Project Lead/Manager
4. End User
• Different companies have different designations for people who test the software on the
basis of their experience and knowledge such as Software Tester, Software Quality
Assurance Engineer, QA Analyst, etc.
06/15/2020 [Link] 4
Need for Software Testing
Ariane 5 crash June 4, 1996
On June 4, 1996 Ariane 5 rocket launched by European Space Agency crashed about 40 seconds after takeoff
Loss was about half a billion dollars
Explosion was the result of a software error
Module was re-used without proper testing from Ariane 4
Error was not supposed to happen with Ariane 4
Calculate 4195835 – 4195835 / 3145727 * 3145727 in ‘94 Pentium
it doesn’t return 0, but 256
Five entries in the quotient digit lookup table were erroneous.
Design Fix: 5 missing transistors, fixed with change to single mask
Cost of bug if detected at earliest spot: <$100
Actual Cost: $450 million
• Software Testing is necessary because
We all make mistakes. Some of those mistakes are unimportant, but some of them are expensive or
dangerous.
We need to check everything and anything we produce because human beings are prone to errors and
things can always go wrong.
06/15/2020 [Link] 5
Need for Software Testing
A software product should only be released after it has gone through
a proper process of development, testing and bug fixing.
Testing looks at areas such as performance, stability and error handling by setting up
test scenarios under controlled conditions and assessing the results.
Software is mainly tested to see that it meets the customers’ needs and that it
conforms to the standards.
Software is considered of good quality if it meets the user requirements.
06/15/2020 [Link] 6
Role of software tester
• Apart from exposing faults (“bugs”) in a software product confirming that the program meets the
program specification, as a test engineer you need to create test cases, procedures, scripts and
generate data.
• You execute test procedures and scripts, analyze standards and evaluate results of
system/integration/regression testing.
You also...
• Speed up development process by identifying bugs at an early stage (e.g. specifications stage)
• Reduce the organization's risk of legal liability
• Maximize the value of the software
• Assure successful launch of the product, save money, time and reputation of the company by
discovering bugs and design flaws at an early stage before failures occur in production, or in the field
• Promote continual improvement
06/15/2020 [Link] 7
Qualities required for a good tester
Knowledge of technology
Technology in which the application is developed (added advantage) to design better and powerful test cases.
Perfectionist and a realist
Being a perfectionist will help testers spot the problem
Being a realist helps know at the end of the day which problems are really important problems.
You will know which ones require a fix and which ones don’t.
Tactful, diplomatic and persuasive
Tactful and know how to break the news to the developers.
Diplomatic while convincing the developers of the bugs and persuade them when necessary and have their bug(s) fixed.
It is important to be critical of the issue and not let the person who developed the application be taken aback of the
findings.
06/15/2020 [Link] 8
Qualities required for a good tester
An explorer
Creativity
Attitude to take risk helps the testers venture into unknown situations and find bugs that otherwise will be looked
over.
Troubleshoot
Troubleshooting and figuring out why something doesn’t work
Confident and clear in communicating the defects to the developers.
Posses people skills and tenacity
Testers can face a lot of resistance from programmers.
Socially smart and diplomatic but not indecisive.
Socially adept and tenacious where it matters.
06/15/2020 [Link] 9
Qualities required for a good tester
Organized
Best testers realize that they too can make mistakes
They are very well organized
Using checklists, facts and figures to support their findings to use as an evidence
Double check their findings.
Objective and accurate
Very objective and know what they report
Convey impartial and meaningful information that keeps away politics and emotions
Reporting inaccurate information is losing a little credibility.
Good testers make sure their findings are accurate and reproducible.
06/15/2020 [Link] 10
Qualities required for a good tester
Defects are valuable
Good testers learn and improve from them.
A defect found early substantially costs less when compared to the one found at a later stage.
Defects can cause serious problems if not managed properly.
Learning from defects helps – prevention of future problems, track improvements, improve prediction and
estimation.
06/15/2020 [Link] 11
Steps to Software Testing
1.
A Web Application
Software is developed
2.
Quality of the product
is not known
3.
How will be the
performance when
deployed 4.
Testing Team is required
to verify the quality
5.
Test Manager is required
to lead the team
06/15/2020 [Link] 12
Software Testing Team
IT PROJECT TEAM
PROJECT MANAGER
BUSINESS TECHNICAL
SYSTEM ANALYST DEVELOPERS TESTERS
ANALYST ARCHITECT
TESTING TEAM
06/15/2020 [Link] 13
Test Manager
The role of test manager is optional.
The test manager is hired when there are many testing groups.
The number of testers and testing groups depends on the software
testing workload.
Test Manager plays a central role in the Team.
06/15/2020 [Link] 14
Role of Test Manager
prepares test strategy gathers the updates on testing progress
prepare the test budget identify the risk and priorities for testing
define test levels and test cycles design the testing approach, procedures and
techniques
develop strategy for estimating test effort
identify, evaluate and choose the testing tools
develop strategy for test documentation,
metrics and reporting set the strategy on the automation testing
guides and controls the testing teams co ordinate with other teams for software
releases
co ordinates with the test leaders and project
manger
06/15/2020 [Link] 15
Test Leader
Each test group is led by a test leader.
The test leader performs the roles of test manager in absence of test
manager.
06/15/2020 [Link] 16
Role of Test Leader
prepare the test plan at each test level based on set up the configuration management
test strategy
lead and conduct the meetings
define the objectives, test items, approaches, risk, review the test documents
contingencies in testing process
assign roles and provide schedule to testers co ordinate in the testing group
identify the test specifications test activities for monitor the testing and co ordinate the software
testers release
gather metrics and track the testing progress resolve the issues in the test groups
define entry and exit criteria guide the testers and prepare the test summary
report
define test environment and monitor the set up
process co ordinate for automation testing
design test documents templates
06/15/2020 [Link] 17
Tester
The testers group consists of
entry level testers
senior testers
performance testers
automation testers
testers performing other specific tests
06/15/2020 [Link] 18
Role of Tester
gather the test requirements co ordinate with developers to ensure the
defect fixing process
review the project documents to understand
the requirements and identify the errors automate the tests and provide test support
assist the test leader to prepare the test plan develop the test specifications, conduct the
test and record the results for the different
create the test documents like traceability items of the software
matrix, test data and test cases
set up and verify the test environment participate in the review meetings
test the software at different levels and record assist the users in UAT (User Acceptance
the results Testing)
provide the test updates to test leader
identify, report and track the defects
provide the learning experience during the
project and document it
06/15/2020 [Link] 19
Software Testing Misconceptions
REALITY
MISCONCEPTION
Just as every field has its misconceptions, so does the field of Software Testing.
There are many misconceptions surrounding software testing.
06/15/2020 [Link] 20
Software Testing Misconceptions
Misconception 1
100% defect- free product.
Reality 1
Uncover as many defects as possible while ensuring that the software meets the requirements.
Misconception 2
Easy
Reality 2
Can be difficult and challenging
06/15/2020 [Link] 21
Software Testing Misconceptions
Misconception 3
Anyone can test
Reality 3
Testers require specific kinds of skills
Misconception 4
Too Expensive
Reality 4
Early testing saves both time and cost
06/15/2020 [Link] 22
Software Testing Misconceptions
Misconception 5
Time consuming
Reality 5
Testing while developing is never time consuming. Diagnosing and fixing the errors may take some time.
Misconception 6
Complete testing is possible
Reality 6
The domain of possible inputs of a program is too large to be completely used in testing a system.
There are both valid inputs and invalid inputs
There may be different workflows
06/15/2020 [Link] 23
Software Testing Misconceptions
Misconception 7
Automated testing eliminates the need for manual testing.
Reality 7
100% test automation cannot be achieved. Manual Testing, to some level, is always necessary.
Misconception 8
When a defect slips, it is the fault of the Testers.
Reality 8
Test strategy may result in bugs being missed by the testing team. It is the responsibility of all members,
including developers of a project.
06/15/2020 [Link] 24
Software Testing Misconceptions
Misconception 9
Software Testing does not offer opportunities for career growth.
Reality 9
With increase in competing software and demanding users, the need for software testers to ensure high
quality software will continuously grow.
06/15/2020 [Link] 25
General Facts about Software Testing
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 bugs.
It is impossible to test a program completely.
• A simple program will have a large number of inputs, outputs, workflows and the specification is subjective
to frequent changes.
You can’t guarantee quality.
• As a software tester, you cannot test everything and are not responsible for the quality of the product.
• A tester can fail if he is unable to report accurately an observed defect.
• We have little control over quality.
06/15/2020 [Link] 26
General Facts about Software Testing
Target environment and intended end user.
• Testing the application in the environment user is expected to use
• Single user / multi user system
No application is 100% bug free.
• Recognize the priorities
• Leave some less critical problems unsolved or unidentified.
Be the customer.
• Use the system as a lay user.
• Get a person who has no idea of the application to use it for a while.
06/15/2020 [Link] 27
General Facts about Software Testing
Build your credibility.
• Credibility is like quality that includes reliability, knowledge, consistency, reputation, trust, attitude and attention
to detail.
• It is not instant but should be built over time and gives voice to the testers in the organization.
Not all bugs you find will be fixed.
• Which bugs will be fixed and which won’t is a risk-based decision.
06/15/2020 [Link] 28
General Facts about Software Testing
Review competitive products.
• Gaining a good insight into various products of the same kind and getting to know their functionality and
general behavior will help you design different test cases and to understand the strengths and weaknesses of
your application. This will also enable you to add value and suggest new features and enhancements to your
product.
Follow standards and processes.
• As a tester, you need to follow the standards and guidelines set by the organization. These standards pertain
to reporting hierarchy, coding, documentation, testing, reporting bugs, using automated tools etc.
06/15/2020 [Link] 29
Testing - Advantages
Managers see testing as
cost and not a profit source.
They reduce the quality of testing or do not implement it at all.
Profitable software and not best software
But
Testing phase of every project is vital.
Software testing is a great tool for business optimization.
06/15/2020 [Link] 30
Testing - Advantages
Software Quality
Product must be of high quality
For quality, customers will surely pay more money.
Selling high-quality products build a strong reputation and brand image -
things that are important in the long-term.
06/15/2020 [Link] 31
Testing - Advantages
Customer Satisfaction
Happy customer
Client can ask for a refund if the product does not suit him.
If the product is not reliable, you need to invest more money in fixing or
replacing it
It pays off to produce a higher quality product from the start.
06/15/2020 [Link] 32
Testing - Advantages
Profit
Testing phase is not a cost, but a part of profit.
A good product needs less promotion - users will recommend.
Recommendation is the best and most valuable commercial you can get.
Help in retaining old customers and gaining new ones.
Cut down existing expenses – software does not need constant fixing.
Compromising on quality ends up with having to spend more money.
Avoid unnecessary expenses through customer support.
06/15/2020 [Link] 33
Testing - Advantages
User Experience
User experience is a significant factor
Software needs to be simple, understandable, and easy to use.
Only testers can assure that the software is designed in a way that is logical
and intuitive.
For great user experience, software needs to be free from bugs and errors - a
source of dissatisfaction for users.
06/15/2020 [Link] 34
Testing - Advantages
Business Optimization
Biggest benefit - software testing leads to business optimization.
More satisfied clients
Customer retention
Fewer costs of fixing a product
Fewer costs of a customer service
Better quality
Reliable products
Improved reputation and brand image
06/15/2020 [Link] 35
Testing - Limitations
There is no risk at all
But if the testing is done badly or in an improper way, it will affect the quality of product.
However, there are some limitations in software testing
06/15/2020 [Link] 36
Limitations of Software Testing
Exhaustive Testing is Impossible
We cannot test a program completely
You cannot test every path
You cannot test every valid input
You cannot test every invalid input
Incorrect System Requirements
We can only test against system requirements
We may not detect errors in the requirements.
Incomplete or ambiguous requirements may lead to inadequate or incorrect testing.
06/15/2020 [Link] 37
Limitations of Software Testing
Money
Budget constraints require very careful planning of the testing effort.
Time
Traditional software testing may simply take too long.
You will run out of time before you run out of test cases
Inadequate Knowledge of Tester
Tester may not have adequate knowledge about the product.
06/15/2020 [Link] 38
Thank you
06/15/2020 [Link] 39