It occurs to me that, having come across another Massively Wonderful Open Source Tool, I ought to talk it up a little.
My current project at work is implementing an automated GUI test harness using Selenium. If you're doing any sort of serious Web development, you owe it to yourself to check this thing out.
Selenium is a fairly complex toolset, but it's all aimed at browser-level testing. There's Selenium Core, a complex Javascript library that lets you manipulate the browser to a fine level of detail; Selenium IDE, which lets you do macro-style testing; and Selenium Remote Control (which is what we're actually using), which lets you control the browser remotely from a separate harness. The end result is that I'm able to write a detailed test suite in NUnit (the .NET equivalent of JUnit), full of fine-grained browser testing: telling the browser to open windows, check what's on the page, click the buttons, and so on just as I want.
It has all the usual virtues and vices of open source. The documentation is a tad crappy, and there are some rough edges. OTOH, it's free, not terribly hard to integrate and use, and impressively powerful. It runs with both Firefox and IE, and the Remote Control system has integration modules for many major development platforms (Java, .NET, Perl, PHP, Python, Ruby, etc).
In a bit over a week of work, I should be able to set up enough harness and examples to hand the thing off to QE and have them continue to automate the GUI-level testing from there. Combine that with the API and Unit test suites we already have, and I'm starting to think we may actually be able to pull off a reasonably agile development style. This tool looks to be exactly what we needed at this point; take a look at it...
My current project at work is implementing an automated GUI test harness using Selenium. If you're doing any sort of serious Web development, you owe it to yourself to check this thing out.
Selenium is a fairly complex toolset, but it's all aimed at browser-level testing. There's Selenium Core, a complex Javascript library that lets you manipulate the browser to a fine level of detail; Selenium IDE, which lets you do macro-style testing; and Selenium Remote Control (which is what we're actually using), which lets you control the browser remotely from a separate harness. The end result is that I'm able to write a detailed test suite in NUnit (the .NET equivalent of JUnit), full of fine-grained browser testing: telling the browser to open windows, check what's on the page, click the buttons, and so on just as I want.
It has all the usual virtues and vices of open source. The documentation is a tad crappy, and there are some rough edges. OTOH, it's free, not terribly hard to integrate and use, and impressively powerful. It runs with both Firefox and IE, and the Remote Control system has integration modules for many major development platforms (Java, .NET, Perl, PHP, Python, Ruby, etc).
In a bit over a week of work, I should be able to set up enough harness and examples to hand the thing off to QE and have them continue to automate the GUI-level testing from there. Combine that with the API and Unit test suites we already have, and I'm starting to think we may actually be able to pull off a reasonably agile development style. This tool looks to be exactly what we needed at this point; take a look at it...
(no subject)
Date: 2007-06-13 11:30 pm (UTC)So I have a question for you. I've lived in the testing-automation-free world of web development for the better part of a decade. Looking over Selenium, it's very clear that automated QA has developed it's own jargon, concepts, etc. of which I am wholly ignorant. For instance, in looking at the Selenium docs, I've derived "assert" from context (it means "test criterion" more or less, yes?).
Is there some book/site/documentation one can read to get up to speed on the general concepts and terminology of state-of-the-art QAing, that you recommend? So that I could make the most of Selenium?
(no subject)
Date: 2007-06-14 01:51 am (UTC)That said, I'm always happy to answer questions. "Assert" is the most primal term in automated testing, and you more or less have the meaning right. It's short for "I assert the following to be true", and indicates that the expression should be tested now: if the test is false, throw an exception, report the error and (usually) cease testing. There are a bunch of common variants of this: "Validate" tends to mean "test, and report if it fails, but keep going", and "Fail" is an imperitive "if we've gotten to this point, something is horribly wrong" (basically an automatic Assert(false)).
(no subject)
Date: 2007-06-14 02:38 am (UTC)(no subject)
Date: 2007-06-14 11:18 am (UTC)Maybe it's time to take another look.
(no subject)
Date: 2008-12-24 05:42 am (UTC)I'm sort of assuming it's gotten better in the past year and a half, but the ease I was able to get started with this is pretty incredible.
This (http://crschmidt.net/tmp/Selenium.html) is a mini-tutorial on using Selenium IDE to create tests; not 'published' yet, but something I'm putting together for our internal people and will publish once I'm done.
(no subject)
Date: 2008-12-24 04:11 pm (UTC)Mostly, they've worked on those rough edges, so it tends to work a bit more smoothly, with fewer horrible bugs than we hit in the first version. We actually originally had to take a point build, because the "stable" version had a critical bug we couldn't work around. But the current releases are pretty solid...
(no subject)
Date: 2008-12-24 07:17 pm (UTC)