Archivos de la etiqueta: calidad

01Ene/15

Aplicación Web para la gestión de calidad y organización de trabajo

Aplicación Web para la gestión de calidad y organización de trabajo y salario en la Agencia GEOCUBA Granma(CALIDOTS)

La organización del trabajo y salario en el socialismo se alcanza a través de un sistema único a nivel de todo el país. El sistema tiene como objetivo la aplicación adecuada del principio de pago según el trabajo, el que tiene su expresión en el Artículo 45 de la Constitución de la República de Cuba que expresa: “El trabajo es remunerado conforme a su calidad y cantidad”. En la presente investigación se desarrolló una aplicación Web encaminado a gestionar calidad y organización de trabajo y salario integralmente en la Agencia GEOCUBA Granma, la cual permite reducir las interrupciones en el flujo productivo, el desaprovechamiento de la jornada laboral, las afectaciones salariales, los incumplimientos en la actividad comercial y los atrasos en la entrega de las producciones. Se utilizó para el desarrollo del software, Apache como servidor web y MySQL como Sistema Gestor de Base de Datos, se implementa el patrón de arquitectura Modelo-Vista-Controlador a través del framework Codeigniter, PHP5 como lenguaje empleado para la implementación de las funcionalidades, además de HTML y JavaScript con la librería EXTJS. Para guiar el proceso de desarrollo software se utilizó la metodología Extreme Programming (XP)

Download the PDF file .

Descargar

01Ene/15

Las Factorías de Software

Las Factorías de Software, una alternativa para garantizar la calidad de los productos

El desarrollo de la industria del software, tiene tantas ventajas como riesgos, es estrictamente necesario minimizarlas y ofrecer a los clientes un alto grado de satisfacción, para lograrlo hay que tomar medidas para mitigar cualquier riesgo. Una alternativa bastante efectiva para eliminar todos estos problemas es diseñar y ejecutar una estrategia de implantación de un modelo de factoría de software a la empresa en cuestión. Está es una tarea que requiere tiempo y dedicación, no basta con elegir al azar un modelo de factoría, hay que hacer un estudio profundo para ver cual puede reportar mejores resultados. En la Fábrica de Portales de la facultad 10 se implantó uno de los modelos de factorías estudiados y se obtuvieron resultados satisfactorios, como se muestra en el presente trabajo.

Download the PDF file .

Descargar

01Ene/15

Procedimiento para el aseguramiento de la calidad

Propuesta de un procedimiento para el aseguramiento de la calidad en los procesos productivos

El presente trabajo se realizó en la Facultad Regional de Granma de la Universidad de las Ciencias Informáticas, con el objetivo de elaborar una propuesta de procedimiento para el aseguramiento de la calidad en los proyectos productivos de la facultad. En este trabajo se realizó la fundamentación teórica con el objetivo de estudiar el estado actual de la calidad del software, para ello se recogen algunos conceptos emitidos por diferentes autores para tener una visión más clara de lo que trata el trabajo, entre estos conceptos está: calidad, procedimiento, proceso, etc. Se realizó una caracterización sobre el proceso de producción de la facultad para después realizar un diagnóstico a los proyectos para determinar la situación actual en cuanto al aseguramiento de la calidad y para ello se emplearon diferentes técnicas como las entrevistas y encuestas.

Para cumplir el objetivo de esta investigación se elaboró la propuesta de solución, dicha propuesta tiene como objetivo asegurar la calidad en la producción de software de la facultad, esta propuesta se realizó para el uso de todas las metodología. El procedimiento propuesto en esta investigación, favorecerá el trabajo y el incremento de la eficiencia en la Facultad Regional de Granma en cuanto a proyectos de software se refiere. Con ella el grupo de trabajo de calidad de la facultad tendrá un procedimiento a seguir, y una forma más organizada de realizar el trabajo.

Download the PDF file .

Descargar

01Ene/15

Propuesta de Curso Online de Fiabilidad de las Fuentes de Información

Propuesta de Curso Online de Fiabilidad de las Fuentes de Información

