La verdad es que para todo lo que sean pruebas de sitios web, la primera opción diría que es Selenium. Puedes empezar con Selenium IDE, que permite grabar y reproducir, y es muy sencillo de usar, y una vez tengas claro lo que quieres automatizar, pasarte a algún framework. Te dejo un video en español de introducción a Selenium IDE: https://www.youtube.com/watch?v=AptRJxAVsI4
Cambios previstos en la aplicación: No es aconsejable realizar la automatización cuando se prevén cambios ya que la vida de la prueba automatizada es muy corta. El objetivo al automatizar una prueba es que tenga una vida de varias ejecuciones, para que el tiempo invertido en la automatización sea rentable frente al tiempo ganado a la hora de ejecutar las pruebas manualmente.
¿Cómo sabes que el sistema funciona? Una respuesta común a esta pregunta es “porque el equipo de testing le echó un vistazo”.  El problema viene al tener que determinar la extensión y profundidad de las pruebas realizadas. Si eres afortunado y trabajas en una empresa con buenos procesos, podrás acreditar lo probado a través de una lista de casos de prueba. Si trabajas en una empresa de clase mundial, entonces hay una gran posibilidad de que tengas la fortuna de tener a tu disposición herramientas para la gestión y automatización de pruebas.De acuerdo con Elfriede Dustin, las herramientas de automatización de pruebas consolidan y mejoran la efectividad de las pruebas siempre y cuando se manejen las expectativas, se entiendan las herramientas, y se seleccione una herramienta compatible con el ambiente de programación. Si necesitas probar un sistema no trivial que conste de algo más que unas cuantas pantallas y reportes, entonces es muy posible que por medio de pruebas manuales no logres realizar todas las pruebas que necesitas para verificar la calidad del sistema. Con la ayuda de herramientas de automatización puedes ejecutar más pruebas, lo cual se traduce en una mayor cobertura del sistema que se está probando.
El reto planteado para la entrega final de la asignatura, una vez visto, aprendido y puesta en práctica las técnicas anteriormente mencionadas, era el desarrollo de una herramienta que realizará pruebas automáticas, bien sea de aplicaciones web o de aplicaciones móviles, en este caso era posible extender las existentes, lo que el usuario debía entregar era el denominado SUT (Software under test) como podía ser la URL de una aplicación web o el empaquetado de una aplicación nativa, en este caso Android (APK).
Jenkins es una herramienta para iniciar pruebas continuas y construir la integración a través de la automatización. Proporciona una forma poderosa de administrar los cambios de código, las pruebas y el ciclo de vida del despliegue, junto con la administración de releases, acelerando el ciclo de vida general del desarrollo del software. Hoy en día, Jenkins ofrece soporte para más de 1.200 plugins que le permiten integrarse con cualquier tecnología.
La interacción con el software. Aquí es donde entra la computación en la nube, que nos permite el almacenamiento remoto de la información y el acceso a la misma desde dondequiera que estemos, y el modelo de Software as a Service (SaaS), que no requiere la costosa compra e instalación de software en las computadoras de la empresa, sino solo una suscripción y el pago por utilización.
Ver más: ant selenium testng automation process tools used, cross browser testing, cross browser testing matrix, software testing, magento, wordpress, website testing, testing / qa, usability testing, test automation, significance testing cross tabulations spss, testng automation, test automation selenium testng, selenium simultaneous tests, citrix automation selenium, free browser testing suite, cross browser testing jobs, fix cross browser testing, zen cart browser testing, cross browser testing app
Super útil tu publicación, muy apropiada para mi nicho de mercado, en su mayoría pequeñas empresas, por lo que compartiré esta información en mis redes sociales. Este tipo de aportes son muy necesarios para lograr la administración correcta de nuestros micro y pequeños negocios. Me interesa en especial el del manejo de clientes, ya veremos como nos va. Muchas Gracias.
¿Por qué es mejor un marco de automatización de pruebas híbrido? ¿Cómo podemos replicar acciones humanas en las herramientas de automatización? ¿En qué consisten las pruebas basadas en palabras clave? Descubra cómo puede hacer evolucionar los procesos manuales en nuestro informe oficial gratuito: El lado humano de la fase de automatización de pruebas.
sistemas que se desarrollan en la actualidad siguen presentando fallos en su ejecución, dichos fallos tienen costos significativamente altos. El propósito general de evaluar sistemas es localizar la mayor cantidad de fallos posibles para corregirlos. De acuerdo al estándar IEEE 1633-2008 (Norman F. Schneidewind, 2008), un fallo es una condición accidental que hace que una unidad funcional falle al ejecutar su función requerida. La funcionalidad del sistema queda establecida desde la etapa de análisis y especificación de requerimientos del proceso de desarrollo de software. La importancia de un buen proceso de evaluación se debe a que si no se realizan las pruebas de forma pertinente y adecuada, es imposible asegurar que un producto de software cumple con la funcionalidad de acuerdo a las especificaciones establecidas en relación con los requerimientos del sistema. Sin embargo el número de pruebas que se realizan para localizar y corregir fallos presenta una tendencia exponencial (Jelinski, 1972). Durante la etapa de pruebas, se tienen dos enfoques que son de gran importancia para lograr identificar los fallos existentes en un sistema, estos son la Verificación y Validación. Durante la Verificación se determina si el sistema o una parte de él operan de una manera satisfactoria. Bajo el enfoque de Validación se determina si un sistema o parte de él satisface los requerimientos establecidos por el cliente. Así esta fase del proceso de desarrollo es una forma de medir y mejorar la confiabilidad de software. Este artículo está organizado de la siguiente forma, en la sección 2 se presenta el marco teórico en donde el concepto de confiabilidad de software es abordado. En la sección 3 se describen algunas herramientas de evaluación de sistemas orientados a objetos. En la sección 4 se presenta la propuesta del presente trabajo. Finalmente en la sección 4 se exponen algunas conclusiones y el trabajo a futuro. Marco teórico La confiabilidad de software se define como la probabilidad que tiene un sistema de operar libre de fallos durante un tiempo determinado en un ambiente específico (Musa, 2004). Esta es un área de gran importancia en el proceso de desarrollo de software. En la actualidad la confiabilidad es un atributo de calidad que se exige en el desarrollo de cualquier aplicación de software. Cuando las aplicaciones de software carecen de confiabilidad se tienen consecuencias económicas, políticas y sociales. Para tener niveles adecuados de confiabilidad es necesario evaluar al sistema en cuestión, localizar y corregir la mayor cantidad de fallos antes de que el producto final sea liberado. Pruebas de software La fase de pruebas es una tarea que consume muchos recursos. Para ejecutar esta fase en la práctica las organizaciones que desarrollan software asignan un grupo de evaluadores físicos, los cuales realizan este proceso de forma manual en un lapso de varios meses e incluso años. Este enfoque consume mucho tiempo y conlleva altos costos. Para lograr una cobertura adecuada en la evaluación del sistema en cuestión, es necesario: seleccionar los datos de prueba, las variables del entorno de evaluación, determinar el número de pruebas y el tiempo asignado para este proceso. En la ejecución de la cobertura de evaluación, algunos autores desarrollan modelos de predecibilidad apoyados de métricas de software (Basili, 1996). Para optimizar los recursos que son empleados en la ejecución de miles o millones de pruebas es adecuado utilizar instrumentos de evaluación (Ragab, 2010). Se han realizado algunas propuestas para evaluar sistemas en Internet, entre estas propuestas esta (Davila-Nicanor, 2005), en donde se desarrolló un herramienta la cual automatiza la ejecución de las pruebas, reduciendo el tiempo proyectado para la ejecución de 5000 pruebas funcionales de 4 años a tan solo 6 horas. En la evaluación dinámica de un sistema de software, muchos autores se han enfocado principalmente en 2 tipos de pruebas: las pruebas unitarias y las pruebas de integración. Una cantidad importante de trabajos se han enfocado a pruebas unitarias. Mientras que en pruebas integrales existe una menor incidencia de trabajos. Es importante resaltar que para este último enfoque el contexto de operación es determinante, tal es el caso del lenguaje Java, en el cual las clausulas más importantes se resuelven a tiempo de ejecución, un ejemplo de ello son aspectos como el polimorfismo y la herencia. Pruebas Unitarias Durante la fase de pruebas, el proceso de evaluación tiene dos aspectos importantes, el primero está orientado al desarrollo de pruebas unitarias o modulares. Estas pruebas se basan en comprobar unidades individuales de código y determinar si estas cumplen con los requerimientos establecidos. Cuando hablamos de unidades nos referimos a secciones del código que pueden probarse de forma independiente. En un sistema orientado a
Herramientas de evaluación para sistemas orientados a objetos. JUnit XUnit es una de las herramientas más usadas para realizar pruebas unitarias automatizadas sobre software. Es una de las primeras herramientas de evaluación con la que la localización y detección de fallos es mucho más precisa. Ésta cuenta con una extensión llamada JUnit, creada por Kent Beck y Erich Gamma (Wahid & Almalaise, 2011). Esta herramienta se enfoca en realizar pruebas sobre el código en lenguaje Java. Sus principales ventajas son el uso simple y la automatización de las pruebas. Herramientas como Evosuite la utilizan como complemento para la generación de sus pruebas. JUnit es un framework de evaluación y su capacidad está en relación de la experiencia del evaluador que la utiliza. Herramienta LCT (Lime ConolicTester) LCT (al., 2011) utiliza un enfoque de pruebas concolic, es decir una combinación entre ejecución concreta y simbólica. Este enfoque se utiliza para estimar los diferentes caminos que tendrá el programa durante el tiempo de ejecución. La arquitectura del LCT se basa en tres componentes principales: el instrumentador el cual, examina el código para tener un conjunto de valores de entrada, el ejecutor de pruebas en el cual se hace la ejecución del programa con los valores ya preestablecidos, finalmente el selector de pruebas se encarga de construir un árbol de ejecución simbólica basado en la información recolectada por los ejecutores de pruebas y selecciona en el árbol la ejecución simbólica siguiente. Este es uno de los primeros frameworks de evaluación que existen, teniendo buenos resultados en su aplicación. Una de sus principales desventajas es que el costo computacional es muy alto y sólo se enfoca en la revisión del código sin tomar en cuenta la funcionalidad de sistema. PET y jPET. PET (Albert E. a.-Z., 2010) es una herramienta que utiliza archivos bytecode de Java para generar criterios de cobertura de evaluación, este enfoque se complementa que se complementa con técnicas heurísticas para determinar la efectividad de la ejecución del programa, los parámetros de cobertura son: sentencias, caminos y loop-K (ciclo de ejecución). jPET (Albert E. a.-M.-Z., 2011), es una extensión de PET y su función es proporcionarle al evaluador un ambiente grafico para la creación de casos de prueba. jPET tiene un visor de su comportamiento en cada caso y agrega un método de analizador de precondiciones escritos en JML, esta funcionalidad no existe en PET. Una de sus principales desventajas es que la cobertura de los casos de pruebas se limita al diseño del sistema, y nuevamente la funcionalidad queda ignorada. Herramienta EvoSuite. Una de las mejores herramientas es EvoSuite (Fraser, 2011), debido a que tiene un buen proceso de localización de fallos. Su funcionamiento se basa en producir series de pruebas que permiten alcanzar una alta cobertura de código utilizando solo el bytecode. Para este proceso se implementan varias técnicas como son la búsqueda hibrida, la ejecución simbólica dinámica y la trasformación del alcance de prueba. EvoSuite tiene dos objetivos principales: la cobertura total del conjunto de pruebas, utiliza un enfoque de búsqueda evolutiva que muta conjuntos de pruebas completas respecto a un criterio de completitud de cobertura. Otro objetivo importante es que la generación de aserciones basadas en mutación, utiliza pruebas basadas en mutación para producir un conjunto reducido de aserciones que maximiza el número de defectos introducidos en una clase que está en relación con los casos de prueba. Es sin duda una de las mejores herramientas de evaluación, sin embargo su costo computacional es muy alto para cualquier entorno de ejecución real. Esta herramienta genera millones de casos de prueba, lo cual implica un desgaste muy alto en tiempo y esfuerzo. De esta forma retornamos el problema de origen: costos altos y pocos recursos. Arquitectura propuesta En el presente trabajo se propone una arquitectura para una herramienta de evaluación de sistemas orientados a objetos. La evaluación de sistemas de software es un proceso costoso, pero en la actualidad a ese costo también hay que incluir que las técnicas tradicionales de evaluación no son suficientes, los nuevos paradigmas de programación hacen difícil la planeación y ejecución de pruebas. Nuestra propuesta se basa en la planeación de pruebas y en la ejecución de casos de prueba mediante el paradigma orientado a aspectos. El diseño de la arquitectura propuesta es independiente del código fuente, ya que se puede tomar como base el bytecode. Esto es debido a que en muchos sistemas, las aplicaciones no contienen archivos fuente, debido que
Algunas pruebas de software tales como las pruebas de regresión intensivas de bajo nivel pueden ser laboriosas y consumir mucho tiempo para su ejecución si se realizan manualmente. Adicionalmente, una aproximación manual puede no ser efectiva para encontrar ciertos tipos de defectos, mientras que las pruebas automatizadas ofrecen una alternativa que lo permite. Una vez que una prueba ha sido automatizada, ésta puede ejecutarse repetitiva y rápidamente en particular con productos de software que tienen ciclos de mantenimiento largo, ya que incluso cambios relativamente menores en la vida de una aplicación pueden inducir fallos en funcionalidades que anteriormente operaban de manera correcta. Existen dos aproximaciones a las pruebas automatizadas:
Fue necesario el uso del archivo .sh, debido a que algunos comandos como es el caso de calabash-android gen, exigen una segunda acción como es el  para aceptar la creación del proyecto, una vez ejecutado el comando se utiliza el archivo .features solicitado al usuario para ejecutar la prueba, esto es almacenado en un directorio con el nombre del id que identifica la prueba en la base de datos. 
×