0% found this document useful (0 votes)
23 views66 pages

UNIT 1 Software Testing

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)
23 views66 pages

UNIT 1 Software Testing

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/ 66

UNIT-1

SOFTWARE TESTING FUNDAMENTALS:

Software
Software is a set of instructions, data or programs used to operate computers and
execute specific tasks. It is the opposite of hardware, which describes the physical
aspects of a computer. Software is a generic term used to refer to applications, scripts and
programs that run on a device. It can be thought of as the variable part of a computer,
while hardware is the invariable part

TYPES OF SOFTWARE:
Software Development life cycle:

 One of the fundamental procedures of developing software in a step by


step manner is by following the Software Development Life
Cycle (SDLC).
 SDLC is a popular practice that is followed by different organizations for
designing and developing high-quality software applications.

The SDLC typically includes the following phases:


Requirement analysis
This phase involves gathering information about the software requirements
from stakeholders, such as customers, end-users, and business analysts.
Design
In this phase, the software design is created, which includes the overall
architecture of the software, data structures, and interfaces.
It has two steps:
 High-level design (HLD): It gives the architecture of software products.
 Low-level design (LLD): It describes how each and every feature in the
product should work and every component.
Implementation or coding
The design is then implemented in code, usually in several iterations,
and this phase is also called as Development.
This is the longest phase in SDLC model.
This phase consists of Front end + Middleware + Back-end.
 In front-end: Development of coding is done even SEO settings are done.
 In Middleware: They connect both the front end and back end.
 In the back-end: A database is created.
Testing
The software is thoroughly tested to ensure that it meets the requirements and
works correctly.
Evolution
After successful testing, The software is deployed to a production
environment and made available to end-users.
Basics of Software testing
 Software testing is an important process in the software development
lifecycle.
 It involves verifying and validating that a software application.
 It is free of bugs, meets the technical requirements set by
its design and development, and satisfies user requirements efficiently and
effectively.
Software testing can be divided into two steps:
1. Verification: It refers to the set of tasks that ensure that the software
correctly implements a specific function. It means “Are we building the
product right?”.
2. Validation: It refers to a different set of tasks that ensure that the software
that has been built is traceable to customer requirements. It means “Are we
building the right product?”.
Importance of Software Testing
 Defects can be identified early: Software testing is important because if
there are any bugs they can be identified early and can be fixed before the
delivery of the software.
 Improves quality of software: Software Testing uncovers the defects in the
software, and fixing them improves the quality of the software.
 Increased customer satisfaction: Software testing ensures reliability,
security, and high performance which results in saving time, costs, and
customer satisfaction.
 Helps with scalability: Software testing type non-functional testing helps to
identify the scalability issues and the point where an application might stop
working.
 Saves time and money: After the application is launched it will be very
difficult to trace and resolve the issues, as performing this activity will incur
more costs and time. Thus, it is better to conduct software testing at regular
intervals during software development.
Need for Software Testing
Software bugs can cause potential monetary and human loss. There are many examples
in history that clearly depicts that without the testing phase in software development lot
of damage was incurred. Below are some examples:
 1985: Canada’s Therac-25 radiation therapy malfunctioned due to a software
bug and resulted in lethal radiation doses to patients leaving 3 injured and 3
people dead.
 1994: China Airlines Airbus A300 crashed due to a software bug killing 264
people.
 1996: A software bug caused U.S. bank accounts of 823 customers to be
credited with 920 million US dollars.
 1999: A software bug caused the failure of a $1.2 billion military satellite
launch.
 2015: A software bug in fighter plan F-35 resulted in making it unable to
detect targets correctly.
 2015: Bloomberg terminal in London crashed due to a software bug affecting
300,000 traders on the financial market and forcing the government to
postpone the 3bn pound debt sale.
 Starbucks was forced to close more than 60% of its outlet in the U.S. and
Canada due to a software failure in its POS system.
 Nissan cars were forced to recall 1 million cars from the market due to a
software failure in the car’s airbag sensory detectors.

Software Testing Principles

 Software testing is a procedure of implementing software or the application


to identify the defects or bugs.
 For testing an application or software, we need to follow some principles to
make our product defects free, and that also helps the test engineers to test the
software with their effort and time.There are seven principles as below,

1. Testing shows the presence of defects


2. Exhaustive testing is not possible
3. Early testing
4. Defect clustering
5. Pesticide paradox
6. Testing is Context-Dependent
7. Absence of Errors fallacy

Principles of Software Testing

1. Testing shows the Presence of Defects


The goal of software testing is to make the software fail. Software testing
reduces the presence of defects. Software testing talks about the presence of defects and
doesn’t talk about the absence of defects. Software testing can ensure that defects are
present but it can not prove that software is defect-free. Even multiple tests can never
ensure that software is 100% bug-free. Testing can reduce the number of defects but
not remove all defects.
2. Exhaustive Testing is not Possible
It is the process of testing the functionality of the software in all possible
inputs (valid or invalid) and pre-conditions is known as exhaustive testing. Exhaustive
testing is impossible means the software can never test at every test case. It can test
only some test cases and assume that the software is correct and it will produce the
correct output in every test case. If the software will test every test case then it will take
more cost, effort, etc., which is impractical.
3. Early Testing
To find the defect in the software, early test activity shall be started. The defect
detected in the early phases of SDLC will be very less expensive. For better
performance of software, software testing will start at the initial phase i.e. testing will
perform at the requirement analysis phase.
4. Defect Clustering
In a project, a small number of modules can contain most of the defects. The
Pareto Principle for software testing states that 80% of software defects come from
20% of modules.
5. Pesticide Paradox
Repeating the same test cases, again and again, will not find new bugs. So it is
necessary to review the test cases and add or update test cases to find new bugs.
6. Testing is Context-Dependent
The testing approach depends on the context of the software developed.
Different types of software need to perform different types of testing. For example, The
testing of the e-commerce site is different from the testing of the Android application.
7. Absence of Errors Fallacy
If a built software is 99% bug-free but does not follow the user requirement
then it is unusable. It is not only necessary that software is 99% bug-free but it is also
mandatory to fulfill all the customer requirements.

Software Testing Life Cycle (STLC)


 The Software Testing Life Cycle (STLC) is a systematic approach to testing a