Actualmente en el desarrollo científico-educacional es evidente la inserción de las nuevas tecnologías en la dinámica de formación de los estudiantes. Muchos investigadores trabajan concretando metodologías de aprendizaje para el procesamiento de información procedente de Internet. La presente investigación lleva como título: Propuesta de Curso Online de Fiabilidad de las Fuentes de Información para los estudiantes de la FRG (UCI), constituye un estudio de las fuentes de información, así como la calidad y evaluación de las mismas a través de un curso online y tiene como objetivo: Crear en el estudiantado de la FRG (UCI) las habilidades fundamentales para una mejor búsqueda de fuentes confiables de información. Se obtuvo como resultado un curso en la plataforma de teleformación Entorno Virtual de Aprendizaje (EVA-FRG), distribuido en 3 temáticas y 30 horas/clases, que guían al estudiante en su aprendizaje, orientándolo hacia la viabilización de una mejor búsqueda de información en la Web.

Download the PDF file .

Descargar

01Ene/15

Procedimiento para realizar pruebas de usabilidad

Procedimiento para realizar pruebas de usabilidad

El desarrollo que ha alcanzado la industria del software a nivel mundial propicia la competencia entre todo tipo de producto informático. En la búsqueda de una mayor calidad, la usabilidad se ha convertido en una necesidad y obligación para las empresas dedicadas a este fin, el usuario final es el que le da o no importancia al software y se basa mayormente en su facilidad de uso. Con el objetivo de obtener una mejor interacción entre los clientes y desarrolladores surge la necesidad de realizar la investigación que lleva por título Procedimiento para la realización de pruebas de usabilidad de software. Con la propuesta también se persigue desarrollar habilidades que contribuyan a la planificación de las actividades para realizar las mediciones de la usabilidad. En la investigación se tuvieron en cuenta los métodos existentes para la evaluación de la usabilidad, las opiniones dadas por expertos sobre sus buenas prácticas y los requisitos del sistema informático a evaluar. Teniéndose como base los aspectos descritos anteriormente, se define un procedimiento para realizar pruebas de usabilidad.

Download the PDF file .

Descargar

01Ene/15

Experiencias en la aplicación de pruebas de software a la Plataforma GENESIG y sus Aplicativos

Experiencias en la aplicación de pruebas de software a la Plataforma GENESIG y sus Aplicativos

Un Sistema de información geográfica (SIG) es una tecnología de manejo de información georeferenciada, que provee las funciones y las herramientas necesarias para almacenar, analizar y desplegar la información espacial. Su uso se hizo más frecuente gracias al desarrollo de una tecnología informática adecuada, que fomentó la aparición de productos SIG en el mercado. La Universidad de las Ciencias Informáticas dispone de una plataforma para el ensamblaje de los SIG. Por su impacto económico y social se le atribuye gran importancia a este producto, que carece de un proceso que sea capaz de validar la calidad tanto de la plataforma como de todos sus aplicativos, el cumplimiento de los requisitos y especificaciones para ser entregado al cliente, por lo cual se convierte en una necesidad para conocer los posibles errores sobre los que se deben trabajar para asegurar la calidad de estos sistemas. Para suplir esta carencia fue diseñada una estrategia de pruebas, que permitió organizar y planificar las actividades llevadas a cabo durante todo el proceso. Para la siguiente investigación se utilizaron métodos teóricos y empíricos, los cuales permitieron profundizar en el estudio del flujo de trabajo de pruebas como parte del desarrollo del software. Se tomó como muestra el Sistema de Información Geográfica de la UCI (SIGUCI), al que se le aplicaron un conjunto de pruebas y revisiones, las cuales permitieron detectar gran cantidad de errores que deben ser corregidos para certificar la calidad de dicho producto.

Download the PDF file .

Descargar

01Ene/15

Procedimiento para realizar pruebas de Caja Blanca

Propuesta de Procedimiento para realizar pruebas de Caja Blanca a las aplicaciones que se desarrollan en lenguaje Python.

Resumen

Uno de los mayores problemas que se afrontan en la esfera de la informática es la calidad de software. El proceso de pruebas al software (también conocido como beta testing) es uno de los aspectos fundamentales para medir el estado de calidad de un sistema informático e introducirlo satisfactoriamente en el mercado mundial. El objetivo del presente trabajo de diploma, es elaborar la propuesta de un procedimiento para realizar pruebas, aplicando el método de Caja Blanca, a las aplicaciones que se desarrollan con lenguaje Python en el Centro de Desarrollo de la Facultad Regional Granma de la Universidad de las Ciencias Informáticas.

En esta investigación se hizo un análisis de las principales bibliografías especializadas en el tema, profundizando en los diferentes métodos de pruebas que existen, fundamentalmente en las técnicas encaminadas a la revisión del código fuente de un sistema informático.

El trabajo propone un procedimiento para realizar pruebas de Caja Blanca a los sistemas que se desarrollan en Python. En el mismo se exponen las actividades a seguir por el Grupo de Calidad de la Facultad Regional Granma, reflejando cada uno de los artefactos de entrada y salida que se generan, indicando cómo se utilizan y se completan.

Para confirmar la validez del trabajo realizado se aplicó el procedimiento al Sistema de Gestión de Información para la Empresa de Acueducto y Alcantarillado de Granma. De acuerdo a lo planteado en la propuesta se realizaron sus actividades y se evidenciaron los resultados en cada uno de los artefactos involucrados.

Palabras clave: Artefactos, Centro de Desarrollo, Código Fuente, Grupo de Calidad, Procedimiento, Pruebas de Caja Blanca.

Abstract

Software quality is one of the bigest issues in Informatics. The process of software testing (also known as beta testing) is a fundamental aspect to measure the quality state of an informatics system so as to successfully introduce it into the market. The objective of this research is to present a proposal of procedure to apply tests as the beta testing (White Box) method to software developed in Python language at the University of Informatics Sciences ́ Development Center from Granma Regional Faculty.

To conduct this research, an analysis of the main specialized publications on the topic was carried out to deepen on the different testing methods available, mainly about the techniques to check the source code of software.

This research proposes a procedure to conduct software testing to the systems developed using Python language. The main activities to follow by the Quality Group from the Granma Regional Faculty show the entry and exit artifacts generated as well as indicate how they are used and complemented.

The procedure was applied to the Information Management System of the Aqueduct Enterprise in Granma so as to confirm the validity of the proposal. According to what it is stated in the proposal, all the activities were carried out and the results were evidenced in each of the artifacts involved.

Keywords: artifacts, development center, source code, quality group, procedure, beta test.

1 Estado del Arte.

Con el crecimiento acelerado de las tecnologías y la informática, la producción de software desempeña un papel importante, provocando a su vez una competencia en los sistemas, donde la calidad es fundamental para conseguir rentabilidad en la producción. La necesidad de realizar pruebas de calidad converge hacia el aseguramiento de la eficiencia del producto antes de salir al mercado.

Muchas empresas existentes dedicadas a la producción de software y gestión de la calidad, gozan de un alto prestigio y cuentan con sus propias estrategias de pruebas y herramientas de apoyo. Otras contratan a empresas e instituciones que se especializan en este proceso, entre ellas podemos mencionar a GreenSQA (Green Software Quality Assurance), con la misión de contribuir a la madurez de las empresas e industrias mediante el uso de servicios específicos de pruebas de software e implementación de sistemas de gestión de calidad, garantizando así procesos ágiles, confiables y eficientes.

Otro ejemplo es la empresa SQS S.A (Software Quality System S.A), que lleva acabo procesos de pruebas tanto en sus propias instalaciones como en las de sus clientes, asegurando la reducción de costes y el aumento de la calidad. Para ofrecer un mejor servicio a sus clientes, la compañía ha decidido organizar estos servicios de pruebas llevados a cabo en sus instalaciones bajo el nombre de SOQUS, el Laboratorio de Testing de SQS.

En este caso la RCCS (Red Colombiana de Calidad de Software), es un instrumento de gestión de conocimiento fundamentado en un modelo de ingeniería, que tiene como objetivo gestionar programas de apoyo a la implementación de modelos de software para fortalecer la industria nacional.

También al incremento de las tecnologías se vincula el desarrollo de aplicaciones, y en este caso nos interesan a aquellas que son creadas con la meta de poder automatizar el proceso de pruebas de código que se realizan sobre el software. Dentro del almacén de programas con este objetivo podemos encontrar las que están relacionadas con las pruebas de Caja Blanca. A continuación se mencionan algunas de estas herramientas.

JTest: Es el primer sistema automático de búsqueda de errores en el código de programación para programadores de Java. Esta nueva tecnología desarrollada por la empresa ParaSoft, utiliza la Test Generation Technolgy (Tecnologías de Generación de Pruebas) para analizar programas en Java. Se trata de una herramienta que permite realizar análisis de código, pruebas unitarias automáticas y cobertura de código, así como generación dinámica de pruebas funcionales.

En el ámbito de los análisis dinámicos, JTest es capaz de generar automáticamente todas las pruebas unitarias que sean necesarias, teniendo en cuenta los parámetros de cobertura de código e intentando encontrar pruebas que deriven en errores de ejecución. Genera pruebas funcionales filtradas por las acciones y los datos, incluyendo peticiones HTTP2 y JDBC3.

Insure++: Es un entorno automatizado en una aplicación de herramientas de prueba C/C++ que detecta errores difíciles de localizar; como corrupción de la memoria, asignación de errores de memoria, errores de iniciación de variables, definición de conflictos entre variables, indicador de errores, errores de biblioteca, errores lógicos y errores en algoritmos. Sin embargo tiene licencia la cual hay que pagar un monto significativo cada cierto período de tiempo.

BullseyeCoverage: Es un analizador de código de cobertura para C ++ y C que indica cómo gran parte del código fuente se pone a prueba. Puede usar esta información para rápidamente centrar su esfuerzo de ensayo y determinar las áreas que necesitan ser revisadas. El código cobertura de análisis es útil durante la unidad de verificación, integración de pruebas y la liberación final. Permite crear código más fiable y ahorrar tiempo. Sin embargo la licencia se debe comprar cada cierto período de tiempo, según el cliente determine, oscilando de 500 euros a 1000 euros.

LDRA: Es una herramienta de control de calidad que ofrece un potente código fuente de pruebas y análisis para la validación y verificación de aplicaciones de software. Es importante cuando el software informático requiere ser fiable, robusto y libre de errores. Se trata de un potente y plenamente integrado suite de herramientas, que permite al software avanzado de técnicas de análisis que puedan aplicarse en las etapas claves del desarrollo del ciclo de vida. Sin embargo sus herramientas no contienen la comprobación de estándares de codificación y para su empleo hay que comprarla a precios estimados.

Logiscope TestChecker: Aplicación para la representación gráfica de cobertura del código fuente. Evalúa el nivel de cobertura del código, el usuario debe de comprar la licencia por período de tiempos, no realiza evaluaciones al código de C Sharp y no cuenta con la verificación de estándares.

CMT++: Es una herramienta para la medida de la complejidad para C/C ++, la misma es fácil de utilizar para ambos lenguajes. También el código en ensamblador se puede medir con esta herramienta. CMT++ está destinado para organizaciones desarrolladoras de software que se esfuerzan por un proceso de desarrollo productivo resultante en productos de alta calidad.

Ayuda a estimar el mantenimiento general del código base y a localizar fácilmente las partes complejas de este. Se pueden evaluar por separado: poniendo especial atención a las pruebas, o tal vez rediseñándolas. Se puede utilizar CMT++ también para medir la cantidad de código que se tiene: líneas físicas, líneas de comentarios, líneas de programa, declaraciones. Es una herramienta que a pesar de sus características no es gratuita y la documentación para su aprendizaje se encuentra en otros idiomas exceptuando el castellano.

CTC++: Con esta herramienta ocurre lo mismos inconvenientes que con CMT++, aunque no se debe de dejar de mencionar que Testwell CTC++ (Test Analizador de Cobertura para C y C++) es una herramienta de cobertura código/prueba potente y fácil de usar, la cual muestra las partes del código que han sido ejecutadas (probadas). La herramienta analiza todos los niveles de cobertura requeridos en proyectos “críticos” y ayuda a garantizar una mayor calidad del código. Testwell CTC++ puede utilizarse para obtener las certificaciones en la industria automotriz, aérea y médica.

Visto el estudio y análisis en el marco internacional de las empresas desarrolladoras de software y gestión de la calidad, y ejemplos de aplicaciones existentes que se suelen emplear para garantizar la mayor calidad posible de los sistemas sometiéndolos a procesos de pruebas, la idea de alcanzar una empresa o sistema que asegure la calidad en el desarrollo de software se ha venido fortaleciendo en Cuba de forma continua. Existen empresas en el territorio que se inclinan hacia el mismo objetivo, como CITMATEL (Empresa de Tecnologías de la Información y Servicios Telemáticos Avanzados) que se distingue entre las entidades cubanas por su excelencia y creciente proyección hacia el mercado externo e interno, con una amplia diversidad de productos y servicios integrales de alto valor agregado. Entre las principales líneas de trabajo se destaca el desarrollo de sistemas dirigidos a automatizar la gestión en empresas de todo tipo.

