
Introducción al Testing de Blockchain
¿Qué es blockchain?
Introducción al Testing de Blockchain. Primero debemos saber de que trata esta tecnología, mejor conocida como blockchain (La cadena de bloques), es una base de datos distribuida completamente descentralizada, es decir, no hay un lugar o esta controlada por una sola persona sino que esta introducida en lo que conocemos como nodos; cuando hablamos de nodos, la característica principal que tienen es que todos tienen el mismo peso y la misma importancia en esta red.
La cualidad más atractiva de blockchain es lo que la hace bastante única, es la seguridad que esta representa, al estar distribuida hay “muchos ojos mirando la red”, todo el tiempo, y cada nodo puede almacenar una copia exactamente igual de todo lo que se almacene en esta cadena. Podría decirse, que es un libro contable con las estrategias de imposibilitar cambiar, piratear o engañar al sistema.
Un registro digital de transacciones que se duplica y distribuye a través de toda la red de sistemas informáticos. Cada bloque de la cadena contiene una serie de transacciones, y cada vez que se produce una nueva transacción en la cadena de bloques, se agrega un registro de esa transacción al libro contable.
¿Cómo funciona?
Básicamente, funciona de la siguiente manera, cada bloque tiene un lugar específico e inamovible dentro de la cadena, ya que cada bloque contiene información del hash del bloque anterior. La cadena completa se guarda en cada nodo de la red que conforma la blockchain, por lo que se almacena una copia exacta de la cadena en todos los participantes de la red. A medida que se crean nuevos registros, estos son primeramente verificados y validados por los nodos de la red y luego añadidos a un nuevo bloque que se enlaza a la cadena.
En cada bloque se almacena:
- Una cantidad de registros o transacciones válidas.
- Información referente a ese bloque.
- Su vinculación con el bloque anterior y el bloque siguiente a través del hash (secuencia de cada bloque) ─un código único que sería como la huella digital del bloque.
Flujo de cadenas de bloques
Una cadena de bloques es, por lo tanto, una base de datos descentralizada de bloques dentro de una enorme red del libro mayor distribuido, que realiza un seguimiento del tamaño y la forma de la moneda subyacente junto con el acceso en tiempo real para compartir, minar y el flujo de pagos a través de un suministro.
Blockchain consta de tres conceptos importantes: bloques, nodos y mineros.
Bloques. Cada cadena consta de varios bloques y cada bloque tiene tres elementos básicos:
- Los datos del bloque.
- Un número entero de 32 bits llamado nonce. El nonce se genera aleatoriamente cuando se crea un bloque, que luego genera un hash de encabezado de bloque.
- El hash es un número de 256 bits unido al nonce. Debe comenzar con una gran cantidad de ceros (es decir, ser extremadamente pequeño).
Nodos. Uno de los conceptos más importantes de la tecnología blockchain es la descentralización. Ninguna computadora u organización puede ser propietaria de la cadena. En cambio, es un libro mayor distribuido a través de los nodos conectados a la cadena. Los nodos pueden ser cualquier tipo de dispositivo electrónico que mantenga copias de la cadena de bloques y mantenga la red en funcionamiento.
Mineros. Los mineros crean nuevos bloques en la cadena a través de un proceso llamado minería. En una cadena de bloques, cada bloque tiene su propio valor y hash únicos, pero también hace referencia al hash del bloque anterior en la cadena, por lo que extraer un bloque no es fácil, especialmente en cadenas grandes.
Hacer un cambio en cualquier bloque al principio de la cadena requiere volver a extraer no solo el bloque con el cambio, sino todos los bloques que vienen después. Por eso es extremadamente difícil manipular la tecnología blockchain. Piense en ello como “seguridad en matemáticas”, ya que encontrar nonces de oro requiere una enorme cantidad de tiempo y potencia de cálculo. Cuando un bloque se extrae con éxito, todos los nodos de la red aceptan el cambio y el minero recibe una recompensa económica.
Esta serie de actividades no está bajo el control de una sola persona u organización. Es abierto, seguro, transparente y dirigido por todos, ya que todos en la cadena pueden ver los detalles asociados de un bloque en tiempo real. Solo el propietario del bloque puede acceder / editar el bloque a través de una clave privada única (que es solo con el propietario). Todos los eventos del proceso mencionado anteriormente se reflejan, actualizan y sincronizan en toda la red en tiempo real.
Testing basado en Blockchain
– Pruebas de integración. Las pruebas de integración son importantes desde la perspectiva de la necesidad de que los diferentes sistemas sean cohesivos. La implementación podría realizarse en varios entornos / sistemas que se ejecuten en paralelo y garantizar que varias interfaces de componentes se comuniquen sin problemas se vuelve importante. El equipo de pruebas prueba una vista detallada de todos los puntos de contacto y las interfaces de programación de aplicaciones (API) para garantizar que se puedan utilizar las interfaces adecuadas durante las fases de validación.
– Pruebas no funcionales (rendimiento). Las pruebas de rendimiento en blockchain son importantes debido a la cantidad de transacciones y el tamaño de las transacciones que se prueban para el rendimiento de un bloque o una aplicación que se implementará en producción. El equipo de pruebas también se centra en otros parámetros importantes y dependientes, como la latencia de la red, los cuellos de botella de rendimiento, la secuencia de transacciones en cada nodo, la dependencia del entorno de producción, la velocidad de procesamiento de transacciones, la interfaz cliente / usuario y del sistema, junto con las respuestas requeridas. de los contratos inteligentes.
– Pruebas no funcionales (seguridad). El enfoque principal aquí es garantizar que las aplicaciones de blockchain se prueben a fondo y verificar si son vulnerables a ataques (maliciosos, virus, etc.). Si los sistemas de autorización son sólidos y las autenticaciones (incluidos los accesos) son genuinas, las pruebas de seguridad consideran los otros aspectos importantes, como la confidencialidad, la integridad, la no denegación de servicios, la coherencia / disponibilidad y las colisiones. Las pruebas de seguridad se vuelven importantes en caso de piratería de la capa de identidad, lo que puede llevar a que se expongan las transiciones.
– Prueba de interfaz de programación de aplicaciones (API). Este tipo de pruebas informa sobre la comunicación y las interacciones de las aplicaciones que ocurren de un lado a otro dentro del sistema. Los probadores aquí validan las respuestas externas que recibe la aplicación y aseguran que los formatos para la solicitud de API sean correctos y válidos. Dentro de blockchain, también existe un tipo de tecnología similar a las API que permite un enfoque similar para probar API llamadas contratos inteligentes. Algunas de las herramientas de prueba de API más populares son Postman y SoapUI.
Aplicación de la tecnología de Blockchain
En la actualidad, se usa mayormente en las industrias financiera y automotriz debido a su seguridad, y a la estructura segura y encriptada que ofrece la tecnología, especialmente con las monedas asociadas como Bitcoin, Ethereum, Dash, etc., donde se ofrece más controles de privacidad en pro de la seguridad y un híbrido de computación en la nube, esto aporta a la naturaleza del negocio.
Mas allá de las criptomonedas, otra aplicación de la tecnología blockchain es en la industria de los alimentos, con ella se podría saber de donde vienen los alimentos, describirse su procedencia. También en la industria médica , por ejemplo, en los hospitales al ser una red incorruptible los registros de la cadena de bloques, en el caso de los registros médicos serian inalterable, habría un manejo de información que se vuelva mas prolijo, inmutable.
Desde el punto de vista del testing, todo el proceso de blockchain debe probarse a fondo, ya que cualquier diferencia encontrada en un bloque puede potencialmente interrumpir toda la cadena de bloques. Cuando se agrega un bloque a una cadena de bloques, permanece allí para siempre. Cualquier cambio en un bloque de la cadena hará que los bloques asociados en la cadena sean inaceptables o inválidos.
Por consiguiente, cualquier actualización por parte del propietario en la cadena tendrá un impacto significativo en los bloques asociados en la cadena, que necesita una actualización o corrección simultánea. Cualquier cambio de este tipo no se puede realizar más tarde, lo que lo hace aún más complejo en términos de prueba.