3

I'm tired of test automation, because I don't feel challenged anymore.

99% of all automation I work with is straight forward, with click and type and no heavy logic.

Any tips on websites with very complex functionalities to test with Selenium webDriver?

Is Facebook a good example?

2
  • 3
    I think pages like facebook may get quite difficult to test because you can't test special cases without knowing insider knowledge. Maybe try an open source page, maybe something like redmind and so on
    – bish
    Jul 26, 2015 at 20:04
  • Does the redmind page contain complex functions that are challenging to automate?
    – Kharbora
    Jul 26, 2015 at 20:06

7 Answers 7

4

We have had a very hard time automating the Google Maps API.

Test case:

  • Surf to Google maps: https://www.google.nl/maps
  • Find an area with known location
  • Click the known location (without the use of mouse-coordinates, should also work when zooming, etc...)
  • Verify the location box with details opens
  • Retrieve the phone number

This is very hard, because Google maps uses a canvas.

0
3

"Test automation" means more than just automating user interfaces that run in a web browser. Someone with good programming skills should be able to find many other ways to use software to test software. Here are are couple of examples:

  • Write API-level integration tests. If developers test, they probably focus on unit tests. There is a middle ground between unit testing and UI testing, e.g. testing backend systems that interact with each other. Often these backend systems cannot be tested effectively via the UI.
  • Write test data generators. Sometimes the first job in a test cycle is to create test data: business objects that the software manipulates, starting with user accounts. If these are created manually, you can add value by automating the process. For a long-running batch process, you might write a sampler that pares down a large dataset to a smaller one that runs in a reasonable amount of time.
1

I think Single Page Applications type which last time gains more and more popularity can be hard to automate, because this type of pages are dynamically loaded. Every action on page can load new div from server without reloading whole page, just for example simple paste table to div. Webdriver cache webelements on page load, and dynamical loading of html without reload can lead do Stale Element Reference Exception or even to No Such Element Exception.

If I made mistake and someone can correct me, please do this, but this is my personal opinion :)

1

A CMS can be challenging. You have content moving, user permissions, generated IDs, etc. Try out WordPress.

I snapped out of the automation boredom once I hired someone to take it over and I took on security testing and process improvement. Start with OWASP for security.

1

I would definitely recommend broadening the types of testing you are doing, as well as seeking out more complex functionality to test.

Have you ever done performance testing? Reliability testing? Security testing? Database testing? What about designing scripts that actually crawl the functionality of your website without you telling them what to do, and take screen shots as they go? What about fuzzing on those input fields? How can you create software that tests while you are out of the office and records interesting scenarios that you can then look at more closely when you get in the office? User246 mentioned API testing - this is, IMO, very good advice! API testing is actually quite easy, but often very intimidating - and you can provide a lot of value by testing from the API primarily, then only using UI automation for E2E tests and tests to make sure that the API is being called correctly (UI automation is expensive to maintain, so you generally want to limit how much you rely on it).

If you really want to focus on testing using Selenium, I would suggest sites where you do not create data but do interact with data in rich ways. Google Maps is great because there are complicated ways to interact, tons of data already there, and you as a user can do many things without entering text. Google Images could also be fun to work with. Instead of testing, you could also try writing small UI scripts with Selenium that, e.g., analyze metatext on a page. Maybe write a script to browse Coursera and find all courses with the word "software" in their title or description. Or maybe, automate a task you normally do manually. Can you create a small tool where you put in the date, time, and description for an event on the command line, and it browses to Google Calendars, logs in for you, and puts that event on your calendar? While you wouldn't do this in production code (you would use a Google Calendar API and not UI tools), it can be a fun way to build your skills if you really like UI testing.

Facebook is less good for testing than many Google products because so many interactions require you to enter information, which makes it expensive to test against (and could also result in you being black-listed if your behavior "looks" abusive). G+ or any highly social site will have the same problem. Think about sites you visit to get information, not sites you visit to give information. On the other hand, Facebook and other social media could be great to practice on to automate your everyday tasks - as long as you are okay with the risk of some very visible errors!

Make sure that, whatever you do, you think carefully about the effect your behavior will have on any live site that you are testing against! Not all sites can handle heavy traffic or random inputs without breaking. Testing against a major site like Google Maps shouldn't be an issue (unless you are spamming their APIs, in which case they will probably blacklist you), but a smaller organization may have bugs that could bring down their site if you test too hard. Be a good citizen!

0

Check out some interesting challenges on https://challengers.flood.io/

3
  • 2
    Could you give some more information about the nature of the site you linked? We prefer to see explanation in the body of an answer with links used for reference purposes, because that way the important information is present even if the linked site changes or is taken down.
    – Kate Paulk
    Jul 27, 2015 at 11:14
  • Exactly what I was looking for! Just amazing! Thank you!!!
    – Kharbora
    Jul 27, 2015 at 15:53
  • 1
    I like that this was exactly what OP wanted. I don't like that I have no idea what it is without clicking on it. What exactly is this site?
    – corsiKa
    Jul 27, 2015 at 22:22
0

I don't know if this is what you are looking for but as is case for a lot of people we don't have a choice of what to automate. So what I personally try to do is also figure out what can I do that would prove useful for the software but still be exciting. One of the things is performance testing. I haven't seen too much that automated tests also maintain a historic evidence of performance.

What I am thinking of is something like recording performance information in a database to be able to perform some analytics on it. Like tie in build numbers and page performance, optimally with added firebug waterfall network tab information as well. That will let you know if some elements specifically might be slowing it down.

This can be gotten with New Relic, but with automated tests you also happen to know the context of what you were trying to do. So it's on thing to know how fast a page loads (with a given query maybe) and what was previous page, and another knowing if there were multiple other things added that are supposed to show for that query which might let you analyze if the same page performs differently with 2 different contexts. (if this idea is interesting I can go more into it)

TLDR; Track Performance stats for pages you load, and do analytics on them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.