miércoles, 1 de junio de 2016

Factores que afectan la calidad del software


Antes de iniciar con el tema me gustaría compartir la siguiente frase de Joseph Juran:

“Calidad es la idoneidad de uso. Es decir, las características del producto que satisfacen las necesidades del cliente y por tanto producen satisfacción de producto. La Calidad es la inexistencia de deficiencias”.

Ahora sí, comencemos con la definición de la palabra calidad. Existen varias: algunas más formales que otras, algunas más enfocadas al producto, otras al cliente  y, otras, al servicio.  Sin embargo, todas incluyen el mismo propósito  de garantía.  

En la actualidad, existen diversos factores que pueden afectar los procesos de calidad. Estos provocan desde procesos tardíos hasta el fracaso de los mismos.

Con el fin de aumentar la calidad en un producto de software o proceso, es recomendable establecer una metodología que cubra nuestras necesidades. Esto nos llevará a definir buenas prácticas y nos permitirá llevar un control de lo que se está realizando en cada una de las etapas del producto. También,  se podrá  realizar una evaluación, la cual nos ayudará  a saber en qué punto se falló para poder mejorarlo.

Algunas de las actividades que se llevan a cabo en la gestión de la calidad  son: aseguramiento, planificación y control de la calidad.

Entre los factores más importantes que intervienen en la calidad encontramos: procesos y prácticas, herramientas, personal y métricas.







Fuente: Guía mejores Prácticas de calidad Producto (INTECO) https://www.incibe.es/file/TnOIvX7kM5orWmEwNq53IQ


A  continuación, se mencionan algunos de factores que intervienen en el  mal uso de las prácticas para el aseguramiento de calidad.

No contar con gestión de pruebas

Al no contar con un plan de pruebas, no tener casos de pruebas o datos y sólo mirar la funcionalidad del sistema, se obtendrán como resultado altos índices de errores y, como consecuencia de la mala gestión, el producto se liberará demasiado tarde y/o incompleto, ocasionando un posible disgusto del cliente. Por ende, esto traerá aparejado costos demasiados elevados.

La complejidad y el tiempo planificando están subestimados

La complejidad de un proyecto, en ocasiones, es la principal causa en la demora del inicio de un desarrollo. Otros factores son la falta de un plan de pruebas, o bien, no tener la estimación adecuada, lo cual impacta en el tiempo para el diseño de pruebas y la ejecución de las mismas.

Es necesario que la gestión de pruebas comience con el proyecto. El diseño de caso de pruebas y las pruebas pueden comenzar con los requisitos.

Deficiencia en la gestión de datos de prueba

Al definir y desarrollar los casos de pruebas, es importante tener en mente los parámetros a utilizar para su ejecución. En muchas ocasiones, sólo se definen los casos olvidando los datos de pruebas.

Es fundamental definir y gestionar los datos de prueba que serán necesarios junto con los casos de prueba. Para ello, cabe recordar que se debe contar con datos de prueba primarios y secundarios, lo cual ayudará bastante para las pruebas de regresión.

Automatización de pruebas

Muchas veces sólo se piensa en las pruebas GUI (Interfaz Gráfica de Usuario), sin pensar qué hay del código, interfaces, rendimiento, etc. Una buena práctica, es comenzar temprano con el control de código, usando una métrica de cobertura. Además, es importante  comenzar con las pruebas de la GUI, sólo si la GUI está estable (recuerde que es necesario contar datos de prueba correctos para su funcionamiento). 

Conocimiento del negocio

¡Pieza importantísima! En muchas ocasiones se utilizan recursos para diseñar tareas del proyecto, sin tener el suficiente dominio o conocimiento del negocio. Es indispensable que se cuente con personal capaz de realizar cada una de las tareas referentes a su área, de lo contrario, es importante capacitarlos antes de comenzar con las actividades del proyecto. Esto ayudará a agilizar y terminar en tiempo y forma cada una de las etapas del proyecto.

Técnicas de pruebas

Los gestores y los recursos no están familiarizados con las técnicas de pruebas. Las técnicas sistemáticas de diseño de casos de prueba reducen bastante el número de casos de prueba, ahorrando tiempo y costos.


No se usan herramientas de pruebas, o se usan las inadecuadas

Las herramientas de pruebas  ayudan a mejorar los procesos para la calidad de software y existen diferentes opciones que se pueden utilizar en el proceso de desarrollo.  Cabe mencionar que, aparte de los beneficios que nos ofrecen, también existen algunos riegos a los que se está expuesto al no tener el conocimiento con exactitud de cada herramienta:

  
Beneficios

