ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
Comentario
2
1. ¿Por qué no se pueden aplicar las prácticas de diseño de pruebas inmediatamente después de recibir los requisitos?
3
La práctica del diseño de pruebas se enfoca en la identificación y definición de casos de prueba que permitirán verificar que el software cumple con los requisitos especificados. Sin embargo, los requisitos pueden ser ambiguos, incompletos o contradictorios, lo que puede dificultar la identificación de casos de prueba apropiados.

Por lo tanto, es muy importante realizar una revisión y un análisis exhaustivos de los requisitos antes de comenzar a probar el diseño. Esto permitirá identificar cualquier problema o inconsistencia en los requisitos y ajustarlos en consecuencia antes de comenzar la fase de diseño de la prueba.

Además, es importante tener en cuenta que a medida que avanza el desarrollo del software, los requisitos pueden cambiar, lo que puede afectar los casos de prueba diseñados previamente. Por lo tanto, es importante realizar periódicamente revisiones y actualizaciones del diseño de las pruebas a medida que evolucionan los requisitos.
4
2. ¿En qué situaciones pueden existir las clases de equivalencia y los valores límite por separado? Explica tu respuesta y da ejemplos.
5
Las clases de equivalencia y los valores límite son conceptos diferentes, aplicables a diferentes situaciones. Los dos conceptos se explican a continuación, con ejemplos de situaciones en las que podrían estar solos:

Clases de equivalencia: las clases de equivalencia se utilizan para agrupar objetos o elementos en categorías que comparten algunas características o atributos comunes. En este sentido, la equivalencia es una relación igualitaria entre objetos de la misma categoría. Por ejemplo, si tiene una secuencia de números enteros, puede agruparlos en clases de equivalencia según su paridad (par e impar). En cada una de estas clases de equivalencia, todos los números tienen la misma propiedad de ser pares o impares respectivamente.

Límites: Los límites se utilizan para establecer un límite máximo o mínimo en una variable
6
3. ¿Qué es la equivalencia? ¿Qué es una clase de equivalencia?
7
La equivalencia es una relación entre dos elementos que indica que son iguales o intercambiables con respecto a un contexto particular o una propiedad particular. Es decir, dos elementos son indistinguibles o intercambiables en algún sentido si son equivalentes.


Por ejemplo, consideramos el conjunto de números enteros y la relación de equivalencia "congruencia módulo 3". Esta relación establece que dos números enteros son equivalentes si su diferencia es múltiplo de 3. Los números enteros se pueden dividir en tres clases de equivalencia: los iguales a 0, los iguales a 1 y las clases de equivalencia de números iguales a 2. Cada clase de equivalencia tiene el mismo resto al dividir números enteros por 3, pero de manera diferente a los números en las otras clases de equivalencia.
8
4. ¿Es posible excluir comprobaciones en medio del rango en favor de las comprobaciones en los límites dentro del rango? Explica tu respuesta.
9
En algunos casos, la lógica del código se puede simplificar excluyendo las comprobaciones intermedias y centrándose en las comprobaciones de límites de rango. Por ejemplo, si desea verificar si un número está dentro de un rango de valores, simplemente puede verificar si el número es mayor o igual al valor mínimo del rango y menor o igual al valor máximo del rango. Esto eliminará la necesidad de buscar valores intermedios en el rango, ya que si el número está en el rango, también estará en el rango.

Sin embargo, en otros casos puede ser necesario realizar verificaciones intermedias en el alcance. Por ejemplo, si está realizando un análisis de datos en el que es importante conocer la distribución de los datos dentro de un rango determinado, debe realizar inspecciones a intervalos intermedios de ese rango para obtener una imagen completa de la distribución de los datos. En general, la respuesta a si se pueden eliminar las comprobaciones intermedias en favor de las comprobaciones de límites de rango depende del contexto específico del problema de la aplicación y los objetivos del análisis o código.
10
5. Imagina que debes probar un formulario donde cada campo tiene un validador. El resultado del trabajo del formulario depende de la combinación de datos en los campos. ¿Qué prácticas de diseño de pruebas se deben utilizar y por qué? Explica tu respuesta.
11
Al probar un formulario con múltiples campos y validadores, es importante utilizar prácticas de diseño de prueba adecuadas para garantizar que el formulario funcione correctamente en varios escenarios.

Algunas prácticas clave de diseño de prueba para emplear en este caso incluyen:

