0% found this document useful (0 votes)
25 views

Chapter 2 SFT

The document discusses different types and levels of software testing including unit testing, integration testing, system testing, and acceptance testing. It describes unit testing as testing individual software modules or components. Integration testing verifies the interaction between integrated modules. System testing evaluates the system as a whole. Acceptance testing is performed by the client to check if requirements are met. The document also covers topics like drivers, stubs, and different integration testing strategies.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views

Chapter 2 SFT

The document discusses different types and levels of software testing including unit testing, integration testing, system testing, and acceptance testing. It describes unit testing as testing individual software modules or components. Integration testing verifies the interaction between integrated modules. System testing evaluates the system as a whole. Acceptance testing is performed by the client to check if requirements are met. The document also covers topics like drivers, stubs, and different integration testing strategies.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

Software Testing

22518
Chapter 2
Types and Levels of Testing
(R-04, U-06, A-08 =18 Marks)
2.1 Levels of Testing
2.2 Unit Testing:
Stub and Driver
2.3 Integration Testing:
Top-Down Integration,
Bottom-Up Integration,
Bi-directional Integration.
2.4 Testing on Web Application:
Performance Testing: Load and stress,
security testing
Client-server Testing.
2.5 Acceptance Testing:
Alpha and Beta Testing,
Special Tests: Regression Testing, GUI Testing.
Mrs. Shubhangi Chintawar
Lecturer
VESP
Software Testing (22518) CO5I

2. Types and Level of testing


2.1 Levels of Testing
1. Unit/Component Testing
2. Integration testing
3. System testing
4. Acceptance testing

Unit Testing
Testing of an individual software component or module is termed as Unit Testing. It is
typically done by the programmer and not by testers, as it requires detailed knowledge of the
internal program design and code.

Integration Testing
Testing of all integrated modules to verify the combined functionality after integration is
termed as Integration Testing.

System Testing
Under System Testing technique, the entire system is tested as per the requirements. It is a
Black-box type Testing that is based on overall requirement specifications and covers all the
combined parts of a system.

Acceptance Testing
An Acceptance Test is performed by the client and verifies whether the end to end the flow
of the system is as per the business requirements or not and if it is as per the needs of the end-user.
Client accepts the software only when all the features and functionalities work as expected.

2.2 Unit Testing: Stub and Driver


Unit is the smallest testable part of the software system. Unit testing is done to verify that
the lowest independent entities in any software are working fine. Testing that occurs at the lowest
level is called unit testing or module testing. As the units are tested and the low-level bugs are
found and fixed, they are integrated and integration testing is performed against groups of modules.
When developer is coding the software, it may happen that the dependent modules are not
completed for testing, in such cases developers use stubs and drivers to simulate the called (stub)
and caller (driver) units. Unit testing requires stubs and drivers, stubs simulates the called unit and
driver simulates the calling unit.

Key Points: -
• Tested for proper information flow.
• Local data are examined to ensure that integrity is maintained.
• Boundary conditions are tested.
• Basis path testing should be used.
• Drivers and/or stubs need to be developed to test incomplete software.
• Focuses testing on the function or software module
• Concentrates on the internal processing logic and data structures

1
Software Testing (22518) CO5I

Drivers and Stubs for Unit Testing


Stubs and Drivers do not implement the entire programming logic of the software module
but just simulate data communication with the calling module.
Stub: Is called by the Module under Test.
Driver: Calls the Module to be tested.

STUBS:
Serve to replace modules that are subordinate to (called by) the component to be tested and
do minimal data manipulation, provides verification of entry, and returns control to the module
undergoing testing
Assume you have 3 modules, Module A, Module B and module C. Module A is ready and we need
to test it, but module A calls functions from Module B and C which are not ready, so developer
will write a dummy module which simulates B and C and returns values to module A. This dummy
module code is known as stub.

Under
Under
Testing
Testing

DRIVERS:
A simple main program that accepts test case data, passes such data to the component being
tested, and prints the returned results
Now suppose you have modules B and C ready but module A which calls functions from
module B and C is not ready so developer will write a dummy piece of code for module A which
will return values to module B and C. This dummy piece of code is known as driver.

Under Testing
Under Testing
Drivers and stubs both represent overhead: - Both must be written but don’t make up part of the
software product.

2
Software Testing (22518) CO5I

Distinguish between Stub and Driver.


Sr.No. Stub Driver
1 Temporary program is used instead of Temporary program is used instead main
sub-program, which are under program, which are under construction
construction
2 Used in Top-Down approach Used in Bottom- up approach
3 Other name is “called programs” Other name is “Calling Programs”
4 Return Control to the main program Control does not return to the main program

Advantages of Unit Testing


• Reduces Defects in the Newly developed features or reduces bugs when changing the
existing functionality.
• Reduces Cost of Testing as defects are captured in very early phase.
• Improves design and allows better refactoring of code.
• Unit Tests, when integrated with build gives the quality of the build as well.

Disadvantages of Unit Testing


• Testing cannot catch each and every bug in an application.
• It is impossible to evaluate every execution path in every software application. The same
is the case with unit testing.
• There is a limit to the number of scenarios and test data that the developer can use to verify
the source code. So, after he has exhausted all options there is no choice but to stop unit
testing and merge the code segment with other units.

