Nelz's Blog

Mah blogginess

Selenium ROCKS Even Harder! (and Other Notes From the Session I Went To...)

TS-4588 Advanced Enterprise Debugging

Yet another good presentation by Neal Ford.

But, more on that later… now onto this:

Selenium Mojo!*

Neal made a comment during his presentation as using Selenium IDE as a metaphor to an airplane’s "black box". This REALLY caught my imagination.

You could go draconic, and just have QA (or any end user) turn on Selenium IDE in the background, so that when they see an issue they can’t "lie" to you about their steps… You’d have an exact record of their steps…

For a slightly less draconic, but systemic approach you could use this other method. As long as an error is reproducible in FireFox, you could really do away with the inexact nature of language to convey where a problem is. QA can just fire up Selenium IDE, navigate to where the problem exists, save off the Selenium script, and shunt it through whatever (bug tracking) mechanism to the developers. They could even update the script to fail upon the problem, then this script just gets added into the whole suite of functional tests… This is a win/win/win situation.

This whole Selenium-centric concept gives me good goose bumps and chills! I really like this idea!

The Session

On to the other stuff in the session…

Look into using ChainSaw, which is a Swing GUI app (downloaded from the Log4J site) that lets you parse through log files easier. You can even use it real-time by adding another type of appender to your log4j configuration. This will help you prevent going "scroll blind".

Prefer changing your

CLASSPATH or using /lib, over putting libraries in the /ext directory.

Class.forName()

isn’t a good construct, because you are not guaranteed to be getting the class from the correct classloader. You should use a different construct: Thread.getCurrentThread().getContextClassLoader().

Fiddle is an open-source project you can deploy next to your running production apps to run queries against the environment, if you need to figure out run-time values of a whole bunch of stuff. (And then you don’t need to open up a debugging port…)

Also, to go along with the Selenium stuff mentioned above, use Selenium to have the browser step through however X-many steps of the UI when you are trying to reproduce a problem. (Neal made a joke about our computers getting together and laughing at us at night because we keep doing their (repetitive task) jobs for them…)

(*) - Not "mojo" as in Maven stuff, "mojo" as in the Austin Powers sense. (Can I help it? They are playing Austin Powers just behind me on a big screen…)