1. A software testing system comprising: a memory to store machine readable instructions; and a processor, connected to the memory, to execute the machine readable instructions to: parse code of a web application to be tested; determine, based on the parsing: web objects of the web application, and properties of the web objects; create an object repository in the memory, the object repository including the web objects and the properties; receive a test case specifying test steps to test a functionality of the web application, wherein the test steps are specified in the test case using natural language constructs; validate the test case, the validating comprising: determining that the test case includes: test steps conforming to a predetermined syntax, and predetermined keywords; store test step definitions including code blocks executable by a web application testing tool; identify stored test step definitions matching the test steps in the test case; identify web objects from the object repository that are associated with the test steps; receive test data, the test data associated with the test steps; identify test data in the received test data, the identified test data for use with the web application testing tool;; populate the identified test step definitions with the identified web objects and the identified test data to generate a test script executable by the web application testing tool; and invoke the web application testing tool to execute the test script to test the functionality of the web application in a browser.