0% found this document useful (0 votes)
40 views18 pages

Unit 1

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views18 pages

Unit 1

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 18

SQAT -UNIT 1

SOFTWARE TESTING - CONCEPTS, ISSUES, AND TECHNIQUES


Quality Revolution, Verification and Validation, Failure, Error, Fault, and Defect,
Objectives of Testing, Testing Activities, Test Case Selection White-Box and
Black test, Planning and design, Test Tools and Automation, . Power of Test. Test
Team Organization and Management-Test Groups, Software Quality Assurance
Group ,System Test Team Hierarchy, Team Building.

Quality Revolution, Verification and Validation:


The modern quality revolution began in the 1970s, when the
quality of Japanese goods surpassed those of the US and Europe.
Action was taken to combat the imbalance and the 1980s saw a
big emphasis on quality improvement, plus the adoption of new
practices such as Just in Time (JIT).
W Edwards Deming: father of quality management.
Verification is also termed as white box testing or static testing
as work product goes through reviews. Validation can be termed
as black box testing or dynamic testing as work product is
executed. Verification finds about 50 to 60% of the defects.
Validation finds about 20 to 30% of the defects.
Verification Testing Validation Testing
Focuses on whether the software meets its Focuses on whether the software meets the needs
specified requirements of end-users
Typically conducted during the development Typically conducted after the development
process process
Involves testing at the component, module,
Involves testing the software as a whole
and system levels
Involves testing with sample data Involves testing with real-world data
Designed to catch defects early in the Designed to catch defects before release to end-
development process users
Examples include unit testing, integration Examples include user acceptance testing, alpha
1
testing, and system testing and beta testing, and compatibility testing
Helps to ensure that the software is built
Helps to ensure that the correct software is built
correctly
Helps to increase confidence in the software Helps to increase user satisfaction
Improves the quality of the software Reduces the risk of product recalls or legal issues
Can be automated or manual Often involves manual testing
Requires a good understanding of end-user needs
Requires a good understanding of the
and expectations.
software requirements and specifications

What is a bug?

In software testing, a bug is the informal name of defects, which means that
software or application is not working as per the requirement. When we have some
coding error, it leads a program to its breakdown, which is known as a bug.
The test engineers use the terminology Bug.

If a QA (Quality Analyst) detect a bug, they can reproduce the bug and record it
with the help of the bug report template.

What is a Defect?

When the application is not working as per the requirement is knows as defects. It
is specified as the aberration from the actual and expected result of the
application or software.

In other words, we can say that the bug announced by the programmer and inside
the code is called a Defect.

What is Error?

The Problem in code leads to errors, which means that a mistake can occur due to
the developer's coding error as the developer misunderstood the requirement or the
requirement was not defined correctly. The developers use the term error.

2
What is Fault?
The fault may occur in software because it has not added the code for fault
tolerance, making an application act up.

A fault may happen in a program because of the following reasons:

o Lack of resources
o An invalid step
o Inappropriate data definition

What is Failure?
Many defects lead to the software's failure, which means that a loss
specifies a fatal issue in software/ application or in its module, which makes
the system unresponsive or broken.

In other words, we can say that if an end-user detects an issue in the


product, then that particular issue is called a failure.

Possibilities are there one defect that might lead to one failure or several
failures.

For example, in a bank application if the Amount Transfer module is not


working for end-users when the end-user tries to transfer money, submit
button is not working. Hence, this a a failure.

3
Objectives of Testing, Testing Activities, Test Case Selection:
The objective of testing is to ensure that the software is reliable, efficient, and
meets the user's requirements. Preventing defects is an essential part of the testing
process. If defects are not prevented, they can become errors or bugs in the final
product, which can lead to significant problems.

In this fifth phase of SDLC, the testing is done to ensure that the entire application
works according to the customer requirements. After testing, the QA and testing
team might find some bugs or defects and communicate the same with the
developers.

ISTQB(International Software Testing Qualification Board) has also defined some


set of activities that should be followed during software testing to produce quality
software or application.
1. Test planning
2. Test monitoring and control
3. Test analysis
4. Test Design
5. Test Implementation
6. Test Execution

4
7. Test Completion

Test Planning:
 Determining the scope, objectives, and risks of testing

 Defining the overall approach of testing

 Integrating and coordinating the test activities into the software lifecycle
activities

 Making decisions about what to test, the people and other resources required to
perform the various test activities, and how test activities will be carried out

 Scheduling of test analysis, design, implementation, execution, and evaluation


