лучший расслабляющий аквариум в 4K UHD ? Anti-Stress Music, Relax and Meditation.
Tabla de contenido:
Priorizamos los principios de la Arquitectura Orientada a Servicios en Inverso. Eso significa que tenemos componentes pequeños y mantenibles con responsabilidades claramente definidas. Se comunican entre sí (en su mayoría), a través de Representational State Transfer, o REST, API.
Esto proporciona flexibilidad y nos ha servido bien con la excepción de una faceta importante: la prueba. Al probar, uno debe evitar:
- Dependencia de servicios externos que se ejecutan en la misma máquina.
- Pruebas lentas.
Debido a que las aplicaciones dependen de los servicios externos, es fundamental contar con una estrategia de prueba para esas dependencias.
Hace poco comenzamos a usar Bypass y explicaré cómo llegamos allí y, específicamente, cómo lo estamos utilizando.
El pasado
Métodos simulados y devolver algunos datos de ejemplo como este:
Ese fue (y creo que todavía es) el "camino a seguir" en el mundo de Ruby / Rails. Desafortunadamente, esto fomenta el mal comportamiento, tal como lo explica mejor aquí José Valim.
Luego, comenzamos a utilizar ExVCR, que es una gran biblioteca, pero tiene inconvenientes similares a los simulacros / resguardos: fomenta la pereza y no fomenta la separación de preocupaciones que son críticas para APIs bien definidas. ExVCR permite a uno "grabar" y "reproducir" datos en tiempo real. Es muy fácil de integrar (incluyendo algunas líneas en su prueba y todo lo demás está a cargo). Pero lo ideal es tener que pensar en las dependencias externas en las pruebas, no en abstraerlas. Puede que aún sea una opción viable para los escenarios en los que el comportamiento del punto final se debe probar con una sobrecarga mínima (lo usamos para probar las llamadas a los Servicios de AWS de Amazon como S3).
Introducir adaptadores
Los adaptadores funcionan muy bien y promueven la deliberación en torno a los contratos API y los límites de comunicación claramente definidos. Todavía utilizamos este enfoque, especialmente cuando el adaptador es más complejo (como un zócalo JSON-RPC).
Así es como podría verse un adaptador:
Pero para los puntos finales HTTP simples, los adaptadores parecen mucho trabajo y tienen un gran inconveniente: dejan las bibliotecas que consumen fuera de la ecuación de prueba. Si cambia algo en las bibliotecas HTTP o JSON, las pruebas no lo detectarán. La cantidad de código crítico de producción que no se ha probado con este enfoque es inaceptable.
El presente y el futuro
La derivación nos permite iniciar un servidor web muy simple en las pruebas que simulan los servicios externos que utilizamos.
Ahora, podemos probar la pila completa, incluida la biblioteca HTTP, la biblioteca de codificación / decodificación JSON y los mecanismos de autenticación. El Bypass README está bien escrito, por lo que guardaré los detalles de la implementación. Sin embargo, sí cambiamos ligeramente la forma en que lo usamos para mantener las pruebas concisas y legibles:
En primer lugar, a veces queremos llamar a Facebook cuando las pruebas se ejecutan como una suite de integración completa. Hacemos esto de manera irregular para garantizar que la API de Facebook aún funcione según nuestras expectativas. Añadiendo
--incluir la integración
a
prueba de mezcla
no simula la API sino que, en cambio, llama al servicio externo (líneas 5, 7).
Somos explícitos cuando simulamos solicitudes a servicios externos, de modo que cada prueba que utiliza Bypass debe tener la
@tag facebook_bypass
(línea 7).
Finalmente, el
manejar_fb
La función (líneas 30-39) está siendo llamada (dado que la
request_path
partidos). Me gusta hacer coincidir en el cabezal de función, ya que hace explícito a qué ruta estamos reaccionando y nos permite definir diferentes funciones para diferentes rutas.
Por lo tanto, Bypass se ejecuta solo en pruebas etiquetadas con
@tag: bypass
y cuando no estamos ejecutando nuestra suite de integración. Una cosa más que hacemos al configurar Bypass es permitir que la etiqueta pase una identificación de página (líneas 8, 20). Así que aquí está cómo se ve una prueba que usa Bypass en todo su esplendor:
Como puedes ver, la
facebook_bypass
La etiqueta hace explícito que estamos simulando la API (a menos que estemos en modo de integración). Nos permite pasar información a la API simulada, y es muy fácil reutilizar la misma configuración de Bypass para diferentes pruebas.
Espero que esto te ayude a probar APIs externas. Puedes encontrarme en Twitter (ver más abajo) si tienes más preguntas.
Conozca a los sastres que crearon un traje a prueba de balas, a prueba de cuchillas y afilado como un infierno
Resulta que no tienes que ser James Bond para ser elegante y a prueba de balas. Garrison Bespoke, el proveedor de ropa fina para hombres de Toronto para programas regulares de televisión y programas de televisión como Suits, surgió en el pasado hace dos años cuando anunció un traje de tres piezas de $ 20,000 a partir de tela a prueba de balas. Hablé con David Tran, de Garrison ...
Las tecnologías Hyperloop basadas en LA harán rodar los dados en la prueba de Las Vegas
Hyperloop Technologies, con sede en Los Ángeles, está poniendo en práctica la visión de Elon Musk de un tren de alta velocidad, impulsado por presión de aire y conducción, y ha anunciado planes para probar la tecnología en el parque industrial Apex en el norte de Las Vegas en 2016.
¿Se acerca el fin de las pruebas de ADN? Las proteínas de prueba podrían ser el camino del futuro
Es fácil pensar que las pruebas de ADN son un medio infalible de identificación, pero tales pruebas no son perfectas. Son mucho más confiables y robustos que las huellas dactilares, que a su vez son mucho mejores que, por ejemplo, las pruebas de polígrafo (que son básicamente basura total). Pero no confunda la mejor ciencia disponible w ...