Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Software testing & Quality Assurance
 Several definitions:
“Testing is the process of establishing confidence
that a program or system does what it is supposed
to.”by Hetzel 1973
“Testing is the process of executing a program or
system with the intent of finding errors.” by
Myers 1979
“Testing is any activity aimed at evaluating an
attribute or capability of a program or system and
determining that it meets its required results.” by
Hetzel 1983
 One of very important software development phases
A software process based on well-defined software quality
control and testing standards, testing methods, strategy, test
criteria, and tools.
Engineers perform all types of software testing activities to
perform a software test process.
The last quality checking point for software on its production
line
 Software testing is about testing a feature by applying test
data to get a result and then comparing the actual result with
expected result.
Expected Result = Its from client side
Actual Result = Its obtain after a test execution.
It is not only finding the defect in the s/w; it is the completely
dedicated discipline of evaluating the quality of s/w
It depends on the process and the associated stakeholders of the
project(s). In the IT industry, large companies have a team with
responsibilities to evaluate the developed software in context of
the given requirements. Moreover, developers also conduct
testing which is called Unit Testing. In most cases, the following
professionals are involved in testing a system within their
respective capacities:
◦ Software Tester
◦ Software Developer
◦ Project Lead/Manager
◦ 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.
It is not possible to test the software at any time during its cycle.
The next two sections state when testing should be started and
when to end it during the SDLC.
 Software testing is really required to point out the defects and
errors that were made during the development phases.
 It’s essential since it makes sure of the Customer’s reliability and
their satisfaction in the application.
 It is very important to ensure the Quality of the product. Quality
product delivered to the customers helps in gaining their
confidence.
 Testing is necessary in order to provide the facilities to the
customers like the delivery of high quality product or software
application which requires lower maintenance cost and hence
results into more accurate, consistent and reliable results.
 Testing is required for an effective performance of software
application or product.
 It’s important to ensure that the application should not result
into any failures because it can be very expensive in the future or
in the later stages of the development.
 It’s required to stay in the business.
1) Testing shows presence of defects: Testing can show the defects are present, but
cannot prove that there are no defects. Even after testing the application or
product thoroughly we cannot say that the product is 100% defect free.
2) Exhaustive testing is impossible: Testing everything including all combinations of
inputs and preconditions is not possible. So, instead of doing the exhaustive
testing we can use risks and priorities to focus testing efforts
3) Early testing: In the software development life cycle testing activities should start
as early as possible and should be focused on defined objectives.
4) Defect clustering: A small number of modules contains most of the defects
discovered during pre-release testing or shows the most operational failures.
5) Pesticide paradox: If the same kinds of tests are repeated again and again,
eventually the same set of test cases will no longer be able to find any new bugs.
To overcome this “Pesticide Paradox”.
6) Testing is context depending: Testing is basically context dependent. Different
kinds of sites are tested differently. For example, safety – critical software is
tested differently from an e-commerce site.
7) Absence – of – errors fallacy: If the system built is unusable and does not fulfil the
user’s needs and expectations then finding and fixing defects does not help.
 The five stages of the fundamental
• Test Planning and Control
• Test Analysis and Design
• Test Implementation and Execution
• Evaluating Exit Criteria and Reporting
• Test Closure Activities
 5 Phases of the Fundamental Test Process
Fix test design and repeat
Fix component or test cases/scripts
and repeat
Test
Planning
and Control
Test
Analysis
and Design
Test
Implementation
and Execution
Evaluating Exit
Criteria and
Reporting
Test Closure
Activities
Fix component test plan and repeat
Fix test design and repeat
 Testing, Quality Assurance and Quality
Control
 Most people get confused when it comes to pin down the differences
among Quality Assurance, Quality Control, and Testing. Although they
are interrelated and to some extent, they can be considered as same
activities, but there exist distinguishing points that set them apart.
 The following table lists the points that differentiate QA, QC, and
