You are on page 1of 51

UNIT-II

Problem Tracking Systems - Objectives, Tasks, Overview, Users,


Mechanics, Further Thoughts on Problem.
Reporting Test Case Design - Characteristics of a Good Test,
Equivalence Classes and Boundary Values,
Visible State Transitions, Race Conditions, Load Testing, Error
Guessing, Function Equivalence Testing,
Regression Testing, Executing the Tests. Building a Software Testing
Strategy, Establishing a Software Testing
Methodology.
(Prescribed Book 1: Chapter - 6,7,8)
Problem tracking System
HTTPS://WWW.SLIDESHAR
E.NET/SONALI555/THE-PRO
BLEM-TRACKING-SYSTEM
Reporting Test Case Design
TEST CASE DESIGN TECHNIQUES TO ENSURE HIGH-QUALITY SOFTWARE
1. A BASIC EXAMPLE OF TEST CASE DESIGN: TITLE: LOGIN TO THE WEBSITE OR
APP.
2. BOUNDARY VALUE ANALYSIS (BVA)
3. EQUIVALENCE PARTITIONING (EP)
4. DECISION TABLE TESTING.
5. STATE TRANSITION DIAGRAMS.

6. USE CASE TESTING.


7. STATEMENT TESTING & COVERAGE.
8. DECISION TESTING COVERAGE.
Characteristics of a good test
A test suite is a collection of tests that you can run against a piece of software. The goal is for these tests
to catch any errors in your software before you make it available to the end user.
 Fast
 Complete
 Reliable
 Isolated
 Maintainable
 Expressive
Fast:
As you learn more about tests in the context of full-stack web applications, you will find that some types
of tests, called unit tests, are fast, while other tests, called integration tests, are slower.
A fast test suite will provide feedback more quickly, and thus, make the development process more
efficient than a slow test suite. Often, a developer who is trying to fix a bug will need to run the test suite
multiple times to see if their implementation addresses the issue.
COMPLETE:
A TEST SUITE THAT COVERS 100% OF YOUR CODEBASE WILL CATCH ANY ERRORS THAT ARISE FROM
CHANGING OR ADDING CODE APPLICATION. A COMPLETE TEST SUITE PROVIDES YOU WITH CONFIDENCE THAT
YOUR SOFTWARE IS WORKING AS EXPECTED. THIS CHARACTERISTIC CAN OFTEN RUN IN CONFLICT WITH
BUILDING A FAST TEST SUITE — AS YOU INVESTIGATE TESTING FURTHER, YOU WILL LEARN ABOUT
STRATEGIES THAT HELP YOU OPTIMIZE YOUR TEST SUITE FOR SPEED AND COMPLETENESS.
RELIABLE:
A RELIABLE TEST SUITE IS ONE THAT PROVIDES CONSISTENT FEEDBACK, REGARDLESS OF CHANGES THAT
MAY OCCUR OUTSIDE THE SCOPE OF A GIVEN TEST. AN UNRELIABLE TEST SUITE MAY HAVE TESTS THAT FAIL
INTERMITTENTLY, WITH NO HELPFUL FEEDBACK ABOUT CHANGES YOU’VE MADE TO YOUR APPLICATION.
IF A DEVELOPER IS TRYING TO ADDRESS A BUG IN THEIR CODEBASE, THEY WILL NEED TO RUN THEIR TEST
SUITE A FEW TIMES TO SEE IF THEY’VE ADDRESSED THE ISSUE.
ISOLATED
AN ISOLATED TEST SUITE CONTAINS TESTS THAT RUN WITHOUT IMPACTING OTHER TESTS IN THE SUITE. THIS MAY REQUIRE YOU TO
CLEANUP PERSISTING DATA AFTER YOU RUN A TEST IN YOUR SUITE.

FOR EXAMPLE, YOU MAY WANT TO TEST WHETHER YOUR SOFTWARE PROPERLY WRITES TO A DATABASE. YOU DON’T WANT ANY CHANGES
TO THE DATABASE PERSISTING OUTSIDE OF THIS TEST. IF A CHANGE TO THE DATABASE DOES PERSIST, IT MAY CAUSE UNEXPECTED
BEHAVIOR IN A TEST THAT READS FROM THE DATABASE.

