• Home
  • RSS Feed
  • Log in

Proactive Quality Assurance
Posted by Gerard Janssen in the early morning: July 18th, 2007

Quality assurance is too often used to just identify a lack of quality and to find deviations from the norm. This is logical in organizational cultures where responsibility is something to be managed carefully. However, wouldn't it be better if QA would be supportive towards an overall strategic goal of improving quality? For this you need a sense of shared responsibility across the organization and its processes. Then QA can work to start improving quality by improving processes, procedures and practices, making sure to prevent problems instead of identifying them. Taking responsibility instead of shifting it. That's proactive QA.

We all have our examples of exciting projects turned into nightmares. Creeping deadlines, tsunamis of defects, applications that fail to deploy or performance bottlenecks that just cannot be found. And always do these kind of situations occur at times when they are least welcome. Right before the project deadline, during the holiday season or when you had planned that nice weekend getaway.

A lot of effort is put into testing and verifying applications these days. A number of formal testing methodologies have been formulated. A Dutch product for instance is TMAP. Sure it makes sense to define how you wish to approach your testing. However, one of my major gripes with approaches like that is they are very formal. And in the case of TMAP it approaches software development as a staged, waterfall process. In this process the testing department is a divine institution, detached from reality, whose prime purpose is to uncover defects in the product of 'the others'.

In my opinion this approach is exemplary for a lot of testing departments out there. They are missing the point, two points actually. The first is that they do not acknowledge that testing must be part of the overall QA effort in an organization, not an isolated activity. On any project and any organization that takes software development seriously, a vision on how to approach the matter of QA is necessary. Testing is just a part of this. Having and overall vision we can ensure the money allocated for QA is spent wisely.
The second missed point is that testing and QA can not and should not be detached from the development work. Doing so promotes a 'we vs. them' culture where there is no sense of common responsibility. Ever been on a project where the testing team was doing nine to five and the developers 24x7? Or even worse, I've seen projects where the testing team was sitting idle for months, waiting for something to test to come into their domain. What a waste!

Old school QA results in doing testing and QA detached from and after the actual creation process. All that can be done then is to discover and signal the flaws in the product. Which then need to be fixed. I call this reactive QA. There is no way QA can do anything substantial about a lack of quality, they just signal it. Others will then have to fix them. Adding another non-value adding creation stage.
The contribution of reactive QA to the overall success and quality is limited. No structural process improvement occurs as a result of it.

It would be much better if QA would be employed proactively. If QA was working in cooperation with development or production teams to improve the product. From a process perspective the role of proactive QA can be formulated as: "assisting the production and development team to improve the process while it is being executed". QA must in this scenario take an active, participatory role. QA and testing in particular cannot afford to be standing on the side observing and commenting on what is produced. Now they share in the responsibility for creating a great product.

There are two very low level examples of proactive QA that people familiar with Agile and Extreme Programming are already familiar with. Pair programming and Test Driven Design. Pair Programming is a form of QA where the QA agent sits with the programmers and together they formulate the best solution of the issues at hand. No separate code review is necessary, since two pairs of eyes are already looking at the code as it is being written.

In Test Driven Development the application development is driven by pre-formulated and often automated test. The most prominent advantages here are the automated regression test are available even before the software has been shipped. Developers tend to pay more attention to the testability of their code and a better correlation with the functional and non-functional requirements to the code is hardly imaginable.

Another example of proactive QA that is not so much tied to software development is a Process Coach. At Xebia we have a number of people working with our clients as an agile coach. They help the client's organization make the transition to working agile and to organize the people in agile teams. We have found that is of limited use and less effective to practice agile if the environment is not. Agile coaches help the people on the project to improve their way of working and their practices to become more agile and more effective.

In summary, proactive QA is a big change from conventional reactive QA. The role, competencies and responsibilities of QA people change dramatically. Implementing this can be challenging, since it requires a cultural change. The benefits are enormous. The involvement of QA in the actual creation and their contribution to in process improvement does really improve quality when it matters: before errors are made.

  • Share/Bookmark

Filed under Agile, Project Management, Quality Assurance | 4 Comments »