Testing.
Quality Assurance Quality Control Testing
QA includes activities that
ensure the implementation of
processes, procedures and
standards in context to
verification of developed
software and intended
requirements.
It includes activities that
ensure the verification of a
developed software with
respect to documented (or not
in some cases) requirements.
It includes activities that
ensure the identification of
bugs/error/defects in a
software.
Focuses on processes and
procedures rather than
conducting actual testing on
the system.
Focuses on actual testing by
executing the software with an
aim to identify bug/defect
through implementation of
procedures and process.
Focuses on actual testing.
Process-oriented activities. Product-oriented activities. Product-oriented activities.
Preventive activities. It is a corrective process. It is a preventive process.
It is a subset of Software Test
Life Cycle (STLC).
QC can be considered as the
subset of Quality Assurance.
Testing is the subset of Quality
Control.
 Some of the other standards related to QA and Testing processes are
mentioned below:
 IEEE 829 Test Documentation.
 IEEE 830 A guide for developing system requirements
specifications
 IEEE 730 A standard for software quality assurance plans.
 IEEE 1008 Unit Testing.
 IEEE 12207 A standard for software life cycle processes and
life cycle data
 BS 7925-1 Vocabulary of Terms in Software Testing.
 BS 7925-2 Software Component Testing Standard.
 This section describes the different types of testing that may be used to test a software
during SDLC.
 Manual Testing:-Manual testing includes testing a software manually, i.e., without using any
automated tool or any script. In this type, the tester takes over the role of an end-user and
tests the software to identify any unexpected behaviour or bug. There are different stages
for manual testing such as unit testing, integration testing, system testing, and user
acceptance testing.
Testers use test plans, test cases, or test scenarios to test a software to ensure the
completeness of testing. Manual testing also includes exploratory testing, as testers explore
the software to identify errors in it.
 Automation Testing:- Automation testing, which is also known as Test Automation, is when
the tester writes scripts and uses another software to test the product. This process involves
automation of a manual process. Automation Testing is used to re-run the test scenarios that
were performed manually, quickly, and repeatedly.
The following tools can be used for automation testing:
 HP Quick Test Professional
 Selenium
 IBM Rational Functional Tester
 Silk Test
 Test Complete
 Testing Anywhere
 Win Runner
 Load Runner
 Visual Studio Test Professional
 WATIR
 There are three type of testing:-
1) White Box Testing:-
◦ Unit Testing
◦ Structural Testing
 2) Black Box Testing:-
◦ Functional Testing
◦ Integration testing
◦ System Testing
◦ Usability Testing
◦ Compatibility Testing
◦ Configuration Testing
◦ Concurrency Testing
 3) Non Functional Testing:-
◦ Security Testing
◦ Automation Testing
◦ Performance Testing
◦ Load Testing
◦ Stress Testing
◦ Volume Testing
◦ Recovery Testing
 Testing documentation involves the documentation of artifacts that should be
developed before or during the testing of Software.
 Documentation for software testing helps in estimating the testing effort required,
test coverage, requirement tracking/tracing, etc. This section describes some of
the commonly used documented artifacts related to software testing such as:
Test Plan
Test Scenario
Test Case
Traceability Matrix
 Following skills are indispensable to become a good software tester. Compare your skill set
against the following checklist to determine whether Software Testing is a really for you-
 A good software tester should have sharp analytical skills. Analytical skills will help break up
a complex software system into smaller units to gain a better understanding and created
corresponding test cases.
 A good software tester must have strong technical skills . This would include high level of
proficiency in tools like MS Office , Open Office etc , Testing tools like QTP , Load runner, etc..
and of course deep understand of the application under test.
 A good software tester must have a good verbal and written communication skill.
 Testing at times could be a demanding job especially during the release of code. A software
tester must efficiently manage workload, have high productivity ,exhibit optimal time
management and organization skills
 To be a good software tester you must have a GREAT attitude. An attitude to ‘test to break' ,
detail orientation , willingness to learn and suggest process improvements.
 To excel in any profession or job, one must have a great degree of the passion for it. A
software tester must have passion for his / her field. BUT how do you determine whether
you have a passion for software testing if you have never tested before?
 Academic background of a software tester should be in Computer Science. A
BTech/ B.E. , MCA , BCA , BSc- Computers will land you a job easily.
 If you do not hold any of these degrees than you must complete a software testing