software application to ensure that it meets the requirements and is free of defects.
 It is a process that follows a series of steps or phases, and each phase has specific
objectives and deliverables.
 The STLC is used to ensure that the software is of high quality, reliable, and meets
the needs of the end-users.
 The main goal of the STLC is to identify and document any defects or issues in
the software application as early as possible in the development process.
 This allows for issues to be addressed and resolved before the software is released
to the public.
1. Requirement Analysis:
Requirement Analysis is the first step of the Software Testing Life Cycle
(STLC). In this phase quality assurance team understands the requirements like what is
to be tested. If anything is missing or not understandable then the quality assurance team
meets with the stakeholders to better understand the detailed knowledge of
requirements.
The activities that take place during the Requirement Analysis stage include:
 Reviewing the software requirements document (SRD) and other related
documents
 Interviewing stakeholders to gather additional information
 Identifying any ambiguities or inconsistencies in the requirements
 Identifying any missing or incomplete requirements
 Identifying any potential risks or issues that may impact the testing process
Creating a requirement traceability matrix (RTM) to map requirements to test cases
At the end of this stage, the testing team should have a clear understanding of the
software requirements and should have identified any potential issues that may impact
the testing process. This will help to ensure that the testing process is focused on the
most important areas of the software and that the testing team is able to deliver high-
quality results.
2. Test Planning:
Test Planning is the most efficient phase of the software testing life cycle
where all testing plans are defined. In this phase manager of the testing, team calculates
the estimated effort and cost for the testing work. This phase gets started once the
requirement-gathering phase is completed.
The activities that take place during the Test Planning stage include:
 Identifying the testing objectives and scope
 Developing a test strategy: selecting the testing methods and techniques that
will be used
 Identifying the testing environment and resources needed
 Identifying the test cases that will be executed and the test data that will be
used
 Estimating the time and cost required for testing
 Identifying the test deliverables and milestones
 Assigning roles and responsibilities to the testing team
 Reviewing and approving the test plan
At the end of this stage, the testing team should have a detailed plan for the testing
activities that will be performed, and a clear understanding of the testing objectives,
scope, and deliverables. This will help to ensure that the testing process is well-organized
and that the testing team is able to deliver high-quality results.
3. Test Case Development:
The test case development phase gets started once the test planning
phase is completed. In this phase testing team notes down the detailed test cases.
The testing team also prepares the required test data for the testing. When the test
cases are prepared then they are reviewed by the quality assurance team.
The activities that take place during the Test Case Development stage include:
 Identifying the test cases that will be developed
 Writing test cases that are clear, concise, and easy to understand
 Creating test data and test scenarios that will be used in the test cases
 Identifying the expected results for each test case
 Reviewing and validating the test cases
 Updating the requirement traceability matrix (RTM) to map requirements to
test cases
At the end of this stage, the testing team should have a set of comprehensive and accurate
test cases that provide adequate coverage of the software or application. This will help to
ensure that the testing process is thorough and that any potential issues are identified and
addressed before the software is released.
4. Test Environment Setup:
Test environment setup is a vital part of the STLC. Basically, the test
environment decides the conditions on which software is tested. This is
independent activity and can be started along with test case development. In this
process, the testing team is not involved. either the developer or the customer
creates the testing environment.
5. Test Execution:
After the test case development and test environment setup test execution
phase gets started. In this phase testing team starts executing test cases based on
prepared test cases in the earlier step.
The activities that take place during the test execution stage of the Software Testing
Life Cycle (STLC) include:
 Test execution: The test cases and scripts created in the test design stage are
run against the software application to identify any defects or issues.
 Defect logging: Any defects or issues that are found during test execution are
logged in a defect tracking system, along with details such as the severity,
priority, and description of the issue.
 Test data preparation: Test data is prepared and loaded into the system for
test execution
 Test environment setup: The necessary hardware, software, and network
configurations are set up for test execution
 Test execution: The test cases and scripts are run, and the results are collected
and analyzed.
 Test result analysis: The results of the test execution are analyzed to
determine the software’s performance and identify any defects or issues.
 Defect retesting: Any defects that are identified during test execution are
retested to ensure that they have been fixed correctly.
 Test Reporting: Test results are documented and reported to the relevant
stakeholders.
It is important to note that test execution is an iterative process and may need to be
repeated multiple times until all identified defects are fixed and the software is deemed
fit for release.
6. Test Closure:
Test closure is the final stage of the Software Testing Life Cycle (STLC)
where all testing-related activities are completed and documented. The main
objective of the test closure stage is to ensure that all testing-related activities have
been completed and that the software is ready for release.
At the end of the test closure stage, the testing team should have a clear understanding of
the software’s quality and reliability, and any defects or issues that were identified during
testing should have been resolved. The test closure stage also includes documenting the
testing process and any lessons learned so that they can be used to improve future testing
processes
Test closure is the final stage of the Software Testing Life Cycle (STLC) where all
testing-related activities are completed and documented. The main activities that take
place during the test closure stage include:
 Test summary report: A report is created that summarizes the overall testing
process, including the number of test cases executed, the number of defects
found, and the overall pass/fail rate.
 Defect tracking: All defects that were identified during testing are tracked and
managed until they are resolved.
 Test environment clean-up: The test environment is cleaned up, and all test
data and test artifacts are archived.
 Test closure report: A report is created that documents all the testing-related
activities that took place, including the testing objectives, scope, schedule, and
resources used.
 Knowledge transfer: Knowledge about the software and testing process is
shared with the rest of the team and any stakeholders who may need to
maintain or support the software in the future.
 Feedback and improvements: Feedback from the testing process is collected
and used to improve future testing processes
It is important to note that test closure is not just about documenting the testing process,
but also about ensuring that all relevant information is shared and any lessons learned are
captured for future reference. The goal of test closure is to ensure that the software is
ready for release and that the testing process has been conducted in an organized and
efficient manner.

Difference between SDLC and STLC

In the below table, we have listed some of the important difference between the Software
Development Life Cycle and Software Testing Life Cycle:

S.N Comparison SDLC STLC


O basis

1. Explanations It is primarily connected to software It is mainly linked to software testing,


