30 May
30May

ChatGPT ha demostrado ser un asistente versátil y poderoso, capaz de realizar desde tareas de generación de texto hasta asistencia en programación. Pero, ¿alguna vez te has preguntado cómo este modelo de lenguaje avanzado puede transformar el campo de las pruebas de software? En este post, exploraremos cómo podemos utilizar ChatGPT en nuestras estrategias de pruebas de software, su potencial para mejorar la eficiencia del proceso de pruebas, y cómo puede cambiar la forma en que abordamos los desafíos de las pruebas.

Vamos a solicitarle a ChatGPT algunos temas relacionados a Software Testing, la versión que estamos utilizando es GPT4, la versión gratuita es GPT3.5, es buena, pero obtendrás mucho mejores respuestas con GPT4. Cuanto más especifico seas al solicitarle información, mejores resultados obtendrás. (para obtener GPT4 es necesario pagar 20 USD por mes)

Te recomiendo que dejes un poco de lado tu mentalidad de tester, ¡pero solo un poquito! (Sé que es casi imposible, ¡pero inténtalo!). Más allá de buscar errores en sus respuestas (que definitivamente los encontrarás con el simple uso), busca la manera en la que ChatGPT te dé la respuesta que esperas. Cuanto mejor aprendas a solicitarle información, más útil te será.

DAME IDEAS PARA PROBAR...

En este caso, le pedimos a ChatGPT que nos de algunas ideas de como probar una tienda en linea, la petición fue la siguiente:

Esta fue la respuesta:

En el caso de una tienda electrónica, existen varias áreas clave a considerar cuando se diseñan pruebas de software. A continuación, detallo algunas ideas que podrías tomar en cuenta:

  1. Pruebas funcionales: Este tipo de pruebas está orientado a asegurarse de que todas las funciones del software funcionen como se espera. Algunos ejemplos pueden ser:
    • Crear una cuenta de usuario, iniciar y cerrar sesión.
    • Agregar y eliminar productos del carrito.
    • Modificar la cantidad de productos en el carrito.
    • Proceder a realizar el checkout y pagar.
    • Realizar búsqueda de productos.
    • Filtrar y ordenar productos.
    • Calificar y comentar sobre un producto.
    • Proceso de recuperación de contraseña.
  2. Pruebas de seguridad: Estas pruebas buscan identificar posibles vulnerabilidades que podrían ser explotadas para obtener acceso no autorizado o dañar el sistema.
    • Pruebas de inyección SQL para detectar posibles vulnerabilidades.
    • Pruebas de Cross-Site Scripting (XSS).
    • Pruebas de fuerza bruta para contraseñas.
    • Validación de roles de usuario y permisos de acceso.
    • Verificación de seguridad durante el proceso de pago.
  3. Pruebas de rendimiento y escalabilidad: Estas pruebas están diseñadas para evaluar cómo se comporta el sistema bajo una carga de trabajo específica y determinar cómo puede escalar para soportar un mayor número de usuarios.
    • Pruebas de estrés para ver cómo maneja el sistema grandes cantidades de usuarios o transacciones simultáneas.
    • Pruebas de carga para verificar cómo se comporta el sistema bajo la carga esperada de usuarios y transacciones.
  4. Pruebas de usabilidad: Estas pruebas evalúan la eficacia, eficiencia y satisfacción con la que los usuarios pueden lograr tareas en el sistema.
    • Navegabilidad del sitio: ¿Es fácil para los usuarios encontrar lo que buscan?
    • Proceso de checkout: ¿Es sencillo y fácil de entender?
  5. Pruebas de compatibilidad: Este tipo de pruebas garantizan que la tienda electrónica funcione correctamente en diferentes dispositivos, sistemas operativos y navegadores.
  6. Pruebas de integración: Evaluar cómo interactúan los diferentes componentes del sistema, como la base de datos, el servidor de aplicaciones, servicios de terceros (por ejemplo, pasarelas de pago).
  7. Pruebas de regresión: Son pruebas realizadas después de la implementación de nuevas características o cambios en el sistema para asegurarse de que no se han producido errores en funciones previamente validadas.

Espero que estas ideas te sean útiles. Recuerda, la calidad y eficacia de las pruebas depende de la completitud y precisión de los escenarios de prueba que se diseñen basados en estos conceptos.

Puedes ser más especifico al hacerle una solicitud sobre una respuesta que te haya dado, en este caso le solicitaremos que nos de más detalle sobre pruebas funcionales:

Por supuesto, aquí te detallo más acerca de las pruebas funcionales que mencioné, además de algunos posibles escenarios de prueba:

  1. Crear una cuenta de usuario, iniciar y cerrar sesión:
    • Crear una cuenta con todos los campos válidos.
    • Crear una cuenta con algunos campos vacíos o inválidos.
    • Iniciar sesión con credenciales válidas.
    • Intentar iniciar sesión con credenciales inválidas.
    • Cerrar sesión y verificar que el usuario no tenga acceso a las funciones exclusivas de los usuarios registrados.
  2. Agregar y eliminar productos del carrito:
    • Agregar diferentes productos al carrito y verificar si se reflejan correctamente.
    • Modificar la cantidad de un producto en el carrito.
    • Eliminar un producto del carrito y verificar si se actualiza correctamente.
    • Agregar un producto al carrito, cerrar la sesión, iniciar la sesión nuevamente y verificar si el producto todavía está en el carrito.
  3. Proceder a realizar el checkout y pagar:
    • Proceder al checkout con un carrito con productos y verificar si se puede completar la compra.
    • Proceder al checkout con un carrito vacío.
    • Verificar la aplicación de descuentos o códigos promocionales durante el proceso de pago.
    • Verificar los distintos métodos de pago disponibles.
    • Verificar la validación de la información de pago (tarjeta de crédito, PayPal, etc.).
  4. Realizar búsqueda de productos:
    • Buscar un producto específico mediante la función de búsqueda y verificar si los resultados son correctos.
    • Realizar una búsqueda con una consulta vacía o inválida.
    • Realizar una búsqueda con un término que no se espera que produzca resultados.
  5. Filtrar y ordenar productos:
    • Utilizar las funciones de filtrado y verificar si los resultados son correctos.
    • Ordenar los productos por diferentes criterios (precio, popularidad, calificación) y verificar si se ordenan correctamente.
  6. Calificar y comentar sobre un producto:
    • Calificar un producto y verificar si la calificación se refleja correctamente.
    • Comentar sobre un producto y verificar si el comentario se publica correctamente.
    • Verificar el funcionamiento de la moderación de comentarios, si existe.
  7. Proceso de recuperación de contraseña:
    • Solicitar un cambio de contraseña y verificar si el correo con las instrucciones llega.
    • Cambiar la contraseña utilizando el enlace proporcionado y verificar si la nueva contraseña funciona.

Recuerda que estos son ejemplos de escenarios de prueba. Es importante que adaptes y agregues escenarios de acuerdo a las funcionalidades y características específicas de tu tienda electrónica.

DAME UNA TABLA DE DATOS


La generación de datos muchas veces es un tema que está de alguna manera regulado por las empresas, pero cuando podemos utilizar datos creados por nosotros mismos para hacer pruebas podría ser de mucha utilidad!

¡Por supuesto! Aquí tienes un ejemplo de una tabla de datos que cumple con los requisitos que especificaste:

Nombre de UsuarioNombreApellidoContraseña
user1JuanPérezJp_1234$789
user2AnaSánchezAn_9876#321
user3CarlosMendozaCm_1234!567
user4LauraParedesLp_9876$123
user5ManuelTorresMt_1234#567
user6RosarioFernándezRf_9876!123
user7AntonioHerreraAh_1234$567
user8IsabelLópezIl_9876#123
user9FelipeGonzálezFg_1234!567
user10MartaMoralesMm_9876$123

En este caso, la contraseña cumple con los siguientes criterios:

  • Tiene al menos 9 dígitos.
  • Contiene letras mayúsculas y minúsculas.
  • Tiene un carácter especial (_ , $ , # , !).
  • No incluye el nombre o apellido del usuario.

De nuevo, por favor ten en cuenta que este es solo un ejemplo y las contraseñas nunca deben ser almacenadas o transmitidas en texto claro. En un entorno de producción, deberían ser almacenadas de forma segura utilizando técnicas de hash y salting.

También podemos pedirle que nos dé la información en formato JSON!

¡Claro! A continuación, te muestro cómo se vería la tabla de datos que te proporcioné en formato JSON:

json[
  {
    "Nombre de Usuario": "user1",
    "Nombre": "Juan",
    "Apellido": "Pérez",
    "Contraseña": "Jp_1234$789"
  },
  {
    "Nombre de Usuario": "user2",
    "Nombre": "Ana",
    "Apellido": "Sánchez",
    "Contraseña": "An_9876#321"
  },
  {
    "Nombre de Usuario": "user3",
    "Nombre": "Carlos",
    "Apellido": "Mendoza",
    "Contraseña": "Cm_1234!567"
  },
  {
    "Nombre de Usuario": "user4",
    "Nombre": "Laura",
    "Apellido": "Paredes",
    "Contraseña": "Lp_9876$123"
  },
  {
    "Nombre de Usuario": "user5",
    "Nombre": "Manuel",
    "Apellido": "Torres",
    "Contraseña": "Mt_1234#567"
  },
  {
    "Nombre de Usuario": "user6",
    "Nombre": "Rosario",
    "Apellido": "Fernández",
    "Contraseña": "Rf_9876!123"
  },
  {
    "Nombre de Usuario": "user7",
    "Nombre": "Antonio",
    "Apellido": "Herrera",
    "Contraseña": "Ah_1234$567"
  },
  {
    "Nombre de Usuario": "user8",
    "Nombre": "Isabel",
    "Apellido": "López",
    "Contraseña": "Il_9876#123"
  },
  {
    "Nombre de Usuario": "user9",
    "Nombre": "Felipe",
    "Apellido": "González",
    "Contraseña": "Fg_1234!567"
  },
  {
    "Nombre de Usuario": "user10",
    "Nombre": "Marta",
    "Apellido": "Morales",
    "Contraseña": "Mm_9876$123"
  }
]

Este JSON representa un array de objetos, donde cada objeto corresponde a una fila en la tabla original y contiene cuatro propiedades: "Nombre de Usuario", "Nombre", "Apellido" y "Contraseña".

Escenarios en Gherkin

Behavior Driven Development es muy utilizado actualmente, y ChatGPT te puede ayudar a definir tus escenarios fácilmente.
Cabe mencionar que en ChatGPT puedes hacer solicitudes o pedir respuestas en Inglés o Español, de hecho, una de las mejores y más potentes funciones de ChatGPT es la escritura en ambos idiomas:

Absolutely, here are some key scenarios for testing an e-commerce website, written in Gherkin format:

  1. Scenario: Registering a new user
gherkinGiven I am on the homepage of the e-commerce website
When I select 'Sign Up'
And I fill in the registration form with my details
And I click 'Submit'
Then I should receive a confirmation message that my account has been created
And I should receive a confirmation email
  1. Scenario: Purchasing a product
gherkinGiven I am on the homepage
And I am logged in as a registered user
When I select a product
And I click 'Add to Cart'
And I click 'Go to Cart'
And I confirm my purchase
Then I should see a confirmation that my order has been successfully placed
And I should receive a confirmation email of my order
  1. Scenario: Searching for a product
gherkinGiven I am on the homepage
When I enter a search term into the search box
And I click 'Search'
Then I should see a list of products that match my search term
  1. Scenario: Changing password
gherkinGiven I am logged in as a registered user
And I am on my account page
When I click 'Change Password'
And I fill in the form with my current password and new password
And I click 'Save'
Then I should see a message confirming that my password has been changed
And I should receive an email confirming the password change
  1. Scenario: Leaving a review on a product
gherkinGiven I am logged in as a registered user
And I am on a product page
When I click 'Leave a Review'
And I fill in the review form
And I click 'Submit'
Then I should see my review posted on the product page

Each of these scenarios describe an important functionality of the e-commerce website and provide a solid basis for functionality testing.

Analizar requerimientos específicos

Muchas veces el tener un escenario de pruebas puede implicar distintos enfoques que no siempre son tan "evidentes", ChatGPT nos puede ayudar a entender un poco mejor las implicaciones de los requerimientos que recibimos:

Este requerimiento se puede interpretar desde varias perspectivas:

  1. Concurrencia: Esto puede significar que la aplicación debe ser capaz de manejar 100 usuarios conectados y trabajando simultáneamente. En este contexto, "trabajando" puede referirse a realizar cualquier tipo de acción o actividad dentro de la aplicación.
  2. Rendimiento: El requerimiento también puede interpretarse desde el punto de vista de la capacidad de rendimiento de la aplicación. La aplicación debería poder manejar 100 usuarios simultáneos sin sufrir una degradación significativa del rendimiento o de la experiencia del usuario.
  3. Escalabilidad: Podría interpretarse como una declaración de la capacidad de escalabilidad de la aplicación. La aplicación debería poder manejar un aumento en el número de usuarios (hasta 100 simultáneos) sin necesidad de cambios significativos en la infraestructura o la arquitectura de la aplicación.
  4. Autenticación y autorización: El sistema debe ser capaz de manejar la autenticación y autorización para 100 usuarios simultáneos.
  5. Gestión de sesiones: La aplicación debe ser capaz de manejar y mantener 100 sesiones de usuario simultáneamente.
  6. Persistencia de datos: Si los usuarios están interactuando con datos en la aplicación (por ejemplo, añadiendo o modificando registros), la aplicación debe ser capaz de manejar la persistencia de los datos de 100 usuarios simultáneos de forma eficiente y sin conflictos.
  7. Resiliencia: La aplicación debe ser capaz de recuperarse rápidamente de cualquier problema o error que pueda surgir cuando 100 usuarios estén trabajando simultáneamente.

Cada interpretación puede requerir un enfoque de prueba diferente, como las pruebas de carga, las pruebas de rendimiento, las pruebas de estrés, las pruebas de seguridad, las pruebas de unidad, etc. Por lo tanto, es importante clarificar este requerimiento con los interesados para entender exactamente lo que esperan.

APRENDIZAJE

Si existe un tema que no conozcas, ChatGPT puede ser un buen comienzo para entender un poco mejor cuando estás en cero, veamos el ejemplo de un tipo de sistema no tan común en proyectos de software pero muy utilizado pro todos nosotros... OTT

Un sistema OTT, o "Over-The-Top", es un término utilizado para referirse a los servicios de contenido que se entregan a través de internet, sin requerir que los usuarios se suscriban a un servicio de cable o satélite tradicional. Ejemplos de este tipo de servicios incluyen Netflix, Amazon Prime Video, Hulu y Disney+.Un sistema OTT puede ser probado de varias maneras, dependiendo de sus características y funcionalidades específicas. Aquí están algunas de las principales áreas de prueba para un sistema OTT:

  1. Pruebas de funcionalidad: Asegurar que todas las funciones del servicio OTT trabajen como se espera. Esto incluiría pruebas de inicio de sesión, búsqueda de contenido, reproducción de contenido, configuración de preferencias de usuario, manejo de suscripciones y más.
  2. Pruebas de compatibilidad: Un sistema OTT normalmente debe ser compatible con una variedad de dispositivos y sistemas operativos, incluyendo PCs, smart TVs, smartphones, tablets y dispositivos de streaming como Roku, Chromecast, Amazon Fire TV, entre otros. Las pruebas de compatibilidad ayudarían a asegurar que el servicio funciona correctamente en todos estos diferentes dispositivos y sistemas.
  3. Pruebas de rendimiento: Los sistemas OTT deben ser capaces de manejar altos volúmenes de tráfico y proporcionar streaming de video de alta calidad sin interrupciones o buffering excesivo. Las pruebas de rendimiento podrían incluir pruebas de carga para ver cómo se comporta el sistema bajo altas demandas y pruebas de estrés para determinar los límites de su capacidad.
  4. Pruebas de seguridad: Los sistemas OTT manejan información sensible del usuario, incluyendo detalles de inicio de sesión y datos de tarjetas de crédito, por lo que es vital probar la seguridad del sistema para proteger contra amenazas potenciales.
  5. Pruebas de usabilidad: Los sistemas OTT deben ser fáciles de usar para una amplia gama de usuarios. Las pruebas de usabilidad pueden ayudar a asegurar que la interfaz de usuario sea intuitiva y accesible.
  6. Pruebas de localización: Si el sistema OTT está destinado a ser utilizado en diferentes regiones o países, puede ser necesario realizar pruebas de localización para asegurar que el contenido, la interfaz de usuario y las funcionalidades del sistema sean apropiados y funcionales para usuarios en esas áreas específicas.

En resumen, un enfoque de prueba completa y bien redondeada para un sistema OTT podría implicar una combinación de pruebas funcionales, de compatibilidad, de rendimiento, de seguridad, de usabilidad y de localización.

AUTOMATIZACIÓN DE PRUEBAS

ChatGPT ha sido muy utilizado para la programación, incluso, herramientas como Copilot ha sido mencionadas como un reemplazo de Stackoverflow! existen numerosos escenarios para utilizar la Inteligencia Artifical, sin embargo, haremos otro post  hablando a detalle sobre este tema

CONCLUSIONES

ChatGPT ha provocado una revolución por su facilidad de uso en distintas áreas, y el Software Testing no es la excepción, como pudiste ver, existe una gran variedad de escenarios en los que esta IA nos puede ser útil, si bien, aun no es perfecta, no es algo que vaya a desaparecer y conforme pase el tiempo se irá perfeccionando, haciendo nuestro trabajo mas sencillo... y en escenarios mas "oscuros" nos quitara el trabajo! pero mientras eso sucede o no, es nuestro deber actualizarnos y aprender a utilizar herramientas que nos hagan ser más eficientes en nuestro trabajo!

Y tú, ¿Has utilizado ChatGPT de otra manera en Software Testing?