5.
Testing Tools
5.0 Introduction
Testing is an integral part of any successful software project.
The type of testing (manual or automated) depends on various
factors, including project requirements ,budget, timeline,
expertise, and suitability.
Manual testing (as the name suggests), test cases are executed
manually (by a human, that is) without any support from tools
or scripts.
But with automated testing Test cases are executed with the
assistance of automation testing tools, scripts, and software.
Manual testing is the oldest method of testing.
As source code changes, each time manual tests are repeated
and prone to errors. It is also difficult to execute manual testing on
multiple platforms.
Limitations of Manual Testing:
1. Manual Testing is Slow and Costly: Because it is very labour
intensive, it takes a long time to complete tests. Increasing headcount
increases cost.
2. Manual Tests do not Scale Well: As the complexity of the software
increases, the complexity of the testing problem grows exponentially. This
leads to an increase in the total time devoted to testing as well as the total
cost of testing.
3. Manual Testing is Not Consistent or Repeatable: Variations in how
the tests are performed are inevitable, for various reasons. One tester may
approach and perform a certain test differently from another, resulting in
different results on the same test, because the tests are not being
performed identically.
4. Lack of Training is a Common Problem: Although not unique to
manual software testing.
5. Testing is difficult to Manage: There are more unknowns and greater
uncertainty in testing than in code development so, it will be difficult to
manage.
Automation testing
Automation testing is a process of changing any manual test case
into the test scripts by using automation testing tools and scripting
or programming language.
It helps in building better quality software with less effort. We can
define test automation as, the automation of test-related activities
with little or no human interaction.
Benefits of Automated Testing :
1. Faster Feedback Cycle: Test automation helps to reduce the feedback
cycle and bring faster validation for phases in the development of software
product.
2. Increased Efficiency: Test automation is useful because it detect problems
or bugs early or during the development phase, which increases the team's
efficiency.
3. Reliable: Tests in automation perform precisely the same operations each
time they are run, thereby eliminating human error.
4. Repeatable: We can test how the software reacts under repeated execution
of the same operations.
5. Programmable: We can program sophisticated tests that bring out hidden
information from the application.
6. Comprehensive: We can build a suite of tests that covers every feature in
the application.
7. Reusable: We can reuse tests on different versions of an application, even if
the User Interface (UI) changes.
8. Better Quality Software: Because we can run more tests in less time with
fewer resources,
9. Fast: Automated tools run tests significantly faster than human
users.
10. Cost Reduction: An organization will save money as fewer
resources are spent on testing software product using an automated
test environment.
11. Improved Accuracy: Automated tests can execute tests with
100% accuracy as they produce the same result every time you run
them.
12. Higher Test Coverage: Automation allows spending time on
writing new tests and adding them to automated test suite. This
increases the test coverage for a product so more features are
property tested resulting in a higher quality application.
5.1 How to Make Use of Automation
Tools?
Test automation is the process of testing various parts of new
software with little to no human involvement.
Automated testing tools vary in their underlying approach,
quality, and ease of use.
These tools may facilitate unit (module) testing and
subsequent integration testing(eg, drivers and stubs) as well
as commercial software testing .
2.Dynamic testing tools :
support the dynamic testing process,
test the software system with "live" data.
It examines the system's functionality, memory/CPU use, and overall system
performance
Dynamic test tools include
Mutation analyzers (used for testing fault tolerance of the system by
knowingly providing the errors in the code of the software.),
Emulators (provides the response facilities which are used to imitate parts of
the system not yet developed),
Test driver ( provides the input data to a module-under-test ),
Test beds (The test execution environment configured for testing) and so
on.
Carried out later in the development phase.
There are two types of testing tools i.e.
1.Static testing tools :
support the static testing process,
do not involve actual input and output.
Static testing involves manual or automated document evaluations., i.e,
they do not test the actual execution of the software.
Carried out early in the development phase.
Helps to understand the structure of the code and can also be useful to
enforce coding standards.
These tools include
Coverage analyzers (All rationale paths in the software are assured),
Flow analyzers ( provides flexibility in data flow from input to output),
Interface analyzers (check out the consequences of passing variables and data in the
modules.)
and so on
For usages of Automation testing tools commonly applied steps:
1. Select test tool
2. Define scope of Automation
3. Planning, Designing and development of test
4. Execution of test
5. Maintenance
Characteristics of Test Tools:
1. Testing tools should be easy to use
2. These tools should provide complete code coverage and create test
documenting in various formats like doc, html, rtf etc.
3. Testing tools should use one or more testing strategy for performing
testing on host and target platforms.
4. These tools should provide a clear and correct report on test case, test
case status(PASS/FAIL), etc.
5. Testing tools should support GUI-based test preparation
6. These tools should be able to adopt with the underlying hardware.
Test Automation Frameworks
A test framework is a set of guidelines which can be followed to
create test cases and related processes.
These guidelines can be about coding practices, storage and
retrieval of test data and test results, interaction with external
resources and many other things.
A test framework usually contains internal libraries and reusable
code modules which provide a foundation for test automation .
Typically, there are four test automation frameworks that are adopted
while automating the applications.
1. Data Driven Automation Framework: In data-driven testing
frameworks, test data and test scripts are separated which makes it easier
to maintain and update the test data at any point of time without affecting
the test scripts and stored in an external resource such as text file, excel
spreadsheet, CSV file or database table.
These frameworks provide the flexibility of executing the same test script
with multiple data sets
2. Keyword Driven Automation Framework: In keyword driven
frameworks, the test logic is divided into keywords and functions. A
sequence of keywords is used to define the test scripts and these
keywords are further defined as functions to implement the desired
behavior.
For example, HP QTP and Selenium are widely used for keyword-driven
testing.
3. Modular Automation Framework: In modular frameworks, the
application can be divided into different modules which can be tested
independently. Test scripts can be reused to an extent, thus reducing the
test script development time
Programming knowledge is required to work with these frameworks.
4. Hybrid Automation Framework: In hybrid frameworks more
than one framework is used to achieve the desired objectives. The
combination should be designed in such a way that weaknesses of one
framework are compensated with the strengths of other frameworks.
A test automation framework offers following several benefits
1. Flexibility to Run Selective Test Cases: A test automation
framework generally provides the flexibility to execute a single test
case, a suite of test cases, or all test cases
2. Reduced Manual Interactions: The main purpose of automating
any process is to reduce manual labor and, implementing a test
automation framework helps reduce manual labor that was involved
in the execution of test cases
3. Efficiency: A test automation framework provides a structure for
the test automation tasks like test creation, test execution,
organization of tests, test data creation or reporting
4.Easy Maintenance: As all test cases are created following the
same structure. debugging and isolation of bugs becomes easter
For performing testing with automated testing tools, the following points
should be noted:
1. Select a tool that allows the implementation of automated testing in a
way that conforms to the specified long-term testing strategy
2. Clear and reasonable expectations should be established in order to
know what can and what cannot be accomplished with automated
testing in the organization
3. There should be a clear understanding of the requirements that
should be met in order to achieve successful automated testing This
requires that the technical personnel should use the tools effectively
4. The organization should have detailed, reusable test cases which
contain exact expected results and a standalone test environment with
a restorable database
5. The testing tool should be cost-effective The tool must ensure that
test cases developed for manual testing are also useful for automated
testing
5.2 Types Of Testing Tools
Testing tools can be classified based on following several parameters:
1. The purpose of the tool
2. The Activities that are supported within the tool
3. The Type/level of testing it supports
4. The Kind of licensing (open source, freeware, commercial)
5. The technology used
S.N Tool Type Used for Used by
o.
1. Test Management Tool Test Managing, testers
scheduling, defect
logging, tracking and
analysis.
2. Configuration management For Implementation, All Team
tool execution, tracking members
changes
3. Static Analysis Tools Static Testing Developers
4. Test data Preparation Tools Analysis and Design, Testers
Test data generation
5. Test Execution Tools Implementation, Testers
Execution
6. Test Comparators Comparing expected All Team
and actual results members
7. Coverage measurement Provides structural Developers
tools coverage
8. Performance Testing tools Monitoring the Testers
performance, response
time
9. Project planning and For Planning Project
Tracking Tools Managers
Popular Open Source Automation
Testing Tools:
1. Katalon Studio: Katalon Studio is a test automation tool that
enables us to test Web, apps, Mobile apps and Desktop APIs It is
Powerful in enabling cross-functional operations for product
development teams at scale. Katalon Studio is easy to use, robust to
expand, yet contains the necessary components for advanced needs
with built-in keywords and project templates.
2. QA Wolf: It is an open-source end-to-end automated testing tool
and one of the fastest ways to create QA tests. It is fully hosted, so no
downloads or installation needed. It is automatic code generation and
low learning curve enable your entire team to get involved in test
creation from the non-technical members to the senior developers.
3. Selenium: Selenium is one of the most commonly used open-source
test automation used to automate browsers. . The tool supports multiple
programming languages such as Java, C#, Python, etc. to create selenium
test scripts. It helps to create very effective test scripts for regression
testing, exploratory testing. and quick bug reproduction.
4. Appium: Appium is an open source test automation framework for
mobile apps. It is built on client/server architecture. Appium automates
the applications that are created for iOS and Android. It is a well-liked
mobile automation testing tool attributable to its easy installation and
usage
5. Robotium: Robotium is an open-source tool that acts as a test
automation framework which is mainly intended for Android UI testing. It
supports graybox Ul testing system testing, functional testing and user
acceptance testing for both native and hybrid Android based applications.
Cucumber is an open-source tool based upon the concept of Behavioral
Driven
6. Cucumber: Development, allows to do automated acceptance
testing by executing examples that optimally describe the behavior of
the application. It has cross-platform OS support and compatibility
with programming languages like Ruby, Java and .NET.
7. WATIR: Web Application Testing in Rubyis (WATIR) an extremely
lightweight, technology independent open source testing tool for web
automation testing. It allows us to write simple, adaptable readable
and maintainable automated tests.
8. Sikuli: Sikuli is an open source testing tool built upon the
concept of image recognition and possesses the ability to automate
anything that is seen on the screen. It is useful to automate non-web-
based desktop applications. . It is also known for its quick bug
reproduction.
9. Apache JMeter: Apache JMeter is an open source Java desktop
app intended mainly for web applications' load testing. Apache JMeter
is also supports unit testing and limited functional testing. It has
features like dynamic reporting, portability, powerful Test IDE etc. It
supports different type of applications, protocols, shell scripts, Java
objects, an databases.
10. WatiN: Web Application Testing in.NET (WatiN) an open source
test automation framework that aids in UI and functional web app
testing. Mainly intended for Internet Explorer and Firefox browsers.
11. SoapUI: SoapUI is a popular open source API Test Automation
Framework for SOAP and REST. SoapUI supports functional testing,
performance testing, data-driven testing and reporting as well.
12. Capybara: Capybara is an open source acceptance test
framework, helpful in testing web applications. ... Capybara simulates
the behavior of a real user that interacts with the application It is
used in conjunction with other testing tools like Cucumber, RSpec,
Minitest, etc
13. Testia Tarantula:Testia Tarantula is an open source tool is
created by software company "Prove Expertise in Finland. Modern web
tool for software test management mainly intended for agile projects.
Test executions can be quickly planned by using its tagging features
and easy drag and drop interface. It has smart tags for fix verification
and dashboard for managers.
14. Testlink: Testlink is an open source web-based test management
tool primarily featured for test plans, test cases, user roles, test
projects and test specifications. It offers cross-platform OS support. .
15. Windmill: web applications. It offers cross browser and cross
platform support for web app testing.
16. TestNG: . TestNG is an open source testing framework, supports
almost all kinds of testing like unit testing, functional testing,
integration testing, data-driven testing, end-to-end Well integrated
with other bug tracking systems like JIRA, Bugzilla, Redmine. Windmill
is an open source web testing tool created for automating and testing
17. Marathon: Marathon is an open source test automation
framework, test Java-based GUI applications. Mainly intended for
acceptance testing, allows us to record and replay the tests and
generates test reports as well. Use Marathon if we are testing a small
project and if your application screen size is limited to 10 screens.
18.Httest: Httest is used to implement all types of Http-based tests.
It offers a range of Http based functionalities. Httest allows testing of
complex scenarios very effectively.
19. Xmind: . Xmind is an open source and free mind mapping
software useful for regression testing. Xmind is built on java platform
and has cross-OS support . It is a light-weight app, provides good
encapsulation and also produces an artifact that tells about the total
time spent on testing.
20. Wiremock: Wiremock is an open source testing tool for Http
based application programming interfaces It acts as a service
virtualization tool that mocks the API for providing quick and powerful
end to end testing
21. k6: k6 is an open source load and performance testing tool for
testing cloud-native applications, APIs and micro services. Modern
developer-centric CLI tool with test cases written in ES6 JavaScript
and with built in support for HTTP/1.1, HTTP/2 and WebSocket
protocols k6 built for automation, and can easily be introduced into
automation pipelines in Jenkins, GitLab, Azure DevOps Pipelines,
CircleCI and other CI/CD tools for performance regression testing.
Implementation of Automation
Testing using Selenium Tool
Selenium is a ppopular open-source software testing tool. It was
created by Jason Huggins in2004.
It is a very well known tool when it comes to testing automation that
allows its users to write scripts in a lot of different languages,
including Java, C#, Python, Perl and Ruby.
Supported Environments for selenium are Android, iOS, Windows,
Linux, Mac, Solaris.
Supported Browsers for selenium are Google Chrome, Mozilla Firefox,
Internet Explorer, Edge, Opera, Safari, etc.
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.
Fullscreen
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.
Since, WebDriver directly calls the methods of different browsers hence we have separate driver for each
browser.
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.
**** Read Selenium IDE from selenium implementation****
Best Of Luck