MAINTAINABLE
A MAINTAINABLE TEST SUITE IS EASY TO MANIPULATE — YOU SHOULD BE ABLE TO ADD, CHANGE, OR REMOVE TESTS WITH EASE. IF YOU
DON’T KNOW HOW TO ADD TESTS TO RUN AGAINST NEW FEATURES, YOUR TEST SUITE MAY BECOME INCOMPLETE AND INEFFECTIVE.

THE BEST WAY TO KEEP YOUR TEST SUITE MAINTAINABLE IS TO BE ORGANIZED, FOLLOW CODING BEST PRACTICES, AND DEVELOP A
CONSISTENT PROCESS THAT WORKS FOR YOU AND YOUR TEAM.
EXPRESSIVE:
THE EASY-TO-READ NATURE OF TEST SUITES MAKE THEM A GREAT
FORM OF DOCUMENTATION. YOU SHOULD ALWAYS WRITE CODE
THAT IS DESCRIPTIVE OF THE FEATURES YOU ARE TESTING.

YOU SHOULD TRY TO BUILD A TEST SUITE THAT IS DESCRIPTIVE


ENOUGH FOR ANOTHER DEVELOPER TO READ, AND BE ABLE TO
FULLY UNDERSTAND THE PURPOSE OF THE WEB APPLICATION. 
EQUIVALENCE CLASSES / PARTITIONING:

EQUIVALENCE PARTITIONING OR EQUIVALENCE CLASS PARTITIONING (ECP) IS A SOFTWARE TESTING TECHNIQUE THAT DIVIDES THE INPUT
DATA OF A SOFTWARE UNIT INTO PARTITIONS OF EQUIVALENT DATA FROM WHICH TEST CASES CAN BE DERIVED. IN PRINCIPLE, TEST CASES
ARE DESIGNED TO COVER EACH PARTITION AT LEAST ONCE.

BOUNDARY VALUE ANALYSIS AND EQUIVALENCE PARTITIONING TESTING

PRACTICALLY, DUE TO TIME AND BUDGET CONSIDERATIONS, IT IS NOT POSSIBLE TO PERFORM EXHAUSTING TESTING FOR EACH SET OF
TEST DATA, ESPECIALLY WHEN THERE IS A LARGE POOL OF INPUT COMBINATIONS.
WE NEED AN EASY WAY OR SPECIAL TECHNIQUES THAT CAN SELECT TEST CASES INTELLIGENTLY FROM THE POOL OF TEST-CASE, SUCH
THAT ALL TEST SCENARIOS ARE COVERED.
WE USE TWO TECHNIQUES - EQUIVALENCE PARTITIONING & BOUNDARY VALUE ANALYSIS TESTING TECHNIQUES TO ACHIEVE THIS.
Equivalence Partitioning
Equivalence Partitioning or Equivalence Class Partitioning is type of black box testing technique which can be
applied to all levels of software testing like unit, integration, system, etc. In this technique, input data units are
divided into equivalent partitions that can be used to derive test cases which reduces time required for testing
because of small number of test cases.

It divides the input data of software into different equivalence data classes.
You can apply this technique, where there is a range in the input field.
Example 1: Equivalence and Boundary Value
•Let's consider the behavior of Order Pizza Text Box Below
•Pizza values 1 to 10 is considered valid. A success message is shown.
•While value 11 to 99 are considered invalid for order and an error message will appear, "Only 10 Pizza can
be ordered"

Order Pizza: submit


Here is the test condition
1.Any Number greater than 10 entered in the Order Pizza field(let say 11) is considered invalid.
2.Any Number less than 1 that is 0 or below, then it is considered invalid.
3.Numbers 1 to 10 are considered valid
4.Any 3 Digit Number say -100 is invalid.

