Steve Trefethen
Contact me Send mail to the author(s)
About Me
View my LinkedIn profile


Powered by discountASP.NET
referal ID: sdtref
Why recommend discountASP.NET?

Archives
Tags
Disclaimer
The posts on this weblog are provided �AS IS� with no warranties, and confer no rights. The opinions expressed herein are my own personal opinions and do not represent my employer�s view in any way.
# Sunday, August 12, 2007

Web based Project Management software

Posted @ 11:14PM

Categories: Tools

Tags:

If you’ve browsed to my site recently, you might have noticed a logo at the top of the right-hand column. It’s for ActiveFocus a web 2.0 based project management solution from Falafel Software. It’s available for download to run locally or as a hosted solution. An online demo is available here.

Adam Markowitz, a developer at Falafel whom I also worked with at CodeGear, is one of the developer’s working on ActiveFocus. He spent a good deal of time working to improve the Delphi teams project management solutions and he’s passionate about the subject matter making him a great fit.

If you’re a Delphi reader of my blog you’ll recognize the name Xavier Pacheco who also works at Falafel. He’s been in the project management space for a long time and has written a number of blog posts on the subject, here are a few:

And Lino has written about ActiveFocus on the iPhone. And yes, that’s his shiny new blog. If anything check out his disclaimer, classic Lino. If you have questions about ActiveFocus feel free to contact me and I’ll get you pointed in the right direction.

# Tuesday, August 07, 2007

Updated list of my FireFox Add-ons

Posted @ 12:03AM

Categories: Browsing | Tools

Tags:  | 

I hadn't updated my list of FireFox add-ons for quite awhile and with the release of Yahoo's YSlow for Firebug and my recent excursion into Selenium I decided it was time to refresh my list and at the same time I've moved it to my wiki so it will have a history of changes. After using YSlow I made a number of changes to my blog to improve load time as well so hopefully you'll notice at least some slight improvement.

Anything I'm missing?

# Sunday, August 05, 2007

Bandwidth speed consistently faster in IE than Firefox is a USB drive to blame?

Posted @ 10:19PM

Categories: Hardware | Home | Performance

Tags:  |  | 

linksys wrt150n
I recently purchased a LinkSys Wireless-N router ($99 on sale at Radio Shack) so I can roam around the house with my laptop. As a result I decided to do some bandwidth testing using broadbandreports.com's speed test as there is a server in Palo Alto, ~26 miles from my home, and it seemed like the results I was getting from Firefox were a bit slow. I started up IE to do some comparisons and found a not insignificant difference. As you can see on the graphic ComCast is my ISP which is easily three to four times as fast as what I was getting with my old DSL connection.

Results Using Internet Explorer 7.0.6000.16473

Results Using Mozilla Firefox 2.0.0.6

These results have been fairly consistent across a number of tests. I'm wondering if there is perhaps a performance penalty for running Firefox from a USB drive? All of these tests were conducted on my laptop.

I'll have test again at the office (also wireless) tomorrow and see how things compare. Of course, I'll probably install Firefox for a true apples-to-apples comparison.

# Tuesday, July 31, 2007

Automated testing of ASP.NET web applications using Selenium

Posted @ 1:06AM

Categories: .NET | AJAX | ASP.NET | Automation | Continuous Integration | Open Source | Quality | Recommended | Testing | Tools

Tags:  |  |  |  |  |  |  |  |  | 

Lately, I've been focused on Web Application testing frameworks and I've been looking at a number of different options and having varying degrees of success. That is, of course, until I started looking at Selenium after Lino mentioned it to me and I'm very impressed. Selenium is an open source project with multiple tools designed for testing web applications. Selenium includes:

  • Selenium IDE an add-on to Firefox use for recording test scripts
  • Selenium RC (Remote Control) a Java server used for execution of test scripts
  • Selenium Core client side testing support for web applications added directly to your application
All of these are interesting in their own right so be sure to look closely at each piece.

Selenium IDE

Selenium IDE
The Selenium IDE is a non-modal dialog add-on for Firefox that supports Selenium test development. In fact, it's more than fair to call this single dialog an IDE because it fully supports recording, development and debugging of test scripts. Additionally, it can format test scripts in any of the following for use with Selenium RC:
  • HTML
  • Java
  • C#
  • Perl
  • PHP
  • Python
  • Ruby

A Selenium test script consists of a series of Commands which have a Target and optionally a Value. For example, browsing to a web page using Selenium consists of the following:

Command: open
Target: http://localhost/myapp

To click on a link titled "About" on a page the Command might look like this:

Command: clickAndWait
Target: link=About

This will initiate the click and wait until the new page is done loading. There are literally hundreds of commands to choose from covering input (both keyboard and mouse), control manipulation, drag/drop, evaluation, verification, waiting, browser manipulation and just about anything else you'll need.

If you've done any UI testing at all you're familiar with the challenge of manipulating a UI programmatically in a manner independent from of the size, position or location of the control you're trying to manipulate. Selenium solves this problem using XPATH and providing the ability to locate controls based on XPATH expressions alleviating the need to hard code HTML tag structure into a test script. This is particularly crucial for ASP.NET testing since the runtime mangles the ID attributes of rendered tags. For example, the ASP.NET runtime may render ID attributes that look like:

id="ctl00_cphContents_gridMaint_DataGrid"

Finding this control using an XPATH expression can be simplified to something like this:

//table[contains(@id, "gridMaint")]

In the event the nesting of the DataGrid changes the script will continue to function properly as long as table's ID contains the text "gridMaint".

