Why no one likes your web application…

The usability sucks. I hate to say it, but it’s true, and it’s causing your site to lose money. As designers/programmers/business analysts, we often focus on features rather than the end user like Apple’s iPhone.

What made consumers drool over the iPhone? It wasn’t features, like the Nokia N95. The iPhone can’t even do Picture Messaging. It was of course, the User Interface. People camped outside waiting in line to order an iPhone because of how the application interacted with the user. Do they do this with your web application?

Probably not. Web 2.0 is making many nice looking websites, but so what? Popular websites are generally:

  1. Free. It’s the future of business.
  2. Simple. Twitter is txt-messaging for the web.
  3. Focused on the user. Why else is Basecamp so successful?

So here’s my call to action: I’m going to work on making Sovietbadges.co.nz easier to use. It should be like using Dell.com. What are you going to do?

Drupal + Ubercart vs. Magento, what’s better?

I think it depends on your level of experience. If you can configure options but aren’t really a fan of code, I’d go for Ubercart. This is because:

  • It’s really really easy to get a quite advanced level of E-Commerce experience, especially with the Drupal + Ubercart 1.0 Deluxe Install Package. Just extract to your web server directory, set up a database, and then go to the folder through the webserver. Easy.
  • If you want to add a new feature, odds are that there are already Modules for Drupal available to do so.
  • You’ll probably have the most trickiest time creating a theme, though Zen’s a pretty good place to start.

And just incase you were thinking that all Drupal sites look like this, check out Ka-Ching. It’s simply an amazing design, and is Drupal + Ubercart.

And Magento? They haven’t been around for long, but they’re the new force behind some really nice E-Commerce sites like Nerdyshirts. They’ve gone all out on focusing on what features businesses require to sell products. I know that sounds weird, but often open source software has a tendency to focus on software, rather than the end user (NSFW - Profanity but great humour).

But with all this focus on selling, the current release was slow and didn’t feature a WYSIWYG editor.

But do remember this is just a version 1.0 release, and I believe in the near future I’ll be switching from Drupal + Ubercart to Magento when it becomes a little friendlier to small companies that want to sell their products on the web easily.

Performance Testing LDAP + Web Applications with JMeter 2.3.2

While frameworks like CakePHP can automate unit tests, JMeter is a great tool for regression and performance testing because of the wide range of samplers (such as HTTP, FTP, LDAP).

I use JMeter to performance test an application that stores user data in a back end LDAP database. This is how I set up my script.

First create a Test Plan. This is created by default. Right click on the Test Plan, and add some Config Elements. If your application uses Cookies, add the HTTP Cookie Manager. There was a bug in JMeter 2.3.1 that meant that cookies would not clear correctly – upgrading to 2.3.2 will fix that.

Add HTTP Request Defaults Config Element. This means you don’t have to enter this information per each sampler. A note about the path – if your application is /folder/logon.jsp then you cannot set the path to be “/folder/”, and in each respective sampler type for instance “logon.jsp”. It doesn’t work (for me). I leave the path blank, and refer to the full path in each particular sampler.

Add HTTP Header Manager if you’d like to send different headers to your application. In this example, I send a value called userid with the variable ${userid}. This is useful to trace through web server logs for instance. Do note some proxies strip out headers they don’t recognise, and so using existing headers like User-Agent.

Since my application uses LDAP, I’ve added an LDAP Request Defaults Config Element. The documentation around using LDAP is pretty lightweight, so this is what works for me as request defaults.

I also added a LDAP Extended Request Defaults, since I do some LDAP requests that are outside the normal tests (like resetting user accounts).

And here’s a Login Config Element that provides the username and password forh the LDAP Request Defaults Config Element.

Next I add Listeners. Listeners do something with data from your application, like graph it, or save it. Some of the most useful ones are:

  • View Results Tree – Great for viewing particular failed requests, also has the ability to render HTML and XML.
  • View Results in Table – Good way to see at a glance what tests passed or failed.
  • Summary Report – Great to see average, minimum and maximum response times, error percentage, and throughput.

Stay tuned for the next post which will talk about adding Samplers to do the heavy lifting of your performance testing.