We cannot test all the possible values because if done, the number of test cases will be more than 100. To
address this problem, we use equivalence partitioning hypothesis where we divide the possible values of
tickets into groups or sets as shown below where the system behavior can be considered the same.
The divided sets are called Equivalence Partitions or Equivalence Classes. Then we pick only one value from
each partition for testing. The hypothesis behind this technique is that if one condition/value in a partition
passes all others will also pass. Likewise, if one condition in a partition fails, all other conditions in that
partition will fail.
Boundary Value Analysis- in Boundary Value Analysis, you test boundaries between equivalence
partitions
 Why Equivalence & Boundary Analysis Testing
1. This testing is used to reduce a very large number of test cases to manageable chunks.
2. Very clear guidelines on determining test cases without compromising on the effectiveness of testing.
3. Appropriate for calculation-intensive applications with a large number of variables/inputs
 Summary:
• Boundary Analysis testing is used when practically it is impossible to test a large pool of test cases individually
• Two techniques - Boundary value analysis and equivalence partitioning testing techniques are used
• In Equivalence Partitioning, first, you divide a set of test condition into a partition that can be considered.
• In Boundary Value Analysis you then test boundaries between equivalence partitions
• Appropriate for calculation-intensive applications with variables that represent physical quantitie
What is visible State Transition Testing?
STATE TRANSITION TESTING, A BLACK BOX TESTING
TECHNIQUE, IN WHICH OUTPUTS ARE TRIGGERED BY
CHANGES TO THE INPUT CONDITIONS OR CHANGES TO
'STATE' OF THE SYSTEM. IN OTHER WORDS, TESTS ARE
DESIGNED TO EXECUTE VALID AND INVALID STATE
TRANSITIONS.
Load Testing

LOAD TESTING IS A TYPE OF NON-FUNCTIONAL TESTING. A LOAD TEST IS TYPE OF SOFTWARE TESTING
WHICH IS CONDUCTED TO UNDERSTAND THE BEHAVIOR OF THE APPLICATION UNDER A SPECIFIC
EXPECTED LOAD. LOAD TESTING IS PERFORMED TO DETERMINE A SYSTEM’S BEHAVIOR UNDER BOTH
NORMAL AND AT PEAK CONDITIONS.
LOAD TESTING ONE AMONG THE DIFFERENT KINDS OF PERFORMANCE TESTING THAT DETERMINES
THE PERFORMANCE OF THE SYSTEM IN REAL TIME LOAD CONDITIONS. IT IS BASICALLY USED TO
ENSURE THAT THE APPLICATION PERFORMS SATISFACTORILY WHEN MANY USERS TRY TO ACCESS OR
USE IT AT THE SAME TIME.
What is error guessing?

ERROR GUESSING IS A SOFTWARE TESTING TECHNIQUE ON GUESSING THE ERROR WHICH


CAN PREVAIL IN THE CODE.

IT IS AN EXPERIENCE-BASED TESTING TECHNIQUE WHERE THE TEST ANALYST USES


HIS/HER EXPERIENCE TO GUESS THE PROBLEMATIC AREAS OF THE APPLICATION. THIS
TECHNIQUE NECESSARILY REQUIRES SKILLED AND EXPERIENCED TESTERS.

IT IS A TYPE OF BLACK-BOX TESTING TECHNIQUE AND CAN BE VIEWED AS AN