development, which means that it is the which means that it is a software
procedure of developing a software testing process that contains various
application. phases of the testing process.

2. Representation SDLC stands for Software STLC stands for Software Testing
Development Life Cycle. Life cycle.

3. Resources While performing the SDLC process, The STLC process needed a smaller
we needed a greater number of number of testers to complete the
developers to complete the testing process.
development process.

4. Focuses on Besides the development phase, other The STLC concentrate only on testing
phases like testing are also included. the software.

5. Objective The objective of the Software The objective of the Software testing
development life cycle is to complete life cycle is to complete the testing of
the development of software software successfully.
successfully.

6. Help in The SDLC will help us to develop a The STLC will helps to create the
good quality software product. software bug-free.

7. Different phases The various phase includes in Software The various phase includes
Development Life Cycle are as in Software Testing Life Cycle are as
follows: follows:

o Requirements Collection o Requirement collection or


System study
o Feasibility Study
o Test Plan
o Design
o Write test case
o Programming or Coding o Traceability Matrix

o Testing o Defect Tracking

o Installation o Test Execution Report

o Maintenance o Retrospect meeting

8. Requirement In the SDLC Requirement collection In the Requirement Analysis phase of


collection phase phase, the BA [Business Analyst] and the STLC, the QA [ Quality
PA [ Product Analyst] will collect the Assurance]
requirements and interpret business team will study requirement
language into software language. documents and prepare the System
Test Plan.

9. Designing phase Based on the requirement Generally, in STLC, the Test


understanding, the development team Architect or a Test Lead plan the test
will develop the HLD [High-Level strategy.
Design] and LLD [Low-Level And also finds the testing points.
Design] of the software.

10. Coding phase In the SDLC coding phase, the In STLC, the QA team writes the test
developer will start writing the code as scenarios to authenticate the quality of
per the designed document and the product.
beginning of building the software.

11. Environment Set After writing the code, the Based on the prerequisites, the Test
up development team sets up a test team confirms the environment set up.
environment with the developed And do one round of smoke testing to
product to validate the code. ensure that the environment is stable
for the product and ready for testing.

12. Testing Phase Once the environment has been set, the Based on the test cases, the tester will
test engineer will perform various types do one round of integration and system
of testing, such as Unit, Integration, testing.
System, Retesting, Regression testing, While performing the testing, if they
and so on. encounter with any bugs, it will be
And the development team is also reported and fixed after the retesting.
involving to fixing the bugs and report
back to the tester.

13. Deployment/ In the SDLC deployment phase, when In STLC, the Smoke and sanity
Product Release we received sign-off from various testing are performed in the
phase testing teams, the application is production environment as soon as the
deployed or installed in a production product is deployed.
environment for real end-users. And the testing team will prepare the
test reports and matrix to analyze the
product.

14. Maintenance Once the product has been deployed, To check maintenance code deployed,
Phase the development team includes support the QA team performs the regression
and release updates. suites.

15. Performed The SDLC phases are done before the The STLC phases are completed after
STLC phases. SDLC phases.

Selenium
 Selenium is one of the most widely used open source Web UI (User Interface) automation
testing suite.

 It was originally developed by Jason Huggins in 2004 as an internal tool at Thought Works.
Selenium supports automation across different browsers, platforms and programming
languages.

 Selenium can be easily deployed on platforms such as Windows, Linux, Solaris and
Macintosh. Moreover, it supports OS (Operating System) for mobile applications like iOS,
windows mobile and android.
 Selenium supports a variety of programming languages through the use of drivers specific to
each language.Languages supported by Selenium include C#, Java, Perl, PHP, Python and
Ruby.Currently, Selenium Web driver is most popular with Java and C#.

 Selenium test scripts can be coded in any of the supported programming languages and can
be run directly in most modern web browsers. Browsers supported by Selenium include
Internet Explorer, Mozilla Firefox, Google Chrome and Safari.

 Selenium can be used to automate functional tests and can be integrated with automation test
tools such as Maven, Jenkins, & Docker to achieve continuous testing.

 It can also be integrated with tools such as TestNG, & JUnit for managing test cases and
generating reports.

Selenium Tool Suite


Selenium is not just a single tool but a suite of software, each with a different approach to support
automation testing. It comprises of four major components which include:

1. Selenium Integrated Development Environment (IDE)


2. Selenium Remote Control (Now Deprecated)
3. WebDriver
4. Selenium Grid
1.Selenium Integrated Development Environment (IDE)
 Selenium IDE is implemented as Firefox extension which provides record and
playback functionality on test scripts.

 It allows testers to export recorded scripts in many languages like HTML, Java,
Ruby, RSpec, Python, C#, JUnit and TestNG. You can use these exported
script in Selenium RC or Webdriver.

 >Selenium IDE has limited scope and the generated test scripts are not very
robust and portable.

2. Selenium Remote Control


Selenium RC (officially deprecated by selenium)allows testers to write automated
web application UI test in any of the supported programming languages.
It also involves an HTTP proxy server which enables the browser to believe that the
web application being tested comes from the domain provided by proxy server.

Selenium RC had been considered quite effective for testing complex AJAX-based web user
interfaces under a Continuous Integration System.

3. Selenium WebDriver
 Selenium WebDriver (Selenium 2) is the successor to Selenium RC and is by far the most
important component of Selenium Suite.

 SeleniumWebDriverprovides a programming interface to create and execute test cases.

 Test scripts are written in order to identify web elements on web pages and then desired
actions are performed on those elements.

 Selenium WebDriver performs much faster as compared to Selenium RC because it makes


direct calls to the web browsers.

 RC on the other hand needs an RC server to interact with the web browser.

 Mozilla Firefox Driver (Gecko Driver)


 Google Chrome Driver
 Internet Explorer Driver
 Opera Driver
 Safari Driver
 HTML Unit Driver (a special headless driver)

4. Selenium Grid
 Selenium Grid is also an important component of Selenium Suite which allows us to run our
tests on different machines against different browsers in parallel.

 In simple words, we can run our tests simultaneously on different machines running different
browsers and operating systems.

 Selenium Grid follows the Hub-Node Architecture to achieve parallel execution of test
scripts.

 The Hub is considered as master of the network and the other will be the nodes.

 Hub controls the execution of test scripts on various nodes of the network.