4 Responses to “Proactive Quality Assurance”



    Vikas Hazrati Says:
    Posted at: July 18, 2007 at 10:09 am

    I am not sure if QA can ever be reactive, by the definition “Quality assurance (QA) is the activity of providing evidence needed to establish confidence among all concerned, that quality-related activities are being performed effectively.”

    The key here is “BEING” which is an ongoing process and is not an afterthought. In my opinion testing can be reactive but QA has to be proactive and goes along with all phases i.e.

    From wikipedia
    QA covers all activities from design, development, production, installation, servicing to documentation. It introduced the sayings “fit for purpose” and “do it right the first time”



    Mary Says:
    Posted at: July 22, 2007 at 4:52 pm

    A lot of questions come to my mind..
    Can you teach project managers through practical examples what to measure and track, which will help them more effectively manage projects throughout the hole life cycle from initiation and design to deployment (use and even maintainance)? Not only during design and engineering? Can you teach them how to measure and present progress even when its not possible to use agile development – and agile project management methodologies and tools?
    Can you learn people, that are responsible for process improvement, how to understand what limitations there are to some organizations? And explain the relationship between reviews, metrics and achieving improvements and the tools to use in those situations? Can you understand that it is neccesary to think of measures (review procedures) and metrics (like function points) to assure quality even when a project is just starting to get visible and therefor look a lot like waterfall methods? Can you teach us why we need to measure and how important it is for us to tie these measurements to visible, in advance set goals that are (preferably) linked to the organizational strategy? And how to achieve this? Do you know what people feel when you talk about metrics and what approaches you can take to gain their support and which measures are meaningful for large organizations? Can you tell us what problems we have to face and how we can avoid them?
    Can you make people understand that the metrics that – for instance- developers find useful help project managers as well and what metrics they are?
    I agree with all my heart that we have to do things right the first time because solving mistakes and quality problems afterwards is, to say the least, very irritating and it takes to much time and money. I hope you have practical solutions for many circumstances and share this knowledge with your colleagues. And perhaps you even want to share them with me?



    shabbi Says:
    Posted at: June 22, 2008 at 9:08 am

    hi, i am working in a software company, where total employee strenght is not more then 10 resources, and we are trying to implement Agile XP methodology in our oragnization,we have just one QA resource, we have plannaed our iterations to be completed in 11 working days, development team takes 9 working days to complete their development activities, while QA resource takes one day to complete his QA/testing cycles, we are facing so many challenges, stuff like that we are uable to put all resources in XP stream, we have two design resources, we are uable to decide that how to put them in XP stream. when new change request comes from the client side, they start working on it, desgn is finalized near about 4 to 5 workings days,in parallel they have to work in on some other developers requests as well. we are unable to put all resoucres in iterations model, we are still thinking on it, My questions here are like this, How we can implement iterative mdoel, whether XP suites in such type of situations?
    looking forward to hear you…..



    Gerard Janssen Says:
    Posted at: June 25, 2008 at 8:42 am

    Hi Shabbi,

    interesting situation you describe here. The things is that you should try to get the designers into the stream of the iterations as much as possible. You might think of the software development process as a constant streaming of software products that need to flow through your development shop. The work the designers, developers and QA resource are doing is one whole and is not finished until all of them are finished. It is very tempting to organize the work in distinct phases like you describe. But this takes the work of the designers out of the iteration and thus out of the flow. You might try to bring the design work into the iteration and make it a joint responsibility of the entire team to ensure the iteration work is done at the end of the iteration. This promotes sharing of knowledge and responsibility, increases flexibility and boosts communication. Also it will help you reduce cycle time and lead time.

    In my opinion it is OK to have and assign roles in a team. People tend to specialize and have favorite activities they like best and can excel at. However, this should not lead to separating responsibilities, be it QA or design.



Leave a Reply

Click here to cancel reply.

Deployment automation for Java application running on Websphere, WebLogic and JBoss

Archives

  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009

Training

  • Workshop Agile Management
    Custom made, in-company

Xebia Sites

  • Xebia Corporate
  • Xebia France
  • Xebia India

Categories

  • Java (282)
  • Agile (109)
  • General (50)
  • Testing (42)
  • Performance (42)
  • Hibernate (36)
  • Scrum (33)
  • Podcast (31)
  • Architecture (31)
  • Spring (28)
  • SOA (24)
  • Maven (22)
  • Project Management (22)
  • Middleware (23)
    • Deployment (14)
  • Flex (17)
  • JPA (17)
  • Eclipse (15)
  • Xebia Labs (15)
  • Quality Assurance (14)

Tag Cloud

    Scrum Java Testing Maven Seam XML IntelliJ fitnesse Agile Awareness Workshop product owner Groovy Scala Introduction to Agile Lean SOA Closures Ajax qcon esb Spring Performance Poppendieck Functional Programming Hibernate Xebia JavaOne Semantic Web Grails Architecture Agile