Software quality assurance
1843409
225569417
2008-07-14T10:32:35Z
Norhtenpal
7473505
Added PPQA audits as an QA activity and commented the confusion between the listed quality control activities versus QA activities
{{Software development process}}
{{Refimprovesect|date=June 2008}}
{{portal|Software Testing}}
'''Software quality assurance''' ('''SQA''') consists of a means of monitoring the [[software engineering]] processes and methods used to ensure quality. It does this by means of [[audit]]s of the [[quality management system]] under which the software system is created. These audits are backed by one or more standards, usually [[ISO 9000]] or CMMI.
It is distinct from [[software quality control]] which includes reviewing [[requirement]]s documents, and [[software testing]]. SQA encompasses the entire [[software development]] process, which includes processes such as [[software design]], [[coding]], [[Revision control|source code control]], [[code review]]s, [[change management]], [[configuration management]], and [[Release Management|release management]]. Whereas software quality control is a control of products, software quality assurance is a control of processes.
Software quality assurance is related to the practice of [[quality assurance]] in product [[manufacturing]]. There are, however, some notable differences between software and a manufactured product. These differences stem from the fact that the manufactured product is physical and can be seen whereas the software product is not visible. Therefore its function, benefit and costs are not as easily measured. What's more, when a manufactured product rolls off the assembly line, it is essentially a complete, finished product, whereas software is never finished.{{Fact|date=June 2008}} Software lives, grows, evolves, and metamorphoses, unlike its tangible counterparts. Therefore, the processes and methods to manage, monitor, and measure its ongoing quality are as fluid and sometimes elusive as are the defects that they are meant to keep in check.
==Advantages of SQA ==
An SQA plan can take a number of paths, testing for different capabilities and performing different analysis, depending on the demands of project, the users, and the software itself. But any rigorous SQA plan carried out scrupulously by seasoned QA professionals will confer certain benefits:
'''Improved customer satisfaction'''
Improved customer satisfaction means longer, more profitable customer relationships, positive customer testimonials, and waves of referral business generated from positive word of mouth.
If customers are dissatisfied with a product they have purchased from a particular software vendor, they're likely never to recommend that product nor buy from that software vendor again. Bugs and defects, in addition to seriously hampering an application's functionality, look sloppy and unprofessional, and reflect poorly on a company's reputation.
What's more, without proper testing, it is virtually impossible to know how new users will respond to an application's functions, options, and usability features. Unbiased software quality assurance specialists come to a project fresh, with a clear outlook, and so serve as the first line of defense against unintuitive user interfaces and broken application functionality. A quality application is guaranteed to result in enhanced customer satisfaction.
'''Reduced cost of development'''
Because the process of software quality assurance is designed to prevent software defects and inefficiencies, projects that incorporate rigorous, objective testing will find that development costs are significantly reduced since all later stages of the development life cycle become streamlined and simplified. With SQA, all further testing and development including user testing and customer deployments will go more smoothly, and of course more quickly -- which means your software development project will consistently reach completion on time and within budget, release after release.
'''Reduced cost of maintenance'''
Bug-infested applications are troublesome to support. The combined cost of unnecessary recalls, returns, and patches can be frightful. And that says nothing of what will have to be spent on ongoing customer support, be it by telephone, email, or in person. All these costs and more can be dramatically reduced by releasing only rigorously quality-assured products. Software vendors that invest in quality now can avoid big losses in the future.
==Methodology of SQA==
Software testing is as much an art as a science. In large, complex applications, such as operating systems, it is practically impossible to iron out every single bug before releasing it both from a difficulty point of view and due to time constraints. Different software applications require different approaches when it comes to testing, but some of the most common tasks in software QA include:
'''PPQA audits'''
Process and Product Qualty Assurance is the activity of ensuring that the process and work product conform to the agreed upon process.
The following quality control activities are often confused as quality assurance activities:
'''Peer Reviews'''
Peer reviews of a project's work products are the most efficient defect removal (quality control) activity.
'''Validation testing'''
Validation testing is the act of entering data that the tester knows to be erroneous into an application. For instance, typing "Hello" into an edit box that is expecting to receive a numeric entry.
'''Data comparison'''
Comparing the output of an application with specific parameters to a previously created set of data with the same parameters that is known to be accurate.
'''Stress testing'''
A stress test is when the software is used as heavily as possible for a period of time to see whether it copes with high levels of load. Often used for server software that will have multiple users connected to it simultaneously. Also known as Destruction testing.
'''Usability testing'''
Sometimes getting users who are unfamiliar with the software to try it for a while and offer feedback to the developers about what they found difficult to do is the best way of making improvements to a user interface.
==See also==
{{Commons cat}}
* [[Software Assurance]]
* [[Software quality control]]
== References ==
* [http://satc.gsfc.nasa.gov/assure/agbsec3.txt Software Quality Assurance] (Part I)
==External links==
* [http://www.swebok.org/ch11.html#Ref2.1 Software Engineering Body of Knowledge Ch. 11 Sec. 2.1]
* [http://www.sqazone.net/ Software Quality Assurance Zone]
* [http://www.qaiworldwide.org/qai.html Quality Assurance Institute Worldwide]
[[Category:Quality assurance]]
[[Category:Software quality]]
{{Soft-eng-stub}}
[[he:הבטחת איכות תוכנה]]