Calidad en proyectos software con Visual Studio y Windows Azure
Nuestra vida "corre" sobre el software. Ese fue el motto principal del lanzamiento de Visual Studio 2010, y desde luego la frase no puede tener más sentido hoy en día. Si pensamos en todo lo que nos rodea, nos daremos cuenta de que en nuestra vida diaria utilizamos dispositivos, servicios, procesos que en algún momento dependen de aplicaciones o sistemas software. Desde nuestros teléfonos móviles, hasta nuestras cuentas bancarias o incluso nuestros expedientes médicos están gestionados por sistemas software. Y como usuarios finales de dicho software todos esperamos que su funcionamiento sea correcto en todo momento.
En un artículo anterior mencionaba cómo cualquier defecto software puede afectar de manera importante tanto a los usuarios finales como a las organizaciones que los fabrican o gestionan. Incluso existen informes del National Institue of Standars and Technology (NIST) del que cifran el impacto económico que suponen los defectos software en varios miles de millones de dólares anualmente. Está claro pues que cualquier organización que produzca utilice sistemas o aplicaciones software deberá contemplar la calidad de los mismos como un aspecto crítico y fundamental.
Características de QA dentro de Visual Studio
Microsoft incluye como parte fundamental dentro de su solución ALM Visual Studio, todas las capacidades necesarias para garantizar la máxima calidad en el desarrollo de sistemas o aplicaciones software. Es más, desde hace años, como parte de la solución se incluyen herramientas y soporte metodológico que permiten a los equipos de proyecto software realizar las tareas de aseguramiento de la calidad (Software Quality Assurance) de manera integral a lo largo de todo el ciclo de vida y reduciendo la fricción que dichas tareas pueden llegar a suponer para los miembros de los equipos de proyecto.
Utilizando los diferentes componentes de la solución de Visual Studio se pueden realizar:
- Con Visual Studio Test Professional y Team Foundation Server se puede realizar la planificación y gestión de los planes de pruebas necesarios para garantizar la máxima calidad de nuestras aplicaciones, permitiendo recopilar centralizada toda la información relativa a la calidad del software, de manera que se pueden elaborar métricas e informes que dan idea delos niveles de calidad a lo largo de la vida del proyecto.
- Realización de pruebas unitarias por parte de los equipos de desarrollo que permiten asegurar en todo momento la calidad técnica del código producido, pudiendo incluso incluir dichas baterías de pruebas unitarias dentro de los procesos de construcción automatizada a los que Visual Studio Team Foundation Server da soporte.
- Utilizando Visual Studio Test Professional los equipos de calidad pueden automatizar la ejecución de pruebas funcionales que comprueban las funcionalidades y las operativas que el software debe ofrecer, siendo posible automatizar dichas pruebas funcionales para así reducir los tiempos y los recursos a invertir para ejecutar dichas pruebas.
- Con las capacidades de Visual Studio Ultimate los equipos de proyecto pueden definir y ejecutar pruebas de carga y estrés en sistemas web que darán la información necesaria para analizar cómo se comportarán los sistemas cuando sean sometidos a determinados niveles de uso en sus escenarios de operación finales.
Escenarios de QA con Visual Studio y Azure
Junto con las posibilidades de QA que ofrece la solución de Visual Studio, gracias a las capacidades que proporcionan Windows Azure y Visual Studio Online podemos ofrecer a nuestros equipos de desarrollo y a nuestros equipos de calidad un soporte completo que les permita abordar diferentes escenarios o problemáticas a la hora de realizar sus tareas.
Visual Studio Online proporciona un servicio ALM en la nube que cubre necesidades que van desde la gestión del código fuente, la gestión del royecto, los procesos de build automatizados, e incluso la codificación utilizando editores online que permiten a los desarrolladores disponer de un IDE simplificado sin requerir nada más que un acceso a Internet desde sus máquinas.
Windows Azure es la solución de computación en la nube de Microsoft y ofrece soluciones de PaaS (Platform as a Service), SaaS (Software as a Service) e incluso IaaS (Infrastructure as a Service).
Combinando las posibilidades de Visual Studio, Visual Studio Online, Windows Azure y los beneficios de las suscripciones MSDN de Visual Studio, los equipos de proyecto pueden abordar con total garantía los siguientes escenarios:
Entornos de pruebas en la nube con Azure y MSDN
Utilizando el beneficio ofrecido por las suscripciones MSDN de software sin coste para entornos de desarrollo y pruebas que proporciona a sus usuarios derechos de uso de cualquier software fabricado por Microsoft para ser utilizado en entornos no productivos, y combinándolo con las capacidades de Infraestructura como Servicio (IaaS) de Windows Azure, los equipos de proyecto pueden provisionar cualquier entorno de desarrollo o pruebas en la nube de manera que los costes de aprovisionamiento de dichos entornos son considerablemente menores (pueden llegar a suponer una reducción del coste de un 98% frente a entornos licenciados por otras vías y que además se instalen on-premise). Además de la reducción en los costes, el aprovisionamiento de estos entornos en Windows Azure permite aprovechar la flexibilidad y la agilidad de la nube a la hora proporcionar a los equipos de proyecto sus entornos de desarrollo y pruebas.
Pruebas de carga utilizando Visual Studio Online
Habitualmente, la realización de pruebas de carga impone a las organizaciones la necesidad de contar con los recursos necesarios (infraestructura de computación, comunicaciones, etc.) para poder generar la carga necesaria para estresar los entornos que se desean comprobar. Por ello, habitualmente las pruebas de carga requieren una planificación previa y por tanto no se realizan tan a menudo como pudiera ser necesario. Visual Studio Online proporciona a los usuarios del servicio la posibilidad de, apenas con unos cuantos clics, diseñar una prueba de carga, y adicionalmente, hacer que Visual Studio Online sea el encargado de ejecutar la misma de manera transparente al usuario. Esto es, será el servicio de Visual Studio Online quién se encargue de provisionar, desplegar y poner en juego todos los recursos necesarios para estresar el entorno que el usuario ha diseñado, al tiempo que recopilará los resultados y ofrecerá al final, un informe detallado de los resultados de la prueba. Todo ello, sin que el usuario se haya tenido que preocupar de qué recursos han sido necesarios para ello, ni su instalación, configuración y ejecución. Esto permite que las pruebas de carga de los sistemas que se están desarrollando o que se quieran medir puedan realizarse siempre que sean necesarias y sin esfuerzo de planificación y aprovisionamiento previos.
Pruebas funcionales utilizando Windows Azure para los laboratorios de pruebas
Visual Studio, gracias a sus procedimientos automatizados de construcción y pruebas, permite que las pruebas funcionales automatizadas que los equipos de calidad han diseñado como parte del plan de pruebas del proyecto sean incluidas como una etapa más del proceso de construcción. De esta manera, los equipos de proyecto pueden establecer controles de calidad automáticos cada vez que se libera una "release" nueva del proyecto.
Evidentemente, la ejecución de las pruebas funcionales automatizadas, impone que ciertos recursos de infraestructura sean puestos en juego. Hay que poner a disposición de los procesos de construcción automatizada entornos donde desplegar cada "release" así como máquinas con procesos agentes que serán las encargadas de la ejecución desatendida de las diferentes pruebas funcionales sobre dichos entornos. Esto, como es habitual, supone un esfuerzo de planificación y de aprovisionamiento que Windows Azure puede ayudar a resolver. Utilizando las capacidades de IaaS de Windows Azure los equipos de proyecto pueden disponer de los recursos mencionados anteriormente de una manera sencilla y rápida y a un coste mucho menor que si se utilizaran soluciones on-premise.
Externalización de las pruebas de calidad a terceras empresas utilizando TFS en IaaS o Visual Studio Online
En proyectos de desarrollo de una magnitud determinada es habitual la participación de terceras empresas para que realicen las tareas de desarrollo, o se ocupen de la evaluación de la calidad de los desarrollos realizados, bien por la organización que les ha contratado, o bien por terceras partes. Utilizando el soporte de gestión de los desarrollos que proporciona Team Foundation Server de manera centralizada se puede poner a disposición de todos los participantes del proyecto un soporte común y centralizado que gobierne los diferentes aspectos del proyecto de desarrollo.
Si nos centramos en los aspectos de QA del proyecto, configurando TFS en Windows Azure (IaaS) o utilizando su contrapartida como servicio, como es Visual Studio Online, podemos ofrecer a las empresas encargadas de supervisar la calidad de las diferentes entregas del proyecto, un entorno y un soporte ALM accesible desde cualquier lugar, controlado por la organización que les contrata y de una manera ágil y flexible. De esa manera, ninguno de los proveedores del proyecto tendrá que preocuparse de configurar entornos de pruebas y podrá utilizar los proporcionados por el dueño del proyecto final, al tiempo que todos contarán con un sistema ALM centralizado donde se irán almacenando toda la información de los planes de QA a lo largo de la vida del proyecto.
Conclusiones
Como se ha podido ver, aunando las capacidades de gestión de los desarrollos y de aseguramiento de la calidad proporcionadas por la gama de productos de Visual Studio, junto con los beneficios de las suscripciones MSDN y los beneficios aportados por Windows Azure, las actividades de aseguramiento de la calidad de los desarrollos software pueden realizarse de una manera organizada y eficiente, reduciendo los costes de los recursos requeridos al tiempo que los plazos de proyecto no se verán afectados por falta de agilidad en los procesos de aprovisionamiento de los mismos.