Software Testing Unit-5 Notes
Software Testing Unit-5 Notes
Unit: - 5
Management Commitment:
1. Prioritization of Testing
Quality Culture: Foster a culture that prioritizes quality at all levels of the
organization.
Training and Development: Invest in ongoing training for testing teams
to keep up with industry standards and practices.
3. Clear Communication
6. Risk Management
9. Continuous Improvement
Organization Structure:
The organization structure in software testing defines how testing teams are
organized and how they interact with other departments within the software
development lifecycle. A well-defined structure is essential for effective
collaboration, clear communication, and successful project delivery.
1. Team Roles and Responsibilities
2. Team Structures
4. Communication Channels
2. Resource Management
Team Formation: Assemble a skilled testing team with defined roles (test
manager, test leads, analysts, and automation engineers).
Resource Allocation: Ensure adequate resources (human, tools,
environments) are allocated to meet testing requirements.
4. Test Execution
Progress Tracking: Monitor testing progress against the test plan using
tools and dashboards to visualize metrics like test coverage and defect
status.
Reporting: Generate regular reports summarizing testing activities,
results, and defect metrics for stakeholders. This includes identifying
trends and potential risks.
6. Defect Management
Defect Tracking: Use defect tracking tools to log, classify, and prioritize
defects. Ensure a clear workflow for defect resolution.
Collaboration with Development: Foster communication between testing
and development teams to facilitate quick resolution of identified issues.
7. Risk Management
9. Continuous Improvement
1. Testing Methodologies
2. Testing Types
3. Resource Management
4. Testing Tools
7. Stakeholder Communication
8. Risk Management
9. Process Improvement
1. Test Planning
Define Objectives: Establish clear goals for the testing process based on
project requirements and stakeholder expectations.
Develop Test Strategy: Outline the overall approach to testing, including
methodologies (Agile, Waterfall) and types of testing (functional, non-
functional).
Resource Allocation: Identify and allocate necessary resources, including
team members, tools, and environments.
2. Test Design
4. Test Execution
Execute Test Cases: Run the test cases as per the test plan and document
the outcomes.
Defect Logging: Log any defects found during testing in a defect tracking
system, including details about the issue and steps to reproduce it.
6. Reporting
7. Defect Management
8. Test Closure
Test Closure Report: Prepare a test closure report summarizing the entire
testing effort, including what was tested, defects found, and overall quality
assessment.
Retrospective Analysis: Conduct a retrospective to evaluate the testing
process, identifying strengths and areas for improvement.
9. Continuous Improvement
Feedback Incorporation: Use feedback from stakeholders and team
members to refine testing processes for future projects.
Process Review: Regularly review and update testing practices, tools, and
methodologies to align with industry best practices and lessons learned.
1. Requirement analysis
2. Test planning
During the test planning phase, the team develops a complete plan outlining each
testing process step, including identifying requirements, determining the target
audience, selecting appropriate testing tools and methods, defining roles and
responsibilities, and defining timelines. This phase aims to ensure that all
necessary resources are in place and everyone on the team understands their roles
and responsibilities. A well-designed test plan minimizes risks by ensuring that
potential defects are identified early in the development cycle when they are
easier to fix. Also, adhering to the plan throughout the testing process fosters
thoroughness and consistency in testing efforts which can save time and cost
down the line.
During the test case development phase, the team thoroughly tests the software
and considers all possible scenarios.
This phase involves multiple steps, including test design, test case creation, and
test case review:
Test design involves identifying the test scenarios and defining the steps to
be followed during testing.
Writing test cases for each identified scenario, including input data,
expected output, and the steps to be followed, involves creating test cases.
Test case review involves reviewing the test cases to ensure they are
complete and cover all possible scenarios.
Also, this is the phase when the involvement of test automation can be started.
You can select the test cases for test automation here. And, if automation is
already a part of the STLC, and the product is suitable for testing, then the test
case automation can be started too.
hardware,
software,
networks, and
databases.
5. Test execution
Test execution refers to the software testing life cycle phase where created test
cases are executed on the actual system being tested. At this stage, testers verify
whether features, functions, and requirements prescribed in earlier phases
perform as expected. The test execution also involves the execution of automated
test cases.
6. Test closure
Test closure is integral to the STLC and includes completing all planned testing
activities. It includes
Below are the eight steps that can be followed to write a test plan:
1. Analyze the product: This phase focuses on analyzing the product,
Interviewing clients, designers, and developers, and performing a product
walkthrough. This stage focuses on answering the following questions:
What is the primary objective of the product?
Who will use the product?
What are the hardware and software specifications of the product?
How does the product work?
2. Design the test strategy: The test strategy document is prepared by the
manager and details the following information:
Scope of testing which means the components that will be tested and the ones
that will be skipped.
Type of testing which means different types of tests that will be used in the
project.
Risks and issues that will list all the possible risks that may occur during
testing.
Test logistics mentions the names of the testers and the tests that will be run
by them.
3. Define test objectives: This phase defines the objectives and expected results
of the test execution. Objectives include:
A list of software features like functionality, GUI, performance standards,
etc.
The ideal expected outcome for every aspect of the software that needs
testing.
4. Define test criteria: Two main testing criteria determine all the activities in
the testing project:
Suspension criteria: Suspension criteria define the benchmarks for
suspending all the tests.
Exit criteria: Exit criteria define the benchmarks that signify the successful
completion of the test phase or project. These are expected results and must
match before moving to the next stage of development.
5. Resource planning: This phase aims to create a detailed list of all the
resources required for project completion. For example, human effort, hardware
and software requirements, all infrastructure needed, etc.
6. Plan test environment: This phase is very important as the test environment
is where the QAs run their tests. The test environments must be real devices,
installed with real browsers and operating systems so that testers can monitor
software behavior in real user conditions.
7. Schedule and Estimation: Break down the project into smaller tasks and
allocate time and effort for each task. This helps in efficient time estimation.
Create a schedule to complete these tasks in the designated time with a specific
amount of effort.
Common Understanding
Project Purpose
Goals
Goals add clarity to the anchor statement. Goals break down the emotional
concepts needed in the development of a purpose statement and translate them
into actions or behaviors, something we can measure. Where purpose statements
reflect who we are, goals focus on what we can do. Goals bring focus to
conversations and begin prioritizing resources. Goals are developed to achieve
the project purpose.
Developing goals means making choices. Project goals established during the
alignment process are broad in nature and cross the entire project. Ideally,
everyone on the project should be able to contribute to the achievement of each
goal.
Goals can have significantly different characteristics. The types of goals and the
processes used to develop the project goals will vary depending on the complexity
level of the project, the knowledge and skills of the project leadership team, and
the boldness of the project plan. Boldness is the degree of stretch for the team.
The greater the degree of challenge and the greater the distance from where you
are to where you want to be, the bolder the plan and the higher the internal
complexity score.
Roles
Role clarity is critical to the planning and execution of the project. Because
projects by definition are unique, the roles of each of the key stakeholders and
project leaders are defined at the beginning of the project. Sometimes the roles
are delineated in contracts or other documents. Yet even with written
explanations of the roles defined in documents, how these translate into the
decision-making processes of the project is often open to interpretation.
A discussion of the roles of each entity and each project leader can be as simple
as each person describing their role and others on the project team asking
questions for clarification and resolving differences in understanding. On less
complex projects, this is typically a short process with very little conflict in
understanding and easy resolution. On more complex projects, this process is
more difficult with more opportunities for conflict in understanding.
One process for developing role clarification on projects with a more complex
profile requires project team members, client representatives, and the project’s
leadership to use a flip chart to record the project roles. Each team divides the flip
chart in two parts and writes the major roles of the client on one half and the roles
of the leadership team on the other half. Each team also prioritizes each role and
the two flips charts are compared.
This and similar role clarification processes help each project team member
develop a more complete understanding of how the project will function, how
each team member understands their role, and what aspects of the role are most
important. This understanding aids in the development or refinement of work
processes and approval processes. The role clarification process also enables the
team to develop role boundary spanning processes. This is where two or more
members share similar roles or responsibilities. Role clarification facilitates the
development of the following:
Communication planning
Work flow organization
Approval processes
Role boundary spanning processes
Defining how the work of the project will be accomplished is another area of
common understanding that is developed during the alignment session. An
understanding of the project management methods that will be used on the project
and the output that stakeholders can expect is developed. On smaller and less
complex projects, the understanding is developed through a review of the tools
and work processes associated with the following:
Tracking progress
Tracking costs
Managing change
On more complex projects, the team may discuss the use of project management
software tools, such as Microsoft Project, to develop a common understanding of
how these tools will be used. The team discusses key work processes, often using
flowcharts, to diagram the work process as a team. Another topic of discussion is
the determination of what policies are needed for smooth execution of the project.
Often one of the companies associated with the project will have policies that can
be used on the project. Travel policies, human resources policies, and
authorization procedures for spending money are examples of policies that
provide continuity for the project.
Trust
Trust on a project has a very specific meaning. Trust is the filter that project team
members use for evaluating information. The trust level determines the amount
of information that is shared and the quality of that information. When a person’s
trust in another person on the project is low, he or she will doubt information
received from that person and might not act on it without checking it with another
source, thereby delaying the action. Similarly, a team member might not share
information that is necessary to the other person’s function if they do not trust the
person to use it appropriately and respect the sensitivity of that information. The
level of communication on a project is directly related to the level of trust.
Establishing trust starts during the initiation phase of the project. The kickoff
meeting is one opportunity to begin establishing trust among the project team
members. Many projects have team-building exercises during the kickoff
meeting. The project team on some complex projects will go on a team-building
outing. One project that built a new pharmaceutical plant in Puerto Rico invited
team members to spend the weekend spelunking in the lime caves of Puerto Rico.
Another project chartered a boat for an evening cruise off the coast of Charleston,
South Carolina. These informal social events allow team members to build a
relationship that will carry over to the project work.
Team Formation:
Quality assurance is not just a technical process, but a strategic one. It ensures
that your software products meet the expectations of your customers and
stakeholders, and that they are delivered on time and within budget. Quality
assurance also helps you avoid costly errors, defects, and rework, which can
damage your reputation and revenue.
Defining your testing objectives and scope will help you determine the size,
skills, and roles of your software testing team. It will also help you allocate the
resources, tools, and time needed for your testing activities.
Depending on the size and complexity of your software project, you may
need different roles in your software testing team:
Test manager
The person who oversees the entire testing process, from planning to reporting.
The test manager is responsible for defining the testing strategy, scope, and
schedule, as well as managing the testing resources, risks, and issues. The test
manager also coordinates with the project manager, developers, and stakeholders
to ensure alignment and collaboration.
Test lead
The person who leads a specific testing phase or activity, such as functional
testing, performance testing, or automation testing. The test lead is responsible
for designing, executing, and reviewing the test cases, as well as reporting the test
results and defects. The test lead also mentors and guides the test engineers and
analysts in their tasks.
Test engineer
The person who performs the actual testing tasks, such as writing, running, and
debugging the test cases, as well as logging and tracking the defects. The test
engineer also provides feedback and suggestions for improving the quality of the
software product.
Test analyst
The person who analyzes the requirements, specifications, and design of the
software product, and identifies the test scenarios, conditions, and data. The test
analyst also validates the test results and verifies the defect resolutions.
Some of the ways to train and develop your software testing team are:
A software testing company can provide you with the following benefits:
Access to a pool of qualified and experienced testers, who can handle any
type of testing, such as functional, performance, security, usability, etc.
Access to a range of testing tools, technologies, and methodologies, that
can enhance the efficiency and effectiveness of your testing process.
Access to a flexible and scalable testing model, that can adapt to your
changing needs and requirements, as well as your budget and timeline.
Access to a reliable and professional testing partner, who can deliver high-
quality results, as well as provide you with valuable insights and
recommendations for improving your software product.
Infrastructure :
and that they have the necessary services to access each node. Check the
operating system, features, and both versions. For example, Java, Apache,
etc
solutions.
the maximum and minimum allocated memory in the case of JVM, the size
perform a traceroute from each node to the node to which they connect.
server, be sure that you have set the Tomcat to port 80.
Infrastructure testing tools deploy and configure multiple servers required for
an application. They help solve complex infrastructure-related tasks and
execute them on different servers.
failure
master encounters a failure, another master can replace it. It is built with
Ansible: Ansible is a highly scalable tool that can manage many nodes. It
supports YAML command scripts. It runs with one active node; if there
Management:
The entire process of risk management is divided into three important steps,
which described below in detail:
Risk Identification
Risk identification is the simple identification process that lists out the probable
factors that may disrupt the smooth functioning of the software. This listing
process includes all possible instances, including external errors that might
disrupt the functioning of the software.
The most identified risks are late errors, lack of defined scopes, unavailability of
independent test environment and workspaces, tight test schedule due to
impending demand, etc. The identification process is often a prerequisite to
ensure that the software has authenticity in the testing reports. The developers are
also informed about the risk factors to avoid such loopholes in the future.
Once the risk is identified, we move on to the risk impact analysis. This step
involves the classification of the identified risks based on their probability and
force of impact on the entire project. The three classifications for impact analysis
are high, medium, and low. A systematic structure is followed to analyze the risk
before it gets materialized.
Impact analysis is done financially as well because the impact in that sector can
have direct results on the development of the software. Major issues such as tight
testing schedule and delay caused due to design issues could be a considerable
hindrance; hence, getting assigned to the high-risk category after the risk impact
analysis. An issue like the probability of natural disasters is classified as a low
risk.
The next is the most important step, the risk mitigation process. The idea is to
find feasible solutions for the analyzed risk, keeping high category risk mitigation
as a priority. Finding the proper risk mitigation technique is also crucial. The
techniques used should be harmless for the other stages of development.
The risk mitigation factors include finding the most suitable solution that can be
arranged in a limited time frame and thus, does not induce the risk of delaying
the entire project. For example, the high-risk factor of tight testing schedule,
causing delay, can be mitigated by informing the development and testing team
to control the preparation tasks in advance as a preventative measure.
Test Execution
Risk management, at times, extends to the test execution phase. The execution of
time risk management is a fast task to accomplish, as it is constructed in a very
short time frame. Therefore, usually, the impact analysis classifies the risk
probability based on individual modules and ranks them accordingly, making it
easier for the testing team to mitigate the risk by prioritizing the module tests,
finding the solutions with the highest-ranked module, and saving a lot of time and
energy.
There is no standard process for risk analysis. Different companies carry out the
process in different ways. Risk analysis is also carried out on different items of a
project. This is important to identify the risks and to implement the risk-based
testing analysis approach. The different items in a project are as follows:
Functionalities
Features
User Stories
Use Cases
Requirements
Test Cases
In this blog, we will only be focusing on the test cases to understand the risk-
based testing approach.
Stakeholders from the technical and business team are involved in risk analysis.
These stakeholders discuss and identify the importance of each feature of a
product. This will then be made into a list of priorities, based on the risk of failure
and how it will impact the end-user experience.
Most-used functionality
During this discussion, the risk factors associated with each feature are identified.
The risks could be technical, business-related, or operational. The likelihood of
risk occurrence and its impact helps in weighing all tests and scenarios.
Team’s incompetency
Quality impact
We can now talk about the risk-based testing methodology in detail. RISK is the
criteria in all the test cycles and phases, under the risk-based testing methodology.
We can design several combinations of test case scenarios. The tests are ranked
on the basis of the severity of risks. This helps find out the riskiest area of failure.
The main goal of risk analysis is to find the high-value items, such as product
functionalities, features, etc., and the low-value items. This is done to ensure that
the primary focus is always on the high-value items. This is the first step in risk
analysis, before we can start with the risk-based testing methodology.
The categorization of high- and low-value items is done by following the steps
given below:
Risk analysis is conducted by using a 3×3 grid. The stakeholders assess all
functionalities, non-functionalities, and test cases for the “likelihood of failure”
and “impact of failure”.
Test cases are positioned in the quadrants in the grid. This is based on the
identified values of the likelihood and impact of failure. These are shown as dots.
The test cases with high likelihood of failure and high impact of failure are
grouped on the top right corner of the grid; they are the high-value items. While
the low-value items are grouped together in the bottom left corner of the grid.
The tests are prioritized based on their positioning on the grid. They are labeled
numerically according to their priority. The tests are executed according to their
priority. The high priority tests are executed first and the low priority tests are
executed last or just chucked out.
Details of Testing
Now, the level of details of testing has to be decided. The scope of the testing is
decided based on the ranking in the grid.
High priority tests that rank 1, are tested “more through(ly)”. Experts are
deployed to execute these test cases. The rest of the test cases are also labeled
according to their priority. The least priority test cases can be executed, if there
is enough time and resources left.
This entire process helps testers identify the high-value tests and also guides them
on the details of testing to be conducted.
Risk Identification
Risk Mitigation
Risk Identification
A risk has to be first identified before it can be solved. The first step in the risk
identification stage is to make a list of everything that could go wrong.
This step is usually led by a QA manager, lead, or representative, but the entire
QA team’s contribution is important.
Let us take a look at a sample list of risks; the application that is being tested is
not the focus here; the focus is how the QA phase will pan out:
The testing schedule has been tight.The test started late because of design tasks
and, now, it cannot be extended beyond the user acceptance testing (UAT) start
date.
The resources weren’t enough, and the onboarding took a lot of time.
The defects were found late and they are going to take a lot of time to resolve.
Once we get the complete list of risks, we can move on to the next stage.
Risk Mitigation
The last stage of the risk management process involves coming up with solutions
to handle each of the listed risks. Here is a sample of what the list of risks
mentioned-above would look like after this stage:
Software Testing Metrics
Software testing metrics are quantifiable indicators of the software
testing process progress, quality, productivity, and overall health. The purpose of
software testing metrics is to increase the efficiency and effectiveness of the
software testing process while also assisting in making better decisions for future
testing by providing accurate data about the testing process. A metric expresses
the degree to which a system, system component, or process possesses a certain
attribute in numerical terms.
Software Reliability :
Reliability Testing is a testing technique that relates to testing the ability of
software to function and given environmental conditions that help in uncovering
issues in the software design and functionality.
This article focuses on discussing Reliability testing in detail.
2. Measurement
Measurement focuses on collecting real-world data about a product’s
performance and failures. This involves testing products under various conditions
and recording when and how they fail. It’s about gathering concrete evidence of
reliability rather than just predictions.
3. Improvement
Improvement uses the insights gained from modelling and measurement to
enhance the reliability of a product or system. This involves identifying weak
points, redesigning components, or changing manufacturing processes to make
the product more reliable.
1. Stress testing: Stress testing involves subjecting the system to high levels of
load or usage to identify performance bottlenecks or issues that can cause the
system to fail
2. Endurance testing: Endurance testing involves running the system
continuously for an extended period to identify issues that may occur over
time
3. Recovery testing: Recovery testing is testing the system’s ability to recover
from failures or crashes.
4. Environmental Testing: Conducting tests on the product or system in various
environmental settings, such as temperature shifts, humidity levels, vibration
exposure or shock exposure, helps in evaluating its dependability in real-
world circumstances.
5. Performance Testing: In Performance Testing It is possible to make sure that
the system continuously satisfies the necessary specifications and
performance criteria by assessing its performance at both peak and normal
load levels.
Types of Reliability Testing
1. Feature Testing
Following three steps are involved in this testing:
Each function in the software should be executed at least once.
Interaction between two or more functions should be reduced.
Each function should be properly executed.
2. Regression Testing
Regression testing is basically performed whenever any new functionality is
added, old functionalities are removed or the bugs are fixed in an application to
make sure with introduction of new functionality or with the fixing of previous
bugs, no new bugs are introduced in the application.
3. Load Testing
Load testing is carried out to determine whether the application is supporting the
required load without getting breakdown. It is performed to check the
performance of the software under maximum work load.
4. Stress Testing
This type of testing involves subjecting the system to high levels of usage or load
in order to identify performance bottlenecks or issues that can cause the system
to fail.
5. Endurance Testing
This type of testing involves running the system continuously for an extended
period of time in order to identify issues that may occur over time, such as
memory leaks or other performance issues.
Recovery testing: This type of testing involves testing the system’s ability to
recover from failures or crashes, and to return to normal operation.
6. Volume Testing
Volume Testing is a type of testing involves testing the system’s ability to handle
large amounts of data. This type of testing is similar to endurance testing, but it
focuses on the stability of the system under a normal, expected load over a long
period of time.
7. Spike Testing
This type of testing involves subjecting the system to sudden, unexpected
increases in load or usage in order to identify performance bottlenecks or issues
that can cause the system to fail.
Defect tracking Tools:
Jira
Jira is one of the most important bug tracking tools. Jira is an open-source tool
that is used for bug tracking, project management, and issue tracking in manual
testing. Jira includes different features, like reporting, recording, and workflow.
In Jira, we can track all kinds of bugs and issues, which are related to the software
and generated by the test engineer.
To get the complete details about Jira tool, refer to the below link:
Bugzilla
Bugzilla is another important bug tracking tool, which is most widely used by
many organizations to track the bugs. It is an open-source tool, which is used to
help the customer, and the client to maintain the track of the bugs. It is also used
as a test management tool because, in this, we can easily link other test case
management tools such as ALM, quality Centre, etc.
Redmine
It is an open-source tool which is used to track the issues and web-based project
management tool. Redmine tool is written in Ruby programing language and also
compatible with multiple databases like MySQL, Microsoft SQL, and SQLite.
While using the Redmine tool, users can also manage various projects and related
subprojects.
MantisBT
MantisBT stands for Mantis Bug Tracker. It is a web-based bug tracking
system, and it is also an open-source tool. MantisBT is used to follow the software
defects. It is executed in the PHP programing language.
Trac
Another defect/ bug tracking tool is Trac, which is also an open-source web-based
tool. It is written in the Python programming language. Trac supports various
operating systems such as Windows, Mac, UNIX, Linux, and so on. Trac is
helpful in tracking the issues for software development projects.
We can access it through code, view changes, and view history. This tool supports
multiple projects, and it includes a wide range of plugins that provide many
optional features, which keep the main system simple and easy to use.
Backlog
The backlog is widely used to manage the IT projects and track the bugs. It is
mainly built for the development team for reporting the bugs with the complete
details of the issues, comments, updates and change of status. It is a project
management software.