Seminar report 11
Seminar report 11
1. INTRODUCTION
2. LITERATURE REVIEW
The history of software testing tools dates back to the early days of computing,
evolving alongside advancements in technology and software development methodologies.
Here's a brief overview:
Specialized Testing Tools (2000s-Present): The early 2000s witnessed the rise of
specialized testing tools catering to specific testing needs, such as performance testing,
security testing, and usability testing. Tools like Selenium for web application testing and
JMeter for performance testing became widely adopted in the industry.
Shift to Agile and DevOps (2010s-Present): The adoption of Agile and DevOps
methodologies led to a shift-left approach to testing, where testing is integrated earlier into
the software development lifecycle. This prompted the development of testing tools that
seamlessly integrate with continuous integration/continuous deployment (CI/CD)
pipelines, such as Jenkins, Travis CI, and GitLab CI.
3. Theory
3.1 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?”
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.
Fig 1
Manual testing is a technique to test the software that is carried out using the
functions and features of an application. In manual software testing, a tester carries out
tests on the software by following a set of predefined test cases. In this testing, testers
make test cases for the codes, test the software, and give the final report about that
software. Manual testing is time-consuming because it is done by humans, and there is
a chance of human errors.
Fast and accurate visual feedback: It detects almost every bug in the software
application and is used to test the dynamically changing GUI designs like layout,
text, etc.
Less expensive: It is less expensive as it does not require any high-level skill or a
specific type of tool.
No coding is required: No programming knowledge is required while using the
black box testing method. It is easy to learn for the new testers.
Efficient for unplanned changes: Manual testing is suitable in case of unplanned
changes to the application, as it can be adopted easily
1. Black-BoxTesting
Evaluate the performance and behavior of software from an end user's point
of view. The tester only has visibility into the inputs and outputs, not the internal
code structure.
2. White-BoxTesting
Evaluate the security and functionality of the product in more detail .This
testing is performed by a developer or QA professional with an understanding of the
internal code behind the software.
3. UnitTesting
Evaluate the performance of individual unit so fan application to confirm that
the functions work as expected. These tests are often performed by developers or QA
professionals.
4. IntegrationTesting
Evaluate an application with two or more components to test how they interact
with one another and work to complete a workflow.
5. SystemTesting
Automated Testing is a technique where the Tester writes scripts on their own
and uses suitable Software or Automation Tool to test the software. It is an
Automation Process of a Manual Process. It allows for executing repetitive tasks
without the intervention of a Manual Tester.
Test Tool Selection: There will be some criteria forth Selection of the tool .The
majority of the criteria include :Do we have skilled resources to allocate for
automation tasks, Budget constraints, and Do the tool satisfy our needs?
Define Scope of Automation: This includes a few basic points such as Framework
should support Automation Scripts, Less Maintenance must be here ,High Return on
Investment, Not many complex Test Cases
Planning ,Design ,and Development: For this ,we need to Install particular
frameworks or libraries, and start designing and developing the test cases such as
NUnit, JUnit, QUnit, or required Software Automation Tools
Test Execution: Final Execution of test cases will take place in this phase and it
depends on Language to Language for .NET, we’ll be using NUnit, for Java, we’ll
be using JUnit, for JavaScript, we’ll be using QUnit or Jasmine, etc.
1.Regression Testing:-
Regression testing involves retesting the application’s functional and
non- functional facets after developers perform code changes to ensure that
performance isn’t affected. Often when developers identify and fix a bug in a program,
the code revision can cause other bugs to occur. Regression testing helps is late which
change produced the undesirable results. Continual development requires frequent
regression tests throughout an application’s lifecycle.
2.Regression Testing:-
Unit testing ensures that each code object is not relying on other
functional modules or any external code to operate correctly. However, due to the
extreme testing volume, isolation of every code module is not always a practical
solution, especially in large code bases. Automating unit testing helps to increase the
number of individual application components that can undergo testing. In addition, by
breaking the source code down into objects for testing, developers have the freedom to
make changes without affecting any operation in the application.
3.Functional Testing:-
Automated Testing is a technique where the Tester writes Scripts on their own
an suitable Software or Automation Tool to test the software .It is an Automation
Process of a Manual Process. Allows for executing repetitive tasks without the
intervention of Manual Tester.
Software testing is of two types, static testing, and dynamic testing. Also, the
tools used during these testing are named accordingly on these testings. Testing tools
can be categorized into two types which are as follows:
1) Static :-
Test Tools: Static test tools are used to work on the static testing processes. In the
testing through these tools, the typical approach is taken. These tools do not test the real
execution of the software. Certain input and output are not required in these tools.
Static test tools consist of the following:
Flow analyzers: Flow analyzers provides flexibility in the data flow from input to
output.
Path Tests: It finds the not used code and code with inconsistency in the software.
Coverage Analyzers: All rationale paths in the software are assured by the coverage
analyzers.
Interface Analyzers: They check out the consequences of passing variables and data
in the modules.
Dynamic testing process is performed by the dynamic test tools. These tools
test the software with existing or current data. Dynamic test tools comprise the
following:
Test driver: The test driver provides the input data to a module-under-test (MUT).
Test Beds: It displays source code along with the program under execution at
the same time.
Emulators: Emulators provide the response facilities which are used to imitate parts
of the system not yet developed.
Mutation Analyzers: They are used for testing the fault tolerance of the system by
knowingly providing the errors in the code of the software.
There is one more categorization of software testing tools. According to
this classification, software testing tools are of 10 types:
XML/BDD-JSON.
Supports test automation frameworks such as TestNG, WebdriverIO,
Nightwatch.js, Appium, Playwright, etc.
Integrates with CI/CD tools such as Jenkins, Azure Pipelines, Bamboo & CircleCI.
2.TestComplete:
TestComplete developed by SmartBear Software is a functional automated
testing tool that ensures the quality of the application without sacrificing quality or
agility
Features:
TestComplete has built-in keyword-driven test editor that consists of keyword
operations that correspond to automated testing actions.
It records the key actions that are necessary to replay test and discard all unneeded
actions.
It can run several automated tests across separate virtual machines.
It has built-in code editor that helps testers write scripts manually.
It automatically captures screenshots during test recording and playback
3.LambdaTest:
LambdaTest is a cross-browser testing tool that helps to evaluate how web
application responds when accessed through a variety of different browsers.
Features:
It has Selenium scripts on 3000+ browsers and operating system environments,
giving higher test coverage.
It can perform automated cross-browser testing of locally hosted web pages using
LambdaTest tunnel.
It can also help to run a single test across multiple browser/ OS configurations
simultaneously.
TestRail:
TestRail is a test management tool that helps to streamline software testing
processes, get visibility into QA. This tool is used by testers, developers, and team
Xray:
Xray is a test management app for Jira that helps to plan, execute, and track
quality assurance with requirements traceability.
Features:
It promotes Native Quality Management, where all tools, tests used by QA are built
natively into development environment like Jira.
It integrates with leading automation frameworks like Cucumber, Selenium, and
JUnit to automate testing.
It allows easy integration with CI tools like Jenkins, Bamboo, and GitLab.
It helps to easily map stories using BDD.
Zephyr Scale:
Zephyr Scale is a test management provides a smarter and more structured
way to plan, manage, and measure tests inside Jira.
Features:
It offers cross-project integration, traceability, and a structured designed useful
in large environments.
It helps to scale tests in Jira.
It helps to improve visibility, data analysis, and collaboration.
It provides detailed changed history, test case versioning, and end-to-end
traceability with Jira issues and challenges
.
Selenium:
Selenium provides a playback tool for authoring tests across most web
browsers without the need to learn a test scripting language.
Features:
It provides multi-browser support.
It makes it easy to identify web elements on the web apps with the help of its
several locators.
It is able to execute test cases quicker than the other tools.
Ranorex
: Ranorex Studio is a GUI test automation framework used for testing web-
based, desktop, and mobile applications. It does not have its own scripting language to
automate application.
Features:
It helps to automate tests on Windows desktop, then execute locally or remotely on
real or virtual machines.
It runs tests in parallel to accelerate cross-browser testing for Chrome, Firefox,
Safari, etc.
It tests on real iOS or Android devices, simulators, emulators, etc.
Test Project:
Test Project is a test automation tool that allows users to create automated tests for
mobile and web applications. It is built on top of popular frameworks like Selenium and
Appium.
Features:
It is a free end-to-end test automation platform for web, mobile, and API testing.
Tests are saved as local files directly on your machine with no cloud-footprint
to get a complete offline experience.
It helps to create reliable codeless tests powered by self-healing, adaptive wait, and
community add-ons.
It provides insights about release quality, step-by-step detailed report with
screenshots and logs.
Department of CE, VTC, Patgaon (Miraj) Page 19
Software Testing Tools
Katalon
Platform: Katalon Platform is a comprehensive quality management platform that
enables team to easily and efficiently test, launch, and optimize the best digital
experiences.
Features:
It is designed to create and reuse automated test scripts for UI without coding.
It allows running automated tests of UI elements including pop-ups, iFrames.
Automation: Testing tools automate repetitive tasks, saving time and effort. They can
execute tests faster and more consistently than manual testing.
Increased Test Coverage: With automation, testers can cover more scenarios and edge
cases, leading to better overall test coverage.
Accuracy: Testing tools reduce the likelihood of human error, leading to more accurate
test results.
Reusability: Test scripts and scenarios can be reused across different projects or
iterations, saving time and effort in creating new tests.
Consistency: Automated tests ensure that the same tests are executed consistently each
time, reducing the risk of overlooking critical issues.
Parallel Testing: Many testing tools support parallel execution, allowing multiple tests
to run simultaneously, which speeds up the testing process.
Early Bug Detection: Automated testing helps catch bugs earlier in the development
cycle, reducing the cost and effort required to fix them.
Improved Collaboration: Testing tools often provide features for collaboration among
team members, facilitating better communication and sharing of test results and insights.
Metrics and Reporting: Testing tools generate detailed reports and metrics, providing
valuable insights into the quality of the software and helping teams make data-driven
decisions to improve it.
Initial Setup Cost: Implementing testing tools often requires an initial investment in
terms of both time and resources to set up the testing environment, configure the tools,
and train the team.
Skill Requirements: Using testing tools effectively requires knowledge and expertise,
which may necessitate training for team members who are unfamiliar with the tools.
Limited Testing Scope: Some testing tools may have limitations in terms of the types of
testing they support or the platforms they can test on, leading to gaps in test coverage.
Cost: Depending on the complexity and features of the testing tools, they can be
expensive to procure and maintain, especially for smaller organizations with limited
budgets.
Compatibility Issues: Testing tools may encounter compatibility issues with certain
software environments, requiring additional configuration or customization to work
effectively.
Overhead for Small Projects: For small projects or projects with tight deadlines, the
overhead of setting up and maintaining testing tools may outweigh the benefits they
provide.
False Sense of Security: Relying solely on automated testing tools may give a false
sense of security, leading to potential gaps in testing and overlooking critical issues that
only manual testing can uncover.
Conclusion
In this project thus we have conclude that how to test different testing tools. And
we understand automation testing tools and manual testing tools.
So, this was all about an introduction to software testing. It is an integral phase in
software development, which ensures the delivery of defect-free and high-quality
software. Its major goal is to uncover all possible errors and bugs in the software and
address them immediately. In addition, it takes care of validating the software’s
efficiency, functionality, and usability. Hence, putting a software product under rigorous
testing is essential to ensure its quality and correct functioning. The conclusion of
software testing tools is that they play a crucial role in ensuring the quality, reliability, and
performance of software applications. These tools help automate testing processes,
improve test coverage, and detect defects early in the development lifecycle. By using a
combination of different testing tools, teams can effectively manage and execute various
types of tests, such as functional testing, performance testing, and security testing.
Ultimately, investing in the right testing tools can lead to faster delivery cycles, reduced
costs, and higher customer satisfaction.
The software testing is multifaceted. It encompasses ensuring the quality and
reliability of the software, identifying and fixing defects, validating that the software
meets the requirements, and providing stakeholders with confidence in the product's
readiness for release. Effective testing involves thorough planning, execution, and analysis
to mitigate risks and improve overall software quality. Additionally, it's an iterative
process that continues throughout the software development lifecycle to maintain and
enhance the product over time.
REFERENCES