Automation Testing
 Software is the medium or platform for performing a task in the system.

 Automated testing is the application of software tools to automate a human-driven manual


process of reviewing and validating a software product. Most modern agile and DevOps
software projects now include automated testing from inception.

 Software testing is not a one-time process, as the developer test the software until it is declared
error-free. It checks whether the software is showing the expected output per input.

 Every project or software goes through a testing procedure, and the type of testing method
depends on various factors like the budget, expertise, suitability, requirement and timeline of
the project.
 When the tester writes the testing script manually and tests the software until it functions
properly known as manual testing & when this manual testing process becomes automatic, it
can be defined as automatic testing.

 Every project or software goes through a testing procedure, and the type of testing method
depends on various factors like the budget, expertise, suitability, requirement and timeline of
the project.

 When the tester writes the testing script manually and tests the software until it functions
properly known as manual testing & when this manual testing process becomes automatic, it
can be defined as automatic testing.
The framework used in automation software testing

o Linear Framework

One of the simplest frameworks that act as a record and playback model. In this tester write the
simple code to run the test cases without sequential steps and modularity

o Data-driven automation framework

The data-driven automation framework can perform both negative and positive test cases. All the
test case data inputs are stored in the extension files and tables from where values are read during
the execution of test scripts.

o Modular automation framework

A modular automation framework is best suited to run large test scripts as it divides the test scripts
into independent modules that hierarchically interact with each other. These small independent
modules are tested easily because it's easy to create required test scenarios.

o Hybrid automation framework


Hybrid is always a combination; here, keyword-driven and data-driven frameworks are combined in
which test data and keywords are externalized. Test data is stored in an excel or properties file,
whereas keywords are maintained in a separate java file.

o Page object model framework

In this framework, the tester doesn't need to write the code repeatedly because an object for the UI
element is created that can be recalled later for testing. This feature of the POM framework results
in less code usability and verbosity and reduces time consumption in writing test scripts.

o Keyword-driven automation framework

In KDF, the keywords are separated for a common set of functions and instructions, due to which
automation speeds up. In this scripting technique, keywords are associated with actions like closing
and opening a browser, mouse-click events, and others. During testing, all the keywords are recalled
to perform specific steps, and these keywords are maintained in a file along with the actions they
perform.

Automation testing tool


The automation testing is used to change the manual test cases into a test script with the help of
some automation tools.

We have various types of automation testing tools available in the market. Some of the most
commonly used automation testing tools are as follows:

o Selenium

o Watir

o QTP

o Telerik Studio

o Testim

o Applitools
Selenium

It is an open-source and most commonly used tool in automation testing. This tool is used to test
web-based applications with the help of test scripts, and these scripts can be written in any
programming language such as java, python, C#, Php, and so on.
Features of Selenium

This tool is most popular because of its various features. Following are standard features of
Selenium:

o Selenium does not support a stand-alone application, which means that the application is not opened
in the browser or URL like Notepad, MS-Word, Calculator, etc.
o Selenium web driver is the latest tool in the selenium community that removes all the drawbacks of
the previous tool (selenium-IDE).
o Selenium web-driver is powerful because it supports multiple programming languages, various
browsers, and different operating systems and also supports mobile applications like iPhone,
Android.

Watir

Watir stands for web application testing in ruby which is written in the Ruby programming
language. testing in ruby. It is a web application testing tool, which is open-source and supports
cross-browser testing tool and interacts with a platform like a human that can validate the text, click
on the links and fill out the forms.

Features of Watir

Following are the characteristics of Watir testing tools:


o It supports various browsers on different platforms like Google Chrome, Opera, Firefox, Internet
Explorer, and Safari.
o Watir is a lightweight and powerful tool.

o We can easily download the test file for the UI.

o We can take the screenshots once we are done with the testing, which helps us to keep track of the
intermediate testing.
o This tool has some inbuilt libraries, which helps to check the alerts, browser windows, page-
performance, etc.

QTP

QTP tool is used to test functional regression test cases of the web-based application. QTP stands
for Quick Test Professional, and now it is known as Micro Focus UFT [Unified Functional
Testing]. This is very helpful for the new test engineer because they can understand this tool in a
few minutes. QTP is designed on the scripting language like VB script to automate the application.

Features of QTP

Following are the most common features of QTP:

o This tool support record and playback feature.

o QTP uses the scripting language to deploy the objects, and for analysis purposes, it provides test
reporting.
o Both technical and non-technical tester can use QTP.

o QTP supports multiple software development environments like Oracle, SAP, JAVA, etc.

o With the help of QTP, we can test both desktop and web-based applications.
o In this tool, we can perform BPT (Business process testing).

Advantages of automation testing


1. It saves time and cost in testing and provides an increment in the efficiency of testing.
2. Automation testing improves the accuracy of testing
3. With automation, more cycles can be achieved
4. It also ensures consistency in testing
5. It's test scripts can be reusable

Selenium Integrated Development Environment (IDE)


 Selenium IDE (Integrated Development Environment) is an open source web automation
testing tool under the Selenium Suite.

 Subsequently, you can use the playback option to re-run the test cases.

 Perhaps, creating test cases on Selenium IDE does not require any programming language
but when you get to use selenese commands like runScript, a little knowledge prior to
JavaScript would prove beneficial for you to understand the concepts more clearly.

The following image shows the default interface of Selenium IDE:


Selenium IDE-Installation
 Since, Selenium IDE is available only as Firefox and Chrome plug-in, we assume that you
have already installed Mozilla Firefox browser in your system.

 However, you can download the latest version of Firefox through their official website
provided under the link given below.

Selenium IDE Download and Install


o Launch Mozilla Firefox browser.
o Open URLhttps://addons.mozilla.org/en-us/firefox/addon/selenium-ide/It will redirect you to the
official add-on page of Firefox.
o Click on "Add to Firefox" button.
o A pop-up dialog box will be appeared asking you to add Selenium IDE as extension to your Firefox
browser.
o Click on "Add" button.
o Restart you Firefox browser.
o Go to the top right corner on your Firefox browser and look for the Selenium IDE icon.

o Click on that icon to launch Selenium IDE.


Selenium IDE-Features
Selenium IDE is divided into different components, each having their own features and
functionalities. We have categorized seven different components of Selenium IDE, which includes:

1. Menu Bar
2. Tool Bar
3. Address Bar
4. Test Case Pane
5. Test Script Editor Box
6. Start/Stop Recording Button
7. Log, Reference Pane
1. Menu Bar
Menu bar is positioned at the top most portion of the Selenium IDE interface. The most commonly
used modules of menu bar include:

o ProjectName
It allows you to rename your entire project.

o OpenProject
It allows you to load any existing project from your personal drives.
o SaveProject
It allows you to save the entire project you are currently working on.

2. Tool Bar
The Tool bar contains modules for controlling the execution of your test cases. In addition, it gives
you a step feature for debugging you test cases. The most commonly used modules of Tool Bar
menu include:

o SpeedControlOption
It allows you to control the execution speed of your test cases.

o StepFeature
It allows you to "step" through a test case by running it one command at a time. Use for debugging
test cases.
o RunTests
It allows you to run the currently selected test. When only a single test is loaded "Run Test" button
and "Run all" button have the same effect.

o RunAll
It allows you to run the entire test suite when a test suite with multiple test cases is loaded.

3. Address Bar
This module provides you a dropdown menu that remembers all previous values for base URL. In
simple words, the base URL address bar remembers the previously visited websites so that the
navigation becomes easy later on.

Backward Skip 10sPlay VideoForward Skip 10s

4. Test Case Pane


This module contains all the test cases that are recorded by IDE. In simple words, it provides the list
of all recorded test cases at the same time under the test case pane so that user could easily shuffle
between the test cases.
At the bottom portion of the Test Case Pane, you can see the test execution result summary which
includes the pass/fail status of various test cases.

Test Case Pane also includes features like Navigation panel which allow users to navigate between
test cases and test suites.

5. Test Script Editor Box


Test Script Editor Box displaysall of the test scripts and user interactions that were recorded by the
IDE. Each user interaction is displayed in the same order in which they are performed. The Editor
box is divided into three columns:Command, Target and Value.
o Command:
Command can be considered as the actual operation/action that is performed on the browser
elements. For instance, if you are opening a new URL, the command will be 'open'; if you are
clicking on a link or a button on the web page, then the command will be 'clicked'.
o Target:
Target specifies the web element on which the operation has to be performed along with a locator
attribute. For instance, if you are clicking on a button called javaTpoint, then the target link will be
'javaTpoint'.
o Value:
Value is treated as an optional field and can be used when we need to send some actual parameters.
For instance, if you are entering the email address or password in a textbox, then the value will
contain the actual credentials.

6. Start/Stop Recording Button

Record button records all of the user actions with the browser.

7. Log, Reference Pane

The Log Pane displays the runtime messages during execution. It provides real-time updates of the
actions performed by the IDE. It can be categorized into four types: info, error, debug and warn.
The reference Pane displays the complete detail of the currently selected selenese command in the
editor.

Bugs
 A malfunction in the software/system is an error that may cause components or the
system to fail to perform its required functions.
 In other words, if an error is encountered during the test it can cause malfunction.
 For example, incorrect data description, statements, input data, design, etc.

Reasons Bugs Occurs:

1. Lack of Communication
 This is a key factor contributing to the development of software bug fixes.
 Thus, a lack of clarity in communication can lead to misunderstandings of what
the software should or should not do.
 In many cases, the customer may not fully understand how the product should
ultimately work. This is especially true if the software is designed for a completely
new product. Such situations often lead to many misinterpretations from both
sides.
2. Repeated Definitions Required
 Constantly changing software requirements creates confusion and pressure in both
software development and testing teams.
 Usually, adding a new feature or deleting an existing feature can be linked to other
modules or software components. Observing such problems causes software
interruptions.
3. Policy Framework Does Not Exist
 Also, debugging a software component/software component may appear in a
different or similar component.
 Lack of foresight can cause serious problems and increase the number of
distractions.
4. Performance Errors
 Significant problems with software design and architecture can cause problems for
systems.
 Improved software tends to make mistakes as programmers can also make
mistakes.
 As a test tester, data/announcement reference errors, control flow errors, parameter
errors, input/output errors, etc.
5.Lots of Recycling
 Resetting resources, redoing or discarding a finished work, changes in
hardware/software requirements may also affect the software.
 Assigning a new developer to a project in the middle of nowhere can cause
software interruptions.

6.Coding side

 Wrong coding
 Missing coding
 Extra coding

Basic terminology :
o Defect
o Bug
o Error
o Issue
o Mistakev
o Failurev

Terms Description Raised by

Defect When the application is not working as per the requirement. Test Engineer

Bug Informal name of defect Test Engineer

Error Problem in code leads to the errors. Developer, Automation Test Engineer

Issue When the application is not meeting the business requirement. Customer

Mistake Problem in the document is known as a mistake. --

Failure Lots of defect leads to failure of the software. --


Bug tracking tool
We have various types of bug tracking tools available in software testing that helps us to track the
bug, which is related to the software or the application.

Some of the most commonly used bug tracking tools are as follows:

o Jira
o Bugzilla
o Redmine
o Mantis
o Backlog

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.

Bugzilla
Bugzilla 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.

Bugzilla supports various operating systems such as Windows, Linux, and Mac.
Bugzilla has some features which help us to report the bug easily:

o A bug can be list in multiple formats


o Email notification controlled by user preferences.
o Advanced searching capabilities
o Excellent security
o Time tracking

Redmine
o Flexible role-based access control
o Time tracking functionality
o A flexible issue tracking system
o Feeds and email notification
o Multiple languages support (Albanian, Arabic, Dutch, English, Danish and so on)

MantisBT

MantisBT stands for Mantis Bug Tracker. It is a web-based bug tracking system, and it is also an
open-source tool.

o Full-text search
o Audit trails of changes made to issues
o Revision control system integration
o Revision control of text fields and notes
o Notifications
o Plug-ins
o Graphing of relationships between issues

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.

Features of backlog tool are as follows:

o Gantt and burn down charts


o It supports Git and SVN repositories
o IP access control
o Support Native iOS and Android apps