Otro ejemplo es ALBET (Albet Ingeniería y Sistemas), cuyo origen y desarrollo se vincula estrechamente a la Universidad de Ciencias Informáticas (UCI), modelo de universidad productiva que agrupa una multitud de profesionales, técnicos y estudiantes. No podemos dejar de mencionar que la UCI cuenta también con un Centro para la Certificación de la Calidad de Software CALISOFT, unido al Departamento de Producción de Software. El centro cuenta con trabajos de diploma investigativos que se han realizado referentes a los temas sobre procedimientos generales de pruebas de Caja Blanca y procesos de pruebas referidos al método de Caja Negra. Existen en algunos proyectos productivos en la UCI, la utilización de herramientas que aplican diferentes pruebas de Caja Negra, probando la funcionalidad del software y en la minoría (prácticamente ninguno) se aplica el método de Caja Blanca de forma manual a un pequeño fragmento de código. El Grupo de Calidad de la Facultad Regional de la UCI en Granma, también participa en la realización de pruebas de software, aplicando generalmente pruebas de Caja Negra y de Carga. Por consiguiente existe la carencia de procedimientos de pruebas de Caja Blanca o empleo de aplicaciones de apoyo que permitan la automatización de estos proceso en la universidad.

2 Calidad de Software.

La calidad de software es un problema actual que afecta tanto a los productores de software como a los clientes. Con el aumento de la informatización a escala mundial la demanda de software crece exponencialmente y los desarrolladores le han brindado poco interés a la calidad de sus productos. Sucede que muchas veces los clientes reciben el software cuando se han violado las etapas de pruebas.

La calidad del software puede definirse de muchas maneras. Una de las más limitadas, conocida como “calidad pequeña”, define la calidad como la ausencia de defectos [4]. Para evaluarla de esta forma se emplean procedimientos estadísticos a partir de las tendencias de aparición de fallas durante la prueba de software.

“Existen estándares industriales que marcan aceptabilidad cuando se estima el número de defectos residuales en 0.02 defectos por millar de líneas de código y aún menos.” [5]

“Otros enfoques de calidad consideran diversos factores, entre ellos la confiabilidad” [6]. Existe una larga tradición de estudio de la confiabilidad que se asocia estadísticamente con el comportamiento del software.

Existen varias formas de definir la confiabilidad, en unos casos se considera tiempo de operación y en otros la variedad de usos propuestos. Una definición más reciente, plantea que: “La confiabilidad es la probabilidad de operación exitosa de un programa dado, en un intervalo de tiempo, en un ambiente específico”. [6]

Obteniendo la calidad requerida en el software, se logra reducir su número de errores o eliminarlos completamente, se alcanza una mayor fiabilidad para las funciones que debe realizar el mismo, mayor eficiencia e integridad de los datos así como flexibilidad y reusabilidad.

“La calidad de software es una actividad de protección que se aplica a lo largo de todo el proceso de Ingeniería del Software. Esta engloba los siguientes aspectos:” [6]  

  • Un enfoque de gestión de calidad.
  • Tecnología de Ingeniería del Software efectiva (métodos y herramientas).
  • Revisiones técnicas formales que se aplican durante el proceso del software.
  • Una estrategia de prueba multiescala.
  • El control de la documentación del software y de los cambios realizados.
  • Un procedimiento que asegure un ajuste a los estándares de desarrollo del software.
  • Mecanismos de medición y de generación de informes.

“La calidad debe ser especificada, planificada, administrada, medida y certificada. Esto implica una visión integral que arroja la comprobación del software, con el fin de lograr un mayor grado de satisfacción y confianza del cliente hacia la organización productora de software. Constituye entonces las pruebas de los software, tarea de alta prioridad para las empresas productoras”. [2].

Analizando los concepto expuesto sobre la calidad por varios autores y haciendo una inclinación por este último expresado por Pressman gracias a que se considera como uno de los más completos y acordes al objeto de estudio, también cabe decir que la calidad es considerada una disciplina integral y a la vez una cualidad indisoluble del software para su comprobación, muy ligada a las empresas productoras como tarea fundamental en sus procesos de pruebas.

3 Pruebas de Software.

