Selenium is an open source project dedicated to providing a simple and flexible means of web application testing. Unlike client side load testers such as JMeter, Selenium is intended to test for correctness of presentation and functionality. As a testing tool, Selenium offers a finer level of control over the actions of virtual users. Developed as a Firefox plugin, Selenium users can quickly build complicated tests that involve navigating through several pages. This allows an engineer to create tests that mimic typical user behaviors, such as logging in and interacting with the web site.
The primary intent of Selenium is to ensure that a web application performs as expected, across several browsers. Once the user has built a test, the Selenium Remote Control can be used to launch a range of browsers that will then run through the steps of the scenario. When building a scenario, the user highlights forms and fields for testing, and the plugin writes the code automatically. The benefit of Selenium testing is that a host of tests can be constructed and run regularly. This ensures that any changes made to the application do not result in errors or a loss of functionality.
Each step of a Selenium test can either Verify or Assert the command given. With verifications, Selenium reports errors or unexpected values after the test, highlighting those steps in red. When a step performs an Assert, the test will stop if any errors occur. This allows a developer to spot unexpected behavior that may appear while using a wide range of web browsers. The ease of running Selenium tests make it simple to maintain a complex web application without hours of regression testing.
The Selenium Grid is a recent addition to the core technology, and allows developers to deploy tests from multiple servers. This allows wider testing, and does not tax the resources of the host machine as severely.