Cost of bugs
Bug is detected during the requirement definition and elaboration phase, the
cost to fix it is relatively low. It usually involves modifying the requirements
with little or no impact on other artefacts.
Types of Costs Associated with Software Bugs
1. Development Costs

 Debugging and Fixing: Time and resources spent by developers to identify,


debug, and fix bugs. This can include additional coding, testing, and validation
efforts.
 Retesting and Regression Testing: Ensuring that the fixes do not introduce
new bugs (regression bugs) and verifying that the original bug is resolved.

2. Testing Costs

 Extended Testing Cycles: Additional rounds of testing to identify and verify


bug fixes.
 Automation and Tooling: Investments in automated testing tools and
infrastructure to improve bug detection and regression testing.

3. Operational Costs

 Downtime and Outages: Bugs in production can cause system downtimes,


affecting business operations and productivity.
 Maintenance and Support: Increased demand for maintenance and support
services to address bug-related issues reported by users.
4. Business and Financial Costs

 Revenue Loss: Bugs in critical systems can lead to lost sales, reduced customer
transactions, and potential financial penalties.
 Customer Compensation: Costs associated with compensating customers
affected by bugs, such as refunds, credits, or other forms of compensation.

5. Reputation and Customer Satisfaction

 Brand Damage: Repeated or severe bugs can harm a company's reputation,


leading to loss of customer trust and loyalty.
 Customer Churn: Dissatisfied customers may switch to competitors, resulting
in lost business and reduced market share.

6. Opportunity Costs

 Delayed Releases: Time spent fixing bugs can delay product releases,
impacting the company’s ability to meet market demands and seize business
opportunities.
 Innovation and Development: Resources diverted to bug fixing reduce the
capacity for new feature development and innovation.

Real-World Examples

1. NASA Mars Climate Orbiter: A software bug caused by a metric-imperial


unit conversion error led to the loss of the $125 million spacecraft.
2. Knight Capital Group: A trading software bug resulted in a loss of $440
million in just 45 minutes, nearly bankrupting the company.
3. Ariane 5 Rocket: A software bug caused the rocket to explode shortly after
launch, resulting in a loss of $370 million.
Roles And Responsibilities of a Software Tester
1. Study and analyze the software application - Go through product
documentation, requirements specifications and design documents to gain in-
depth understanding of the system and testing scope.
2. Develop test plans - Outline the schedule of tasks, resources, test items, risks,
approaches and exit criteria for the testing effort based on priorities and
objectives.
3. Design test cases - Prepare detailed test scenarios to evaluate various functions
and performance of the system.
4. Set up test environments and data - Get the required software, hardware,
tools and datasets ready for test execution.
5. Run tests - Execute the test cases while closely observing system behavior.
Perform additional exploratory tests when needed.
6. Log and report defects - Document in detail any defects, crashes or deviations
found. Categorize, isolate test data and steps to reproduce. Assign to
appropriate teams for analysis and remediation.
7. Retest bug fixes - Confirm resolved bugs no longer occur. Also ensure other
areas have not been impacted negatively.
8. Regression test entire system - Whenever new code changes or features are
introduced, conduct selective testing across the software to catch any fresh
quality issues or errors.
9. Provide testing status updates - Keep relevant teams and stakeholders
informed on progress, test coverage, defect metrics and overall quality through
reports.
10.Recommend improvements - Continuously analyze processes and suggest
ways to increase efficiency, coverage and defect detection rates.
11.Maintain documentation - Record all testing details including plans, cases,
results, defects, data, scripts, reports etc. for traceability, analysis and retesting.
Software Process and Process Models

A Software product development process usually starts when a request for


the product is received from the customer.
 Starting from the inception stage:
o A product undergoes a series of transformations through a few
identifiable stages
o Until it is fully developed and released to the customer.
 After release:
o the product is used by the customer and during this time the product
needs to be maintained for fixing bugs and enhancing
functionalities. This stage is called Maintenance stage.
 This set of identifiable stages through which a product transits from
inception to retirement form the life cycle of the product.
 Life cycle model (also called a process model) is a graphical or textual
representation of its life cycle
The various Process Models
are ,
 Water Fall Model
 Spiral Model
 V-model
 Prototype Model
 Incremental
Delivery
 Agile model.
Product Components in Software Testing

1. Definition of a Component
o A component can be a software module, function, class, object, or any
other unit of code that performs a specific function or set of functions
within the system.
o It is often designed to be reusable, maintainable, and testable.

2. Component Testing
o Also known as unit testing or module testing, it involves verifying the
functionality, reliability, and performance of individual components.
o The goal is to ensure that each component behaves as expected in
isolation.

3. Integration Testing
o After individual components are tested, they are integrated to work
together.
o Integration testing ensures that the interactions between components are
correct and that they work together as intended.

Examples of Product Components

1. User Interface Components


o Buttons, text fields, forms, and other elements that make up the user
interface (UI).
o Each component can be tested for correct display, behavior, and
interaction with other UI elements.

2. Business Logic Components


o Classes and methods that implement the core business rules and logic of
the application.
o Testing these components involves ensuring that the business rules are
correctly implemented and produce the expected outcomes.

3. Data Access Components


o Modules that handle interactions with databases or data storage systems.
o Tests focus on data retrieval, storage, updates, and deletion operations,
ensuring data integrity and correctness.

4. Service Components
o Web services, APIs, or microservices that provide specific functionalities
or data to other parts of the system.
o These components are tested for correct functionality, performance,
security, and compliance with specifications.

5. Utility Components
o Helper functions, libraries, or utilities that perform common tasks, such
as logging, validation, or formatting.
o Tests ensure these utilities perform their tasks correctly and efficiently.
Water fall model
 The waterfall model is a sequential approach, where each fundamental activity of a
process represented as a separate phase, arranged in linear order.
 In the waterfall model, you must plan and schedule all of the activities before starting working
on them (plan-driven process).

 Plan-driven process is a process where all the activities are planned first, and the progress is
measured against the plan. While the agile process, planning is incremental and it’s easier to
change the process to reflect requirement changes.

The phases of the waterfall model are:

 Requirements

 Design

 Implementation

 Testing

 Maintenance
 In principle, the result of each phase is one or more documents that should be approved and the
