What is Software Test Engineering?

This is a phrase that means different things to different people. Often, I’m surprised at how much different the role of an STE is on a team like Windows compared to Office, Xbox, and Works. Across different software companies, the differences in test roles become even more dramatic.

Here’s how I define the role of Software Test Engineering: My job is to be an advocate for our users. You may think that sounds strange- doesn’t everyone in software development care about pleasing customers? Yes! Absolutely. But Testers take this to an extreme. A great tester can place themselves into the shoes of any Joe User, in any city, and in any country. If our software has ten million and one users, then it’s Test’s role to champion for each one. When we encounter an issue that we feel passionate about, we’re sending emails and IMs, knocking on doors, logging bugs, and occasionally buying Krispy Kremes until our issues resolved!

Testing isn’t just about manually finding bugs, either. There are a multitude of other things I do on daily basis to achieve this goal. For instance, if I can find an issue early in the software specification, then problems can be fixed before a line of code is every written. If I can participate in communities of people that use our software, then I can identify things that they love, the things they don’t, and problems they encounter. Solid automation can find bugs while I’m at home sleeping!

I’ll be talking about some of the techniques I use as a Tester later on. In the mean time, it’s time for a Project Gotham Racing 2 break on Xbox Live. 🙂

You get to do PGR2 at the office? That’s way cool. Last time I was in redmond we played halo over the network, which quickly turned into a game of let’s kill scott cause he’s never played before.

Could you tell us about how you test the code? Do you write test scripts/test harnesses? Is this in a winrunner/mercury type tool or in .net? Where I work qa ends up manually testing things in a process that can be sometimes described as frantically clicking. This is not the most efficient way of doing things. One of the things I’m starting to get more interested in is designing/coding with testing in mind at the forefront. I think that’s going to be a cultural change though, which could take time.

We certainly have Xboxes scattered throughout our building (as well as a Street Fighter 2 cabinet, Foosball and Ping Pong). Halo is still the game of choice, btw.

On our team, we’re using a harness that provides functionality to write automated tests in .NET. On my team, the testers are mostly using C#. BVTs are powerful tool as well- this is something that I’d like to comment on later on to easily improve a test environment. (Developing Testable code is absolutely a cultural change, btw- but it’s worth it when it’s accomplished!)

Hi Greg- a BVT has several popular definitions, but I call it a "Build Verification Test". After a new build is completed by the build machines, the BVTs run some basic smoke testing on the new builds, making sure that nothing is catostrophically wrong. If they pass, then the build is upgraded for testing by the Test team.