Tuesday, September 25, 2007

The new place

It's been more than a week since I started my new job at Starhome. Here are my impressions: First of all, I like it. The people are great. I even found that a neigbour of mine also works here. Well, he's not really a neighbour, but he doesn't live too far away. He's close enough I can get a ride in with him when my wife needs the car.

Second, the place is so much more comfortable! At Amdocs, I was cramped in a room with 3 other people. Here, I have a spacious desk and one roommate who is very quiet and genial. So I also get more control over the air conditioning.

Another HUGE benefit I get here at Starhome is - get ready, this one's a whopper - pizza and beer every Thursday. I mean, it was worth the move only for that! You know your workplace is totally cool when you get all the pizza and beer you can want. I'm sure I'll churn out some of my best code after downing a couple of brews.

On the down side, if the commute was long before, now it can be up to another 15 minutes each way. For a 45-60 minute drive, that's a lot. At least I have my huge stack of CDs to keep me company. One way takes the perfect amount of time to listen to one CD.

Sunday, September 9, 2007

JMeter - My Amdocs Legacy

On the eve of leaving my job for greener pastures, one of my babies I am leaving behind in Amdocs is automatic testing.

Testing is an inseparable part of writing software. A programmer tests code during all phases of program development, from the earliest to the final stages. What if the project is huge and there are tens of developers working together on one application, such that one team has no working knowledge about another team's part? In that case, regression testing for the entire application is needed. This is to make sure nobody ruined anything while adding, removing and changing different parts of the application. The bigger the development team, the less each programmer knows about other parts of the whole, the more likely a change will be detrimental to some part of the application.

For this purpose there are many automatic testing tools on the market. Such a tool automatically runs the application and uses it like a real person would. If a result occurs other than expected, the test fails. In making the decision which tool to use, I checked Mercury QuickTest Professional, Compuware TestPartner, IBM Rational Functional Tester, Seapine QA Wizard and Apache JMeter.

The project I worked on at Amdocs is a web application whose requirements included testing several environments concurrently, and some level of concurrency in the tests themselves. Of all the tools I checked, only one met those requirements -- Apache JMeter 2.2. JMeter is a free tool that tests a web application at the HTTP request level. It can record the requests and responses, which is a good skeleton from which to begin writing a test script. It can also be easily invoked from ANT -- I created an ANT script that ran each JMeter script concurrently. To achieve concurrency between environments, each machine can run its own JMeter instance (even UNIX, which the other tools can't). In addition, JMeter can perform tests other than HTTP -- JUnit, FTP, JDBC, JMS to name a few.

The main weakness of JMeter is its reporting capabilities. As of version 2.2, JMeter can't create reports. To get one after a test run, I had to use XSL to convert the XML result to HTML.

In short, JMeter is highly recommended.