next
 phase shouldn’t be started until the previous phase has completely been finished.
 For example, during design, problems with requirements can be identified, and during
coding, some of the design problems can be found, etc.
 The software process therefore is not a simple linear but involves feedback from one phase
to another. So, documents produced in each phase may then have to be modified to reflect
the changes made.

Spiral Model
The spiral model is similar to the incremental model, with more emphasis placed on risk
analysis.
The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation.
A software project repeatedly passes through these phases in iterations (called Spirals in this
model).
The baseline spiral, starting in the planning phase, requirements is gathered and risk is
assessed. Each subsequent spiral builds on the baseline spiral.
It is one of the software development models like Waterfall, Agile, V-Model.
Planning Phase: Requirements are gathered during the planning phase. Requirements like
‘BRS’ that is ‘Bussiness Requirement Specifications’ and ‘SRS’ that is ‘System Requirement
specifications’.
Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and alternate
solutions. A prototype is produced at the end of the risk analysis phase. If any risk is found
during the risk analysis then alternate solutions are suggested and implemented.
Engineering Phase: In this phase software is developed, along with testing at the end of the
phase. Hence in this phase the development and testing is done.

Evaluation phase: This phase allows the customer to evaluate the output of the project to date
before the project continues to the next spiral.
Advantages of Spiral model:
 High amount of risk analysis hence, avoidance of Risk is enhanced.
 Good for large and mission-critical projects.
 Strong approval and documentation control.
 Additional Functionality can be added at a later date.
 Software is produced early in the software life cycle.

Disadvantages of Spiral model:


 Can be a costly model to use.
 Risk analysis requires highly specific expertise.
 Project’s success is highly dependent on the risk analysis phase.
 Doesn’t work well for smaller projects.

Software Prototyping
A prototype is a version of a system or part of the system that’s developed quickly to
check the customer’s requirements or feasibility of some design decisions.So, a prototype is
useful when a customer or developer is not sure of the requirements, or of algorithms, efficiency,
business rules, response time, etc.
1. Establish objectives: The objectives of the prototype should be made explicit from the start
of the process. Is it to validate system requirements, or demonstrate feasibility, etc.
2. Define prototype functionality: Decide what are the inputs and the expected output from a
prototype. To reduce the prototyping costs and accelerate the delivery schedule, you may
ignore some functionality, such as response time and memory utilization unless they are
relevant to the objective of the prototype.
3. Develop the prototype: The initial prototype is developed that includes only user interfaces.
4. Evaluate the prototype: Once the users are trained to use the prototype, they then discover
requirements errors. Using the feedback both the specifications and the prototype can be
improved. If changes are introduced, then a repeat of steps 3 and 4 may be needed.
Prototyping is not a standalone, complete development methodology, but rather an
approach to be used in the context of a full methodology (such as incremental, spiral, etc).

Incremental Delivery
Incremental development is based on the idea of developing an initial implementation,
exposing this to user feedback, and evolving it through several versions until an acceptable
system has been developed.The activities of a process are not separated but interleaved with
feedback involved across those activities.
Each system increment reflects a piece of the functionality that is needed by the
customer. Generally, the early increments of the system should include the most important
or most urgently required functionality.
This means that the customer can evaluate the system at early stage in the
development to see if it delivers what’s required. If not, then only the current increment
has to be changed and, possibly, new functionality defined for later increments.

Rapid Application Development

RAD model is Rapid Application Development model. It is a type of incremental


model. In RAD model the components or functions are developed in parallel as if they
were mini projects. The developments are time boxed, delivered and then assembled into a
working prototype. This can quickly give the customer something to see and use and to
provide feedback regarding the delivery and their requirements.
Application generation: Automated tools are used to convert process models into code
and the actual system.

Testing and turnover: Test new components and all the interfaces.

Advantages of the RAD model:


 Reduced development time.
 Increases reusability of components
 Quick initial reviews occur
 Encourages customer feedback

Disadvantages of RAD model:


 Depends on strong team and individual performances for identifying business
requirements.
 Only system that can be modularized can be built using RAD
 Encourages customer feedback
 Integration from very beginning solves a lot of integration issues.

V-Model :

1. Requirements Gathering and Analysis: The first phase of the V-


Model is the requirements gathering and analysis phase, where the
customer’s requirements for the software are gathered and analyzed
to determine the scope of the project.
2. Design: In the design phase, the software architecture and design are
developed, including the high-level design and detailed design.
3. Implementation: In the implementation phase, the software is
actually built based on the design.
4. Testing: In the testing phase, the software is tested to ensure that it
meets the customer’s requirements and is of high quality.
5. Deployment: In the deployment phase, the software is deployed and
put into use.
6. Maintenance: In the maintenance phase, the software is maintained
to ensure that it continues to meet the customer’s needs and
expectations.
7. The V-Model is often used in safety: critical systems, such as
aerospace and defence systems,.

Agile Software Development


Agile Software Development is a software development methodology that
values flexibility, collaboration, and customer satisfaction. It is based on the
Agile Manifesto, a set of principles for software development that prioritize
individuals and interactions, working software, customer collaboration, and
responding to change.
Agile Software Development is an iterative and incremental approach to
Agile are used:
Technology in this current era is progressing faster than ever, forcing global
software companies to work in a fast-paced changing environment.
Principles of Agile:
1. The highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
2. It welcomes changing requirements, even late in development.
3. Deliver working software frequently, from a couple of weeks to a
couple of months, with a preference for the shortest timescale.
4. Build projects around motivated individuals. Give them the
environment and the support they need and trust them to get the job
done.
5. Working software is the primary measure of progress.
6. Simplicity the art of maximizing the amount of work not done is
essential.
7. The most efficient and effective method of conveying information to
and within a development team is face-to-face conversation.
8. By the amount of work that has been finished, gauge your progress.
9. Never give up on excellence.
10.Take advantage of change to gain a competitive edge.
The Agile Software Development Process:

Agile Software Development

1. Requirements Gathering: The customer’s requirements for the software are


