Saturday, August 28, 2010

How do you qualify a tester? Look at your customers.

In an earlier post I discussed a job listing for a QA Manager that was described as "perfect for a new grad." I questioned whether a new grad was qualified to manage anything, particularly QA? Let's step back from the management aspect, and consider what qualifies someone for a QA role. What should you look for in a prospective software test engineer in your company? My advice would be to look at your customers.

Sure, there are certain characteristics you want to look for in a candidate, as an employee of your company, a member of your team, and in particular a software tester. But what I want to focus on is the utility of comparing your prospective hire to your current customers based on two criteria: Technical skill level and domain knowledge.

Technical skill level. You want someone who is capable of not only becoming knowledge and facile with your particular products, but also of using them in all of the myriad ways that your customers will. Does the product run on both Windows and Unix/Linux? A candidate who is "most comfortable with Windows" may not be prepared for the command line, scripts, and system utilities that are common in a Unix house.

Domain knowledge. Face it, if your product under test is an immersive RPG (role playing game), you want a hard core gamer putting it through its paces. Is it a tool for musicians, or an accounting package? It's hard to see how you can test either without specialized knowledge, beyond what might be available in a spec or user documentation. But if we are talking about a lightweight user interface, casual game, or general consumer application, the main concern is the skill of the tester, rather than their background.

In my experience with engineering software it has been important to know the size and content of typical data sets; to understand, for example, that due to Moore's Law the "large" circuit testcase you built six or seven years ago is now a "medium" sized circuit. You want to be familiar with the other tools they will be using in conjunction with yours, and the file formats that implies. Engineers, particularly EEs, are very technical - and notorious hacks. Chances are they are loading the data into the tool via script, kicking off runs with cron jobs, integrating the tool into their environment using API programming, customizing interfaces, and parsing results with their own reporting utilities. If you support it, you need to test it. So you need testers who can think and work like your users.

The point is, you want to find the bugs before your customer does. And you never want to have to say, "Gee, how did they do that?"

Sunday, August 1, 2010

Google Calendar as a Scheduling Tool

In my never-ending quest for a better way to view schedules, I have found that Google Calendar has some really useful features. I was looking for something better than scribbling in a weekly planner, but less cumbersome and more available than MS Project. Outlook is great for daily scheduling but becomes too cluttered from a month overview.

In Google Calendar, tasks can be entered as multi-day events, and show up as a clearly labeled colored bar in day, week, or most useful, month view. (You can enter appointments, but granularity of a day is most useful for scheduling across a release.) These tasks can be imported from a simple .csv file, output from MS Project or Excel.

One of the most powerful features of Google Calendar is that you can have events/tasks organized into multiple, color-coded calendars, which can be viewed individually or layered together. For example, you can create a calendar for each person you supervise or work closely with, for easier coordination. I would also recommend you create a calendar for your schedule tasks separate from your default calendar (where you might have appointments, holidays, etc.). You can create a calendar for the given release timeline. You might even create a personal calendar for items you wish to recall but don’t want showing up in a public calendar. Individual calendars can be modified, shared with other users, and deleted when no longer needed.

These individual calendars can now be viewed in any combination. Below is an example showing my schedule tasks for a given month overloaded with the tasks of two people I was supervising.

Here are the steps to import a calendar from an Excel task list, as you might get from Project. I assume there are columns at least for the task or milestone name, owner, start date and finish date.

1. Sign up for a google/gmail account if you don’t already have one. This will give you access to Google Apps.
2. In Excel, sort the task by owner.
3. Highlight all the rows for a given owner. Copy and paste them into a new worksheet.
4. In this worksheet, eliminate any columns besides task name, start date and finish date.
5. Add a header row with the following for column names – Subject, Start Date, End Date
6. Make sure the dates are in the format  “mm/dd/yyyy” and save the file as a CSV; for convenience, use a name signifying the person and period covered.
7. Go to Google Calendar, and on the left bar, My Calendars, select Create. Use a name indicating the person and period.
8. Below that, Other Calendars, select Add, Import Calendar. Browse for the CSV file created above, and for the Calendar field choose the one you just created.

Note that a quirk (bug) in the system is that the event created from an import is not inclusive of the last day, whereas it is if you create it manually. This creates a one day gap between tasks – no big deal.

Happy Scheduling!

Update: Here is how I output the information from Microsoft Project that I then import into Excel to reshuffle so I can import it into Google Calendar as an Excel task list.

1. Viewing the project in MS Project, select Save As..., choose CSV (Comma delimited)(*.csv)
2. This brings up the Project Export Wizard. Next.
3. Create new or existing map? Select New map, Next.
4. Select the types of data you want to export. Accept defaults Tasks, Export includes headers, Text delimiter ','. Next.
5. Map Tasks Data. First Field, Select Name in the From column, Subject in the To.
Second Field, From field is Start, To field is Start Date.
Third Field, From field is Finish, To field is End Date.
Fourth field, From field is Resource_Names, To Resource_Names (anything).
6. Finish
Now you have a .csv file with the Excel task list to use for the procedure above.