- The increase of XP and agile adoption has embedded a focus on testing into programming practices to the extent that some believe there is no longer a need for separate testing other than that done by programmers.
- The increased maturity of outsourcing provision makes the offshoring of testing activities a tempting alternative from a management perspective
The stance of a distinct and isolated testing service has a number of advantages to many people, not least testers themselves. I believed separation from the programmers would permit me to adopt a position of distinct objectivity. Testing can rightly be perceived as a very critical activity and the temptation in this situation is to isolate ourselves from the creators of that which we are criticising. This isolation gives us the freedom to dispassionately criticise the software, protected from the pressures of having the authors of that software in the same room.
Testing is also an activity which can come under heavy criticism itself, particularly in the scenario where bugs are not detected before release. By propogating the idea that our testing activity arises from a series of well defined and standard best practices we can abstract blame from our own personal decisions and walk away indignantly from project failure with our self satisfaction in tact - a stance exemplified by some of the opinions in discussion forums such like this one.
By defining interfaces and artifacts through which to absract ourselves from direct communication, requirements documents coming in and test scripts and bug reports coming out, we protect ourselves from the personal feedback that comes from criticism in both directions.
The problem with this type of stance, and the focus on testing artifacts as our deliverables, is that it is the very idea of an isolated service that makes it so ripe for outsourcing. By selling this idea of a discrete entity characterised by well known best practices and clearly defined, standardised interfaces we serve directly into the hands of the outsourcer and the service provider the opportunity to offer cheaper replacement services in direct competition.
A Personal U-turn
Having worked with the team that I do now, my opinion has come full circle from my beliefs just a few years ago. In order to achieve success in my current team as a tester I have found it necessary to alter my stance with regard to the relationships between testing and programming activities to have a much greater focus on a closer collaboration between the two. I think that the most effective testing comes about through working amongst and alongside the programmers, developing software as a whole team activity.
For their part in this process, Testers help to identify future requirements, we help to elaborate user stories, we identify test accepance criteria, we highlight risks and assumptions, we exploratory test early deliverables, we automate regression tests, we raise bugs at each and every stage of this process and work with the developers to identify the best solutions. I'm not stating anything new here, but I do think it worth highlighting two key elements:-
- There is no clear deliniation across which the testing activity can be defined Last month I raised a bug in a whiteboard discussion on a proposed product change. No code had been written, no test case defined, I simply used my knowledge of the application and the customer usage to highlight a potential problem during early exposure of a proposed solution to testing. By making this type of testing intrinsic to our design and development activities it becomes very difficult to define where testing starts.
- There is clear value in what we deliver to the developers The nature of our relationship with the application developers gives me the confidence that they would be the first to speak up in defense if anything threatened the testing team. In fact, some time ago when it was suggested that my counterpart on the development side take on two more programmers, he actually lobbied senior management to consider taking on one programmer and one tester instead due to the benefits that an additional tester would bring to him.
In subsequent posts I'll investigate other complementary relationships and related responsibilities that have helped to redefine my current role from the tester job that I once thought I knew...