Unas de las vías más importantes para determinar el estado de la calidad de un producto de software es el proceso de pruebas. Estas están dirigidas a componentes del sistema en su totalidad, con el objetivo de medir el grado en que cumple con los requerimientos. En ellas se usan casos de prueba, especificados de forma estructurada mediante técnicas. Sus objetivos, métodos y técnicas usadas se describen en el plan de prueba.

La prueba es una actividad fundamental en muchos procesos de desarrollo, incluyendo el del software. Estas permiten detectar la presencia de errores que pudieran generar las entradas o salidas de datos y comportamientos inapropiados durante su ejecución. Un concepto más específico dado por algunos desarrolladores de software es:

“Cualquier intento de demostrar que el software tiene propiedades por debajo de la calidad requerida”. [7].

De acuerdo a la IEEE [8] el concepto de prueba se define como:

“Una actividad en la cual un sistema o componente es ejecutado bajo condiciones específicas, se observan o almacenan los resultados y se realiza una evaluación de algún aspecto del sistema o componente”. [9].

Otro concepto importante a tomar en consideración es el emitido por Pressman en su edición de 1998, que plantea lo siguiente:

“La prueba del software es un elemento crítico para la garantía de calidad del software y representa una revisión de las especificaciones, del diseño y de la codificación”. [9].

Teniendo en cuenta las definiciones anteriores se puede concluir que la prueba de software es una actividad en la cual el sistema es ejecutado bajo condiciones específicas para demostrar que no tiene la madurez necesaria para ser implantado. Dentro de las actividades que se practican para obtener un software con la madurez necesaria están:

  • Revisiones: consiste en que cada integrante del equipo de desarrollo revisa el producto que va generando.
  • nspecciones: revisión de cada producto por parte de colegas.
  • Validaciones: es el cliente quien revisa el producto para decir si cumple con sus necesidades.

Esta definición implica que se considera una prueba exitosa si se demuestran deficiencias en el software. Las fallas pueden ser en el código o en el modelado, en dependencia del tipo de pruebas que se le apliquen al software.

Se distinguen pruebas técnicas y pruebas funcionales. Las pruebas técnicas son la responsabilidad de los ingenieros de software que han desarrollado el producto, pero estos ingenieros en ocasiones deben hacerse cargo de las pruebas funcionales.

En proyectos a gran escala las pruebas funcionales son la responsabilidad de un equipo de pruebas, formado por uno o varios técnicos, un coordinador de pruebas y un gestor de pruebas o de calidad.

3.1 Características generales de la Estrategia de Prueba.

Al aplicarles las pruebas al software se deben seguir un conjunto de estrategias para lograr que estas se hagan en el menor tiempo posible y con la calidad requerida, además de garantizar que arrojen los resultados esperados.

Dentro de las características generales de la estrategia de prueba se encuentran. [2]

  1. La prueba comienza en el nivel de módulo y trabaja “hacia fuera”, hacia la integración completa del sistema completo.
  2. En diferentes puntos es adecuada la utilización de técnicas de prueba distintas.
  3. La prueba la lleva a cabo el que desarrolla el software y para grandes proyectos, un grupo de prueba independiente.
  4. La prueba y la depuración son actividades diferentes, pero la depuración puede entrar en cualquier estrategia de prueba.

Hay dos estrategias generales para la prueba de software: las estrategias de pruebas de especificación (Caja Negra) y pruebas de código (Caja Blanca).

4 Métodos de Pruebas.

Existen diversos métodos para realizar las pruebas de software, entre las más importantes se encuentran la prueba de Caja Blanca, prueba de Caja Negra y prueba de la Estructura de Control.

El uso de la prueba de Caja Blanca es mejor para verificar que se recorran todos los caminos y detectar un mayor número de errores. La Caja Negra brinda la posibilidad de cubrir la mayor parte de las combinaciones de entradas y lograr así un juego de pruebas más eficaz.

Las pruebas mencionadas permiten probar cada una de las condiciones existentes en el programa, identificar claramente las entradas, salidas y estudiar las relaciones que existen entre ellas, permitiendo así maximizar la calidad de las pruebas y en dependencia del resultado se constará con un sistema más estable y confiable.

4.1 Prueba de Especificación (Caja Negra).

Pruebas de Caja Negra: También suelen ser llamadas funcionales y basadas en especificaciones. En ellas se pretende examinar el programa en busca de que cuente con las funcionalidades que debe tener y como lleva a cabo las mismas, analizando siempre los resultados que devuelve y probando todas las entradas en sus valores válidos e inválidos.