activities, either on particular dates (e.g., in sequential development) or in the
context of each iteration (e.g., in iterative development)

 Selecting metrics for test monitoring and control

 Budgeting for the test activities

 Determining the level of detail and structure for test documentation (e.g., by
providing templates or example documents)

Test Monitoring and Control


 Produce comparison report of actual progress against planned progress
 Test control involves taking actions necessary to meet the objectives of the test
plan
 Define and set Exit-criteria

Test Analysis
 “what to test”
 Analyzing the test basis appropriate to the test level being considered
 Evaluating the test basis and test items to identify defects of various types
 Identifying features and sets of features to be tested
 Defining and prioritizing test conditions for each feature based on analysis of
the test basis, and considering functional, non-functional, and structural
characteristics, other business and technical factors, and levels of risks

5
Test Design
 “how to test?”
 Designing and prioritizing test cases and sets of test cases
 Identifying necessary test data to support test conditions and test cases
 Designing the test environment and identifying any required infrastructure and
tools
 Capturing bi-directional traceability between the test basis, test conditions, and
test cases

Test Implementation
 “do we now have everything in place to run the tests?”
 Developing and prioritizing test procedures and, potentially creating automated
test scripts
 Creating test suites from the test procedures and (if any) automated test scripts
 Arranging the test suites within a test execution schedule in a way that results in
efficient test execution
 Building the test environment (including, potentially, test harnesses, service
virtualization, simulators, and other infrastructure items) and verifying that
everything needed has been set up correctly
 Preparing test data and ensuring it is properly loaded in the test environment
 Verifying and updating bi-directional traceability between the test basis, test
conditions, test cases, test procedures, and test suites

Test Execution
 Recording the IDs and versions of the test item(s) or test object, test tool(s), and