2.3 Integration Testing: Top-Down Integration, Bottom-Up Integration, Bi-directional


Integration.
Integration testing
As the units are tested and the low-level bugs are found and fixed, they are integrated and
integration testing is performed against groups of modules. This process of incremental testing
continues, putting together more and more pieces of the software until the entire product—or at
least a major portion of it—is tested at once in a process called system testing.
A typical software project consists of multiple software modules, coded by different programmers.
The purpose of this level of testing is to expose defects in the interaction between these software
modules when they are integrated. Integration Testing focuses on checking data communication
amongst these modules.
Need of Integration Testing
Although each software module is unit tested, defects still exist for various reasons like
• A Module, in general, is designed by an individual software developer whose
understanding and programming logic may differ from other programmers. Integration
Testing becomes necessary to verify the software modules work in unity
• At the time of module development, there are wide chances of change in requirements by
the clients. These new requirements may not be unit tested and hence system integration
Testing becomes necessary.
• Interfaces of the software modules with the database could be erroneous
• External Hardware interfaces, if any, could be erroneous

3
Software Testing (22518) CO5I

Example of Integration Test Case


Integration Test Case differs from other test cases in the sense it focuses mainly on the
interfaces & flow of data/information between the modules. Here priority is to be given for
the integrating links rather than the unit functions which are already tested.
Sample Integration Test Cases for the following scenario: Application has 3 modules say
'Login Page', 'Mailbox' and 'Delete emails' and each of them is integrated logically.
Here do not concentrate much on the Login Page testing as it's already been done in Unit
Testing. But check how it's linked to the Mail Box Page.

Similarly Mail Box: Check its integration to the Delete Mails Module.
Test
Test Case Objective Test Case Description Expected Result
Case ID
Check the interface link Enter login credentials
To be directed to the Mail
1 between the Login and and click on the Login
Box
Mailbox module button
Check the interface link From Mailbox select the
Selected email should appear
2 between the Mailbox and email and click a delete
in the Deleted/Trash folder
Delete Mails Module button

Approaches, Strategies, Methodologies of Integration Testing


Software Engineering defines variety of strategies to execute Integration testing, viz.
• Non-Incremental Approach (Big Bang Approach)
• Incremental Approach: which is further divided into the following
o Top Down Approach
o Bottom Up Approach
o Bi-directional Approach

Big Bang Approach:


Here all components are integrated together at once and then tested.
Advantages:
• Convenient for small systems.
Disadvantages:
• Fault Localization is difficult.
• Given the total number of interfaces that need to be tested in this approach, some interfaces
link to be tested could be missed easily.
• Since the Integration testing can commence only after "all" the modules are designed, the
testing team will have less time for execution in the testing phase.
• Since all modules are tested at once, high-risk critical modules are not isolated and tested
on priority.

Incremental Approach
In this approach, testing is done by joining two or more modules that are logically related.
Then the other related modules are added and tested for the proper functioning. The process
continues until all of the modules are joined and tested successfully.

4
Software Testing (22518) CO5I

Incremental Approach, in turn, is carried out by two different Methods:


• Bottom Up
• Top Down
Bottom-up Integration
In this approach testing is conducted from sub module to main module, if the main module is not
developed a temporary program called DRIVERS is used to simulate the main module.

Diagrammatic Representation:

Example: -
Suppose Real world software is under construction and conversion module is under testing, in such
case need driver which replace this real-world software.
These drivers send test-case data to the modules under test, read back the results, and verify that
they’re correct. You can very thoroughly test the software this way, feeding it all types and
quantities of data

Advantages:
• Fault localization is easier.
• No time is wasted waiting for all modules to be developed unlike Big-bang approach
• No need for stubs / fewer mock objects
• Logic modules tested thoroughly
• Testing can be in parallel with implementation

Disadvantages:
• Critical modules (at the top level of software architecture) which control the flow of
application are tested last and may be prone to defects.
• An early prototype is not possible
• Need drivers

Top-down Integration:
In this approach testing is conducted from main module to sub module. If the sub module
is not developed a temporary program called STUB is used for simulate the sub module.
5
Software Testing (22518) CO5I

Diagrammatic Representation:

Example: -
Suppose Temperature Display module is under testing and thermometer interface module is under
construction, so this module is replaced by stub to perform top down testing. This test file (stub)
provides temperature values to the temperature display module.

Advantages:
• Fault Localization is easier.
• No drivers needed
• Different order of testing/implementation possible
• Possibility to obtain an early prototype.
• Critical Modules are tested on priority; major design flaws could be found and fixed first.
Disadvantages:
• Needs many Stubs.

Bi-Directional Integration
Bi-directional Integration, is a kind of integration testing process that combines top-down
and bottom-up testing.
Bi-directional testing projects custom software development services provide the best quality of
the deliverables right from the development of software process. Bi-directional Integration testing
combines bottom-up and top-down testing. Here, top modules are tested with lower modules at the
same time lower modules are integrated with top modules and tested. This strategy makes use of
stubs as well as drivers.

6
Software Testing (22518) CO5I

System Testing
Units are integrated and integration testing is performed against groups of modules. This
process of incremental testing continues, putting together more and more pieces of the software
until the entire product or at least a major portion of it is tested at once in a process called system
testing.
System Testing (ST) is a black box testing technique performed to evaluate the complete system
the system's fulfillment against specified requirements. In System testing, the functionalities of
the system are tested from an end-to end perspective. Most of the software & hardware
compatibility issues can be uncovered using system test execution. It includes both functional and
Non-Functional testing.

2.4 Testing on Web Application: Performance Testing: Load and stress, security testing
Client-server Testing.
Testing is the process of exercising software with the intent of finding errors. Web-based
systems and applications reside on a network and interoperate with many different operating
systems, browsers (residing on a variety of devices), hardware platforms, communications
protocols, and “backroom” applications, the search for errors represents a significant challenge.
To understand the objectives of testing within a Web engineering context, need to consider
the many dimensions of WebApp quality.

Dimensions of Quality: -
1. Content is evaluated at both a syntactic and semantic level. At the syntactic level, spelling,
punctuation, and grammar are assessed for text-based documents. At a semantic level,
correctness, consistency and lack of ambiguity are all assessed.
2. Function is tested to uncover errors that indicate lack of conformance to customer requirements.
3. Structure is assessed to ensure that it properly delivers WebApp content and function, that it is
extensible, and that it can be supported as new content or functionality is added.
4. Usability is tested to ensure that each category of user is supported by the interface and can
learn and apply all required navigation syntax and semantics.
5. Navigability is tested to ensure that all navigation syntax and semantics are exercised to
uncover any navigation errors (e.g., dead links, improper links, erroneous links).
6. Performance is tested under a variety of operating conditions, configurations, and loading to
ensure that the system is responsive to user interaction and handles extreme loading without
unacceptable operational degradation.
7. Compatibility is tested by executing the WebApp in a variety of different host configurations
on both the client and server sides. The intent is to find errors that are specific to a unique host
configuration.
7
Software Testing (22518) CO5I

8. Interoperability is tested to ensure that the WebApp properly interfaces with other applications
and/or databases.
9. Security is tested by assessing potential vulnerabilities and attempting to exploit each. Any
successful penetration attempt is deemed a security failure.

Performance testing
Performance testing is used to uncover performance problems that can result from lack of
server-side resources, inappropriate network bandwidth, inadequate database capabilities, faulty or
weak operating system capabilities, poorly designed WebApp functionality, and other hardware or
software issues that can lead to degraded client-server performance.
The intent is twofold:
(1) to understand how the system responds as loading (i.e., number of users, number of
transactions, or overall data volume) increases and
(2) to collect metrics that will lead to design modifications to improve performance

Performance Testing Objectives


Performance tests are designed to simulate real-world loading situations. Performance testing
is a non-functional testing technique, performed to determine the system parameters in terms of
responsiveness and stability under various workload. Performance Testing is defined as a type of
software testing to ensure software applications will perform well under their expected workload.
As the number of simultaneous WebApp users grows, or the number of online transactions
increases, or the amount of data (downloaded or uploaded) increases, performance testing will help
answer the following questions:
• Does the server response time degrade to a point where it is noticeable and unacceptable?
• At what point (in terms of users, transactions, or data loading) does performance become
unacceptable?
• What system components are responsible for performance degradation?
• What is the average response time for users under a variety of loading conditions?
• Does performance degradation have an impact on system security?
• Is WebApp reliability or accuracy affected as the load on the system grows?
• What happens when loads that are greater than maximum server capacity is applied?

The goal of Performance Testing is not to find bugs but to eliminate performance bottlenecks.
The focus of Performance Testing is checking a software program's
• Speed - Determines whether the application responds quickly.
• Scalability - Determines maximum user load the software application can handle.
• Stability - Determines if the application is stable under varying loads.

Types of Performance Testing


• Load testing - Checks the application's ability to perform under expected user loads. The
objective is to identify performance bottlenecks before the software application
deployment.
• Stress testing - is a type of Software Testing that verifies the stability & reliability of the
system. This test mainly measures the system on its robustness and error handling
capabilities under extremely heavy load conditions.
8
Software Testing (22518) CO5I

Performance Testing Process

1. Identify the Test Environment


 Identify the physical test environment and the production environment
 Testing Tools availability
 Understand the details about hardware, software, and network configurations
2. Identify Performance Acceptance Criteria
 Identify the response time, throughput, and resource utilization goals and
constraints.
 In general, response time is a user concern, throughput is a business concern, and
resource utilization is a system concern.
 Compare with similar application to set performance goal
3. Plan and Design Tests
 Need to identify key scenarios based on the real-world use.
 Different users will generate different demands.
 Determine how to simulate that inconsistency, define test data, and establish
metrics to be collected.
 Consolidate this information into one or more models of system usage to be
implemented, executed, and analyzed.
4. Configure the Test Environment
 Prepare the test environment, tools, and resources
 Necessary to execute each strategy as features and components become available
for test.
5. Implement the Test Design
 Develop the performance tests in accordance with the test design best practice.
