Proyecto que utiliza modelos de inteligencia artificial generativa, como ChatGPT-3.5, para agilizar y mejorar el proceso de generación de casos de prueba de software. Combina la capacidad de la IA para generar ideas y redacciones preliminares con la revisión y validación por parte de expertos humanos.
Sigue una metodología ágil e iterativa, donde los prompts se refinan continuamente para obtener casos de prueba de alta calidad que cubran todos los escenarios relevantes. Esto permite optimizar recursos, aumentar la eficiencia en pruebas sin comprometer la calidad, reduciendo costos y acelerando el time-to-market.
Implementación
#Importar dependencias de openAI (módulo)
import os
from openai import OpenAI
#Agregue la clave de la API copiada de la página de openAI
client = OpenAI(
api_key='your_key',
)
def generar_casos_prueba(context, requerimiento, casos_prueba_iniciales):
#prompt (text/user's question)
prompt = f"Requerimiento: {requerimiento}\n\nCasos de prueba iniciales: {casos_prueba_iniciales}\n\nMejora y expande los casos de prueba. Para cada uno de los casos de prueba identificados en la etapa anterior, genera una redacción inicial que incluya precondiciones, pasos a seguir y resultados esperados"
response = client.chat.completions.create(
messages=[
{"role": "system", "content": context},
{"role": "user", "content": prompt}
],
model="gpt-3.5-turbo",
max_tokens=1024
)
casos_prueba_mejorados = response.choices[0].message.content.strip()
return casos_prueba_mejorados
def main():
#Establece el contexto de nuestro entorno de prompts
context = """
Ingeniero de pruebas de software: Diseña y ejecuta planes de prueba completos para software.
"""
requerimiento = "Desarrollar una pantalla de inicio de sesión para que los usuarios puedan acceder a una página web. La pantalla debe solicitar un nombre de usuario y una contraseña, y validar que los datos ingresados sean correctos. Si los datos son válidos, el usuario debe ser redirigido a la página principal de la aplicación web."
# Prompt inicial para generar casos de prueba
prompt_inicial = f"Dado el siguiente requerimiento: {requerimiento}\n\nGenera una lista de posibles casos de prueba que deberían considerarse para validar su correcto funcionamiento."
# Obtener casos de prueba iniciales
response = client.chat.completions.create(
messages=[
{"role": "system", "content": context},
{"role": "user", "content": prompt_inicial}
],
model="gpt-3.5-turbo",
max_tokens=1024
)
casos_prueba_iniciales = response.choices[0].message.content.strip()
print("Casos de prueba iniciales:\n", casos_prueba_iniciales)
# Iteración y refinamiento de los casos de prueba
for i in range(2):
casos_prueba_mejorados = generar_casos_prueba(context, requerimiento, casos_prueba_iniciales)
print(f"\nIteración {i + 1}:\n", casos_prueba_mejorados)
casos_prueba_iniciales = casos_prueba_mejorados
if __name__ == "__main__":
main()
Resultado
Casos de prueba iniciales:
1. Caso de prueba positivo: Ingresar un nombre de usuario y contraseña válidos y verificar que se redirija a la página principal.
2. Caso de prueba negativo: Ingresar un nombre de usuario válido pero una contraseña inválida y verificar que se muestre un mensaje de error.
3. Caso de prueba negativo: Ingresar un nombre de usuario inválido y una contraseña válida y verificar que se muestre un mensaje de error.
4. Caso de prueba negativo: Dejar en blanco tanto el campo de nombre de usuario como el de contraseña y verificar que se muestren mensajes de error para ambos campos.
5. Caso de prueba negativo: Ingresar caracteres especiales en el campo de nombre de usuario y verificar que se muestre un mensaje de error.
6. Caso de prueba negativo: Ingresar una contraseña corta o demasiado larga y verificar que se muestre un mensaje de error.
7. Caso de prueba negativo: Intentar iniciar sesión demasiadas veces con datos incorrectos y verificar que se bloquee la cuenta temporalmente.
8. Caso de prueba negativo: Intentar iniciar sesión con un usuario que se encuentre deshabilitado y verificar que se muestre un mensaje apropiado.
9. Caso de prueba negativo: Intentar iniciar sesión sin conexión a internet y verificar que se muestre un mensaje de error indicando la falta de conexión.
10. Caso de prueba de rendimiento: Probar la velocidad de respuesta al intentar iniciar sesión con diferentes niveles de tráfico de red y verificar que sea aceptable.
Iteración 1:
Además de los casos de prueba iniciales mencionados anteriormente, se pueden incluir algunos casos de prueba adicionales:
11. Caso de prueba positivo: Ingresar un nombre de usuario con mayúsculas y minúsculas combinadas y una contraseña válida, y verificar que se redirija a la página principal.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Ingresar un nombre de usuario con combinación de mayúsculas y minúsculas, una contraseña válida y hacer clic en el botón de iniciar sesión.
- Resultado esperado: El usuario es redirigido correctamente a la página principal de la aplicación web.
12. Caso de prueba negativo: Intentar iniciar sesión con un nombre de usuario que está en blanco y una contraseña válida, y verificar que se muestre un mensaje de error.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Dejar en blanco el campo de nombre de usuario, ingresar una contraseña válida y hacer clic en el botón de iniciar sesión.
- Resultado esperado: Se muestra un mensaje de error indicando que el campo de nombre de usuario no puede estar vacío.
13. Caso de prueba negativo: Intentar iniciar sesión con un nombre de usuario válido pero con espacios en blanco al principio o al final y una contraseña válida, y verificar que se redireccione a la página principal.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Ingresar un nombre de usuario con espacios en blanco al principio o al final, una contraseña válida y hacer clic en el botón de iniciar sesión.
- Resultado esperado: El sistema elimina los espacios en blanco y redirige al usuario a la página principal.
14. Caso de prueba negativo: Introducir caracteres especiales en el campo de contraseña y verificar que se muestre un mensaje de error.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Ingresar un nombre de usuario válido, una contraseña con caracteres especiales y hacer clic en el botón de iniciar sesión.
- Resultado esperado: Se muestra un mensaje de error indicando que la contraseña no puede contener caracteres especiales.
15. Caso de prueba de seguridad: Intentar realizar un ataque de fuerza bruta con múltiples intentos de inicio de sesión y verificar que se bloquee la cuenta temporalmente.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Introducir un nombre de usuario válido pero con contraseñas incorrectas de forma repetida.
- Resultado esperado: Después de un cierto número de intentos fallidos, la cuenta debe quedar bloqueada temporalmente y mostrar un mensaje indicando el bloqueo.
Estos casos de prueba adicionales permiten cubrir aspectos específicos de funcionalidad y seguridad que pueden ser críticos para la correcta operación de la pantalla de inicio de sesión en la aplicación web.
Iteración 2:
16. Caso de prueba negativo: Ingresar un nombre de usuario válido pero una contraseña incorrecta y verificar que se muestre un mensaje de error.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Ingresar un nombre de usuario válido, una contraseña incorrecta y hacer clic en el botón de iniciar sesión.
- Resultado esperado: Se muestra un mensaje de error indicando que la contraseña ingresada es incorrecta.
17. Caso de prueba negativo: Intentar iniciar sesión con un nombre de usuario inválido y una contraseña válida, y verificar que se muestre un mensaje de error.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Ingresar un nombre de usuario inválido, una contraseña válida y hacer clic en el botón de iniciar sesión.
- Resultado esperado: Se muestra un mensaje de error indicando que el nombre de usuario ingresado es inválido.
18. Caso de prueba negativo: Dejar en blanco tanto el campo de nombre de usuario como el de la contraseña y verificar que se muestren mensajes de error correspondientes a cada campo.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Dejar en blanco tanto el campo de nombre de usuario como el de contraseña y hacer clic en el botón de iniciar sesión.
- Resultado esperado: Se muestran mensajes de error indicando que ambos campos no pueden estar vacíos.
19. Caso de prueba de usabilidad: Comprobar que al presionar la tecla "Enter" después de ingresar los datos, el formulario se envíe y se intente realizar el inicio de sesión.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Ingresar un nombre de usuario válido, una contraseña válida y presionar la tecla "Enter".
- Resultado esperado: El formulario se envía y se intenta realizar el inicio de sesión de manera habitual.
20. Caso de prueba de recuperación de contraseña: Verificar que al hacer clic en un enlace de "¿Olvidó su contraseña?" se presente un formulario para restablecer la contraseña.
- Precondición: La página de inicio de sesión está cargada y lista para recibir datos.
- Paso a seguir: Hacer clic en el enlace de "¿Olvidó su contraseña?" y completar el formulario para restablecer la contraseña.
- Resultado esperado: Se muestra un formulario de recuperación de contraseña y se puede completar el proceso satisfactoriamente.
Estos casos de prueba adicionales permiten cubrir más escenarios de uso y funcionalidades relacionadas con la pantalla de inicio de sesión, lo que contribuye a una mayor calidad y robustez de la misma.
Ejecutar script con Jupyter Notebook o en https://colab.google/