Transcripciones
1. Configuración de proyecto: para montar el proyecto base del trabajo del dedo del pie a lo largo de la tienda de guerra. Tendrás que clonar el siguiente proyecto de Get Cub Así que primero descarga e instala Jabba J K Descargar e instalar Eclipse I D e Una vez en unos clips, ir a archivo importar get folder project from Geet. Siguiente clon eres yo siguiente otra vez entré una u R I del proyecto o video descripción. No necesitas un usuario transitable aquí, así que solo tienes que dar click siguiente. Puedes dejar la configuración de otoño y solo tienes que hacer clic en siguiente hasta que hagas clic en la parte inferior de acabado. Una vez hecha la importancia, abre el proyecto. Es bueno ir a P O M XML. Haga clic derecho Ejecutarnos maven clean Y luego otra vez, derecho Click Ejecutar nos maven Instalar. Una vez que estés listo, ve a sirve Test job A folder, Clic
derecho ejecutar US J unit test. Por lo que ahora toda la prueba debe ser verde con referencia las clases principales que empezarás a trabajar en nuestra la venta test glass en el pedido test glass
2. ¿Qué es una prueba de unidad?: pruebas unitarias. Empecemos definiendo ¿qué es una prueba unitaria? A prueba unitaria. Se trata de una pieza de código escrita por un desarrollador con un framework o biblioteca que llamaremos
unidad X . No, la palabra unidad X. Será reemplazada por el nombre fuera del marco en tu lenguaje de programación. Por ejemplo, En Java, puede que conozcas esto como unidad J en PHP, será unidad BHP, unidad CPP para bus excedente y unidad para las Nets por unidad para python on so one para diferentes lenguajes de
programación. Una prueba unitaria es una pieza automatizada de código que invocará parte del código de producción fuera del sistema rial que llamaremos unidad de trabajo. Cuando ejecutemos este Tesco, ejecutará el código de producción para validar una sola suposición sobre su comportamiento. De acuerdo con cierta funcionalidad, cuando se ejecuta la prueba unitaria, hay dos posibles resultados que falla el escritorio o podemos decir rojo. En este caso, la unidad de trabajo no está haciendo lo que se sospecha el Tesco. Orden. El test es exitoso o verde. En este caso, la unidad de trabajo está cumpliendo y expectativas de la prueba unitaria entonces ¿Qué es esto? Unidades de trabajo? La unidad de trabajo bajo prueba es una única función lógica fuera del caso de uso en el sistema que puede estar involucrada por su interfaz pública. Una unidad de guerra puede ser sólo un método único, clase
entera o clases múltiples trabajando juntas para lograr un solo propósito que queremos verificar. Comúnmente, tendrás muchas pruebas unitarias para cubrir la mayoría de los casos fuera de cada unidad de trabajo. Entonces, ¿cuál es el beneficio de hacer esto a primera vista? Se podría pensar que el beneficio es hacer algún tipo de Justine o Q A. Pero en realidad ese no es el caso. El valor real para los desarrolladores tienen en la producción, llamado encubierto por pruebas unitarias, es que se puede mejorar el pelaje. Mejorarás el llamado haciendo re factoring y cambios con confianza, porque si rompes alguna funcionalidad mientras haces tus cambios, la prueba te dirá que algo ya no está funcionando para que puedas arreglarlo. Por lo tanto, podría querer cubrir el código de producción con múltiples pruebas unitarias que correrás todas juntas muy,
muy a menudo esta prueba y seguro que la corte nos está trabajando pretendido después de que cambies el código
3. Ejemplo de prueba de unidad: ejemplo de prueba unitaria. Echemos un vistazo a un ejemplo de una prueba unitaria. Aquí puedes ver una clase fuera del sistema de código de producción off point off sale. Básicamente, se
trata de una clase llamada Fail, que cuenta con una propiedad por el monto total de la venta. Un constructor para crear una venta con su monto total. Un getter sobre un método llamado get change que devuelve el cambio que el cliente debe recibir cuando dolor en efectivo con cierta cantidad. Entonces, qué bien prueban que este método funcione correctamente. Por ejemplo, se
puede imaginar que si hay una venta fuera de 77 la base de clientes con 100 el método debe devolver 23. Vamos a montar eso nos Una prueba. Entonces primero, vamos a crear una clase de prueba llamada prueba de venta. Por lo general, hay una relación de 1 a 1 para cada clase de producción toe una clase de prueba que esta clase tiene el mismo nombre, pero con la palabra de prueba un especis. En algunas ocasiones puede haber una relación de uno a muchos de una producción, además de demasiadas gafas de muertes en una prueba unitaria. Se tienen tres secciones. Organizar donde defina, cree o recupere los objetos que utilizará para su prueba. En este caso, queremos crear una vela nueva con montos fuera de 77. El segundo apartado se llama Acto donde Ejecutas las acciones que quieres probar. En este caso, queremos llamar. Se les cambia método con el parámetro apagado 100 para indicar que el cliente quiere pagar con 100 en la última sección se llama 1/3 cuando estamos firmes que algo sucedió US un resultado de las acciones que se ejecutaron en este caso, queremos afirmar que el cambio calculó Waas 23. A estas tres secciones se les conoce como el tres as Organizar Act aseverar. Entonces ahora que tenemos nuestra prueba unitaria, podemos ejecutarla. Digamos y desafortunadamente es rojo. Se desvaneció. ¿ Qué pasó? ¿ Puedes sentirlo? Echemos un vistazo a la co productora de nuevo. Entonces vemos que la fórmula fuera de esta instrucción en el método get change es incorrecta. Debería ser al revés. Será cantidad. Mineros obtienen total. ¿ Te diste cuenta de que antes de ejecutar la prueba, Tal vez lo hiciste? A lo mejor no, Y eso está bien porque estamos encendidos los humanos, sobre todo cuando estamos edificando cosas o haciendo inspecciones visuales. Tendemos a estar sobreconfiados. Entonces esto es un ejemplo de cómo podemos supervisar algo realmente simple y asumir que es correcto hasta que lo probemos. Así que arregle este método. Reescribiremos esta obstrucción cantidad de Estados Unidos. Mineros obtienen total. Ahora estamos listos para volver a ejecutar la prueba en su ring. Ahora funciona.
4. Buenas pruebas de unidades: PRIMERO: cómo escribir buenas pruebas unitarias, y nos referimos al rincón él primero para entender dónde estamos con prueba unitaria, vamos a revisar a un nivel alto los niveles más importantes fuera de prueba en al más alto nivel, tienes las pruebas funcionales. Eso significa probar una funcionalidad de corte en el sistema que puede interactuar con otras dependencias para confirmar que el frío está haciendo las cosas correctas de acuerdo a las especificaciones. Aquí se hace el sistema, imbéble. Pruebas de integración significa que estamos comprobando que diferentes módulos están funcionando bien. Uno combinado juntos nosotros A. Grupo. El propósito fuera de este nivel de pruebas es exponer lo falso en la dirección entre las unidades
integradas que necesitan colaborar entre sí. Y por último, pruebas
unitarias, donde queremos probar módulos individuales a menudo aplicación pero de forma aislada. Eso significa, sin ninguna interacción con dependencias reales, confirmar que el frío está haciendo las cosas bien. Pruebas unitarias es responsabilidad del desarrollador de garantizar que se les llame obras? Bueno, lo que es una buena prueba unitaria para describir y recordar cómo una buena unidad prueba. Pareces que usamos primero el acordeón, donde para cada cuero tenemos una palabra para recordar ciertas características. Fost un escritorio de la unidad debe funcionar muy rápido. Estamos hablando de milisegundos independientes. Toda prueba unitaria debe ser independiente entre sí y no depender de los resultados de otras pruebas. Prueba reputable debe ser repetible en cualquier entorno sin variedad en los resultados. Auto-validación. No se requiere una inspección manual para comprobar si la prueba ha pasado o fallado. A fondo en este Moscú sobre cada escenario de caso de uso, pero no necesariamente para una cobertura del 100%. Echemos un vistazo rápido a cada una de estas características. Una prueba unitaria debe correr muy rápido. Estamos hablando de milisegundos. Recuerda que tendrás miles de pruebas en tu proyecto, por lo que si hay bajas, podrías sentirte reacio a ejecutarlas. Los desarrolladores no dudarán en ejecutar la prueba porque son lentos en el país. Se sentirán cómodos con correr todos ellos con mucha frecuencia, como cada pocos minutos independientes. Algunas personas pueden referirse a estos como aislados. Toda prueba unitaria debe ser independiente entre sí. Cuando se ejecuta una prueba, no debe afectar el resultado de otras pruebas. prueba no debe depender del estado fuera de la prueba previa, ya sea que se trate de un objeto o de metales monje. Esto permite ejecutar cada escritorio de forma individual cuando sea necesario, lo cual es probable que ocurra si falla una prueba, ya que querrá Divac en remolque. Un método. Enfócate en escena lo que va mal y no tienes que hacer otras pruebas. Si tienes una prueba que está revisando o más definidos algunos datos, entonces ese día sí se creará en el set up off test se quitan después, por lo que eso no afecta la siguiente prueba. Las muertes de renombre serán repetibles en cualquier entorno sin variedad. Los resultados en ese método no deben depender de ningún dato en el entorno en el que se esté escribiendo . Los resultados deben ser deterministas. Debe haber los mismos resultados cada vez en cada instancia donde se ejecutan. No debe haber dependencias en fecha y hora ni datos que puedan modificarse fuera de la prueba o funciones aleatorias. Cada escritorio lo muestra o arregla sus propios datos. Si una prueba de set off necesita algunos datos comunes, puede usar esta sección superior en la clase de prueba para datos dentro de los métodos de prueba fuera de una clase de
escritorio o tal vez algunos que el ayudante clases para la reutilización dentro de muchas pruebas. Clases autovalidando Una prueba unitaria debe ser automática. No debe haber una inspección manual requerida para comprobar si la prueba ha pasado o fallado. Una prueba unitaria debe ser transparente. Intención no expresada fuera del autor. En otras palabras, debe ser un documento de salida. Cuando lees el nombre del método en una prueba, debes entender lo que el sistema es capaz de hacer pero nosotros una diferencia con un texto estático. Este es un documento que se puede ejecutar en él validará si esa funcionalidad se implementa al trabajar correctamente. Algunas personas también sombrean la S con pequeña. Como hemos visto, la prueba unitaria debe ser pequeña. Eso significa que solo validará una unidad fuera del trabajo sin dependencias. Foto referente a cobertura atestiguan. Enmascarar sobre cada escenario de caso de uso, pero no necesariamente para una cobertura del 100% en lo alto deberás apuntar a probar el borde de esquina y los bonos revalora la muerte para grandes conjuntos de datos con el fin de probar prueba de complejidad del tiempo de ejecución y espacio para seguridad con los usuarios tener en diferentes roles nosotros. El comportamiento esperado puede ser diferente en función de diferentes usuarios. Royals lo hace para grandes valores, solo desbordamiento y bajo errores de flujo. Para eso, los tipos como términos enteros para excepciones hace argumentos legales y malas entradas
5. Deuda técnica: La profundidad técnica es causada por elegir una solución fácil
y barata. Ahora, en lugar de usar un mejor enfoque que
tomará más tiempo, a menudo
es el resultado
de usar acceso directo, correcciones
rápidas y parches en
lugar de una solución a gran escala. Caldera diaria
se usó originalmente para referirse a
defectos en el código, el signo de un software, pero el concepto se puede aplicar
a cualquier tipo de producto. En algunos casos, las soluciones con profundidad
técnica podrían funcionar
bien durante mucho tiempo, pero en muchos casos el
producto puede volverse inestable, inseguro o incluso peligroso. ¿ Cuál es el primer problema con profundidad
técnica
respecto a la productividad? Un problema con
profundidad técnica es que implica retrabajo. En primer lugar, tenemos
tiempo para implementar estos ISI pero solución no deseada con profundidad técnica
en algún momento, podría ser necesario
implementarlo, ¿verdad? Por lo que tenemos que sumar
el tiempo para deshacer la solución fácil en el momento de
implementarla de la manera correcta. Ese proceso también se conoce como España,
la profundidad técnica. Para que como se puede ver, el total de tiempo y esfuerzo
utilizado es mucho más que eso. Si tenemos un niño, la profundidad técnica y lo
implementó correctamente
desde el principio. Llevar VAB técnico podría ser intencionalmente por
Bob o por buenas razones. Al igual que Guan puede tomar profundidad
financiera para
arriesgar en un casino o para hacer crecer tu
negocio y pagar la profundidad más tarde
con un beneficio. Por ejemplo, falta
de profesionalismo, los miembros del equipo son poco profesionales o no les
importa el producto. Profundidad técnica acumulada. El producto tiene tanta profundidad
técnica que
parece imposible implementar
nuevas características correctamente. Presión de tiempo, el equipo
está bajo presión de tiempo, por lo que la velocidad o liberado
es lazos prioritarios sobre el bien diseñado los
códigos, falta de componentes. El equipo necesita una pieza de repuesto
para el producto que
no está disponible y necesitan
una solución alternativa. Experimento de prueba de concepto o MVP. El equipo está haciendo una prueba de concepto o
MVP y prefiere
entregar algo con profundidad
técnica para probar la demanda del
producto en el mercado, lugar de construir algo técnicamente perfecto
que nadie quiere. profundidad técnica también puede
ser involuntariamente. Por ejemplo, la falta de conocimiento. Los miembros del equipo son dos
junior y no saben que las mejores prácticas son los patrones de diseño adecuados
para los problemas. Nuevas tecnologías, el equipo
está utilizando una nueva tecnología o marco y no está al tanto de las mejores
prácticas para ello. Cuando un equipo fomenta
continuamente profundidad
técnica
sin
pagarla, podría causar varios problemas. Código de espagueti, que
internamente firmar
del producto podría llegar a ser muy desordenado y
parecía código de espagueti. Y con un acoplamiento alto, el producto puede ser común, estable, peligroso o inseguro. El código se vuelve
más difícil y más difícil entender y hacer cambios o agregar nuevas características
requiere más esfuerzo y podría romperse fácilmente u otras funcionalidades
existentes, ya sea con una buena solución o con más profundidad técnica. Básicamente, lidiar con un
frío formas se convierte en un dolor. Hardware a pagar. Cuanto más
profundidad técnica se acumula. El hardware a pagar, es igual profundidad monetaria
no pagada y
es interés compuesto. La falsa percepción de la
alta velocidad en equipo alentando constantemente la profundidad
técnica podría
parecer muy productiva y
con una alta velocidad durante algún tiempo debido a
sus soluciones rápidas. Pero a largo plazo, la velocidad
bajará por
la complejidad y falta de
estabilidad de la base de código. Estos también pueden
causar adicción por parte las partes interesadas o
propietario del producto para ver entregas rápidas. Y Gould hacer pato duro
se sentó en su futuro, el alto costo de
mantenimiento en caja de fijación. Y además,
aceptar que el código es basura y tiene que
ser un refactor. La metáfora profundidad técnica
fue creada originalmente por palabra enlatado gram para encuadrar
cómo pensar en tratar
con este oficio. Para explicarle a su jefe como
analogía a la profundidad financiera, el esfuerzo extra
que se necesita para agregar nuevas características es el
interés pagado en profundidad.
6. Diseña un diseño de primeras instalaciones y emergente: arriba del signo versus diseño emergente en desarrollo de apoyo. Diseño grande por delante. Se trata de un enfoque en el que se va a completar el software este signo. Estoy perfeccionado antes de la implementación. Esto a menudo se asocia con el agua para el desarrollo de software de modelo fuera. En realidad, eso suena genial, ¿verdad? Bueno, sólo si conoces a detalle todo lo que necesitarás construir de antemano, lo
que hoy en día rara vez es el caso. El cambio es inevitable. Por mucho que tratemos de predecir el futuro, siempre
habrá muchas variables fuera de nuestro control. También, como sabrás, Milton, el nuevo software es el camino hacia algo nuevo que debe ser descubierto en el camino. Uno de los principales fuera del ágil manifiesto es el cambio bienvenido en requisitos porque mientras caminas el camino fuera creando el nuevo software, retroalimentación
regular te dará nuevas ideas y requisitos que habrán sido imposibles de pensar en el inicio del proyecto. Por ello, necesitamos que la técnica que nos ayude a abrazar el cambio y adaptarnos estén diseñados en consecuencia . Entonces en cambio, fuera un gran arriba del letrero. Lo que queremos es un diseño que grosero orgánicamente a la señal que pueda adaptarse a los cambios en el matrimonio continuamente. El diseño emergente se enfoca en la entrega en piezas pequeñas, fuera de trabajar en frío con valor de negocio con diseño emergente. Un equipo de desarrollo comenzó la entrega en funcionalidad en Let's the Design Emerge. Una vez que alguien me dijo en mi empresa anterior, tratamos de hacer un comerciante. El letrero y agregamos frío y más llamado por el diseño no surgió bien fuera de curso no . No se trata de simplemente agregar frío y un día que este signo de repente se hará en matrimonio. Esta es una metodología continua que tienes que aplicar todos los días. El diseño está mutando en emerger todo el tiempo en un diseño comerciante. El equipo de desarrollo quitará una pequeña pieza de la funcionalidad y implementará el uso en Let's
Practices y Discovery Ridge adecuada para luego pasar a la siguiente funcionalidad. Verán qué disfuncionalidades tienen en común son un factor. L. Una ventana diseñada para un matrimonio al final Abrir Naja realmente ciclo. El producto tiene diseño pequeño Onley solo por las características liberadas en esta situación. El resultado es un diseño más simple que es más fácil de entender y mantener con menos espacio para defectos. El desarrollo justo impulsado es una técnica que nos puede ayudar con signos de emergencia
7. Refactoring : ¿qué Refactoring: re factoring qué re factorizar profundidad técnica. Se trata de un concepto en el desarrollo de software que refleja el costo del retrabajo causado por la elección . Y es una solución en lugar de usar un mejor enfoque que podría llevar más tiempo. El concepto fue inventado originalmente por Ward Cunningham. EU A. Metáfora. Esta metáfora ayuda a explicar,
por ejemplo, por ejemplo, a los gerentes por qué es importante invertir el tiempo adecuado en escribir un buen software y re factoring. Por ejemplo, si no pagas tu tarjeta de crédito o dinero que puedes acumular intereses y
tendrás que pagar mucho más con lo que ¿dónde es lo mismo? Si no se reembolsa la profundidad técnica, puede acumular la toma de intereses. Es más difícil implementar cambios y más caro mantener la aplicación. refactoring es una técnica para mejorar el código existente sin cambiar la funcionalidad . En otras palabras, estás mejorando el código pero no proporcionando ningún valor nuevo al usuario final. El valor principal es para los desarrolladores. Esta es una inversión para que el frío sea más mantenible a largo plazo. Se trata de dos obras maestras para leer sobre tu factoring. El 1er 1 es el libro de Martin Fuller, donde explicó las técnicas para re factoring en el 2do 1 introdujo cómo refractor con soluciones que incluyen patrones de diseño. Entonces, ¿cómo sabes lo que deberías ser un factor? Si abres la nevera en hay olor lo que significa. Significa que algo se está pudriendo. Entonces, ¿qué harías? Supongo que lo sacarás si lo dejas dentro. Otros alimentos se va a correr con el código es lo mismo. A veces miras el frío y no estás seguro de por qué. Pero sabes que algo no está bien, que algo olía mal. Y si no lo cambias o lo mejoras, se extenderá por toda la base de código Regresar se refiere a estos olores de código de Estados Unidos. El olor del pelaje te ayuda a identificar qué huele mal en el frío y normalmente factor. Algunos de los olores de código más importantes son duplicados frío uno de los
olores fríos más comunes . Es cuando hay un código idéntico o muy similar que existe en más de una ubicación Método
Long, una función de método o procedimiento que ha crecido demasiado grande. Clase grande Una clase que es la característica M B de Toler clase A que utiliza método fuera de otra clase excesivamente en la intimidad apropiada. Una clase que tiene dependencias sobre detalles de implementación fuera de otra clase se negó a solicitar una clase que anula un método fuera de la clase base de tal manera que el contrato fuera de la clase base no es bocina errado por el disco último. Esto suele ser una violación al principio Lisk de sustitución. Clase Lacey Una clase que hace muy poca complejidad artificiada. Gran uso fuera como complicados los patrones de signos donde un diseño más simple será suficiente. Como sabrás, los patrones son soluciones de grabación a un problema que están probados que lleva a buenos resultados. Los patrones anti son lo contrario. Son soluciones comunes a un problema que por algunos libres algunas personas sí y tienen
consecuencias negativas . Cuando veas cualquier patrón anti, debes volver a factorarlos. Mencionemos algunos de ellos anémicos. El modelo principal es el uso del modelo de dominio sin ninguna lógica empresarial basada en funcionalidad de
herencia de una clase de utilidad. En lugar de usar la composición en la delegación de oro super que requieren subclases para llamar a super clase sobrevalorada y problema de elipse círculo de método. Esto es básicamente un mal uso off subtipo en círculo nuestra dependencia. Dependencias mutuas innecesarias entre objetos o módulos. Interfaz constante. Utilizan interfaces para definir constantes, objeto
Dios, concentrando demasiadas funciones en una sola parte fuera del diseño en un objeto de clase. Cecil Reutilización de objetos Quien estado no confirma el contrato de reutilización. Objeto RG Fallo al encapsular correctamente los objetos que permiten el acceso sin restricciones a sus internos. Baltar miró objetos cuyo único propósito es pasar información a otro objeto. Acoplamiento secuencial una clase que requiere que sus métodos sean llamados en una partícula. Nuestro orden el tu problema Una estructura, por ejemplo, off herencia que es difícil de entender debido a la excesiva fragmentación.
8. Refactoring : ¿cómo volver a factor?: riff Factoring Cómo re factor. Cuando la reflejes, necesitarás cambiar el dedo del pie frío. Aplicar buenos principios de diseño. Mencionemos algunos de ellos. No te repitas. Nuestro primer principio de diseño orientado a objetos es D. R Y. US nombrado sugieren No repetirte solo significa Tom Reid código duplicado. En cambio, usa la obstrucción para poner cosas comunes en un solo lugar. Los siguientes son los avisos de la banda de fuerza. Los chicos que escribieron el libro diseñaron patrones. El 1er 1 es encapsulado. ¿ Qué variedades? Sólo una cosa es constante en el software falló, y eso ha cambiado. Así que encapsula el llamado que esperas que cambie en el futuro. Varios patrones de diseño usan encapsulación. Por ejemplo, el patrón de diseño de
fábrica es un ejemplo. Off Encapsulation, que encapsulan la creación de objetos llamada ONU. Proporcionar flexibilidad para introducir nuevos productos más adelante, sin impacto en la programación de código existente a una interfaz, no en la implementación. Esto llevará a dedo flexible llamado, que puede trabajar con cualquier nueva implementación fuera de la interfaz en el futuro. Así que usa interfaz, escribe tus objetos de valor, propiedades tiempos de retorno y argumentos favorecen la composición sobre la herencia. Algunos de ustedes pueden discutir con esto ya que mucha gente piensa que había uso frío con herencia. Pero encontré que la composición es mucho más flexible que la composición de herencia. Alos para cambiar el comportamiento de una clase en tiempo de ejecución por dicho en un nuevo objeto fuera de una
implementación diferente en una propiedad que nos fue declarada un principio de delegación de tipo de interfaz. No hagas todas las cosas tú mismo delegadas a respectivo más ejemplo clásico de delegación principal son los métodos iguales y código hash en Java. Con el fin de comparar dos objetos para la igualdad, le
pedimos a la otra clase misma que hiciera la comparación en lugar de la clase cliente. Haciendo ese cheque beneficio off. Este principio de diseño no es duplicación de frío. Soy bastante fácil de modificar el comportamiento. Hay algunos principios diseñados llamados sólidos por Roberson Martin. Hay principio de responsabilidad única muy importante. Un aula siempre manejaba una sola funcionalidad y sólo tiene un propósito. Esto aumentará. Cohesión ya está acoplando ropa abierta diseñada clases principales. Los métodos sobre la función deben estar abiertos para la extensión. Unclos para modificación principio de sustitución de lis cub. Dado un super tipo subtipos moskvy sustituto, me cabrea los métodos de super tipo son funciones que usaban el tipo de super clase debe poder trabajar con un objeto fuera de una subclase sin ningún principio de segregación de interfaz de problema . Esto sucedió principalmente cuando una interfaz contiene muchos métodos en un cliente solo necesita una inversión de
dependencia. Una clase debe depender de una fracción o interfaces de nunca a implementaciones. Hay muchas técnicas de factoring re que son relativamente fáciles de entender para la mayoría los desarrolladores, generalmente más fuera de los entornos de desarrollo integrados como Eclipse o Intelligent. Incorporan esta re técnicas de factorización y automatizan los cambios involucrados. Pero aún hay que tomar la decisión. Esto es sólo lista de los más importantes. Método de extracción. Cuando tengas unos fragmentos fríos que se pueden agrupar o que se duplique en muchos lugares , mueve esto. Vaya a un nuevo método separado y reemplace el viejo frío por un método de llamada al método destructivo en carril. Cuando el cuerpo del método es para todos de uso, reemplazaron las llamadas al método. Con el contenido de los métodos bajo plomo, el propio método extrae variable. Cuando tenga una expresión que sea demasiado difícil de entender, coloque los resultados fuera de la expresión en variables separadas que sean autoexplicativas. En línea. Tamp Cuando se tiene un varietal temporal que asignó los resultados de una sola expresión y nada más reemplazó las referencias a la variable con la expresión misma movimiento fuera de un método que tiene más sentido en otra clase hecha en su propia clase. Extracto. Ríete cuando una clase hace el trabajo fuera para crear una nueva clase en lugar los campos y métodos responsables de la funcionalidad relevante en ella. En clase de línea Una clase casi no hace nada, y no es responsable de ningún pecado sobre ninguna responsabilidad adicional. Nuestro plan para ello. Mueve todas las entidades de la clase a otra clase. Otras técnicas de factorización re bien conocidas son método René en antiguo parámetro eliminado de un método fondo se seca. Método. Tire hacia arriba un método de campo o constructor de subclase a una super clase. Empuje hacia abajo un campo o método de una súper clase a una subclase, extraiga una súper clase o un extracto de subclase. El interfaz fuera de la clase que es llamado por muchos clientes forma método de plantilla en muchos otros. Entonces cuando eres un factor y cambias el código, ¿dónde está la red de seguridad? Se ve demasiado peligroso cambiar el frío para mejorarlo ya que existe el riesgo o romper funcionalidades, o son la nueva caja. Entonces, ¿cómo puedo riff actor con confianza En este punto, podrías darte cuenta cuál es la respuesta? El respuesta es prueba unitaria. Necesitas cubrir tu llamada con prueba unitaria para que no haya peligro en re factoring y
puedes mejorar libremente el frío en led el diseño un impulso.
9. Introducción al desarrollo de pruebas: probadores de introducción de desarrollo impulsado por pruebas en desarrolladores son dos roles muy importantes en la ingeniería de
software. No tendrán responsabilidades complejas, pero también llevan diferentes mentalidades. A menudo piensan de manera diferente. Un desarrollador necesita vender problemas con soluciones que funcionan, típicamente preguntará cosas como, ¿Qué necesito construir? ¿ Cómo lo construiré? ¿ Cómo puedo hacerlo? Rob ist Un probador necesita estar en los zapatos fuera del cliente. Un probador preguntará cosas como, ¿Qué puede salir mal? ¿ Cómo puedo haber leído la solicitud? ¿ Cómo puedo encontrar testigos? Pero los desarrolladores aún necesitan probar. Algunas personas pueden decir, Bueno, yo construyo un software, y si durante las pruebas encuentran bichos, puedo arreglarlos Bueno, eso no es diarrea. Por supuesto, confiamos en intestino para atrapar bolsas después del desarrollo, pero eso costó mucho retrabajo y desperdicio. Por lo que como desarrolladores, tenemos que hacer todo lo posible para proporcionar el software libre de Rub ist clean on back en un
enfoque tradicional . El desarrollador creará el frío, y luego ahí está que funciona correctamente. Pero nosotros hemos visto una vez que construyes algo es muy difícil impresionar la prueba en perspectiva. Entonces, ¿qué pasa si pensamos en las pruebas antes del desarrollo? En ese caso, pensaremos primero en los casos de prueba y luego implementaremos llamado Eso pasa la prueba hace en desarrollo, que podemos referir. Toa nos DDT. Se trata de una técnica de diseño e implementación de software incluida en la
metodología de programación extrema . Algunos fuera de fuerza dirán que el nombre es algo desafortunado. Algo así como este signo, dirigido por ejemplos, tendrá frijol quizás más apropiado. Entonces empezaremos por definir qué no es el DDT. La dignidad no es una prueba en método ni una técnica Q A. DDT no es un reemplazo Q A. No está tratando de reemplazar Q A o probador. Con esto. Siguen siendo muy importantes en el ciclo de desarrollo de la plata. DDT está en la técnica de signos para diseños emergentes. Ditty East Test Antes del desarrollo Estás buscando crear la prueba primero bajo un implemento. El cancioncito del pelaje son ejemplos de lo que el sistema debe hacer, y se pueden ver estos US Una especificación viviente. Cuando se tiene un documento, se
puede hacer un mínimo de las cosas que el sistema puede hacer, pero no se puede demostrar con dignidad. Tienes una documentación fuera de lo que el sistema puede hacer, pero también puedes ejecutarlas en Testament validado. El desarrollo está relacionado con el primer concepto de programación de prueba Off Extreme Program, en el que comenzó en el año 1999. ¿ Quiénes son los famosos que apoyan el DDT? ¿ Vuelve? A quién se le acredita haber desarrollado o redescubierto la técnica señalada en 2003. Actividad D. Fomentar el diseño simple ONU Inspira confianza. Can Back es uno de los creadores fuera de la metodología ágil para el desarrollo de software conocido Programa
Extreme de Estados Unidos en También creó junto con Ari Gamma, el marco de pruebas unitarias para la unidad Java J. Publicó muchos libros, preguntó Small talk, Best practice patterns. Explicación de programación extra, desarrollo impulsado por
pruebas por ejemplo. Planeando programación extrema. Martine Fuller es autora y ponente internacional en desarrollo de software, especializada en análisis orientado a objetos y patrones de diseño y
metodologías ágiles de desarrollo de software , incluyendo programación extrema. Tiene muchas publicaciones, entre ellas una re fábrica y mejora del fichaje código existente. Eddie Gamma actuó como líder fuera del desarrollo fuera de la plataforma Eclipse. Formó parte de la Pandilla de los Cuatro que popularizó los patrones de signos. También fue la unidad Creador J, junto con Can back
10. Ciclo de desarrollo TDD: ciclo de desarrollo de desarrollo justo impulsado. Echemos un vistazo al ciclo de desarrollo de las tetas. Empezarás con los requisitos menos desfasados. Por lo general serán historias de usuario. Te quitarás uno de este requisito en Lo primero que harás es escribir una
prueba TDD para una de las funcionalidades fuera de la historia. No escribirás ninguna implementación fuera de la finalidad del teléfono todavía, decir, eso es una prueba para una funcionalidad dada. Pero el sistema no lo proporciona. Ahora. Se pondrá en marcha el escritorio, hacer que falle. Quieres asegurarte de que esta funcionalidad no es muy nivelada y te estás moviendo en pasos de
bebé. Entonces montarás lo más sencillo posible llamado para pasar la prueba. Nosotros sólo queremos implementar lo que se necesita para pasar el caso de la prueba. No pensarás genérico para pasar próxima prueba u otros casos no cubiertos por esta prueba. Una vez implementado, se ejecuta la prueba en hacer autobús. Encendido. El último paso es re factor cuando ves en tu solución y ves qué puedes mejorar
o qué puedes volver a usar sin cambiar en la funcionalidad siguiente, pensarás en una nueva prueba para otra funcionalidad fuera de la misma historia de usuario. O cuando estás abajo con esta historia de usuario, puedes tomar otro requisito para pensar en casos para escribir una nueva prueba que eras. Repita el ciclo una y otra vez, liderando el diseño. Emerge constantemente durante el día hasta que te vayas a casa. ¿ Cuánto tiempo crees que uno de este ciclo de TDD? Tomará un mes, una semana, un día, una hora. Bueno, cuanto más corto mejor, Como sólo unos minutos. Entonces eso significa que estás trabajando con pasos muy pequeños. El ciclo de desarrollo de la teta nos conoce refractor rojo, verde en rojo. Escribirás la prueba que falla por una funcionalidad que no existe. Con esto, te asegurarás de que llamen a que se escriba después de la prueba sea comprobable. También fechas Bali esta especificación en verde lloraste el más simple llamado para pasar la prueba. Simplemente cumplirás con el requisito y
escribirás la solución más sencilla que puedas pensar . No pensarás en ningún patrón de diseño de fantasía ni en ningún gran diseño. En este punto en re factor, te concentrarás en mejorar eso. El suspirando Aquí limpiarás el código. Elimina el frío repetitivo, que es uno de los peores olores de pelaje. Piensa en usar el código fuera de las funcionalidades anteriores. Te asegurarás de que llamaron expresar su intención. Quitarás todo pecado que huele mal como huele el código. Eras una cosa que asignó y aplicó buenas prácticas el signo, principios y patrones diseñados Y por supuesto, eliminarás todo código innecesario.
11. Pros y contras de TDD: cruz y contras off TDD. ¿ Cuáles son los beneficios de la entidad de uso? Proporciona una reducción significativa de caja. Este tiempo fuera de inversión se puede traducir en ahorrar mucho tiempo Q A y evitar retrocesos en la producción. Obtienes un mejor diseño. Ese es un diseño muy reutilizable con no ritmo ellos llamados con alta cohesión. Bajo acoplamiento al seguir las pautas fuera de código limpio, el equipo tiene un mejor sentido fuera de la confianza y la comunicación a través de la verdad. Fuera de la prueba. El test son un activo en sí mismos. Están dejando especificaciones. Documentan lo que puede hacer el sistema. Se pueden ejecutar para validarlo. Al principio, va requiere esfuerzo. Pero a largo plazo, el equipo tiene una mayor productividad. Mantener la capacidad es más fácil bajo. Existe un alto nivel de confianza para realizar cambios. ¿ Cuáles son los contras off uso? Entidad? Es difícil de usar para las pruebas de integración. Es difícil para escenarios como la interfaz de usuario que los sistemas externos de red base, cinco sistemas, especialmente el legado cubran el apoyo de la gerencia. Para un equipo que está adoptando, TDD es esencial. El test son parte de la base fría, y
también requieren mantenimiento . Se desea aplicar todos los buenos principios de diseño en el test coat también. Tendrás que refractar la prueba también, por lo que eso requiere una inversión de tiempo bajo podría ser una falsa sensación de seguridad. Mi grupo visto TDD no es un reemplazo para Q A en lo demás, por lo que puedes tener realmente buena prueba en buena cobertura de prueba. Pero es posible que no entiendas los requisitos o te pierdas en algunos excepto en los criterios. En este gráfico, se
puede ver el nivel fuera de estrés o caos en un equipo o proyecto a lo largo del tiempo hasta una fecha límite con arriba del cartel. Al principio, el estrés es muy bajo. Las cosas parecen ir bien, pero un pronto pregunte estás cerca de la fecha límite. Disfraz, aumento
sin carrera. Puede que las cosas no funcionen. A sospechosos se requieren muchos cambios en el último minuto, pero los cambios tardan en romper otras funcionalidades. Por lo que para el final del proyecto, el estrés es muy alto. Qué ciudad al principio, las tensiones altas. Todo parece difícil en lento, pero pronto el proyecto está en marcha. Los cambios se vuelven más fáciles y rápidos integrando módulos. No es gran cosa, y el equipo se siente seguro. Cuando estás cerca del lanzamiento, las cosas están en buena forma. Básicamente, con TDD, estás mitigando mucho del riesgo. En un principio. Este gráfico compara la devolución fuera de los principios de diseño a lo largo del tiempo. En un proyecto con arriba desde el letrero o prueba más adelante, inicia con un gran diseño que parece cubrir todos los casos posibles en el futuro. Pero nosotros largo pasa el tiempo, la verdad es diferente. Aparecen nuevos requisitos inesperados en su difícil adaptación de su diseño. Por lo tanto, todos los principios de diseño que te gustan y deseas como alta cohesión Low Coop ling, conocido repetitivo, llamado reusabilidad y otros disminuyeron considerablemente. Con TDD, comienzas con diseños pequeños solo por algunas características, y adoptas el signo para agregar nuevas características pero siempre buscando cumplir con las buenas prácticas y principios de diseño.
12. Sistema de ventas: parte 1: la cantidad total con descuento: ditty ejemplo. Imaginemos que estamos trabajando en un sistema de venta que está en desarrollo. Hay muchos usan sus historias, y algunas de ellas ya fueron desarrolladas usin TDD. Estamos obligados a implementar un uso de una historia en el desarrollo impulsado por pruebas. En este requisito, el vendedor quiere dar un 10% de descuento al precio del producto cuando uno compra cinco artículos o más a menos que el producto esté a la venta, Vamos a entrar en ello. Empezamos con el Paso Rojo fuera del ciclo de desarrollo impulsado por pruebas para escribir una prueba que falla . Este es un proyecto que está en desarrollo. Ya hay una clase de prueba de pedidos con prueba unitaria para la clase de orden fuera de la producción , vamos a sumar y le importa para probar que se aplicará un descuento. Escribimos las tres secciones de una prueba unitaria en arreglos con una multa que usaremos un nuevo pedido en el martillo de producto con el precio de 20. De hecho, llamamos a los métodos existentes al tentar dedo del pie impar cinco artículos del producto a la orden en Finalmente en assert, decimos que el descuento se aplicó sobre el método existente get total fueron devueltos 90. Ahora estamos listos para ejecutar esta prueba en su cara porque nuestra prueba esperaba 90 pero el método obtener total devolvió 100. Echemos un vistazo a la clase de orden, que ya existe en el sistema. Hay algún método get total que califica sobre su objeto de líneas de orden en sumas El sub total de cada uno a d n. devuelve
tal algunos Vamos a echar un vistazo a la clase de línea de pedido. El entrometido se levanta. Total sólo devuelve el precio del producto multiplicado por la cantidad en la línea de pedido. Cómo podemos implementar la nueva funcionalidad. Se puede pensar en muchas grandes soluciones aquí, pero vamos a justo lo primero simple que podemos imaginar. Ahora estamos en el escalón verde fuera del ciclo TDD. Cambiamos el método del subtítulo, por lo que si la cantidad es mayor hecha o igual a cinco, devolvemos el precio multiplicado por la cantidad y syrah 50.9. De lo contrario, acabamos de devolver el precio multiplicado por la cantidad. Ahora podemos ejecutar la prueba en él pase. Está implementado. Ahora vamos al paso de factor re son fríos. No se ve bien. Vemos que hay duplicado llamado con variaciones menores fuera de la tasa de descuento. Aplicemos la técnica de factoring variable local de extracto en esta tasa de descuento. Ahora tenemos una tasa de descuento varietal inicializada con uno, pero si la cantidad es de cinco o más, cambiamos a jarabe en nueve. El frío anterior se sustituye por una referencia a la nueva variable. Veamos si esto rompió algo o no. Nosotros alrededor de la prueba en él pasamos.
13. Sistema de ventas: parte 2: calma de descuento: Ahora estamos de vuelta al Paso Rojo. El criterio de aceptación fuera de esta historia requiere calcular cuál fue el descuento que wa suministró. Por lo que creamos un nuevo método de escritorio para esta funcionalidad llamado test order item discount. Creamos un nuevo pedido sobre el producto fuera de precio 20. Somos cinco intentos fuera del producto al pedido en Decimos que el descuento calculado fue de 10. Entonces, ¿qué hacemos ahora? Deberíamos correr la muerte, pero no podemos porque obtengan este conteo El método no existe en la clase de orden. Acabamos de inventarlo en Esta prueba es bueno combinar TDD con la programación por intención, con la programación por intención, pensamos qué método o responsabilidad y objetos deberían haber ganado Moke it on que creamos posteriormente. Vamos a crear el nuevo método. Obtén descuento en la clase de pedido porque estamos en Red Step. No nos interesa su implementación. Por lo que sólo podemos devolver cero Ahora podemos ejecutar la prueba y se sospecha Se desvanece La prueba esperada Obtener descuento para regresar 10 pero regresar cero Hagámoslo bus. Tenemos una prueba que espera 10 pero nuestro método es el retorno en cereal. ¿ Cuál es lo más sencillo que podemos hacer para pasar la prueba? Y cuando digo lo más simple, literalmente
me refiero a lo más sencillo. Podemos simplemente devolver 10 nosotros. Eso es lo que está sospechando la prueba. Ahora ejecutamos la prueba en su verde. Sé que tal vez estés pensando que se ven tontos, pero la entidad idea es hacer pasos de bebé. Entonces debido a que devolvimos 10 necesitamos cubrir la funcionalidad con otro caso de prueba. Si habremos implementado, obtén descuento completo, perderemos la oportunidad de probar otros casos en un proyecto real con prueba unitaria, queremos cubrir muchos casos, incluyendo casos edge. Pero queremos empezar con unas pruebas fallidas para cada caso. Por lo que nos mudamos con pasos de bebé. A lo mejor esto tiene más sentido. Con la siguiente prueba desde el punto de vista del probador, no
confiaremos en que consiga que este conteo funcione bien sólo porque pase una prueba, veremos cómo podemos romperla o qué pasó con otros escenarios. Por ejemplo, podemos crear un dedo de prueba otros seis artículos del producto aquí. Nosotros respetamos que Get descuento devuelto 12. Hacemos la prueba en los primeros pases de prueba, pero el nuevo enfrentó a un sospechoso en 12. Pero obtener descuento Devuelto 10. Sí, Consigue este conteo. No puede engañarnos. Entonces cuando estás en verde, debes escribir lo más estúpido para pasar la prueba. En realidad toe full La prueba en rojo con en código de tráfico dentro de ella es sospechosa y creada . Prueba para casos nuevos. Estamos haciendo cumplir una correcta implementación. ¿ Cómo podemos implementar? Obtienen este método de conteo correctamente. Podemos iterar las líneas de orden fuera de la orden con programación. Mi intención. Asumimos que existe un método llamado get line discount. Este método no existe. Entonces tenemos que crearlo y creamos algo sencillo. Si la cantidad es de cinco o más, que ha devuelto precio podría desplegarse por cantidad y multiplicado por Cira 50.1. De lo contrario regresamos cero. Hacíamos la prueba en el autobús. ¡ Vamos a reflector! Si miramos el código, se ve raro. Ahí hay código repetitivo. Dos métodos tienen frío similar. Por lo que podemos aplicar un método local struck para crear un nuevo método llamado get line total. Creamos el método get line total para devolver el precio multiplicado por cantidad y actualizar los demás métodos para llamar al nuevo método. Pero no tan rápido. Hagamos la prueba para asegurarnos de que este cambio funcione en su verde. Cuando volvemos a mirar a la clase, vemos que se levanta total y nos ponemos mintiendo. Descontar nuestro voto, calculando su tasa de descuento pero de diferentes maneras y obtener sub total. Hay un multiplicador para el total con 0.9 en línea get. El descuento es Siria 0.1, que es lo mismo, pero con una perspectiva diferente. Esto también se duplica frío. Podemos aplicar un método de golpe para crear un nuevo método. Consigue esta tasa de conteo que extraemos, obtén tasa de descuento nosotros un nuevo método y actualizamos las referencias en se sube total y en get line discount llamadas de Estados Unidos al nuevo método. Estamos listos. Utilízalo en el código para asegurarte de que esto esté funcionando en verde. Se les hizo la prueba, se ponen mintiendo. El descuento está funcionando, pero no es fácil de leer. Otra forma de calcular el descuento fuera de línea. Enfriar V para deducir el sub total al total de línea. Hacemos tal cambio nuestro ejecutar la prueba para asegurarnos de que funcione. Se puede pensar en más cosas para mejorar, pero hasta donde se puede ver la clase de línea de pedido se ve mucho más simple.
14. Sistema de ventas: parte 3: producto a la venta: estamos de vuelta en el paso Rojo porque vamos a manejar productos que están a la venta. Este requisito también dice que si el producto está a la venta, no se debe aplicar ningún descuento. Vamos a crear un nuevo método de prueba en la clase de prueba de orden. Nuevamente, creamos un nuevo pedido sobre un nuevo producto. Pero usando la programación por intención, asumimos un nuevo parámetro que indica que este producto está a la venta. Andi. Ahora esta aplicación no maneja el concepto de que el problema puede estar a la venta. Compramos cinco unidades de este producto en la sección Assert con decir que obtienen
retornos totales 100 porque no hay descuento. No podemos ejecutarlo aún porque el producto no tiene tal constructor con el parámetro on say todavía. Creamos un nuevo constructor en la clase de producto, indicando que está a la venta. Vamos a ejecutar la prueba en él falló porque se aplicó el descuento y obtener total devuelto 90 . Ahí está la clase de línea de pedido con el método obtener tasa de descuento que está siendo reutilizado por otros métodos. Qué podemos hacer para hacer el nuevo bus de prueba. Sí, podemos cambiar eso si condición para comprobar que el producto no está a la venta con programación. Mi intención, Asumimos que el producto debe tener un método está a la venta. Creamos. El método está a la venta. En la clase de producto, ejecutamos la prueba Hyundai Path. Cuando miramos a la clase de hermanos, lo que podemos re factor. Si bien los constructores son simples, se duplica la asignación de parámetros a las propiedades. Podemos llamar de un constructor a otro para su reutilización cuando uno crea un hermano con solo el nombre en el precio. Por culpa, suponemos que el producto no está a la venta con un parámetro falso para asegurarnos de que estamos en la prueba en su verde.
15. Consejos y recomendaciones para TDD: pistas y recomendaciones. Para TDD, el consejo más importante en el desarrollo impulsado por pruebas es. No creas que tienes razón. Llamaron a señal temprana antes, justo en la prueba. En cambio, piense en ejemplos de lo que debe hacer el sistema y ¿cómo va a probar? Sé que es difícil para los desarrolladores cuando hay un problema. Es emocionante lo natural pensar en clases, estructuras y patrones. Pero guárdalo un paso atrás y piensa primero en la prueba. Si piensas primero en el diseño, estarás haciendo algún tipo fuera pequeño por delante. El letrero. Estoy seguro de que puede que se te ocurra una estructura que se ve bien, pero puede ser un sobrediseño y más difícil de modificar. Empieza con la prueba y confía en que el proceso te sorprenderá con un gran diseño que no
podrías haber pensado adelante con dignidad. Conservarás el Onley diseñado, sencillo para los problemas que estás abordando en este momento. Recuerda que uno de los principales fuera del manifiesto agin es la sencillez es esencial. El arte de maximizar la cantidad de trabajo no realizado entidad. Queremos dar pequeños pasos que te ayuden a crear una buena cobertura fuera de prueba y solo derecha. Te llamaron necesidad. Por lo que nos moveremos en pasos de bebé, por ejemplo. Si la prueba espera no acaba de regresar nuevo en su método de producción? Sí, un estúpido culo suena. Entonces crea otra prueba. Eso s Bhagwan Tu menos uno o el valor entero máximo. Nosotros sólo queremos diseñar para los problemas. Soy destacado que nos estamos dirigiendo en este momento. Si programas para más casos, el joven la prueba superarás la sencillez y el frío derecho que es menos comprobable. ¿ Se puede pensar en una definición fuera? Buen abrigo. ¿ Cómo vas a comparar Buen código osos es mal código De acuerdo con Michael Feathers llamado sin prueba es mal código. No importa lo bien que sea el retorno. No importa lo bonito u orientado a objetos o bien encapsulado que sea con prueba Podemos cambiar el comportamiento de nuestro código rápidamente encendido verificable Sin ellos realmente no sabemos si nuestro código está mejorando o peor En la industria el oro legado es a menudo nos usó es a largo plazo para difícil cambiar frío que no entendemos. Pero las plumas de Michael tienen razón con una definición diferente. El código heredado simplemente se llama sin prueba. Se podría pensar que esto es severo, puede decir. ¿ Y qué hay de Klink adeudado? Si una base fría es muy limpia y bien estructura, ¿no es suficiente? Bueno, no
mezclemos bien las cosas, Appling code. Pero no es suficiente. Un equipo toma alta res cuando realizan grandes cambios sin prueba. Es como hacer gimnasia aérea sin la red. Requiere habilidades extraordinarias.
16. Introducción a la prueba doble: Stubs y maquetas: la muerte duplica marcas en paradas. La dignidad es un poco más difícil con un entorno complejo. Supongamos que el gerente de servicio es tu competente y necesitas probarlo. Ah, gerente de
servicio llama mucho a los servicios externos Si utiliza los servicios de rial en su prueba , su prueba puede ser lenta en el corredor de servicios. Valores no inspeccionados que hacen que tus pruebas ni sean de buena reputación. Por ejemplo, su componente puede conectarse con un cambio de divisas, un p I que puede devolver diferentes valores para la moneda del euro dólar cada minuto o tal vez baja o puede lanzar una excepción. Lo que queremos es una prueba de buena reputación que quite el control del escenario. Se quiere ver cómo se comporta la producción llamada cuando la moneda es 1.1 o 1.2, o si hay una flecha en el servicio externo. Lo que podemos hacer es usar marcas de dobles de prueba o bastones para reemplazar al rial. Las marcas de servicio y el personal son objetos que podemos crear implementando la misma interfaz servicio
externo. Pero están bajo nuestro control, y podemos simular los escenarios que queremos volar a la gente hacia el espacio
desafíos por ciento interesantes para ingenieros y astronautas. Uno de los más difíciles es cómo asegurarse de que un astronauta esté listo para entrar al espacio. Una prueba de integración completa para el transbordador espacial requerirá estar en el espacio, y eso, obviamente, no
es una forma segura de probar al astronauta. Es por ello que la NASA cuenta con simuladores completos que imitan el entorno del transbordador espacial,
lo que elimina la dependencia externa que llega a existir en el espacio exterior. Una dependencia externa es un objeto en tu sistema con el que estás frío bajo prueba, interactúa con sobre no tienes control. Ejemplos comunes son cinco amenazas de sistemas, tiempo
de memoria, etcétera.
17. Estrategias de prueba dobles: esta doble estrategias para reemplazar las dependencias externas. Utilizamos dobles de prueba al igual que un actor que utiliza un doble para reemplazarlo en escenas de acción . Parte de la dependencia es estrategias dobles. Son marcas de paradas en ser contenedor pruebas paradas son objetos insertados en tiempo de ejecución en el objeto bajo prueba con inyección de dependencia. Esto está en orden de aislar el color del rial. Las marcas de implementación son similares con la diferencia que registraron llamadas desde los objetos
cliente y que desea verificar que su código realice llamadas específicas a ciertos métodos fuera de la marca. Aquí tenemos una clase que queremos probar. Eso interactúa con un servicio externo el cual tiene una interfaz en su implementación riel que utilizamos en producción porque favorecemos la composición sobre la herencia y estamos usando inversión de
dependencia nuestra clase hasta composición con la interfaz, depende de la interfaz y no de la implementación. Eso hace fácil crear un nuevo objeto monje o nos llena una implementación fuera de la interfaz UN inyectado en tiempo de ejecución al objeto fuera de la clase en su prueba. Nuestras pruebas unitarias serán similares a cualquier prueba unitaria, con la diferencia de que creará un simulacro o cosas configurarlo un inyectado en el objeto fuera de la clase bajo prueba cómo usar paradas, deber y ejecución fuera de la prueba. El objeto bajo prueba invoca métodos al dejar de creer que es la dependencia real. El stop sólo devuelve valores que se configuraron para esta prueba. Al usar las cosas, desierto se realiza en la clase bajo prueba. El test trata a la clase bajo prueba como una caja negra. Al utilizar marcas durante la prueba, el objeto bajo prueba se comunica con el objeto simulado, y toda la comunicación se registra en la marca. En la aseveración, la prueba utiliza el objeto marca para verificar que pase el escritorio. El test trata un poco más a la clase bajo prueba como a libros blancos, comprobando cómo se forma la dirección con el servicio o Mark Washburn desde el objeto en su escritorio.
18. Ejemplo de Stub: stub. Ejemplo. Volveremos al primer ejemplo fuera de la prueba unitaria fuera del sistema de venta. Contamos con un sistema celular con una historia de usuario para devolver el cambio a un cliente. Un dolor en efectivo Cuando vemos la misma clase, es muy sencillo. Se tiene un método de cambiar que recibe la cantidad con lo que es el cliente. España US A. Parámetro en devuelve el importe menos el total de la venta. Ahora tenemos un estudio de usuarios sindicales. Como cliente, quiero ver el total de la venta en otra divisa, pagar en efectivo en otra divisa on obtener mi cambio en alguna divisa. Pero por ahora, sólo
necesitamos cubrir euros en dólares estadounidenses. En este punto, el sistema no maneja ninguna otra moneda que el dólar estadounidense. Empecemos por crear un escritorio para un caso sencillo. El total de ventas es en Dólares estadounidenses. El ritmo del cliente en
Dólares de
EE.UU. EE.UU. sobre el cambio es en
Dólares de EE.UU. sobre el cambio es en
Dólares de EE.UU. Creamos una nueva venta o 59
Dólares U. S. S. Llamamos al método de cambiarse, indicando que el lugar del cliente con $100 en quiere el cambio en
Dólares
EE.UU. EE.UU. , y aseveramos que el cambio es de 41. Pero aún no podemos ejecutar la prueba porque la misma clase no tiene moneda. Entonces creamos un nuevo constructor que inventamos en la prueba con una moneda de parámetro. Y somos el nuevo método se cambien, indicando el monto de la divisa de pago bajo moneda cambiada. En este caso, sólo
podemos devolver cero. Ejecutamos la prueba en él falla qué cambios podemos hacer para hacer pasar la prueba. Para implementar esto porque la prueba sospecha de dólares estadounidenses, sólo
podemos devolver el viejo método cambiarse. Eso funcionaba por dólares estadounidenses. Estamos en la prueba en su autobús. Ahora vamos a crear una nueva prueba para el caso de que el total sea en
Dólares de
EE.UU. EE.UU. , el cliente pega con euros. Recibí el cambio en euros. Creamos una vela de 160 en Estados Dólares de los
EstadosUnidos. Llamamos al método get change off del mismo, indicando que el cliente pega con 200 euros cambio no deseado en euros. Y finalmente afirmamos que el cambio calculado es de 80. Lo ejecutamos de cara porque la misma clase sigue calculando en
Dólares de los
EE.UU. EE.UU. sobre retornos 40. Aquí vemos la interfaz fuera del servicio de cambio de divisas. Esa es una dependencia externa. Tiene un método. Obtener moneda que devuelva el cambio de divisas de una moneda a otra. Hay una implementación real, pero queremos crear nuestras propias cosas. Volvemos a nuestra prueba y usaremos mosquito que es un marco para crear marcas de personal en otros tipos. Fuera de esto dobles, creamos un stub con un método simulado El bus en la interfaz cristal Asa parámetro on vamos figura para dejar de decir que cuando el método get currency se llama con los parámetros US dollars y euros, it debe devolver 0.75. Después inyectamos el stop en la venta con el método set currency service on. Hacemos la prueba pero su cara porque no hicimos ningún cambio al frío Se cambiaron método aún cómo podemos hacer que el jefe de escritorio, vamos a implementar algo como esto si la moneda del pago es diferente a la moneda de la venta. Llamamos al servicio de divisas para comparar el total con la misma divisa del pago sobre
devolvemos la diferencia del monto del pago al total comparativo, y ejecutamos la prueba en su verde. ¿ Se puede decir qué tiene de malo este método? Bueno, puedes decir que si la venta es en
Dólares de
EE.UU. EE.UU. , el ritmo del cliente en euros. Pero una vez que los dólares persiguiéndonos, este método no funcionará. Pero no queremos cubrir ese caso ahora porque estamos haciendo pasos de bebé. Tenemos que crear una prueba con tal caso. Que falle. Deshazlo autobús. Esta es una comparación rápida entre paradas y cerraduras. A las paradas de resumen son mucho más simples. Y a menos que tengas algo muy específico, deberías preferir las paradas sobre las marcas.
19. Patrones de código de prueba: patrones de código de prueba. Gerard Massaro's Show Us ¿Cuáles son los giros de déspota y las mejores prácticas para la prueba unitaria. Este es un resumen de esto. Esto es lo menos fuera de estos patrones. Esta Onley una cosa. Por lo general eso significa uno aseverar protesta. Utilizar una clase de prueba clase alta bajo prueba en una prueba por característica. Nunca se utilizó más de una protesta más, pero muchas paradas por prueba están bien. Eso prefieren paradas por encima de las marcas. También hay al menos machos de prueba fuera que te ayudarán a identificar cuando el frío de las pruebas está saliendo de control. Si tiene duplicación de Tesco, puede usar intentos de Perama, prueba o utilidad de prueba. Cómo se ve el frío estable con escribir la prueba. En primer lugar, estamos en valor para escribir frío comprobable. Cuando califique sus soluciones, podría
considerar hacer una arquitectura en capas, aplicando patrones fuera de la arquitectura empresarial bajo el diseño impulsado principal. Rompe las dependencias para que pueda probar con cosas o burlas mediante el uso de inyección de independencia. Aplicar los principios sólidos. Utilizar programa en por intención. Observe escribir abrigos Cohasset y evitar estados globales. En el diagrama, se
puede ver cómo comprobable llamado se ve generalmente como
20. Próximos pasos: próximos pasos. Estos son algunos pasos siguientes para que puedas practicar el DDT. Instala un entorno de desarrollo para tu lenguaje de programación bajo el corresponsal X Unit Framework en Java, será Java Development Kid on Eclipse, que ya incluye su unidad. Estos son sencillos pasos que se describen en sus sitios web. Pero lo mejor para ejercer TDD es hacer Caritas ¿Nos tomó la forma practicar teta sobre Dominar la técnica. Internet está lleno fuera del sitio en el blog sobre algunos famosos de TDD Qaida Consíganos para empezar nuestra bola de
ráfaga puño y calculadora de cuerdas. Espero que hayan disfrutado de esta maldición en eso Fue útil si esperaban algo que faltaba. Por favor házmelo saber. Entonces veo cómo mejorar o compensar para poder obtener la mejor retroalimentación por nuevo Gracias