Uploaded by him.9852.adarsh

original 1497602826 1489127924 Chapter 1 Introduction of Software Testing v1.1

advertisement
Chapter – 1 Introduction of Software Testing
Certificate in Software Testing Skill
Page 1 of 19
Confidentiality Statement
This document should not be carried outside the physical and virtual boundaries of TCS and
its client work locations. Sharing this document with any person other than a TCS associate
would tantamount to violation of confidentiality agreement signed by you while joining
TCS.
Notice
The information given in this course material is merely for reference. Certain third party
terminologies or matter that may be appearing in the course are used only for contextual
identification and explanation, without an intention to infringe.
Certificate in Software Testing Skill
TCS Business Domain Academy
Contents
Chapter-1
Introduction to Software Testing ...................................................................4
1.1
Introduction to Software Testing ........................................................................... 5
1.2
Software Testing Process ...................................................................................... 7
1.3
Testing Stream Roles & Responsibilities .............................................................. 10
Summary ........................................................................................................................ 16
References ...................................................................................................................... 18
Page 3 of 19
Certificate in Software Testing Skill
Chapter-1
TCS Business Domain Academy
Introduction to Software Testing
Introduction
Software testing is a process used to identify the correctness, completeness, and quality of
developed computer software. It includes a set of activities conducted with the intent of
finding errors in software so that it could be corrected before the product is released to the
end users.
This chapter will give you a basic understanding on software testing, principle, levels, myth
and other related terminologies.
Learning Objective
After reading this chapter, you will be able to understand:
•
What is Software Testing
•
Objective of Software Testing
•
When to Start and Stop Software Testing
•
Qualities of the good Tester
•
Software testing Principle
•
Testing Stream Role and Responsibilities.
•
Software Testing Myths
•
Levels of Software Testing
Page 4 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
1.1 Introduction to Software Testing
In this section we will know about overview, need, objective and understanding of software
testing.
1.1.1
Overview
“What is software testing?” is asked worldwide because of critical role software testing
plays in the day to day life of software development.
It is also said to be a talent to increase the quality of the software products. Software testing
is the operating of software under controlled circumstances to check whether the software
works as per expectation or not and to correct the errors, and also to ensure that we are
delivering the right and quality software what the user intends.
Software testing is a used to help in finding the correctness, completeness and quality of
developed computer software with in mind that, testing cannot completely create the
correctness of computer software.
We can also say that testing is a process of valuing a system or its components with the
intent to find out whether it fulfil the specified requirements or not. In simple words, testing
is executing a system in order to find any gaps, defects, missing requirements in against the
actual requirements.
As per ANSI/IEEE 1059 standard, testing can be well-defined as “A process of analysing a
software item to detect the differences between existing and required conditions (that is
bugs/defects/errors) and to evaluate the features of the software item”.
1.1.2
Need of Software Testing
There are several reason for software testing.
•
Complexity of software makes it error prone.
•
Untested or weekly tested software can cause losses in real life. e.g.
o
Disney's Lion King-1994-1995- The software did not work on the most
common systems that the public had.
o
Intel Pentium Floating-Point Division Bug- 1994 - Intel took a change of
more than $400 million to cover the costs of replacing bad chips.
Page 5 of 19
Certificate in Software Testing Skill
o
TCS Business Domain Academy
NASA Mars Polar Lander-1999- A software bug caused the tracking system
to be inaccurate after 14 hrs. Of operation.
o
Patriot missile defence system-1991-A software bug caused the tracking
system to be inaccurate after 14 hrs. Of operation.
•
A defect in the software has a root cause, while the effect of defect is seen as
impact by the different stake holder.
•
Testing is part of overall Quality Assurance-It covers the Quality control aspect of
ensuring Quality.
•
An anomaly in the software is called a bug or a defect. It may or may not lead to a
failure during the usage of the software.
•
Software testing may be required for compliance with contractual or legal
requirements.
•
1.1.3
To ensure that what we create does what it’s supposed to do.
Objective of Software Testing
Software testing have many objectives. Software testing helps to ensure that it meets all
the software requirements it was expected. Software testing helps to understand that the
software that is being tested is an error free. Software testing helps to give a quality
certification to client, that the software can be used by the client in his environment. It
ensures quality of the software application/product. Besides, all these keep in mind that it is
impossible to identify all errors, simply because it is not possible. As we know no human is
error free and the same with software’s too.
Software testing can be done in two below ways
•
Positive and
•
Negative
Positive software testing is a process by giving the expected data to know whether it works
as expected with expected data, whereas negative testing is a testing process by giving
what is unexpected, to get knowledge how the software reacts to such a data. Negative
software testing is also called illegal testing because the testing is using abnormal data.
Positive software testing is the general testing done to verify the functionality of the
software’s. Positive and Negative both types of testing helps us in finding errors/bugs.
Negative software testing is giving us a positive view about software testing itself and It
Page 6 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
helps us to know about the software behaviour behaves as expected or not. The objective
of a software tester should be to make the test cases. He should not think like a software
developer mind set.
1.1.4
Understanding Software Testing
Testing is the process of executing a program with the intent of finding errors -Myers
•
Quality Control (QC) is testing the software or product for its intended behaviour.
•
Quality Assurance (QA) testing the processes involved in developing and testing the
software or product
•
Verification is to found the truth of communication between a software product and
its specification.
•
Validation is to establish the worth or fitness of a software product for its
operational mission - Barry Boehm
o
Verification means “Are we building the product right?”
o
Validation means “Are we building the right product?”
1.2 Software Testing Process
In this section we will know about when to start & stop software testing, qualities of good
tester and software principle.
1.2.1
When to start Testing
Early beginning to software testing process decreases the cost and time to rework and
produce good quality (defect free) software. Software Development Life Cycle (SDLC),
software testing can be started from the Requirements Phase and continued till the
deployment phase of the software and it also depends on the used software development
model. For example, in waterfall model, testing is done in the testing phase but in the
incremental model testing is conducted at the end of every iteration/increment and the
complete application is tested at the end stage.
Software testing can be conducted in different forms at every phase of SDLC.
•
In requirement analysis phase, the analysis and verification of software
requirements are considered as testing.
•
In Software design phase, reviewing software design with the motive to improve
the design is also measured as testing.
Page 7 of 19
Certificate in Software Testing Skill
•
TCS Business Domain Academy
Software testing conducted by developer on completion of code development is
also called testing.
1.2.2
When to Stop Testing
It is Very difficult to decide when we have to stop testing, as testing is a never-ending
process and no one can say that a software is 100% tested and it’s free from error. The
below identifier are to be consider for stopping the testing process.
•
Testing deadlines & its validation of raised defects.
•
Completion of test case execution and it’s validation of raised bugs.
•
At Completion of code and functional coverage to a certain point and its validation
of raised bugs.
•
Defects rate fall down below a particular level and no high-priority defects are
identified and its validation of raised bugs closer.
•
1.2.3
Management decision.
Qualities of the good tester
Software tester require technical skills as their development counterparts, but the tester’s
mind set must have the below mentioned attributes.
Keen Observation
A tester should just not concern only about the test input and the expected output. He
should have a keen observation on the functioning of the application under test. Only then
he can think and test all possible test conditions that may not planned as part of test
designing.
Questioning Skills
Another most important aspect for a good tester should be the questioning skills. The tester
should not restrict him/her to simply verifying the functional specifications instead, start
questioning the behaviour of the application on every test condition. In that way, the
application can be verified against the given functional specifications as well as provide
some really better suggestions on the application’s functionality. After all an independent
tester is more like the end-user of the application and it is more important to test whether
the application is user-friendly in all ways.
Never give-up
Sometimes, in the first run of the test execution, no defects might be encountered. But as a
tester, he/she should develop the ‘Never give-up’ attitude and try to find alternative ways to
Page 8 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
unearth any possible defects. It would be very rare that the software is developed defectfree!
Interpersonal Skills
The challenge for a tester does not end with finding the defect and reporting it. He/she has
to maintain good relationship with the development team and good interpersonal skills
helps in early defect acknowledgment by the development team which is essential for
defect fixing and closure.
1.2.4
Software Testing Principle
Testing shows presence of bugs, not its absence
Software testing can show that bugs are present, but cannot verify that there are no
defects. Software testing reduces the chance of undiscovered bugs remaining in the
software product but, also if no defects are found, it is not a proof of accuracy.
Exhaustive Testing is impossible
Testing every functional and non-functional thing (all combinations of inputs and
preconditions) is not feasible except for insignificant cases. Instead of in-depth testing, risk
analysis and priorities should be used to aim testing efforts.
Early Testing
Testing actions should start as soon as possible and should be targeted on defined
objectives.
Defect Clustering
A small number of modules cover most of the bugs found during pre-release software
testing, or are accountable for the maximum operational failures.
Pesticide Paradox
If the same tests are repeated again and again, ultimately the same set of test cases will no
longer find any new bugs. To come out this “pesticide paradox”, the test cases required to
be regularly revised and reviewed.
Page 9 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
Testing is-context dependent
Testing is conducted differently in different contexts. For example, safety-critical software
is tested from an e-commerce site.
Absence-of-errors fallacy
Discovering and fixing bugs does not help if the system built is impracticable and does not
fulfil the users’ requirement and their need.
1.3
Testing Stream Roles & Responsibilities
In this section we will know about Testing Stream Roles & Responsibilities, Myth and Levels
of software testing.
1.3.1
Testing Stream Roles and Responsibilities
Figure 1 illustrates Testing Streams.
Figure 1 Testing Stream
Page 10 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
Test Engineer
Execute test cases as per test plans and log defects. Work closely with Test Lead / Analyst
to achieve desired objectives.
Test Analyst
Develop Test Cases, Test Scripts and Test Data. Prepare traceability matrix .Work closely
with testing team to achieve the desired test result.
Test Lead
Develop and manage Test Plans. Monitor test execution and track defects. Establish
Testing Environment, processes and implement methodologies. Report status of testing
and co-ordinate with end-users, testers and test manager.
Test Manager
Develop test strategy. Planning, effort estimation, resource management and training.
Manage and deliver the Testing team activities. Establish, track and improve process
efficiencies.
Test Automation Engineer
Prepare test automation design based on the test automation architecture and framework
defined for the project. Define standards and guidelines for automation.
Test Strategist
Design testing framework including automated testing. Review testing deliverable.
Analyse testing tools and recommend for use. Define test strategy. Define Metrics.
Test Process Consultant
Assess testing processes and recommend improvement action plan. Assess test
automation feasibility. Prepare assessment plan and coordinate with the project/program
stakeholders.
Test CoE Lead
Training and competency development. Standardize process and methodology. Maintain
knowledge repository. Produce reporting metrics for higher management and customer.
Page 11 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
Business Analyst
Prepare high level test scenarios based on business scenarios and requirements. Analyse
requirements for accuracy and completeness from a business perspective. Review high
level test scenarios prepared.
Test Consultant
Assess testing processes and recommend improvement action plan. Prepare assessment
plan and coordinate with the project/program stakeholders. Pre-sales/ business
development.
Test Automation Consultant
Automation feasibility analysis and tool evaluation. Automation approach and roadmap.
Pre-sales/ business development. Creation of assets. Product review/ keep abreast of
developments in product space.
Test Center Delivery Manager
End-to-end management of testing delivery for multiple projects / initiatives. Identify and
monitor issues, risks and concerns at test centre level. Reporting to Customer
Management to establish Client expectations.
1.3.2
Software testing Myth
Myth 1 - : Testing is costly
Fact: There is a proverb pay less for testing during development or pay more for software
maintenance later point of time. Early testing saves cost and time both in several aspects,
however falling the cost without testing may result unusable product.
Myth 2 -: Only completely developed products are tested.
Fact: No doubt, testing hang-on on the source code but reviewing software requirements
and developing test cases for the same is independent from the developed code. However
incremental or iterative approach as a SDLC development life cycle model may decrease
the need of testing on the completely developed software.
Myth 3- : Testing is time consuming
Fact: Testing is never a time consuming process during software development life cycle
but spotting and closing the defects find out during testing is a time consuming job but is a
productive activities.
Page 12 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
Myth 4-: Complete testing is possible
Fact: It is becomes an issue when stakeholder thinks that full testing is possible. It is might
possible that all paths have been tested by the team but incidence of complete testing is
impossible. There might be some situations that are not executed by the testing team or
by the client during the SDLC and may be executed when the project has been deployed.
Myth 5- : Testing is easy activity.
Fact: Testing can be problematic and challenging (sometimes, even more so than coding
activity).
Myth 6- : Automated testing removes the need for manual testing
Fact: 100% test automation never be reached. Manual Testing, to some level is always
essential.
Myth 7 - : A tested software is defect free
Fact: This is a common myth that the stakeholders trusts in. Nobody can claim with 100 %
certainty that a software application is fully defect free even if a tester with excellent
testing skills has tested the software.
Myth 8 - : When a bugs slips, it is the fault of the testers
Fact: It is not proper approach to guilt testers for defects that persist in the application
even after several rounds of testing has been performed by testers. This myth tells to
Time, cost, and requirements changing Constraints. However the test strategy may also
result in defects being missed by the test team.
Myth 9- : Testers are responsible for quality of product.
Fact: Quality is the responsibility of all stakeholders, including developers, of a project. It is
a very general misunderstanding that only testers or the test team should be accountable
for the product quality. Testers’ tasks contain the identification of defects to the
stakeholders and then it is their choice whether they will fix and close the defects or
release the software. There is more pressures on tester at the time of releasing the
software, as they will be blamed for any defects.
Page 13 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
Myth 10 -: Testing is not a creative activity
Fact: Creativity can be practical when framing test approaches, when designing test cases,
and even when executing test cases.
Myth 11-: Tester only task is to find defects
Fact: Finding defects in a software is the task of the software testers, but at the same time,
they are domain experts of the specific software. Developers are responsible for the
particular component or area that is allocated to them but testers know the overall
workings of the software, its dependencies, and the effects of one module to another
modules.
Myth 12 - : Anyone can do testing
Fact: People outside from the IT industry are thinking and even believe that anyone can
test a software product and testing is not a creative job. However testers understand very
well that this is a myth. Thinking other scenarios, try to smash a software with the intent to
discover potential defects is not possible for the person who developed it.
Myth 13 -: Test Automation should be used wherever possible to reduce time
Fact: Yes, this is true that test automation reduces the testing effort time, but it is never
possible to start test automation at any point time during software development life cycle.
This test automaton should be started when the software has been manually tested at
least once and is stable to some extent. Moreover, test automation cannot be used if
requirements keep on changing.
1.3.3
Levels of Testing
There are usually FOUR levels of tests in Software Testing Life Cycle. Unit testing,
integration testing, system testing and User acceptance testing.
Unit Testing:
The testing is conducted by the developer to test whether functions related to the module
are behaving as expected or not. This is first round of testing and fully focused on specific
unit or components of the software. Biggest benefits of this testing phase is that it can be
run every time a piece of code is changed, which enable quick resolution of issues.
Page 14 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
Integration Testing:
Integration testing allows the opportunity to combine all units with in the program and test
them. This testing is design to find the interface issue between units/modules. This testing
is beneficial to determine how efficiently the units are running together.
System Testing
The complete application is tested as a full in System testing level. The objective of this
level of testing is to check whether the system has completed all requirements and qualities
standard or not. This testing is performed in performed in closely mirrors of production
environment. This level of testing is very important because it verifies the application
whether it’s fulfilling technical, functional and business requirements set by the customer or
not.
User Acceptance Testing
User Acceptance testing (UAT) is final level testing and is conducted to determine whether
the system is ready to release or not. During SDLC, requirement changes can sometime
misunderstood in a fashion that does not full-fill the required needs of the users. This level
of testing is generally done by client in their UAT environment to find out whether the
application meets their business needs or not. After successful completion and approval,
the program will then be delivered to production environment.
Page 15 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
Summary
•
Software Testing is a process used to help identify the correctness, completeness
and quality of developed computer software. With that in mind, testing can never
completely establish the correctness of computer software.
•
According to ANSI/IEEE 1059 standard, Testing can be defined as - A process of
analysing 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.
•
An early start to software testing process reduces the cost and time to rework and
produce good quality / error free software.
•
Qualities of the good tester
a) Keen Observation
b) Questioning Skills
c) Never give-up
d) Interpersonal Skills
•
Testing Stream Roles and Responsibilities
a) Test Engineer: Execute test cases as per test plans and log defects. Work
closely with Test Lead / Analyst to achieve desired objectives.
b) Test Analyst: Develop Test Cases, Test Scripts and Test Data. Prepare
traceability matrix .Work closely with testing team to achieve the desired test
result.
c) Test Lead: Develop and manage Test Plans. Monitor test execution and track
defects.
Establish
Testing
Environment,
processes
and
implement
methodologies. Report status of testing and co-ordinate with end-users, testers
and test manager.
d) Test Manager: Develop test strategy. Planning, effort estimation, resource
management and training. Manage and deliver the Testing team activities.
Page 16 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
e) Test Automation Engineer: Prepare test automation design based on the test
automation architecture and framework defined for the project. Define
standards and guidelines for automation.
f)
Test Strategist: Design testing framework including automated testing. Review
testing deliverable. Analyse testing tools and recommend for use. Define test
strategy. Define Metrics.
g) Test Process Consultant: Assess testing processes and recommend
improvement action plan. Assess test automation feasibility.
h) Test CoE Lead: Training and competency development. Standardize process
and methodology. Maintain knowledge repository.
i)
Business Analyst: Prepare high level test scenarios based on business scenarios
and requirements. Analyse requirements for accuracy and completeness from a
business perspective. Review high level test scenarios prepared.
j)
Test Consultant: Assess testing processes and recommend improvement action
plan. Prepare assessment plan and coordinate with the project/program
stakeholders. Pre-sales/ business development.
k) Test Automation Consultant: Automation feasibility analysis and tool
evaluation. Automation approach and roadmap.
l)
Test Centre Delivery Manager: End-to-end management of testing delivery for
multiple projects / initiatives. Identify and monitor issues, risks and concerns at
test centre level. Reporting to Customer Management to establish Client
expectations.
Page 17 of 19
Certificate in Software Testing Skill
TCS Business Domain Academy
References
•
https://tcsltd.skillport.com/skillportfe/main.action#summary/VIDEOS/RW$88447:_
ss_video:87822 – Watch Video for additional knowledge on “Why Test?”
•
https://tcsltd.skillport.com/skillportfe/main.action#summary/VIDEOS/RW$88449:_
ss_video:87824 -- Watch Video for additional knowledge on “Testing Objectives”
Page 18 of 19
Download