Evaluación


 Conceptos

1. Evaluación: es un instrumento de gestión. Es un proceso de duración determinada que trata de valorar de manera sistemática y objetiva la pertinencia, el rendimiento y el éxito de los programas y proyectos concluidos y en curso.

2. Técnicas: conjunto de reglas, procedimientos y/o protocolos que se implementan para cumplir un objetivo determinado y concreto.

3. Rendimiento: capacidad del sistema de utilizar los recursos de hardware de forma eficiente.

4. Métricas: es un estándar de medida de un grado en el que un sistema o proceso de software posee alguna propiedad. 

5. Carga de trabajo: es la cantidad de procesamiento que se le ha asignado a la computadora en un momento dado. La carga de trabajo consiste en cierta cantidad de programación de aplicaciones que se ejecuta en la computadora y, por lo general, una cantidad de usuarios conectados e interactuando con las aplicaciones de la computadora.

6. Simulación: construcción de un modelo matemático, y por tanto digital, de un sistema, producto o proceso con el fin de recrear y analizar su comportamiento antes de ser construido físicamente. 

7. Modelado:  es el análisis y diseño de aplicaciones software antes de escribir el código.

Importancia

Es necesario evaluar el sistema software a medida que se va avanzando en el proceso de desarrollo de dicho sistema. De esta forma se intenta que la detección de defecto se haga lo antes posible y tenga menor impacto en el tiempo y esfuerzo de desarrollo; la evaluación de software educativo se ha centrado tradicionalmente en dos momentos del desarrollo y uso de este tipo de materiales: durante el proceso de diseño y desarrollo, con el fin de corregir y perfeccionar; durante su utilización real por los usuarios, para juzgar su eficiencia y los resultados que con el se obtienen.

No es aun el frecuente la participación de un evaluador educativo o pedagógico en estos procesos; aunque es cierto que los temas de relación hombre-maquina y del usuario como criterio de calidad. Se establece como finalidad de la evaluación de software educativo: orientar un uso pedagógicamente adecuado; Es necesario considerar que no se puede asegurar que el software educativo por sí mismo sea bueno o malo, todo dependerá del uso que de él se haga, de la manera cómo se utilice en cada situación concreta

Tipos de evaluación


Según si ejecutamos o no el código, tenemos pruebas estáticas y dinámicas.

Evaluación estáticas, Evaluación dinámicas

Las estáticas son aquellas que se hacen sin necesidad de ejecutar el código. Un ejemplo de este tipo de pruebas puede ser la revisión estática de código, es decir, analizar el código fuente de una aplicación en busca de defectos, de algún tipo de patrones incorrectos y demás.

Las pruebas dinámicas, en cambio, son aquellas en las cuales tengo que ejecutar el software para poder probarlo. Por ejemplo, unas pruebas funcionales, en las que tenemos la aplicación en marcha y accedemos a la misma para realizar una serie de pruebas.

Según el uso de herramientas, tenemos las pruebas manuales o automáticas.

Las pruebas manuales son aquellas en las que se prueba una navegación normal, por ejemplo, o se realiza una prueba funcional, como por ejemplo, acceder a la aplicación y pulsar los botones para comprobar si funciona o no.

En las pruebas automáticas se usa una herramienta para realizar estas pruebas, por ejemplo una prueba automatizada, en la que grabo una navegación y luego ejecuto esa prueba de forma automática desde la herramienta.

Según lo que verifican, existen varios tipos.



Las pruebas funcionales, que a su vez existen varios tipos, de las que las más importantes son las unitarias, de integración, de aceptación y de regresión.

  • Las unitarias son pruebas para trozos de código concretos para ver que funciona y que no tiene errores.
  • Las de integración, que son pruebas a todos los componentes juntos, para ver cómo interactúan entre ellos y comprobar que todo vaya bien.
  • Las de aceptación, que las suele hacer el usuario. Puede que un software no contenga errores, que funcione bien, pero tal vez no hace lo que debería hacer, no está haciendo lo que el usuario quería que hiciese.
  • Las pruebas de regresión, que se realizan cuando hemos introducido cambios, y hay alguna parte que no me ha tocado pero no sabemos si al realizar los cambios hemos introducido algún defecto en alguna parte que ya funcionaba. Este tipo de pruebas suele ser muy común que se automaticen.

Las pruebas no funcionales, que por el contrario son aquellas que no se basan en aspecto funciona. Hay varios tipos:

  • De seguridad, el famoso hacking ético, en las que se buscan vulnerabilidades de seguridad.
  • De rendimiento, que permiten conocer el comportamiento del software ante una carga determinada, cómo responde y cómo se recupera ante fallos.
  • De usabilidad, que se emplean para saber cómo de usable es la aplicación, pero sin entrar en aspectos funcionales. Por ejemplo, si tiene un menú que hace que la navegación sea intuitiva, si tiene una ayuda que explica el funcionamiento de la aplicación, etc.
  • De accesibilidad, que van más orientadas a que se visualicen bien los elementos, a que si hay sonido tenga también alguna alternativa para personas con alguna discapacidad visual o auditiva, etc.


Técnicas de evaluación


Técnicas de prueba estática:

  • Revisiones de documentos
  • Tutoriales
  • Inspección
  • Análisis de viabilidad o cualquier otra forma de análisis para determinar si el software es lo que debería ser o no
  • Revisión de código

