Saltar al contenido principal

Pruebas Diferenciales con Imágenes de Prueba

Las pruebas están escritas para garantizar que los contratos se comporten hoy como se espera, y en el futuro también. Con el tiempo, un contrato puede cambiar y en todo el desarrollo de software permanece la posibilidad de que los cambios causen efectos secundarios inesperados. Las pruebas son una de las maneras en que identificamos cambios inesperados.

Sin embargo, las pruebas son limitadas, ya que solo muestran cambios en los valores sobre los que las pruebas afirman.

consejo

Las imágenes de prueba son una herramienta para realizar pruebas diferenciales. Consulta Pruebas Diferenciales para otras maneras.

Imágenes de Prueba

El SDK de Soroban Rust genera imágenes de prueba en cada prueba que involucra un Env. Las imágenes de prueba están habilitadas por defecto. Al final de la prueba, el Env escribe un archivo JSON en el directorio test_snapshots con una imagen completa de todos los eventos publicados y el estado final del almacenamiento del ledger.

La mayoría de las pruebas tienen un solo Env y resultarán en una sola imagen de prueba. Las pruebas que tienen múltiples Envs escribirán múltiples imágenes de prueba, una para cada Env. Los archivos de imagen de prueba se nombran con un número creciente al final para separar las imágenes de prueba para cada Env.

Cómo Usar Imágenes de Prueba

  1. Escribe pruebas utilizando el Env predeterminado. Por ejemplo:

    #![cfg(test)]
    use soroban_sdk::Env;

    use crate::{Contract, ContractClient};

    #[test]
    fn test_abc() {
    let env = Env::default();
    let contract_id = env.register_contract(None, Contract);
    let client = ContractClient::new(&env, &contract_id);

    assert_eq!(client.increment(), 1);

    // At the end of the test the Env will automatically write a test snapshot
    // to the following directory: test_snapshots/test_abc.1.json
    }
  2. Ejecuta las pruebas y observa que las imágenes de prueba se han escrito en test_snapshots/.

  3. Confirma las imágenes de prueba en el control de versiones.

  4. En actualizaciones futuras, presta atención a los cambios en las imágenes de prueba en pruebas que sean inesperados. Por ejemplo, al cambiar una parte de un contrato, si las imágenes de prueba de otras partes del contrato o pruebas de fin a fin no relacionadas cambian, eso podría señalar que han ocurrido efectos secundarios.

  5. Difunde imágenes de prueba según sea necesario para buscar pistas sobre por qué ha ocurrido un cambio inesperado.

información

Los archivos de imágenes de prueba son verbosos. Las imágenes de prueba son más útiles cuando aparecen cambios y pueden ser diferenciadas, como un nuevo evento que se publica o un cambio en el almacenamiento.

Para probar esto, consulta el contrato Comenzar o cualquiera de los ejemplos, ejecuta las pruebas y busca las imágenes de prueba en el disco.