Based on my experience collaborating with others online and offline relating to Selenium, it was evident to me that to get the greatest potential in automating websites and web applications using Selenium and like tools, one really needs a web development background. Granted I have such background, but wish that others using Selenium are able to have such a background. You don’t need to be a guru web developer but at least know the basics around web development.
And granted, this applies to all fields of test automation (e.g. software or desktop application development for desktop GUI application automation; APIs, protocols, and hard core low level stuff for embedded systems, etc.), not just the web, but it’s more evident for the web, based on the number of technologies involved, popularity, and how we hire automation QA for the web area. I may stand corrected, but comparatively, in embedded systems, it is much less likely to find a “software engineer in test” or QA doing automation who is inexperienced with programming and developmental aspects of embedded systems. For desktop GUI applications, you may still find inexperience QA doing automation (typically with commercial or free record & playback type tools), but that’s less of an issue as their inexperience less to code/test maintenance issues resulting from bad test code design.
But in the area of web automation, inexperience is worse because it’s possibly bad test code design combined with improper (or inefficient) automation due to lack of knowledge of the following areas:
- XML, XSLT, and XPath – some people only know how to use Firebug and like tools to get their XPath. That’s only step 1 to narrow down the location and context of the element. Step 2 and beyond involves defning the best XPath manually, not what the tool gives you.
- CSS selectors – some people only know how to use Firebug and like tools to get their CSS. That’s only step 1 to narrow down the location and context of the element. Step 2 and beyond involves defning the best CSS manually, not what the tool gives you.
- AJAX, HTTP, REST, API calls, traffic sniffing – to know how to analyze server side problems (or AJAX related issues) that only show up via network traffic sniffing or Firebug console, that are not evident from looking at the web UI itself. Also useful to know how to sniff HTTP traffic and replicate those HTTP calls using HTTP request/REST code libraries and combine with Selenium to do things you couldn’t do with Selenium alone, or just to speed up Selenium tests by automating steps like configuration (that are important to test but not need to be directed tested as the feature under test).
- Use developer centric techniques to help automate like exploratory Selenium automation development via (Python, Java Beanshell, Ruby) interpreter shell rather than write script, run, debug, repeat. You can do similar with shell than an IDE w/ debugger. Granted full development could benefit from IDE, but for quick hacks and trial tests, the shell method works better (for me anyways).
- and perhaps more, as I think of them to list here…
If you are doing web test automation using Selenium and do not have this kind of background, good time to start learning. =D