6. Execute the Test
 Run and monitor your tests.
 Validate the tests, test data, and results collection.
7. Analyze Results, Report, and Retest
 Analyze the data both individually and as a cross-functional team.
 Reprioritize the remaining tests and re-execute them as needed.

Load Testing
LOAD TESTING determines a system's performance under a specific expected load. This

9
Software Testing (22518) CO5I

purpose of Load Test is to determine how the application behaves when multiple users access it
simultaneously. The goal of Load Testing is to ensure smooth functioning of the software under
real-life load conditions. Load Testing is nonfunctional testing type and is a subset of Performance
Testing

Load Testing is performed to test


• The performance of the system or software application under extreme load.
• The software is tested under multiple number of users.
• To find out the upper limit of the system or application.
• Determines the operating capacity of a system or application.

Goals of Load Testing:


Loading testing identifies the following problems before moving the application to market or
Production:
• Response time for each transaction
• Performance of System components under various loads
• Performance of Database components under different loads
• Network delay between the client and the server
• Software design issues
• Server configuration issues like a Web server, application server, database server etc.
• Hardware limitation issues like CPU maximization, memory limitations, network bottleneck,
etc.
Benefits of Load Testing
• Discovery of bottlenecks before deployment. Evaluating a piece of software or a website
before deployment can highlight bottlenecks, allowing them to be addressed before they incur
large real-world costs.
• Enhance the scalability of a system. It can help identify the limit of an application’s
operating capacity. This can aid in determining infrastructure needs as the system scales
upward.
• Reduced risk for system down time. It can be used to search out scenarios that can cause a
system to fail. This makes it a great tool for finding solutions to high-traffic problems before
they arise in the real world.
• Improved customers satisfaction. If a website’s response times are short even as it scales up
to a higher audience, one-time customers will be more suitable to revisit.
• Reduced failure cost. Identifying concerns at the earliest stage possible, especially before
launch, decreases the cost of failures. By contrast, after-launch failures can incur exponentially
greater costs.

Steps for Load Testing


• Identify business goals. A strong understanding of future goals for scope and volume will
draw clear guidelines to inform the process.
• Determine key measures for the application and web performance. Agree on criteria to
track. Some criteria include response times, throughput, resource utilization, maximum user
load, and business performance metrics.

10
Software Testing (22518) CO5I

• Choose a suitable tool. Select a tool that best caters to your needs.
• Create a test case. In writing a test case, make sure both positive and negative scenarios are
taken into account. Test cases must be accurate and capable of being traced to requirements.
• Understand your environment. Consider different types of deployments you might want to
test. Create configurations similar to typical production. Test different system capacities like
security, hardware, software, and networks.
• Run tests incrementally. During these tests, the system will ultimately fail. One key goal is
determining what volume results in failure, and spotlighting what fails first.
• Always keep end users in mind. The satisfaction of customers and site visitors is crucial to
the achievement of business metrics. This plays into their willingness to revisit a site or re-
access an application.

Stress Testing
Stress Testing verified the stability & reliability of the system. This test mainly determines the
system on its robustness and error handling under extremely heavy load conditions. Stress Testing
is done to make sure that the system would not crash. It even tests beyond the normal operating
point and evaluates how the system works under those extreme conditions.

Stress testing is also extremely valuable for the following reasons:


• To check whether the system works under abnormal conditions.
• Displaying appropriate error message when the system is under stress.
• System failure under extreme conditions could result in enormous revenue loss
• It is better to be prepared for extreme conditions by executing Stress Testing.

Goals of Stress Testing


• The goal of stress testing is to analyse the behaviour of the system after a failure.
• For stress testing to be successful, a system should display an appropriate error message while
it is under extreme conditions.
• To conduct Stress Testing, sometimes, massive data sets may be used which may get lost during
Stress Testing.
• Testers should not lose this security-related data while doing stress testing.
• The main purpose of stress testing is to make sure that the system recovers after failure which
is called as recoverability.

Steps to Perform Stress Testing


There are 5 steps that you need to follow while performing stress testing on any website:
1. Plan the Stress Test – In this step, you gather the system data, analyse the system and define
the stress test goals.
2. Create Automation Scripts – Here, you need to create the Stress testing automation scripts
and generate the test data for the stress scenarios.
3. Script Execution – In the third step, you run the Stress testing automation scripts and store the
stress results.
4. Results Analysis – After storing the results, now you need to analyse the Stress Test results and
identify bottlenecks.

11
Software Testing (22518) CO5I

5. Tweaking and Optimization – In the final step, you fine-tune the system, change
configurations, and optimize the code to meet the desired benchmark.

Difference between Load Testing and Stress Testing:


Sr.
LOAD TESTING STRESS TESTING
No
Load Testing is performed to test the Stress Testing is performed to test the
1 performance of the system or software robustness of the system or software
application under extreme load. application under extreme load.
In load testing load limit is the threshold of In stress testing load limit is above the
2
a break. threshold of a break.
In load testing, the performance of the
In stress testing, the performance is tested
3 software is tested under multiple number
under varying data amounts.
of users.
4 Huge number of users. Too much users and too much data.
Load testing is performed to find out the Stress testing is performed to find the
5
upper limit of the system or application. behavior of the system under pressure.
The factor tested during load testing The factor tested during stress testing
6
is performance. is robustness and stability.
Load testing determines the operating
7 Stress testing ensures the system security.
capacity of a system or application.

