Alexander’s Blog – The Making of LetMeGo

Archive for September 2008

Manual User Testing Has Died. Long Live Selenium!

without comments

When developing web applications, one must be very careful with the quality of the tool that is going to be released. Most users will only give you one chance to introduce a new feature. If it doesn’t work well it will be very, very difficult to regain their trust. As such, when something new is done here at the Torrenegra Labs, we test it a lot. We also attempt to test all the other features that may be affected by it.

Here is how we do it: the developer tests in the development environment and then again in the staging environment. The product developer then tests in the staging environment. So far we have three tests. In average, every new feature requires three rounds of quality assurance. Thus, we have nine tests so far. When approved for release, the feature is then to be published and tested once again in the production environment. These final tests are done by the product developer and somebody else (maybe the developer or a super-user). That is eleven tests in total. Eleven times of doing, almost, the same thing over and over. Although some people may find this fun, most developers and product developers hate it. I am one of them.

For many years I looked for ways of automating those test. There were a few paid tools out there that could, in theory, do that. We didn’t find any of them good enough, in our opinion, to invest in. Last year, however, two members of our team (German being one of them) started to play with a new and free tool called Selenium. This year, when starting work on LetMeGo, I decided to investigate again and found the Selenium tool by my own means. Even though Selenium was still in beta, we saw maturity and potential in it and decided to use it.

Selenium started in 2004 at ThoughtWorks, a company I greatly admire. The project eventually became open source and many more people joined in to help. The full history of Selenium can be read here.

Getting started using Selenium is not easy. It takes a few days to learn the tricks required to properly record the automated tests. Recording the tests takes approximately twice the time it takes to perform one test. Henry was the first one recording tests. He did it while performing QA for the Hendrrix scope (the subsystem in charge of user account management in LetMeGo). The first test he recorded had to be re-recorded from scratch. This happened as we were finding the most appropriate way of matching the recorded Selenium user tests with the use cases of the requirements. All in all, implementing Selenium delayed Henry’s originally planned schedule around three weeks. Lucho and German also added automated user tests using Selenium, Lucho for the Morrison scope (the email messaging subsystem) and German for the Web scope. This also pushed back their schedules between one and two weeks.

Was the delay worth it? I would bet on it! I guesstimate that we will probably save around one month of QA work in the near future when we get ready to release the beta version of LetMeGo. By then, we won’t have to do any manual testing of user test cases as 99% of them will have already been recorded. It will be just a matter of running the automated scripts and watching the bar go green! The program will also be running in a Windows PC and a Mac every day performing integration tests. If errors are found, it will trigger alarms right away, the same way it happens with unit tests.

I think that Selenium is the best companion for unit testing (TTD). Together, they give the product developer and the developers the peace of mind they deserve and need to do a better job. I am happy!

PS. Congratulations to Henry for reaching the alpha milestone for Hendrrix! Great work :) – Congrats as well to German and Lucho for re-reaching the alpha milestones for Morrison and the Web Scope by adding automated Selenium tests to them.

PPS. The usage of Selenium as an automated user-testing tool has been already documented in the RRápido methodology.

Alexander Torrenegra

Written by Alexander Torrenegra

September 19, 2008 at 6:51 pm

Posted in letmego

The Future of the Voice Over Industry

without comments

The voice over industry and the lodging industry have little in common. One of the few things they share is that both have a highly fragmented offer and demand: lots of buyers and lots of sellers. Such fragmentation is ideal for online marketplaces such as Voice123 and LetMeGo.

Juan Salcedo, Voice123’s General Manager, asked me to write an article in honor of the 5th anniversary of Voice123. I decided to write about the future of the voice over industry and how technology will be affecting it. Some of these predictions may also apply to the lodging industry. You can read the article at the Voice123 Team Blog by clicking here.

Alexander Torrenegra

PS. Although I am the president of Voice123, my current main focus is LetMeGo. I can only do this thanks to the great job Juan is doing at Voice123.

Written by Alexander Torrenegra

September 15, 2008 at 2:18 pm

Posted in letmego

All YOUR base are belong to MY?

with one comment

When designing a page, when should you use “my” (as in “My Password”) and when should you use “your” (as in “Your Account”)? I have been designing user interfaces for almost a decade already, but only today I realized how ignorant I was in reference to this, potentially, best practice. Anyway, after years of obscurantism on this, I think I finally have an answer:

“Me” or “My” should be used when a title of something (a page or a field) does not contain an action (a verb). It should also be used when a button, link, or title of a page contains a phrase that implies that the user is ordering the system to perform an action. For example:

  • Field Title: My Company Name:
  • Page Title: My Main Menu
  • Button: [ Let Me Change My Password ]
  • Link: Reset My Account

Your” or “you” should be used when the system is telling or asking something from the user. For example:

  • Field Title: What is your password?
  • Message: You can always change your settings…
  • Button: [ Post Your Project and Get Auditions from Talents ]
  • Link: Please, click here to contact your agent
  • Message: Your are signed in as:

Whenever you have the option of doing one or the other, I would suggest you use “My”. For example, if you have the option of using both “Post My Project” and “Post Your Project”, use “Post My Project”. Why? Because on “Post Your Project” the system is asking the user to do something, while in “Post My Project” the user is ordering the system to perform an action. I think that users like to feel they are in control.

Why bother? I think it facilitates the understanding of the system by the user. It also allows the user to feel ownership of the system by having a friendly and conversational experience. What do you think?

Oh! And don’t forget to say the magic word: “please”.

Alexander Torrenegra

PS. If you are wondering where I got the subject for this blog, here is a dose of videogame folklore: http://en.wikipedia.org/wiki/All_your_base_are_belong_to_us – The video can be seen clicking here.

Written by Alexander Torrenegra

September 8, 2008 at 6:01 pm

Posted in letmego

Maestro applies his magic to Mastrropiero

without comments

During the previous weekend Maestro finished working on the wireframes and design (including HTML and CSSs) of the Mastrropiero scope. This scope is in charge of handling the visible functionality that will allow visitors to perform real-time searches at LetMeGo. Not surprisingly, Maestro did great work in here. The wireframes look better than anything I could have imagined. Thank you Maestro!

As I always disclaim, you will have to wait until we release our beta version in order to learn more details about Mastrropiero. For now, I can tell you that the interfaces of Mastrropiero will feature maps powered by the Google Maps API. It will also include many AJAX interfaces powered by our customized version of jQuery.

Alexander Torrenegra

Written by Alexander Torrenegra

September 5, 2008 at 1:46 pm

Posted in letmego

It feels like meeting an ex-girlfriend you have not seen in years

without comments

That is the best explanation I could come up with when telling my team how I felt when coding, once again, after four years of not doing so.

Honestly, I don’t remember when was the first time I coded, nor the computer I used. It could have been the computer at school or my mom’s computer at her office. We didn’t have a computer at home until I was 14 years old. I am almost 100% positive that I coded for the first time using QBasic. During the years I learned several programming languages. I invested most of my time in C++ and Perl. Around five years ago I was investing most of my time coding part of Voice123 in Perl. Andrés Herrera & Milton Avila were also part of the original coding team of Voice123. Little by little I started to invest my time in other tasks: marketing, management, and product development. By the second half of 2004 I was not coding any longer. We have learned many things in Torrenegra since then. Our development methodology has significantly improved. I didn’t want to miss the fun, nor did I want my programming skills to get rusty. That is why I decided I would code something, even if it was small, for LetMeGo.

Following up on the “aha!” moment we had in reference to our ticketing system (Cockerr), I decided to code version 0.2 of it. By doing it myself I would get to code again and I would allow Germán to focus on another scope. The experience was awesome. I invested the first day setting up the development environment in my Mac. Next day I installed OTRS and learned about its architecture. OTRS is written in Perl. The third day, with the help of the entire team, I set up a SOAP environment for OTRS so that other subsystems of the LetMeGo could connect to it. Finally, on Saturday, I learned something really new: PHP and CakePHP. I love CakePHP. CakePHP is very friendly. I know, I know: there many other frameworks that may be as friendly as CakePHP. Such is the case of Catalyst for Perl, Ruby on Rails, etc. In my opinion, CakePHP has many advantages: it is more popular than Catalyst and PHP is much, much quicker, than Ruby. What about Struts for Java? I haven’t used it, but colleagues have told me it is more strict than necessary for most web development applications.

I am almost half way through the development of Cockerr 0.2, but for now I have to go back to do product development: writing use cases, doing quality assurance, etc. I look forward to continue coding Cockerr as soon as I can… probably more than I look forward meeting some of my ex-girlfriends. Please don’t tell them, though.

By the way, thanks a lot to Andres, Henry, Germán, and Lucho for helping me out with the many questions I had.

Alexander Torrenegra

Written by Alexander Torrenegra

September 2, 2008 at 4:09 pm

Posted in letmego