miércoles, 23 de abril de 2008

SQA, SQC y Software Testing, ¿qué es qué?

Si queremos empezar por el principio, es necesario aclarar determinados conceptos básicos que tienden a usarse indistintamente, de forma equivocada, para referirse a lo mismo. Y digo "de forma equivocada" porque, evidentemente, no son lo mismo. Veamos algunas definiciones elementales.

De un modo general y basado en los estándares ANSI/IEEE:
  • Testing: es el proceso de ejecutar un sistema con la intención de encontrar defectos incluyendo una planificación previa a la ejecución de los Casos de Test.
  • Quality Control (QC): es un conjunto de actividades diseñadas para evaluar un producto.
  • Quality Assurance (QA): es un conjunto de actividades diseñadas para asegurar que el proceso de desarrollo y/o mantenimiento es adecuado para asegurar que un sistema cumplirá los objetivos para los que fue diseñado.
Si lo resumimos en una frase podríamos decir que el Testing es equivalente al QC y se definiría como el proceso que mide la calidad de un producto mientras que el QA sería el proceso que mide la calidad de los procesos usados para crear dicho producto.

De un modo más particular orientado al software:
  • Software Testing: es el conjunto de procedimientos usados para evaluar la calidad del software. Es una técnica de investigación empírica cuyo objetivo es proporcionar información acerca de la calidad de la aplicación bajo testeo con respecto al contexto en el que está previsto que funcione. El Software Testing conlleva la ejecución de la aplicación bajo condiciones controladas (tanto normales como anormales) y la evaluación de los resultados. Además, debe, intencionadamente, intentar provocar comportamientos erróneos para determinar si las cosas ocurren cuando no deberían o si las cosas no ocurren cuando deberían. El Software Testing está orientado a la detección.
  • Software Quality Control (SQC): es un conjunto de procedimientos destinados a monitorizar, evaluar y mejorar el producto que resulta del Ciclo de Vida del Desarrollo de Software.
  • Software Quality Assurance (SQA): es un conjunto de procedimientos formales destinados a monitorizar, evaluar y mejorar todos los procesos que conforman el Ciclo de Vida del Desarrollo de Software. Su principal objetivo es asegurar que en cualquier punto de este ciclo, cualquier estándar y procedimiento establecido se cumple y que los problemas se encuentran y se tratan adecuadamente, todo ello orientado a asegurar la producción de software de calidad que cumple con los requerimientos y estándares. El SQA está orientada a la prevención.
De todo esto podemos concluir que, mientras que el Software Testing y el SQC se encargan de controlar la calidad del software, el SQA se encarga de controlar la calidad de los procesos que dan como resultado dicho software.

Para terminar con las definiciones y a modo de anécdota, os dejo esta perla (de la traducción automática supongo) extraída de http://spanish.osstrans.net/software/testlink.html:

Testlink: "TestLink es un sistema que sigue basado tela de la gerencia y de la ejecución de la prueba construido para mejorar calidad de tu proceso de la verificación o de la prueba. La herramienta incluye la divulgación y los requisitos que siguen y coopera con los sistemas que siguen del insecto bien conocido.?"

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

If we want to start from the beginning, it is necessary to clarify some basic concepts that are usually taken, in a wrong way, as the same thing. And I said "in a wrong way" because, obviously, they are not the same thing. Let's see some basic definitions.

From a general point of view and based on the ANSI/IEEE standards:

  • Testing: is the process of executing a system with the intent of finding defects including test planning prior to the execution of the Test Cases.
  • Quality Control (QC): is a set of activities designed to evaluate a developed working product.
  • Quality Assurance (QA): is a set of activities designed to ensure that the development and/or maintenance process is adequate to ensure a system will meet the objectives it was designed for.
Summarizing these concepts in a simple sentence we could say that Testing is equals to QC and it would be the process that measures the quality of a product while QA would be the process that measures the quality of the processes used to obtain this product.

From a more particular, oriented to software point of view:

  • Software Testing: is the set of procedures used to evaluate the software quality. It is an empirical technical investigation conducted to supply information about the quality of the application under test with respect to the context in which it is intended to operate. Software Testing involves operation of a system or application under controlled conditions (both normal and abnormal) and evaluating the results. In addition, it should intentionally attempt to make things go wrong to determine if things happen when they should not or things do not happen when they should. Software Testing is oriented to detection.
  • Software Quality Control (SQC): is a set of procedures oriented to monitoring, evaluating an improving the product that results from the Software Development Life Cycle (SDLC).
  • Software Quality Assurance (SQA): is a set of formal procedures oriented to monitoring, evaluating an improving all the processes that take part in the Software Development Life Cycle (SDLC). Its main objective it to ensure that in every point of this cycle, any agreed-upon standards and procedures are followed and the problems are found and dealt with, all this with the objective of ensuring the development of quality software that accomplishes the requirements and the standards. SQA is oriented to prevention.
From all this we can conclude that while Software Testing and SQC are responsible for controlling the software quality, SQA is responsible for controlling the quality of the processes that produce this software.


Referencias/References:

http://www.realityinteractive.com/rgrzywinski/archives/000044.html
http://www.faqs.org/faqs/software-eng/testing-faq/section-9.html
http://www.softwareqatest.com/qatfaq1.html
http://en.wikipedia.org/wiki/Software_quality_control
http://en.wikipedia.org/wiki/Software_testing
http://en.wikipedia.org/wiki/Software_Quality_Assurance

0 comentarios: