Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2ª edición – N/A
2
A Daniel. No sabía que esa sonrisa, un beso y un abrazo pudiera ser la causa de la
felicidad infinita.
3
ÍNDICE
1. Nociones básicas de la Calidad del Software
2. La esencia del Testing de manera rápida y breve.
3. Los módulos de HP Quality Center
4. El tester no es un desarrollador
5. La importancia de las pruebas de compatibilidad en dispositivos
móviles
6. La regla del Sprint +1 y el Testing Ágil.
7. Siempre es mejor la calidad que la cantidad
8. El Testing y su importancia en nuestras vidas.
9. El flujo de los defectos
10. El Testing no es solo cosa de Testers
11. Testing exploratorio en entornos hostiles de desarrollo.
12. Monitorizar una aplicación en Microsoft Azure
13. Desarrollo y Testing ágil
14. Habilitar los registros de diagnóstico de Azure
15. Pruebas de compatibilidad en diferentes navegadores con Coded UI
16. ¿Funciona realmente el Test-driven development (TDD)?
17. Apostar por Testing, garantía de futuro.
18. La importancia del otro Testing
19. Cuando el tester es transversal
20. Pruebas de carga sobre una aplicación web en Azure
21. Cuando el tester tiene la razón.
22. La importancia de un entorno estable de Testing
23. Diferencia entre falso positivo y falso negativo.
24. Utilizar Firebug para facilitar la vida del tester
25. Mejorar nuestro trabajo con un procedimiento de Testing
26. Automatizando lo automatizable
27. Dando valor a la batería de pruebas de regresión.
28. Pruebas exploratorias, antes que nada.
29. Repartir el trabajo de una manera eficiente.
30. El error de no pensar en el Testing
31. ¿Cómo reportas tus defectos?
32. Prestando nuestros casos de prueba
33. ¿Usamos correctamente el nombre de proceso de desarrollo?
34. Introducción al Testing metódico con Microsoft Test manager.
35. Especializarse o morir.
36. Utilizando las etiquetas de TFS y Test Manager 2013
4
37. Planificando el sprint del equipo de Testing
38. La Calidad empieza en nosotros mismos
39. Introduciendo una regresión en todos los ciclos de desarrollo
40. Entrenando los sentidos con una metodología exploratoria
41. El peligro de no dimensionar bien el equipo de Testing
42. Realizando el Daily meeting con TFS
43. Cuando la cabeza no da para más.
44. Cuando la Juventud es un “problema”
45. Testing con TFS vol.1: Sacando partido al panel principal de TFS del
equipo.
46. Educar al equipo para que sea auto gestionable.
47. Ayudando a reconducir el camino de las empresas
48. Realización de una regresión en Producción
49. El equipo de trabajo en los meses de verano
50. Mi gran amigo DEV
51. El tablón como apoyo a nuestro trabajo
52. Automatizar con CodedUI
53. Pruebas de portabilidad
54. Cada día somos más exigentes
55. Pruebas en dispositivos móviles
56. Rotar en un equipo de trabajo
57. La dificultad de validar desarrollos externos
58. Pruebas en Responsive web Design
59. Pruebas con mapas de calor
60. Pruebas funcionales de SEO para web
61. Automatización con Selenium
62. Pruebas de interoperabilidad
63. Pruebas de Internacionalización de software
64. Habitualmente...
65. Nos crecen los enanos
66. Pruebas de Stress
67. Herramientas para el control de la calidad
68. El oficio de repartir felicidad
69. Split Testing
70. La importancia de las pruebas de aceptación
71. Cuatro tipos de pruebas básicas en el mundo del Testing
72. Pasos básicos para dar de alta un defecto
73. Introducción al aseguramiento de la calidad del software
74. ¿Se puede establecer un método para asegurar la calidad?
75. Los eslabones de la cadena
5
76. Implementando procesos organizativos en los proyectos
77. La teoría del Taylorismo
78. Alcatraz o como evitar las fugas de talento
79. A veces me siento como Alberto Chicote
80. Jira con Testlink y de aperitivo Sonarqube
6
1. Nociones básicas de la Calidad del Software
La calidad del software es un todo en el ciclo de vida del mismo, sin ella no tendríamos
posibilidad de llevar a cabo muchas funciones básicas que hoy vemos como normales
pagar con la tarjeta de crédito en una tienda, por ejemplo.
Para obtener una calidad excelente, hay que utilizar algún tipo de metodología, de
las que podemos destacar, “Agile” o “Cascada”. De esta manera, podemos realizar un
control uniforme y estándar de lo que vamos a probar. Estas metodologías engloban el
análisis, la construcción de las pruebas, la verificación y al final la ejecución.
Una vez que obtenemos una calidad excelente y la controlamos, tenemos que definir
unos parámetros de medición de la misma, sin esto perderemos el control.
Para definir el software que va a ser controlado hay que seleccionar una medida que
pueda ser aplicada al objeto de control, para cada software es necesario definir los
indicadores y sus magnitudes. Estas medidas pueden ser realizadas de manera manual
o con herramientas que nos ayuden a ello, como los Diagramas de Ishikawa.
Una vez que cumplamos estos requisitos comenzaremos a tener claro que es la
Calidad del software, cómo llevarla a cabo y cómo hacer que un software suba a
producción de manera óptima y sin errores.
Gestos tan sencillos como acceder a vuestro banco desde vuestro móvil, a consultar
vuestro saldo, mientras vais en el autobús y que no pase nada, es un pequeño hecho
cotidiano que tiene un excelente trabajo detrás por los profesionales que nos dedicamos
al Testing.
7
¿Te imaginas hacer una transferencia a tu cuenta de ahorro y que ese dinero jamás
llegue a su destino o que quieras acceder a tu correo electrónico y el botón para hacer
login no funcione?
Una vez que se han finalizado y aceptado, tenemos una batería de pruebas y
comenzará el verdadero Testing.
¡VAMOS A PROBAR!
Siguiendo los casos de prueba descritos, en los que nos hemos asegurado al 100% de
que están cubriendo todas las variantes y caminos que cumple esa funcionalidad,
comenzamos a realizar las pruebas en el software, completando paso a paso el caso
descrito y revisando todo en busca de errores.
8
¿Qué podemos sacar de todo esto?
Sobre todo, que el Testing es algo vital en nuestras vidas, algo que las empresas ni
pueden dejar de solicitar, de imponer y de llevar a la práctica. Es preferible recortar en
otro tipo de acciones que de gente que pruebe su software.
¿Qué os causa mejor impresión?, ¿una aplicación sin fallos, o una aplicación que nada
más entrar nos deje tirados y sin acceso? La respuesta es sencilla y todos la tenemos en
la cabeza, lo complicado es llevarla a cabo y convencer de ello.
Asegurar la Calidad de un software siempre nos dará alegrías, la garantía del buen
hacer, unas buenas opiniones y, sobre todo, que los usuarios estén contentos que, al
final, son siempre los que nos darán de comer y aportarán ese granito de arena, para
que, de boca a boca, para que el software sea conocido, esté altamente cualificado y
podamos estar orgulloso de él.
• Módulo de Requisitos:
En dicho módulo podremos realizar un seguimiento completo de los
requisitos, darlos de alta, gestionarlos, consultarlos y tener un repositorio
donde guardarlos y exportarlos a diferentes formatos.
• Módulo de Pruebas:
En este módulo nos encontramos tres submódulos, la de los recursos
de pruebas, la de los planes de pruebas y la del laboratorio de pruebas.
9
• Planes de pruebas:
Aquí realizaremos los planes de prueba que utilizaremos más
adelante, paso por paso, diseñándolos desde cero y adjuntándolos a uno
o varios de los requisitos que cubran. En esta sección también podremos
aplicar las configuraciones de pruebas en las cuales seleccionaremos o
escribiremos para que pruebas en particular ejecutaremos ese mismo
caso. La sección se divide en una serie de planes de prueba, con sus
respectivos casos de prueba y que dentro tendrán los pasos de prueba
necesarios.
• Módulo de Defectos:
En este módulo daremos de alta los defectos encontrados en cada
ejecución (también se pueden dar de alta mientras estamos ejecutando).
También podremos hacer un seguimiento completo de los defectos, ver
los que ha abierto el equipo, en qué estado están o a quien están
asignados. Un complejo módulo que es el corazón central del trabajo de
Testing y que es donde, realmente trabaja todo el mundo y donde se
guarda el principal núcleo de información de cómo se está comportando
el software.
4. El tester no es un desarrollador
Libros como "How Google tests software" proponen que el Tester puro desaparezca,
que el tester sea un desarrollador que se preocupe por la Calidad, una afirmación en la
que no puedo estar más en desacuerdo.
Como tester puro que soy, tengo que decir que no estamos en peligro de extinción,
ni mucho menos, solo estamos pasando un periodo en el que no están las cosas muy
claras. Hay muchas tendencias innovadoras que, realmente, no están calando en ningún
sitio, defensores y detractores ponen las cartas sobre la mesa y se encierran en sus
metodologías y en sus ideas y no dejan escuchar ni abrir sus mentes. Las cosas son así
porque están escritas en la biblia de la metodología y no hay nadie que me saque de esa
idea, no escucho ni dejo escuchar.
10
en que empresa o centro de trabajo se está usando una metodología cerrada, que
cumpla 100% el libro y que funcione, os puedo dar una pista, en una y está en Japón, la
única en todo el mundo.
Una vez explicado este concepto, el cual dedicaré más tiempo, más adelante,
volvamos a lo que nos ataña, si el tester tiene que ser desarrollador o no. La respuesta
es clara: NO.
Un tester no tiene que ser desarrollador, primero, porque para ser bueno en algo no
hay que ser de todo. Pongo un ejemplo muy claro y que todos vamos a entender, el
mejor cardiólogo del mundo no sabe porque le duele el oído a un paciente, puede
intuirlo, pero para eso hay un experto otorrino que le dirá que le pasa. Es exactamente
el mismo caso, un tester ve que algo está fallando, puede intuir por qué, pero para eso
está el desarrollador que lo arreglará y sabe exactamente donde tocar. Más sencillo, un
desarrollador hace una nueva funcionalidad, la prueba, pero como es experto en
desarrollar y no en hacer pruebas, siempre saldrá algo que dejará subir a producción y
así afectar al usuario final.
Bien claro lo dice el refrán, que parece que a muchos se le ha olvidado: “aprendiz de
todo, maestro de nada”.
Los pasos que hay que tomar son muy claros y están definidos, solamente hay que
saber leer las pistas que nos van dando y ponerlas en práctica. Los tester tenemos que
tener un conocimiento de lenguajes de programación, básico, para que nos de pistas de
que falla y ser más exacto a la hora de dar de alta errores y los programadores no tienen
que ser Tester, solamente tienen que meterse en la cabeza que hay que programar con
más calidad, con más calma y sobre todo tratando de evitar errores tontos que es en
verdad donde se va mucho tiempo de las personas que están probando sus desarrollos.
Mi opinión es clara, ni tienen que desaparecer los Tester puros ni tienen que
desaparecer los desarrolladores puros, solamente tienen que unir sus caminos,
balancearse. Claro ejemplo de lo que no está pasando es la charla de Alberto Savoia en
el GTAC del 2011, si señoras y señores, en el 2011, en el que dejaba claro que el Tester
había muerto, pues…estamos a 2013 y muchos de nosotros seguimos siendo Tester
puros y duros y viviendo de ello. Las figuras del tester y del desarrollador no tienen que
ser la misma persona, simplemente, tienen que ser dos y ser un equipo, ayudarse,
apoyarse y sobretodo confiar el uno en el otro, uno tendrá grandes conocimientos de
lenguajes de programación y el otro tendrá grandes conocimientos para realizar las
pruebas pertinentes, de esta manera serán cada uno maestros en su terreno. Esto,
damas y caballeros, SI es el futuro.
11
5. La importancia de las pruebas de compatibilidad en dispositivos
móviles
Los dispositivos móviles están ganando mucho terreno en los procesos del
aseguramiento de la Calidad del software. La creciente demanda de estos por parte de
los usuarios, ha logrado que las empresas se preocupen cada día más de tener sus
páginas webs y productos disponibles para acceder a través de cualquier teléfono móvil
o Tablet.
Las pruebas de compatibilidad en dispositivos móviles tienen que ser muy exigentes,
al igual que los usuarios que utilizan estos canales. Tienen que ser precisas, pacientes y
muy detalladas, sobre todo para asegurar la calidad en tres puntos: la rapidez de carga,
la precisión de los datos consultados y la sencillez de uso del software.
A día de hoy, cualquier tipo de error, de caída de datos, de fallo en la consulta, hará
que el usuario elija otro software de la competencia sin ni siquiera dar una segunda
oportunidad.
La primera idea que hay que tener es que no se puede probar la aplicación en todos
los dispositivos móviles del mercado, sobre todo con la gran afluencia que hay de clones
que vienen de china que dificulta más, si se puede, esta tarea.
Para solucionar este problema, hay que hacer un estudio de mercado, cuales son los
dispositivos que más se utilizan, los que más compra la gente y en que dispositivos se
hacen los principales accesos a internet en todo el mundo, de esta manera iremos
descartando y filtrando poco a poco este amplio rango.
Una vez que tengamos estos datos en las manos, tendremos que filtrar por S.O. y cual
o cuales son los más utilizados, esto nos acotará más el rango, si seleccionamos los 3 o
4 primeros de la lista.
12
tendremos demasiado problema ya que los usuarios de este tipo de dispositivos tienen
una tasa muy elevada de actualización y prácticamente el 95% de ellos tienen las últimas
versiones de iOS.
El siguiente paso es crear una batería completa de casos de prueba que cubra al 100%
la compatibilidad de la interfaz del software en todos los dispositivos seleccionados.
Estos casos tienen que cubrir las diferentes variantes que se obtendrán de los mismos,
como pantallas, resoluciones, comportamientos táctiles, fluidez, procesadores, tiempos
de carga o compatibilidad con el S.O.
Con este tipo de programas podemos realizar los casos de prueba, asociándolos a
configuraciones de prueba por cada dispositivo y así obtener baterías de prueba
diferenciadas por cada uno de ellos. Así evitaremos la duplicidad de datos, de pruebas y
tener un mayor control de que falla o que funciona concretamente en cada móvil o
tablet.
Las Pruebas Ágiles involucran a todos los miembros del equipo y utilizan la
experiencia del tester para garantizar la entrega del software con el valor de negocio
deseado por el cliente. Esta entrega se realiza a un ritmo sostenible y con entregas
frecuentes cada dos semanas, cumpliendo las principales reglas de esta metodología.
Los tester aportan su experiencia en crear casos del comportamiento deseado que
quiere el cliente para su software y colaboran con el equipo de desarrollo para convertir
estos “casos” en especificaciones ejecutables (y si pudiera ser automáticas) que guíen al
equipo en la codificación.
Como siempre, las pruebas y el código se realizan de forma que al final del sprint
13
tenga el valor suficiente para subirlo a producción.
Lo que sí que hay que tener muy claro a la hora de realizar Agile Testing es que:
AUTOMATIZAR TODO ES IMPOSIBLE.
Esto, no quiere decir que solo tengamos que automatizar estos puntos, pero sí que
es una manera de descartar y saber que es lo más importante y en caso de tener un
presupuesto ajustado, centrarnos en ello.
Cuando tengamos claro que partes vamos a automatizar, una idea muy buena es la
regla del Sprint +1, en la que una tarea del Backlog será la creación de scripts de pruebas
de regresión automatizados de las funcionalidades que se hayan implantado en el sprint
anterior.
La regla del Sprint +1 puede chocar con otro tipo de automatizaciones en proyectos
Agile, pero es una muy buena manera de mantener la aplicación con unas pruebas de
regresión automáticas y que el esfuerzo que se podría “perder” en hacer esas pruebas
de forma manual se lleve a la realización de otras pruebas u otros asuntos al comienzo
del sprint.
Estos pasos y reglas nos ayudarán a que el Testing en una metodología Agile se
convierta en un añadido en cada sprint y no un trabajo aparte y totalmente desintegrado
del mismo.
En mi trabajo esta frase es una máxima que debería de llevarse a cabo siempre. Todas
las empresas lo tendrían que tener claro, sea cual sea su función o su terreno.
¿Qué supone algo así? Que el tiempo de desarrollo se ha acortado porque el producto
está en producción, pero el tiempo de “reparaciones” de ese desarrollo se puede alargar
muchísimo y al final es un coste de dinero que se suma al mantenimiento que hay que
realizar y a los evolutivos que tengamos que ir haciendo. Además, a esto, se suma el
descontento de los usuarios que utilizan este software.
Si cambiamos las tornas y vamos por el camino correcto, sacando pequeñas piezas
poco a poco y que cuenten con una gran calidad, tendremos un desarrollo
14
previsiblemente más largo pero que estará en producción en buenas condiciones y a
esto sumamos que los usuarios estén contentos y que podamos tener más usuarios
potenciales por la técnica del boca a boca.
Esta máxima, como ya dije al principio se puede aplicar a cada situación en la vida,
tanto personal como profesional y cuando piensas que la cantidad está por encima de
la calidad, se tienen el 99% de papeletas para fallar.
El Testing, por mucho que cueste creerlo, es la piedra angular de absolutamente todo
y con todo me refiero a TODO.
¿Te imaginas encender la vitrocerámica sin que hubiera pasado el control de calidad?
Me apuesto lo que queráis a que el 99% de vosotros ni os acercabais al botón de
encendido. Como este, se pueden poner infinidad de ejemplos y más concretamente, a
lo que yo me dedico, la calidad del software.
Un software sin testear es una bomba de relojería, ni más ni menos. Una bomba que
nos puede estallar en cualquier momento y que nos puede ocasionar muchísimos
problemas, sobre todo económicos.
Existen varias reglas que no deberíamos saltarnos en los modelos actuales de trabajo:
15
• Se inflexible a la hora de realizar tus pruebas, no dejes de hacer lo básico: lectura
de análisis, casos de prueba, pruebas exploratorias, reporte de defectos,
retesting de defectos arreglados, pasar los casos de prueba, reportar y retestear
los bugs y validar.
No creas que no hay más reglas básicas y que alguna de las anteriores no sea válida
para tu entorno de trabajo, eso es evidente, en cada sitio tienen diferentes maneras de
hacer las cosas y nos tenemos que amoldar a todas ellas, pero siempre hay que ser firme
con las convicciones de cada uno y sobre todo ponerlas en práctica.
Al fin y al cabo, el Testing es la parte más importante del software y todo el mundo
tiene que apostar por él en sus empresas, acabarán ahorrando tiempo y dinero.
A partir de esos estados se pueden implementar todos los necesarios para nuestro
proyecto y nuestras necesidades, por ejemplo, si solo tenemos un tester y un equipo de
desarrollo, con este flujo estaríamos cubiertos, pero si hacemos también pruebas de
validación por un equipo de UAT, se nos queda corto y deberíamos de introducir más
estados, como el de “validado UAT”, “Aceptado QA” o “disponible UAT”, por ejemplo.
16
personas que forman tu equipo o equipos de trabajo no se acuerden de todos y acabe
siendo un cuello de botella, por ello hay que ser lo más óptimo posible, buscar la
sencillez sin perder ningún paso.
Si tu flujo es óptimo, sin duda ganaras tiempo a la hora de tener organizada tu lista
de defectos y el correspondiente Backlog, y de una sentada podrás ver como se está
desarrollando su finalización y si la calidad está mejorando. Si se ven menos “abiertos”
eso es que tu software crea menos fallos, si hay cantidad de abiertos, pero son iguales
o menores que los “finalizados”, eso quiere decir que tu equipo está generando muchos
bugs, pero son muy rápidos corrigiendo. Cada uno puede sacar sus conclusiones y
estadísticas, basándose en los estados.
Un flujo de defectos se tiene que crear entre todos, nadie puede imponerlo y cada
jefe de equipo tiene que aportar los estados en los que se sentirán cómodos. Por lo
tanto, mi recomendación es que se junten los jefes de equipo de desarrollo, de QA, de
UAT y si hubiera más, cada cabeza visible del mismo.
FLUJO 1:
• NUEVO: este estado (también puede ser borrador) podría utilizarse para que
el tester edite los datos del mismo antes de pasarlo al siguiente estado donde
se bloquearía la edición.
• ABIERTO: El tester abre el bug oficialmente y lo deja en el Backlog para
pasarlo al equipo de desarrollo o si hay una persona responsable del
producto, lo ponga el en el mismo.
• ASIGNADO: El defecto está asignado al desarrollador y es consciente de ello,
lo tiene en su Backlog personal y empezará a solucionarlo en breve.
• EN DESARROLLO: El defecto se está solucionando por parte del desarrollador.
• TERMINADO DESARROLLO: El defecto está preparado para probarlo, está
asignado al tester.
• VALIDADO QA: El defecto ya ha sido validado por QA y puede probarlo UAT.
• VALIDADO UAT: El defecto está validado por QA y listo para cerrarse.
• FINALIZADO O CERRADO: El defecto está solucionado y se cierra para dejarlo
a tipo de historial.
FLUJO 2:
17
FLUJO 3:
Como veis, cada uno de los flujos es válido para diferentes situaciones y proyectos,
dependiendo de las personas que componen los equipos y de la cantidad de pasos que
queramos aportar. Lo fundamental es que en estos flujos exista la figura del
desarrollador y del tester.
Desde mi punto de vista, depende del proyecto y como tengan en cuenta la Calidad
en el mismo, pero el Tester es la única persona que debería de cerrar un defecto, al fin
y al cabo, nosotros somos los que nos dedicamos a ello.
La pieza angular de la calidad del proyecto es el tester, pero ahora, desde desarrollo,
se están implementado pruebas unitarias y de integración que hacen ellos mismos,
probando sus desarrollos y evitando errores graves, como un error 500 o similar.
Las pruebas unitarias son una forma de probar el funcionamiento idóneo del código
desarrollado y asegurar que los módulos funcionen separadamente. Después, las
pruebas de integración, tienen la capacidad de asegurar el funcionamiento del sistema.
Trabajando con un buen flujo de QA, la idea es que el tester, al realizar los casos de
prueba puedan “proporcionar” estos datos a los desarrolladores y así ayudarles a
implementar este tipo de pruebas de desarrollo, así llegará más limpio el código al
departamento de QA y la validación podrá ser más afable y menos traumática en el caso
de que existan defectos.
La idea de las pruebas unitarias es que simplifican la integración con los demás
módulos, ya que se encontrarán errores tempranos y se podrán solucionar antes de
realizar la misma.
18
Al igual que las pruebas de integración que solo sirven para comprobar que ese
código de ese módulo específico, funcione correctamente en conjunto con los demás
módulos que agrupan la aplicación.
Una vez que se han pasado las pruebas unitarias y las pruebas de integración, el tester
comenzará con sus pruebas de sistemas que serán mucho más “amigables”, ya que los
errores graves y pantallazos de error se han detectado en esta fase previa y ahorrará
tiempo para dedicarse a que la aplicación tenga la calidad que le corresponde.
Como siempre hemos hablado, la relación entre tester y desarrollador cada día es
más cercana y con este tipo de pruebas, más aún. El tester comparte sus conocimientos
y el desarrollador los recoge para que su código sea mucho mejor y de una mayor
calidad, ayudándose mutuamente y demostrando que la relación del gato y del ratón
cada vez está más alejada de la realidad.
Estas pruebas nos ayudarán, entre otras cosas, a detectar errores rápidamente, a
saber, cómo funciona algún tipo de módulo de una aplicación en concreto o a ayudar a
la gente de desarrollo a que su desarrollo contenga menos errores.
El Testing exploratorio no es más que una libre interpretación de las pruebas de cara
al tester, que según sus conocimientos y su punto de vista realizará pruebas sin ceñirse
a ningún caso, organizándolos pasos a su manera y comprendiendo y aprendiendo el
verdadero funcionamiento de un módulo o aplicación a probar.
Con unos test exploratorios podremos detectar que falla y podemos volver a probar
rápidamente esa pantalla y ver si el defecto que habíamos encontrado ya no está
sucediendo.
¿Qué pautas se pueden tomar para hacer Testing exploratorio en un entorno hostil?
Una de las pautas más sencillas y recurrentes es definir unos rangos de tiempo que
19
se cuadren, si es posible, a las subidas de ese entorno, en el caso de que tengamos
subidas cada dos horas, adaptar ese Testing exploratorio a ese tiempo, así con la nueva
subida podremos comprobar que lo que fallaba, sigue fallando o ya está solucionado.
Una de las que mejor funciona es Test Manager, que tiene un módulo llamado
"exploratory Testing" que nos ayuda a realizar este tipo de pruebas. Con esta
herramienta, pulsando al "play" podremos grabar vídeo, hacer un pantallazo final, crear
pasos de prueba automáticamente en base a los click en pantalla y de esta manera crear
un caso de prueba que se puede automatizar fácilmente.
Otra herramienta que nos puede ayudar es Test Studio, más barato que el anterior y
también nos puede servir para documentar todas nuestras pruebas.
• Azure Services Management REST API: Azure nos proporciona un API que se
utiliza para recuperar información a través de consola. Esta información es la
misma que se puede obtener desde el Management Portal, pero de esta manera,
20
una app de terceros podría recopilar información y mostrarla en su propio portal,
incluso recuperarla y ponerla a disposición de los usuarios.
21
Este conocimiento es usado para realizar una guía de codificación, pruebas unitarias
y de integración o un historial completo de casos de prueba que permitan, de un vistazo,
tener una idea clara de la funcionalidad de una pantalla.
El Testing ágil abarca todo tipo de pruebas, las realizadas por los tester y las realizadas
por los desarrolladores y se tienen que adaptar a los principios básicos: colaboración,
flexibilidad, simplicidad, transparencia y capacidad de respuesta.
El principio de estas pruebas comenzaría con las pruebas unitarias, que realizará el
desarrollador apoyándose en los casos de prueba que ha escrito previamente el tester,
probando el funcionamiento básico. Tras esas pruebas, una vez que se integra el módulo
con el resto, se realizan las pruebas de integración, comprobando el correcto
funcionamiento de ese módulo y el resto del bloque ya desplegado. Estas pruebas
estarían en el tejado del equipo de desarrollo, siempre apoyado por el tester. En la parte
del tester están las siguientes pruebas, que podrán ser exploratorias al principio y
después las de sistema que pasarán los casos de prueba. Una vez que se realizan estas
pruebas, se realizaran las pruebas de aceptación y las de regresión.
El principio fundamental del desarrollo ágil es que desarrolladores y tester son vistos
de la misma manera, cosa que no estoy de acuerdo, como ya expliqué anteriormente en
otro post. Lo que sí que estoy de acuerdo es que las líneas de trabajo no pueden ser dos,
sino que se unen.
22
Aunque el tester no sea un desarrollador y el desarrollador no sea un tester, sí que
hay que intentar pensar como ellos. Un tester que piense como un desarrollador podrá
ayudarse de esto para encontrar errores que antes no podría detectar y un desarrollador
que piense como un tester podrá depurar su código y tener mejor calidad. Esto no quiere
decir que ambos ejerzan un trabajo que no es el suyo, sino que amplíen su forma de
pensar, nada más.
Esta manera de trabajar abre nuevos caminos y permite que el trabajo no sea
monótono y aburrido, ya que, por un momento, puedes pensar con un rol que no es el
tuyo e intentar indagar por qué se ha realizado una funcionalidad de esa manera o se
ha codificado para realizar una función específica.
23
“System.Diagnostics.Trace”.
Cuando trabajamos con Azure (u otro sistema en la nube), es muy importante tener
toda la información posible por si existiese algún fallo, ya que si no podemos quedarnos
en blanco y ver que nuestra aplicación está fallando sin saber los motivos reales.
Activando esta herramienta, que nos proporciona el sistema en la nube de Microsoft,
podemos trazar todo tipo de errores, fallos o logs y ver exactamente cuál es nuestro
problema.
Las herramientas que nos da Microsoft con su servicio en la nube son muy potentes,
pero siempre debemos de trabajar con las capacidades y presupuesto que tengamos,
sobre todo a nivel de almacenamiento.
La versión óptima para que estas configuraciones con Selenium u otros navegadores
es Visual Studio Ultimate con Visual Studio 2012 Update 4, si no, algunas de las funciones
acabarán fallando, ya que está manera de trabajar es relativamente nueva.
Microsoft ha dado un gran paso dejando que otros navegadores y herramientas sean
compatibles con su tecnología, facilitando a los tester que puedan ampliar el abanico de
pruebas y que cada día sea más fácil utilizar Coded UI, pudiendo dejar de lado otras
herramientas de automatización que son más complejas que esta.
Si algún día, Microsoft deja que Coded UI y su Suite de Pruebas entre en otras
versiones de Visual Studio que no sean la Ultimate, habrá dado el paso definitivo para
que muchas empresas utilicen esta tecnología para automatizar las pruebas de sus
aplicaciones.
TDD es una práctica de programación que se basa en escribir las pruebas primero y
después realizar el desarrollo.
Para realizar esta práctica se suelen utilizar pruebas unitarias y es tan sencillo como
que, al lanzar la prueba, esta falla. Tras ese fallo, se implementa el código para verificar
que esta prueba funciona perfectamente.
La idea de esta técnica es que el desarrollador pueda hacer un código limpio y que,
25
cuando todas las pruebas estén cubiertas y en OK, el software garantiza que se han
establecido todos los requisitos solicitados. Una vez que las pruebas están OK habrá que
refactorizar para eliminar código sobrante o duplicado.
Al parecer una de las principales ventajas es que no se necesitaría la utilización de
debugger y que, al avanzar en pequeños pasos, permite al programador centrarse en
tareas muy concretas y actuales para acabarla más satisfactoriamente. Otra ventaja es
que el código ya está cubierto desde el inicio por pruebas.
El programador tendrá un código limpio, facilidad para realizarlo y una ayuda extra
que le será muy útil, pero también basará el desarrollo en esas pruebas y quizá habrá
algo que se escapa, que surge más adelante (nunca jamás desde el inicio acaban saliendo
absolutamente todos los caminos posibles en una pantalla, somos humanos y siempre
hay que añadir algún caso de prueba posterior) y que puede romper la aplicación en
cualquier momento, personalmente yo pienso que el desarrollo debe decidir las pruebas
no al contrario, como bien explica la frase: “como puedo hacerlo más claro, no como
puedo hacerlo más testeable“. Al fin y al cabo, el TDD produce un sobre Testing y es
preferible, desde mi punto de vista, automatizar las pruebas de regresión.
Una ventaja del TDD es la seguridad que aporta, la cobertura total del código y que
todo está absolutamente probado, por lo tanto, todos los desarrollos que utilicen esta
técnica serán mucho más fiables y casi al 100% no fallarán.
Yo pienso que para un buen uso del TDD el desarrollador tiene que confiar
ciegamente en las pruebas, absolutamente tanto como para hacer una subida a
producción dependiendo exclusivamente del correcto resultado de estos test.
El TDD necesita un tiempo de desarrollo mayor, esto afectará a los entregables, a los
usuarios, a los directivos que quieren ver resultados rápidamente…y quizá se realizaron
infinidad de test innecesarios que después desaparecerán al refactorizar el código, al fin
y al cabo, los test funcionales son los más importantes y los que deben de hacer que un
desarrollo pase o no a producción.
26
Creo que la técnica de TDD debería de utilizarse en un pequeño reducto dentro de
una metodología ágil, nunca extendiendo todo el desarrollo a esta, el tester debería de
crear una batería de pruebas antes del desarrollo, el desarrollador basar sus pruebas
unitarias a estos casos de prueba y después basar el desarrollo a todo lo demás,
pasando, una vez finalizado, toda la batería de pruebas y completando el ciclo completo
de Testing habitual en la metodología en la que se base el proyecto. De esta manera el
desarrollador generará un código más limpio y a su vez será validado como siempre.
¿Por qué este cambio de tendencia? Muy fácil: el usuario cada día se hace más
especializado.
Ahora uno sabe exactamente lo que quiere y más si paga por ello y si ofrecemos un
mal producto, la opinión negativa saldrá hasta de debajo de las piedras. Buena "culpa"
de ello tienen las redes sociales y la repercusión que damos ahora mismo a estas,
pudiendo "destrozar" un producto en cuestión de horas.
Las empresas están cada vez más preocupadas de las redes sociales, de las opiniones,
del mundo digital en general y se aseguran de que lo que lanzan al mercado funciona
exactamente como debería, sin dejar cabos sueltos y la persona que se encarga de ese
correcto funcionamiento es, por supuesto, el tester.
La figura del tester está tomando una importancia increíble y es rara la empresa o
equipo de desarrollo donde no se encuentre y forme parte del ciclo de vida de la
aplicación.
Una empresa que trabaja de esta manera se está asegurando el éxito, obteniendo
además la satisfacción de que su aplicación es de una muy buena calidad, teniendo
opiniones muy positivas, haciendo que el boca a boca le garantice más ventas y por lo
tanto unos mayores ingresos.
La figura del tester, a pesar de que hace unos años no se consideraba tan importante,
es a día de hoy una profesión muy demandada, pudiendo ser decisiva en la vida de una
aplicación lanzada al mercado y que esta sea más o menos larga. Si el tester es
inexistente, la aplicación fracasará rotundamente y si hay una buena planificación de
Testing, la aplicación será de las mejores valoradas del mercado (siempre y cuando la
27
aplicación tenga una funcionalidad que atraiga a los usuarios. Los tester somos buenos,
pero no hacemos milagros).
En mi opinión, el Testing es garantía de éxito para la empresa y para los proyectos
que aborde. Si de verdad queremos que la repercusión empresarial sea importante, o
sea hace un buen conjunto de pruebas o lamentablemente, el fracaso está garantizado.
Dentro del Testing hay diferentes ramas o variantes, digamos que, especialidades.
Existen tester especialistas en pruebas manuales, automáticas, de seguridad, stress o
carga...por ejemplo, por lo tanto, un determinado rol de Testing no tiene por qué saber
realizar un tipo de pruebas.
Un buen proyecto en el que se quiera garantizar la calidad del mismo tiene que tener
como mínimo una serie de pruebas que ya hemos visto en muchas ocasiones, pero,
además, deberían de realizarse unas buenas pruebas de seguridad y unas pruebas de
stress y de carga.
A día de hoy, muchos proyectos están concienciados con el Testing, pero aún son
reticentes a la seguridad, por ejemplo, y en muchas ocasiones, leyendo las noticias, nos
encontramos cada día con referencias a este tipo de problemas, muchos tendrán en
mente las fotos de famosas robadas o las listas de datos de clientes de PSN de Sony, por
poner algún ejemplo cercano.
Nosotros, los que trabajamos en este mundo, tenemos que hacer fuerza para que,
cada vez más, tengamos este tipo de pruebas en nuestros proyectos, que cada día
podamos cubrirnos más las espaldas cuando pueda existir algún problema de este tipo
y que nuestro trabajo luzca como debe.
28
activo, buscarán una alternativa y posiblemente perdamos un gran número de
clientes...y en el caso de vulnerabilidad de datos...no quiero ni hablar...casi seguro que
mucha parte de usuarios ya no accederán a nuestros servicios jamás. La empresa
perderá dinero y nuestra credibilidad bajará considerablemente.
Al final, personalmente, creo que no merece la pena que esto pase y siempre debería
de guardarse parte del presupuesto, para realizar, puntualmente, este tipo de pruebas,
cubrirnos en salud y, sobre todo, lo que siempre buscamos, la excelencia y la satisfacción
total de los usuarios finales.
Cuando tenemos un proyecto en el que hay varios equipos y en cada equipo tenemos
un tester (o varios) al final esa persona será especialista en exactamente lo que se dedica
ese equipo y dejará un poco de lado el resto.
Para evitar esto hay varias medidas que podemos tomar, una de ellas, que exista un
departamento de Testing en el que un grupo trabaje mano a mano indistintamente de
los equipos de desarrollo, cuando llega algo para probar, lo podrá coger cualquiera de
ellos.
Este método, desde mi punto de vista tiene un, pero, que la gente que pruebe será
"menos" especialista en una cierta zona de la aplicación y puede no tener toda la
información.
Otra medida que se puede tomar es que cada cierto tiempo, el tester se mueva de
equipo, hacer rotaciones, así no se cogerán malos hábitos, costumbres y se podrán tocar
todos los palos para probar. El, pero de esta "técnica" es la falta de "confianza" con el
equipo, el trastorno de estar cambiando contantemente de posición y el "jet lag" que
suponen estos cambios hasta que se acostumbra al tester a lo nuevo.
Cada equipo tiene su propio tester, que probará y será un experto en esa zona,
teniendo conocimientos de las otras zonas, pero mínimo. Como apoyo para estos tester,
existirá un tester transversal (o varios) que irán de equipo en equipo dependiendo de
las necesidades y de la carga de trabajo, apoyando a los tester "fijos" y ayudándoles en
su trabajo.
29
De esta manera podremos tener un trabajo constante en todos los equipos de
desarrollo y se podrán apoyar unos a otros para que, entre otras cosas, no existan
diferencias de horarios, que unos equipos tengan menos trabajo y otros estén saturados
y no estén apoyados entre sí.
Al final, cada proyecto tendrá su propia filosofía y sus propias ideas para hacer Testing
de la mejor manera, pero creo que estas ideas se pueden aplicar siempre a
prácticamente todos nuestros grupos de trabajo.
Las pruebas de carga son el tipo de pruebas de rendimiento más sencillas. Estas se
realizan para comprobar cómo se comporta una aplicación en determinadas situaciones,
como una cantidad alta de peticiones de algún tipo. La mayoría de las veces tienden a
"simular" una serie de usuarios concurrentes que nos darán el comportamiento real de
nuestra aplicación una vez está puesta en producción.
30
parametrizar en base a nuestras necesidades cada paso o prueba.
Una vez que tengamos nuestras pruebas configuradas, "grabadas" y parametrizadas,
tendremos que instalar unos "test agent" y un "test controller" que desembocaran en
un repositorio de resultados en el que poder consultar y recopilar todos los datos que
vamos generando.
Una vez que la prueba funcione y pase correctamente podremos ver con detalle el
informe de resultados y las gráficas que nos darán los datos exactos del funcionamiento
de nuestra aplicación:
Las pruebas de carga son una ayuda muy importante para determinar cómo se
comportará nuestra aplicación en la red con una serie de usuarios y sobre todo detectar
prematuramente un posible error de saturación que conlleve una caída del sistema que
nos pueda causar graves daños económicos y de imagen de cara al cliente final.
La necesidad del Testing viene dada por la satisfacción del cliente, si se quiere que el
cliente final este feliz y no tengamos problema, hay que hacer probar de manera
organizada y bien estructurada, si no le damos importancia a las pruebas, al final el
cliente final estará descontento y en muchos casos incluso peligrará el proyecto
pudiendo llegar a ser cancelado.
31
Seamos consecuentes y no infravaloremos su opinión, nos evitará muchos
quebraderos de cabeza.
El tester no siempre tendrá razón, pero jamás intentará perjudicar una subida o un
desarrollo. En la mayoría de los casos, ayudará a minimizar el impacto negativo y sobre
todo a que el proyecto tenga una calidad mucho mejor.
Una de las peores cosas que nos puede suceder (aparte de no poder acceder al
entorno) es que nos encontremos con falsos negativos o falsos positivos. Un falso
negativo es en realidad un defecto que no es defecto en sí, un defecto que nos sucede
por la inestabilidad del entorno, por incoherencia de datos o porque una subida del
equipo de desarrollo pueda haber estropeado el entorno y nos frene totalmente la
realización de pruebas. Un falso positivo nos puede ocurrir cuando creemos que está OK
y en realidad no es así, dándonos bastantes quebraderos de cabeza.
Otro grave problema de los falsos negativos o positivos es que, si llegamos a abrir
esos defectos y luego no ocurren, nos los devolverán los desarrolladores y perderemos
bastante tiempo en reprobar.
32
En muchos casos el entorno de pruebas es también un entorno de desarrollo, cosa
que jamás debería de suceder, ya que si por un casual, un check-in incorrecto es
propagado a este entorno y este se cae o deja de funcionar, las pruebas se verán puestas
en riesgo, además de que se necesitará una validación continua de todas las pantallas
ya que no sabremos exactamente qué es lo que se toca y lo que no.
Lo ideal para un entorno de Testing es tener versiones cerradas cada cierto tiempo.
Pongamos un ejemplo trabajando con PBI’s:
• Una vez que Testing da el OK a esa versión, esta se sube al siguiente entorno o a
Producción. La validación finaliza y se puede garantizar que esa versión en
concreto está OK y es 100% funcional.
• Una vez que Testing ha dado el visto bueno, avisará al equipo de desarrollo para
que suba esa nueva versión para poder probarla en el entorno de Testing.
Mientras tanto desarrollo podrá seguir haciendo check-in sin problema en su
entorno y sin interferir en los demás entornos.
Trabajando con versiones cerradas y atómicas, hacemos que las subidas puedan estar
mucho más controladas y podemos acotar que tengamos que probar grandes
desarrollos en poco tiempo, más vale probar menos PBI’s y asegurarnos que probar más
y que el equipo de Testing se desborde.
"es un error por el cual un software de antivirus informa que un archivo o área de
sistema está infectada, cuando en realidad el objeto está limpio de virus; Esto también
ocurre en los navegadores de Internet cuando se descarga un archivo."
33
La definición de falso negativo para informática es la siguiente:
"es un error por el cual el software antivirus falla en detectar un archivo o área del
sistema que está realmente infectada."
Estas definiciones se basan en los antivirus, pero si hablamos de pruebas, creo que el
resultado es prácticamente igual.
Este tipo de fallos que nos pueden ocurrir al realizar nuestras pruebas desvirtúan
totalmente los resultados y pueden hacer que la calidad del proyecto descienda
radicalmente. Es uno de los problemas más graves a los que nos podemos enfrentar los
que nos dedicamos al Testing.
No hay demasiadas maneras de evitar estos problemas, pero os voy a dar dos
soluciones que sí que pueden disminuir el riesgo de que ocurran.
Para los falsos positivos, tendremos que tener un entorno totalmente hermético, que
sepamos que hasta que nosotros no demos la orden de subir algo o de que la versión
cambie, tengamos la certeza de que estamos probando siempre con una BBDD correcta
y con nuestros datos bloqueados. También que sepamos que la versión que tenemos
desplegada en nuestro entorno no ha cambiado ni cambiará hasta que la demos el visto
bueno.
Para los falsos negativos, una de las pocas soluciones que os puedo dar es tener
preparados de antemano unos datos coherentes, correctos y sólidos, además de unos
casos de prueba estudiados, bien organizados y sobre todo estructurados para que
nuestras pruebas puedan ser todo lo buenas que deben de ser. Si tenemos un módulo
bien cubierto, con todas las casuísticas posibles contempladas y sin dejar ningún
agujero, casi al 100% estamos salvándonos de estos falsos negativos tan impactantes en
el proyecto.
Seguro que se os ocurren mil maneras más de evitar estos falsos positivos y
negativos, al fin y al cabo, el día a día es el que marca nuestras soluciones.
34
24. Utilizar Firebug para facilitar la vida del tester
Una gran ayuda para el tester y para detectar errores "ocultos" es el uso de la consola.
En la mayoría de los casos suelo probar en Mozilla Firefox ya que habitualmente el
equipo de desarrollo utiliza Chrome por las herramientas del desarrollador que son
mucho más extensas que en otros navegadores y les facilitan la vida muchísimo e
Internet Explorer lo dejo para las pruebas automáticas en CodedUI por su
compatibilidad con Visual Studio.
Con Firebug podemos ver cada llamada de manera ordenada e ir depurándolas por
si existiese algún error:
En el caso de que exista un error, quedará registrado en color rojo y podemos saber
al instante que es lo que ocurre y poder abrir el defecto con toda la información posible
para el desarrollador.
En este caso está fallando una referencia a un evento al pulsar un botón en una
aplicación y nos da este error en la consola de Firebug, si abrimos el defecto con esta
información, el desarrollador sabrá exactamente el problema y le será más fácil ir al
grano para solucionarlo.
Además de tener una consola podemos depurar código y algo muy importante es
poder ver las llamadas y el tiempo que tardan en realizarse:
Como vemos en el pantallazo podemos depurar todas las llamadas que se realizan y
el tiempo que tardan en ejecutarse, pudiendo reportar errores sencillos de rendimiento
o saber exactamente porque una página tarda en cargar más de la cuenta.
Si estáis probando una aplicación web utilizar la consola para facilitaros la vida y si
encima esa aplicación lleva JavaScript con mucha más razón, encontrareis una manera
sencilla de detectar errores y no volveros locos para ver porqué suceden ciertas cosas.
35
se ha logrado y lo que podemos aportar nosotros, mejorando el trabajo o ayudando para
que sea mejor.
Este tipo de documentos se pueden crear a nivel personal para ver a que nos
enfrentamos, ya que, habitualmente, donde entremos, tendremos a un responsable
directo que se encargará de velar por estos problemas, aunque en algunos casos,
siempre se le puede presentar para ayudarle y mejorar la vida a nuestros compañeros y
a nosotros mismos.
En ambos casos, este aporte nos ayudará siempre a ir un poco más lejos y a valorar
lo que tenemos hasta la fecha y lo que no, para poder ponerlo en práctica.
El primer punto que tenemos que tener en cuenta es como está actualmente el
proyecto, que puntos fuertes tiene, que puntos flacos y que es lo que se está realizando
ahora mismo. Una valoración propia de lo que se ve en tu día a día.
El segundo punto siempre tiene que ir dirigido a la línea que tiene que seguir el
proyecto en el futuro, qué medidas se pueden tomar para mejorar, que medidas hay
que reforzar y en que hay que seguir igual porque está funcionando (a veces, todo
funciona, no penséis mal). Este punto será decisivo ya que es donde vamos a poner todo
nuestro esfuerzo para que algo que no funcione cambie de rumbo y pueda ir del todo
bien. Siempre tenemos que valorarlo desde nuestro punto de vista y mirar alrededor,
no todo puede estar concentrado en nosotros mismos.
Una vez realizado este primer análisis de la manera actual de trabajo y las mejoras a
futuro, podemos comenzar con una metodología de trabajo dentro del programa que
utilicemos para hacer nuestras pruebas, por ejemplo:
Una buena manera de organizarse, aparte del programa que utilicemos, es una
nomenclatura en los defectos, que sea clara y concreta y que de un vistazo podamos
detectar de donde es el defecto, que variante o módulo es y en que entorno. Un ejemplo
podría ser:
El entorno lo pongo, ya que, en algunos casos, se prueba en dos entornos, uno para
pruebas exploratorias y otro de preproducción, pero no llega a ser necesario en muchos
casos. También se puede definir el equipo, que puede ser de Testing o de aceptación
(todo funciona en base a la forma y manera de trabajar).
36
Estas ideas son solo un caso básico de lo que podemos llegar a realizar, pero puede
ser el primer el primer paso para lograr una mejor y eficiente organización de nuestro
trabajo y en algunos casos el de nuestros compañeros o equipo.
En muchos de los proyectos en los que podemos trabajar, no tienen claro cuáles son
los límites de la automatización y el principal pensamiento es, todo es automatizable y
por lo tanto hay que automatizar el 100% de las pantallas. Un error muy común y muy
dañino para asegurar la calidad.
¿Se puede automatizar? Sí, claro, pero con cabeza. La automatización dependerá de
cómo es la aplicación, cuál es su complejidad y cuantas variables diferentes tengamos
en cada pantalla.
Una vez que tengamos separadas estas pruebas del resto, valoraremos la cantidad y
el tiempo que disponemos, para no pillarnos los dedos. Si estamos justos, seleccionamos
las más críticas y dejamos el resto para más adelante. Lo principal es buscar un término
medio entre el coste de realizar las pruebas y el tiempo que le vamos a dedicar,
sumándole aparte el tiempo que nos llevará el mantenimiento de las mismas. Es muy
sencillo, si automatizamos más de la cuenta, el tiempo de creación y de mantenimiento
se nos dispara, por lo tanto, es inviable llevarlo a cabo porque no tendremos tiempo
para otras funciones.
Cuando nos piden automatizar absolutamente todo, lo primero que se piensa es que
las pruebas manuales desaparecerán, un error que comete prácticamente todo el
mundo, simplemente hay que automatizar con orden y sin pensar que nuestras pruebas
manuales desaparezcan al 100%.
37
para que ambas personas puedan dedicarse a ambas tareas.
Una regresión puede ser producida, en el mayor de los casos, por algún cambio
transversal en otro módulo y que haga fallar una parte de la aplicación que,
supuestamente, no se ha tocado.
Para evitar este tipo de problemas, tenemos que tener una buena batería de pruebas
de regresión. Esta batería de pruebas hará que tengamos que probar las partes más
problemáticas o ciertas partes transversales para evitarnos disgustos sin sentido.
En cada sprint, nos podemos guardar un tiempo para seleccionar los casos que
observemos que sean regresivos y automatizarlos, habitualmente, pueden ser 4 o 5
como mucho, así que nos llevará poco tiempo y nos podemos ahorrar un tiempo muy
valioso en cada cambio de versión.
Gracias a este tipo de pruebas, podemos evitar uno de los grandes males que nos
encontraremos en los entornos de producción y que afectan gravemente la visión
positiva que pueda tener un proyecto.
Las pruebas exploratorias no tienen por qué llevar un orden ni especificar unas
38
pruebas a realizar, sino que tratan de que la página se pruebe como si el tester fuese un
usuario más, pulsando botones, combos o guardando una página sin tener que seguir
un patrón de casos de prueba.
¿Cómo nos ayudan estas pruebas?
La principal ayuda que nos brindan las pruebas exploratorias es, además de la
libertad, el detectar errores tempranos que puedan ser solucionados antes de pasar
nuestros casos de prueba, creando así una validación más a las que normalmente se
realizan.
Un tester que realice pruebas exploratorias antes que se realicen las pruebas de
sistema con sus casos de prueba y sus formalizaciones, podrá trabajar mucho más su
imaginación y su iniciativa a la hora de ver más rápidamente errores o incluso a la hora
de pensar los posibles casos que cubran una página determinada.
Las pruebas exploratorias nos ayudan y nos enseñan a mejorar nuestros sistemas de
pruebas, nuestras maneras de probar, nos enseñan a tomar otro tipo de caminos y lo
mejor de todo es que pueden ser utilizadas como pruebas de caja negra y de caja blanca.
39
Cuando abrimos defectos y nosotros mismos somos los encargados de asignárselos
a las personas de desarrollo, tenemos que conocer a la perfección las cargas de trabajo
que pueden asumir cada uno, ya que así repartiremos el trabajo más adecuadamente y
nos cubriremos las espaldas al poder solucionar más defectos y desarrollar nuevas
tareas.
La primera medida que hay que tomar, es saber cuáles son las colas de trabajo de
esos profesionales, haciendo querys de sus tareas y/o defectos pendientes, siendo
mucho más eficientes cuando se realizan de manera independiente. De esta manera,
con solo pulsar un botón sabemos cuáles son sus tareas y defectos asignados y vemos
los tiempos estipulados por el jefe de equipo.
Tenemos que tener claro que en la mayoría de los casos y lo que siempre es más
eficiente es guardar un 20% de cada desarrollador para la resolución de defectos, por lo
tanto, viendo los tiempos estipulados, calcularemos los defectos que tenemos que
asignar y dependiendo de la complejidad, redirigirlos a otro profesional para que se
pueda cubrir en esa fase de trabajo el mayor número de defectos posible.
Otra medida a tomar para buscar unos tiempos mejores es tratar con el jefe de
equipo a diario, pudiendo observar y charlar sobre los tiempos que ha decidido para las
tareas e ir viendo cuanto tiempo queda o como le están exigiendo desde arriba para
finalizar algún tipo de entregable. Sabiendo esto, respetaremos al profesional que esté
con esa tarea y podemos repartir el trabajo entre los demás.
Por mucho que nos encontremos este tipo de cosas, esos comentarios no están más
que equivocados, no se dan cuenta que esa persona que hace pruebas les ha salvado y
les seguirá salvando día tras día.
40
Un grandísimo desarrollador, una eminencia, un gurú del desarrollo, no es nadie, si
no tiene a ese humilde tester al lado que pruebe sus maravillosas líneas de código, abra
todos esos defectos y se solucionen para que una vez tenga en sus manos la aplicación
el usuario final, pueda tener buenas vibraciones y pueda realizar un uso correcto de la
misma.
A día de hoy hay que hacer entender que el tester no es especialista de desarrollo,
que quizá no sepa por qué pasa un determinado defecto que a ojos de un desarrollador
sea evidente o que, simplemente no sepa cómo se arregla, pero, a pesar de eso, sí que
es capaz de ver a simple vista un defecto que ni por asomo ha podido ver el desarrollador
al hacer sus pruebas o tiene el conocimiento suficiente para realizar una combinación
necesaria para probar y abrir defectos en algo que ni siquiera se había contemplado.
Habitualmente el Testing se ve como algo que no hace falta una especialidad, como
ya he comentado antes, algo que puede hacer cualquiera en cualquier momento y si
esto ocurre, lo más probable es que se le entregue al usuario final una aplicación
defectuosa que tendrá un futuro muy poco prometedor y sobre todo una valoración
negativa en las principales tiendas de aplicaciones donde pueda encontrarse.
Los que nos dedicamos al Testing tenemos que tener siempre en mente que somos
los que hacemos que las cosas funcionen bien y cuando nos enfrentamos a un proyecto
en el que los tester son ninguneados, ir con la cabeza muy alta pensando que, sin ti, casi
seguro y por muchos gurús del desarrollo que trabajen en ese proyecto, estará abocado
al fracaso.
Un defecto tiene que cumplir una serie de reglas para que el desarrollador pierda el
menor tiempo posible en entenderle y poder solucionarle:
• Su título tiene que ser corto y claro. Tiene que ir al grano. Si es posible, se pondrá
el entorno donde se ha encontrado y el módulo relacionado.
• La descripción tiene que ser breve y concisa. Que no tenga demasiadas florituras
y que contenga en si misma los pasos para reproducirlo, el navegador y la versión
del mismo y si puede ser la build en la que estamos probando.
41
• Debería de contener todos los adjuntos que podamos, como mínimo una imagen
de la pantalla y si puede ser, un pantallazo del error en concreto en el código y
un video de reproducción de los pasos.
• Un defecto bien explicado y estructurado hará ganar un tiempo precioso ya que,
de esta manera, el desarrollador lo leerá e ira al grano, no tendrá que intentar
comprender que es lo que queremos decir.
Sobre todo, cuando reportemos un error, es preferible únicamente escribir los pasos
para reproducirlo, que contar la historia de cómo lo hemos encontrado y entretenernos
en florituras innecesarias para embellecer el texto, seamos ágiles y ayudemos a que el
proyecto tenga una velocidad adecuada aportando nuestro granito de arena.
Unos casos de prueba bien realizados podrán ser utilizados por todas las personas
del proyecto para apoyarse, por ejemplo, en la realización de las pruebas unitarias o de
integración. El equipo de desarrollo, podrá leer nuestros casos de prueba y entender a
la perfección que combinatorias se pueden encontrar a la hora de hacer sus pruebas y
pueden enfocarlas mejor e incluso hacerlas con más profundidad.
Una vez que el equipo de desarrollo utilice nuestros casos de prueba para realizar sus
pruebas unitarias, nosotros podemos "reutilizarlas" para comenzar a crear nuestra
batería de pruebas automatizada.
Gracias a nuestro trabajo previo, podemos facilitarles la vida a todas las personas del
proyecto, quitándoles algo de responsabilidad y aportando un conocimiento muy
42
importante que a nosotros mismos nos reportará experiencia de cara a otros grupos de
trabajo.
Como veis, la importancia que tiene el "prestar" nuestro trabajo a otras personas es
importantísimo, pero siempre hay que cumplir una regla esencial, nuestros casos jamás
deben de alterarse por ninguno de estos grupos, siempre se realizarán copias
independientes en el caso de que otro equipo quiera modificarlos o adaptarlos a sus
propias necesidades. Si no, nuestro trabajo puede quedar alterado y sobre todo
desvirtuado.
Uno de los "errores" (entre comillas) de muchas implantaciones es que solo cuentan
con un "proceso de desarrollo" que, con el tiempo, se acaban cayendo por su propio
peso, ya que sin esa parte de Testing, está vendido. Por eso, opino, que hay que intentar
buscar otra nomenclatura para este tipo de procesos que puedan ser menos equívocos
43
y, sobre todo, encontrar una coordinación perfecta entre los que yo, personalmente,
llamo "subprocesos" (Testing y desarrollo).
Las personas que nos dedicamos a la calidad del software tenemos que intentar
entrelazar los dos subprocesos y buscar una afinidad entre ambos, para que todo vaya
más fluido y no nos encontremos con puntos muertos, que frenen el ciclo de vida de la
aplicación. Si esto ocurre, los primeros perjudicados seremos nosotros ya que un
proceso fluido y coordinado hace que la calidad del software sea mucho más elevada, el
trabajo de todo el proyecto sea más vistoso y, sobre todo, más efectivo.
Test Manager es una herramienta que Microsoft sacó al mercado en 2010 y que poco
a poco se va implementando en cada vez más proyectos. En la actualidad podemos
trabajar con Test Manager 2013 que viene acoplado únicamente en la suite de Visual
Studio 2013 test professional y ultimate. Esta nueva versión dispone de algunas mejoras
que se pueden consultar aquí.
Tras una mínima explicación vamos a ver cómo nos puede ayudar esta herramienta:
44
La herramienta de gestión de pruebas de Microsoft es un apoyo impresionante en un
proyecto, y sobre todo a la hora de hacer un Testing de calidad, organizado y sobre todo
metódico. Su integración total con Visual Studio, TFS y herramientas de desarrolladores
de Microsoft es una ventaja muy importante al poder capturar en ambos sentidos toda
la información, enlazarla y dejar una trazabilidad perfecta para que las métricas y datos
que exportemos sean reales y totalmente utilizables para mejorar el proceso interno del
propio proyecto.
Poco a poco iré escribiendo artículos de Microsoft Test Manager entrando en detalle
en todos sus módulos, características y sobre todo dando pistas y consejos a la hora de
configurarlo para que la ayuda sea completa y efectiva. Utilicemos este pequeño post
para adentrarnos en la herramienta y empezar a conocerla mejor.
Bien, a grandes rasgos, esto es así, o, mejor dicho, esto era así hace muchos años,
cuando el Testing era una profesión emergente, poco conocida y se trabajaba según la
vieja escuela. ¿Qué ocurre a día de hoy? El tester tiene que estar especializado y ser un
especialista.
Durante los últimos años, la persona que se dedica a la calidad del software, tiene
que buscar una especialización en alguna de las ramas que este trabajo ofrece
(hablemos de pruebas funcionales manuales, automáticas, rendimiento, carga...) y a su
vez ser un especialista en ese terreno, con certificaciones, reconocimientos o incluso
cursos que hagan que pueda destacar por encima de otros trabajadores de su misma
rama.
El primer paso que debe de dar un tester junior es elegir a donde quiere enfocar su
carrera, tanto si es a realizar pruebas de rendimiento o a automatizar casos de prueba
dentro de una aplicación, entre muchos más ejemplos. Una vez que está decidido este
paso, tiene que dedicarse exclusivamente a la realización de estas pruebas, siempre que
sea posible, llevando por ese camino su carrera, intentando coger la mayor experiencia
posible y a su vez, realizando exámenes y certificaciones que avalen su buen trabajo.
Desde mi punto de vista, a pesar de las empresas que quieren hacer negocio con
exámenes y reconocimientos en los que se estudia un temario que ellos aportan y dicen
que las cosas se realizan de esa manera por el simple hecho de que ellos lo dicen y
encima lo quieren globalizar, sí que hay ciertos reconocimientos que nos permitirán
abrir muchas puertas que antes ni siquiera se nos abrían, incluso poder llegar a ser uno
45
de los pocos profesionales que trabajen con una determinada herramienta o
metodología de todo un país.
Un tester especializado vale mucho más que un tester sin más. Esto se puede
extrapolar a cualquier tipo de trabajo o de formación, ya que una persona que ha tocado
todos los palos de su rama, pero no se ha especializado en nada, sabrá de todo, pero a
su vez no tendrá unos conocimientos profundos en algo en concreto, que es lo que se
busca en el mundo laboral a día de hoy.
Antes de las etiquetas teníamos que crear campos, crear métodos de trabajo
complicados o incluso organizaciones de elementos de trabajo en carpetas o con una
nomenclatura predefinida, pero ahora, con etiquetar todos los elementos que sean
iguales con una única etiqueta, podremos realizar un filtro con una consulta que nos
46
saque el listado completo de lo que queremos consultar.
Todas las ventajas que aportan se pueden caer por su propio peso si no creamos, en
base a las necesidades del proyecto, unas etiquetas predefinidas, porque si no, lo más
seguro es que cada uno escriba la palabra a su manera y tengamos etiquetas diferentes
para la misma solución, por ejemplo, podemos escribir en mayúsculas o minúsculas o
poner una tilde o quitarla. Por eso, es muy importante que tengamos claras las etiquetas
que usemos y dejarlas por escrito repartidas en todo el proyecto.
La recomendación que os puedo dar para el uso de etiquetas es que utilicéis etiquetas
claras, con una sola palabra y que definan lo que querías aportar. Siempre utilizar las
mayúsculas y aunque no suene bien, evitar símbolos de acentuación, esto acotará los
errores bastante. Un ejemplo de etiqueta pudiera ser INTEGRACION, donde al leerla
sabemos a qué se refiere, es clara, está escrita en mayúsculas que no ayudará para verla
mejor y le hemos quitado el signo de acentuación de la O para evitar duplicarla.
El equipo de Testing, para llevar un control del trabajo que está realizando, tiene que
tener una planificación y una organización independiente del equipo (siempre y cuando
este equipo sea independiente y no estemos hablando de organización del Testing en
cada equipo de trabajo).
Si estamos trabajando en un proyecto donde cada equipo realiza sus propios sprint,
independientes, el sprint del equipo de Testing tiene que empezar cuando empieza el
primer equipo y finalizar cuando finaliza el último equipo, habitualmente, usaremos la
regla de sprint de un mes como máximo.
Si los equipos de trabajo mantienen todos el mismo sprint, lo tenemos más fácil ya
que nos acoplaremos a esas fechas directamente, trabajando la primera semana en
creación de casos de prueba y similar y la segunda comprobando los desarrollos que nos
van entregando (siempre y cuando los sprint sean de 2 semanas).
47
recibiendo los nuevos desarrollos y utilizando estos datos para probarlos, abrir defectos
o probar todo lo que tengamos que probar. A esto se suman las repruebas, los defectos
solucionados anteriormente y una cantidad bastante grande de factores externos que
tenemos que tener en cuenta para no pillarnos los dedos. Siempre que podamos
avanzar en la preparación de esos datos, ganaremos tiempo por si un factor externo nos
quita horas de más.
Una de las cosas más importantes que tiene que tener un proyecto es una
planificación excelente en el departamento de Testing ya que la calidad del mismo
dependerá de él. Si desde el principio planificamos mal esta parte, todo se irá
desmoronando y al final el proyecto no saldrá adelante todo lo bien que debería. El
pensamiento más importante que hay que hacer entender es que Testing es la pieza
central del puzle de un proyecto, no queda otra.
Esto por sí mismo no nos puede llegar a decir mucho, pero si pensamos en la calidad
alrededor de nuestras vidas, esa definición cambia y además nos hace recapacitar y
darnos cuenta que en muchos casos se nos ha olvidado que es y porque nos dedicamos
a ello.
Cuando nos compramos algo siempre buscamos que ese gasto de dinero nos valga,
que sea duradero, resistente, de buen material...en resumidas cuentas, que sea de
calidad.
¿Qué ocurre con nuestro trabajo? Exactamente lo mismo. Cuando una empresa se
gasta el dinero en algo, está buscando algo duradero, creado con buenos materiales
(bien programado), duradero (buen diseño), resistente (que no se caiga ni falle
fácilmente), en resumidas cuentas...busca exactamente lo mismo que nosotros en
nuestra vida diaria. Esto es extrapolable al trabajo realizado, evidentemente, un trabajo
de calidad, merecerá la pena pagarlo y por lo tanto el reconocimiento será mayor.
48
calidad, nosotros en sí debemos ser esa calidad y poner en práctica esta idea nos
ayudará a que nuestro trabajo se realice mejor y más eficientemente.
En muchos casos y según la teoría de ciertos libros, las pruebas de regresión son casos
que se realizan basados en un defecto y que en cada sprint probamos viendo que no
vuelve a suceder. Yo, en los proyectos donde he trabajado, siempre doy un paso más,
con los casos de prueba de alguna funcionalidad, siempre marco uno o dos (los básicos)
para agregarlos a estas pruebas de regresión. Así tenemos un conjunto de casos de
prueba, que, a falta de ser profundos, prueban todos los caminos de la aplicación y por
lo menos, podemos ver, que no fallan las cosas básicas.
Si en el proyecto que trabajamos, existe una build nocturna que actualiza el entorno
que sea con versiones nuevas, lo mejor es que intentemos automatizar estas pruebas
(al igual que las unitarias) y que se pasen siempre con ella y para rizar el rizo (que ya es
muy complicado) si estas pruebas no pasan en OK, la actualización del entorno no se
realiza porque existe algún tipo de fallo. Todo esto en un mundo ideal y sin prisas de
negocio, algo que es muy complicado de ver, aunque sí que conozco sitios donde lo han
conseguido.
49
por que sí.
Como algunos sabes, hace un mes y algo, así dos, me encargaron la tarea de ser el
responsable del área de Testing de la empresa, de llevar un equipo y de crear e
implementar una metodología de pruebas que asegure la calidad del proyecto mucho
más que antes.
Así que ya llevamos un tiempo trabajando así, introduciendo mejoras y con una
metodología definida y robusta.
Pues para mi sorpresa, llevando a cabo esta metodología, que nos está ayudando y
ampliando horizontes muchísimo, deje un poco de lado (un poco, no totalmente) esa
manera de sorprenderme cuando hago pruebas exploratorias, cuando pruebo una
pantalla según me parece, sin ataduras de casos de prueba ni de "organización".
Estaba, como ya os he dicho antes, hace unos días probando una sección de un
módulo. Me había leído el análisis funcional del PBI, lo había asimilado y había creado
unos casos de prueba en base a ello, hasta ahí, todo perfecto. Me puse a probar la página
con esos casos y bien, todo correcto, así que, en ese momento, casualidad de la vida,
tenía un punto de menos carga de trabajo, así que pensé, voy a darle una vuelta a la
funcionalidad por mi cuenta, voy a "divertirme", a trastear, como decimos algunos.
Y ¡sorpresa!, haciendo una combinación un tanto rara, descubro que esa pantalla no
hace lo que debe de hacer en un punto en concreto...me vuelvo al análisis
funcional...nada. No se hablaba ni una palabra de esa combinación...que raro...
Me levanto del sitio y voy a hablar con el desarrollador que ha implementado esta
funcionalidad, una persona, que, además, suele ser bastante metódica y es extraño que
deje algo al azar. Vuelvo a reproducir los pasos que di en esa prueba exploratoria y
¡doble sorpresa! resulta que esa combinatoria ni se había planteado, ni estaba definida
ni nadie había pensado en ella. Así que nos pusimos a trabajar enseguida y solucionamos
el problema.
¿Qué os quiero contar con todo esto? Que, aunque tengas un maravilloso
procedimiento de trabajo, que seas muy meteorológicos, no os olvidéis de esa
capacidad de sorprender que aportan las pruebas exploratorias, no dejes de probar a
vuestro parecer, sin ataduras, sin seguir unos pasos definidos.
Desde entonces, llevo dando vueltas a un paso más en la metodología de trabajo que
se está implementando al equipo y por extensión al proyecto, y me gustaría investigar,
probar o realizar un "piloto" de una metodología exploratoria que sea previa a la
aplicación de la metodología de Testing y que nos ayude a realizar esas pruebas que
saquen a la luz las combinatorias que no habíamos planteado, que nadie había pensado
en ellas. Evidentemente no será siempre, serán momentos muy concretos y en
funcionalidad pequeñas y muy cerradas, pero estoy seguro de que saldrán.
50
Así que, iré creando una especia de "diario exploratorio" con las experiencias que nos
aportará esta manera de trabajar y os las iré contando por aquí. Sobre todo, no os
olvidéis de una cosa: ¡no dejes de lado vuestra capacidad de inventar con las pruebas
exploratorias!
En la mayoría de los casos, lo que sucede es que nos solemos quedar cortos en el
equipo, ya que se le da prioridad al desarrollo antes que a las pruebas y después ocurre
lo de siempre, que cuando el cliente da la colleja, nos pensamos mejor esto y damos
prioridad a la Calidad antes que a la Cantidad.
Cuando nos quedamos cortos en el equipo de Testing suele ocurrir que el trabajo nos
desborda y que no podemos hacer las pruebas todo lo bien que debemos y,
habitualmente, dejamos de lado automatizaciones y cosas menos prioritarias que sí que
podemos dar importancia si el número de personas del equipo es el correcto.
En algunos casos, durante los años que llevo trabajando, he visto como el equipo en
el que trabajaba estaba escaso de personal y nos matábamos a trabajar, mientras que
otros equipos estaban más que dimensionados y daban la sensación de hacer más bien
poco. Este problema es más habitual de lo que parece, ya que, el tester está
infravalorado y se piensa que cualquiera puede hacer su trabajo, así que se paga poco y
la especialización es escasa, aunque el músculo de pruebas será muy grande.
Hace unos años tuvimos una mala época cuando se decidía externalizar todas las
pruebas a países como la India, que cobraban más bien poco, pero el resultado no era
del todo satisfactorio. Al final, es como todo, una especialización se paga y sino no se
conseguirán los resultados esperados.
51
42. Realizando el Daily meeting con TFS
Cuando trabajamos con metodología Agile y con herramientas de gestión de tareas
como TFS, podemos enfocar la realización del Daily de una manera más sencilla
apoyándonos en esta herramienta.
A mí, personalmente, me gusta más trabajar con Queries que con el panel, ya que
tengo una visión más concreta de cada estado y me quito PBI’s que en ese momento
pueden no aplicar (porque estén en desarrollo o porque ni siquiera se ha comenzado a
trabajar con ellos).
En la primera querys, hago una búsqueda por los PBI’s que están listos para integrar
desde el equipo de desarrollo, hasta nuestro entorno y una vez que sabemos que trabajo
se ha realizado el ida anterior, podemos planificar ese mismo día y el siguiente,
aceptando esos desarrollos para probarlos.
En una segunda querys, revisamos lo que ya está en nuestro entorno y así nos
hacemos una idea del trabajo que hemos tenido y el que puede quedar pendiente,
valorando si realizamos el paso anterior o no (habitualmente esto lo hacemos antes).
En una tercera querys, revisamos los PBI’s que ya hemos dado el OK y que pondremos
en el siguiente estado para que se realicen las pruebas de validación. De esta manera
los PBI’s pasan a otro entorno de QA y el equipo de Producto/Negocio realizará sus
pruebas y validarán el producto que se les ha proporcionado.
Si trabajamos con ciertas herramientas que gestionan nuestras tareas tenemos que
evitar el duplicar trabajo y usarlas siempre, de este modo, nos quitaremos de un
plumazo la planificación diaria y la revisión del trabajo.
Cuando llevo un rato en el que no veo nada, no soy capaz de ver más lejos, paro. Me
dedico a reprobar defectos, a crear casos de pruebas, a leer PBI’s o funcionales, todo,
menos probar. Es completamente absurdo ya que me bloqueo cada vez más y la
52
frustración va en aumento.
Cuando me pasa eso, al parar y continuar al día siguiente, todo vuelve a su ser, vuelve
a funcionar y los defectos, mejoras y demás surgen por sí mismas, algo que vuelve a
darme esa vidilla y me ayuda a seguir durante horas, porque sí, me gusta encontrar
defectos, me gusta proponer mejoras que a nadie se le han ocurrido.
Cuando tenemos uno de esos malos días, lo mejor, de verdad, es parar, ya que si no
podemos dar por bueno algo que en realidad no funciona bien y liarla más que
solucionar cosas.
Os puede parecer una lectura sin fundamento, sin nada nuevo, sin técnicas de Testing
novedosas o herramientas que podemos utilizar, pero realmente todo eso no vale de
nada si nuestro día es malo y nuestra cabeza no da para más. Muchas veces es mejor
parar, respirar hondo y continuar al día siguiente, un buen consejo en ciertos momentos
nos puede ayudar más que un post sobre cómo, cuándo o con que probar.
Tras esa confianza y ese buen hacer, a mi parecer, existe un recelo al quizá meta la
pata, al quizá lo que dice puede no ser lo correcto, al no se ha pegado lo suficiente en
algunos proyectos y no dará la talla, no es así.
La sangre nueva que cubre el mercado laboral tiene que demostrar y luchar día tras
día, como el que más, para hacer ver que, en ciertos momentos, se puede tener razón y
se puede dar la talla al 200%, eso sí, el paso principal lo tienen las empresas, que tienen
que apoyar este cambio y dar la oportunidad a la juventud, en mi caso, solo puedo dar
las gracias por la confianza ciega que han puesto en mí y espero que poco a poco todos
53
tengamos las mismas oportunidades para demostrar que valemos muchísimo.
45. Testing con TFS vol.1: Sacando partido al panel principal de TFS del
equipo.
Como TFS es la herramienta del proyecto y en la que me he basado para realizar el
procedimiento de Testing en él, quiero realizar una serie de post relacionados, para
mostraros pantalla por pantalla el rendimiento y el partido que se le puede sacar a esta
gran herramienta (más pensada para desarrollo) pero que se puede adaptar
perfectamente a un equipo de Testing.
Encima de estas Queries, veremos el gráfico de ítems del Backlog, que se pintará en
verde si no superamos la capacidad del equipo o en rojo si estamos superando las horas:
Como veis y os he comentado antes, a día de hoy tenemos horas de más en el sprint
ya que se nos han ido de tiempo algunas tareas, cosa que se arreglará realizando una
post planificación (incluso este incremento se puede dar porque no hemos ajustado de
manera correcta alguna tarea, es algo asumible).
Justo al lado de esta gráfica podemos ver el sprint actual de manera minimizada, si
pulsamos en ella, podemos observarla más en detalle y nos mostrará el trabajo restante
y los días que nos quedan:
Otro tema que podemos utilizar para darle rapidez y agilidad al equipo es la sección
de Trabajo:
54
Si pulsamos en “Crear nuevo” nos aparecerá un desplegable con todos los tipos de
elementos de trabajo configurados en el proyecto que podemos crear, de esta manera,
de manera rápida abriremos defectos, PBI’s, tareas, casos de prueba o lo que
necesitemos. Tras crearlo, aparece una lista donde veremos los últimos elementos
creados. Así accedemos a ellos para configurarlos o enviarlos a un equipo al momento.
Por último, la parte que también sacaremos partido y utilizaremos, será en la sección
de “otros vínculos”, el enlace “configurar programación e iteraciones”.
Al abrirlo, veremos una pantalla como esta, donde configuraremos los Sprint del
equipo y las fechas de inicio y cierre.
Dentro de este primer volumen de Testing con TFS solo os he enseñado la pantalla
principal, que no tiene demasiado, pero es muy importante a la hora de darle al equipo
rapidez y agilidad para mirar el trabajo que tienen de un vistazo. De hecho, en el post
XXX os comenté como utilizábamos TFS para la realización del Daily. Simplemente
utilizando esta sección, se hace rápido y le queda claro a todo el mundo su trabajo.
Un equipo auto gestionable hace que la gente que lo forma, pueda recoger tareas y
llevarlas a cabo sin la necesidad de estar preguntando constantemente a su responsable
y pudiendo gestionar su tiempo de forma más eficiente.
Esa autonomía por parte del equipo nos dará una fluidez y una rapidez que no
podemos encontrar con un equipo dibujado de la manera tradicional.
Cuando realizamos esta serie de acciones, e equipo busca el apoyo del responsable
55
para priorizar las tareas en base a la criticidad, para preguntar dudas, para que se
solucione algún impedimento para realizar su trabajo, pero el mismo, puede, después
de esa planificación general y la re planificación diaria que se puede hacer en una
reunión tipo Daily, recoger las tareas asignadas y sacarlas adelante de forma continuada
sin necesidad de que el responsable tenga que estar pendiente a cada hora del trabajo
realizado.
Todo esto se consigue, en primer lugar, con una buena planificación previa al inicio
del ciclo de pruebas o de desarrollo y en segundo lugar con una buena "educación" de
todo el equipo desde el principio.
Años atrás, prácticamente el 100% del presupuesto que tuviese un proyecto estaba
destinado al desarrollo, a meter más y más gente que picara código y que realizara todo
lo más rápido posible y pudiera subirse a producción. Esto ha sido un error que se ha ido
arrastrando a lo largo de muchos años pero que está terminando cada vez más.
A día de hoy, muchas empresas van repartiendo ese presupuesto para la realización
de pruebas por un equipo especializado y asegurarse la correcta subida a producción de
los desarrollos realizados. Hay una entrevista muy interesante a Rick Marselis que nos
dice que entre el 30 y el 40 por ciento del presupuesto se destina a revisar proyectos
que han salido mal a producción.
Como suelo decir, prefiero que se realicen pruebas sea como sea y de la manera en
la que la empresa esté cómoda, que no realizar ninguna. Incluso si una empresa aún
tiene una mentalidad más antigua y no tiene ningún tester en plantilla, aceptaría que
los desarrolladores realicen pruebas unitarias o de integración.
Los profesionales que nos dedicamos a esto, tenemos que tener claro que nos
enfrentamos día tras día al difícil camino de demostrar que nuestro trabajo es mucho
56
más valioso de lo que parecen y tenemos que reeducar a las empresas poco a poco para
que se vayan realizando pruebas.
La manera más fácil de que esto se lleve a cabo es realizar buenos trabajos en algunas
empresas en las que la competencia no realice pruebas o no realice las suficientes.
Cuando la satisfacción de sus clientes suba y la de la competencia baje, perdiendo
clientes por esa razón, esas empresas tendrán que ir realizando una cultura de pruebas
para mantener el nivel de sus principales competidoras.
Para realizar las pruebas tenemos que tener un entorno de "pre despliegue" o en
algunos sitios llamados "staging" (puesta en escena), que simplemente es un entorno
clon de producción en el que podemos tocar sin problemas.
La regresión tendrá puntos comunes que se tienen que pasar siempre y en cada
subida entrarán pruebas específicas para comprobar los puntos que se suben en ese
57
momento.
Cuando tengamos programada una subida a producción, hay que hacer una subida
previa el día anterior a este entorno para realizar esta regresión y el equipo de Testing
se dedicará al 100% a estas pruebas.
Nosotros, en el equipo, marcamos ciertos casos que nos resultan más "críticos" y que
tenemos que probar si o si para garantizar el buen funcionamiento de la aplicación (por
lo menos mínimamente), así vamos sacando, sprint tras sprint, una batería de regresión
contundente que nos determinará el buen estado de una subida.
Siempre recomiendo la realización de esta pequeña regresión final para asegurar más
aún el resultado de una subida, ya que entre entornos se puede haber desvirtuado el
código y tener algún problema, aunque en la subida posterior también podría ocurrir,
por lo menos podemos quedarnos más tranquilos y que los usuarios finales no tengan
ningún disgusto.
Pero tenemos un problema, ¿qué pasa en esos meses cuando nuestro equipo está
bajo mínimos? La respuesta es sencilla, pivotar, priorizar y jóvenes talentos.
Una de las ventajas de los meses de verano, es que al igual que nuestro equipo, los
equipos de desarrollo también están diezmados, por lo tanto, el trabajo que llega es
menor, pudiéndose asumir con más facilidad. Aun así, tenemos que priorizar muy bien
las vacaciones.
Primero, hay que intentar que el 50% del equipo esté siempre, repartiendo las
semanas de vacaciones entre todos para ver cuál conviene a cada uno. Nunca debería
de bajar a un 20% el número de activos trabajando ya que peligraría la entrega del
trabajo y nuestros compañeros sufrirían una presión innecesaria en meses que
supuestamente suelen ser más calmados.
Hay veces que no es posible realizar una repartición cualitativa de las semanas de
vacaciones y el porcentaje puede bajar del 50% ya que varios miembros se pueden pisar,
entonces, lo mejor que podemos hacer es asumirlo y dejar que se vayan, siempre y
cuando no baje el porcentaje del 20%. Más vale un profesional contento y motivado y
no un profesional quemado y con un gran malestar por no haber podido compatibilizar
58
las vacaciones con su familia. Es preferible asumir entre los que se quedan algo más de
trabajo que "obligar" a los profesionales a no poder disfrutar de sus merecidas
vacaciones.
Una vez que tenemos esto controlado, en segundo lugar, tenemos que tener muy
claro el trabajo que va a llegar. Tenerlo todo priorizado y estar muy atento de que se
guarda cada equipo para saber qué semanas o días van a ser más problemáticos. Como
ya digo, los equipos de desarrollo suelen estar diezmados y es muy probable que la carga
de trabajo sea mínima (al menos hasta la segunda semana de agosto, después puede
aumentar ya que en algunos proyectos quieren tener mejoras finalizadas para lanzarlas
en septiembre).
Una vez que tenemos claro que el equipo tiene que pivotar todo lo posible, tengamos
otra idea en la cabeza: "jóvenes talentos".
Desde mi punto de vista, en estos meses de verano, tenemos que tener en cuenta a
jóvenes que están adentrándose en el mercado laboral y que quieren formar parte de
la rama de trabajo a la que nos dediquemos. Siempre deberíamos de intentar guardar
algo del presupuesto o tener cerradas pequeñas contrataciones o prácticas (entiéndase
prácticas como algo beneficioso para el profesional, no lo que suele pasar cuando se
sangra a la gente...), ya que estos jóvenes talentos pueden convertirse en activos muy
importantes después del verano y podemos ir formando un equipo motivado y con
confianza (llegando a los meses de más trabajo con un abanico amplio de
conocimientos).
Se debería de hacer un llamamiento a las empresas para que tengan en cuenta esta
idea, ya que muchas veces no se dan las oportunidades necesarias a los jóvenes. No se
puede salir de estudiar y que te pidan experiencia, la experiencia se gana trabajando,
por lo tanto, aprovechemos estos meses en los que todos estamos más tranquilos para
dar esas oportunidades y abrir puertas en el mercado laboral a profesionales para
evitarles, en la medida de lo posible, problemas que hemos tenido la mayoría en muchos
sentidos.
El desarrollador es esa persona que está en manada en los proyectos, que nos supera
en número y que trabaja de sol a sol para sacar una aplicación adelante mediante sus
infinitas (y soporíferas, a veces ;)) líneas de código.
59
Es esa persona que cuando no han trabajado con Testing, según entras por la puerta
notas sus ojos clavados en ti con una mezcla entre "que narices hace este ti@" y "como
me abra más de dos defectos le mato".
Un panel de trabajo o pizarra de tareas (como se conocía desde hace años) no es más
que un apoyo visual para que el equipo se pueda gestionar mucho mejor. Hay una serie
de reglas para que el panel nos diga algo, pero cada uno debería de adaptarlo a su
proyecto o equipo como mejor le funcione.
60
Un ejemplo de tablón es el que usamos en el proyecto actual. Es simplemente un
apoyo a la aplicación, que es TFS y que de un vistazo podamos ver cómo está la situación
del trabajo en el Sprint.
Como referencia al panel de arriba, lo ideal es, si se trabaja con una herramienta del
tipo TFS, Jira Agile (Greenhooper), RedMine, HP QC o Test Manager, entre otras muchas,
es sacar las gráficas adecuadas a nuestro proyecto y que a los integrantes del equipo le
den una información concreta. En mi caso tenemos gráficas de velocidad, de flujo
acumulado, de carga de trabajo, el resultado de las pruebas y comparaciones entre el
sprint actual y el anterior.
Estas gráficas nos darán una idea de lo que hemos estado haciendo en el sprint
anterior y lo podemos ir comparando al trabajo que tenemos actualmente, así veremos
si tenemos que coger otro rumbo o seguir igual para que sprint a sprint nuestro equipo
mejore.
Justo al lado de las gráficas del sprint tenemos una pequeña leyenda de que significa
cada cosa en el tablón y debajo un tablón independiente para las tareas internas del
propio equipo. Este tablón es exclusivo para nosotros y tiene un flujo típico y sencillo de
"To Do, in progress y Done".
Si el PBI tiene defectos le ponemos una etiqueta azul para saber que está bloqueado
en nuestro entorno y si el PBI es prioritario le ponemos una etiqueta verde (estas
etiquetas posiblemente sufrirán cambios ya que he tenido que utilizar los que hay ahora
mismo en papelería).
61
automatización.
Desde mi punto de vista, una buena batería de automatización contará con los
caminos felices y los casos de regresión, no con validaciones complejas, excepciones,
caminos extraños o puntuales. Siempre hay que intentar mantener una batería de
pruebas que sea lo más completa posible en ese sentido.
Este grabador tiene un botón similar al de REC, como vemos en la captura de pantalla
y podemos comenzar a grabar los pasos que vayamos realizando en el navegador o en
la pantalla.
Una vez que estemos grabando con el grabador de acciones, podemos añadir
aserciones o más acciones con un simple click de ratón (pulsando al icono del círculo).
[CodedUITest]
public class CodedUITest1
{ ...
[TestMethod]
62
public void CodedUITestMethod1()
{
this.UIMap.diarioDeUnTester();
this.UIMap.VerifyResultValue();
// To generate more code for this test, select
// "Generate Code" from the shortcut menu.
}
}
Como podemos comprobar, es un código muy sencillo y limpio, que nos permite
personalizar todo lo que queramos en cualquier momento.
También nos permitirá validar un control (por ejemplo, que en un campo de texto
aparezca el valor correcto). Solo hay que añadir a la clase UIMap algún tipo de control o
método. Podéis encontrar más información aquí.
Si, además, utilizamos Test Manager, tenemos una tabla en la que se especifican los
tipos de pruebas automáticas que se pueden crear y las que se pueden ejecutar como
parte del plan de pruebas que tengamos creado:
Este tipo de pruebas tendrán que cumplir la normativa escrita en la ISO/IEE 9126-1,
donde se describe la capacidad de un software a ser transferido de un ambiente a otro,
63
para los mismos fines y en el mismo ambiente.
Por lo tanto, para este tipo de pruebas hay que comprobar que el software sea
Portable, Instalable, reemplazable y adaptable.
En primer lugar, hay que tener en cuenta los requisitos previos de instalación (en el
caso de que fuesen necesarios), hay comienza la complicación de las pruebas ya que se
podrán sacar fallos de Instabilidad y que no sea reemplazable en algún sistema por la
falta de compatibilidad de algún pre-requisito.
Tras la instalación de los requisitos previos hay que valorar si este flujo es único o hay
varias posibilidades, ya que, en algunos casos, la instalación de estos tiene que ir
enlazada y por pasos porque podría pasar que al instalar algún pre-requisito antes que
otro, este no funcione correctamente. Al realizar todas estas pruebas tendremos el flujo
de instalación ya realizado completamente.
El siguiente paso es verificar que la instalación ha sido correcta, habrá que ejecutar
la aplicación y revisar que se "levanta" como se espera. Si esto es correcto, hemos
completado el punto exitosamente.
Otra cuestión a revisar es la desinstalación del producto. Habrá que revisar cómo se
desinstala, que componentes se pueden quedar, que archivos no se borran
adecuadamente o que registros quedarán tras ello. Hay que comprobar todos los flujos
que hemos ejecutado en la instalación y paso por paso ir eliminando todo lo que hemos
instalado previamente.
Cuando hemos realizado todos los flujos, quedarán una serie de disconformidades
que se convertirán en defectos que hay que solventar, tanto a nivel funcional como a
nivel de código.
Este tipo de pruebas nos permitirán ver si nuestro software tiene una instalación
rápida, sencilla, correcta y funciona como debe en todos los sistemas que probemos y
queramos englobar. Para ello el uso de laboratorios es imprescindible, porque
podremos "virtualizar" de una manera rápida, una gran cantidad de versiones para
nuestro producto.
64
Desde hace unos años, con el nacimiento y expansión de los dispositivos móviles, nos
encontramos con alrededor 20 aplicaciones que usamos a diario, esto nos aporta una
gran cantidad de funcionalidad que se puede hacer con un solo click o una sola pulsación
de pantalla, exigiendo una fiabilidad absoluta y sobre todo una exigencia de rapidez de
carga para consultar algún tipo de dato.
¿Qué ocurre cuando nuestras aplicaciones típicas como WhatsApp, Twitter, Google
Maps o el correo electrónico...fallan? Pues que se pierde ese minuto de consulta que
necesitamos en un momento puntual y que nos cabreamos.
Hace un tiempo apareció LINE, por ejemplo, una nueva aplicación de mensajería que
iba a destronar al omnipresente WhatsApp, ¿recordaos que sucedió? Pues que era
terriblemente lenta, pesada y consumía demasiados datos, así que la gran cantidad de
usuarios que comenzaron a utilizarla, volvieron a la anterior mucho más liviana y ágil.
Después han ido mejorando y la aplicación funciona muy bien, pero los usuarios ya se
han acomodado y no se quieren mover.
Nos movemos en un nivel de exigencia altísimo, motivado como ya os digo, por los
dispositivos móviles, por esa gran facilidad de conectarnos con un solo click, con esa
falta de tiempo que solo nos permite uso pocos minutos (aunque sea varias veces al
día). Esa exigencia es tan real que cualquier empresa debe de cubrirse las espaldas de
cualquier modo y cerciorarse de que todo lo que sube a producción esté como una
patena, totalmente impoluto, un solo desliz, puede ser catastrófico para los números
anuales y puede llevar incluso hasta desaparecer y que quede totalmente en el olvido
(recordar ahora casos tan importantes como Tuenti, un producto estrella que compró
Telefónica y que ha acabado como compañía móvil, desapareciendo como red social
para siempre).
Incluso hasta los más grandes pueden cometer errores importantes, haciendo que
sus aplicaciones desaparezcan de un día para otro o tengan unas críticas de lo más
negativas. Por ejemplo, Apple, sacó Maps con una versión horrible que contenía muchos
errores y no desapareció de milagro. Y por supuesto, el mayor error fue Ping, una red
social que la mayoría de los usuarios no entendieron y que fue totalmente innecesaria,
un cierre que no fue por errores, si no por una interfaz poco intuitiva, falta de
comunicación y apertura en un mal momento. Así podría llenar páginas y páginas con
los mayores errores que han tenido las grandes compañías, pero creo que todos las
sabemos.
Esta es la exigencia del mundo actual, un monstruo que devora día tras día
65
aplicaciones, que pudieron haber sido "bestseller" y haberse hecho un hueco
importante en nuestros dispositivos y en nuestro día a día.
No tenemos que obviar bajo ningún concepto este tipo de pruebas y comprobar,
tanto si nuestra aplicación es Responsive web Design como si no, si es funcional en tablet
y teléfonos inteligentes. Evidentemente no podemos cubrir el 100% de dispositivos, ya
que en el mercado hay muchísimos y hay muchos muy antiguos, pero sí que tenemos
que cubrir una mayor parte de ellos y no solo fijarnos en gamas altas, cuya cuota de
mercado no siempre es la mayor.
También, las grandes firmas tecnológicas nos ofrecen sus propios laboratorios y sus
66
soluciones para poder tener una buena batería de pruebas y cubrir todos los casos
posibles.
En el caso de HP nos ofrece HP Testing for mobility o IBM con Rational Test también
nos ofrece una solución completa para poder organizarnos mejor en base a nuestras
pruebas en dispositivos.
Como veis, hay muchísima información para apoyarnos en este tipo de pruebas, y
con el tiempo habrá más, ya que el rango de utilización en los dispositivos móviles cada
día es mayor y los usuarios son cada vez más exigentes, así que, manos a la obra y no
descuidemos este campo.
Cuando estamos en esa tesitura, un buen momento para rotar a la gente es después
de una subida a producción importante, cuando sabemos que el día después comenzará
una época más tranquila y que las personas podrán ponerse a aprender lo que les pueda
tocar.
Las ventajas de que la gente rote son muchas, sobre todo el cansancio mental que
supone que día tras día nos tengamos que enfrentar a las mismas cosas. Cuando
cogemos algo nuevo, nuestra motivación es mayor, tenemos ganas de aprender y de
hacer cosas nuevas, entonces, matamos dos pájaros de un tiro, la gente tiene la
motivación más alta y si estaba "aburrida" ya no lo está y sofocamos una posible salida
al menos inmediata.
Otra ventaja de las rotaciones es que el equipo coge conocimientos de algo más,
67
salen de su "zona de confort" y adquieren conocimientos que hasta ahora no tenían.
En el caso de que alguna persona del equipo esté de baja de repente o se coja
vacaciones, no tendremos muchos problemas ya que los demás también podrían apoyar
esa parte y no se quedaría tan huérfana como si no hubiese nadie con los conocimientos
necesarios.
En la mayoría de los casos, un desarrollo externo no cumple con ciertas "reglas" que
sí que cumplen cuando trabajamos con nuestros equipos internos, donde además
tenemos la ventaja de poder tratar a diario y cara a cara con los desarrolladores.
En el caso de encontrar defectos, esto nos dará un tiempo muy valioso que
dedicaremos a mejorar (o a realizar) los casos de prueba, en base a los requisitos
antiguos y nuevos que se especifiquen después (suele ocurrir en estos casos, que se
cambien cosas en el momento).
Una vez que se devuelvan los defectos y podamos reprobarlos, dedicaremos el 100%
del tiempo a validar el desarrollo externo con los casos de prueba completamente
actualizados, permitiéndonos encontrar otros defectos que no hemos podido encontrar
en una primera exploración.
Una vez que hemos pasado los casos de prueba y hemos encontrado defectos que
tendrán diferentes criticidades, de esta manera nos resultará muy fácil montarnos una
batería de pruebas de regresión funcional que podremos automatizar y poder cerrar
siempre este desarrollo y comprobar que no falla en ninguna de las subidas a producción
que tengamos en el futuro.
68
58. Pruebas en Responsive web Design
Desde hace bastantes años venimos escuchando cosas como, por ejemplo, que las
páginas se auto adaptan a los dispositivos o que realizando una sola versión es portable
a cualquier móvil o Tablet. Esto es gracias al Responsive web Design o diseño adaptable.
Esta filosofía de diseño y desarrollo se basa en la idea de “web for all” que, en
resumidas cuentas, es adaptar la apariencia de las páginas web a los diferentes
dispositivos del mercado donde se visualice la misma. En principio, debería de tener una
visualización adecuada en cualquiera de estos, proporcionando una lectura clara,
sencilla y cómoda para los usuarios.
La primera vez que se utilizó la definición de Responsive Design fue en A List Apart y
tras fue ampliamente descrito en la W3C en julio de 2008 con el nombre de “One Web”.
La idea principal del Responsive web Design se ha visto truncada en los últimos años,
por la gran cantidad de dispositivos en el mercado, que hace muy complicado que la
respuesta en todos sea buena y provoque una navegación tortuosa y costosa, sobre
todo en los que son de gama baja o “clones”.
Habitualmente, para realizar este tipo de diseños, se utiliza CSS3 que “selecciona” la
versión más optimizada para ese dispositivo y reorganiza los elementos o discrimina los
que no funcionarían correctamente. Además, HTML5 permite que la experiencia para
los usuarios sea excelente.
La gran ventaja de este tipo de diseños es el ahorro de costes, a largo plazo, ya que
el desarrollo se centra únicamente en una sola web y no hace falta desarrollar varias,
para los diferentes SO que hay en el mercado (mínimo serían tres: iOS, Android y
Windows Phone). Además, permite no duplicar contenido, mejorando el SEO de la
misma, mejora gratamente que tus contenidos sean repartidos por redes sociales de
una manera rápida y el mantenimiento es más sencillo.
69
módulo funciona correctamente en un dispositivo de gama alta pero no en uno de gama
baja y viceversa (puede que aún no esté preparado para una versión tan moderna de
sistema operativo).
Las herramientas que nos ayudan a realizar este tipo de averiguaciones son los
“mapas de calor”.
Para realizar este tipo de “gráficas” necesitamos una gran cantidad de datos y de
pruebas, porque, si no, no sacaríamos conclusiones fiables y no se conseguiría
absolutamente nada.
70
Todas las pruebas y gráficas, junto con unos test A/B nos pueden ofrecer casi
exactamente donde colocar cada elemento de la web para que la experiencia del usuario
sea lo más satisfactoria posible, diferenciándonos de la competencia y obteniendo
mejores resultados.
Se puede realizar una auditoría del buen funcionamiento del mismo con unas
sencillas reglas y pasos.
Aquí os expongo algunas pruebas que se pueden realizar, dentro de las muchas que
existen, donde poder comprobar que el SEO de una página es correcto, que está bien
indexada y que concretamente, los principales buscadores nos mantendrán en las
primeras posiciones para que tengamos más visitas y/o clientes potenciales.
2. Para realizar esta prueba y si cumple nuestros requisitos, basta con abrir
varias pestañas de diferentes páginas de la web y observar que no se repite
ni el título ni la descripción.
71
que la gente suele entender y quedarse con URLs claras y sin demasiados
caracteres. La solución puede recaer en editar la configuración del fichero
.htaccess o de tu CMS. Esta prueba se realizará abriendo varias pestañas y
fijándose que las URLs sean claras, cortas y con textos que describan lo que
aparece en la página en concreto.
5. Velocidad de carga. Para realizar esta prueba tendrás que utilizar una de las
muchas herramientas que nos proporciona internet. En este caso, os dejo
algunos ejemplos para que podáis utilizarlos:
• https://developers.google.com/speed/pagespeed/insights/: la
herramienta estrella de Google, en ella tendremos mucha cantidad de
datos y a su vez, nos ofrece directamente los reportes e informes
personalizados que queramos. Otra ventaja es que incluye una utilidad
de los cambios que deberíamos de hacer para mejorar el rendimiento.
• http://www.webpagetest.org/: herramienta sencilla, con muchas
opciones y totalmente gratuita.
• http://tools.pingdom.com/fpt/: ofrece menos datos que las anteriores,
pero a su favor podemos decir que están realmente bien organizados y
son muy sencillos de entender.
Como veréis, estas seis claves que os aporto son algo relativamente sencillo y hay
muchos más puntos que comprobar, pero únicamente os quiero guiar hacía donde
encauzar las pruebas en posicionamiento web y poder aportar un extra más a nuestro
trabajo.
Espero que os sirvan para ayudar a que en vuestros proyectos (si es que lo necesitáis),
se ha realizado un buen SEO.
72
Para los que no lo conocen, Selenium es una herramienta que automatiza en
navegador web y que contiene dos herramientas en su suite de pruebas:
Pulsamos el botón REC (Círculo rojo) para comenzar a grabar y después, pulsaremos
el botón "Play" para reproducir lo grabado. Tenemos un módulo para ver los comandos
que hemos grabado y para editarlos si quisiéramos, añadiendo nuevos o
parametrizando datos.
En la parte de más abajo del editor tenemos los comandos. Selenium tiene tres
principales:
Existen muchas referencias sobre Selenium IDE en su página web, las podeís
consultar aquí.
Las acciones se pueden crear desde el propio Selenium o más sencillo todavía
pulsando en el botón derecho de Mozilla Firefox, en el elemento que seleccionemos. La
opción será "Show all Available commands" o "Visualizar todos los comandos
disponibles".
De esta manera, se nos desplegará un listado con las opciones que podemos utilizar
en el elemento y así insertar una acción de manera más sencilla.
Una vez que tengamos nuestra pantalla "grabada" podemos exportarlo con la API
que nos proporciona la Suite, Selenium WebDriver.
73
Visual Studio y apoyar nuestro trabajo de manera muy eficiente. En muchos casos, tanto
CodedUI como Selenium tienden a complementarse, por lo tanto, no descartaría la
utilización de ambos.
Otra extensión o framework que viene muy bien para complementar, ejecutar o
editar estas pruebas es Unit que se puede descargar aquí. En la mayoría de los casos
tendremos que utilizarlo con Selenium WebDriver para la exportación de casos en C#.
Cuando tengamos una buena batería de pruebas automatizada con Selenium, existe
otra extensión muy interesante, que es Test Results (Selenium IDE).
Esta nos permite guardar los resultados de los Test con un solo Click, pudiendo tener
un Log y unos históricos muy interesantes. Además, como complemento, se podrán
exportar los casos de manera individual.
Lo único que tenemos que hacer es ir utilizando todo este abanico de herramientas
e irnos adaptando a sus posibilidades, hasta que encontremos la que mejor encaja en
nuestro proyecto para nuestra aplicación.
74
Hace unos años, la tecnología española lideró unas pruebas de interoperabilidad con
el 100% de éxito en la OTAN. El programa tenía el nombre de SEISMO y estaba financiado
por la subdirección general de tecnologías e innovación (SUBTECIN) y realizó un número
de pruebas satisfactorias muy por encima al de otros sistemas, siendo el único que
demostró ese nivel de éxito. El programa de cooperación intentaba maximizar el uso de
recursos de vigilancia y reconocimiento, así como mejorar la situación a través del
empleo y el uso colaborativo de productos de sensores y capacidades de explotación.
• Capas de protocolo: hay que regirse por lo que diga la norma técnica y por lo
tanto cada capa tiene que ser interoperable. Para probar esta zona se han de
efectuar acciones que sean precisas y comunicarse con otros elementos a través
de mensajes e intercambio de datos.
• Códec: Entrarían dentro, las pruebas con carga de video y audio, que cada día
son más complejas por el gran abanico de protocolos que se utilizan. Se pueden
realizar unas pruebas aisladas de los mismos o realizar pruebas en conjunto para
ver cómo se comportan unos con otros.
Este tipo de pruebas entran más en la rama de las telecomunicaciones, pero siempre
tenemos que tener toda la información de las mismas ya que con el avance de pruebas
móviles, puede ser necesario realizar unas comprobaciones similares para verificar que
todo es correcto dentro del software que estemos certificando.
75
Esto ha cambiado mucho a lo largo de los años y ahora mismo, podemos garantizar
la internacionalización de una manera más clara y sencilla, ya que el código utilizado
suele tener una tendencia única y hay reglas y bases asentadas que llevan los desarrollos
a un camino mucho más unificado.
76
64. Habitualmente...
Habitualmente, cuando hablamos de un equipo de Aseguramiento de la calidad o de
Testing, tenemos que mirar al final del proceso, al último paso de todos, al maravilloso
mundo de la falta de tiempo y de jornadas para tener todo completamente listo e
impoluto para subir con garantías. No se le da la importancia suficiente a la validación,
pero sí que se le da la importancia suficiente a las lamentaciones cuando algo falla en
producción de cara a un cliente.
77
de satisfacción personal, cuando miro atrás, cuando no estábamos y los usuarios de
ciertas aplicaciones no podían tan siquiera acceder en muchos casos y ahora, felizmente,
pueden trabajar con total comodidad y seguridad porque hay un “ángel de la guarda”
que revisa todo el trabajo y se lo entrega todo lo bien que se lo permiten, luchando a
contracorriente día tras día para que, en algún momento, pueda, habitualmente,
sentarse de igual a igual con el resto de compañeros de profesión.
Cuando sucede algo así ya no podemos pararlo, tenemos un problema tras otro,
solucionamos una cosa y nos falla por otro lado, volvemos a solucionarlo y nos cuesta
un parto estabilizar de nuevo, los astros se alinean en nuestra contra y todo salta por
los aires...bien, paremos, recapacitemos, respiremos... ¡ALTO!
Una vez reunidos los implicados, buscamos un plan de choque, pensamos las
primeras medidas, las primeras impresiones y apuntamos punto por punto que hacer y
empezamos a crear un plan de choque. Ahora bien, no existen fallos, no puede haber
un, pero, no queda hueco para el error. La tensión es grande, cual película de suspense,
nos jugamos mucho y hay que hacerlo bien.
Esto es un trabajo en equipo, no un tira y afloja para ver quién es el más fuerte, como
se dice comúnmente, a ver "quien la tiene más larga", de quien ha sido la culpa o quien
hace mejor su trabajo...lo principal es ayudarnos, hacer equipo, trabajar con un ritmo
adecuado e ir paso a paso sin parar y sin pausa.
Cuando "nos crecen los enanos" aflora nuestra profesionalidad absoluta, nos
ponemos a trabajar en conjunto, bien, con esa tensión especial que nos concentra al
100% en lo que hacemos y no fallamos, somos uno y lo hacemos realmente bien, te das
cuenta de lo "jodidamente" buena que es la persona que tienes al lado, que
posiblemente en más de una ocasión has puesto verde y recapacitas y piensas y meditas
y quizá, parte del problema has sido tú.
¡Vaya!, no lo habías pensado...tú, que no fallas nunca, que haces todo bien, que
78
siempre es culpa del de al lado, puede que tengas parte de culpa en que esos enanos
estén creciendo sin parar, vaya chasco, ¿verdad?
Quizá, cuando "nos crecen los enanos" nos damos cuenta de que, si todos trabajamos
en equipo, con humildad y ayudándonos unos a otros, no necesitamos gritar una vez
tras otra esa dichosa frase que tantos disgustos nos da.
Las pruebas de stress se suelen hacer para cubrir los siguientes puntos:
• Conocer los límites de la aplicación. De esta manera sabemos que, si hay un pico
de entrada o de uso excesivo, tenemos que elevar la disponibilidad y así ahorrar
costes, pudiendo tener una disponibilidad menor en otros momentos.
Cualquier fallo en algún punto de los descritos más arriba suele tener un coste
bastante importante en cualquier aplicación, tanto a nivel de credibilidad como a nivel
monetario, por ello, este tipo de pruebas son muy importantes.
Lo primero que tenemos que hacer cuando vamos a comenzar con este tipo de
pruebas es saber exactamente qué es lo que nos interesa medir y crear un buen
escenario de pruebas, el tiempo es oro y no podemos desaprovecharlo.
Algunos puntos a medir con las pruebas de stress son los siguientes:
79
• La cantidad de memoria consumida en el servidor físico o virtual en un momento
determinado.
Esto es una primera aproximación a los que son las pruebas de Stress, su utilización
y algunas de las herramientas que se pueden utilizar para llevarlas a cabo. Como os digo,
las pruebas de stress son muy importantes para saber los puntos débiles de las
aplicaciones y cuando o donde debemos de poner el foco para que los usuarios tengan
una garantía de poder utilizar las aplicación en todo momento, tanto crítico como no.
80
soporte para casos de prueba, planes de prueba, proyectos, gestión de usuarios
y además proporciona una serie de informes y estadísticas. Podéis descargarla
desde su página oficial.
• Mantis bug tracker: es una solución completa para gestionar tareas. Es muy
sencilla de instalar y de comenzar a utilizar. Permite el seguimiento de equipos
de trabajo y realizar históricos. Quizá sea la menos potente de las tres. Podéis
encontrarla en su página web.
Estas tres herramientas OpenSource, para mí, a día de hoy, son las mejores que
podéis encontrar y las que más experiencia tienen porque llevan en el mercado ya
bastante tiempo. Hay otras muchas que seguramente se puedan acoplar a vuestros
proyectos, incluso, mejor que estas, todo es cuestión de probar e ir configurando la
mejor de ellas para vuestras necesidades.
Ahora vamos a hablar de herramientas que no son OpenSource. Las cuales suelen
tener unas características mucho más expandidas que las anteriores y que tienen ciertas
garantías a la hora de trabajar con ellas.
• Jira: Para mí la mejor herramienta para proyectos ágiles. Es una aplicación web
para el seguimiento de defectos. Gestiona requisitos, tiene seguimiento y un
flujo configurable, panel ágil, gestión de proyectos…es muy completa y
altamente intuitiva. Desde la web de Atlassian se puede recopilar información
de la misma.
Es un oficio complicado, a veces malogrado, que no brilla, en el que hay que estar
luchando día tras día para buscar la valoración exterior e interior que uno cree necesaria,
en fin, diríamos que difícil.
Habitualmente en los proyectos somos muy pocos, pero nuestro trabajo hace feliz a
muchos, ¿en qué sentido? Pues muy sencillo, queridos lectores:
Hace feliz a desarrollo, que hace que su trabajo se entregue con calidad, pudiendo
irse tranquilo a casa, hace feliz a los directivos, que ven como su proyecto va viento en
popa y tienen que dirigir su esfuerzo y su mirada a otros asuntos, quizá más importantes
(una preocupación menos), hace feliz al bolsillo de la empresa, podemos hacer ahorrar
mucho dinero y sobre todo, la parte que más me gusta: hace feliz a los usuarios, la gente
que utiliza el producto.
Cuando alguien intenta utilizar el producto en el que hemos dedicado tantas horas y
esfuerzo y puede trabajar a gusto, sin problemas, esforzándose en hacer bien su trabajo
y no en cómo hacer funcionar ese maldito programa, todo va como la seda…que a gusto
vive uno cuando utiliza algo y funciona bien, no falla, dedica sus minutos justos y
necesarios, guarda, apaga y se dedica a otra cosa. Tranquilidad absoluta.
82
Ahora cierro los ojos y me doy cuenta que realmente no me dedico al Aseguramiento
de la Calidad del Software, me dedico a Garantizar Felicidad.
Gracias a todos los profesionales que garantizan esa felicidad, vuestro trabajo es
único y vuestra dedicación la más importante, seguir haciendo sonreír al mundo.
Habitualmente y en diferencia a los Test A/B, el Split Testing se utiliza cuando existen
más de dos variables, aportándonos información sobre si un cambio en la web nos
implica un incremento o una maximización de un determinado módulo o acción (por
ejemplo, que se pulse más en un banner de publicidad).
Al realizar este tipo de test, podemos asegurar en cierta medida que un diseño u otro
de la web nos benefició o no, dependiendo de la utilización que queremos que se dé a
la misma. Los clientes o usuarios, tendrán una experiencia más rica, si se elige un diseño
que otro y les facilitará la vida el uso de una manera que, de otra, por lo tanto, es
realmente importante saber este tipo de casuísticas para que estos clientes puedan
decantarse por este producto y desechar a la competencia.
Se puede utilizar el Split Testing con elementos visuales, como son imágenes, videos,
colores determinados, con tipos de texto (que llamen la atención o pasen más
desapercibidos, con la colocación y tamaño de los botones, hay gran cantidad de
variantes a utilizar y por utilizar.
Este tipo de Testing se utiliza mucho en publicidad y podemos seguir una serie de
consejos que nos ayudarán mucho a la hora de tomar medidas de mejora:
83
en la noticia o en lo que esté leyendo o le llevará a seguir buscando. Es muy
importante que este primer párrafo llame la atención.
Una vez que hemos comprobado que cada módulo funciona independientemente,
que funciona junto con los demás módulos, que se puede utilizar bajo un stress y unas
condiciones extremas, necesitaremos escuchar que es lo que piensan los usuarios
finales del software que hemos realizado.
En este punto el cliente podrá opinar libremente, dando el visto bueno, reportando
mejoras o defectos o invalidarlo por completo ya que puede ser el caso de que no sea
bien recibido por su parte.
84
71. Cuatro tipos de pruebas básicas en el mundo del Testing
Cuando comenzamos a trabajar en el mundo del Testing, tenemos una serie de
pruebas básicas que tener en cuenta.
Este tipo de pruebas se realizarán cuando nos vayan entregando trabajo. Son pruebas
profundas, realizadas con casos de pruebas y que tienen que entrar en todo el detalle
posible.
La progresión funcional tiene como punto fuerte, encontrar defectos que no son tan
básicos y que podemos limpiar con el siguiente grupo de pruebas: Las pruebas
exploratorias.
Las pruebas exploratorias son unas pruebas más básicas, sencillas y rápidas con las
que haremos una primera limpia.
Estas pruebas nos ayudarán a dar una primera vuelta a la descripción y realización de
los casos de prueba, ya que en la teoría pueden salir unos y dando una vuelta a la
pantalla se nos pueden ocurrir algunos más.
Otro grupo de pruebas importante son las pruebas de Retesting. Estas pruebas
cubren un ratio de ejecución importante en nuevas metodologías, ya que son cosas que
se han quedado pendientes o han fallado en los Sprint anteriores y que tenemos que
retomar después. No se pueden integrar en el grupo de progresión funcional ya que han
pertenecido a este en el sprint anterior al que estamos y no son nuevos desarrollos, sino
cosas pendientes anteriores. Estas pruebas se realizan con casos de prueba y
habitualmente son nuevas ejecuciones de esos casos de prueba que ya hemos pasado
anteriormente.
Por último, tenemos el grupo de las pruebas de regresión. Estas pruebas tienen un
vacío legal dependiendo de las personas y de su opinión. Hay gente que basa estas
pruebas en defectos anteriores que pueden ser críticos y no queremos que pasen, hay
otros que marcan ciertos casos de prueba como de regresión y hay otros que realizan
casos de regresión para revisar que la aplicación, por lo menos, funcione de manera
correcta.
85
Yo soy de los que opina que ninguna de las tres opciones es la correcta, sino una
mezcla de las tres. Me gusta en un primer momento marcar casos realizados que son
más críticos e ir ejecutándolos durante todos los Sprint siguiente y cuando tenemos algo
más de tranquilidad ir haciendo una batería de pruebas de regresión exclusiva que nos
permita probar lo que nosotros veamos y poder automatizarla después. A esta batería
nueva agregaremos casos de defectos o casos más críticos que nos podamos encontrar
por el camino.
En grandes rasgos estos tipos de pruebas son los más “básicos” que podemos realizar
y que se pueden ampliar con muchos otros, además de, poder sustituirlos y cambiar la
manera de realizarlos. Con esta simple guía, espero dejar algunos temas claros para que
los nuevos integrantes del mundo del Testing se apoyen y aclaren sus dudas, aunque
sea de una manera sencilla.
Un defecto tiene que tener unas características muy claras y siempre bien definidas.
En primer lugar:
El título tiene que ser totalmente claro. Leyendo el título, cualquier persona tiene que
saber de qué trata, sin ni siquiera haber leído la descripción. De esta manera
facilitaremos el trabajo al desarrollador, a nuestros compañeros si tienen que consultar
el listado y a nosotros mismos si queremos buscarlo y no podemos consultar el ID o
similar.
La descripción tiene que ser igual de clara y debería de contener una serie de pautas
y homogeneizar de la mejor manera posible todos los defectos que demos de alta. La
descripción principal tiene que explicar en una frase corta que es lo que sucede,
poniendo detalles del error y donde se produce.
En segundo lugar, tras la descripción, tendremos que describir pasó por paso como
reproducir el defecto, en que pantallas tenemos que ir entrando o donde tenemos que
pulsar para que nos aparezca. De esta manera, el desarrollador que no tiene que tener
un conocimiento funcional muy amplio de la pantalla, podrá reproducirlo fácilmente
siguiendo nuestros pasos y se podrá poner a solucionarlo más rápidamente.
Una vez que tenemos una descripción y los pasos de reproducción, uno de los puntos
más importantes es en que entorno lo hemos reproducido, en que variable, con qué
sistema operativo o con que navegador web. Aquí deberíamos de poner todo lujo de
detalles, así el desarrollador podrá descargarse o montarse el entorno lo más similar
posible dentro de sus posibilidades y de esa manera poder reproducir el defecto más
fácilmente.
Por último y algo importante, también, es intentar adjuntar una captura de pantalla
86
del defecto en concreto. Lo ideal es intentar adjuntar una captura completa de la
pantalla y no solo un pequeño trozo de ella, así si el desarrollador tiene alguna duda,
consultando la pantalla, sabrá exactamente donde nos encontramos.
La gran mayoría de nosotros sabemos exactamente como realizar este tipo de cosas
y más que nada, abrir defectos, pero las personas que quieren comenzar en el mundo
del Testing, quizá, no suelen encontrar toda la información posible en Internet, así que
poco a poco desde www.diariodeuntester.es y www.testingbaires.com los podremos
ayudar y centralizar toda la información posible por y para ellos.
Para ello, con este boom, se comenzó a utilizar la técnica de V&V (Verificación y
validación) que se ejecutaba a lo largo de todo el ciclo de vida del producto, así se fue
evolucionando al denominado Control de Calidad Software y llegando a nuestros días
como la evolución natural, llamada Aseguramiento de la Calidad del Software.
Ahora que conocemos más, podemos deducir la importancia que tiene a día de hoy
este trabajo, ya que nos encontramos en un mundo con usuarios y clientes cada vez más
exigentes que buscan resultados en los productos por los que invierten un determinado
dinero.
87
• Realizar un plan de determinadas actividades que aseguren en todas las fases del
ciclo de vida la Calidad que se busca.
• Auditar y cumplimentar los informes que servirán de histórico para los diferentes
evolutivos o actualizaciones que tenga el software o para diferentes proyectos a
lo largo del tiempo.
Todas estas fases, evidentemente, no las puede llevar a cabo una sola persona, por
lo tanto, es altamente recomendable el tener un equipo completo de Aseguramiento de
la Calidad que nos de la confianza suficiente.
Tras determinar los puntos anteriores, el equipo tiene que guiar al equipo de
desarrollo a implementar la calidad necesaria para ese software, haciéndolo estable,
tapando posibles fisuras con evolutivos y sacar a producción un aplicativo de calidad y
88
bien armado.
La Calidad tiene que realizarse de principio a fin, no vale que únicamente el equipo
de Aseguramiento ponga todo el foco en probar el software, esto tiene que venir de más
abajo, desde desarrollo, cuando este equipo tendrá que realizar sus verificaciones y sus
validaciones para asegurarse que pasa a la siguiente fase lo más limpio posible. Después
de que el software pase las validaciones pertinentes en el equipo de aseguramiento de
la calidad, deben de realizarse otras pruebas que determinarán, definitivamente el paso
total a producción, las llamadas UAT o aceptación (que veremos en artículos
posteriores).
La empresa tiene que ser consciente y apoyar al 100% este ciclo de Calidad de
principio a fin para garantizar totalmente el software, ya que se beneficiará a corto plazo
de las ventajas que se le aportan, tanto a nivel económico como en tranquilidad,
disminuyendo los riesgos.
Cuando se realiza un buen ciclo de Calidad, los usuarios potenciales del software
están contentos, hablarán bien y por lo tanto podremos ganar nuevos, si es, al contrario,
al final acabarán buscando alternativas y nos veremos abocados al fracaso. A nivel de
tranquilidad de trabajadores y directiva, es muy importante, ya que un cliente satisfecho
no presionará para que se solucionen problemas y podrá trabajar tranquilo día a día.
89
como a nivel de nombre de proyecto, mejorando frente a los principales
competidores.
Sabemos que adquirimos un producto o un servicio que nos dará ciertas prestaciones o
nos cubrirá una serie de necesidades de una manera más adecuada o más completa.
Estos eslabones tienen que ser sólidos, constantes, bien definidos y sobre todo que
tengan calidad. Si lo pensamos un poco a más alto nivel, nuestra acción sirve para otra
persona o para otro grupo de personas obtengan un beneficio.
Si ese beneficio no tiene la calidad suficiente, llevará a que el siguiente grupo de
personas no obtenga todo el buen resultado que se podría obtener y así eslabón tras
eslabón haciendo que la cadena se vaya debilitando, incluso pudiendo ocasionar un
deterioro más grave que desbarate todo el proceso.
La calidad en nuestro trabajo tiene que ser consecuente, tiene que ser objetiva, tiene
que aportarnos un beneficio propio y un beneficio mutuo entre iguales, quedando claro
que, si el trabajo se realiza bien bajo nuestro tejado, el siguiente eslabón tendrá una
base reforzada e irá en aumento, aportando un beneficio global que nos repercutirá de
manera recíproca personal y profesionalmente.
90
equipos.
Los procesos organizativos que se van implantando, van funcionando, cogiendo forma,
implantando cultura de calidad y cultura de organización global y unificada.
Cada día, veo más claro que estos procesos organizativos son completamente
necesarios en las diferentes organizaciones donde trabajemos. Aportando una serie de
pautas de trabajo, consensuando con las diferentes personas y abriendo, entre todos,
la puerta a la organización, tenemos mucho terreno labrado y parece que no, pero se
nota de sobremanera como todo va mucho más rodado, aparecen menos problemas y
se van tomando una serie de pautas que hacen que la máquina no pare y sea
completamente constante.
Estos procesos se han de implementar de una manera progresiva, haciendo ver que son
necesarios y que poco a poco van ayudando a las personas a mejorar su día a día y a que
se optimice su labor.
Esta información tiene que ser contundente, sin fisuras y que aporte un gran valor a
cada persona, sin que se sienta perjudicada ni señalada. Nunca hay que buscar un aporte
de información que ponga en tela de juicio el trabajo de nadie, sino que ayude a mejorar,
poco a poco, el trabajo de las personas y los equipos.
En el caso de que alguien se sienta perjudicado hay que saber tomar, de manera ágil y
rápida, una determinación para agrupar todos los problemas que se puedan tener y
mejorar o ayudar a la persona, explicando, porque se ha mandado cierta información y
como puede ayudarle, no perjudicarle.
91
En base a informaciones, siempre hay que tener claro que se ha de aportar, de qué
manera y con qué herramienta vamos a trabajar. Lo ideal es tener informes de datos
concretos, de defectos en diferentes versiones o despliegues, que elementos de trabajo
vamos a desplegar en producción o en que hemos estado trabajando en un periodo de
tiempo. Para ello podemos recopilar diferentes informaciones con Excel y, de manera
más novedosa con Power BI.
Power BI nos muestra una serie de paneles y de informaciones con unos juegos de datos
que podemos migrar desde Excel, OneDrive o VSTS, por ejemplo y explotarlos a nivel
gráfico de una manera muy potente. Os escribiré un artículo con datos concretos y
niveles de utilización de esta herramienta para que le podáis sacar todo el jugo posible.
Dentro de los procesos organizativos que podemos aportar en los proyectos donde
trabajamos, existen muchas variantes, muchas formas y maneras, pero siempre es
esencial, como comento en el párrafo anterior, tener claros cuales van a ser y crearlos
de manera rutinaria a lo largo del tiempo para que esa organización se convierta en
rutinaria, cultivando en las personas diferentes culturas, como la de calidad o la
organizativa o de procesos. Esto nos dará la base esencial para que no solo organicemos
el proyecto de manera global si no que cada persona culturalmente hablando,
interiorice las pautas esenciales y las ponga en práctica en su día a día, ayudando a los
que le rodean. Una especie de simbiosis que aumentará la calidad en el proyecto y en el
trabajo diario de cada uno.
Taylor fue el promotor de la organización científica del trabajo y tras ello, realizó el
proceso de trabajo del que vamos a tratar en este artículo. En sus industrias, que eran,
principalmente del acero, hizo estudios, estadísticas y pruebas con medición de tiempos
de ejecución, remuneración en el trabajo y estandarizó una revolución personal de cada
trabajador, mejorando el rendimiento de cada uno.
92
Antes del Taylorismo, los trabajadores tenían libertad para realizar las labores
encargadas, esto suponía que cada uno lo hiciese a su manera y se perdía tiempo en
acciones que no eran del todo óptimas, al final, usando la destreza de cada uno y
determinando que mejor manera de hacer cada acción, se sacaba un “boceto” de cómo
realizar una labor en el mejor tiempo posible, optimizándolo totalmente y ahorrando
costos en el mecanismo.
Una de las pegas que tuvo este método, fue que ciertas industrias comenzaron a pagar
a menor precio las piezas para que los obreros trabajasen más deprisa y obtuviesen más
beneficios aportando más trabajo, esto generó malestar y se solucionó a partir de un
nuevo rango de trabajadores, mejor conocidos como supervisores. Además, tuvo el
problema del monopolio del conocimiento, algo que hemos heredado, en muchos casos
hasta nuestros días.
El Taylorismo, como proceso y precursor del resto, mejoró las industrias en el sentido
de aumentar la destreza de los trabajadores, control del tiempo aumentando el capital,
individualismo personal cualificado, mejora de movimientos innecesarios y aportar un
mayor tiempo productivo dentro del proceso.
Según Frederick Taylor, hay que seguir las siguientes pautas para poner en marcha su
proceso:
Este proceso tuvo auge a finales del siglo XIX, cuando el crecimiento industrial fue
enorme, pero tuvo un rechazo enorme en los trabajadores, por lo tanto, se mejoró,
dando lugar al fordismo, que lo trataremos en el siguiente artículo. También,
93
aparecieron variantes mucho más modernas como el Taylorismo digital.
La fuga, en realidad y tratando el tema que realmente nos interesa, fue una degradación
constante de los métodos y procesos utilizados para los presos, un relajamiento en los
diferentes trabajos de los carceleros y una serie de malas acciones en el método de
trabajo que se aplicaba hasta la fecha. Por lo tanto, la calidad en general, descendió.
Durante más de 25 años, en sucesivas fugas fallidas, los métodos y procesos de trabajo
utilizados eran infranqueables, seguros y repetitivos, por ejemplo, pudiendo tener un
control absoluto del número de presos y las acciones que realizaban. El proceso tenía
unas pautas de calidad sobresalientes y eso se notó durante todo este tiempo, todo
intento de fuga, fue desbaratado.
Una vez que estas fugas iban siendo fallidas y el tiempo pasaba, el método de trabajo
bajó el listón, por lo tanto, descendió su calidad, aflojando las pautas, siendo menos
severas, dando más libertad de acción a los presos y dejando que la confianza se
apoderase de la que llamaban “la roca”.
Esta confianza, que con el tiempo se convirtió en relajación y costumbrismo, hizo que
tres presos idearan una de las fugas más famosas de la historia, se llamaban: Frank Lee
Morris, Clarence Anglin y John Anglin.
Estos tres presos, escarbaron agujeros en sus celdas, construyeron “tapas” falsas con
papel secado con la forma del agujero, para disimular y con el mismo método,
construyeron unas cabezas falsas que hicieron de señuelo, como si estuviesen dormidos
en la cama.
Con estos problemas empiezan los apaños, tapando agujeros y poniendo soluciones
temporales a cosas que deberían de cerrarse totalmente. La calidad se degrada y esto
hace que las cosas no funcionen correctamente. Como en la historia de Alcatraz, La fuga
94
puede comenzar y con ella una pérdida de información, de talento y de personas, que
determinará un goteo constante que puede hacer que un proceso se desmorone desde
sus cimientos.
Lo que no se puede hacer, bajo ningún concepto es comparar el sitio donde se trabaja
con Alcatraz, o sea, como una cárcel. En el caso de muchos lectores (o me imagino que
será así) y en mi caso personal, la realidad del proyecto y del sitio donde trabajo dista
mucho de ser una cárcel, todo lo contrario, es un sitio donde disfruto profesionalmente,
donde aprendo cada día cosas nuevas, donde, también, los demás aprenden de mi y
donde existe tal cantidad de talento que sería complicado describirlo en pocas palabras.
Eso si, lamentablemente también hay casos completamente diferentes del mío y cuando
alguien ve el sitio donde trabaja como una cárcel, mi recomendación es que,
dependiendo de las diferentes situaciones personales de cada uno, finalice la relación
laboral ya que para que todo lo escrito anteriormente se cumpla, el profesional y la
organización tienen que sentirse a gusto y beneficiarse mutuamente.
Cuando perdemos la ilusión en algo, es mejor seguir caminos separados y cerrar la etapa
positivamente. Bajo mi punto de vista, hay que evitar convertirse, profesionalmente
hablando, en presos con juicios predispuestos por nuestras propias acciones. El sitio
donde desarrollarnos profesionalmente tiene que ser un sitio donde encontrarnos a
95
gusto y donde poder disfrutar del día a día si no, nosotros mismos podemos llegar a
convertir la realidad en una “Alcatraz personal”.
En cada programa tenemos tres fases, cosa que suele pasar también en cada proyecto
que he visitado:
1. Fase de observación: cuando Chicote llega, lo primero que hace es probar los platos,
observar como hacen las cosas, como las cocinan, como trabajan y como actúan de cara
a los clientes. Apunta, aprende y comienza a sacar conclusiones positivas y negativas de
sus acciones principales.
Aquí, se presenta a todo el equipo, lo conoce, le marca distancias, sabe a que atenerse
y como actuar o tratar con todos, para ser más o menos asertivo. Esto pasa exactamente
igual en cualquier proyecto, hay personas más aprensivas a las que hay que tratar de
una manera y otras que se puede hacer un tratamiento de tu a tu, donde las mejoras
fluyen directamente.
Pasa unas jornadas de trabajo con ellos y así puede tener una valoración mucho más
profunda. En esta fase se mantiene, más o menos, al margen y solo interviene en caso
de necesidad excesiva, deja hacer y observa, simplemente.
Esto me suele pasar cuando he llegado a los proyectos donde he trabajado. Primero
observo, dejo trabajar, aprendo como lo hacen y voy valorando poco a poco que cosas
se están haciendo bien y que cosas no se están haciendo tan bien y voy apuntando
donde y como mejorar.
De ahí, ambos, sacamos un plan de actuación, hablando y tratándolo con nuestro equipo
de personas, que nos ayudan a ponerlo en práctica, destacando puntos positivos y
sacando puntos de mejora para que ayudar a las personas sea mucho más fácil.
2. Fase de ayuda: en esta fase, cuando Chicote tiene unas pautas ya revisadas y
valoradas por su equipo de trabajo, se dedica a introducir pequeños cambios en los
procesos de trabajo, ayudando con mínimas pautas que, en principio, deberían de
mejorar las acciones y hacer que el trabajo fluya mucho mejor.
96
En muchos casos, al seguir haciendo las cosas no demasiado bien durante tiempo o por
falta de conocimientos, estos cambios no suelen ayudar demasiado, aunque lo que, si
que se ve, es que la cosa se puede mejorar y apoyarse en simples pautas generalizadas
que ayudan a que el proceso fluya con mayor facilidad.
3. Fase de implantación y mejora: Una vez que se han estudiado estas pautas más
personalizadas, se estudian y se sacan acciones concretas que se pondrán en
funcionamiento a lo largo del tiempo.
Estas pautas se van añadiendo en el tiempo y de manera progresiva, ya que no se
pueden realizar cambios de golpe y totalmente en un sitio, ya que causan problemas de
manera disruptiva y las personas que tienen formas de trabajo adquiridas con el tiempo
se les rompe el día a día de manera total.
Chicote, lo que hace es "hacer un lavado de cara" en el negocio, les presenta una nueva
carta y una nueva manera de hacer las cosas, pauta a las personas y las dice donde
tienen que estar y cuales son sus acciones, clarificando su puesto en el restaurante.
Esto es muy similar a lo que ocurre en un proyecto. Se presenta una propuesta que es
un "lavado de cara", se utiliza la base de lo antiguo y se mejora con lo nuevo. Se clarifican
los puestos y las responsabilidades de los profesionales y se les dan pautas de actuación
dentro de un proceso conciso, sencillo y fácilmente ejecutable. En resumen, las nuevas
recetas son las acciones y la nueva carta, de manera global, es el proceso a implantar.
Como veis, parece que no, pero todo está relacionado con la calidad y los procesos,
desde un programa de mejora de restaurantes a la mayor empresa que nos podamos
imaginar. La calidad es un ente que está por encima de cualquier cosa que nos
imaginemos, por eso, Alberto Chicote, entre otros muchos, tiene la buena fama que
tiene en sus restaurantes, porque nos aporta calidad por encima de todo.
97
última versión, la podéis descargar desde aquí:
https://sourceforge.net/projects/testlink/files/latest/download?source=files
En ella se pueden crear casos de prueba, baterías de pruebas, ejecución de las mismas
y seguimiento de los resultados obtenidos. Es muy similar a lo que se puede realizar con
MTM o con ALM (siendo estas de pago y más completas en algunos casos).
Una de las cosas que mas me gustan de Testlink, que para ser una herramienta que no
tiene coste alguno, tiene funcionalidades muy potentes y que nos solventan de buena
manera la forma con la que vamos a probar un software.
El reporte de informes en tiempo real es una de las mejores cosas que se pueden
encontrar, ya que permite una consulta directa y efectiva de lo que se está realizando
en ese momento, pudiendo tomar decisiones en base a que pasos dar o que hay que
modificar o mejorar para llegar en fecha y entregar con calidad.
Testlink, a simple vista, parece que es una herramienta que se ha ido quedando más
anticuada, respecto a sus principales rivales, pero para mi, realmente, sigue siendo
bastante potente (más fea a nivel de diseño) pero muy efectiva.
A la hora de realizar una integración con Jira, es relativamente fácil, y como digo, ahora
mismo tenemos otras alternativas como Zephyr, qTest o TestRail, con el inconveniente
de que hay que pagar licencias y puede que no nos cuadre si tenemos un presupuesto
más ajustado.
98
Jira es personalizable y podemos crear elementos tipo defecto, tipo mejora, historias de
usuario o personalizados, además de asignarle una prioridad y tener un flujo de estados
también personalizable que nos permite introducir procesos de calidad, de mejora o de
lo que consideremos.
Lo que nos permite Jira, por encima de todo y según hemos comentado es realizar el
seguimiento de proyectos, creando mapas de proyectos completos y que nos permiten
poner foco en el tiempo que creamos oportuno para poder tener todo bajo control. Su
integración con infinidad de herramientas le hace ser un aliado perfecto a la hora de
trabajar en un proyecto.
Cuando integramos Testlink con Jira y hacemos que los dos funcionen a la par, podemos
crear unos flujos de pruebas y validaciones muy logrados, cubriendo todas las
necesidades que tengamos dentro del proyecto donde estemos trabajando. Lo ideal es
que la integración esté relacionada con la creación de incidencias al ejecutar casos de
prueba y el flujo de estados que hayamos personalizado, si fuese necesario.
Una gran ventaja que tiene Jira frente a sus competidores, aunque cada vez se van
acercando más, es el panel de trabajo. Es un panel limpio, que muestra solo lo
importante y muy intuitivo. Prácticamente no hace falta tocarlo ni configurarlo en casi
ningún momento, se ajusta perfectamente a la mayoría de los proyectos. Podemos
utilizar diferentes planificaciones, usando Scrum, Kanban, una metodología
personalizada y mixta, pudiendo agregar cosas que necesitemos y siendo lo mas flexible,
prácticamente, del mercado.
Para mi, estas tres herramientas, son de lo más fundamental que podamos tener en un
proyecto y lo mejor de todo, es que dos son gratuitas y solo hay que pagar licencias por
usuario en Jira. En siguientes artículos aprenderemos más sobre él. Hay un foro que está
un tanto antiguo pero que sirve para hacerse una idea y es gestionado por uno de los
referentes en España, Antonio Calero, la URL es la siguiente:
https://www.sonarqubehispano.org
99
Hay un tutorial muy bueno en el que explica como integrar Testlink con Jira:
http://blogs.quovantis.com/step-by-step-integration-of-jira-with-testlink/
100