certification like ISTQB and CSTE which help you learn Software Development/ Test
Life Cycle and other testing methodologies.
Software testing & Quality Assurance
 As mentioned above, from being test engineer one can move to senior
test engineer, test lead to test manager; else can become QA lead, QA
Manager. The options available in the testing tools side are enormous.
There are numbers of functional, performance, security testing tools
besides test management tools like Quality Centre from HP, CQTM from
IBM etc.,
 The demand for niche skills like SOA testers, Security testers are on the
increase. There is dearth of skills in test automation areas – scripting skills
in the tools languages like VB, Java and other scripting languages like Perl,
Shell, Python etc., Technical resources with capabilities to evaluate
automation tools, create automation framework and reusable
components are on demand. Always there is demand for good
performance testers who can analyze the performance test results,
identify the bottlenecks and suggest tuning techniques.
 Software Tester Salary (India)
 The average pay for a Software Tester is Rs 310,575 per year. People in this job generally
don't have more than 10 years' experience. Experience strongly influences salary for this job.
The skills that increase pay for this job the most are Test Automation, Test Planning, and SQL.
 Software Tester Salary (United States)
 A Software Tester earns an average salary of $55,334 per year. Most people with this job
move on to other positions after 20 years in this career. The highest paying skills associated
with this job are ASP. NET and .NET.
Software testing & Quality Assurance
 Software testing professionals are in huge demand both in India and
abroad. Indian Testing Board has more than 30, 000 certified testers in
International Software Testing Qualifications Board (ISTQB) foundation
level exam. It is globally accepted certification for software testers.
Software testing is more challenging domain. At the same time, it offer
lucrative salary package for talented professionals. Every day, hundreds
of new software applications are launched in the market. As a result,
there is huge demand for software testers who can validate software
product at various levels.
 According to recent survey, India is going to be the popular software
outsourcing destination in world because of its operational efficiency
and talented workforce. As a software tester, you career advancement
will follow the following hierarchy.
 Junior Test Engineer –> Test Engineer –> Senior Test Engineer –> Team
Lead –> Project Manager
Software testing & Quality Assurance

More Related Content