Al ejecutar las pruebas de Caja Negra se desarrollan casos de prueba reales para cada condición o combinación de condiciones y se analizan los resultados que arroja el sistema para cada uno de los casos. En esta estrategia se verifica el programa considerándolo una caja negra. Las pruebas no se hacen en base al código, sino a la interfaz. No importa que se cubran todas las rutas dentro del programa, lo importante es probar todas las entradas en sus valores válidos e inválidos y lograr que el sistema tenga una interfaz amigable.

4.1.1 Limitaciones

Lograr una buena cobertura con pruebas de caja negra es un objetivo deseable; pero no suficiente a todos los efectos. Un programa puede pasar con holgura millones de pruebas de especificación y sin embargo tener defectos internos que surgen en el momento más inoportuno.

Por ejemplo, una computadora que contenga el virus Viernes-13 puede estar pasando pruebas de caja negra durante años y años. Sólo falla si es viernes y es día 13; pero ¿a quién se le iba a ocurrir hacer esa prueba? [11]

Las pruebas de caja negra nos convencen de que un programa realizar bien sus funcionalidades programadas, pero no de que haga (además) otras cosas menos aceptables.

4.2 Prueba de Código (Caja Blanca).

Pruebas de Caja Blanca: También suelen ser llamadas estructurales o de cobertura lógica. En ellas se pretende investigar sobre la estructura interna del código, exceptuando detalles referidos a datos de entrada o salida, para probar la lógica del programa desde el punto de vista algorítmico. Realizan un seguimiento del código fuente según se va ejecutando los casos de prueba, determinándose de manera concreta las instrucciones, bloques, etc. que han sido ejecutados por los casos de prueba.

En las pruebas de Caja Blanca se desarrollan casos de prueba que produzcan la ejecución de cada posible ruta del programa o módulo, considerándose una ruta como una combinación específica de condiciones manejadas por un programa.

Hay que señalar que no todos los errores de software se pueden descubrir verificando todas las rutas de un programa, hay errores que se descubren al integrar unidades del sistema y pueden existir errores que no tengan relación con el código específicamente.

4.2.1 Características de las pruebas de Caja Blanca.

En las pruebas de Caja Blanca, se pretende indagar sobre la estructura interna del código, omitiendo detalles referidos a datos de entrada o salida. Su objetivo principal es probar la lógica del programa desde el punto de vista algorítmico.

Estas se basan en el diseño de Casos de Prueba que usa la estructura de control del diseño procedimental para derivarlos. Mediante las pruebas de Caja Blanca el ingeniero de software puede obtener Casos de Prueba que: [11]

  • Garanticen que se ejerciten por lo menos una vez todos los caminos independientes de cada módulo, programa o método.
  • Ejerciten todas las decisiones lógicas en las vertientes verdadera y falsa.
  • Ejecuten todos los bucles en sus límites operacionales.
  • Ejerciten las estructuras internas de datos para asegurar su validez.

Las pruebas de Caja Blanca son consideradas entre las más importantes que se aplican a los sistemas, con la que se obtienen como resultados la disminución en un gran porciento el número de errores existentes en el software y por ende una mayor calidad y confiabilidad en la codificación.

4.2.2 Tipos de pruebas de Caja Blanca.

De estructura de datos locales:

Se centran en el estudio de las variables del programa. Busca que toda variable esté declarada y que no existan con el mismo nombre, ni declaradas local y globalmente, que haya referencias a todas las variables y para cada variable, analiza su comportamiento en comparaciones.

De cobertura lógica:

  • De Cobertura de Sentencias: Comprueba que todas las sentencias se ejecuten al menos una vez.
  • De Cobertura de Decisión: Ejecuta casos de prueba de modo que cada decisión se pruebe al menos una vez a Verdadero (True) y otra a Falso (False).
  • De Cobertura de Condición: Ejecuta un caso de prueba a True y otro a False por cada condición, teniendo en cuenta que una decisión puede estar formada por varias condiciones.
  • De Cobertura de Condición/Decisión: Se realizan las pruebas de cobertura de condición y las de decisión a la vez.
  • De Condición Múltiple: Cada decisión multicondición se traduce a una condición simple, aplicando posteriormente la cobertura de decisión.
  • De Cobertura de Caminos: Se escriben casos de prueba suficientes para que se ejecuten todos los caminos de un programa. Entendiéndose camino como una secuencia de sentencias encadenadas desde la entrada del programa hasta su salida. [11]
