M茅todos de prueba de software

Hola a todos! La pr贸xima semana vamos a lanzar un nuevo hilo en el curso "Automation Web Testing" . Este ser谩 el tema del material de hoy.

Este art铆culo analiza varias formas de probar software, como pruebas unitarias, pruebas de integraci贸n, pruebas funcionales, pruebas de aceptaci贸n, etc.



Hay muchos tipos diferentes de pruebas que puede aplicar para asegurarse de que los cambios en su c贸digo est茅n programados. No todos los tipos de pruebas son id茅nticos, aunque aqu铆 vemos c贸mo las principales pr谩cticas de prueba difieren entre s铆.

Prueba: manual o automatizada?

Primero debe comprender las diferencias entre las pruebas manuales y automatizadas. Las pruebas manuales son realizadas directamente por una persona que hace clic en los botones de la aplicaci贸n o interact煤a con el software o la API con las herramientas necesarias. Esto es bastante costoso, ya que requiere que el probador instale el entorno de desarrollo y ejecute las pruebas manualmente. Hay una probabilidad de error debido a un factor humano, como un error tipogr谩fico o saltarse pasos en un caso de prueba.

Las pruebas automatizadas, por otro lado, son realizadas por una m谩quina que ejecuta un script de prueba que se escribi贸 de antemano. Dichas pruebas pueden variar mucho seg煤n la complejidad, desde probar un 煤nico m茅todo en una clase hasta elaborar una secuencia de acciones complejas en una interfaz de usuario para asegurarse de que funcione correctamente. Este m茅todo se considera m谩s confiable, pero su rendimiento a煤n depende de qu茅 tan bien se haya escrito bien el script para la prueba.

Las pruebas automatizadas son un componente clave de la integraci贸n continua y la entrega continua, as铆 como una buena forma de escalar su proceso de control de calidad al tiempo que agrega nuevas funcionalidades a su aplicaci贸n. Sin embargo, las pruebas manuales todav铆a tienen su propio valor. Por lo tanto, en el art铆culo definitivamente hablaremos sobre las pruebas exploratorias.

Diferentes tipos de pruebas

Pruebas unitarias

Las pruebas unitarias se consideran de bajo nivel, cercanas al c贸digo fuente de su aplicaci贸n. Est谩n dirigidos a probar m茅todos y funciones individuales dentro de las clases, probando los componentes y m贸dulos utilizados por su programa. Las pruebas unitarias en general no requieren costos especiales de automatizaci贸n y pueden funcionar extremadamente r谩pido si utiliza un servidor de integraci贸n continua.

Pruebas de integraci贸n

Las pruebas de integraci贸n verifican si los servicios y m贸dulos utilizados por su aplicaci贸n funcionan bien juntos. Por ejemplo, pueden probar la integraci贸n con una base de datos o asegurarse de que los microservicios interact煤en correctamente entre s铆. Estas pruebas se ejecutan a un costo mayor, ya que necesitan muchas partes de la aplicaci贸n para funcionar simult谩neamente.

Pruebas de funcionamiento

Las pruebas funcionales se basan en los requisitos comerciales de la aplicaci贸n. Solo verifican la salida despu茅s de que se realiza la acci贸n y no verifican los estados intermedios del sistema durante la reproducci贸n de la acci贸n.

A veces hay contradicciones entre las pruebas de integraci贸n y las pruebas funcionales, como ambos solicitan m煤ltiples componentes que interact煤an entre s铆. La diferencia es que las pruebas de integraci贸n simplemente pueden garantizar que la base de datos sea accesible, mientras que una prueba funcional quiere obtener un cierto valor de la base de datos para verificar uno de los requisitos para el producto final.

Pruebas de punta a punta

Las pruebas de extremo a extremo simulan el comportamiento del usuario al interactuar con el software. Comprueba con qu茅 precisi贸n varios usuarios siguen el escenario previsto de la aplicaci贸n y puede ser bastante simple, por ejemplo, parecer cargar una p谩gina web o ingresar a un sitio web o, en un caso m谩s complicado, confirmar una direcci贸n de correo electr贸nico, pagos en l铆nea, etc.

Las pruebas de extremo a extremo son extremadamente 煤tiles, pero producirlas es costoso y puede ser dif铆cil de automatizar. Se recomiendan varias pruebas transversales, pero a煤n conf铆an m谩s en las pruebas de bajo nivel (pruebas unitarias y de integraci贸n) para poder reconocer r谩pidamente los cambios importantes.

Prueba de aceptaci贸n

Las pruebas de aceptaci贸n son pruebas formales que se realizan para garantizar que el sistema satisfaga las necesidades comerciales. Requieren que la aplicaci贸n se ejecute y se ejecuten, e imitan las acciones del usuario. Las pruebas de aceptaci贸n pueden ir m谩s all谩 y medir el rendimiento del sistema y rechazar los cambios recientes si no se han alcanzado los objetivos de desarrollo finales.

Pruebas de rendimiento

Las pruebas de rendimiento prueban el comportamiento de un sistema cuando est谩 bajo una carga significativa. Estas pruebas no son funcionales y pueden tomar muchas formas para probar la confiabilidad, estabilidad y disponibilidad de la plataforma. Por ejemplo, puede monitorear el tiempo de respuesta al realizar una gran cantidad de solicitudes u observar c贸mo se comporta el sistema cuando interact煤a con grandes datos.

Las pruebas de rendimiento son inherentemente costosas de realizar, pero pueden ayudarlo a comprender qu茅 factores externos pueden afectar su sistema.

Prueba de humo

Las pruebas de humo son pruebas b谩sicas que prueban la funcionalidad b谩sica de una aplicaci贸n. Funcionan lo suficientemente r谩pido y su objetivo es dejar en claro que las funciones principales del sistema funcionan como deber铆an y nada m谩s. Dichas pruebas tienen como objetivo identificar errores obvios.

Las pruebas de humo pueden ser 煤tiles inmediatamente despu茅s de construir una nueva compilaci贸n para verificar si puede ejecutar pruebas m谩s costosas, o inmediatamente despu茅s de la implementaci贸n, para asegurarse de que la aplicaci贸n funcione bien en el nuevo entorno.

C贸mo automatizar pruebas

Un probador puede realizar todas las pruebas mencionadas anteriormente manualmente, pero esto ser谩 extremadamente costoso e improductivo. Porque las personas tienen una capacidad limitada para realizar una gran cantidad de acciones repetitivas mientras siguen probando de manera confiable. Sin embargo, la m谩quina puede reproducir f谩cilmente las mismas acciones y verificar, por ejemplo, que la combinaci贸n de nombre de usuario / contrase帽a funcionar谩 por cent茅sima vez sin ninguna queja.

Para automatizar las pruebas, primero debe escribirlas en algunos de los lenguajes de programaci贸n utilizando un marco de prueba que sea adecuado para su aplicaci贸n. PHPUnit , Mocha , RSpec son ejemplos de marcos de prueba que puede usar para PHP, Javascript y Ruby, respectivamente. Tienen muchas caracter铆sticas para cada idioma, por lo que debe investigar un poco y consultar con las comunidades de desarrolladores para determinar qu茅 marco es el mejor para usted.

Si sus pruebas se pueden ejecutar usando scripts desde la terminal, puede automatizarlas usando un servidor de integraci贸n continua al estilo Bamboo o el servidor en la nube Bitbucket Pipelines. Estas herramientas supervisar谩n sus repositorios y ejecutar谩n conjuntos de pruebas tan pronto como se introduzcan nuevos cambios en el repositorio principal.



Si es nuevo en las pruebas, consulte nuestra gu铆a de integraci贸n continua para crear su primer conjunto de pruebas.

Pruebas de investigaci贸n

Cuantas m谩s funciones y mejoras se agreguen a su c贸digo, mayor ser谩 la necesidad de realizar pruebas, ya que en cada etapa debe asegurarse de que el sistema funcione correctamente. Adem谩s, ser谩 necesario cada vez que repare un error, ya que no ser铆a superfluo asegurarse de que no vuelva a aparecer despu茅s de varios lanzamientos. La automatizaci贸n es la clave para hacer esto posible; Escribir pruebas tarde o temprano se convertir谩 en parte de su pr谩ctica de desarrollador.

La pregunta es, 驴es necesario realizar pruebas manuales en este caso? La respuesta corta es s铆, y debe centrarse en lo que se llama prueba exploratoria, que ayuda a identificar errores sutiles.

Una sesi贸n de prueba de investigaci贸n no debe exceder las dos horas y debe tener un alcance claramente definido para ayudar a los evaluadores a enfocarse en un 谩rea espec铆fica del software. Despu茅s de informar a todos los evaluadores sobre los l铆mites de las pruebas, queda a su discreci贸n las acciones que tomar谩n para verificar c贸mo se comporta el sistema. Dichas pruebas son de naturaleza costosa, pero muy 煤tiles para identificar problemas con la interfaz de usuario o verificar el estado de los flujos de trabajo complejos para los usuarios. Es importante realizar tales pruebas siempre que se agregue una funci贸n radicalmente nueva a la aplicaci贸n para comprender c贸mo se comportar谩 en condiciones l铆mite.

Nota de prueba

Antes de terminar este art铆culo, quiero hablar sobre el prop贸sito de las pruebas. Por un lado, es muy importante asegurarse de que los usuarios puedan usar su aplicaci贸n ("No puedo iniciar sesi贸n", "No puedo guardar datos", etc.), pero por otro lado, es igualmente importante verificar que su sistema No se rompe al ingresar datos incorrectos o acciones inesperadas. Debe anticipar lo que suceder谩 cuando un usuario cometa un error tipogr谩fico, intente guardar un formulario incompleto o use la API incorrecta. Debe verificar si uno de los usuarios puede comprometer f谩cilmente los datos, obtener acceso a un recurso en particular al que no deber铆a tener acceso. Un buen conjunto de pruebas deber铆a intentar romper su aplicaci贸n y ayudar a comprender el l铆mite de sus capacidades.

Y finalmente, 隆las pruebas tambi茅n son c贸digo! Por lo tanto, no se olvide de ellos durante la revisi贸n del c贸digo, ya que pueden ser el 煤ltimo paso antes de lanzar el producto al mercado de consumo.

De acuerdo con la tradici贸n establecida, estamos esperando sus comentarios e invitamos a todos a la jornada de puertas abiertas , que se llevar谩 a cabo el 18 de marzo por nuestro maestro, el ingeniero de automatizaci贸n de pruebas l铆der en el Grupo IB, Mikhail Samoilov .

Source: https://habr.com/ru/post/443418/


All Articles