•Mejora la eficiencia: utilizar herramientas de pruebas nos ayuda en las  actividades de pruebas  de regresión.
•Automatización de pruebas: diversas herramientas cuentan con la funcionalidad para realizar pruebas de carga, volumen y estrés.  Estas pruebas no es posible realizarlas manualmente.
•Utilizar una herramienta de  pruebas nos facilita el acceso a la información (generación de informes).
•Fiabilidad de prueba.
•Consistencia  y responsabilidad: una vez realizadas las pruebas exitosas, estas se pueden reutilizar las veces que sean necesarias.

Riesgos

•Subestimación de costos y esfuerzos: utilizar por primera vez una herramienta de pruebas y no tener claros los costos de mantenimiento o no darle funcionamiento, es      un claro ejemplo.
•Exceso de confianza en las herramientas: no tener una expectativa clara de lo que se puede llevar acabo con cada una de las herramientas.
•Conocimiento y control de las versiones de pruebas: no tener conocimiento suficiente de las herramientas provoca que no se pueda o no se lleve un control de los casos de pruebas diseñados, así como scripts.
•Mala integración en la organización.
•Características del proveedor: respuesta inesperada en la solución de incidentes o mantenimiento de las mismas herramientas.
•Portabilidad: puede que la herramienta adquirida no cumpla con la funcionalidad esperada o no sea funcional en la plataforma con la que se cuenta.

Fuente: Beneficios y Riesgos - Herramientas de Pruebas ISTQB 
(https://www.youtube.com/watch?v=lt9vm8TftvQ)


Existen diferentes tipos de herramientas, entre las cuales encontramos las siguientes:

Herramientas de gestión de pruebas

·  QaManager
·  QaBook
·  RTH (open source)
·  Salome-tmf
·  Squash TM
·  Test Environment Toolkit
·  TestLink
·  Testitool
·  XQual Studio
·  Radi-testdir
·  Data Generator
·  HP Quality Center/ALM
·  QA Complete
·  QaBook
·  T-Plan Professional
·  SMARTS
·  QAS.Test Case Studio
·  PractiTest
·  SpiraTest
·  TestLog
·  ApTest Manager
·  Zephyr

Herramientas para pruebas funcionales

·  Bugzilla Testopia
·  FitNesse
·  Selenium
·  Soapui
·  Watir (Pruebas de aplicaciones web en Ruby)
·  WatiN (Pruebas de aplicaciones web en .Net)
·  Capedit
·  Canoo WebTest
·  Solex
·  Imprimatur
·  SAMIE
·  ITP
·  WET
·  WebInject
·  QuickTest Pro
·  Rational Robot
·  Sahi
·  SoapTest
·  Test Complete
·  QA Wizard
·  Squish
·  vTest
·  Internet Macros


Es necesario contar con las herramientas adecuadas con el fin de tener un correcto control del proyecto.  También es importante que cada recurso cuente con el conocimiento de las mismas.

Herramientas inadecuadas

Tener un proceso de pruebas inadecuado: lamentablemente en la actualidad existen lugares donde no establece o no se toma importancia a los proceso de pruebas, así como tampoco se tiene una metodología con las herramientas adecuadas.

Utilizar una herramienta paga y no explotar su funcionamiento al máximo es un gran error. Por poner un ejemplo, tener la herramienta HP Quality Center/ALM, la cual  tiene un costo por adquirirla, y no llevar una gestión de pruebas correcta, no generar o ejecutar los casos prueba de forma efectiva.

•Dejar para el final las pruebas de rendimiento y de carga

Las  pruebas de rendimiento y carga se pueden ejecutar en paralelo con las fases de desarrollo. Si esto es posible,  planifique y programe las pruebas con anterioridad, ya que en algunas ocasiones,  pueden ser muy complejas.

Recuerde que el rendimiento de un software está principalmente relacionado con su arquitectura. Es más fácil y más barato cambiar la arquitectura del software en las primeras etapas del desarrollo.


Ejemplos de herramientas para pruebas de carga y rendimiento

-FunkLoad
-FWPTT load testing
-LoadUI
-JMeter - es una herramienta de pruebas permite realizar pruebas     funcionales y rendimiento es una aplicación de escritorio.
-HP LoadRunner
-LoadStorm
-NeoLoad
-WebLOAD Professional
-Forecast
-ANTS – Advanced .NET Testing System
-Webserver Stress Tool
-Load Impact


Autor:
Jesús María Martínez
Tester & QA