gathered and prioritized.
2. Planning: The development team creates a plan for delivering the software,
including the features that will be delivered in each iteration.
3. Development: The development team works to build the software, using frequent
and rapid iterations.
4. Testing: The software is thoroughly tested to ensure that it meets the customer’s
requirements and is of high quality.
5. Deployment: The software is deployed and put into use.
6. Maintenance: The software is maintained to ensure that it continues to meet the
customer’s needs and expectations.
Let’s see a brief overview of how development occurs in Agile philosophy.
1. concept
2. inception
3. iteration/construction
4. release
5. production
6. retirement

Agile software development cycle

Example of Agile Software Development:


Let’s go through an example to understand clearly how agile works. A Software
company named ABC wants to make a new web browser for the latest release
of its operating system. The deadline for the task is 10 months. The company’s
head assigned two teams named Team A and Team B for this task. To motivate
the teams, the company head says that the first team to develop the browser
would be given a salary hike and a one-week full-sponsored travel plan. With
the dreams of their wild travel fantasies, the two teams set out on the journey of
the web browser. Team A decided to play by the book and decided to choose
the Waterfall model for the development. Team B after a heavy discussion
decided to take a leap of faith and choose Agile as their development model.
The Development Plan of the Team A is as follows:
 Requirement analysis and Gathering – 1.5 Months
 Design of System – 2 Months
 Coding phase – 4 Months
 System Integration and Testing – 2 Months
 User Acceptance Testing – 5 Weeks
The Development Plan for the Team B is as follows:
 Since this was an Agile, the project was broken up into several
iterations.
 The iterations are all of the same time duration.
 At the end of each iteration, a working product with a new feature has
to be delivered.
 Instead of Spending 1.5 months on requirements gathering, they will
decide the core features that are required in the product and decide
which of these features can be developed in the first iteration.
 Any remaining features that cannot be delivered in the first iteration
will be delivered in the next subsequent iteration, based on the
priority.
 At the end of the first iterations, the team will deliver working
software with the core basic features.
Advantages Agile Software Development:
 Deployment of software is quicker and thus helps in increasing the
trust of the customer.
 Can better adapt to rapidly changing requirements and respond faster.
 Helps in getting immediate feedback which can be used to improve
the software in the next increment.
 People – Not Process. People and interactions are given a higher
priority than processes and tools.
Disadvantages Agile Software Development:
 In the case of large software projects, it is difficult to assess the effort
required at the initial stages of the software development life cycle.
 Agile Development is more code-focused and produces less
documentation.
 Agile development is heavily dependent on the inputs of the customer.
If the customer has ambiguity in his vision of the outcome, it is highly
likely that the project to get off track.
 Face-to-face communication is harder in large-scale organizations.
SCRUM:
Scrum is a framework for getting work done within agile. Scrum uses all the core
principles of agile to define methods to facilitate a project. However, it is
important to note that agile does not always mean Scrum. Many different
methodologies take an agile approach to project management.

Scrum Master
Master is responsible for setting up the team, sprint meeting and removes
obstacles to progress .
Product owner
The Product Owner creates product backlog, prioritizes the backlog and is
responsible for the delivery of the functionality at each iteration
Scrum Team
Team manages its own work and organizes the work to complete the sprint or
cycle .
Product Backlog
This is a repository where requirements are tracked with details on the no of
requirements to be completed for each release. It should be maintained and
prioritized by product owner, and it should be distributed to the scrum team. Team
can also request for a new requirement addition or modification or deletion.

Regardless of which Agile methodology a team adopts, the benefits cannot be fully
realized without the commitment of everyone involved.

Testing Realities:

Testing realities refer to the practical aspects and challenges encountered in the
process of software testing. These realities are based on the experiences and
observations of testing professionals and highlight the complexities and
nuances involved in ensuring software quality. Here are some key testing
realities:

1. Impossibility of Exhaustive Testing:


o It's impossible to test every possible combination of inputs, paths,
and scenarios within a software application due to time, resource
constraints, and the sheer complexity of modern systems.
o Testing efforts must focus on high-risk areas and critical
functionalities to maximize coverage within available constraints.
2. Bugs are Inevitable:
o Despite rigorous testing, software almost always contains bugs or
defects that are discovered during testing or after deployment.
o The goal of testing is to identify and mitigate as many bugs as
possible to minimize their impact on users and the organization.
3. Uncertainty and Ambiguity:
o Requirements and specifications may be unclear, incomplete, or
subject to change, leading to ambiguity in testing criteria.
o Testers must navigate these uncertainties by collaborating closely
with stakeholders and seeking clarification to ensure accurate
testing coverage.
4. Testing is a Creative Process:
o Effective testing requires creativity and critical thinking to
anticipate potential issues, design robust test cases, and simulate
real-world usage scenarios.
o Testers often need to think outside the box to uncover hidden
defects and validate complex interactions within the software.
5. Time and Resource Constraints:
o Testing schedules are often compressed, leaving limited time for
thorough testing activities such as regression testing, performance
testing, and exploratory testing.
o Prioritization and efficient use of available resources are crucial to
achieve maximum test coverage and effectiveness.
6. Testing in Production-Like Environments:
o Testing in environments that closely resemble production
environments (with similar configurations, data volumes, and
network conditions) is essential to uncover environment-specific
issues.
o Differences between testing and production environments can
sometimes lead to bugs that are only discovered after deployment.
7. Impact of Changes and Dependencies:
o Changes in one part of the software can have unforeseen impacts
on other components or functionalities, potentially introducing new
defects (regressions).
o Testing must account for dependencies between modules, APIs,
and external systems to validate integrated functionality accurately.
8. Test Automation Challenges:
o Implementing and maintaining automated tests requires significant
initial effort and ongoing maintenance to keep pace with evolving
software and testing requirements.
o Automated tests may not cover all testing scenarios effectively,
necessitating a balance between automated and manual testing
approaches.
9. User Experience and Edge Cases:
o Testing should encompass real-world user experiences and edge
cases that may not be fully captured in requirements or initial test
plans.
o Ensuring usability, accessibility, and error handling across diverse
user scenarios is crucial for delivering a seamless user experience.
10.Continuous Learning and Adaptation:
o Testing professionals must continuously update their skills, stay
informed about industry trends and emerging technologies, and
adapt testing strategies to evolving project needs.
o Embracing agile and DevOps practices promotes iterative testing,
early feedback loops, and continuous improvement throughout the
software development lifecycle.

You might also like