domingo, 7 de febrero de 2016

Código deontológico

La participación en las pruebas de software permite a las personas obtener información confidencial y privilegiada
Un código de ética es necesario, entre otras razones para asegurar que la información no sea objeto de un uso inapropiado.
Reconociendo el código de ética para ingenieros de software de la ACM (Association for Computing Machinery) y del IEEE (Institute of Electrical and Electronics Engineers), el ISTQB (International Software Testing Qualifications Board) establece el siguiente código de ética:
  • Público
Los probadores de software certificados actuarán en coherencia con el interés público.
  • Cliente y Empleador
Los probadores de software certificados actuarán en el mejor de los intereses de su cliente y empleador, en coherencia con el interés público.
  • Producto
Los probadores de software certificados garantizarán que los productos entregables que proporcionan (por lo que respecta a los productos y sistemas que prueban) se ajustan a los más altos estándares profesionales.
  • Criterio
Los probadores de software certificados mantendrán la integridad y la independencia en su criterio profesional.
  • Gestión
Los jefes y líderes de pruebas de software certificados suscribirán y fomentarán un enfoque ético en la gestión de las pruebas de software.
  • Profesión
Los probadores de software certificados aumentarán la integridad y la reputación de la profesión en coherencia con el interés público.
  • Compañeros
Los probadores de software certificados serán equitativos y apoyarán a sus compañeros fomentando la cooperación con los desarrolladores de software.
  • Nivel Individual
Los probadores de software certificados participarán en un aprendizaje a lo largo de toda la vida por lo que respecta a la práctica de su profesión y fomentarán la adopción de un enfoque ético en la práctica de su profesión.

Webgrafia: 

http://formacionticweb.blogspot.com.co/2013/03/codigo-de-etica-del-istqb-istqb-code-of.html

Psicología en el proceso de Pruebas

El éxito de las pruebas está influenciado por factores psicológicos, es importante tener objetivos claros, un balance entre testear uno mismo y las pruebas las realice alguien independiente, tener buenos canales de comunicación. 
La persepción durante el ciclo de desarrollo del software es que el desarrollador construye y el tester destruye, pero ambas actividades son constructivas, ya que si bien llevan a cabo distintos caminos, al final, ambos buscan lograr la calidad del software.
La relación entre el desarrollador y tester normalmente no es una tarea fácil debido a que:
  1. Los Tester suelen señalar los problemas con el software. Son considerados siempre como portadores  malas noticias. Los fallos durante las pruebas pueden ser percibidos como una crítica contra el producto y en contra del autor.
  2. Los desarrolladores tienden a pensar que su código es impecable. Hay un afecto emocional donde los desarrolladores no quieren encontrar defectos.
  3. Los testers son percibidos como los culpables de retrasar el proyecto buscando fallas en el sistema.

Por esto tenemos que aprender a lidiar con los defectos de forma constructiva:
  • Aceptar y esperar errores / defectos
  • Los errores son naturales – hagamos un plan para ellos
  • Centrarse en el problema a resolver – no en la búsqueda de los culpables
  • Aprender de los errores / defectos

Para poder trabajar de la mejor manera como equipo los resultados se deben comunicar de manera objetiva, no subjetiva. Si hay errores, defectos o fallos se comunican de una manera constructiva, los malos sentimientos entre los testers y los analistas, diseñadores y desarrolladores se pueden evitar. Por lo general, el caso es que alguien se molesta con la otra persona, especialmente cuando están bajo presión de tiempo.

Webgrafia: 
https://josepablosarco.wordpress.com/2011/09/28/istqb-cap-1-fundamentos-del-testing-ii/

Los siete principios generales del proceso de pruebas de software

  • Principio 1: Las pruebas revelan la presencia de bugs, no la ausencia de ellos

Probar reduce la probabilidad de que existan bugs pero nunca se puede asegurar que no quede ninguno oculto.
Además, cada tipo de pruebas que realicemos (de sistema, de integración, añadir auditorías de código…) son más efectivas para detectar un tipo de bug.
  • Principio 2: Es imposible probarlo todo