Partición de equivalencia: esta técnica consiste en dividir los datos de entrada en clases equivalentes, donde cada clase representa un conjunto de entradas que se espera que se comporten de manera similar.

Al probar una entrada de cada clase, puede reducir la cantidad de casos de prueba mientras mantiene la cobertura de la prueba.

Esto es útil cuando hay muchas combinaciones de entrada posibles, ya que le permite concentrarse en escenarios representativos.

Análisis de valor límite: esta técnica se enfoca en probar los valores límite de los rangos de entrada, ya que los errores a menudo ocurren en los límites de los dominios de entrada.

12
6. Explica las formas en las que puedes optimizar la cantidad de pruebas al trabajar con tablas de decisiones. Explica tu respuesta.
13
Aquí hay algunas formas de optimizar la cantidad de pruebas necesarias al trabajar con tablas de decisiones:

Utilice un generador de casos de prueba: un generador de casos de prueba es una herramienta que automatiza el proceso de creación de casos de prueba. Al ingresar los criterios de entrada y los valores esperados, el generador de casos de prueba puede generar una gran cantidad de casos de prueba en un corto período de tiempo.

Realice pruebas de equivalencia: en lugar de probar todos los posibles valores de entrada, las pruebas de equivalencia se centran en probar solo un valor de cada clase de equivalencia. Esto ayuda a reducir la cantidad de pruebas necesarias sin comprometer la calidad de las pruebas.

Esto puede reducir el número de casos de prueba necesarios sin afectar la calidad de las pruebas.

En resumen, hay varias formas de optimizar la cantidad de pruebas necesarias al trabajar con tablas de decisiones, como el uso de generadores de casos de prueba, pruebas de equivalencia, técnicas de partición de dominio y análisis de valores límite. Al utilizar estas técnicas, se puede reducir significativamente el número de casos de prueba necesarios sin comprometer la calidad de las pruebas.
14
7. Describe las diferencias entre una lista de comprobación y los casos de prueba; proporciona ejemplos de dónde se utilizan ambos.
15
Una lista de comprobación y un caso de prueba son herramientas de calidad utilizadas en el proceso de prueba de software, pero difieren en su propósito y en cómo se aplican.

Una lista de comprobación es una lista de elementos o criterios que se utilizan para verificar si un software o sistema cumple con ciertas características o requisitos.

Por ejemplo, una lista de comprobación podría incluir los elementos necesarios para completar una instalación de software, como verificar que se han cumplido los requisitos del sistema, asegurarse de que se han configurado correctamente los ajustes de seguridad y comprobar que se han instalado todas las dependencias necesarias.

Por otro lado, un caso de prueba es una descripción detallada de cómo probar una función o característica específica de un sistema o software.

Por ejemplo, un caso de prueba para una función de inicio de sesión en una aplicación podría incluir pasos específicos para ingresar el nombre de usuario y la contraseña, así como una entrada esperada para verificar que se muestra correctamente la página de inicio después de la autenticación.

En resumen, una lista de comprobación se utiliza para verificar que se han completado todas las tareas necesarias en un proceso, mientras que un caso de prueba se utiliza para probar una función o característica específica del software.
16
8. ¿Cuál es la forma correcta de hacer un informe de errores? ¿Qué elementos de un informe de errores son necesarios? ¿Por qué?
17
Para hacer un informe de errores eficaz, es importante seguir algunas pautas clave:

Identificar el problema: El informe debe comenzar describiendo el problema de manera clara y concisa.

Reproducir el problema: Es importante proporcionar instrucciones claras y precisas sobre cómo reproducir el problema.

Proporcionar contexto: Proporcione información adicional sobre el problema, como el entorno en el que se produjo, el comportamiento esperado y el comportamiento real.

Incluir capturas de pantalla o videos: Las capturas de pantalla o los videos pueden ayudar a ilustrar el problema y proporcionar información adicional que no se puede expresar en palabras.

Proporcionar información del sistema: Proporcione información sobre el sistema operativo, la versión del software y otros detalles relevantes.

Proporcionar información de contacto: Proporcione información de contacto para que el equipo de desarrollo pueda ponerse en contacto con usted si necesitan más información.

En resumen, los elementos necesarios de un informe de errores incluyen una descripción clara del problema, instrucciones precisas sobre cómo reproducir el problema, contexto adicional, capturas de pantalla o videos, información del sistema, prioridad asignada y información de contacto.
18
9. ¿Cuáles son las reglas para escribir un título de informe de errores? ¿Qué pasa si se te ocurre un mal título?
19
Sin embargo, a continuación, se presentan algunas pautas generales que pueden ser útiles:

Seleccionar un título descriptivo: el título debe ser claro y conciso, lo que significa que debe resumir el contenido del informe de errores de manera breve pero precisa.

Incluir información relevante: es importante incluir información relevante en el título, como el nombre del software o la plataforma afectada, la naturaleza del error y su impacto en el usuario.

A menudo, es posible mejorar un título mediocre ajustándolo para que sea más descriptivo o agregando información relevante. En última instancia, el objetivo es tener un título que comunique de manera efectiva el contenido del informe de errores y llame la atención del lector.
20
10. ¿En qué consiste la arquitectura de aplicaciones cliente-servidor? Describe brevemente la funcionalidad de cada elemento.
21
La arquitectura de aplicaciones cliente-servidor es un modelo de diseño de software que divide la funcionalidad de una aplicación en dos partes principales: el cliente y el servidor.

El cliente es la parte de la aplicación que se ejecuta en la computadora o dispositivo del usuario final y se encarga de presentar la interfaz de usuario y de recopilar los datos que el usuario ingresa.

El servidor es la parte de la aplicación que se ejecuta en un servidor remoto y se encarga de procesar las solicitudes del cliente, recuperar o actualizar los datos de la aplicación y devolver la respuesta al cliente.
22
11. Describe los pasos para procesar la solicitud después de introducir esta URL en la barra de direcciones del navegador: https://google.com.
23
Al introducir la URL https://google.com en la barra de direcciones del navegador, el navegador inicia una solicitud de HTTP al servidor de Google.

Resolución DNS: El navegador envía la solicitud al servidor DNS para resolver el nombre del dominio "google.com" en una dirección IP única. El servidor DNS responde con la dirección IP del servidor de Google.

Establecimiento de conexión: El navegador utiliza la dirección IP para establecer una conexión TCP con el servidor de Google.

Envío de solicitud HTTP: El navegador envía una solicitud HTTP al servidor de Google, especificando el recurso que se desea obtener.

Procesamiento de la solicitud: El servidor de Google procesa la solicitud y genera una respuesta HTTP. Esto incluye la ejecución de código en el servidor, como la generación de contenido dinámico o la recuperación de información de una base de datos.

Envío de respuesta HTTP: El servidor de Google envía la respuesta HTTP al navegador a través de la conexión TCP establecida anteriormente. La respuesta incluye un código de estado HTTP que indica si la solicitud fue exitosa (código 200) o si hubo algún error (por ejemplo, código 404 si el recurso solicitado no existe).

Procesamiento de la respuesta: El navegador procesa la respuesta HTTP y renderiza el contenido de la página.

Cierre de la conexión: Una vez que se ha completado la transferencia de datos, se cierra la conexión TCP entre el navegador y el servidor de Google.
24
12. ¿Qué es un caché? ¿Por que se necesita? ¿Qué regla se debe seguir cuando se trabaja con un caché en las pruebas?
25
Un caché es una memoria de acceso rápido que almacena datos o resultados de operaciones para que puedan ser accedidos más rápidamente en el futuro. La idea es que si se necesita acceder a los mismos datos o realizar la misma operación varias veces, el caché puede proporcionar el resultado rápidamente en lugar de tener que volver a calcularlo o accederlo desde su ubicación original, lo que puede llevar más tiempo.

Si una prueba depende del resultado de una operación o de un conjunto de datos específicos, es importante asegurarse de que el caché no esté proporcionando resultados incorrectos o anticuados. En general, esto se puede hacer desactivando temporalmente el caché durante las pruebas o utilizando técnicas de invalidación de caché para asegurarse de que los datos más recientes sean utilizados en cada prueba. Además, también es importante tener en cuenta que el caché puede afectar la reproducibilidad de las pruebas, ya que los resultados pueden ser diferentes dependiendo de si el caché está activo o no.
26
13. Responde las preguntas sobre los protocolos HTTP y HTTPS:
- ¿Cuál es la diferencia entre HTTP y HTTPS? ¿Cuándo no deberías usar HTTP?
- ¿Qué componentes conforman una solicitud HTTP y de qué es responsable cada uno?
- ¿Qué métodos HTTP conoces? ¿De qué se encargan? Da ejemplos sobre la aplicación de diferentes métodos.
- ¿Qué es un código de respuesta HTTP? ¿Qué códigos existen?
27
La principal diferencia entre HTTP (Protocolo de Transferencia de Hipertexto) y HTTPS (Protocolo Seguro de Transferencia de Hipertexto) es que HTTPS utiliza una capa adicional de seguridad encriptada (SSL/TLS) para proteger los datos transmitidos entre el cliente y el servidor. Por lo tanto, HTTPS es más seguro que HTTP y es recomendable utilizarlo siempre que se trate de la transmisión de datos sensibles, como información de inicio de sesión, datos bancarios, información personal, etc.

Una solicitud HTTP consta de varios componentes:

Método: es el tipo de acción que se realiza en el servidor, como GET, POST, PUT, DELETE, etc.

Versión de HTTP: es la versión del protocolo HTTP utilizada.

Cabeceras HTTP: son datos adicionales enviados con la solicitud y proporcionan información como el tipo de navegador utilizado, el tipo de datos que se espera recibir, la longitud del contenido, etc.

Algunos de los métodos HTTP más comunes son:

Por ejemplo, cuando visitas una página web, estás haciendo una solicitud GET al servidor para obtener la página web correspondiente.

Por ejemplo, al enviar un formulario de registro en una página web, estás haciendo una solicitud POST al servidor para crear una nueva cuenta de usuario.

Por ejemplo, si tienes una página web y quieres actualizar el contenido de una página, puedes hacer una solicitud PUT al servidor para actualizar la página correspondiente.

DELETE: se utiliza para eliminar un recurso del servidor. Por ejemplo, si tienes una página web y quieres eliminar una página, puedes hacer una solicitud DELETE al servidor para eliminar la página correspondiente.

Algunos de los códigos de respuesta HTTP más comunes son:

200 OK: indica que la solicitud se completó correctamente y se envió el recurso solicitado.

500 Error interno del servidor: indica que se produjo un error en el servidor al procesar la solicitud.
28
14. Describe de qué componentes puede consistir una URL. ¿De qué es responsable cada uno?
29
Protocolo: Es el esquema que se utiliza para la transferencia de datos entre el cliente y el servidor.

Dominio: Es el nombre de dominio de la página web a la que se quiere acceder. Por ejemplo, en la URL "https://www.google.com/", el dominio es "google.com".

Ruta: Es la parte de la URL que identifica la ubicación exacta del recurso solicitado dentro del sitio web. Por ejemplo, en la URL "https://www.google.com/search?q=url", la ruta es "/search" y el parámetro de búsqueda es "q=url".

Parámetros: Son valores adicionales que se envían a la página web para personalizar la solicitud. Por ejemplo, en la URL "https://www.google.com/search?q=url&hl=en", el parámetro "q" es igual a "url" y el parámetro "hl" es igual a "en", lo que indica que la búsqueda se realiza en inglés.

En resumen, cada componente de una URL es responsable de proporcionar información sobre el protocolo de transferencia, el nombre de dominio, la ruta y los parámetros necesarios para acceder a un recurso web específico.
30
15. ¿Qué tipos de aplicaciones móviles existen? ¿Cuál es la peculiaridad de cada uno?
31
Existen muchos tipos de aplicaciones móviles, pero se pueden clasificar en las siguientes categorías:

Aplicaciones de productividad: Estas aplicaciones ayudan a los usuarios a ser más productivos y eficientes en su trabajo o en su vida diaria.

Aplicaciones de redes sociales: Estas aplicaciones permiten a los usuarios conectarse y comunicarse con otros usuarios. Por ejemplo, aplicaciones de mensajería instantánea, redes sociales como Facebook, Instagram y Twitter.

Aplicaciones de entretenimiento: Estas aplicaciones están diseñadas para el entretenimiento y la diversión de los usuarios.

Aplicaciones de compras: Estas aplicaciones permiten a los usuarios comprar productos o servicios en línea.

Aplicaciones de noticias: Estas aplicaciones proporcionan noticias y actualizaciones a los usuarios. Por ejemplo, aplicaciones de noticias como CNN, BBC, El País, entre otros.

Aplicaciones de viaje: Estas aplicaciones ayudan a los usuarios a planificar sus viajes y hacer reservas.

Aplicaciones de educación: Estas aplicaciones ayudan a los usuarios a aprender y mejorar sus habilidades.

Las aplicaciones de redes sociales permiten a los usuarios conectarse con amigos y familiares de todo el mundo. Las aplicaciones de noticias son útiles para aquellos que quieren estar al día con las últimas noticias.
32
16. ¿En qué se diferencia un emulador de un dispositivo real? Describe brevemente las ventajas y desventajas de ambos al momento de realizar pruebas.
33
Un emulador es un software que simula el comportamiento de un dispositivo real en un ambiente virtual, mientras que un dispositivo real es físico y tangible. La principal diferencia entre un emulador y un dispositivo real es que el emulador ejecuta el código en un entorno virtual, mientras que un dispositivo real lo ejecuta en hardware físico.

Las ventajas de un emulador son la capacidad de emular múltiples dispositivos, lo que permite a los desarrolladores probar su aplicación en diferentes configuraciones y versiones de sistema operativo sin la necesidad de tener un dispositivo físico para cada caso.

Por otro lado, las desventajas de los emuladores son que pueden no ser precisos en la emulación del hardware físico y las diferentes configuraciones de dispositivos, lo que puede resultar en resultados de prueba no representativos.

Las ventajas de utilizar dispositivos reales para pruebas son que proporcionan resultados más precisos y representativos, lo que permite detectar problemas que podrían no ser detectados en un emulador.

Sin embargo, las desventajas de utilizar dispositivos reales son el costo y la complejidad de la gestión y mantenimiento de múltiples dispositivos para probar en diferentes configuraciones de hardware y software.
34
17. Comprueba si hay errores en JSON.
De ser así, adjunta la versión correcta del archivo.
35
36
Enlace a la ilustración:
37
https://practicum-content.s3.us-west-1.amazonaws.com/new-markets/qa-final-project/ESP/7.1.1_esp.png
38
39
Enlace a la ilustración:
40
https://drive.google.com/file/d/1WSH1nXhT6XsjHhxJbzHktwZ185Fn9za9/view?usp=share_link
41
18. ¿Qué es una base de datos relacional? ¿En qué se diferencia de una no relacional?
42
Una base de datos relacional es un tipo de base de datos que organiza la información en tablas relacionadas entre sí.

Por otro lado, una base de datos no relacional, también conocida como base de datos NoSQL, es un tipo de base de datos que no utiliza tablas relacionales para almacenar la información.

La principal diferencia entre las bases de datos relacionales y no relacionales es su modelo de datos. Mientras que las bases de datos relacionales utilizan tablas, las bases de datos no relacionales utilizan otros modelos de datos que pueden ser más flexibles y escalables. Las bases de datos no relacionales también pueden ser más adecuadas para el manejo de datos no estructurados, como videos, imágenes y texto no estructurado, mientras que las bases de datos relacionales son más adecuadas para el manejo de datos estructurados y altamente relacionados, como los datos financieros o los datos de clientes en una empresa.
43
19. Escribe qué tipos de JOIN existen. ¿Cuál es la característica de cada uno?
44
INNER JOIN: Devuelve solo los registros que tienen una coincidencia en ambas tablas. Es decir, se seleccionan solo las filas que tienen valores comunes en las columnas expresadas en la cláusula ON.

LEFT JOIN: Devuelve todos los registros de la tabla de la izquierda (tabla 1), y los registros coincidentes de la tabla de la derecha (tabla 2). Si no hay coincidencias en la tabla de la derecha, se devolverá NULL.

RIGHT JOIN: Devuelve todos los registros de la tabla de la derecha (tabla 2), y los registros coincidentes de la tabla de la izquierda (tabla 1). Si no hay coincidencias en la tabla de la izquierda, se devolverá NULL.

FULL OUTER JOIN: Devuelve todos los registros de ambas tablas (tabla 1 y tabla 2), incluyendo los registros que no tienen coincidencias en la otra tabla. Si no hay coincidencias, se devolverá NULL.
45
Datos de origen para las siguientes tareas

Estás probando un servicio que entrega comida en 30 minutos. Por ahora es una pequeña empresa, así que solo estás trabajando con cuatro tablas:

Pedidos: todos los pedidos entregados
ORDERS_ID: ID de pedidos, int
USER_ID: ID de usuarios y usuarias, int
EMPLOYEE_ID: ID de empleados y empleadas, int
DELIVERY_TIME: tiempo de entrega en minutos, int
ITEMS: lista de artículos, char

Users: usuarios y usuarias
USER_ID: ID de usuarios y usuarias, int
FULL_NAME: nombre completo del usuario o usuaria, char
PHONE: número de teléfono del usuario o usuaria, char
ADDRESS: dirección del usuario o usuaria, char

Employees: empleados y empleadas
EMPLOYEE_ID: ID de empleado o empleada, int
FIRST_NAME: nombre del empleado o empleada, char
LAST_NAME: apellido del empleado o empleada, char
PHONE: número de teléfono del empleado o empleada, char
JOB_ID: ID de especialización, int

Jobs: tipos de trabajo en el servicio
JOB_ID: ID de especialización, int
JOB_TYPE: tipo de especialización, char
HOURS: número de horas de trabajo por semana, int
SALARY: el salario de un empleado o empleada con la especialización dada en ---, int
46
47
Enlace a la ilustración:
48
https://practicum-content.s3.us-west-1.amazonaws.com/new-markets/qa-final-project/US/7.1.1.2.png?etag=ada7cdcd281a6997ea8d44e2b4a69204
49
50
20. El servicio de soporte ha recibido muchas quejas de que los pedidos que llevan arroz tardan una hora en ser entregados, aunque el servicio promete entregar en 30 minutos.

Comprueba si los repartidores o repartidoras realmente se están retrasando. Selecciona todos los pedidos que tengan al menos un artículo, "arroz", y un tiempo de entrega superior a 30 minutos. La tabla resultante debe tener las ID de pedido y de repartidor o repartidora.

Adjunta la solicitud SQL en la respuesta.
51
SELECT p.id_pedido, r.id_repartidor
FROM pedidos p
JOIN repartidores r ON p.id_repartidor = r.id_repartidor
WHERE p.articulos LIKE '%arroz%'
AND p.tiempo_entrega > 30;
52
21. La gerencia sugirió agregar una nueva característica al producto: el monitoreo que muestra los clientes más activos a lo largo del tiempo de operación de la empresa.

Asegúrate de que la lista de usuarios y usuarias se muestre correctamente. En esta etapa de desarrollo, basta con comprobar solamente las ID de los y las clientes.

Elige los cinco clientes o clientas más activos por número de pedidos.

Muestra en la tabla resultante la ID de cada usuario o usuaria y el número de pedidos.

Ordena los datos en orden descendente por el número de pedidos y selecciona los cinco clientes o clientas más activos.

Adjunta la solicitud SQL en la respuesta.
53
SELECT ID_Cliente, COUNT(ID_Pedido) as NumPedidos
FROM Pedidos
GROUP BY ID_Cliente
ORDER BY NumPedidos DESC
LIMIT 5;
54
22. Llegó un informe de errores del departamento de contabilidad: los salarios de los empleados y empleadas se calcularon de forma incorrecta. Resultó que casi todos los errores en los cálculos se encontraban en las hojas de cálculo de la gerencia.

Muestra una lista de las ID de todos los empleados y empleadas que tienen "gerencia" como especialización, con un salario de más de $70,000.

Adjunta la solicitud SQL en la respuesta.
55
SELECT E.EMPLOYEE_ID, J.SALARY
FROM EMPLOYEES E
JOIN JOBS J ON E.JOB_ID = J.JOB_ID
WHERE J.SALARY > 70000 AND J.JOB_TYPE = 'management';
56
23. Examina las siguientes tres situaciones y responde la pregunta: ¿vale la pena escribir pruebas automatizadas en este caso? Explica tu respuesta.

1) El proyecto existe desde hace mucho tiempo y se han escrito muchas pruebas manuales para el mismo.

2) El proyecto es temporal: solo durará algunos meses.

3) El proyecto es inestable: las características se cambian con frecuencia.
57
Si bien ya existen muchas pruebas manuales, aún puede valer la pena escribir pruebas automatizadas. Las pruebas automatizadas pueden ser más eficientes y menos propensas a errores que las pruebas manuales, y pueden proporcionar una mayor cobertura de prueba. Además, las pruebas manuales pueden ser costosas y llevar mucho tiempo, mientras que las pruebas automatizadas pueden ser más rápidas y más escalables.

En el caso de un proyecto temporal que durará solo algunos meses, puede ser menos importante escribir pruebas automatizadas.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100