Security testing
Security testing verifies that protection mechanism built into system will protect it from
improper penetration. Security testing of any system is about finding all possible loopholes and
weaknesses of the system which might result into a loss of information by the hands of the
employees or outsiders of the Organization.
The goal of security testing is to identify the threats in the system and measure its potential
vulnerabilities. It also helps in detecting all possible security risks in the system and help
developers in fixing these problems through coding.

It also aims at verifying 6 basic principles as listed below:


1. Confidentiality – It protects against disclosure of information to unintended recipients.
2. Integrity- protect against improper information modification
3. Authentication - This confirms the identity of a user and allows a user to have confidence
that the information he receives originated from specific known sources.
4. Authorization - It specifies access rights to the users, based on the user role.
12
Software Testing (22518) CO5I

5. Availability- information must be available to authorized person(s) when they require it.
6. Non-repudiation - This ensures there is no denial from the sender or the receiver for sent
/received messages.
Advantages
1. Security testing determine whether proper technique is used to identify security risk.
2. It verifies that appropriate protection techniques are followed to secure the system.
3. Ensure that the implemented security measures are working properly.
4. Protect data and maintain its functionality.

CLIENT SERVER TESTING


Client server application there is a distribution of presentation services, application code, data
across clients and services. A networking protocol that is used for communication between clients
and servers. Client-server software requires specific forms of testing to prevent or predict
catastrophic errors. Servers go down, records lock, I/O (Input/Output) errors and lost messages can
really cut into the benefits of adopting this network technology.
Testing addresses system performance and scalability by understanding how systems respond
to increased workloads and what causes them to fail. It is performed on 2 tier application generally.
In Client Server application there are limited users and the application user are already known
before. They might have a username/password to access the application.

Layers in client server testing:


1. Client side: -
• GUI testing
• Functional testing
2.Server side
• Performance testing
• Load stress
• Data testing (recovery, backup)
3.Network application testing:
• Application response time
• Application functionality
• Reliability testing
4.Security testing:
• Steal confidential information
• Modify information
• Break the system
• Misuse of information
• Interception during data transfer

Testing approaches of client server system:


• Component Testing: One need to define the approach and test plan for testing client and
server individually. When server is tested there is need of a client simulator, whereas testing
client a server simulator, and to test network both simulators are used at a time.
• Integration testing: After successful testing of server, client and network, they are brought
together to form system testing.
13
Software Testing (22518) CO5I

• Performance testing: System performance is tested when number of clients is


communicating with server at a time. Volume testing and stress testing may be used for
testing, to test under maximum load as well as normal load expected. Various interactions
may be used for stress testing.
• Concurrency Testing: It is very important testing for client-server architecture. It may be
possible that multiple users may be accessing same record at a time, and concurrency
testing is required to understand the behavior of a system in this situation.
• Disaster Recovery /Business continuity testing: When the client server is communicating
with each other, there exit a possibility of breaking of the communication due to various
reasons or failure of either client or server or link connecting them. The requirement
specifications must describe the possible expectations in case of any failure.
• Testing for extended periods: In case of client server applications generally server is never
shutdown unless there is some agreed Service Level Agreement (SLA) where server may
be shut down for maintenance. It may be expected that server is running 24X7 for extended
period. One needs to conduct testing over an extended period to understand if service level
of network and server deteriorates over time due to some reasons like memory leakage.
• Compatibility Testing: Client server may be put in different environments when the users
are using them in production. Servers may be in different hardware, software, or operating
system environment than the recommended. Other testing such as security testing and
compliance testing may be involved if needed, as per testing and type of system.

2.5 Acceptance Testing: Alpha and Beta Testing, Special Tests: Regression Testing, GUI
Testing.
Acceptance Testing is a method of software testing where a system is tested for
acceptability. The major aim of this test is to evaluate the compliance of the system with the
business requirements and assess whether it is acceptable for delivery or not.
It is a formal testing according to user needs, requirements and business processes
conducted to determine whether a system satisfies the acceptance criteria or not and to enable the
users, customers or other authorized entities to determine whether to accept the system or not.
Acceptance Testing is the last phase of software testing performed after System Testing and before
making the system available for actual use.
These tests uncover the compatibility issues with the other systems available in the user
environment. It also uncovers the non-functional issues such as load & performance defects in the
actual user environment.

Types of Acceptance Testing:


• Alpha Testing (Internal Acceptance Testing):
Alpha testing is used to determine the product in the development testing environment by a
specialized testers team usually called alpha testers.
• Beta Testing (External Acceptance Testing):
Beta testing is used to assess the product by exposing it to the real end-users, usually called
beta testers in their environment. Feedback is collected from the users and the defects are fixed.
Also, this helps in enhancing the product to give a rich user experience.

14
Software Testing (22518) CO5I

Use of Acceptance Testing:


• To find the defects missed during the functional testing phase.
• How well the product is developed.
• A product is what actually the customers need.
• Feedbacks help in improving the product performance and user experience.
• Minimize or eliminate the issues arising from the production.

Advantages:
• It is conducted to ensure that system requirements meet business needs.
• The UAT process allows for any issues to be fixed before the system goes live.
• It helps in simulating the real-time user behavior and environment.
• It allows the company to improve the software quality by involving customer feedback.

Alpha Testing:
Alpha Testing is a type of software testing performed to identify bugs before releasing the
product to real users or to the public. Alpha Testing is one of the user acceptance testing.
Alpha testing involves both the white box and black box testing. Alpha testing is performed by
testers who are usually internal employees of the organization. Alpha testing is performed at
developer’s site. Reliability and security testing are not checked in alpha testing. Alpha testing
ensures the quality of the product before forwarding to beta testing. Alpha testing requires a testing
environment or a lab. Alpha testing may require long execution cycle. Developers can immediately
address the critical issues or fixes in alpha testing.

Alpha testing has two phases,


1. The first phase of testing is done by in-house developers. They either use hardware-assisted
debuggers or debugger software. The aim to catch bugs quickly. Usually while alpha
testing, a tester will come across to plenty of bugs, crashes, missing features, and docs.
2. While the second phase of alpha testing is done by software QA staff, for additional testing
in an environment. It involves both black box and White Box Testing.
Advantage of Alpha testing
• Better insight about the software's reliability at its early stages
• Free up your team for other projects
• Reduce delivery time to market
• Early feedback helps to improve software quality.
Disadvantages of Alpha Testing:
• In depth, functionality cannot be tested as software is still under development stage
Sometimes developers and testers are dissatisfied with the results of alpha testing

15
Software Testing (22518) CO5I

Beta Testing
Beta Testing of a product is performed by "real users" of the software application in a "real
environment" and can be considered as a form of external User Acceptance Testing.
Beta version of the software is released to a limited number of end-users of the product to obtain
feedback on the product quality. Beta testing reduces product failure risks and provides increased
quality of the product through customer validation.
Beta Testing is one of the Customer Validation methodologies to evaluate the level of customer
satisfaction with the product by letting it to be validated by the end users, who actually use it, for
over a period of time.
Product experience gained by the end users are asked for feedback on design, functionality, and
usability and this helps in assessing the quality of the product. Real People, Real Environment,
Real Product are the three R’s of Beta Testing and the question that arises here in Beta Testing
is “Do Customers like the Product?”.

Key Points: -
Beta testing commonly uses black box testing. Beta testing is performed by clients who are not
part of the organization. Beta testing is performed at end-user of the product.
Reliability, security and robustness are checked during beta testing. Beta testing also concentrates
on the quality of the product but collects users input on the product and ensures that the product is
ready for real time users.
Beta testing doesn’t require a testing environment or lab. Beta testing requires only a few weeks
of execution. Most of the issues or feedback collected from beta testing will be implemented in
future versions of the product.

Types of Beta Testing:


1. Traditional Beta testing:
Product is distributed to the target market and related data is gathered in all aspects. This
data can be used for Product improvement.
2. Public Beta Testing:
Product is released publicly to the world through online channels and data can be collected
from anyone. Based on feedback, product improvements can be done. For example,
Microsoft conducted the largest of all Beta Tests for its operating system Windows 8 before
officially releasing it.
3. Technical Beta Testing:
Product is released to a group of employees of an organization and collects feedback/data
from the employees of the organization.
4. Focused Beta Testing:
Software product is released to the market for collecting feedback on specific features of
the program. For example, important functionality of the software.
5. Post-release Beta Testing:
Software product is released to the market and data is collected to make improvements for
the future release of the product.

Advantages of Beta Testing


• Reduces product failure risk via customer validation.

16
Software Testing (22518) CO5I

• Beta Testing allows a company to test post-launch infrastructure.


• Improves product quality via customer feedback
• Cost effective compared to similar data gathering methods
• Creates goodwill with customers and increases customer satisfaction
Disadvantages of Beta Testing
• Test Management is an issue. As compared to other testing types which are usually
executed inside a company in a controlled environment, beta testing is executed out in the
real world where you seldom have control.
• Finding the right beta users and maintaining their participation could be a challenge

Distinguish between Alpha Testing and Beta Testing.


Sr.No. Alpha Testing Beta Testing
1 Alpha testing involves both the white Beta testing commonly uses black box
box and black box testing. testing.
2 Alpha testing is performed by testers Beta testing is performed by clients who are
who are usually internal employees of not part of the organization.
the organization.
3 Alpha testing is performed at Beta testing is performed at end-user of the
developer’s site. product.
4 Reliability and security testing are not Reliability, security and robustness are
checked in alpha testing. checked during beta testing.
5 Alpha testing ensures the quality of the Beta testing also concentrates on the quality
product before forwarding to beta of the product but collects users input on the
testing. product and ensures that the product is ready
for real time users.
6 Alpha testing requires a testing Beta testing doesn’t require a testing
environment or a lab. environment or lab.
7 Alpha testing may require long Beta testing requires only a few weeks of
execution cycle. execution.
8 Developers can immediately address Most of the issues or feedback collected from
the critical issues or fixes in alpha beta testing will be implemented in future
testing. versions of the product.

Special Tests: -
Regression Testing
Regression Testing is a type of testing that is done to verify that a code change in the
software does not impact the existing functionality of the product. This is to make sure the product
works fine with new functionality, bug fixes or any change in the existing feature. Previously
executed test cases are re-executed in order to verify the impact of change. Regression means
retesting the unchanged parts of the application.
Regression testing is performed when there is high risk that changes may affect unchanged
components. Re-running previously conducted tests to ensure that unchanged components
function correctly and Reviewing previously prepared documents to ensure that they remain
correct after changes have been made.
Regression testing tests both the modified source code and other parts of the source code
that may be affected by the change.

17
Software Testing (22518) CO5I

It serves several purposes like:


Increases confidence in the correctness of the modified program.
Locates errors in the modified program.
Preserves the quality and reliability of the software.
Ensures the software’s continued operation.

The various steps are shown in Figure, Hence, test case selection for a failure is the main key for
regression testing.

Types of Regression Testing


Regular regression testing
A regular regression testing is done between test cycles to ensure that the defect fixes that are done
and the functionality that were working with the earlier test cycles continue to work.

Final regression testing


A “final regression testing” is done to validate the final build before release.

Regression Testing can be carried out using the following techniques:

Retest All
• This is one of the methods for Regression Testing in which all the tests in the existing test
bucket or suite should be re-executed. This is very expensive as it requires huge time and
resources.
18
Software Testing (22518) CO5I

Regression Test Selection


• Instead of re-executing the entire test suite, it is better to select part of the test suite to be
run
• Test cases selected can be categorized as 1) Reusable Test Cases 2) Obsolete Test Cases.
• The reusable test cases can be used in future regression cycles.
• Obsolete ones are not used in the upcoming regression cycles.
Prioritization of Test Cases
• Prioritize the test cases depending on business impact, critical & frequently used
functionalities. Selection of test cases based on priority will greatly reduce the regression
test suite.

Difference between Re-Testing and Regression Testing:


Retesting means testing the functionality or bug again to ensure the code is fixed. If it is
not fixed, Defect needs to be re-opened. If fixed, Defect is closed. Regression testing means testing
your software application when it undergoes a code change to ensure that the new code has not
affected other parts of the software.

Advantages
• It improves the quality of the Product.
• It ensures that any bug fix or enhancement that is done does not impact the existing
functionality of the Product.
• Automation tools can be used for this testing.
• It makes sure that issues that are already fixed do not occur again.

Disadvantages
• It has to be done for a small change in the code as well because even a small change in the
code can create issues in the existing functionality.
• If in case automation is not used in the Project for this testing, it will be a time consuming
and tedious task to execute the test cases again and again.

GUI Testing
GUI testing tests that the user interaction features work correctly. These features include
hyperlinks, tables, forms, frames and user interface items such as text fields, radio buttons, check
boxes, list boxes, combo boxes, command buttons and dialog boxes. User interface testing ensures
that the application handles mouse and keyboard events correctly and displays hyperlinks, tables,
frames, buttons, menus, dialog boxes, error message boxes, and toolbars properly.
Navigation testing investigates the proper functioning of all the internal and external links.
Navigation testing must ensure that websites provide consistent, well-organized links and should
also provide alternative navigation schemes such as search options and site maps. The placement
of navigation links on each page must be checked. Search based navigation facility must also be
thoroughly tested and search items should be consistent across one page to another. All the
combinations of keywords and search criteria must be verified in navigation testing.
Table presents test cases for navigation testing for an online shopping website as the given
user interface testing checklist includes issues on hyperlinks for testers to ensure their proper
functioning.
19
Software Testing (22518) CO5I

Manual checking of hyperlinks can be very time consuming.


There are various online tools available for checking broken links, accuracy and availability of
links and obtaining advice on search engines.
Some tools for navigation testing include Performance Technologies’ TestLink, W3C’s Link
checker, Xenu’s LinkSleuth, Dead Links’ Dead Links, LinkTiger’s LinkTiger, Viable Software
Alternative’s LinkRunner, Elsop’s LinkScan, REl Software’s Link Validator, UCI’s MQMspider
and Illumit’s WebLight.

Form Based Testing


Websites that include forms need to ensure that all the fields in the form are working
properly.
Form-based testing involves the following issues:
1. Proper navigation from one field of the form to another using the tab key.
2. Ensures that the data entered in the form is in a valid format.
3. Checks that all the mandatory fields are entered in the form.

20
Software Testing (22518) CO5I

Consider the registration form of an online shopping website. Its inputs include login id, password,
repeat password, name, last name, email address, phone number, shipping details (address, city,
state, zip code) and billing details (address, city, state, zip code).
Its form-based test cases are shown in Table

GUI Testing Approaches


Manual Testing
This approach involves human tester, where each screen is manually checked to validate each
functionality by creating and executing test cases.
It is a useful approach when part of UI or a feature is ready, the probability of defects is more at
the initial stage, and human intervention is required.

Record and Replay Testing


GUI record and replay tools are used to test applications for their user interface.
Using such tools, testers run an application and record the user interaction with the app.
A script runs to track and save the user actions, including cursor movements, which can be
replayed several times to find the issues in the interface.

21
Software Testing (22518) CO5I

Model Based Testing


A model is a graphical description of a system's behavior.
It helps us to understand and predict the system behavior.
Models help in a generation of efficient test cases using the system requirements.

The following needs to be considered for this model-based testing:


Build the model
Determine Inputs for the model
Calculate the expected output for the model
Run the tests
Compare the actual output with the expected output
A decision on further action on the model

following checklist will ensure detailed GUI Testing in Software Testing.


• Check all the GUI elements for size, position, width, length, and acceptance of characters
or numbers. For instance, you must be able to provide inputs to the input fields.
• Check you can execute the intended functionality of the application using the GUI
• Check Error Messages are displayed correctly
• Check for Clear demarcation of different sections on screen
• Check Font used in an application is readable
• Check the alignment of the text is proper
• Check the Color of the font and warning messages is aesthetically pleasing
• Check that the images have good clarity
• Check that the images are properly aligned
• Check the positioning of GUI elements for different screen resolution.

Configuration testing
Configuration testing is defined as a software testing type, that checks an application with
multiple combinations of software and hardware to find out the optimal configurations that the
system can work without any flaws or bugs. Configuration testing is a method of testing a system
under development on multiple machines that have different combinations or configurations of
hardware and software. The performance of the system or an application is tested against each of
the supported hardware & software configurations.
When we say different configurations of hardware & software, it is attributed to multiple
operating system versions, browsers, supported drivers, memory sizes, hard drive types, CPU's,
etc.

22
Software Testing (22518) CO5I

Types of Configuration Testing:


1. Software Configuration Testing
Software configuration testing is done over the Application Under Test with various
operating system versions and various browser versions etc. It is a time-consuming testing as it
takes long time to install and uninstall the various software which are to be used for testing.
2. Hardware Configuration Testing:
Hardware configuration testing is typically performed in labs where physical machines are
used with various hardware connected to them. When a build is released, the software is installed
in all the physical machines to which the hardware is attached and the test is carried out on each
and every machine to confirm that the application is working fine.
While doing hardware configuration test, the kind of hardware to be tested is spelled out and there
are several computer hardware and peripherals which make it next to impossible to execute all the
tests.

Objectives of Configuration Testing:


• To determine whether the software application fulfils the configurability requirements.
• To identify the defects that were not efficiently found during different testing processes.
• To determine an optimal configuration of the application under test.
• To do analyse of the performance of software application by changing the hardware and
software resources.
• To verify the degree of ease to how the bugs are reproducible irrespective of the
configuration changes.

Compatibility Testing
Compatibility testing is a non-functional testing conducted on the application to evaluate the
application's compatibility within different environments.
It can be of two types - forward compatibility testing and backward compatibility testing.This
testing establishes or confirms that the product meets all the requirements set and agreed upon by
both the developer and the end user

Types of Compatibility Testing:

• Forward Compatibility Testing: This type of testing verifies that the software is
compatible with the newer or upcoming versions, and is thus named as forward compatible.
• Backward Compatibility Testing: This type of testing helps to check whether the
application designed using the latest version of an environment also works effortlessly in
an older version.
It is the testing performed to check the behavior of the hardware/software with the older
23
Software Testing (22518) CO5I

versions of the hardware/software.

Compatibility Testing can be performed for the following:


• Operating systems: testing across OS like Linux, Mac OS, and Windows etc.
• Databases: testing across databases like Oracle, SQL Server etc.
• Browsers: testing across browsers like IE, Chrome, Firefox, Mozilla, Safari, etc.
• Mobile applications: testing across different mobile platforms, devices, networks etc.

Benefit of Compatibility Testing


• Reduce help desk costs in the future (80% of customer support is on handling compatibility
problem cases)
• Improves the quality of the software.
• Customer satisfaction is increased.
• Improves the software’s market reputation and makes it more competitive in the market.

Usability Testing
• Usability is how appropriate, functional, and effective that interaction is.
• The means that you use to interact with a software program is called its user interface, or
UI.
• Usability testing, a non-functional testing technique that is a measure of how easily the
system can be used by end users

Learnability: - How easily the first-time user is able to grasp and use the website?
Memorability: - How easy is it for returning customer to remember the interface?
Ease of Use: - How easily customer can navigate?
Efficiency: - How effectively the customer can perform tasks?
Appeal: - How positive customers feels about the user interface and its experience?

24
Software Testing (22518) CO5I

Important Questions
1. State any two examples of integration testing.
2. Differentiate between alpha and beta testing. (four points)
3. State the testing approaches that are considered during client server testing.
4. With respect to GUI testing write the test cases for Amazon login form.
5. With the help of neat diagram, describe unit testing.
6. Describe how to perform usability and GUI testing.
7. Explain following concepts related to Integration testing with neat & labeled diagram:
(i) Top-down testing.
(ii) Bottom-up testing.
8. Explain Client-Server testing.
9. Describe acceptance testing with its advantages.

25

You might also like