4.2.3 Prueba del Camino Básico.

Buscando una mejor comprensión de los contenidos, se hace importante definir primeramente algunos conceptos fundamentales:

Camino: “Secuencia de todas las instrucciones de un programa de principio a fin”. [2] Un camino se puede definir como la ruta de secuencias que se siguen dentro del código de fuente de un programa, un ejemplo es, desde la entrada de valores al sistema hasta la devolución de resultados que arroja, respetando la estructura de código.

Camino Básico: Es una técnica de prueba de Caja Blanca que permite obtener una medida de complejidad lógica para generar un conjunto básico de caminos que se ejecutan por lo menos una vez durante la ejecución del programa. [12]

La prueba del camino básico es una técnica de pruebas de Caja Blanca propuesta por Tom MacCabe. Esta técnica permite obtener una medida de la complejidad lógica de un diseño y usar esta medida como guía para la definición de un conjunto básico. La idea es derivar casos de prueba a partir de un conjunto dado de caminos independientes por los cuales puede circular el flujo de control.

Camino independiente: “Es cualquier camino del programa que incluye nuevas instrucciones de un proceso o una nueva condición”. [12]

El conjunto de caminos independientes se obtiene construyendo el Grafo de Flujo asociado y se calcula su complejidad ciclomática. Por último se diseñan los casos de prueba y se ejecutan los mismos.

Complejidad: Es proporcional al número de errores en un segmento de código. “Entre más complejo, más susceptible a errores”. [13] Se relaciona con el esfuerzo requerido para probar. “Entre más complejo, mayor atención para probar”. [13]

Complejidad ciclomática: Es la “medida de la complejidad lógica de un módulo “G” y el esfuerzo mínimo necesario para calificarlo. Es el número de rutas lineales independientes de un módulo “G”, por lo tanto es el número mínimo de rutas que deben probarse”. [13]

Esta técnica ofrece una gran ventaja con respecto a las otras técnicas, ya que el número mínimo requerido de pruebas se sabe por adelantado y por tanto el proceso de prueba se puede planear y supervisar en mayor detalle.

Los pasos a seguir para aplicar esta técnica son:

  1. Representar el programa en un grafo de flujo.
  2. Calcular la complejidad ciclomática.
  3. Determinar el conjunto básico de caminos independientes.
  4. Derivar los casos de prueba que fuerzan la ejecución de cada camino.

A continuación, se detallan cada uno de estos pasos.

  1. Representación de un grafo de flujo:

El grafo de flujo se utiliza para representar el flujo de control lógico de un programa. Este emplea los tres elementos siguientes:  

  • Nodos: Representan cero, una o varias sentencias en secuencia. Cada uno comprende como máximo una sentencia de decisión (bifurcación).
  • Aristas: Líneas que unen dos nodos.
  • Regiones: Áreas delimitadas por aristas y nodos. Cuando se contabilizan las regiones de un programa debe incluirse el área externa como una región más.

Así, cada construcción lógica de un programa tiene una representación. La Figura 1 muestra un grafo de flujo del diagrama de módulos correspondiente. Nótese cómo la estructura principal corresponde a un while y dentro del bucle se encuentran anidados dos constructores if. [14]

Figura 1: Ejemplo de grafo de flujo correspondiente a un diagrama de módulos.

01Sep/12

Modelo de calidad para la evaluación de atributos de calidad

Modelo de calidad para la evaluación de atributos de calidad de los componentes biométricos en el CISED

Actualmente en Cuba las empresas dedicadas a la producción de software tienen entre sus principales objetivos desarrollar productos y servicios informáticos de alta calidad. Para alcanzar estos resultados y lograr un lugar y un reconocimiento en el mercado, es necesaria la implantación de Modelos o Estándares de Calidad que garanticen la comprobación objetiva de la evaluación de la calidad de los productos de software, desarrollados en cada una de las entidades. Por lo tanto, el presente trabajo de diploma tiene como objetivo proponer un Modelo de Calidad que permita evaluar los atributos de calidad presentes en los componentes biométricos desarrollados por el Departamento de Biometría del Centro de Identificación y Seguridad Digital (CISED).

Download the PDF file .

Descargar