paint-brush
Medición del tiempo de ejecución de las pruebas: cómo optimizar el rendimiento de su conjunto de pruebaspor@launchable
7,486 lecturas
7,486 lecturas

Medición del tiempo de ejecución de las pruebas: cómo optimizar el rendimiento de su conjunto de pruebas

por Launchable6m2023/07/25
Read on Terminal Reader

Demasiado Largo; Para Leer

Comprenda por qué medir el tiempo de ejecución de las pruebas puede ayudar a acelerar sus ciclos de desarrollo y las formas óptimas de completar la medición.
featured image - Medición del tiempo de ejecución de las pruebas: cómo optimizar el rendimiento de su conjunto de pruebas
Launchable HackerNoon profile picture

Enfoques de tiempo de ejecución de pruebas manuales y basados en inteligencia artificial que puede comenzar a usar hoy

El desarrollo de software se vuelve progresivamente más complejo a medida que pasa el tiempo, lo que hace que las pruebas de software sean igualmente esenciales para lanzar un producto estable y confiable. Pero sabemos que las suites de prueba infladas son cuellos de botella infames para lanzamientos más rápidos.


Los equipos de desarrollo deben poder acelerar sus pruebas para mantener el progreso, pero no es tan simple.


Medir el tiempo de ejecución de sus conjuntos de pruebas puede afectar significativamente su ciclo de desarrollo, lo que permite bucles de retroalimentación rápidos, una utilización eficaz de los recursos y una mejor capacidad de mantenimiento para sus pruebas. Con todo eso en mente, puede ver cuán importante puede ser medir el tiempo de ejecución de la prueba.

Enfoques tradicionales para medir el tiempo de ejecución de las pruebas

Hay varias formas de medir el tiempo de ejecución de la prueba, suficientes para satisfacer las necesidades de casi cualquier persona. Sin embargo, eso no siempre significa que sean el mejor enfoque. Hablemos de algunos de los métodos más comunes de los que quizás haya oído hablar:


  • Cronometraje manual : la forma más básica posible, no es del todo desconocida para cronometrar estas pruebas con relojes y cronómetros tradicionales. Todo lo que necesita es una forma de seguir el paso del tiempo (como la función de cronómetro en su teléfono) y un buen momento. Sin embargo, no es ni de lejos el más preciso, ya que aún depende de la interacción humana.


  • Integraciones con herramientas de CI : muchas herramientas de CI incluyen funciones para medir el tiempo de ejecución de las pruebas. Herramientas como TravisCI y Jenkins pueden registrar la hora de inicio y finalización de los trabajos proporcionados, lo que le brinda una idea de cómo funcionan y si cambia.


  • Análisis de registros y uso de marcas de tiempo : otra forma más "manual" es simplemente configurar registros en sus pruebas a medida que se ejecutan. Independientemente del idioma que utilice, siempre habrá una función de impresión () equivalente en alguna parte. También puede configurar sus pruebas para registrar estos resultados para un análisis más fácil, pero cualquiera de las opciones hará que la escritura de las pruebas sea más larga.

Ejemplo de análisis de registros en Python

Cuando su marco de prueba genera registros, puede analizarlos para extraer la información necesaria, como la hora de inicio de la prueba y la hora de finalización de la prueba.


 import re def parse_logs(log_file): with open(log_file, 'r') as f: logs = f.readlines() test_start_time = None test_end_time = None for line in logs: if 'Test started' in line: test_start_time = extract_timestamp(line) elif 'Test completed' in line: test_end_time = extract_timestamp(line) if test_start_time and test_end_time: test_runtime = test_end_time - test_start_time print(f"Test runtime: {test_runtime}") def extract_timestamp(log_line): # Regular expression to extract timestamp (assuming format: [YYYY-MM-DD HH:MM:SS]) timestamp_pattern = r'\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]' match = re.search(timestamp_pattern, log_line) if match: timestamp = match.group(1) return convert_to_datetime(timestamp) return None def convert_to_datetime(timestamp): from datetime import datetime datetime_format = "%Y-%m-%d %H:%M:%S" return datetime.strptime(timestamp, datetime_format) # Usage parse_logs('test_logs.txt')


En este ejemplo, la función parse_logs lee el archivo de registro línea por línea y busca marcadores específicos ('Prueba iniciada' y 'Prueba completada') para extraer las marcas de tiempo correspondientes. Utiliza expresiones regulares para extraer la marca de tiempo y la convierte en un objeto DateTime para realizar más cálculos.

Ejemplo de marcas de tiempo con Python

Otro enfoque es registrar marcas de tiempo directamente en su código de prueba. En el siguiente ejemplo, la función run_test registra la hora de inicio usando time.time() antes de ejecutar la lógica de prueba.


Una vez completada la prueba, calcula el tiempo de ejecución restando la hora de inicio de la hora de finalización, que también se obtiene mediante time.time().


El resultado se imprime como el tiempo de ejecución de la prueba en segundos.


 import time def run_test(): start_time = time.time() # Test logic goes here # ... end_time = time.time() test_runtime = end_time - start_time print(f"Test runtime: {test_runtime} seconds") # Usage run_test()


Independientemente de su enfoque, estos métodos tienden a tener algunos inconvenientes. Es difícil obtener resultados completamente precisos con estos métodos, ya sea por la posibilidad de un error humano o por factores externos.


Además, muchos de estos no pueden ampliarse con sus pruebas. Eso significa que necesita encontrar una forma más precisa de medir.

¿Por qué debería medir el tiempo de ejecución de las pruebas de todos modos?

Hemos hablado una y otra vez sobre el cómo, pero ¿qué pasa con el por qué? Sus pruebas son críticas, pero la tubería de prueba puede ser un cuello de botella en la entrega.


Al realizar un seguimiento de cómo se ejecutan sus pruebas, puede ver la imagen completa de su rendimiento, unir la inteligencia del conjunto de pruebas y tomar medidas para optimizar aún más sus pruebas, incluidas tres áreas comunes:

Optimización de Paralelización

Medir el tiempo de ejecución del conjunto de pruebas le permite detectar qué pruebas tienen el tiempo de ejecución más prolongado. Esta transparencia le permite optimizar aún más las pruebas, cuando sea posible, mediante pruebas paralelas que le brindan resultados más rápidos y un ciclo de retroalimentación más corto.

Asignación de recursos

Medir con precisión el tiempo de ejecución de su prueba puede ayudarlo a planificar sus fases de prueba de manera más eficiente. Podrá asignar tiempo y poder de cómputo a sus pruebas más largas y evitar cuellos de botella más adelante en la tubería.

Priorización de pruebas

Identificar sus pruebas más lentas también le permite dar un paso atrás y priorizar las pruebas más críticas y lo que se puede guardar para más adelante. De esa manera, puede hacer que sus pruebas más rápidas se ejecuten primero, lo que le brinda información crucial sobre la compilación antes de que las pruebas más largas comiencen a funcionar.

Mejora continua

Los tiempos de ejecución de las pruebas son críticos en las canalizaciones de CI/CD, donde la retroalimentación rápida es esencial. Al medir y optimizar los tiempos de ejecución de las pruebas, puede reducir el tiempo necesario para el proceso de CI/CD , lo que permite una implementación más rápida.


Esto, a su vez, mejora la agilidad general del proceso de desarrollo y permite iteraciones más frecuentes.

Automatice el tiempo de ejecución de las pruebas de seguimiento y los KPI críticos con Launchable

Está bastante claro que medir el tiempo de ejecución de la prueba puede ser un factor muy importante en su proceso de prueba general. Y con Launchable, puede comenzar a medir de inmediato y hacer que sus pruebas sean más eficientes.

¿Cómo mide Launchable el tiempo de ejecución de las pruebas?

Launchable automatiza el seguimiento del tiempo de ejecución de las pruebas mediante la integración con todas sus herramientas favoritas de CI/CD, incluidas TravisCI, Jenkins y GitHub Actions. Eso significa que puede deslizar Launchable fácilmente en su canalización existente, lo que permite que nuestro modelo ML analice sus pruebas.


Y una vez que estamos dentro, podemos medir sin problemas el tiempo de ejecución de las pruebas en varias compilaciones, brindándole información crítica sobre sus pruebas más allá del tiempo de ejecución .

Perspectivas de prueba más profundas más allá del tiempo de ejecución para completar el estado de la suite de pruebas

Capacite a su equipo para cuantificar el impacto de los cambios en sus conjuntos de pruebas más allá del tiempo de ejecución de la prueba. Launchable brinda métricas de salud del conjunto de pruebas para una mayor transparencia del conjunto de pruebas para el control de calidad basado en datos.


  • Priorice las pruebas escamosas impactantes: las pruebas escamosas pueden ser un gran dolor de cabeza para los equipos de control de calidad, ya que consumen tiempo y esfuerzo. Launchable identifica las pruebas escamosas en función de su impacto, lo que le permite abordarlas y ejecutarlas de manera más confiable. Obtenga información de nuestro informe diario Flakiness y corrija sus pruebas con confianza.


  • Realice un seguimiento de la duración de la sesión de prueba: mida el tiempo que tarda su conjunto de pruebas en ejecutarse en varias sesiones. Nuestra función de seguimiento destaca las pruebas que exceden las duraciones esperadas, lo que lo ayuda a identificar y resolver cualquier problema de rendimiento.


  • Optimice la frecuencia de la sesión de prueba: controle la frecuencia con la que se ejecutan sus suites de prueba y combínela con la duración de la sesión. Asegúrese de que las pruebas se ejecuten en los intervalos correctos. Además, Predictive Test Selection ahorra tiempo y recursos al ejecutar las pruebas más relevantes en los momentos óptimos.


  • Identifique la proporción de fallas de la sesión de prueba: identifique las pruebas que fallan con frecuencia e investigue posibles problemas con las pruebas o la compilación actual. Obtenga información valiosa sobre la estabilidad de su proceso de prueba y tome decisiones informadas para mejorar la calidad general.


Utilizar su infraestructura de prueba de manera eficiente es clave para minimizar el tiempo de inactividad y maximizar sus recursos. Identifique fácilmente cualquier cuello de botella que obstaculice el rendimiento midiendo el tiempo de ejecución de las pruebas con Launchable.


Obtenga toda la información que necesita para probar los patrones y las tendencias del conjunto de pruebas dentro de sus pruebas, lo que le permite tomar decisiones informadas y basadas en datos para optimizar sus pruebas. Y al hacerlo, puede optimizar su proceso de prueba general .