Friday, January 30, 2009

What do you want in a software test consultant?

So I'm putting out my One Shore shingle again. The goal this time is to spend six months in Seattle drumming up some consulting business. Hire me, I'm cheap!

Most of all, I need to find out what potential clients want in a consultant. My main area of expertise is in software quality assurance -- testing. In that category I specialize in automation, testing tools, and build environment set up.

My idea for a product along these lines is a QA Site, which is essentially a turn key test test lab. There are three main parts to this:

First, the collaborative tools needed for test teams -- bug tracking, requirements, test cases, task management, documentation, communication, planning and reporting. There is some bleed over here into general project management and collaboration tools. So I need to be able to work with existing products and methods. Jira, Agile, Scrum, MS Office, RUP, Quality Center, wikis, souce control, etc.

Second, the automation tools needed to be able to test more -- build scripts, continuous integration, deployments, test environment setup, servers, applications, infrastructure, test frameworks, and automation tools. There are a lot of tools in this area, and they can be customized to different needs and preferences. I don't know them all, but I know the general strategies. One of the major sources of frustration, and impediments to process improvement is setting up and maintain these tools. Not to mention which ones to use, and how to integrate them.

Third, the test environment. Where do you deploy to, How much like production is it? The closer it is, the better value your tests have. Though sometimes, you need to build mocks and stubs and frameworks to make testing faster, or get around limitations, or simulate third party systems. Virtualization is a valuable tool in the testers arsenal, and a complex enterprise enviroment can be build that lacks only in performance using tools like VMWare, Xen, and Microsoft Virtualization.

My passion is for process improvement. Better living through automation! (and virtualization!) Keep your tools and process lightweight, but use them in a way that makes the work easier, and here's the key -- more interesting. You could develop the perfect system that could be performed by drones (and you could pay drone wages), but testers find more bugs, developers deliver better features, analysts define better requirements, and customers get closer to the product they want (even though they don't know what they want -- they'll know it when they see it) when they're interested in what they're doing.

So I think the answer isn't to take away the mental challenge of testing, the opportunity for learning and experimentation, but to encourage it, by taking away the drudgery. Not by outsourcing it, but by automating it. Better tools and simpler processes are my answer. But I could be wrong. I know I don't know the best way to accomplish this, but I do know that the way to find out is by asking customers, and getting interested.

No comments: