{"id":88906,"date":"2024-12-19T09:07:40","date_gmt":"2024-12-19T05:37:40","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/probando-eoe\/"},"modified":"2024-12-19T09:07:40","modified_gmt":"2024-12-19T05:37:40","slug":"probando-eoe","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/probando-eoe\/","title":{"rendered":"\u062a\u0633\u062a \u06a9\u0631\u062f\u0646"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u067e\u0631\u0648\u0698\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0627\u0632 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0645\u0648\u0644\u062f \u0645\u0627\u0646\u0646\u062f ChatGPT-3.5 \u0628\u0631\u0627\u06cc \u0633\u0631\u0639\u062a \u0628\u062e\u0634\u06cc\u062f\u0646 \u0648 \u0628\u0647\u0628\u0648\u062f \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0644\u06cc\u062f \u0646\u0633\u062e\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0627\u06cc\u062f\u0647\u200c\u0647\u0627 \u0648 \u067e\u06cc\u0634\u200c\u0646\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062a\u0648\u0633\u0637 \u0645\u062a\u062e\u0635\u0635\u0627\u0646 \u0627\u0646\u0633\u0627\u0646\u06cc \u062a\u0631\u06a9\u06cc\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0632 \u06cc\u06a9 \u0631\u0648\u0634 \u0686\u0627\u0628\u06a9 \u0648 \u062a\u06a9\u0631\u0627\u0631\u06cc \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0627\u0639\u0644\u0627\u0646 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u0628\u0631\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u0628\u0627\u0644\u0627 \u06a9\u0647 \u0647\u0645\u0647 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc \u062f\u0647\u0646\u062f\u060c \u0627\u0635\u0644\u0627\u062d \u0645\u06cc \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0627\u0631\u0627\u06cc\u06cc \u062a\u0633\u062a \u0631\u0627 \u0628\u062f\u0648\u0646 \u0628\u0647 \u062e\u0637\u0631 \u0627\u0646\u062f\u0627\u062e\u062a\u0646 \u06a9\u06cc\u0641\u06cc\u062a \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f\u060c \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u062f \u0648 \u0632\u0645\u0627\u0646 \u0648\u0631\u0648\u062f \u0628\u0647 \u0628\u0627\u0632\u0627\u0631 \u0631\u0627 \u062a\u0633\u0631\u06cc\u0639 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<\/p>\n<p>#Importar dependencias de openAI (m\u00f3dulo)<br \/>\nimport os<br \/>\nfrom openai import OpenAI<br \/>\n#Agregue la clave de la API copiada de la p\u00e1gina de openAI<br \/>\nclient = OpenAI(<br \/>\n    api_key=&#8217;your_key&#8217;,<br \/>\n)<\/p>\n<p>def generar_casos_prueba(context, requerimiento, casos_prueba_iniciales):<br \/>\n    #prompt (text\/user&#8217;s question)<br \/>\n    prompt = f&#8221;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\u00f3n inicial que incluya precondiciones, pasos a seguir y resultados esperados&#8221;<br \/>\n    response = client.chat.completions.create(<br \/>\n        messages=[<br \/>\n            {&#8220;role&#8221;: &#8220;system&#8221;, &#8220;content&#8221;: context},<br \/>\n            {&#8220;role&#8221;: &#8220;user&#8221;, &#8220;content&#8221;: prompt}<br \/>\n        ],<br \/>\n        model=&#8221;gpt-3.5-turbo&#8221;,<br \/>\n        max_tokens=1024<br \/>\n    )<\/p>\n<p>    casos_prueba_mejorados = response.choices[0].message.content.strip()<br \/>\n    return casos_prueba_mejorados<\/p>\n<p>def main():<\/p>\n<p>    #Establece el contexto de nuestro entorno de prompts<br \/>\n    context = &#8220;&#8221;&#8221;<br \/>\n         Ingeniero de pruebas de software: Dise\u00f1a y ejecuta planes de prueba completos para software.<br \/>\n    &#8220;&#8221;&#8221;<\/p>\n<p>    requerimiento = &#8220;Desarrollar una pantalla de inicio de sesi\u00f3n para que los usuarios puedan acceder a una p\u00e1gina web. La pantalla debe solicitar un nombre de usuario y una contrase\u00f1a, y validar que los datos ingresados sean correctos. Si los datos son v\u00e1lidos, el usuario debe ser redirigido a la p\u00e1gina principal de la aplicaci\u00f3n web.&#8221;<\/p>\n<p>    # Prompt inicial para generar casos de prueba<br \/>\n    prompt_inicial = f&#8221;Dado el siguiente requerimiento: {requerimiento}\\n\\nGenera una lista de posibles casos de prueba que deber\u00edan considerarse para validar su correcto funcionamiento.&#8221;<\/p>\n<p>    # Obtener casos de prueba iniciales<br \/>\n    response = client.chat.completions.create(<br \/>\n        messages=[<br \/>\n            {&#8220;role&#8221;: &#8220;system&#8221;, &#8220;content&#8221;: context},<br \/>\n            {&#8220;role&#8221;: &#8220;user&#8221;, &#8220;content&#8221;: prompt_inicial}<br \/>\n        ],<br \/>\n        model=&#8221;gpt-3.5-turbo&#8221;,<br \/>\n        max_tokens=1024<br \/>\n    )<\/p>\n<p>    casos_prueba_iniciales = response.choices[0].message.content.strip()<br \/>\n    print(&#8220;Casos de prueba iniciales:\\n&#8221;, casos_prueba_iniciales)<\/p>\n<p>    # Iteraci\u00f3n y refinamiento de los casos de prueba<br \/>\n    for i in range(2):<br \/>\n        casos_prueba_mejorados = generar_casos_prueba(context, requerimiento, casos_prueba_iniciales)<br \/>\n        print(f&#8221;\\nIteraci\u00f3n {i + 1}:\\n&#8221;, casos_prueba_mejorados)<br \/>\n        casos_prueba_iniciales = casos_prueba_mejorados<\/p>\n<p>if __name__ == &#8220;__main__&#8221;:<br \/>\n    main()<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647<\/p>\n<p>Casos de prueba iniciales:<br \/>\n 1. Caso de prueba positivo: Ingresar un nombre de usuario y contrase\u00f1a v\u00e1lidos y verificar que se redirija a la p\u00e1gina principal.<br \/>\n2. Caso de prueba negativo: Ingresar un nombre de usuario v\u00e1lido pero una contrase\u00f1a inv\u00e1lida y verificar que se muestre un mensaje de error.<br \/>\n3. Caso de prueba negativo: Ingresar un nombre de usuario inv\u00e1lido y una contrase\u00f1a v\u00e1lida y verificar que se muestre un mensaje de error.<br \/>\n4. Caso de prueba negativo: Dejar en blanco tanto el campo de nombre de usuario como el de contrase\u00f1a y verificar que se muestren mensajes de error para ambos campos.<br \/>\n5. Caso de prueba negativo: Ingresar caracteres especiales en el campo de nombre de usuario y verificar que se muestre un mensaje de error.<br \/>\n6. Caso de prueba negativo: Ingresar una contrase\u00f1a corta o demasiado larga y verificar que se muestre un mensaje de error.<br \/>\n7. Caso de prueba negativo: Intentar iniciar sesi\u00f3n demasiadas veces con datos incorrectos y verificar que se bloquee la cuenta temporalmente.<br \/>\n8. Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un usuario que se encuentre deshabilitado y verificar que se muestre un mensaje apropiado.<br \/>\n9. Caso de prueba negativo: Intentar iniciar sesi\u00f3n sin conexi\u00f3n a internet y verificar que se muestre un mensaje de error indicando la falta de conexi\u00f3n.<br \/>\n10. Caso de prueba de rendimiento: Probar la velocidad de respuesta al intentar iniciar sesi\u00f3n con diferentes niveles de tr\u00e1fico de red y verificar que sea aceptable.<\/p>\n<p>Iteraci\u00f3n 1:<br \/>\n Adem\u00e1s de los casos de prueba iniciales mencionados anteriormente, se pueden incluir algunos casos de prueba adicionales:<\/p>\n<p>11. Caso de prueba positivo: Ingresar un nombre de usuario con may\u00fasculas y min\u00fasculas combinadas y una contrase\u00f1a v\u00e1lida, y verificar que se redirija a la p\u00e1gina principal.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Ingresar un nombre de usuario con combinaci\u00f3n de may\u00fasculas y min\u00fasculas, una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.<br \/>\n   &#8211; Resultado esperado: El usuario es redirigido correctamente a la p\u00e1gina principal de la aplicaci\u00f3n web.<\/p>\n<p>12. Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un nombre de usuario que est\u00e1 en blanco y una contrase\u00f1a v\u00e1lida, y verificar que se muestre un mensaje de error.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Dejar en blanco el campo de nombre de usuario, ingresar una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.<br \/>\n   &#8211; Resultado esperado: Se muestra un mensaje de error indicando que el campo de nombre de usuario no puede estar vac\u00edo.<\/p>\n<p>13. Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un nombre de usuario v\u00e1lido pero con espacios en blanco al principio o al final y una contrase\u00f1a v\u00e1lida, y verificar que se redireccione a la p\u00e1gina principal.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Ingresar un nombre de usuario con espacios en blanco al principio o al final, una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.<br \/>\n   &#8211; Resultado esperado: El sistema elimina los espacios en blanco y redirige al usuario a la p\u00e1gina principal.<\/p>\n<p>14. Caso de prueba negativo: Introducir caracteres especiales en el campo de contrase\u00f1a y verificar que se muestre un mensaje de error.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Ingresar un nombre de usuario v\u00e1lido, una contrase\u00f1a con caracteres especiales y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.<br \/>\n   &#8211; Resultado esperado: Se muestra un mensaje de error indicando que la contrase\u00f1a no puede contener caracteres especiales.<\/p>\n<p>15. Caso de prueba de seguridad: Intentar realizar un ataque de fuerza bruta con m\u00faltiples intentos de inicio de sesi\u00f3n y verificar que se bloquee la cuenta temporalmente.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Introducir un nombre de usuario v\u00e1lido pero con contrase\u00f1as incorrectas de forma repetida.<br \/>\n   &#8211; Resultado esperado: Despu\u00e9s de un cierto n\u00famero de intentos fallidos, la cuenta debe quedar bloqueada temporalmente y mostrar un mensaje indicando el bloqueo.<\/p>\n<p>Estos casos de prueba adicionales permiten cubrir aspectos espec\u00edficos de funcionalidad y seguridad que pueden ser cr\u00edticos para la correcta operaci\u00f3n de la pantalla de inicio de sesi\u00f3n en la aplicaci\u00f3n web.<\/p>\n<p>Iteraci\u00f3n 2:<br \/>\n 16. Caso de prueba negativo: Ingresar un nombre de usuario v\u00e1lido pero una contrase\u00f1a incorrecta y verificar que se muestre un mensaje de error.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Ingresar un nombre de usuario v\u00e1lido, una contrase\u00f1a incorrecta y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.<br \/>\n   &#8211; Resultado esperado: Se muestra un mensaje de error indicando que la contrase\u00f1a ingresada es incorrecta.<\/p>\n<p>17. Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un nombre de usuario inv\u00e1lido y una contrase\u00f1a v\u00e1lida, y verificar que se muestre un mensaje de error.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Ingresar un nombre de usuario inv\u00e1lido, una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.<br \/>\n   &#8211; Resultado esperado: Se muestra un mensaje de error indicando que el nombre de usuario ingresado es inv\u00e1lido.<\/p>\n<p>18. Caso de prueba negativo: Dejar en blanco tanto el campo de nombre de usuario como el de la contrase\u00f1a y verificar que se muestren mensajes de error correspondientes a cada campo.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Dejar en blanco tanto el campo de nombre de usuario como el de contrase\u00f1a y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.<br \/>\n   &#8211; Resultado esperado: Se muestran mensajes de error indicando que ambos campos no pueden estar vac\u00edos.<\/p>\n<p>19. Caso de prueba de usabilidad: Comprobar que al presionar la tecla &#8220;Enter&#8221; despu\u00e9s de ingresar los datos, el formulario se env\u00ede y se intente realizar el inicio de sesi\u00f3n.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Ingresar un nombre de usuario v\u00e1lido, una contrase\u00f1a v\u00e1lida y presionar la tecla &#8220;Enter&#8221;.<br \/>\n   &#8211; Resultado esperado: El formulario se env\u00eda y se intenta realizar el inicio de sesi\u00f3n de manera habitual.<\/p>\n<p>20. Caso de prueba de recuperaci\u00f3n de contrase\u00f1a: Verificar que al hacer clic en un enlace de &#8220;\u00bfOlvid\u00f3 su contrase\u00f1a?&#8221; se presente un formulario para restablecer la contrase\u00f1a.<\/p>\n<p>   &#8211; Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.<br \/>\n   &#8211; Paso a seguir: Hacer clic en el enlace de &#8220;\u00bfOlvid\u00f3 su contrase\u00f1a?&#8221; y completar el formulario para restablecer la contrase\u00f1a.<br \/>\n   &#8211; Resultado esperado: Se muestra un formulario de recuperaci\u00f3n de contrase\u00f1a y se puede completar el proceso satisfactoriamente.<\/p>\n<p>Estos casos de prueba adicionales permiten cubrir m\u00e1s escenarios de uso y funcionalidades relacionadas con la pantalla de inicio de sesi\u00f3n, lo que contribuye a una mayor calidad y robustez de la misma.<\/p>\n<p>\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0628\u0627 Jupyter Notebook \u06cc\u0627 \u062f\u0631 https:\/\/colab.google\/ \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u067e\u0631\u0648\u0698\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0627\u0632 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0645\u0648\u0644\u062f \u0645\u0627\u0646\u0646\u062f ChatGPT-3.5 \u0628\u0631\u0627\u06cc \u0633\u0631\u0639\u062a \u0628\u062e\u0634\u06cc\u062f\u0646 \u0648 \u0628\u0647\u0628\u0648\u062f \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0644\u06cc\u062f \u0646\u0633\u062e\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0627\u06cc\u062f\u0647\u200c\u0647\u0627 \u0648 \u067e\u06cc\u0634\u200c\u0646\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062a\u0648\u0633\u0637 \u0645\u062a\u062e\u0635\u0635\u0627\u0646 \u0627\u0646\u0633\u0627\u0646\u06cc \u062a\u0631\u06a9\u06cc\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0632 \u06cc\u06a9 \u0631\u0648\u0634 \u0686\u0627\u0628\u06a9 \u0648 \u062a\u06a9\u0631\u0627\u0631\u06cc \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0627\u0639\u0644\u0627\u0646 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u0628\u0631\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u0628\u0627\u0644\u0627 \u06a9\u0647 \u0647\u0645\u0647 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc \u062f\u0647\u0646\u062f\u060c \u0627\u0635\u0644\u0627\u062d \u0645\u06cc \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0627\u0631\u0627\u06cc\u06cc \u062a\u0633\u062a \u0631\u0627 \u0628\u062f\u0648\u0646 \u0628\u0647 \u062e\u0637\u0631 \u0627\u0646\u062f\u0627\u062e\u062a\u0646 \u06a9\u06cc\u0641\u06cc\u062a \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f\u060c \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u062f \u0648 \u0632\u0645\u0627\u0646 \u0648\u0631\u0648\u062f \u0628\u0647 \u0628\u0627\u0632\u0627\u0631 \u0631\u0627 \u062a\u0633\u0631\u06cc\u0639 \u06a9\u0646\u06cc\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/probando-eoe\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/probando-eoe\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\">#Importar dependencias de openAI (m\u00f3dulo)\n<\/span><span class=\"kn\">import<\/span> <span class=\"n\">os<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">openai<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">OpenAI<\/span>\n<span class=\"c1\">#Agregue la clave de la API copiada de la p\u00e1gina de openAI\n<\/span><span class=\"n\">client<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">OpenAI<\/span><span class=\"p\">(<\/span>\n    <span class=\"n\">api_key<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">your_key<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">)<\/span>\n\n\n<span class=\"k\">def<\/span> <span class=\"nf\">generar_casos_prueba<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">,<\/span> <span class=\"n\">requerimiento<\/span><span class=\"p\">,<\/span> <span class=\"n\">casos_prueba_iniciales<\/span><span class=\"p\">):<\/span>\n    <span class=\"c1\">#prompt (text\/user's question)\n<\/span>    <span class=\"n\">prompt<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Requerimiento: <\/span><span class=\"si\">{<\/span><span class=\"n\">requerimiento<\/span><span class=\"si\">}<\/span><span class=\"se\">\\n\\n<\/span><span class=\"s\">Casos de prueba iniciales: <\/span><span class=\"si\">{<\/span><span class=\"n\">casos_prueba_iniciales<\/span><span class=\"si\">}<\/span><span class=\"se\">\\n\\n<\/span><span class=\"s\">Mejora y expande los casos de prueba. Para cada uno de los casos de prueba identificados en la etapa anterior, genera una redacci\u00f3n inicial que incluya precondiciones, pasos a seguir y resultados esperados<\/span><span class=\"sh\">\"<\/span>\n    <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">client<\/span><span class=\"p\">.<\/span><span class=\"n\">chat<\/span><span class=\"p\">.<\/span><span class=\"n\">completions<\/span><span class=\"p\">.<\/span><span class=\"nf\">create<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">messages<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span>\n            <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">role<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">system<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">content<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">context<\/span><span class=\"p\">},<\/span>\n            <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">role<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">user<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">content<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">prompt<\/span><span class=\"p\">}<\/span>\n        <span class=\"p\">],<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">gpt-3.5-turbo<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">max_tokens<\/span><span class=\"o\">=<\/span><span class=\"mi\">1024<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"n\">casos_prueba_mejorados<\/span> <span class=\"o\">=<\/span> <span class=\"n\">response<\/span><span class=\"p\">.<\/span><span class=\"n\">choices<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">].<\/span><span class=\"n\">message<\/span><span class=\"p\">.<\/span><span class=\"n\">content<\/span><span class=\"p\">.<\/span><span class=\"nf\">strip<\/span><span class=\"p\">()<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">casos_prueba_mejorados<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">main<\/span><span class=\"p\">():<\/span>\n\n    <span class=\"c1\">#Establece el contexto de nuestro entorno de prompts\n<\/span>    <span class=\"n\">context<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n         Ingeniero de pruebas de software: Dise\u00f1a y ejecuta planes de prueba completos para software.\n    <\/span><span class=\"sh\">\"\"\"<\/span>\n\n\n    <span class=\"n\">requerimiento<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Desarrollar una pantalla de inicio de sesi\u00f3n para que los usuarios puedan acceder a una p\u00e1gina web. La pantalla debe solicitar un nombre de usuario y una contrase\u00f1a, y validar que los datos ingresados sean correctos. Si los datos son v\u00e1lidos, el usuario debe ser redirigido a la p\u00e1gina principal de la aplicaci\u00f3n web.<\/span><span class=\"sh\">\"<\/span>\n\n    <span class=\"c1\"># Prompt inicial para generar casos de prueba\n<\/span>    <span class=\"n\">prompt_inicial<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Dado el siguiente requerimiento: <\/span><span class=\"si\">{<\/span><span class=\"n\">requerimiento<\/span><span class=\"si\">}<\/span><span class=\"se\">\\n\\n<\/span><span class=\"s\">Genera una lista de posibles casos de prueba que deber\u00edan considerarse para validar su correcto funcionamiento.<\/span><span class=\"sh\">\"<\/span>\n\n    <span class=\"c1\"># Obtener casos de prueba iniciales\n<\/span>    <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">client<\/span><span class=\"p\">.<\/span><span class=\"n\">chat<\/span><span class=\"p\">.<\/span><span class=\"n\">completions<\/span><span class=\"p\">.<\/span><span class=\"nf\">create<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">messages<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span>\n            <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">role<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">system<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">content<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">context<\/span><span class=\"p\">},<\/span>\n            <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">role<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">user<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">content<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">prompt_inicial<\/span><span class=\"p\">}<\/span>\n        <span class=\"p\">],<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">gpt-3.5-turbo<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">max_tokens<\/span><span class=\"o\">=<\/span><span class=\"mi\">1024<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"n\">casos_prueba_iniciales<\/span> <span class=\"o\">=<\/span> <span class=\"n\">response<\/span><span class=\"p\">.<\/span><span class=\"n\">choices<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">].<\/span><span class=\"n\">message<\/span><span class=\"p\">.<\/span><span class=\"n\">content<\/span><span class=\"p\">.<\/span><span class=\"nf\">strip<\/span><span class=\"p\">()<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Casos de prueba iniciales:<\/span><span class=\"se\">\\n<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">casos_prueba_iniciales<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Iteraci\u00f3n y refinamiento de los casos de prueba\n<\/span>    <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nf\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">casos_prueba_mejorados<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">generar_casos_prueba<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">,<\/span> <span class=\"n\">requerimiento<\/span><span class=\"p\">,<\/span> <span class=\"n\">casos_prueba_iniciales<\/span><span class=\"p\">)<\/span>\n        <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"se\">\\n<\/span><span class=\"s\">Iteraci\u00f3n <\/span><span class=\"si\">{<\/span><span class=\"n\">i<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"si\">}<\/span><span class=\"s\">:<\/span><span class=\"se\">\\n<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">casos_prueba_mejorados<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">casos_prueba_iniciales<\/span> <span class=\"o\">=<\/span> <span class=\"n\">casos_prueba_mejorados<\/span>\n\n<span class=\"k\">if<\/span> <span class=\"n\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">__main__<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span>\n    <span class=\"nf\">main<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight markdown\"><code>Casos de prueba iniciales:\n<span class=\"p\"> 1.<\/span> Caso de prueba positivo: Ingresar un nombre de usuario y contrase\u00f1a v\u00e1lidos y verificar que se redirija a la p\u00e1gina principal.\n<span class=\"p\">2.<\/span> Caso de prueba negativo: Ingresar un nombre de usuario v\u00e1lido pero una contrase\u00f1a inv\u00e1lida y verificar que se muestre un mensaje de error.\n<span class=\"p\">3.<\/span> Caso de prueba negativo: Ingresar un nombre de usuario inv\u00e1lido y una contrase\u00f1a v\u00e1lida y verificar que se muestre un mensaje de error.\n<span class=\"p\">4.<\/span> Caso de prueba negativo: Dejar en blanco tanto el campo de nombre de usuario como el de contrase\u00f1a y verificar que se muestren mensajes de error para ambos campos.\n<span class=\"p\">5.<\/span> Caso de prueba negativo: Ingresar caracteres especiales en el campo de nombre de usuario y verificar que se muestre un mensaje de error.\n<span class=\"p\">6.<\/span> Caso de prueba negativo: Ingresar una contrase\u00f1a corta o demasiado larga y verificar que se muestre un mensaje de error.\n<span class=\"p\">7.<\/span> Caso de prueba negativo: Intentar iniciar sesi\u00f3n demasiadas veces con datos incorrectos y verificar que se bloquee la cuenta temporalmente.\n<span class=\"p\">8.<\/span> Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un usuario que se encuentre deshabilitado y verificar que se muestre un mensaje apropiado.\n<span class=\"p\">9.<\/span> Caso de prueba negativo: Intentar iniciar sesi\u00f3n sin conexi\u00f3n a internet y verificar que se muestre un mensaje de error indicando la falta de conexi\u00f3n.\n<span class=\"p\">10.<\/span> Caso de prueba de rendimiento: Probar la velocidad de respuesta al intentar iniciar sesi\u00f3n con diferentes niveles de tr\u00e1fico de red y verificar que sea aceptable.\n\nIteraci\u00f3n 1:\n Adem\u00e1s de los casos de prueba iniciales mencionados anteriormente, se pueden incluir algunos casos de prueba adicionales:\n<span class=\"p\">\n11.<\/span> Caso de prueba positivo: Ingresar un nombre de usuario con may\u00fasculas y min\u00fasculas combinadas y una contrase\u00f1a v\u00e1lida, y verificar que se redirija a la p\u00e1gina principal.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Ingresar un nombre de usuario con combinaci\u00f3n de may\u00fasculas y min\u00fasculas, una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.\n<span class=\"p\">   -<\/span> Resultado esperado: El usuario es redirigido correctamente a la p\u00e1gina principal de la aplicaci\u00f3n web.\n<span class=\"p\">\n12.<\/span> Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un nombre de usuario que est\u00e1 en blanco y una contrase\u00f1a v\u00e1lida, y verificar que se muestre un mensaje de error.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Dejar en blanco el campo de nombre de usuario, ingresar una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.\n<span class=\"p\">   -<\/span> Resultado esperado: Se muestra un mensaje de error indicando que el campo de nombre de usuario no puede estar vac\u00edo.\n<span class=\"p\">\n13.<\/span> Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un nombre de usuario v\u00e1lido pero con espacios en blanco al principio o al final y una contrase\u00f1a v\u00e1lida, y verificar que se redireccione a la p\u00e1gina principal.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Ingresar un nombre de usuario con espacios en blanco al principio o al final, una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.\n<span class=\"p\">   -<\/span> Resultado esperado: El sistema elimina los espacios en blanco y redirige al usuario a la p\u00e1gina principal.\n<span class=\"p\">\n14.<\/span> Caso de prueba negativo: Introducir caracteres especiales en el campo de contrase\u00f1a y verificar que se muestre un mensaje de error.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Ingresar un nombre de usuario v\u00e1lido, una contrase\u00f1a con caracteres especiales y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.\n<span class=\"p\">   -<\/span> Resultado esperado: Se muestra un mensaje de error indicando que la contrase\u00f1a no puede contener caracteres especiales.\n<span class=\"p\">\n15.<\/span> Caso de prueba de seguridad: Intentar realizar un ataque de fuerza bruta con m\u00faltiples intentos de inicio de sesi\u00f3n y verificar que se bloquee la cuenta temporalmente.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Introducir un nombre de usuario v\u00e1lido pero con contrase\u00f1as incorrectas de forma repetida.\n<span class=\"p\">   -<\/span> Resultado esperado: Despu\u00e9s de un cierto n\u00famero de intentos fallidos, la cuenta debe quedar bloqueada temporalmente y mostrar un mensaje indicando el bloqueo.\n\nEstos casos de prueba adicionales permiten cubrir aspectos espec\u00edficos de funcionalidad y seguridad que pueden ser cr\u00edticos para la correcta operaci\u00f3n de la pantalla de inicio de sesi\u00f3n en la aplicaci\u00f3n web.\n\nIteraci\u00f3n 2:\n<span class=\"p\"> 16.<\/span> Caso de prueba negativo: Ingresar un nombre de usuario v\u00e1lido pero una contrase\u00f1a incorrecta y verificar que se muestre un mensaje de error.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Ingresar un nombre de usuario v\u00e1lido, una contrase\u00f1a incorrecta y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.\n<span class=\"p\">   -<\/span> Resultado esperado: Se muestra un mensaje de error indicando que la contrase\u00f1a ingresada es incorrecta.\n<span class=\"p\">\n17.<\/span> Caso de prueba negativo: Intentar iniciar sesi\u00f3n con un nombre de usuario inv\u00e1lido y una contrase\u00f1a v\u00e1lida, y verificar que se muestre un mensaje de error.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Ingresar un nombre de usuario inv\u00e1lido, una contrase\u00f1a v\u00e1lida y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.\n<span class=\"p\">   -<\/span> Resultado esperado: Se muestra un mensaje de error indicando que el nombre de usuario ingresado es inv\u00e1lido.\n<span class=\"p\">\n18.<\/span> Caso de prueba negativo: Dejar en blanco tanto el campo de nombre de usuario como el de la contrase\u00f1a y verificar que se muestren mensajes de error correspondientes a cada campo.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Dejar en blanco tanto el campo de nombre de usuario como el de contrase\u00f1a y hacer clic en el bot\u00f3n de iniciar sesi\u00f3n.\n<span class=\"p\">   -<\/span> Resultado esperado: Se muestran mensajes de error indicando que ambos campos no pueden estar vac\u00edos.\n<span class=\"p\">\n19.<\/span> Caso de prueba de usabilidad: Comprobar que al presionar la tecla \"Enter\" despu\u00e9s de ingresar los datos, el formulario se env\u00ede y se intente realizar el inicio de sesi\u00f3n.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Ingresar un nombre de usuario v\u00e1lido, una contrase\u00f1a v\u00e1lida y presionar la tecla \"Enter\".\n<span class=\"p\">   -<\/span> Resultado esperado: El formulario se env\u00eda y se intenta realizar el inicio de sesi\u00f3n de manera habitual.\n<span class=\"p\">\n20.<\/span> Caso de prueba de recuperaci\u00f3n de contrase\u00f1a: Verificar que al hacer clic en un enlace de \"\u00bfOlvid\u00f3 su contrase\u00f1a?\" se presente un formulario para restablecer la contrase\u00f1a.\n<span class=\"p\">\n   -<\/span> Precondici\u00f3n: La p\u00e1gina de inicio de sesi\u00f3n est\u00e1 cargada y lista para recibir datos.\n<span class=\"p\">   -<\/span> Paso a seguir: Hacer clic en el enlace de \"\u00bfOlvid\u00f3 su contrase\u00f1a?\" y completar el formulario para restablecer la contrase\u00f1a.\n<span class=\"p\">   -<\/span> Resultado esperado: Se muestra un formulario de recuperaci\u00f3n de contrase\u00f1a y se puede completar el proceso satisfactoriamente.\n\nEstos casos de prueba adicionales permiten cubrir m\u00e1s escenarios de uso y funcionalidades relacionadas con la pantalla de inicio de sesi\u00f3n, lo que contribuye a una mayor calidad y robustez de la misma.\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0628\u0627 Jupyter Notebook \u06cc\u0627 \u062f\u0631 https:\/\/colab.google\/ \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u067e\u0631\u0648\u0698\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0627\u0632 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0645\u0648\u0644\u062f \u0645\u0627\u0646\u0646\u062f ChatGPT-3.5 \u0628\u0631\u0627\u06cc \u0633\u0631\u0639\u062a \u0628\u062e\u0634\u06cc\u062f\u0646 \u0648 \u0628\u0647\u0628\u0648\u062f \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0644\u06cc\u062f \u0646\u0633\u062e\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0627\u06cc\u062f\u0647\u200c\u0647\u0627 \u0648 \u067e\u06cc\u0634\u200c\u0646\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062a\u0648\u0633\u0637 \u0645\u062a\u062e\u0635\u0635\u0627\u0646 \u0627\u0646\u0633\u0627\u0646\u06cc \u062a\u0631\u06a9\u06cc\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0632 \u06cc\u06a9 \u0631\u0648\u0634 \u0686\u0627\u0628\u06a9 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":88907,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-88906","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/88906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=88906"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/88906\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/88907"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=88906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=88906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=88906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}