Testing is one of the critical function of software development. Web developers should not only focus on coding but also be a part of and understand functional and regression testing.
Wikipedia defines:
Functional testing is a quality assurance (QA) process and a type of black-box testing that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered (not like in white-box testing). Functional testing usually describes what the system does.
Regression testing is a type of software testing that verifies that software previously developed and tested still performs correctly after it was changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc. During regression testing, new software bugs or regressions may be uncovered. Sometimes a software change impact analysis is performed to determine what areas could be affected by the proposed changes. These areas may include functional and non-functional areas of the system.
The purpose of regression testing is to ensure that changes such as those mentioned above have not introduced new faults. One of the main reasons for regression testing is to determine whether a change in one part of the software affects other parts
There are many tools available in market to help in these testing. In this article, I will list some of the tools that web developers may want to look to do both, functional and regression testing.
Selenium
Selenium is one of the most popular suites for automating the web browsers across many platforms. Selenium is designed in a way that it supports automation testing of functional aspects of web based applications, across multiple browsers and platforms.
Selenium suite is comprised of four basic components:
- Selenium IDE: Selenium IDE is an add-on for Firefox browser for recording and playing the web application tests.
- Selenium RC: Due to the limitations of Selenium IDE in terms of browser support and language support, we have to use selenium RC. Selenium RC is java based; and it can interact with the web application using any language. Selenium RC is a tool to write automated web application UI tests in any programming language like Java, C#, Perl, Python, against any HTTP website, using any mainstream JavaScript enabled browser.
- Selenium WebDriver: Selenium WebDriver directly communicates with the web
browser and uses its native compatibility to automate the web applications. - Selenium Grid: Selenium Grid allows you to run your tests on different machines against different browsers and operating systems in parallel i.e. running multiple tests at the same time.
Learn More: http://www.seleniumhq.org/ TestCafe
TestCafe is a functional web testing tool developed by DevExpress, which works without any plugin on any browser that supports HTML5. In today’s world, that translates to ‘any modern browser’. TestCafe can work across all major operating systems including Windows, Mac and Linux. TestCafe can also work across all mobile devices, such as iPhone, iPad, Android and Windows Phone. TestCafe has a capability to simultaneously run tests on multiple browsers and multiple machines.
Learn More: http://testcafe.devexpress.com/
CasperJS
CasperJS is a JavaScript based navigation scripting and testing utility for PhantomJS (WebKit) and SlimerJS (Gecko). It is an easy to use open source tool for different operating systems, like Windows, MacOS and Linux. CasperJS scripting language is written in JavaScript for phantomjswebkit headless browser and slimerjs (gecko).
CasperJS provides useful high-level functions, methods, and syntactic sugar, for doing common tasks such as:
- Filling and submitting forms
- Clicking and following links
- Capturing page screenshots
- Testing remote DOM
- Logging Events
- Downloading binary and other resources
- Writing functional test suites and saving it in a JUnit XML format
- Scraping web contents
Lean More: http://casperjs.org/ Screenster
Screenster is a UI based functional and regression testing tool for web applications. Screenster runs on a server and is accessible by users through any web browser. Presently, Screenster runs only on Windows because it needs to support Internet Explorer, but the Linux version of Screenster will be available soon in upcoming releases. It lets you capture screen and do visual comparison instead of scripting and also empowers non-technical people to build and maintain tests effortlessly. The user interface of Screenster is clean and allows gaining productivity up to 10 times as compared to the traditional testing, without a single line of code.
A few of the features of Screenster are as follows:
- It provides full access to Selenium API
- It is easy to use
- Web based shared workspace
- Screen capture on each and every step
Learn More: https://screenster.io/ SoapUI
SoapUI is an open source web service testing application for service oriented architectures (SOA) and representational state transfers (REST), built entirely on the Java platform and uses Swing for the user interface which makes it cross platform. SoapUI supports IDEA, Eclipse, and NetBeans. SoapUI supports multiple protocols, such as SOAP, REST web services, JMS, AMF and JDBC calls. It lets you easily and quickly perform functional/regression testing.
Features of SoapUI are, as follows:
- Drag and drop test creation
- Test debugging
- Data driven testing
- Multiple environment support
- Advanced scripting
- Web services functional, load, compliance and security testing
Learn More: http://www.soapui.org/ Sahi
Sahi is a business-ready tool for automation of web application testing. Sahi is available as an open source product and as Sahi Pro for commercial use. As an automation tool, Sahi provides the facility of recording and playing of scripts. Sahi is written in Java and JavaScript languages. Sahi is especially suited for cross browser/multi browser testing of applications with lots of AJAX and dynamic content. The in-built reports and logs provide a detailed test report to analyze the result.
Features of Sahi are as follows:
- Works on any browser which supports JavaScript
- Fast parallel batch playback
- Easy to maintain automation
- Impressive reports and logs
- Intuitive and simple APIs
- Supports AJAX and highly dynamic web applications
- Supports data driven testing
- Sahi does not need the browser to be in focus
Learn More: http://sahipro.com/ WatiN
WatiN is a cross platform web application testing tool developed in C# language. WatiN stands for “Web Application Testing in .NET” and is derived from WatiR which is “Web Application Testing in Ruby”. WatiN framework provides the Web Application testing through Internet Explorer 6, 7, 8 and IE9 versions; however, it supports Firefox 2.x and 3.x version as well. It has open source library and is known for easy to read syntax. WatiN interacts with the Internet Explorer using COM (Component Object Model) interface and JSSh (javascript shell server) extensions in Firefox browser.
Features of WatiN are as follows:
- Automates all major HTML elements with ease
- Works with Internet Explorer 6, 7, 8, 9 and Firefox 2 and 3
- Supports AJAX website testing
- Can be used with .NET language
- Supports frames and iframes
- Supports HTML dialogs (modal and modaless)
- Native support for Page and Control model
Learn More: http://watin.org/ WatiR
WatiR is an open source family of Ruby libraries for automating web browsers. WatiR stands for “Web Application Testing in Ruby”. WatiR allows you to easily read and maintain tests. It uses Ruby which is a fully featured modern scripting language. WatiRwebdriver supports Chrome, Firefox, Internet Explorer, Opera and also runs in headless mode (HTMLUnit). Just like other languages, Ruby enables you to link to databases, export XML files, read files and organize your code as reusable libraries.
Features of WatiR are as follows:
- It’s a free open source tool
- Active growing community
- Powerful and easy to use
- Supports multiple browsers on different platforms
Learn More: http://watir.com/ QTP (UFT)
QTP stands for Quick Test Professional. QTP is a Windows based software testing tool used to test the application on web or desktop. QTP is best for functional and regression testing. QTP testing tool is developed by Hewlett Packard (HP). QTP uses VB script language to run the script which supports web, Java, .Net Flex, Web services, WPF, Delphi etc.
QTP’s latest version is UFT 12.53 where the installation process has become easier. QTP was only working on the Windows operating system, but UFT 12.0 onwards supports Safari on a remote Mac. UFT runs on all main browsers, like Internet Explorer v6-v11, Firefox, Google Chrome and Apple Safari (on remote MAC PC)
Learn More: http://www8.hp.com/in/en/software-solutions/unified-functional-testing-automation/
Ranorex
Ranorex is developed by Ranorex GmbH. Ranorex is a Windows based GUI testing tool to test the desktop, web and mobile based applications. Ranorex can handle any kind of modern and dynamic GUI applications. Ranorex can support multiple technologies, like .Net, Winforms, WPF, Java, SAP, HTML5, Silverlight, iOS, Android, and Windows Apps (Native/Hybrid) etc. Ranorex does not have a scripting language of its own and uses standard programming languages such as C# and VB.NET as a base. Ranorex is user friendly and affordable.
Features of Ranorex are as follows:
- Data driven testing
- Automated functional testing
- Cross platform and device testing
- Cross browser testing
- Automated GUI Testing
Learn More: http://www.ranorex.com/