UNSTRUCTURED APPROACH TO SOFTWARE TESTING.
Test Execution
There are many ways to build a test strategy.
• Take these ideas as ideas not as absolutes.
• A look at the principles of the context-driven school of
software testing and how the principles apply to building a
strategy.
• A list of components you might include in your strategy.
Testing strategy: Role of the Testers and Testing Objectives
The first step to building a testing environment is to determine the role of the testers and
testing objectives, but it also requires management to make decisions on the following areas:
• A clear testing role
• Testing Policy (based on testing plan, defines what will be included in testing processes
and communicates the role of testing to interested parties)
• Software Testing Support
• Methodology, processes and tools for testing
• Location & organization of testing labs
• Resource allocation
Testing strategy: Risk Management
Risk Management is also an important part of your testing strategy. Make
sure you plan for any and all risks that might come up during testing, and
define a mitigation plan.
In addition, the risks associated with managements decisions with regards
to the above points can also result in a product that is not up to
specifications. These risks include:
• Insufficient time and budget
• Inadequate test processes
• Software design failures
• Not meeting clients requirements
• Data issues
Testing strategy: Customer Requirements
In essence, the general purpose of testing is to see if the delivered software
meets general customer requirements of product quality, reliability, and
safety (if applicable). Specifically:
• Does the software meet industry standards (compliance)
• Software reliability (service level requirements)
• Tests to ensure ease of use (UX testing)
• Operation & maintenance testing
• Integration points fit requirements
• Performance meets expectations
• Complexity of deployment is manageable
• Access control meets customers needs
Testing Methodologies
What are Testing Methodologies?
Testing methodologies are the strategies and approaches used to test a particular product to ensure it is fit for
purpose. Testing methodologies usually involve testing that the product works in accordance with its specification,
has no undesirable side effects when used in ways outside of its design parameters and worst case will fail-safely
(e.g. a nuclear reactor will shut down on failure).

Importance of Testing Methodologies


As software applications get ever more complex and intertwined and with the large number of different platforms
and devices that need to get tested, it is more important than ever to have a robust testing methodology for making
sure that software products/systems being developed have been fully tested to make sure they meet their specified
requirements and can successfully operate in all the anticipated environments with the required usability and security.
ESTABLISHING SOFTWARE TESTING METHODOLOGIES
 Unit Testing
Unit testing is the first level of testing and is often performed by the developers themselves. It is the process of
ensuring individual components of a piece of software at the code level are functional and work as they were
designed to. Developers in a test-driven environment will typically write and run the tests prior to the software
or feature being passed over to the test team. Unit testing can be conducted manually, but automating the
process will speed up delivery cycles and expand test coverage. Unit testing will also make debugging easier
because finding issues earlier means they take less time to fix than if they were discovered later in the testing
process.
Integration Testing
After each unit is thoroughly tested, it is integrated with other units to create
modules or components that are designed to perform specific tasks or activities.
These are then tested as group through integration testing to ensure whole segments
of an application behave as expected (i.e, the interactions between units are
seamless). These tests are often framed by user scenarios, such as logging into an
application or opening files. Integrated tests can be conducted by either developers
or independent testers and are usually comprised of a combination of automated
functional and manual tests.
System Testing
System testing is a black box testing method used to evaluate the completed and
integrated system, as a whole, to ensure it meets specified requirements. The
functionality of the software is tested from end-to-end and is typically conducted by
a separate testing team than the development team before the product is pushed into
production.
Acceptance Testing
Acceptance testing is the last phase of functional testing and is used to assess whether or not
the final piece of software is ready for delivery. It involves ensuring that the product is in
compliance with all of the original business criteria and that it meets the end user’s needs.
This requires the product be tested both internally and externally, meaning you’ll need to
get it into the hands of your end users for beta testing along with those of your QA team.
Beta testing is key to getting real feedback from potential customers and can address any
final usability concerns.
Performance Testing
Performance testing
It is a non-functional testing technique used to determine how an application will behave under various
conditions. The goal is to test its responsiveness and stability in real user situations. Performance testing
can be broken down into four types:
Load testing is the process of putting increasing amounts of simulated demand on your software,
application, or website to verify whether or not it can handle what it’s designed to handle.
Stress testing takes this a step further and is used to gauge how your software will respond at or beyond
its peak load. The goal of stress testing is to overload the application on purpose until it breaks by
applying both realistic and unrealistic load scenarios. With stress testing, you’ll be able to find the failure
point of your piece of software.
Endurance testing, also known as soak testing, is used to analyze the behavior of an application under a
specific amount of simulated load over longer amounts of time. The goal is to understand how your
system will behave under sustained use, making it a longer process than load or stress testing (which are
designed to end after a few hours). A critical piece of endurance testing is that it helps uncover memory
leaks.
Spike testing is a type of load test used to determine how your software will respond to substantially
larger bursts of concurrent user or system activity over varying amounts of time. Ideally, this will help you
understand what will happen when the load is suddenly and drastically increased.
Security Testing

You might also like