El flujo de control de un sistema software no trivial como los que acostumbramos a utilizar en el día a día contiene miles de decisiones. Estas decisiones se pueden combinar entre ellas para dar lugar a una infinidad de posibles caminos. De entrada, probar todos los caminos es un problema inabordable.
Y eso si no tenemos en cuenta la prueba de requisitos no funcionales, como el rendimiento de un sistema ante una exigente carga de usuarios, o requisitos específicos de seguridad (por ejemplo, en un sistema bancario) para protegerse de usuarios malintencionados.
Todo esto hace necesaria una estrategia de pruebas (un plan) y priorizar a partir de una gestión de riesgos de calidad y de proyecto.
  • Principio 3: Cuanto antes se comience a probar…mejor

Corregir un bug con una revisión en la fase de captura de requisitos o en una prueba unitaria tiene un coste mucho menor a lo que costará corregir este bug cuando se detecte en una prueba de sistema, o peor aún, en una prueba de aceptación por el cliente.
En demasiadas ocasiones existe una confianza excesiva en las pruebas de sistema, y todo el plan de pruebas (cuando existe) se reduce a estas. Se confía en que todos los componentes que no se probaron con una estrategia de pruebas unitarias y de integración se puedan entender bien a unos días del hito de entrega (cuando corregir un bug ya es demasiado caro, en lo que se denomina una prueba de integración “big-bang”).
Curiosamente estas malas prácticas se realizan para ahorrar costes, y finalmente el coste de la no calidad cambia las tornas: siempre se acaba pagando en unos costes de mantenimiento excesivos (con caídas de la productividad del 50% según Capers Jones).
  • Principio 4: Las aglomeración de defectos. ¡Los bugs siempre van en conjunto!

Entender esto es muy importante para plantear una buena estrategia de pruebas: los bugs suelen ir en grupo. Se concentran en determinados puntos de un sistema software, no manteniendo una distribución uniforme a lo largo del mismo.
Conclusión: si se encuentra un bug en un componente, es muy probable que haya más. Con lo que una posible estrategia sería centrarse en mejorar las pruebas de aquellos componentes para los que se han reportado un número mayor de bugs, para ser más eficaces a la hora de cazarlos en fases tempranas.
  • Principio 5: La paradoja del pesticida

La necesidad de ajustar continuamente el plan de pruebas… porque según este principio un plan de pruebas va perdiendo efectividad conforme se ejecuta sucesivas veces. Con lo que cada vez tenderá a encontrar menos bugs… ¡lo que no significa que no hayan! (vuelve a leer el primer principio). Se habla de paradoja del pesticida ya que estos matabichos usualmente sirven para un tipo de bichos, pero una vez no queda ninguno del tipo específico que mata el pesticida… ¡nadie dice que no hayan otros bichos campando a sus anchas!
  • Principio 6: Las pruebas se deben adaptar a necesidades específicas

Esto viene a enlazar con lo que he comentado antes. Si el producto se centra en el ámbito de la seguridad se deberán adaptar los casos de prueba para intentar forzar situaciones o posibles escenarios no amistosos. Si se quiere probar una intranet donde los servicios más vitales son los de imputación de horas y el de vacaciones, es lógico centrarse en estos servicios y no invertir tiempo en otros componentes infrautilizados.  Además, hay que tener en cuenta que los recursos en los proyectos son siempre escasos, con lo que en el inicio del proyecto hay que preguntarse… qué estrategia debemos seguir para encontrar y corregir lo antes posible los bugs en las funcionalidades de mayor valor para nuestros usuarios.
  • Principio 7: La falacia de la ausencia de errores
Para terminar, nos encontramos con la satisfacción del usuario y con el hecho de que los usuarios elijan tu software para resolver sus necesidades. Que se hayan corregido muchos bugs no significa que finalmente el software sea un éxito. En ocasiones hay que primar un buen time to market, para luego corregir los problemas de calidad que quedaron por el camino. Y esto si se hace de manera consciente y con una buena estrategia, a priori, no debe ser un problema.
Webgrafia: 
http://joaquinoriente.com/2013/07/20/los-siete-principios-de-las-pruebas-software/