Software testing & Quality Assurance

  • 2.  Several definitions: “Testing is the process of establishing confidence that a program or system does what it is supposed to.”by Hetzel 1973 “Testing is the process of executing a program or system with the intent of finding errors.” by Myers 1979 “Testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results.” by Hetzel 1983
  • 3.  One of very important software development phases A software process based on well-defined software quality control and testing standards, testing methods, strategy, test criteria, and tools. Engineers perform all types of software testing activities to perform a software test process. The last quality checking point for software on its production line  Software testing is about testing a feature by applying test data to get a result and then comparing the actual result with expected result. Expected Result = Its from client side Actual Result = Its obtain after a test execution. It is not only finding the defect in the s/w; it is the completely dedicated discipline of evaluating the quality of s/w
  • 4. It depends on the process and the associated stakeholders of the project(s). In the IT industry, large companies have a team with responsibilities to evaluate the developed software in context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. In most cases, the following professionals are involved in testing a system within their respective capacities: ◦ Software Tester ◦ Software Developer ◦ Project Lead/Manager ◦ 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. It is not possible to test the software at any time during its cycle. The next two sections state when testing should be started and when to end it during the SDLC.
  • 5.  Software testing is really required to point out the defects and errors that were made during the development phases.  It’s essential since it makes sure of the Customer’s reliability and their satisfaction in the application.  It is very important to ensure the Quality of the product. Quality product delivered to the customers helps in gaining their confidence.  Testing is necessary in order to provide the facilities to the customers like the delivery of high quality product or software application which requires lower maintenance cost and hence results into more accurate, consistent and reliable results.  Testing is required for an effective performance of software application or product.  It’s important to ensure that the application should not result into any failures because it can be very expensive in the future or in the later stages of the development.  It’s required to stay in the business.
  • 6. 1) Testing shows presence of defects: Testing can show the defects are present, but cannot prove that there are no defects. Even after testing the application or product thoroughly we cannot say that the product is 100% defect free. 2) Exhaustive testing is impossible: Testing everything including all combinations of inputs and preconditions is not possible. So, instead of doing the exhaustive testing we can use risks and priorities to focus testing efforts 3) Early testing: In the software development life cycle testing activities should start as early as possible and should be focused on defined objectives. 4) Defect clustering: A small number of modules contains most of the defects discovered during pre-release testing or shows the most operational failures. 5) Pesticide paradox: If the same kinds of tests are repeated again and again, eventually the same set of test cases will no longer be able to find any new bugs. To overcome this “Pesticide Paradox”. 6) Testing is context depending: Testing is basically context dependent. Different kinds of sites are tested differently. For example, safety – critical software is tested differently from an e-commerce site. 7) Absence – of – errors fallacy: If the system built is unusable and does not fulfil the user’s needs and expectations then finding and fixing defects does not help.
  • 7.  The five stages of the fundamental • Test Planning and Control • Test Analysis and Design • Test Implementation and Execution • Evaluating Exit Criteria and Reporting • Test Closure Activities
  • 8.  5 Phases of the Fundamental Test Process Fix test design and repeat Fix component or test cases/scripts and repeat Test Planning and Control Test Analysis and Design Test Implementation and Execution Evaluating Exit Criteria and Reporting Test Closure Activities Fix component test plan and repeat Fix test design and repeat
  • 9.  Testing, Quality Assurance and Quality Control  Most people get confused when it comes to pin down the differences among Quality Assurance, Quality Control, and Testing. Although they are interrelated and to some extent, they can be considered as same activities, but there exist distinguishing points that set them apart.  The following table lists the points that differentiate QA, QC, and Testing.
  • 10. Quality Assurance Quality Control Testing QA includes activities that ensure the implementation of processes, procedures and standards in context to verification of developed software and intended requirements. It includes activities that ensure the verification of a developed software with respect to documented (or not in some cases) requirements. It includes activities that ensure the identification of bugs/error/defects in a software. Focuses on processes and procedures rather than conducting actual testing on the system. Focuses on actual testing by executing the software with an aim to identify bug/defect through implementation of procedures and process. Focuses on actual testing. Process-oriented activities. Product-oriented activities. Product-oriented activities. Preventive activities. It is a corrective process. It is a preventive process. It is a subset of Software Test Life Cycle (STLC). QC can be considered as the subset of Quality Assurance. Testing is the subset of Quality Control.
  • 11.  Some of the other standards related to QA and Testing processes are mentioned below:  IEEE 829 Test Documentation.  IEEE 830 A guide for developing system requirements specifications  IEEE 730 A standard for software quality assurance plans.  IEEE 1008 Unit Testing.  IEEE 12207 A standard for software life cycle processes and life cycle data  BS 7925-1 Vocabulary of Terms in Software Testing.  BS 7925-2 Software Component Testing Standard.
  • 12.  This section describes the different types of testing that may be used to test a software during SDLC.  Manual Testing:-Manual testing includes testing a software manually, i.e., without using any automated tool or any script. In this type, the tester takes over the role of an end-user and tests the software to identify any unexpected behaviour or bug. There are different stages for manual testing such as unit testing, integration testing, system testing, and user acceptance testing. Testers use test plans, test cases, or test scenarios to test a software to ensure the completeness of testing. Manual testing also includes exploratory testing, as testers explore the software to identify errors in it.  Automation Testing:- Automation testing, which is also known as Test Automation, is when the tester writes scripts and uses another software to test the product. This process involves automation of a manual process. Automation Testing is used to re-run the test scenarios that were performed manually, quickly, and repeatedly.
  • 13. The following tools can be used for automation testing:  HP Quick Test Professional  Selenium  IBM Rational Functional Tester  Silk Test  Test Complete  Testing Anywhere  Win Runner  Load Runner  Visual Studio Test Professional  WATIR
  • 14.  There are three type of testing:- 1) White Box Testing:- ◦ Unit Testing ◦ Structural Testing  2) Black Box Testing:- ◦ Functional Testing ◦ Integration testing ◦ System Testing ◦ Usability Testing ◦ Compatibility Testing ◦ Configuration Testing ◦ Concurrency Testing  3) Non Functional Testing:- ◦ Security Testing ◦ Automation Testing ◦ Performance Testing ◦ Load Testing ◦ Stress Testing ◦ Volume Testing ◦ Recovery Testing
  • 15.  Testing documentation involves the documentation of artifacts that should be developed before or during the testing of Software.  Documentation for software testing helps in estimating the testing effort required, test coverage, requirement tracking/tracing, etc. This section describes some of the commonly used documented artifacts related to software testing such as: Test Plan Test Scenario Test Case Traceability Matrix
  • 16.  Following skills are indispensable to become a good software tester. Compare your skill set against the following checklist to determine whether Software Testing is a really for you-
  • 17.  A good software tester should have sharp analytical skills. Analytical skills will help break up a complex software system into smaller units to gain a better understanding and created corresponding test cases.  A good software tester must have strong technical skills . This would include high level of proficiency in tools like MS Office , Open Office etc , Testing tools like QTP , Load runner, etc.. and of course deep understand of the application under test.  A good software tester must have a good verbal and written communication skill.  Testing at times could be a demanding job especially during the release of code. A software tester must efficiently manage workload, have high productivity ,exhibit optimal time management and organization skills  To be a good software tester you must have a GREAT attitude. An attitude to ‘test to break' , detail orientation , willingness to learn and suggest process improvements.  To excel in any profession or job, one must have a great degree of the passion for it. A software tester must have passion for his / her field. BUT how do you determine whether you have a passion for software testing if you have never tested before?
  • 18.  Academic background of a software tester should be in Computer Science. A BTech/ B.E. , MCA , BCA , BSc- Computers will land you a job easily.  If you do not hold any of these degrees than you must complete a software testing certification like ISTQB and CSTE which help you learn Software Development/ Test Life Cycle and other testing methodologies.
  • 20.  As mentioned above, from being test engineer one can move to senior test engineer, test lead to test manager; else can become QA lead, QA Manager. The options available in the testing tools side are enormous. There are numbers of functional, performance, security testing tools besides test management tools like Quality Centre from HP, CQTM from IBM etc.,  The demand for niche skills like SOA testers, Security testers are on the increase. There is dearth of skills in test automation areas – scripting skills in the tools languages like VB, Java and other scripting languages like Perl, Shell, Python etc., Technical resources with capabilities to evaluate automation tools, create automation framework and reusable components are on demand. Always there is demand for good performance testers who can analyze the performance test results, identify the bottlenecks and suggest tuning techniques.
  • 21.  Software Tester Salary (India)  The average pay for a Software Tester is Rs 310,575 per year. People in this job generally don't have more than 10 years' experience. Experience strongly influences salary for this job. The skills that increase pay for this job the most are Test Automation, Test Planning, and SQL.
  • 22.  Software Tester Salary (United States)  A Software Tester earns an average salary of $55,334 per year. Most people with this job move on to other positions after 20 years in this career. The highest paying skills associated with this job are ASP. NET and .NET.
  • 24.  Software testing professionals are in huge demand both in India and abroad. Indian Testing Board has more than 30, 000 certified testers in International Software Testing Qualifications Board (ISTQB) foundation level exam. It is globally accepted certification for software testers. Software testing is more challenging domain. At the same time, it offer lucrative salary package for talented professionals. Every day, hundreds of new software applications are launched in the market. As a result, there is huge demand for software testers who can validate software product at various levels.  According to recent survey, India is going to be the popular software outsourcing destination in world because of its operational efficiency and talented workforce. As a software tester, you career advancement will follow the following hierarchy.  Junior Test Engineer –> Test Engineer –> Senior Test Engineer –> Team Lead –> Project Manager

Editor's Notes

  1. Software Testing & Quality Assurance
  2. START - This diagram shows the sequence of the 5 activities and the relationship between them. There are loops in the process as defects are found. During the Test Implementation stage we often have to re-execute tests following defect fixes as well as run regression tests (hence the internal loop) and may need to repair faulty tests and re-execute them (hence the loop back to the previous stage). It is during the ‘Evaluating Exit Criteria and Reporting’ stage that we may need to consider designing more tests (hence the loop back to the previous 2 stages).