test ware
 Executing tests either manually or by using test execution tools
 Comparing actual results with expected results
 Analyzing anomalies to establish their likely causes (e.g., failures may occur
due to defects in the code, but false positives also may occur
 Reporting defects based on the failures observed
 Logging the outcome of test execution (e.g., pass, fail, blocked)
 Repeating test activities either as a result of action taken for an anomaly, or as
part of the planned testing (e.g., execution of a corrected test, confirmation
testing, and/or regression testing)
 Verifying and updating bi-directional traceability between the test basis, test
conditions, test cases, test procedures, and test results.

6
Test Completion
 Checking whether all defect reports are closed, entering change requests or
product backlog items for any defects that remain unresolved at the end of test
execution
 Creating a test summary report to be communicated to stakeholders
 Finalizing and archiving the test environment, the test data, the test
infrastructure, and other test-ware for later reuse
 Handing over the test-ware to the maintenance teams, other project teams,
and/or other stakeholders who could benefit from its use

 Analyzing lessons learned from the completed test activities to determine


changes needed for future iterations, releases, and projects

 Using the information gathered to improve test process maturity

The objective of writing test cases is to ensure that software functions correctly and
meets the specified requirements. Some of the key objectives of writing test cases,

To verify the specific feature or functionality of the software application. To guide


software testers in their day-to-day testing activities.

White-Box and Black test :

White box testing techniques analyze the internal structures the used data
structures, internal design, code structure, and the working of the software rather
than just the functionality as in black box testing. It is also called glass box
testing or clear box testing or structural testing. White Box Testing is also known
as transparent testing or open box testing.
White box testing is a software testing technique that involves testing the internal
structure and workings of a software application. The tester has access to the
source code and uses this knowledge to design test cases that can verify the
correctness of the software at the code level.
White box testing is also known as structural testing or code-based testing, and it
is used to test the software’s internal logic, flow, and structure. The tester creates
test cases to examine the code paths and logic flows to ensure they meet the
specified requirements.
Tools required for White box testing:

7
 PyUnit
 Sqlmap
 Nmap
 Parasoft Jtest
 Nunit
 VeraUnit
 CppUnit
 Bugzilla
 Fiddler
 JSUnit.net
 OpenGrok
 Wireshark
 HP Fortify
 CSUnit
Features of White box Testing
1. Code coverage analysis: White box testing helps to analyze the code
coverage of an application, which helps to identify the areas of the code that
are not being tested.
2. Access to the source code: White box testing requires access to the
application’s source code, which makes it possible to test individual functions,
methods, and modules.
3. Knowledge of programming languages: Testers performing white box
testing must have knowledge of programming languages like Java, C++,
Python, and PHP to understand the code structure and write tests.
4. Identifying logical errors: White box testing helps to identify logical errors
in the code, such as infinite loops or incorrect conditional statements.
5. Integration testing: White box testing is useful for integration testing, as it
allows testers to verify that the different components of an application are
working together as expected.
6. Unit testing: White box testing is also used for unit testing, which involves
testing individual units of code to ensure that they are working correctly.
7. Optimization of code: White box testing can help to optimize the code by
identifying any performance issues, redundant code, or other areas that can be
improved.
8. Security testing: White box testing can also be used for security testing, as it
allows testers to identify any vulnerabilities in the application’s code.
9. Verification of Design: It verifies that the software’s internal design is
implemented in accordance with the designated design documents.
10.Check for Accurate Code: It verifies that the code operates in accordance
with the guidelines and specifications.
8
11.Identifying Coding Mistakes: It finds and fix programming flaws in your
code, including syntactic and logical errors.
12.Path Examination: It ensures that each possible path of code execution is
explored and test various iterations of the code.
13.Determining the Dead Code: It finds and remove any code that isn’t used
when the programme is running normally (dead code).

Black box testing is a methodology of performing tests. These tests can be


designed to accomplish a few different goals, including:

 Functional Testing: Functional testing is intended to validate that an application


does what it is supposed to do. For example, functional tests may test an
application’s authentication mechanism to check that legitimate users can
authenticate successfully while invalid login attempts are rejected. Common types
of functional testing include sanity checks, integration testing, and system testing.

 Non-Functional Testing: Non-functional testing evaluates how well an


application performs its core functions. Examples of tests include performance,
usability, scalability, and security testing.

 Regression Testing: Regression testing is designed to ensure that a change to an


application does not break functionality. For example, regression testing should be
performed after patching a vulnerability in an application to ensure the patch has
not caused the application to fail functional or non-functional tests.
Black Box Testing Techniques

With no internal knowledge of an application, structure is important to ensure that


the test covers all necessary cases. Some common techniques for performing a
black box evaluation include:

 Equivalence Class Testing: An application may follow the same control flow for
certain types of inputs. For example, an application that should only be accessible
to adults may terminate if a user enters an age under 18 or a tool with a limited
service area may terminate for country or postal codes outside of that area. With

9
equivalence class testing, testers identify these classes that produce the same
results and only test for one value within that class.

 Boundary Value Evaluation: Boundary values are inputs where an application’s


changes from one control flow to another. For example, the ages 17 and 18 are
boundary values for adulthood since a 17 year old may be rejected by an
application, while an 18 year old would be accepted. Boundary value evaluation
tests these inputs to ensure that the system is properly handling these edge cases.

 Decision Table Testing: An application may be designed to make decisions based


on a combination of inputs. For example, users over the age of 18 and living within
a particular area may be able to access an application. Decision table testing
involves enumerating each combination of inputs and its expected outcomes and
developing a test case to validate each combination.

 State Transition Evaluation: An application may be designed to change state


under certain conditions, such as locking a user’s account after a certain number of
failed authentication attempts. State transition evaluation involves identifying these
situations and developing test cases to validate them.

 Error Checking: This form of evaluation tests for common errors that a developer
may have made when creating an application. This often revolves around input
sanitization and ensuring that assumptions about an input are enforced. For
example, testers may check to see if developers properly handled an input of zero
in a numeric field or restricted the character set for a name to the letters and
symbols that can appear in a name.

The Black Box Test is a test that only considers the external behavior of the
system; the internal workings of the software are not taken into account. The White
Box Test is a method used to test software taking into consideration its internal
functioning

Planning and design:


Software test design is the process of creating a plan or strategy to test an entire
software application, including all of its features and functions. Test design aims to

10
identify software defects early in the development cycle before the product is
released to users.

Software test design is the process of creating a plan or strategy to test an entire
software application, including all of its features and functions. Test design aims to
identify software defects early in the development cycle before the product is
released to users.
A team of testers is responsible for designing all aspects of a test, including:

 Determining what data will be used in the test case design


 Reporting all the software aspects in either diagram, table, or else
 Predicting all potential errors and mistakes based on previous versions and
the team’s knowledge

Test design is a critical part of every software launch, and it plays as a guarantee
that fewer bugs and errors are encountered.

What is a Test Plan?


A software test plan is a document that contains all the information necessary to
plan and execute a software testing project. The test plan should define the scope
of the testing effort, identify the risks and assumptions associated with the project,
and describe the approach that will be taken to mitigate those risks.

Difference Between Test Case Design and Test Plan


The main difference between test design and test plan is that test design focuses on
how to test the software while test plan focuses on what to test when to test, who
will do the testing, and what resources are required.
Both test case design and test plan are essential for software testing. Test design
helps create effective test cases, while test plan helps organize and plan the testing
process.

What is the Purpose of Test Case Design?

11
The purpose of test design calls for creating a plan for how a test, or series of tests,
will be conducted. Test design aims to ensure that the testing process is efficient
and effective and identify all the bugs, errors, and future mistakes in the software.
According to The QA Lead, the most common test documentation are bugs, with
79% of users using this type of report. Needless to say, this is an important piece of
information that testers should take into consideration for both the company and
the end-user.
A well-designed test plan will take into account the specific goals of the test, the
resources available, and the skills and knowledge of the testers. The test design
process should also consider the potential risks and impacts of the test on users,
systems, and data.
By taking all of these factors into account, test designers can create a plan that will
optimize the chances of success for the project.

Automated Testing means using special software for tasks that people usually do
when checking and testing a software product. Nowadays, many software
projects use automation testing from start to end, especially
in agile and DevOps methods. This means the engineering team runs tests
automatically with the help of software tools.

Test Tools and Automation:

Software Testing tools are the tools that are used for the testing of software.
Software testing tools are often used to assure firmness, thoroughness, and
performance in testing software products. Unit testing and subsequent integration
testing can be performed by software testing tools.
 testRigor — Best overall no-code test automation for scalability and end-to-end
tests. ...
 Avo Assure — Best for no-code test automation. ...
 Mabl — Best for integrating testing with existing workflows. ...
 Selenium — Best for testing web-based applications.

Power of Test:

12
In the world of software development, the importance of testing cannot
be overstated.
Testing serves as the safety net that ensures your software functions
as intended before reaching the hands of your customers.
The primary goal of software testing is to uncover bugs and issues before the
software is released to end-users, thereby enhancing customer satisfaction and
reducing maintenance costs.
Importance of Software Testing

1. Quality Assurance: Software Testing plays a crucial role in ensuring


the quality and reliability of software products. By identifying and
fixing defects early in the development cycle, it helps prevent costly
errors and improves the overall user experience.

2. Risk Mitigation: Testing helps mitigate the risks associated with


software failures, such as financial losses, damage to reputation, and
legal liabilities. It provides stakeholders with confidence in the
software's performance and stability.

3. Compliance: In regulated industries such as healthcare and finance,


software testing is essential for ensuring compliance with industry
standards and regulatory requirements. It helps organizations avoid
penalties and maintain trust with customers and regulatory bodies.

Types of Software Testing

1. Functional Testing: This type of testing focuses on verifying the


functional requirements of the software, such as input validation, data
manipulation, and user interactions.

2. Non-Functional Testing: Non-functional testing assesses aspects such


as performance, security, usability, and reliability. Examples include
load testing, security testing, and usability testing.

3. Regression Testing: Regression testing ensures that new changes or


updates to the software do not adversely affect existing functionality. It
helps maintain software integrity across multiple releases.

13
Best Practices in Software Testing

1. Test Automation: Implementing test automation tools and frameworks


can significantly improve testing efficiency and coverage. It allows for
the execution of repetitive tests, accelerates feedback cycles, and
reduces human error.

2. Continuous Integration/Continuous Deployment


(CI/CD): Integrating testing into CI/CD pipelines ensures that software
changes are tested automatically and continuously. This agile approach
facilitates faster delivery of high-quality software.

3. Collaboration: Effective communication and collaboration between


developers, testers, and stakeholders are critical for successful software
testing. Clear requirements, test cases, and feedback loops enhance the
testing process and overall product quality.

Test Team Organization and Management-Test Groups :


Software testers and testing groups are mainly organized into such 2 models:
Horizontal Model
Such model is used in rather big companies. In this case a testing group just
conducts one type of software testing for a lot of various software products. For
instance, various products can have the equal system testing team.
Vertical Model
It would organize around a software product, where dedicated software
testers conduct several testing assignments. For instance, one or more testing
teams may conduct all the various kinds of software product testing,
beginning from unit testing and ending with acceptance testing.
Staffing level may vary over time. It depends on the requirement for
software testers by various projects. Thus, in the vertical model project
specialists could be re-assigned to conduct various missions.
One generally accepted practice is to use developers to conduct different
software testing assignments when testing stage peaks. Unfortunately, such
practice may be the reason of a lot of different troubles related to cadres’
management. Carelessness in this point may lead to project delays as well.
The inconsistency between people’s skills and their assignments may also
14
cause much more software bugs passing through the testing stage to cause
supplementary in-field defects.
This fact is one of the causes for people to accept the horizontal model
where staffing level variations may commonly be better managed due to the
various plans and requirements by various projects.
In practical situations, a combination of both models is usually used in big
software companies, with low-level software testing conducted by dedicated
testers, system testing shared across similar products, and common project
support performed by a centralized support unit for the total company.
The common project support comprises process, technology and tool support
necessary for formal development and software testing. This centralized
support unit is similar to the so-called experience factory that also gathers
skills, knowledge and lessons learned from development for more efficient
use in future.

Software Quality Assurance Group ,System Test Team


Hierarchy, Team Building:
In the hierarchy of the QA team, the first person we can put is
your QA Manager as a high-level executive.
Then your Team lead and Test architect both work directly
under your QA Manager and guide the team and test process.
Your QA engineer and Test Analyst report to your Team Lead.

What is the hierarchy of QA positions?


Technical: QA Engineer, QA Engineer I, QA Engineer II, QA Engineer
III, Senior QA Engineer, Principal QA Engineer. Management: QA
Lead, Sr. QA Lead, QA Engineering Manager, Sr.

QA Team Responsibilities
To give you an idea of what you should expect from your software testing team,
here are its most important responsibilities listed.

15
Requirements Analysis
Before diving into the testing or planning stages, it’s crucial for the test team to
thoroughly understand the client’s expectations for the upcoming product. This
stage also includes testing Service Level Agreements (SLAs) between the company
that owns an application and its future users.

Test Planning
Gone are the days when quality assurance teams would just sit back and wait for
developers to finish a product before starting their work. Now, test planning and
case development kick off simultaneously with, or even before, the software
development process. This approach calls for collaborative roundtable discussions,
dynamic brainstorming sessions, and thorough research involving all key team
members. That’s why the roles and responsibilities of quality assurance teams are
constantly evolving to align better with these advanced processes.

Create Testing Documentation


Just as crucial as having seamless test scripts is the need for accurate reporting.
Keeping detailed process documentation helps you easily keep track of what’s
already been accomplished and stay updated on the project’s current status. Plus,
maintaining clear and concise documentation is the only way to quickly bring new
team members up to speed on the project development process.

Test Cases Execution


Naturally, the primary duty of the QA department is running software tests. This
involves identifying and reporting errors, setting up a secure testing environment,
suggesting improvements for software performance, verifying fixes, and providing
technical oversight for each bug throughout its lifecycle. To stay on the cutting
edge, the team needs to check out industry trends from time to time, incorporate

16
modern testing tools into their workflows, and consistently apply QA best
practices.

Organizational Testing Team Structures


One of the important steps in building an effective and high-performance QA
department is choosing the right testing team structure. This will help you make up
a strong team with the required domain skills and expertise for your project’s
specific needs and avoid many common pitfalls. In general, there are four types of
structures to choose from:
 Functional;
 Matrix;
 Dedicated team;
 Agile.

Functional Team Structure


The functional organization structure is a popular model for testing teams. In this
model, teams are typically assigned specific roles and grouped based on their
technical expertise, such as performance testing or continuous delivery, allowing

17
for efficient and more focused work. Most often, functional teams are supervised by
test managers, while senior management oversees the project as a whole.

Matrix Organization Structure


In a matrix organization, team members with certain skills are assigned to different
projects. This way, they can work on several projects simultaneously and spend
their time and resources with maximum efficiency. The flexibility of the matrix
organization encourages cross-functional communication and facilitates continuous
delivery in various aspects of the software development process. Central to this
model are test managers who lead testing teams and work with higher management.

Dedicated Team Structure


Having a dedicated testing team is much more than just about catching bugs. First
and foremost, it’s about ensuring the overall quality of the product. The key benefit
of this model is its clarity. In this model, everyone knows exactly what they’re
responsible for and what they need to do, allowing them to work toward the same
goal. Structure-wise, the team comprises test managers who supervise certain tasks,
QA managers bringing in their technical expertise, and testers who run test cases.

Agile Team Structure


Agile setups are the most flexible, with no strict hierarchy involved. Team members
with different technical skills can work together on multiple projects simultaneously
and join at any stage of the SDTL — from the initial stages of planning to project
acceptance. The unique thing about agile is that team members can switch their
roles. As a result, they can hone and develop their skills, contributing to more
robust software products.

18

You might also like