Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am very new to web automation testing tools. I want to automate my functional tests of web.
Please suggest me a few number of web automated testing tools. I want to use Java to write my automated testing tool.
I have visited the following site to select a good tool, but as I have no idea it is difficult to select a suitable tool for me.
http://java-source.net/open-source/web-testing-tools
Can any one suggest me a good tool for web testing?
Web Application Testing Tools
Selenium is widely used portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language.
Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.
Anteater is a
testing framework designed around Ant, from the Apache Jakarta Project.
It is basically a set of Ant tasks for the functional testing of Web
sites and Web services (functional testing being: hit a URL and ensure
the response meets certain criteria). One can test HTTP parameters,
response codes, XPath, regexp, and Relax NG expressions. Anteater also
includes HTML reporting (based on junitreport) and a hierarchical
grouping system for quickly configuring large test scripts. When a Web
request is received, Anteater can check the parameters of the request
and send a response accordingly. This makes it useful for testing SOAP
and XML applications.
The ability to wait for incoming HTTP messages is something unique to
Anteater, which makes it especially useful when building tests for
applications that use high level SOAP-based communication, like ebXML or
BizTalk. Applications written using these protocols usually receive SOAP
messages and send back a meaningless response. It is only later that
they inform the client, using an HTTP request on the client, about the
results of the processing. These are the so-called asynchronous SOAP
messages, and are the heart of many high-level protocols based on SOAP
or XML messages.
Written in Java, HttpUnit emulates the
relevant portions of browser behavior, including form submission,
Javascript, basic HTTP authentication, cookies, and automatic page
redirection, and allows Java test code to examine returned pages either
as text, an XML DOM, or containers of forms, tables, and links.
jWebUnit is a Java
framework which facilitates creation of acceptance tests for Web
applications. It provides a high-level API for navigating a Web
application combined with a set of assertions to verify the
application's correctness. This includes navigation via links, form
entry and submission, validation of table contents, and other typical
business Web application features. It utilizes HttpUnit behind the
scenes. The simple navigation methods and ready-to-use assertions allow
for more rapid test creation than using only JUnit and HttpUnit.
Bugkilla is a tool set to
create, maintain, execute, and analyze functional system tests of Web
applications. Specification and execution of tests is automated for both
the Web frontend and business logic layers. One goal is to integrate
with existing frameworks and tools (an Eclipse Plugin exists)
The Grinder, a Java
load testing framework freely available under a BSD-style Open Source
license, makes it easy to orchestrate the activities of a test script in
many processes across many machines, using a graphical console
application. Test scripts make use of client code embodied in Java
plugins. Most users of The Grinder do not write plugins themselves; they
use one of the supplied plugins. The Grinder comes with a mature plugin
for testing HTTP services, as well as a tool which allows HTTP scripts
to be automatically recorded.
Jameleon is an
automated testing tool that separates applications into features and
allows those features to be tied together independently, creating test
cases. These test cases can then be data-driven and executed against
different environments. Jameleon breaks applications into features and
allows testing at any level, simply by passing in different data for the
same test. Because Jameleon is based on Java and XML, there is no need
to learn a proprietary technology.
It's an acceptance testing tool for testing the functionality provided
by applications, and currently supports the testing of Web applications.
It differs from regular HttpUnit and jWebUnit in that it separates
testing of features from the actual test cases themselves. If I
understand it correctly, you write the feature tests separately and then
script them together into a reusable test case. Incidentally, you can
also make these test cases data-driven, which gives an easy way of
running specific tests on specific environments.
The framework has a plugin architecture, allowing different functional
testing tools to be used, and there is a plugin for testing Web
applications using HttpUnit/jWebUnit. The test case scripting is done
with XML and Jelly.
Jameleon combines XDoclet, Ant and Jelly to provide a
potentially powerful framework for solid functional testing of your
Webapp. It strikes a good balance between scripting and coding, and
allows you to set up multiple inputs per test by providing input via CSV
files. Along with the flexibility come a complexity and maintenance
overhead, but you are getting your Webapp tested for you.
LogiTest is the
core application in the LogiTest suite. LogiTest is designed to aid in
the testing of Web site functionality. It currently supports HTTP and
HTTPS protocols, GET and POST methods, multiple document views, custom
headers, and more. The LogiTest application provides a simple graphical
user interface for creating and playing back tests for testing
Internet-based applications.
Solex is a set of
Eclipse plugins providing non-regression and stress tests of Web
application servers. Test scripts are recorded from Internet browsers,
thanks to a built-in Web proxy. For some Web applications, a request
depends on a previous server's response. To address such a requirement,
Solex introduces the concept of extraction and replacement rules. An
extraction rule tied to an HTTP message's content will bind an extracted
value with a variable. A replacement rule will replace any part of an
HTTP message with variable content.
The tool therefore provides an easy way to extract URL parameters,
Header values, or any part of a request or a response, bind their values
with variables, and then replace URL parameters, Header values, or any
part of a request with the variable content. The user has the ability to
add assertions for each response. Once a response has been received, all
assertions of this response will be called to ensure that it is valid.
If not, the playback process is stopped. Several kinds of rules and
assertions are provided. The most complicated ones support regular
expressions and XPath.
Tclwebtest is a
tool for writing automated tests of Web applications in Tcl. It
implements some basic HTML parsing functionality to provide comfortable
commands for operations on the HTML elements (most importantly forms) of
the result pages.
TagUnit is a framework
through which custom tags can be tested inside the container and in
isolation from the pages on which they will ultimately be used. In
essence, it's a tag library for testing tags within JSP pages. This
means that it is easy to unit test tags, including the content that they
generate and the side effects that they have on the environment, such as
the introduction of scripting variables, page context attributes,
cookies, etc.
Web Form Flooder
is a Java console utility that analyzes a Web page, completes any forms
present on the page with reasonable data, and submits the data. It
crawls links within the site in order to identify and flood additional
forms that may be present. It is great for load testing of Web forms,
checking that all links work and that forms submit correctly.
XmlTestSuite
provides a powerful way to test Web applications. Writing tests requires
only knowledge of HTML and XML. The authors want XmlTestSuite to be
adopted by testers, business analysts, and Web developers who don't have
a Java background. XmlTestSuite supports "test-driven development". It
lets you separate page structure from tests and test data. It can also
verify databases. It's like JWebUnit, but has simple XML test
definitions and reusable pages.
For web testing, use Selenium (WebDriver) It's probably best tool for this purpose out there on GoogleCode
You can find lot of examples on google, and documentation on seleniumhq.org its quite helpful for starters.
Selenium is the most mature and widely used tool for web UI testing (open source anyway, though I don't think there are much better proprietary tools either). Its biggest advantage is that it uses the actual browser engine and can therefore be used to test AJAX-heavy pages as well.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I'm starting a new Spring Boot web application and I need to make a choice about how to implement front-end.
I'm really comfortable with Thymeleaf templating framework that I used in several projects, but I'm evaluating Angular (v2) as a possible alternative.
I'm quite new to client-side MVC frameworks and I'd like to understand if there are some guidelines to decide which option is the best for a web project.
I've read a lot of posts and tutorials about this, but they all seem to describe personal opinions or to be just coding experiments...
Are there some application requirements that objectively suggest to use a client-side approach instead of a server-side implementation?
Is it possible and effective to use both the technologies together?
Thymeleaf and AngularJS are not mutually exclusive. You can certainly use them together, depending on what you are trying to accomplish. If you are all in on writing a single-page dynamic web application, Thymeleaf is probably unnecessary.
Speaking to your question about client side frameworks vs. server-side ones, I'm an Enterprise Software Engineer, so I am not creating commercial software and my priority is less about how pretty it looks (a little Bootstrap does the trick) and more about stability, browser compatibility (even with older browsers), and maintainability. I personally avoid the single page, dynamic web applications because I find the code base more difficult to manage in non-trivial applications; a large Javascript code base can be a bear, in my opinion. Building up my pages primarily on the server side provides me with better debugging capabilities (Java is going to give you a lot of compile time help that you don't get with Javascript) and easier logging. I do use javascript (mostly just jquery) on the client side, but generally my web apps are built to degrade gracefully if the user has javascript turned off. Again, these are internal, utilitarian, applications to support the business. I don't have time to write a whole thesis on the subject and there are plenty of nuances that I'm not covering, but hopefully this is useful.
If you need your web app to act more like a mobile or desktop application, then single-page dynamic web app using a framework like AngularJS is one way to go.
The choice isn't whether to use one JavaScript library or Thymeleaf, that would be an artificial constraint you created, they are both different animals. Thymeleaf is for templating, JQuery is a client side library for making dynamic pages. It would make more sense to choose between templating libraries or choosing between JavaScript libraries, but both can go nicely together.
In general, your templating should not affect your JavaScript code, some people do template their Javascript code, but IMHO this is a terrible idea. Instead use Templating to replace tag attributes in HTML, and Javascript for making your website dynamic with whatever library you choose.
I'm not sure what you mean by
client-side approah instead of a server-side implementation
But what I see nowadays are 2 different approaches, creating Microservies VS Monolith web application. If you develop your website entirely in Thymeleaf you will not make it very reusable. Netflix, Amazon, Uber etc. all create services (sometimes called micro-services) which are reused throughout the organisation via a REST API.
If you only have a website implemented in Thymeleaf it will not be possible for another application (think mobile) to access any services created by your application, whereas if you create a REST API for your app then you can keep reusing your server back-end for when you need to make a mobile app, or another web app with similar requirements.
Of course if your services are not going to be re-used this might not matter to you and you might be very proficient in doing things a certain way albeit not being the most reusable, of course we are not always creating the next Amazon. But I still believe it is good idea to follow best practices, even if its just to get better at doing things a certain way.
We are looking to integrate DITA in our web application, which in an E- Learning platform. The DITA Open Toolkit processes all files using java. Wee are looking for a solution that allows us to work with the DITA content on the fly from a php - based application.
Does anyone know of any php projects that are written to work with DITA maps and content?
After searching we came across XMLmind DITA Converter (DITAC) and
Designed to be easily embedded in any JavaTM, desktop or server-side,
application.
is one of its features. But in the documentation, only how to embed in java application is described.
Can anyone provide any help to sort it out. I dont have any idea about implementing it in our php based web application.
PHP as a dynamic XML rendering platform is limited by having only XSLT 1.0 as a native library for transforms within PHP as the logic layer. However, this standard LAMP/WAMP platform works fairly well for dynamic delivery of DITA content if you treat topics and maps as individually-addressable resources bypassing the usual multi-pass, map-driven processing.
I've been developing this concept into a DITA-based site-building tool that I've named expeDITA. I had put some earlier code for this project into SourceForge but I don't recommend using that code base--it was an RPC-based proof of concept whereas the latest version supports RESTful addressing with a front controller setup and vastly improved theming. The latest version is just about ready to put into a new project, and now that conference season is over for me, I can focus on prepping the docs and headers.
For the moment, you can check out this latest code running on a staging server at http://expedita.x10host.com/. But note that this free-hosted site seems to throttle access to the DTDs from time to time, hosing the class-based transforms for minutes at a time. Once I get the project into a repository, I'll set up a demo site on a less persnickety hosted account.
If you are looking for full DITA rendering, this is not the project for you. The typical use case here would be for any web presence for which DITA as source would be preferred over HTML. You might use it as a wiki for collecting SME contributions as DITA source, or to use DITA's filtering and flagging features to produce adaptive content for responsive themes, or to produce site content that can be aggregated as a single-page view or served via API as XML or JSON formats for consuming in mobile apps. I've even added slide capabilities that might fit into dynamic eLearning content delivery modes.
This blog post gives some background into the project and its goals: http://contelligencegroup.com/ditaperday/what-is-dita-for-the-web/ . I hope this is helpful information. Can you mention more about what goals you have for a hosted DITA application? Would the serve-on-demand model work okay for you, or do you require the map-driven extended features of DITA-OT/DITAC based processing?
I am trying build an automated testing framework for some of our internal web services (java) at work. Each service has a set of APIs (3-5), although this could be relatively easy to achieve, the problem comes with some APIs which do not behave as pure functions, ex: something like persistX, this could store something in a database and returns an exception incase of failure.
There is no easy way to validate since there is no output here.
So I was wondering if this could a a bit generalized, say while testing the API, the user could provide a simple plugin or script to the framework of some sort that could validate the test. This is just one idea would be great if someone can tell me some better ones or any resources about the same.
Thanks
I recommend the robot framework. It is a keyword driven framework written in python. Because of that, you can run it in the JVM with jython which means you can extend it with java code (or python, of course). I've sucessfully used it to call APIs, then verify the result by peeking into a database, or querying the file system.
It also works on the .NET platform, has a selenium module for testing the front end, a jenkins plugin, and several other tools. It's very extensible and flexible.
What you are looking at is the application of black-box and white-box testing and the tools that support both.
For the web services that return a proper response you can perform black-box testing by verifying the data in returned response. SoapUI is the best tool for this.
For the APIs which do not behave as pure functions, you do white-box testing by verifying its side-effects like persistence, event generation, logging etc. For this you like programmable tools and SoapUI may or may not be the correct option.
We do both at our work and after evaluating multiple tools/frameworks (SoapUI, RSSPec, Robotframework), I chose Spock. Why spock?
It allows you to write intention revealing tests in BDD style
We are Java shop and we want to use the same familiar language for automation as well but with simplified syntatic sugar. And spock is all groovy based.
Excellent Webdriver/Selenium 2 support (including PageFactory) with Geb
It is built on top of JUNIT so all the plugins of JUNIT can be leveraged (code coverage, hudson/jenkins integration, etc)
Lot of webservice APIs and XML DSLs (no need to work with XPATH for simple scenarios)
Simplified setup (unlike robotframework it doesnt require python, jython setup)
etc....
I'm a newcomer to JSF and am still trying to follow examples to learn the basics of how it works, and that has now lead me to begin exploring ICEFaces.
I love the concept behind GWT that you can just write in pure Java and have it compile down to JS and HTML, but I have also heard that ICEFaces offers a lot of things that GWT doesn't.
That led me to start thinking: is there a way to combine the two in a project, and get the best of both worlds? Is it possible to get the AJAX-centricity, rich UIs and underlying capabilities of JSF, but then use GWT to handle all the client-side code generation?
I looked at something called ICEPush which may very well do just this, but without fully understanding the roles both technologies play in MVC web apps I wanted to take a moment and see what the SO community thought of such a hybrid solution.
Having said that, I was wondering if someone could break down - in quasi laymans terms - the intentional difference between these two frameworks, and to give argumentation as to why they can be - or shouldn't be - combined inside the same project.
Essentially I'm looking for an AJAX-friendly, rich UI Java webapp framework that is open source, has an active dev community, and comes loaded decent/good documentation.
Also, not that beggars can be choosers, but I'd appreciate it if answerers don't solicit other solutions besides ICEFaces or GWT. I'm very well aware that these are not the only two webapp frameworks out there, and this question isn't going to convince me to start using either of them; I'm simply interested if their strengths can be combined, or not.
Thanks in advance.
JSF in general makes heavy usage of javascript. JSF or bette the JSF frameworks provide lots of components. The Javascript is generated on the fly.
GWT compiles the Javascript upfront. It provides some components as well. GWT is doing AJAX calls to its interfaces.
I'm not aware of any bridge that allows you to integrate JSF with GWT. So there is no interface and those technologies don't work together.
Both come with good documentation and have an active community.
ICEpush can be used directly with GWT; you can find out more about the integration here:
http://www.icepush.org/product/icepush-GWT.html
ICEpush provides a simple API to "push" notifications to the browser. Essentially, users (or browser windows) are organized into groups. When something interesting happens (such as a new photo uploaded to a photo sharing application) you can invoke a push on the group users.
In the case of the ICEpush GWT integration, you receive a callback into your "Java" code and can respond to the notification (such as, display the new photo). A GWT application can potentially run offline, but that does introduce the risk of application code being subject to offline attack.
In the case of ICEfaces, the ICEpush integration is abstracted away: rather than a "push" to a group, you "render" a group. With ICEfaces you request that all relevant pages be rendered on the server and any necessary page updates are sent to the browser. This makes it particularly easy to add Ajax Push features to an ICEfaces application.
So, the choice is really whether you want to use JSF or GWT. With JSF you have a standard server-side framework that emphasizes pages built from declarative markup. It is the natural successor to JSP application development. With GWT you have a procedural client/server distributed framework that emphasizes events and pages that are built from "Java" objects. It is the natural successor to AWT/Swing on the web. Both are very popular, so it's more a question of the technique you prefer.
What's the best, crossplatform way to perform blackbox tests on AJAX web applications?
Ideally, the solution should have the following attributes:
Able to integrate into a continuous integration build loop
Cross platform so I you can run it on Windows laptops and Linux continuous integration servers
Easy way to script the interactions
Free-as-in-freedom so you can adapt it into your tool chain if necessary
I've looked into HttpUnit but I'm not conviced it can handle AJAX-heavy websites.
Selenium might be what you're looking for: http://selenium.openqa.org/
It allows you to script actions and evaluate the results. It's open-source (Apache 2.0), cross platform, and has nice tools.
I have used Selenium for exactly this task, but found it to be brittle.
Check out this talk by two Googlers: Does my button look big in this? Building testable AJAX applications
They isolate the testable javascript (non DOM-interaction) and test that using the Rhino javascript engine.