Example of using the Find button on the Selenium IDE

Notice the link is highlighted in the browser

Playing back tests using Selenium TestRunner

The Selenium IDE has a toolbar button that will launch a feature called TestRunner which allows you to playback your tests using controls hosted in an IFRAME inside your browser. Here's what it looks like:

Selenium TestRunner

You can playback your entire test from right within your browser. It's like having the IDE built right into your application.

Selenium RC

Next, is Selenium RC which is a Java server application used execute Selenium tests and drive a browser instance through AJAX communication with the browser. To start Selenium RC simply execute the following from a command prompt:

java -jar selenium-server.jar -interactive

Since I'm focused on .NET I'll discuss the C# approach. Once you've recorded and debugged your test you can capture it as C# and compile it into an NUnit compatible assembly where upon execution it will drive Selenium RC to manipulate the web application through a browser instance running on your desktop. Here is an example of the above recorded test in C#:

1 using System; 2 using System.Text; 3 using System.Text.RegularExpressions; 4 using System.Threading; 5 using NUnit.Framework; 6 using Selenium; 7 8 namespace SeleniumTests 9 { 10 [TestFixture] 11 public class NewTest 12 { 13 private ISelenium selenium; 14 private StringBuilder verificationErrors; 15 16 [SetUp] 17 public void SetupTest() 18 { 19 selenium = new DefaultSelenium("localhost", 4444, "*firefox", 20 "http://localhost:4444"); 21 selenium.Start(); 22 verificationErrors = new StringBuilder(); 23 } 24 25 [TearDown] 26 public void TeardownTest() 27 { 28 try 29 { 30 selenium.Stop(); 31 } 32 catch (Exception) 33 { 34 // Ignore errors if unable to close the browser 35 } 36 Assert.AreEqual("", verificationErrors.ToString()); 37 } 38 39 [Test] 40 public void TheNewTest() 41 { 42 selenium.Open("/selenium-ide/"); 43 selenium.Click("link=About"); 44 selenium.WaitForPageToLoad("30000"); 45 } 46 } 47 } 48

Generation of NUnit compatible tests is great because it makes it really easy to incorporate Selenium test suites into a continuous integration environment like CruiseControl.NET.

Conclusion

If you're in need of a web application testing framework you owe it to yourself to check out Selenium. I'd go so far as to say if you're doing doing any web related development and you're not already using Selenium you should stop right now and go download it. Here are there RSS feeds.

After playing with Selenium for about an hour I was easily able to:

  • Record tests against a RIA
  • Build a C# NUnit compatible assembly to drive Selenium RC
  • Integrate the tests into an automated build using CruiseControl.NET

Since then I've been able to really dig in and accomplish a lot of work in a very short period of time. The next step is to build up a nice battery of tests and dig into NCover to help figure out where the holes are.

Lastly, I just want to tip my hat to the ThoughtWorks and volunteers and supporters of the Selenium project. Kudos for such a great framework!

# Monday, July 30, 2007

Looking for advice on a water softener for very hard water

Posted @ 12:20AM

Categories: Home

Tags:

I've been very fortunate so far asking for advice and once again I thought I'd tap into the wisdom of crowds to see if I can get some help regarding water softeners and hopefully narrow the field a bit. I've been doing a bunch of research online though I have yet to reach a conclusion. I found this site which seemed helpful but locating unbiased information comparing various products has been hard to come by. Unfortunately, Consumer Reports doesn't even seem to review water softeners, at least searching their site didn't turn up any good results.

The Scotts Valley Water District provides a report each year on the quality of our water and it states a "Total Hardness of 216" which I believe by any means qualifies as "very hard". I do know our water is reeking havoc with our appliances not to mention our hair and skin. On top of the hardness I'm not at all fond of the taste and use a Watts Premier 5 filter reverse osmosis system which fortunately corrects that problem.

Anyway, I'm looking for a whole house system for a family of five with the understanding it's likely to be several thousand dollars installed. I've asked a number of friends and neighbors but have yet to reach any real conclusion though I've found many cases where admittedly systems are not well maintained. Do you have advice regarding whole house water softeners for a family of five with extremely hard water?

[Updated: July 30] Fix the spelling of "advise". Doh! At least I caught it myself.

# Thursday, July 26, 2007

Diving into web application automated testing

Posted @ 10:14AM

Categories: AJAX | Automation | Testing

Tags:  |  | 

My new job is completely focused on ASP.NET development and being a big believer in automated testing I've been investigating strategies for RIA's. I've found what I think is going to be a solution using Selenium which I'll blog more about later though I'm curious to know what other frameworks people are using? Basically, I don't want to overlook any potential candidates though at this point I'm very happy with Selenium.

What are you doing for automated testing of AJAX enabled Internet applications?
# Tuesday, July 24, 2007

Portable applications on a SanDisk Cruzer Micro USB flash drive

Posted @ 12:14AM

Categories: Hardware | Tools

Tags:  | 

SanDiskCruzer

A few weeks ago I bought a 4GB SanDisk Cruzer Micro USB 2.0 Flash drive ($39.95 @ Costco) with the intent of it being a convenient way to move files around. After using for a bit to do just that I've been playing with portable applications and I must say they rock! I'm using FireFox, Google Talk, Skype, Thunderbird and Trillian all working on this drive. Basically, this drive contains my communications tools and has made it easy to move quickly onto my new work machine.

Kudos to the folks over at www.portableapps.com!

[Update: July 24] The apps just keep coming. I just added Notepad++ and 7Zip to my drive and there is now a PortableApps Suite available. Cool!