Técnicas para pruebas dinámicas como:

  • Examen de la unidad
  • Pruebas de integración
  • Prueba del sistema

Preparación de una evaluación

Algunos ejemplos de lo que se prueba(estática)incluyen:

  • Especificaciones de requisitos
  • Documentos de diseño
  • Documentos de usuario
  • Contenido de la página web
  • Código fuente
  • Casos de prueba, datos de prueba y scripts de prueba
  • Documentos de usuario
  • Documentos de especificación y matriz

Selección de una técnica

Algunos beneficios de las pruebas estáticas incluyen:

  • Detección temprana y corrección de errores de codificación.
  • Reduce el costo en las primeras etapas de desarrollo, en términos de la cantidad de reelaboración necesaria para corregir cualquier error.
  • Escalas de tiempo reducidas para el desarrollo.
  • Los comentarios recibidos en esta etapa ayudarán a mejorar el funcionamiento general del software. Una vez que se inicien otros tipos de pruebas, como las pruebas dinámicas, no se encontrarán tantos errores. Esto significa que, en general, el código es más fácil de mantener.
  • Este proceso también ayudará a que los desarrolladores tengan una mejor idea de los problemas de calidad que se encuentran en el software.
  • Con herramientas automatizadas, este proceso puede ser bastante rápido para revisar el código y otros documentos.
  • Las pruebas estáticas también pueden aumentar la cantidad de comunicación entre equipos.

Evaluación de los productos, de los procesos, de los recursos.

Cada día son más las organizaciones que muestran interés en asegurar o controlar la calidad del producto software, y aunque cada una de ellas tiene características que las diferencian del resto, de manera global se pueden clasificar en alguna de las siguientes categorías:

  • Organismos de las Administraciones Públicas, que tanto a nivel estatal como autonómico o local, cada día externalizan más el desarrollo de software a otras empresas o factorías de software, y que necesitan disponer de un control de calidad que les permita verificar que el software que reciben cumple los requisitos mínimos de calidad exigidos y además poder de esta manera gestionar de forma adecuada los acuerdos de nivel de servicio pactados con los proveedores.
  • Empresas de software que externalizan, ya sea bajo el método del nearshoring o bajo el método del offshoring, parte de sus procesos de desarrollo de software, y que deben controlar también de forma continua la calidad del software que reciben.
  • Factorías y empresas desarrolladoras de software que están interesadas en disponer de un mecanismo que les permita asegurar la calidad del software que fabrican.
  • Factorías y empresas desarrolladoras de software que están interesadas en asegurar a sus clientes, mediante una verificación y validación independientes, la calidad de los productos que les están entregando.

Motivos para la evaluación

Independientemente de lo anterior, son muchos los motivos por los que una organización puede estar interesada en implantar un sistema de control de la calidad del producto bajo la familia de normas ISO/IEC 25000. Entre los más destacados se pueden incluir:

  • Diferenciarse de los competidores, asegurando tiempos de entrega y reducción de fallos en el producto tras su implantación en producción.
  • Poder establecer acuerdos de nivel de servicio, definiéndose determinados parámetros de calidad que el producto debe cumplir antes de ser entregado.
  • Detectar los defectos en el producto software y proceder a su eliminación antes de la entrega, lo que supone un ahorro de costes en la fase de mantenimiento posterior.
  • Evaluar y controlar el rendimiento del producto software desarrollado, asegurando que podrá generar los resultados teniendo en cuenta las restricciones de tiempo y recursos establecidas.
  • Asegurar que el producto software desarrollado respeta los niveles necesarios para las características de seguridad (confidencialidad, integridad, autenticidad, no-repudio, etc.).
  • Comprobar que el producto desarrollado podrá ser puesto en producción sin poner en compromiso el resto de sistemas y manteniendo la compatibilidad con las interfaces necesarias.

Resaltando los beneficios de evaluar el producto software en función de la tipología de organización, podríamos destacar dos: las empresas que desarrollan software y las organizaciones que adquieren software. En la siguiente figura se enumeran estos beneficios:



Resumen

Las pruebas de software permiten la ejecución de un sistema con el objetivo principal de encontrar errores presentes en el mismo; así conseguimos reducirlos y mejorar la calidad del sistema, haciéndolo más robusto frente a fallos.

Dependiendo de la ejecución del código tenemos: 

Pruebas dinámicas 

Las pruebas dinámicas son aquellas que se realizan mientras el código está en ejecución. Tienen como objetivo asegurar que el software se comporte de acuerdo con los requerimientos del negocio mediante la realización de pruebas funcionales y no funcionales.

Estas pruebas se enfocan en la detección y confirmación de la corrección de defectos en el software. Por lo general se realizan en una etapa más tardía que las pruebas estáticas, por lo cual, los defectos encontrados en estas son más costosos. 

Pruebas estáticas 

A diferencia de las pruebas dinámicas, estas no requieren de la ejecución de software para ser realizadas. Parte del objetivo de las pruebas estáticas es la revisión de productos de trabajo como documentos de requerimientos, casos de prueba, planes de prueba, código, guías de usuario.

Estas pruebas se enfocan en la prevención de defectos y en la detección temprana de los mismos, ya que se pueden realizar en cualquier étapa del ciclo de vida de software según la información que se tenga disponible.