Monday, August 24, 2009

Quality Assurance

Quality Assurance is a term dropped just about everywhere in the software field now a days. While there are companies that have strong quality assurance departments built upon frameworks that allow for success, other organizations brand basic testing teams as quality assurance but they are often reduced to blindly following step-by-step test plans with no ability to influence quality issues at a corporate level or they have no testing teams what so ever.

Let’s get this out of the way right now, quality assurance is not testing, testing is inherent in quality assurance. Somewhere along the way, this inaccurate perception skewed how QA is perceived and implemented in organizations. Quality Assurance reflects an ongoing commitment to the prevention of quality issues throughout the software development life cycle and beyond, while testing is independent of any process and is solely the examination or evaluation of the degree to which software satisfies the specified requirements after the completion of development. Testing is part of the work a quality assurance team performs.

What is Quality, Anyways?

Quality Assurance is built upon the foundation of ensuring the quality of an organization’s application or service, internal processes and resources. Great, that sounds simple enough, it’s all about quality, but what is quality anyways?

Quality is all about perception. Each individual user has their own definition of quality and they will apply it to your software or service when using it. QA must speak for the quality of the application on behalf of each and every user during the software development lifecycle. Each employee in your organization will have their own definition of quality. What’s yours?

I left you some blank space below to write it down.
------------------------------------------------------------------------------------------------------



------------------------------------------------------------------------------------------------------

Hard to do wasn’t it?

“Quality is hard to define; impossible to measure, but immediately recognized if it is missing.”

Quality Assurance

A survey of three hundred U.S. and European senior information technology executives from large companies showed that eighty five percent of IT executives interviewed indicated “application quality is either critical or very critical to their overall effectiveness in demonstrating business value.”

In another survey of more than 150 software development organizations found that thirty eight percent of developers said their companies do not have an adequate software quality assurance programs and thirty-one percent said their companies had no quality assurance personnel at all.

With such an emphasis placed on quality being so critical to the success of the business, why is quality assurance not emphasized in an organization? In fact, the perception among most developers is that most senior managers are satisfied with the quality of software that their companies are producing. When is the last time you have heard from a developer than the quality of the application they work on is poor, that the code they developed has defects and other issues? Never – why would they admit that their code is not working and what they developed is of poor quality. The perception is ingrained that any negative reflection of the application quality reflects on their performance as a developer rather than a means to strengthen overall product quality. This inherently sets the course where development and quality assurance are on opposite sides of the fence. Finding and resolving defects are ok but question the quality of the underlying application code and up go the defenses. Take the performance testing of a web application, the development team will try and look for every hole in how the test was executed to invalidate the results.

There are ingrained biases surrounding quality assurance. This bias extends from developers through to senior management. Everyone thinks QA is easy, so less-skilled people are hired off the street (with no training) to fill QA positions at much lower salaries. Management can and has demoted underperforming developers into QA.

What is Software Quality Assurance?

All of the quality assurance books on the market today, focus on software quality assurance and provide similar definitions for it. D. Galin wrote software quality assurance is: “A systematic, planned set of actions necessary to provide adequate confidence that the software development process or the maintenance process of a software system product conforms to established functional technical requirements as well as with the managerial requirements of keeping the schedule and operating within the budgetary confines.” The definition seems to leave out critical parts. What about social engineering, user behavior, usability, client expectations and process improvement? As of now, the old definitions no longer exist; I’m throwing them out and writing one that makes sense. You cannot address software quality assurance without dealing with social engineering, human behavior and the processes that developed the software. I consider it to be a vital concept in quality assurance and I will go door to door if I have to, but I’m gonna convince you I’m right.

No comments:

Post a Comment