var blog = new ThoughtStream(me); RSS 2.0
 Saturday, March 08, 2008

(reposting a few items from my old blog to my new one)

...

Another interesting side effect of my conversations with Scott Bellware, today... I'm not sure if he agrees with these conclusions, but I certainly didn't come to them by my own thoughts alone.

My understanding of the Test Lab or QA department in a software development shop has been based on the idea that the QA team members are not developers - and that they shouldn't be, because a developer will write tests that they know will pass. Well, as it turns out - the reason was correct, but the conclusion was wrong.

In reality, a software development project needs to automate every level of testing - all the way out to the point where the actual customer is sitting down and using the software. This includes: Unit Testing, Integration Testing, and UI Testing. Whether or not you distinguish between these three levels is irrelevant; the testing of the system must be automated as much as possible. This leads us to the next question: What is an automated test? Typically speaking, it's code. Who writes code? Software developers. Do you see where this is heading? maybe?

If software is developed by software developers (duh), why is the software that tests the software not written by software developers?

Lets take this to the agile world of 2 week iterations (or sprints or whatever you want to call them). If the software requirements are being defined every two weeks, then the tests are being defined every two weeks as well. If we are automating the tests during these two week cycles, and the tests are written as code, then why are the software developers not writing the tests? The obvious answer is my reason above - the developer will write the test that they know will pass, because they wrote the code that is being tested. So don't let that happen - don't let the developer who is writing the code, write the integration / UI test code. Then, how do we let a developer write the integration / UI test code? Triples Programming.

The standard XP / Agile practice currently has developers working in pairs - one driving the keyboard / mouse, and one thinking two steps ahead. I say we add a third role and a third person to the mix - one developer to write the integration / UI tests at the same time that the unit tests / production code are being written. What you CANNOT do, though, is include that third role in only two people. The moment you break down to two people, you need to remove the integration / UI test writing or you end up with the original dilemma. You also need to ensure that the developers in the triple, are swapping positions on a regular basis - make sure everyone gets a change to drive the keyboard, think ahead, and code the integration tests.

By programming in triples, you get the advantage of specifying the integration tests as soon as the code is functional. You don't lose motivation to write those test, you don't lose clarity of what the functionality is supposed to be, and you don't have to re-discover the same functionality and clarity at a later time with a new set of minds (the QA team).

So, what happens to the QA team? They are still needed, certainly. But now they can focus on their subject matter expertise - the human interaction of manual and random of software testing by using the actual application. i.e. the parts of testing that can't (or shouldn't) be automated.

...

Ok, ok, ok... if you really want to stick with pair programming you can take this concept and assign 2 teams per story; 1 team to unit test / write production code; and 1 team to integration / UI test.

Saturday, March 08, 2008 3:27:51 PM (Central Standard Time, UTC-06:00)  #    Comments [2]. Trackback 
Tags: Agile | Unit Testing
Tracked by:
"Pair + 1 Programming" (ThoughtStream.Create(me);) [Trackback]

Thursday, March 13, 2008 3:33:40 PM (Central Standard Time, UTC-06:00)
Why stop at triples? Why not quads, or quints... at which point we need a manager in the cube to make sure everything stays on track... Or, we could just put one monitor and keyboard in the middle of the room and all huddle around it singing kumbaya while the designated keyist pecks away. Eventually we could reproduce the collective works of Shakespeare, right? ;-) Of course, by observing this, or simply discussing it, we have changed the expected outcome, so everyone can now go back to their desks and refactor the project plan to account for every possible permutation of every possible variable, known or unknown. Anyway... just anonymously busting your chops, all in fun and not a single letter intended to be interpreted as anything other than extreme sarcasm. I have immense respect for your skills and opinions, even if you don't know who I am; keep up the good blogging.
some dood
Thursday, March 13, 2008 6:26:03 PM (Central Standard Time, UTC-06:00)
Now you're on to something... Design AND code by committee! ha! that's a sure fire way to get nothing done... better yet, let's require every person in the room to call out one code fragment at a time, in raoud succession with a three second time limit, while projecting the source code onto a wall! :)

i certainly do appreciate the words of kindness. it's nice to know that someone out there thinks i have something worth saying.
Comments are closed.
Navigation
About Me
View Derick Bailey's profile on LinkedIn

Send mail to the author(s) Contact Me
Archive
<July 2010>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Derick Bailey
Sign In
Statistics
Total Posts: 115
This Year: 0
This Month: 0
This Week: 0
Comments: 44
Themes
Pick a theme:
All Content © 2010, Derick Bailey
DasBlog theme 'Business' created by Christoph De Baene (delarou)