Testing CF Applications with John Paul Ashenfelter
John Paul Ashenfelter does it again. Yesterday's Agile ColdFusion session was truly a gem. Today, John Paul (I'm not sure if this is what he prefers to go by, but I'll run with it for now) gave another talk on testing CF applications. If you read my post from yesterday you know part of John Paul's Agile preso involved a discussion on the importance of testing your CF applications. Today, he took that discussion to a whole new level.
For most developers testing their CF apps involves opening up a browser, running the application and hoping for no compile-time errors. This type of testing may also involve walking through an application and making sure certain functions perform as designed. Typically, testing ends there. John Paul focused on testing at several different levels including unit testing, functional testing, load/performance testing, and user acceptance testing. He covered different tools that are available to aid the developer (and QA staff) in performing tests within each of these areas. For unit testing there are products like CFUnit and CFCUnit. One area of testing that I absolutely want to integrate into my teams work-flow is automation. Not just automation of various test cases (which can be done with Selenium) but automation of build releases from development to staging and from staging to production. This is a process very few companies (in my experience) do well - where I work is no exception. For load testing your apps there are of course the big names like Mercury's LoadRunner but there's also more accessible tools like Grinder, an open-source Java load testing application. John Paul covered all of these tools to some degree and demonstrated several of them live. It made for a great demo.
Inversion of Control and CF: Using ColdSpring with Dave Ross
As I mentioned yesterday I want to begin looking into factories and how they might lend a hand in my objects development. I continued that endeavor today sitting in on the ColdSpring talk with Dave Ross. If you've ever met me or talked to me about conferences you know I'm of the opinion that 80% of what gets presented is geared towards beginner to intermediate developers. There's really very little advanced content available at conferences. I did not get this impression today with Dave's talk. I followed most of what Dave was discussing regarding how ColdSpring provides a framework for managing your factories but quite honestly I'm going to have to sit down and play around with it. That's certainly the best way to learn the ropes - a preso can only get you so far.
CFEclipse: A Guided Tour with Simeon Bateman
I rounded off the day with Simeon Bateman's CFEclipse Guided Tour. The first half of Simeon's preso was covering how to install Eclipse and CFEclipse and get up and running in a new development environment. The second half (or so) focused on some of the new features in CFEclipse 1.3. Having spent some time talking to Mark Drew last night I was already aware of some of the things being worked on, several of which are really cool. The new toolbars feature (a la Dreamweaver/Homesite) is a big "duh" in my book. These are items that have been needed for a while and it's nice to see them make their way into the tool. The new Component Explorer is a really nice feature as well. It let's you walk through a wizard setting up a CFC, it's properties, methods and so forth and when done, CFEclipse generates an entire CFC for you. Depending on how you set things up with the wizard you could wind up with all your properties defined and all your getters and setters created for you. This will obviously save a good bit of time for people who use it. I've been doing this kind of thing for awhile, although with various snippets. The last feature that I'm really excited about is variable introspection. Imagine CFPARAM-ing several URL variables at the top of a page. Now imagine typing "URL." towards the bottom of your page and CFEclipse automatically showing an inline drop-down letting you choose all the available URL scoped variables (only defined within that page) in your page. This is variable introspection (Simeon had a different name for it that eludes me right now). While this can be done with URL and FORM scoped variables it can also be done with queries. When you type the name of a query followed by a dot, CFEclipse gives you a list of all the column names available in the record-set. Very cool. There's a couple of other features that I know Mark Drew is working on, but I'll wait to mention those at another time.
The last part of the day included the sponsored ColdFusion Celebration complete with pool tables, virtual golf, and of course an open bar. I had a great time hanging out with Mark Drew, Cutter Blades, Emmet McGovern, several cool kiwi's, and the crew at HostMySite to name a few. It was also fun checking out virtual golf and spanking the competition.