I have noticed in the last few years that employers are now looking for QA/Developers (QA engineers that have been skilled developers).

I would like to know what others believe are the actually additional activities that these QA/Devs bring to the project.

These are a few that come to mind:

Reading code while doing white box testing

Creating Unit tests along side the Developers

Creating Integration tests

This is not about how development experiences enhances the testers effectiveness in finding defects. But about understanding what those value added activities are, that this type of testing resource can bring to the developers and the project.

You could find more on this if you looked up SDET (Software Developer in Test), Microsoft uses them as Testers on many of their projects for many of the reasons noted below.
–
MichaelFMay 22 '11 at 20:34

4 Answers
4

In my experience, the best developer/testers bring what I call the boredom herusitic to software testing. Inother words, they often automate rote tasks so they can focus on testing and analysis of the software.

An example I use often is the "add contact" feature in an instant messaging or email client. To test the feature, I'd need to try long names, localized names, blank names, etc. I'd also need to test adding and removing a contact. The matrix of test ideas could expand pretty quickly...and I'd get bored trying all of those things - and worse, I'd never try the perf / stress scenario of adding and deleting a contact 500 times (nor would I automatically check disk and memory status during the operations).

In short, good test developers look at the testing problem, then figure out how they can use a program or automation to help them solve the testing problem efficiently.

Great example! I think the value added activity you are describing is providing automation of routine testing, a test/developer would be motivated by the desire to have greater test coverage and probably more capable because of their programming background. I have added this to my question above. Thanks!
–
John BurleyMay 20 '11 at 2:00

4

+1 for the boredom hueristic concept. In addition to automated testing, a developer/tester is more likely to see the opportunities to build helper tools -- a javascript favelet to reveal hidden information on a web page, or a SQL script to help validate back-end data.
–
TomGMay 20 '11 at 2:48

Personally I find that tester who codes in addition to great testing skills is much more effective than the non-technical equivalent.

A techical tester can esentially bring more "weapons to bear" on testing problems than you could without those skill sets. Some examples:

Need to generate some test data? Write a tool to do it.

Need to check security access when logged in as certain users? Write some automation to do it.

Need to automate the deployment of your application? Write some scripts for that.

Need to influence the way developers perform their unit tests? Show them how or build them a unit test framework.

Need to perform white box testing? You have the skills to check out the code and start reading.

However, a word of caution. It is easy for testers who can code to only want to code. The real skill in being a QA Developer is knowing when it is appropriate to develop and when to put the tools down and just test it manually.

Good point on the need for the QA/Developer to realize that their job is first to be a great tester. Their development activities should be, just the extra help needed at the moment and no more.
–
John BurleyMay 20 '11 at 3:39

I've had success using tester/developers for code review of production code. I've found that developers review code thinking, "Will this work", while testers review code thinking "In what ways could this not work". I've also found that most testers discover new test ideas while reviewing production code.

That goes back to the question sqa.stackexchange.com/q/545/453 of how testers and developer mindsets differ. Again, a tester could have a developer mindset as well and vice versa. What this means is that BOTH mindsets are necessary to build good, robust, full-coverage tests.
–
TristaanOgreMay 20 '11 at 20:45

Also testers tend to perform code coverage analysis when they look at the code to check if they have reached the target test coverage and analyze if the uncovered code poses any risk to the end-customer
–
ArunaMay 21 '11 at 0:23

A tester can add value to the product and development team by making/influencing key software design choices even before coding starts.

Testers with programming background can understand and explore possible software design choices for better code testability and they can determine "if the code is fit for use?" Design choices like "Dependency Injection" and "Decoupling" can make the code robust and flexible enough to absorb future changes in customer requirements.