Explicación de Fuzz Testing: Descubrir fallos ocultos en el software

**TRADUCCIÓN: Las pruebas fuzz (o fuzzing) son una técnica de comprobación de software que introduce grandes cantidades de datos aleatorios o inesperados ("fuzz") en un programa para identificar errores, fallos o vulnerabilidades. Al exponer cómo se comporta el sistema en condiciones inesperadas, las pruebas fuzz ayudan a descubrir casos extremos, fallos de seguridad y debilidades que las pruebas tradicionales podrían pasar por alto. Suele utilizarse para mejorar la fiabilidad y seguridad del software, sobre todo en sistemas que procesan datos complejos, como servicios web, analizadores de archivos y API.
Explicación de Fuzz Testing: Descubrir fallos ocultos en el software
¿Qué es el Fuzz Testing?
Fuzz testing es un método de prueba de software que encuentra errores ocultos introduciendo datos inesperados o aleatorios en un programa para ver cómo responde. Al provocar deliberadamente situaciones inusuales o "confusas", esta técnica de prueba descubre vulnerabilidades que las pruebas normales podrían pasar por alto, especialmente en software complejo o sensible a la seguridad.
Figura- Fuzz Testing.png](https://assets.zilliz.com/Figure_Fuzz_Testing_d15202b24b.png)
Figura: Fuzz Testing
Historia del Fuzz Testing
El fuzz testing comenzó como un descubrimiento accidental a finales de los años ochenta. El profesor Barton Miller de la Universidad de Wisconsin estaba experimentando con programas informáticos en red cuando observó fallos inesperados causados por ruido de entrada aleatorio. Esto le llevó a investigar más a fondo, introduciendo intencionadamente datos aleatorios en varios programas para observar sus reacciones. Descubrió que muchas aplicaciones eran vulnerables a estas entradas aleatorias, lo que revelaba fallos de seguridad y problemas de estabilidad. El trabajo de Miller sentó las bases de las pruebas fuzz, estableciéndolas como un método eficaz para descubrir fallos y vulnerabilidades del software.
¿Cómo funcionan las pruebas fuzz?
Las pruebas fuzz introducen datos aleatorios, inesperados o no válidos (entradas "fuzzed") en un programa para evaluar su comportamiento y descubrir posibles errores. Este enfoque fuerza al programa a estados impredecibles, revelando a menudo fallos o vulnerabilidades que las pruebas tradicionales podrían pasar por alto. La idea es comprobar si el software resiste el estrés de entradas inesperadas sin bloquearse o comportarse de forma imprevista.
Fases de las pruebas Fuzz
El proceso de pruebas fuzz consiste en pasos que guían la identificación, prueba y análisis de problemas dentro de un sistema objetivo.
Figura- Fases de la prueba Fuzz.png](https://assets.zilliz.com/Figure_Phases_of_Fuzz_testing_021e750ecc.png)
Figura: Fases de las pruebas Fuzz
Identificar el sistema objetivo
El primer paso en las pruebas fuzz es elegir el programa o componente que quieres probar. Esto podría ser una aplicación, una función dentro de un sistema más extenso, o incluso un campo de entrada específico.
Determinar las entradas
Una vez identificado el sistema objetivo, el siguiente paso es decidir qué tipo de entradas se van a probar. Esto implica conocer los formatos de datos o tipos de entrada que el sistema suele manejar. Por ejemplo, si el sistema de destino procesa paquetes de red, las entradas pueden consistir en diversas estructuras de paquetes. Los probadores sientan las bases para crear datos fuzzed relevantes definiendo las entradas pertinentes.
Generar Datos Fuzzed
En esta fase, el motor de fuzzing crea una variedad de entradas inesperadas o no válidas. Estas entradas pueden ser generadas aleatoriamente, formas mutadas de datos válidos o secuencias elaboradas que simulan casos extremos. El objetivo es producir entradas que puedan desafiar los límites del sistema objetivo en busca de cualquier debilidad en su manejo de datos inesperados.
Sistema de Pruebas con Datos Fuzzed
Ahora, los datos generados se introducen en el sistema objetivo. Durante esta fase, el sistema interactúa con cada entrada y responde a datos inusuales o no válidos. Debido a la exposición repetida del sistema a diversas entradas, las pruebas fuzz revelan puntos en los que el sistema no responde correctamente o se bloquea.
Analizar el comportamiento del sistema
A medida que el sistema procesa cada entrada, se vigila de cerca su comportamiento. Los evaluadores buscan signos de actividad anormal, como bloqueos, comportamientos que no responden o mensajes de error inesperados. Esta fase ayuda a identificar vulnerabilidades o debilidades potenciales que podrían explotarse en un escenario real.
Identificar problemas
Por último, se revisan las anomalías detectadas durante las pruebas para determinar si indican problemas reales. Los encargados de las pruebas analizan el comportamiento observado utilizando herramientas de depuración, para identificar la causa raíz de cada fallo.
Tipos de pruebas Fuzz
El fuzz testing se presenta en varias formas, cada una con estrategias y aplicaciones distintas. He aquí un desglose de los principales tipos y categorías de pruebas fuzz:
1. Fuzzing basado en entradas
Este tipo de fuzzing se centra en generar varias entradas para probar cómo un programa maneja diferentes datos. Incluye dos enfoques principales:
Fuzzing basado en mutaciones:** Este método altera muestras de datos existentes haciendo modificaciones aleatorias. Por ejemplo, el fuzzing basado en mutaciones puede añadir caracteres inesperados, intercambiar secciones o cambiar valores si la entrada es un archivo de texto. La idea es tomar entradas conocidas y válidas y crear versiones nuevas, ligeramente "mutadas", que puedan revelar vulnerabilidades al tiempo que mantienen cierta semejanza con datos realistas.
Fuzzing basado en generación:** A diferencia del fuzzing basado en mutación, el fuzzing basado en generación construye entradas desde cero. Utiliza reglas y estructuras predefinidas para crear nuevos datos que imitan formatos o protocolos específicos. Por ejemplo, el fuzzing basado en generación puede construir archivos XML con varias estructuras, etiquetas y valores de atributos si se prueba un analizador XML.
2. Fuzzing basado en estructuras
El fuzzing consciente de la estructura comprende la estructura subyacente de los datos que se prueban. En lugar de alimentar datos aleatorios o mutados, mantiene el formato correcto o la estructura del protocolo mientras varía el contenido.
- Fuzzing de Protocolos:** Una aplicación típica del fuzzing consciente de la estructura, el fuzzing de protocolos se utiliza para probar protocolos de red generando entradas que se ajustan a estándares de comunicación específicos (como HTTP o TCP/IP).
3. Fuzzing guiado por cobertura
El fuzzing guiado por cobertura utiliza la retroalimentación de la ejecución del programa para generar nuevas entradas. Realiza un seguimiento de las métricas de cobertura del código para identificar qué partes del código se ejecutaron con cada entrada y, a continuación, crea entradas que pretenden cubrir las rutas de código no probadas. Este enfoque es muy eficaz para realizar pruebas exhaustivas, ya que maximiza la cobertura del código, lo que aumenta las posibilidades de descubrir errores y vulnerabilidades ocultos.
4. Fuzzing de caja negra, caja blanca y caja gris
Estas categorías difieren en función de la cantidad de información que el probador tiene sobre el software de destino:
Fuzzing de caja negra:** En el fuzzing de caja negra, la persona que realiza la prueba no tiene conocimiento interno del programa. Las entradas se generan aleatoriamente y se introducen en el software sin tener en cuenta la estructura o el código del programa. El black-box fuzzing es fácil de configurar y no requiere código fuente. Ayuda a probar aplicaciones de código cerrado, aunque puede que no descubra tantos problemas como otros métodos.
Fuzzing de caja blanca:** En el fuzzing de caja blanca, la persona que realiza la prueba tiene acceso total al código fuente del programa. Esto permite que el proceso de fuzzing se centre en partes específicas del código, utilizando técnicas como el análisis estático y el seguimiento del flujo de control para guiar la generación de entradas. El fuzzing de caja blanca es más preciso y puede descubrir fallos complejos, pero requiere un conocimiento detallado del código, por lo que consume más recursos.
Fuzzing de caja gris:** El fuzzing de caja gris logra un equilibrio entre los enfoques de caja negra y de caja blanca. Los probadores tienen acceso parcial al funcionamiento interno del programa, normalmente a través de instrumentos que proporcionan información sobre la cobertura del código. Este enfoque se beneficia de la eficacia del fuzzing de caja negra con la orientación añadida de la cobertura del código.
5. Fuzzing híbrido
El fuzzing híbrido combina múltiples estrategias de fuzzing para mejorar la profundidad y eficiencia de las pruebas. Por ejemplo, puede combinar el fuzzing basado en mutaciones con técnicas guiadas por la cobertura para maximizar la cobertura del código al tiempo que se explora una gama más amplia de variaciones de entrada. De este modo, los evaluadores pueden centrarse en software complejo con mayor precisión para encontrar vulnerabilidades que podrían pasar desapercibidas con un único método de fuzzing.
Casos de uso de las pruebas fuzz
El fuzz testing tiene diversas aplicaciones en todos los sectores, especialmente en aquellos en los que la seguridad, la estabilidad y la capacidad de recuperación son fundamentales. Estos son algunos de los principales casos de uso de las pruebas fuzz:
1. Pruebas de seguridad
Una de las aplicaciones más comunes de las pruebas fuzz son las pruebas de seguridad. Al introducir entradas aleatorias o malformadas en un programa, las pruebas fuzz pueden revelar vulnerabilidades que los piratas informáticos podrían explotar, como desbordamientos de búfer, fallos de validación de entradas y vulnerabilidades de inyección.
2. Robustez del software
Las pruebas fuzz también mejoran la robustez del software, ya que garantizan que las aplicaciones puedan manejar datos inesperados o malformados sin bloquearse. Muchos programas se diseñan con expectativas de entrada específicas, pero los datos del mundo real no siempre son predecibles. Al probar con varias entradas inesperadas, las pruebas fuzz pueden exponer áreas en las que el software podría fallar bajo tensión, especialmente para aplicaciones que se ejecutan en entornos impredecibles o manejan datos diversos.
3. Pruebas de protocolo
El fuzzing de protocolos se utiliza ampliamente para probar la resistencia de los protocolos de red. Los protocolos de red definen las reglas para el intercambio de datos entre dispositivos, y cualquier debilidad en estos protocolos puede conducir a brechas de seguridad o interrupciones. Mediante el fuzz testing de protocolos de red, los probadores pueden evaluar la forma en que estos protocolos gestionan paquetes inesperados o malformados para identificar vulnerabilidades que podrían afectar a la integridad de los datos, la seguridad o la fiabilidad de las comunicaciones.
4. Pruebas de automoción e IoT
En los sistemas de automoción, las pruebas fuzz pueden sacar a la luz vulnerabilidades en la comunicación entre los subsistemas del coche, para asegurarse de que siguen siendo operativos y seguros. Del mismo modo, para los dispositivos IoT, las pruebas fuzz son esenciales para confirmar que estos dispositivos pueden manejar una serie de condiciones de red y entradas de datos sin comprometer la funcionalidad o la seguridad.
Ventajas de las pruebas fuzz
**Las pruebas Fuzz revelan errores que los métodos de prueba tradicionales pueden pasar por alto, especialmente los desencadenados por escenarios de entrada raros o inesperados.
**Al exponer el software a diversas entradas, incluidos datos malformados o inesperados, las pruebas fuzz ayudan a los desarrolladores a identificar los puntos débiles y a reforzar el software contra las condiciones del mundo real.
**Las pruebas fuzz detectan vulnerabilidades que podrían ser explotadas para realizar ataques, como desbordamientos de búfer, fugas de memoria y fallos de inyección. Por lo tanto, permite a los equipos de seguridad abordar de forma proactiva estas debilidades para proteger el software de posibles ciberataques y accesos no autorizados.
**El fuzzing guiado por la cobertura garantiza que se prueben incluso las partes del código que se utilizan con menos frecuencia, descubriendo errores en rutas que rara vez se ejecutan. Este amplio enfoque de las pruebas mejora la calidad y la estabilidad generales del software al explorar rutas de código que de otro modo podrían pasarse por alto.
Desafíos y limitaciones de las pruebas Fuzz
**Las pruebas fuzz se enfrentan a programas complejos y con estados que dependen de formatos de datos intrincados, lo que dificulta la generación de entradas adecuadas sin romper la estructura de datos. Por ejemplo, en las pruebas de protocolos o formatos de archivo, el fuzzing requiere conocer la estructura, lo que añade complejidad y requiere técnicas de fuzzing avanzadas.
Limitaciones de recursos y tiempo: El fuzzing a gran escala puede consumir una potencia de procesamiento y una memoria considerables, por lo que requiere muchos recursos. A menudo se necesitan largos tiempos de ejecución para obtener resultados significativos, especialmente en el caso de aplicaciones complejas, lo que puede retrasar el proceso de pruebas y desarrollo.
**Las pruebas fuzz se basan en entradas aleatorias o semialeatorias, que no siempre llegan a las partes más profundas del código, especialmente en programas complejos con una lógica o unas dependencias complejas. Además, el fuzzing puramente aleatorio carece de la concentración necesaria para detectar vulnerabilidades específicas, por lo que los fallos en determinadas rutas del código pueden pasar desapercibidos.
**Las pruebas fuzz pueden revelar fallos oscuros, pero reproducir las condiciones exactas que desencadenaron estos fallos puede ser complicado. La depuración se complica cuando la entrada específica o la secuencia de eventos que causaron el problema no pueden reproducirse fácilmente.
**Las pruebas fuzz pueden producir un gran volumen de datos, con algunos resultados que indican problemas que no son vulnerabilidades reales, lo que se conoce como falsos positivos. Filtrar los falsos positivos y centrarse en las vulnerabilidades auténticas puede llevar mucho tiempo y requerir conocimientos especializados.
**Las pruebas fuzz no son un proceso puntual, sino que requieren una supervisión continua. Además, un fuzzing eficaz requiere interpretar registros y resultados exhaustivos, lo que exige personal cualificado para analizar y abordar los problemas detectados.
Herramientas y marcos de pruebas fuzz
AFL (American Fuzzy Lop): Conocido por su eficiencia en fuzzing basado en mutación, AFL utiliza una combinación de mutación inteligente de entrada y retroalimentación de cobertura de código para descubrir vulnerabilidades.
- libFuzzer: Un fuzzer guiado por cobertura diseñado para librerías y aplicaciones, libFuzzer genera entradas que apuntan a la cobertura de código para descubrir fallos ocultos en software complejo.
- OSS-Fuzz: Plataforma de fuzzing a gran escala adaptada a proyectos de código abierto, OSS-Fuzz proporciona pruebas de fuzz automatizadas y continuas para mejorar la seguridad y estabilidad del software de código abierto más utilizado.
- Peach: Un completo marco de fuzzing que admite una amplia gama de protocolos y formatos de datos para probar software complejo y protocolos de comunicación, incluidas pruebas generacionales y basadas en mutaciones.
Sulley**: Utilizado principalmente para el fuzzing de protocolos de red, Sulley es valorado por su capacidad para simular una amplia variedad de entradas de red y se utiliza a menudo en la investigación de seguridad.
- Radamsa: Un fuzzer ligero basado en mutaciones que es fácil de usar y eficaz para generar entradas inesperadas para probar la resistencia y robustez del software.
Fuzz Testing para bases de datos vectoriales y aplicaciones de IA
Las pruebas fuzz son muy relevantes en bases de datos vectoriales como Milvus (creada por Zilliz) y aplicaciones GenAI, ya que estas tecnologías manejan grandes volúmenes de datos diversos y complejos. En las soluciones basadas en IA, como Retrieval-Augmented Generation (RAG) y otros modelos de aprendizaje automático, las pruebas fuzz son vitales para mantener la integridad de los datos, la estabilidad del sistema y la seguridad, especialmente cuando se trata de datos no estructurados. A continuación se explica la utilidad de las pruebas fuzz:
Dado que las bases de datos vectoriales a menudo admiten consultas y filtrados complejos, las pruebas fuzz pueden revelar lo bien que gestionan los casos extremos en las entradas de consulta. Por lo tanto, identifica fallos potenciales o ineficiencias en la indexación y recuperación.
Pruebas de resistencia en aplicaciones basadas en IA como RAG:** RAG y otros modelos de IA similares se basan en la recuperación de información relevante de bases de datos externas para generar respuestas o realizar tareas específicas. Estos modelos son sensibles a la calidad y estructura de los datos recuperados. Las pruebas Fuzz pueden simular entradas de datos corruptas o inesperadas para ver cómo reacciona el modelo ante recuperaciones inusuales.
Proteger las bases de datos vectoriales y los conductos de IA frente a posibles ataques:** Las pruebas Fuzz pueden simular entradas de datos hostiles, como ejemplos adversos diseñados para manipular el comportamiento del modelo de IA. De este modo se identifican los puntos débiles que podrían explotar los atacantes, lo que permite a los desarrolladores reforzar la seguridad.
Mejora de la fiabilidad en arquitecturas de IA distribuidas:** Muchas aplicaciones de IA, especialmente las basadas en Large Language Models (LLMs) o sistemas de reconocimiento de imágenes, están distribuidas en múltiples nodos y sistemas. Las pruebas Fuzz pueden revelar problemas en el proceso de sincronización de datos entre nodos en una base de datos vectorial distribuida para comprobar si todas las instancias de la base de datos pueden manejar entradas inconsistentes o inesperadas sin problemas.
Mejores prácticas para las pruebas Fuzz
La aplicación eficaz de las pruebas fuzz requiere una planificación cuidadosa y el cumplimiento de las mejores prácticas. He aquí algunos consejos esenciales para optimizar las pruebas fuzz:
Optimizar la generación de entradas
Utilice fuzzing basado en mutación y generación para asegurar una amplia gama de entradas, cubriendo casos extremos comunes y raros.
Adapte la generación de entradas para que coincida con los formatos de datos o protocolos esperados del software de destino para evitar errores irrelevantes y centrarse en problemas significativos.
Utilizar fuzzing orientado a la estructura o a la cobertura para tipos de datos complejos con el fin de maximizar la cobertura del código y encontrar errores más profundos.
Establecer una supervisión y retroalimentación exhaustivas
Implemente un registro detallado para capturar el comportamiento del programa durante las pruebas, incluidos los bloqueos, las fugas de memoria y los resultados anómalos.
Herramientas de monitorización como Prometheus pueden utilizarse para rastrear el uso de memoria, la carga de la CPU y las rutas de ejecución para obtener información sobre el rendimiento del software bajo entradas fuzzed.
Habilite herramientas de depuración y notificación de fallos para ayudar a rastrear la causa raíz de cualquier problema detectado, facilitando la reproducción y corrección de los errores.
Seleccionar las herramientas adecuadas
Elija las herramientas de fuzzing en función de los requisitos específicos del proyecto. Por ejemplo, AFL puede usarse para fuzzing basado en mutaciones, libFuzzer puede usarse para librerías, y OSS-Fuzz puede usarse para proyectos de código abierto.
Asegúrese de que la herramienta se integra bien con su entorno de desarrollo y pruebas, lo que permite una incorporación perfecta a los procesos CI/CD.
Experimenta con varias herramientas y combina diferentes estrategias de fuzzing para obtener una mejor cobertura y mejores resultados.
Diseñar un entorno de pruebas eficaz
Cree un entorno de pruebas controlado que aísle el software fuzzed de los sistemas críticos para evitar daños accidentales o pérdidas de datos.
Asigne recursos informáticos suficientes, ya que las pruebas fuzz pueden consumir muchos recursos. Considere la posibilidad de ejecutar las pruebas en una máquina virtual o contenedor para gestionar la asignación de recursos de forma eficaz.
Actualiza regularmente tu entorno de pruebas para incluir las últimas dependencias y parches, ya que los componentes obsoletos pueden introducir problemas no deseados.
Evitar errores comunes
Error:** Confiar únicamente en entradas aleatorias sin centrarse en áreas específicas. Solución: Utilizar fuzzing guiado por la cobertura o consciente de la estructura para dirigir la prueba hacia las rutas de código que más importan.
Error:** Ignorar los falsos positivos, que pueden abrumar los resultados. Solución: Revisar y filtrar regularmente los resultados para centrarse en los problemas genuinos, utilizando herramientas o scripts para ayudar a clasificar la salida.
Error:** No reproducir los problemas encontrados durante las pruebas fuzz. **Solución:Registrar todas las entradas y rutas de ejecución para que los problemas detectados puedan ser reproducidos y solucionados con precisión.
Hacer Pruebas Fuzz Continuas
Integre las pruebas fuzz en su proceso CI/CD para asegurarse de que los nuevos cambios de código se prueban constantemente en busca de posibles vulnerabilidades.
Programe pruebas fuzz regulares, especialmente para componentes de software críticos, como parte del proceso de desarrollo en curso. Las pruebas fuzz continuas aumentan la probabilidad de detectar problemas a tiempo.
Conclusión
En resumen, el fuzz testing es un potente método para descubrir fallos y vulnerabilidades ocultos en diversas aplicaciones de software, incluidas las bases de datos vectoriales y los sistemas de IA. Las pruebas fuzz ayudan a mejorar la robustez, la seguridad y la fiabilidad introduciendo entradas aleatorias o malformadas en un programa. Aunque conlleva algunos retos, la adopción de las mejores prácticas y el uso de las herramientas adecuadas pueden maximizar su eficacia.
Preguntas frecuentes sobre las pruebas Fuzz
- ¿Qué es el fuzz testing y por qué es importante?
Fuzz testing es un método de prueba de software que introduce datos aleatorios o inesperados en un programa para encontrar errores y vulnerabilidades. Mejora la seguridad, robustez y fiabilidad del software al descubrir problemas que los métodos de prueba tradicionales podrían pasar por alto.
- ¿Cómo funcionan las pruebas fuzz en la práctica?
Las pruebas fuzz constan de varias fases: identificación del sistema objetivo, determinación de los tipos de entradas que se van a probar, generación de datos fuzz, ejecución del programa con estos datos, análisis del comportamiento del programa e identificación de cualquier problema. Este proceso revela hasta qué punto el software gestiona entradas inesperadas o malformadas.
- ¿Cuáles son los tipos más comunes de pruebas fuzz?
Los tipos más comunes incluyen fuzzing basado en mutación (alteración de datos existentes), fuzzing basado en generación (creación de entradas desde cero), fuzzing guiado por cobertura (maximización de la cobertura del código) y fuzzing de protocolo (prueba de formatos de datos específicos o estándares de comunicación).
- ¿Pueden aplicarse las pruebas fuzz a las aplicaciones de IA y a las bases de datos vectoriales?
Sí, las pruebas fuzz son muy pertinentes para la IA y las bases de datos vectoriales. Ayuda a estos sistemas a manejar entradas impredecibles, mejorar la integridad de los datos y mantener la seguridad, especialmente en aplicaciones como Retrieval-Augmented Generation (RAG) y el manejo de datos complejos en los conductos de IA.
- ¿Cuáles son los principales retos de las pruebas fuzz?
Entre los principales retos se encuentran el manejo de estructuras de datos complejas, la naturaleza intensiva en recursos del fuzzing a gran escala, las limitaciones de la generación de entradas aleatorias y la dificultad para reproducir problemas. Seguir las mejores prácticas y seleccionar las herramientas adecuadas puede ayudar a afrontar estos retos.
Recursos relacionados
Cómo evaluar las aplicaciones GAR](https://zilliz.com/learn/How-To-Evaluate-RAG-Applications)
Optimización de las aplicaciones GAR: Guía de metodologías, métricas y herramientas de evaluación para mejorar la fiabilidad](https://zilliz.com/blog/how-to-evaluate-retrieval-augmented-generation-rag-applications)
Introducción a la monitorización integral y la observabilidad en Zilliz Cloud](https://zilliz.com/blog/introducing-monitoring-and-observability-in-zilliz-cloud)
Prometheus Metrics: Supervise el rendimiento de su aplicación](https://zilliz.com/glossary/prometheus-metrics)
Observabilidad: seguimiento más allá de la supervisión](https://zilliz.com/glossary/observability)
Supervisión de Milvus con Grafana y Loki](https://zilliz.com/blog/monitoring-in-milvus-with-grafana-and-loki)
Cómo detectar cuellos de botella en el rendimiento de la búsqueda en bases de datos vectoriales](https://zilliz.com/learn/how-to-spot-search-performance-bottleneck-in-vector-databases)
- ¿Qué es el Fuzz Testing?
- Historia del Fuzz Testing
- ¿Cómo funcionan las pruebas fuzz?
- Tipos de pruebas Fuzz
- Casos de uso de las pruebas fuzz
- Ventajas de las pruebas fuzz
- Desafíos y limitaciones de las pruebas Fuzz
- Herramientas y marcos de pruebas fuzz
- Fuzz Testing para bases de datos vectoriales y aplicaciones de IA
- Mejores prácticas para las pruebas Fuzz
- Conclusión
- Preguntas frecuentes sobre las pruebas Fuzz
- Recursos relacionados
Contenido
Comienza Gratis, Escala Fácilmente
Prueba la base de datos vectorial completamente gestionada construida para tus aplicaciones GenAI.
Prueba Zilliz Cloud Gratis