Wednesday, 11 October 2017

65336 Binary Options


Batavia Prosperindo Finance (BPFI) Le animamos a utilizar los comentarios para participar con los usuarios, compartir su perspectiva y hacer preguntas a los autores y entre sí. Sin embargo, con el fin de mantener el alto nivel de discurso wersquove todos vienen a valor y esperar, por favor, tenga en cuenta los siguientes criterios: Enriquecer la conversación Manténgase enfocado y en la pista. Únicamente publicar material que sea relevante para el tema que se está discutiendo. Se respetuoso. Incluso opiniones negativas pueden ser enmarcadas positivamente y diplomáticamente. Utilice el estilo de escritura estándar. Incluya signos de puntuación y mayúsculas y minúsculas. NOTA. Se eliminarán los mensajes de spam y / o promocionales y los enlaces dentro de un comentario. Evite las blasfemias, calumnias o ataques personales dirigidos a un autor u otro usuario. Donrsquot Monopolizar la conversación. Apreciamos la pasión y la convicción, pero también creemos firmemente en dar a todos la oportunidad de airear sus pensamientos. Por lo tanto, además de la interacción civil, esperamos que los comentaristas ofrezcan sus opiniones de forma sucinta y pensativa, pero no tan repetidamente que otros se molestan u ofenden. Si recibimos quejas sobre personas que se hacen cargo de un hilo o foro, nos reservamos el derecho de prohibirlos desde el sitio, sin recurso. Solo se permitirán comentarios en inglés. Los autores de spam o abuso serán eliminados del sitio y se les prohíbe su futura inscripción a discreción de Investingrsquos. He leído las directrices de comentarios sobre inversiones y estoy de acuerdo con los términos descritos. Descargo de responsabilidad: Fusion Media desea recordarle que los datos contenidos en este sitio web no son necesariamente en tiempo real ni precisos. Todos los CFDs (existencias, índices, futuros) y los precios de la divisa no son proporcionados por los intercambios, sino por los creadores de mercado, por lo que los precios pueden no ser precisos y pueden diferir del precio real de mercado, es decir, los precios son indicativos y no apropiados para fines comerciales. Por lo tanto, Fusion Media no asume ninguna responsabilidad por las pérdidas comerciales que pueda incurrir como resultado del uso de estos datos. Fusion Media o cualquier persona involucrada con Fusion Media no aceptará ninguna responsabilidad por pérdidas o daños como resultado de la confianza en la información incluyendo datos, cotizaciones, gráficos y señales de compra / venta contenidas en este sitio web. Por favor, esté completamente informado sobre los riesgos y costos asociados con el comercio de los mercados financieros, es una de las formas de inversión más riesgosas posible. Presentaciones Ponencias Usted puede encontrar una extensa lista de presentaciones y cursos que he enseñado, incluyendo las diapositivas y notas de altavoz para muchos De ellos, aquí. Viene a conocer a mdashlets Echa un vistazo a mi horario, y déjame una línea si te gustaría reunirme cuando estoy en tu parte del mundo. Si te gustaría que trabajara contigo y no parezca que estoy disponible, recuerda que mis horarios de los clientes están sujetos a cambios, así que el mío también lo es. Por último, tenga en cuenta que algunas conferencias ofrecen discountmdashand incluso si no lo anuncian, tal vez podemos trabajar algo. Septiembre 5-7, 2016 8 de septiembre de 2016 Una sesión pública de un día de Pensamiento Crítico para Probadores de Software, una vez más organizada por Rajesh Mathur y TEAM. Participación comienza aquí Regístrese ahora Septiembre 12-14, 2016 Septiembre 16, 2016 Septiembre 19-22, 2016 Guelph, Ontario, Canada Una clase privada de tres días de pruebas rápidas de software, en la casa de un cliente corporativo. 26-27 de septiembre de 2016 Nueva York, NY, USA Reinventando la Semana de los Probadores mdashWITS Taller de compañeros, Nueva Conferencia de Pruebas, Masterclassesmdashorganized by TestMasters Academy. Registrar aquí . September 28, 2016 Mississauga, ON, Canada Un día de consultoría interna con un cliente local. Octubre 3-6, 2016 Anaheim, California, Estados Unidos La conferencia STAR West, organizada por Techwell. 24 al 25 de octubre de 2016 Toronto, Ontario, Canadá 31 de octubre - 3 de noviembre de 2016 Por noveno año consecutivo, la conferencia de pruebas de EuroSTAR. 14-25 de noviembre de 2016 Consultoría y capacitación en enfoques de pruebas rápidas de software, en la empresa para un cliente corporativo. Diciembre 5-10, 2016 Detalles por venir. Pairwise Testing Versión 1.5, November, 2007 Quizás podamos ahorrar tiempo y esfuerzo y encontrar errores de manera eficiente mediante una técnica para probar variables y valores en combinación. Ordene una o más revistas marcando las casillas correspondientes en este formulario. Elija uno de la columna A y uno de la columna Colores y opciones cuando compró un automóvil cuando elegimos cosas de un conjunto, creamos combinaciones con nuestras elecciones. En la matemática formal, el estudio de las combinaciones se llama combinaciones combinatorias son, formalmente, quotselecciones de una serie de elementos diferentes de un conjunto de elementos distinguibles cuando el orden de selección es ignorado por Penguin1998. En los sistemas informáticos, los defectos suelen implicar una sola condición, independiente de cualquier otra condición en el sistema. Si hay un problema con un dispositivo o una variable o un ajuste, el problema suele estar en ese dispositivo o variable o configuración solo. Por ejemplo, en un programa de procesamiento de textos, una fuente determinada puede ser renderizada incorrectamente, independientemente de la impresora, la conexión de la impresora o la versión de Windows. En algunos casos, sin embargo, hay dos o más malos bailarines en la fiesta, normalmente todo está bien, pero si uno se encuentra con el otro mientras está en cierto estado, se tropiezan unos con otros. En las pruebas, queremos estar seguros de que no nos perdemos problemas basados ​​en conflictos entre dos o más condiciones, variables o configuraciones, por lo que a menudo probamos en combinaciones para encontrar los defectos de manera más eficiente. Todas las impresoras excepto una pueden renderizar una fuente dada perfectamente, y esa impresora puede hacer que todas las fuentes sean perfectamente exceptuadas de esa. ¿Cómo podemos maximizar la posibilidad de encontrar este problema en el tiempo limitado que tenemos que probar? Cuando consideramos tal tarea, comenzamos casi de inmediato a encontrarnos con el problema de las pruebas completas. Supongamos que un defecto depende de que cada variable del sistema esté en un estado específico. Si sólo pudiéramos probar todas las posibles combinaciones comprobando cada aspecto del sistema en cada uno de sus estados, combinado con todos los demás aspectos en cada uno de sus estados posibles, probaríamos de esta manera cada estado y cada combinación de estados en el sistema. Con una prueba efectiva de esta naturaleza, se garantizará encontrar cualquier defecto que dependa del estado del sistema. Esta garantía de encontrar cualquier defecto basado en el estado es muy deseable. Por desgracia, es completamente imposible incluso para un programa pequeño, con un conjunto relativamente simple de variables y relativamente pocos estados posibles por variable, el número total de posibles estados válidos en combinación es intratably grande. Para llegar a ese número, consideramos cada variable y contamos el número de estados válidos para ella. Luego multiplicamos los números de todos los estados válidos para cada variable juntos. Supongamos que hay cinco variables, cada una representada por una letra del alfabeto. Y supongamos que cada variable puede contener un valor de uno a cinco. Permite que las variables de conjunto A, B, C y D sean iguales a 1. Si estos valores son fijos, la variable E puede tener un valor de uno a cinco 8212, cinco combinaciones. Bueno, mantenga un registro del número total de combinaciones en nuestra columna más a la izquierda. Nuestras primeras cinco combinaciones serán numeradas del 1 al 5. Tabla 1: Variación de la columna E solamente Entonces ajuste bien D a 3, luego a 4 y luego a 5, ajustando E A valores de 1 a 5 cada vez. Bueno, tenemos que pasar por 25 combinaciones antes de agotar todas las combinaciones de D y E, y sólo entonces podemos cambiar C de 1 a 2. Las columnas de la derecha se moverán con relativa rapidez, pero a medida que avanzamos hacia la izquierda, las columnas A, B, y C cambiará mucho menos a menudo, como el odómetro en un coche. De hecho, si sólo hay cinco variables en el programa, cada una con cinco estados posibles, el programa sería absurdamente simple, sin embargo, hay que probar 3125 combinaciones8212five combinaciones para la primera variable, cinco veces para la segunda, cinco veces para la tercera , Cinco veces para el cuarto, cinco veces para el quinto82125 x 5 x 5 x 5 x 5. Si pudiéramos probar una combinación por minuto, la prueba completa tomaría siete días y medio de pruebas continuas de siete horas al día8212 asumiendo Que no morimos de aburrimiento primero. Theres llegó a ser una manera de reducir el número de pruebas en algo que podemos manejar. Para empezar a averiguar cómo reducir el número de pruebas, vamos a asumir un programa simple, incluso un programa más simple que el anterior, en el que sólo tenemos dos casillas de verificación. Una casilla de verificación puede estar en uno de los dos estados8212 marcados o desmarcados. Imagine que nuestro defecto depende de la casilla A que está siendo borrada (es decir, desmarcada) y de la casilla B que está siendo configurada (marcada). Si intentamos todos los ajustes posibles en combinación con uno otro, encontraremos bien el defecto. Ponga bien una tabla, con una fila para cada variable. Dentro de cada celda, ponga bien una de las variables estados posibles 8212set o cleared. En la columna de la izquierda, ponga un número de índice para que podamos referirnos a cada combinación por número. Tabla 3: Posibles estados para dos casillas de verificación Las combinaciones 1, 3 y 4 funcionan correctamente, pero la combinación 2 muestra el problema. Wed requieren cuatro pruebas para asegurarse de que habíamos cubierto todas las combinaciones en las cuales A y B podrían ser encontradas. Dos variables y dos configuraciones para cada cuatro combinaciones. Ahora considere algo un poco más complejo: una prueba de cuadro negro de un diálogo con tres conjuntos de botones de radio en él, que representan las necesidades de viaje en América del Norte. El primer conjunto de botones de radio especifica un destino, por país la segunda nota la elección de un pasillo o asiento de la ventana y el tercero ofrece la opción de entrenador, de negocios o clase económica. Cuando el usuario hace sus selecciones y presiona OK para cerrar el diálogo, la aplicación tomará una ruta de ejecución diferente para cada combinación de opciones dadas en estados dados. Como de costumbre, el tipo más simple de problema a detectar es aquel que es activado por una sola variable en un solo estado. Esto se llama un fallo de un solo modo Phadke1997. Por ejemplo, considere que una aplicación que contiene un defecto hace que se comporte de manera extraña cuando la opción de destino se establece en Canadá. Naturalmente, la forma de encontrar un defecto de este tipo sería para asegurarse de que se ejecuta al menos una prueba con el destino establecido a Canadá. Supongamos ahora que hay un defecto que depende de dos condiciones, por ejemplo, el campo de destino se establece en México y la clase de servicio se establece en Negocios al mismo tiempo. Esto se conoce como un fallo de doble modo. Debería quedar claro si ejecutamos por lo menos una prueba con destino fijado a México y el campo Clase a Negocios, así encontraremos el defecto. Con dos objetos y dos opciones para cada uno, podríamos compilar una tabla relativamente directa. Sin embargo, con cualquier complejidad adicional, el esfuerzo de prueba requerido crece muy rápidamente. Para dos botones de radio (cada uno con tres estados posibles) y una casilla de verificación, hay 3 x 3 x 2 o 18 valores posibles para probar. Aquí hay una tabla que muestra cada combinación posible: Tabla 4: Posibles estados para dos botones de radio y una casilla de verificación Inventamos pruebas en respuesta a los riesgos. Hay un riesgo de que el desarrollador haya escrito su código con un fallo de modo único, por lo que queremos estar seguros de que probamos cada variable en cada uno de sus estados si podemos. Hay un menor riesgo de que el desarrollador haya escrito en un fallo de doble modo, por lo que idealmente desea producir al menos una prueba de cada variable en cada uno de sus estados con cada otra variable en cada uno de sus estados. Si nuestra teoría del error es que un desarrollador ha cometido un error de error de doble modo (por ejemplo, si hay un conflicto entre un país, México y una clase de servicio, Business), necesitamos ejecutar al menos una prueba que incluya el error Combinación de quimica y quimica. Por otro lado, si ejecutamos una serie de pruebas equivalentes en México / Negocios, podríamos duplicar el esfuerzo y perder el tiempo. El tipo de problema más difícil de encontrar en las pruebas de cuadro negro es aquél en el que están involucradas varias variables, y cada una debe estar en un estado específico y único para activar el problema. Por ejemplo, cuando el campo de país se establece en EE. UU., la elección de asiento a pasillo, y la clase de servicio a Primero, entonces y sólo entonces se activará el error. Esto se conoce como un fallo de triple modo. O más generalmente como un fallo multi-modo. Que describe las fallas asociadas con tres o más parámetros. Para los probadores, encontrar este tipo de problema depende de uno de dos enfoques: probar todas las combinaciones de variables y estados en el programa o alguna otra técnica combinada con. Bien, suerte. La primera opción es totalmente imposible para cualquier cosa menos el programa más trivial. La clave de la segunda opción es optimizar las pruebas para tener la mayor suerte posible. En 1997, los investigadores de Telcordia Technologies (anteriormente Bell Communications Research, o Bellcore) publicaron un artículo de Siddharta Dalal et al. Alabama. El enfoque del diseño combinatorio para la generación automática de pruebas Telcordia 1997. Los estudios de Telcodias sugieren que las fallas de campo más altas fueron causadas por valores individuales incorrectos o por una interacción de pares de valores. Si eso es generalmente correcto, debemos enfocar nuestras pruebas en el riesgo de fallas de modo único y de modo doble. El artículo de Telcordia sugiere que podemos obtener una cobertura excelente eligiendo pruebas tales que 1) cada estado de cada variable sea probado, y 2) cada variable en cada uno de sus estados sea probada en un par con cada otra variable en cada uno de sus estados. Esto se denomina prueba pairwise o pruebas de todo tipo. Centrarse en los fallos de modo único y doble reduce drásticamente el número de combinaciones que tenemos que ejecutar. Si todos los pares en una combinación dada existen en otras combinaciones, podemos dejar caer esa combinación. Por ejemplo, considere la combinación 14 de la Tabla 4 anterior: el par de México / Negocios también aparece en la combinación 5, el par de Business / Window aparece en la combinación 13 y la combinación de México / Ventana aparece en la combinación 11. Podemos soltar la combinación 14 sin salir Cualquiera de sus pares no probado. Tabla 5: Posibles estados emparejados para dos botones de radio y una casilla de verificación Esta tabla asegura que Canadá sea probado al menos una vez con cada uno de los Coach, Business Class, Y Primera clase, y con la casilla de verificación en el estado de pasillo y el estado de ventana. Del mismo modo, cada opción se prueba con cada otra opción. Capturamos el fallo de doble modo expuesto en la combinación número 3, no necesitamos probar la combinación 12, ya que sus pares están cubiertos por la combinación 15 (que prueba DestinationUSA y SeatWindow), la combinación 11 (ClassCoach y SeatWindow) y la combinación 3 (que prueba DestinationUSA y ClassCoach, y expone el conflicto entre ellos). Utilizando la teoría de pares completos como base para seleccionar las pruebas, en este caso reducimos en la mitad el número de requisitos de prueba, de 18 a nueve. Ahora, ¿cómo hemos logrado eliminar los duplicados? En este caso, la tabla de todas las combinaciones posibles es de 18 entradas. Lo más fácil es seleccionar líneas, empezando por la parte inferior de la tabla, y si todos los pares de la línea están duplicados en algún punto más alto de la tabla, podemos eliminar la línea. La línea 18 contiene EE. UU., Primera clase y Ventana. El par USA-First Class aparece en la línea 9 el par First-Class-Window aparece en las líneas 16 y 17 el par USA-Window aparece en la línea 12 y la línea 15. Ventana el par México-Primera Clase aparece en la línea 8 el par de Ventana de Primera Clase aparece en la línea 16 el Par de México-Ventana aparece en las líneas 14 y 11 Podemos caer la línea 17 también. La línea 16 contiene Canada, First Class y Window Canada-First Class aparece en la línea 7 Canada-Window aparece en la línea 13 First-Class-Window no aparece en otra parte de la tabla. Debemos mantener la línea 16 para preservar el par de la Primera Clase-Ventana. Este es un enfoque razonable, aunque tedioso, cuando la mesa principal es muy pequeña, pero un conjunto de selección con un número trivial de opciones aumenta enormemente la complejidad. Cuando añadimos variables o valores, suceden tres cosas. En primer lugar, el tamaño de la tabla de todas las combinaciones se expande exponencialmente. En segundo lugar, el esfuerzo asociado con el tamizado de los pares duplicados se hace enorme. En el tercer punto, hay algunas buenas noticias: la selección de todos los pares reduce el número de combinaciones requeridas mucho más dramáticamente que en nuestro ejemplo anterior. Supongamos que un programa que tiene 75 opciones binarias la tabla de todas las posibles combinaciones de estados se extendería a 275 entradas. (Sólo por diversión, ese número pasa a ser 37,778,931,862,957,161,709,568). El trabajo de Telcordias señala que 75 parámetros de dos estados cada uno pueden ser comprobados por pares con sólo 28 combinaciones Telcordia, 1997 Por lo tanto, la prueba de todos los pares es una técnica muy poderosa para reducir el número de pruebas a ejecutar, pero hay dos problemas a considerar. El primer problema es que si el defecto en el ejemplo requiere tres variables para ser sólo así (DestinationCanada, ClassBusiness y Seat PreferenceAisle), nuestra mesa más pequeña no disparará el defecto. Aún así, simplemente bashing lejos al azar será aún menos eficiente. Una solución consiste en complementar las pruebas en pares con otras pruebas y pruebas de control de calidad, inspecciones de cobertura, herramientas de cobertura, pruebas de límites y pruebas basadas en riesgo, por nombrar sólo algunas. El segundo problema es que una tabla de todos los pares toma un tiempo significativo para construir y comprobar cualquier cosa menos un pequeño número de variables y más estados posibles para cada variable. Si desea probar más de pares - triples o n-tuplas - el problema rápidamente se vuelve intratable para un planificador de pruebas humano. Afortunadamente, hay algunas soluciones a este problema. Telcordia ha creado una herramienta basada en la web denominada Generador Automático de Pruebas Eficientes (AETG). Puede encontrar más información sobre el servicio Web de AETG aquí también puede encontrar un documento que describe los principios aquí. El papel es duro pero vale la pena leer. La prueba basada en AETG no es para todos, pero los principios detrás de ella merecen la pena considerar, y el servicio puede ser útil para su proyecto. James Bach ha escrito una herramienta llamada ALLPAIRS. Un script PERL de línea de comandos que creará tablas de pares completos. El sitio de James es satisfice /. ALLPAIRS no es tan eficiente como AETG, pero como él dice, Telcordia Technologies. Tiene una herramienta basada en la web que hace un trabajo algo mejor que Allpairs. Sin embargo, su herramienta cuesta 6000 asientos. Compare eso con GRATIS. En este punto, usted debe tener una comprensión suficiente de pairwise pruebas para entender su valor (y si no, Id como usted para hacerme saber). Si estás interesado en matemáticas más formales en torno a la prueba pairwise, sigue leyendo. Acerca de las matrices ortogonales La prueba en pares está fuertemente influenciada por una construcción matemática llamada matriz ortogonal. O una OA. Las matrices ortogonales se usan en una variedad de disciplinas, incluyendo investigación médica, fabricación, metalurgia, encuestas y otros campos que requieren pruebas y muestreo estadístico. Un arreglo ortogonal tiene propiedades específicas. Primero, una OA es una matriz rectangular o una tabla de valores, presentada en filas y columnas. Como una base de datos o una hoja de cálculo. En esta hoja de cálculo, cada columna representa una variable o parámetro. Aquí hay algunos encabezados de columna para una matriz de prueba de compatibilidad. Cuadro 6: Cabeceras de columna para una matriz de prueba Aunque podemos reemplazar las letras con valores específicos, un beneficio particular de este enfoque es que podemos ampliar la potencia de las pruebas de combinación sustituyendo las letras por clases específicas de valores. Uno de los riesgos asociados con los campos de texto de forma libre es que no se pueden comprobar correctamente durante la longitud del programa podría aceptar más datos de lo esperado, copiarlos a una ubicación (o quotbufferquot) en la memoria, y por lo tanto sobrescribir la memoria más allá del final esperado de El tampón. Otro riesgo es que el campo puede aceptar un valor vacío o nulo aunque se requieran algunos datos. Así que en lugar de asociar las cadenas de texto específicas con los niveles de la columna 3, podríamos en cambio asignar A a quotno dataquot, B a quotdata de 1 a 20 caracteres, y C a quotdata de 21 a 65,336 caracteres. Al hacer esto, podemos probar los riesgos más amplios que los asociados con valores enumerados específicos. Por ejemplo, supongamos que estamos probando una solicitud de seguro. Supongamos que la variable 1 representa una casilla de verificación de tres estados (sin A, sin niños, con niños a cargo B, y con niños grises C). Supongamos que la variable 2 representa un conjunto de botones de radio (etiquetados como solteros, casados ​​o divorciados). Por último, asumir que la variable 3 representa un campo de texto de forma libre de hasta 20 caracteres para el nombre del cónyuge. Supongamos además que el campo de texto está correctamente controlado para asegurarse de que sus 20 caracteres o menos. Sin embargo, suponga que existe un error en el que la aplicación produce un registro distorsionado cuando el nombre del cónyuge está vacío, pero sólo cuando se selecciona el botón de opción quotmarriedquot. Mediante el uso de clases de datos (nulo, válido, excesivo) en la columna 3, la prueba pairwise puede ayudarnos a encontrar el error. Volver a arreglos ortogonales. Hay dos tipos de arreglos ortogonales: los que utilizan el alfabeto de mismo tamaño en todas las columnas y los que utilizan un alfabeto más grande en al menos una columna. Este último tipo se denomina una matriz ortogonal de alfabeto mixto. O simplemente una matriz ortogonal mixta. Si decidimos añadir otra resolución de pantalla, necesitamos agregar otra letra (D) para rastrearla, entonces tendríamos una matriz ortogonal mixta. Una matriz ortogonal regular (es decir, no mixta) tiene otras dos propiedades: la fuerza y ​​el índice. Formalmente, una matriz ortogonal de fuerza S e índice I sobre un alfabeto A es una matriz rectangular con elementos de A que tiene la propiedad de que, dado cualquier S columnas de la matriz, y dado cualquier S elementos de A (igual o no), allí Son exactamente las filas I de la matriz donde aparecen esos elementos en esas columnas. Sólo un matemático podía apreciar esa definición. Vamos a averiguar lo que significa en términos prácticos. Si estaban usando un OA para probar fallas, la fuerza se refiere esencialmente al modo del fallo para el cual estaban comprobando. Al revisar si hay un fallo de doble modo, consideramos pares de columnas y pares de letras del alfabeto que necesitaríamos una tabla con una fuerza de 2. Seleccionamos una fuerza seleccionando un cierto número de columnas de la tabla y el mismo número De los valores del alfabeto así llaman ese número S. La matriz es ortogonal si en nuestras columnas S, cada combinación de S símbolos aparece el mismo número de veces o para decirlo de otra manera, cuando S 2, cada par de símbolos debe aparecer el mismo número de veces. Por lo tanto, estamos realizando pares o pares de pruebas cuando se crean las condiciones de prueba utilizando matrices ortogonales de la fuerza 2. ¿Estábamos comprobando un fallo de modo triple 8212a falla que depende de tres objetos de valor establecido a un cierto valor, tendríamos que mirar a tres Columnas a la vez, y combinaciones de tres letras de la tabla del alfabeto 8212a con la fuerza de 3. En general, la fuerza determina cuántas variables queremos probar en combinación entre sí. Un índice es un concepto más complicado. La matriz ortogonal tiene un índice I si hay exactamente I filas en las que aparecen los valores S del alfabeto. Esto significa efectivamente que los OA que tienen un índice deben tener el mismo alfabeto, o que todas las columnas deben contener alfabetos de igual tamaño, lo que equivale a la misma cosa. Por lo tanto, una matriz ortogonal de alfabeto mixto no puede tener un índice. El índice es importante cuando se desea asegurarse de que no sólo se pruebe cada combinación, sino que cada combinación se pruebe el mismo número de veces. Eso es importante en las pruebas de fabricación y de seguridad del producto, ya que nos permite tener en cuenta el desgaste o la fricción entre los componentes. Cuando probamos combinaciones de componentes usando matrices ortogonales, encontramos no sólo qué combinación de componentes se romperá, sino también qué combinación se romperá primero. Esto nos lleva a la principal diferencia entre las pruebas de matriz ortogonal y las pruebas de todos los pares. Si estamos buscando conflictos simples entre variables, se supone que exponen bien el defecto en la primera prueba de un par de valores en conflicto. Si nos atenemos a esa presunción, no es muy útil probar la misma combinación de valores emparejados más de una vez, por lo que cuando los probadores usan pruebas pairwise, utilizan conjuntos ortogonales de fuerza 2 para producir condiciones de prueba pairwise y, para ahorrar tiempo, Theyll tienden a pegarse a un índice de 1, para evitar la duplicación de esfuerzo. En los casos en que los alfabetos de cada columna son de tamaño mixto, así tomar el golpe y probar algunos pares una vez y algunos pares más de una vez. Además, a menos que lo planifiquemos específicamente, no es muy probable que las variables en una pieza de software o los parámetros en las pruebas de configuración tengan el mismo número de niveles por variable. Si ajustamos todas nuestras columnas de manera que tengan los alfabetos del mismo tamaño, nuestra matriz crecerá. Esto nos da una matriz ortogonal que es equilibrada, de tal manera que cada combinación aparece el mismo número de veces, pero a un costo: la matriz es mucho mayor de lo necesario para todos los pares. En las pruebas de todos los pares, las combinaciones son pares de variables en los estados de tal manera que cada variable en cada uno de sus estados se empareja al menos una vez con alguna otra variable en cada uno de sus estados. En matrices estrictamente ortogonales, si un par se prueba tres veces, todos los pares tienen que ser probados tres veces, si las pruebas adicionales revelan más información o no. Una matriz estrictamente ortogonal tendrá un cierto número de filas para las cuales el valor de una o más de las variables es irrelevante. Esto no es necesario mientras weve probado cada par contra el otro una vez así en términos prácticos, una habitación de prueba basada en un arsenal orthogonal tiene algunas pruebas desperdiciadas. Consecuentemente, en las pruebas pairwise, nuestras matrices tenderán a no tener un índice, y serán casi ortogonales. Así que vamos a construir una matriz ortogonal. Tenemos tres columnas, que representan tres variables. Bueno elegir un alfabeto de rojo, verde y azul - thats un alfabeto de tres niveles. A continuación, organizar bien las cosas en una mesa para todas las combinaciones posibles: Tabla 10: Todas las combinaciones de tres variables de tres niveles cada uno ¿Cómo he sucedido a elegir estas nueve combinaciones específicas Que fue la parte fácil: me engañó. Traté de ensayo y error, y no podía bajar a menos de 12 entradas sin pasar más tiempo del que sentía que valía la pena. La herramienta de AllPairs mencionada anteriormente me consiguió a 10 combinaciones. Sin embargo, en la Web, hay tablas precalculadas de ordenación ortogonal para cierto número de variables y alfabetos uno es aquí que es el que he utilizado para producir el gráfico anterior. Las matrices ortogonales del alfabeto mixto permiten alfabetos de diferentes tamaños en las columnas. El requisito es que el número de filas en las que los elementos dados ocurren en un número dado de columnas prescritas sea constante sobre todas las opciones de los elementos, pero se permite variar para diferentes conjuntos de columnas. Dicho conjunto ortogonal no tiene un índice, y se conoce como una matriz casi ortogonal. El ejemplo de la línea aérea anterior es de este tipo de alfabeto mixto. La consecuencia es que algunas combinaciones serán probadas más a menudo que otras. Obsérvese que en la Tabla 5, hay dos ejemplos de Canadá como destino y Ventana como la preferencia de asientos, pero cada prueba es significativa con respecto a la columna de la clase. En los casos en que una sola columna tiene un alfabeto mayor que todos los demás, bien probar todos los pares, pero algunos pares pueden ser duplicados o pueden tener variables que se pueden establecer para quotdont cuidar valores. Si hay una oportunidad de ampliar las pruebas en un valor de cuidado desproporcionado, por ejemplo, probando a una variedad de representantes de una clase que de otra manera podría considerarse equivalente, podemos ampliar la cobertura de las pruebas de alguna manera. Una vez más, el objetivo de utilizar matrices ortogonales en las pruebas es obtener el mayor bang para el dólar de la prueba, realizando el menor número de pruebas que es probable que exponga los defectos. Para mantener los números bajos, las combinaciones deseadas son pares de variables en cada uno de sus posibles estados, en lugar de combinaciones de tres o más variables. Esto hace que la prueba pairwise sea un tipo de subconjunto de pruebas de matriz ortogonal. Una matriz ortogonal no está restringida a pares (fuerza 2) puede ser triplesmdashstrength 3, o combinaciones de tres variables o n-tuplesmdashstrength n, o combinaciones de n variables. Sin embargo, las matrices ortogonales con una resistencia mayor que 2 son grandes, complejas de construir, y generalmente devuelven demasiados elementos para que sean practicables. Además, en el caso de los alfabetos mixtos, las matrices estrictamente ortogonales producen más pruebas parejas de las que necesitamos para hacer un buen trabajo, por lo que las pruebas de todos los pares usan matrices casi ortogonales, lo que representa una cobertura razonable y un riesgo reducido a un impresionante ahorro de tiempo y esfuerzo. Postscript 2007 Escribí este artículo en 2004 (y anterior), y ahora, en 2007, su tiempo para una actualización. En primer lugar, parece haber gran confusión en el mundo entre los arreglos ortogonales y las pruebas en parejas. La gente usa los términos indistintamente, pero hay una diferencia clara y significativa. Espero que este artículo proporcione la distinción de una manera clara y útil. Si iban a hablar de estas cosas, podríamos hacerlas bien, así que si estoy equivocado, le pido que me desilusione. Segundo, ya no estoy convencido de las virtudes de las matrices ortogonales o de las pruebas parejas, al menos no en la forma pat y superficial de las que he hablado arriba. Una experiencia en el trabajo proporcionó un temblor para recordarme que era escéptico. El proyecto ya tenía un año de retraso (para un proyecto de 18 meses), y en mal estado. Casi todo el mundo lo sabía, por lo que el objetivo se convirtió en deniabilitymdashor plausible, menos formalmente, cubrir el culo. Uno de los altos gerentes de proyecto miró por encima de mi cuidadosamente construida mesa pairwise, y dijo Hey. Esto se ve realmente goodmdashthis impresionará a los auditores. No tenía otras preguntas, y no parecía preocuparse por el estado del proyecto. Impresionar a los auditores era lo único que importaba. Esto me dio una pausa, porque de repente me sentí como si mi trabajo se estaba utilizando para ayudar a engañar a la gente. Me preguntaba si también me estaba engañando. Hasta ese momento, yo había tomado un cierto orgullo en el trabajo que había estado haciendo. Descubrir las variables a probar había tomado mucho tiempo, y la preparación de las tablas había tomado bastante tiempo también. Fue el valor de mi trabajo coincidiendo con el costo de repente me di cuenta de que no había interactuado con el producto en absoluto. Cuando por fin llegué a ello, descubrí que el número, el alcance y la gravedad de los problemas en el producto eran tales que las pruebas por parejas eran, en ese momento, no sólo innecesarias sino una seria pérdida de tiempo. El producto simplemente no era lo suficientemente estable como para usarlos. Quizás mucho más tarde, después de que esos problemas hubieran sido arreglados, y después de haber aprendido mucho más sobre el producto, podría haber hecho un trabajo mucho mejor de crear tablesmdash pairwise, para entonces podría haber encontrado que las mesas pairwise wouldnt han arrojado luz sobre el Cosas que importaban al proyecto. En el momento en que estuve involucrado en este elaborado ejercicio, ahora creo que debería haber estado operando y observando el producto, en lugar de planear probar un producto que necesitaba desesperadamente pruebas inmediatamente. Mi gerente de pruebas, para quien tengo mucho respeto, desapareció de ese proyecto debido a las diferencias con los jefes de proyecto, y me animaron a desaparecer una o dos semanas más tarde. El proyecto debía desplegarse unas seis semanas después. No lo hizo. Finalmente se liberó cuatro meses después, se retiró de la producción, y luego se volvió a publicar unos seis meses después de eso. Un año más tarde, hubo una sacudida de escepticismo a nivel de terremoto en la forma de este artículo de James Bach y Pat Schroeder. Si quieres entender una historia mucho más matizada y coherente acerca de la prueba pairwise que la que preparé en 2004, mira allí. Me dejaron seducir. La prueba Pairwise es muy seductora. Nos proporciona una historia plausible que contar acerca de una forma de cobertura de la prueba, está vestida con ropa de fantasía matemática, y parece que podría reducir nuestra carga de trabajo. ¿Proporciona el tipo de cobertura de la clase que es más importante para el proyecto es la reducción del número de pruebas que ejecutar una meta, o es una forma de desplazamiento de la meta Podemos estar engañando a nosotros mismos Tal vez, o tal vez no, pero creo que deberíamos pedir. Yo debería. En una respuesta de un blog, Cem Kaner agregó esto, para recordarme que no dejaría que el péndulo oscilara demasiado lejos en sentido contrario. Creo que sus comentarios merecen atención. Todos los pares es un criterio de cobertura, como todos los triples, matrices ortogonales, todas las ramas, todos los bugs fijos reevaluados, etc. Deje de lado las preguntas de si es bueno para impresionar a los auditores. Creo que es bueno para al menos otros tres propósitos: (1) A veces, existe un riesgo genuino (o percibido) de interacción entre las variables. Una herramienta de todos los pares le da un vehículo simplemente estructurado para el diseño de pruebas que exploran ese riesgo. My primary concern about using all-pairs in this case (any form of combination testing that isnt carefully thought out) is that people often go through the motions of entering the variables values into the input fields but they dont then continue with the program to see how it uses those values, checking the decisions or calculations that might actually be affected by the combination.(Similarly for combination tests used for configuration testing, you have to use the configured system enough to find out if there is a problem.) I think all-pairs is at least as good a start for the design as any other combination heuristic. Note that I am suggesting that all-pairs is a vehicle for EXPLORING the risk. Once you have a better idea of what variables interact and how, other tests become more interesting. (2) Sometimes, there is no reason to know in advance whether there are interactions, but you have to do some budget negotiations. The all-pairs criterion is a way of stating a scope of preliminary combination testing. If you find bugs with these tests, you continue with more tests that are better tailored to the risks you now understand. On the other hand, if you dont find bugs with these tests, you stop at the agreed stopping point, having spent the expected cost. (3) All-pairs provides a structure for considering what variables are worth combining and what values of those variables are worth combining. Not everyone needs that structure, and this structure doesnt work for every test designer, but its a tool in the belt. One way to think about this is to distinguish between three types of combination test design: (a) mechanical combination test design (all-pairs is an example, random combinations put together algorithmically with a random number generator is another) (b) scenario-based design, in which you consider how the product is likely to be used or installed and (c) risk-based design in which you consider specifically how these combinations might create a failure. Mechanically-oriented designs are not optimized for real-life emulation or risk. They are just mechanical. A second distinction is between using combination testing in an exploratory way or a scripted-regression way. Ive described using all-pairs in an exploratory way at the system level. At the subsystem level, Id be more likely to use all-pairs in a regression suite. Consider protocol testing -- testing communications between two applications (probably two that are authored and maintained separately). The protocol specifies how they communicate. Over time, one program might be revised in accordance with an upgraded protocol (or just be revised incorrectly), causing bad interoperation with the other application. A regression suite of test messages, where the risk over time is very general: a well-formed message (which combines values of many variables) will be misunderstood or a badly-formed-under-this-protocol message will be accepted. As with automated unit tests, I would expect these types of tests to be cheap to create and run and useful over time as refactoring aids, more than as system test aids. This reminds me, as James Bach says in a forthcoming book, that skepticism isnt the rejection of belief, but the rejection of certainty. References and Bibliograpy One of the leading exponents of the Robust Testing method is Madhav S. Phadke. His paper, Planning Efficient Software Tests. describes orthogonal arrays (of strength 2, mostly) and their application in software testing. Elfriede Dustin wrote an article called Orthogonally Speaking in the September/October 2001 issue of STQE Magazine . Phadke, 1997 Phadke, Madhav S. Planning Efficient Software Tests. Crosstalk, The Journal of Defense Software Engineering, October 1997. stsc. hill. af. mil/crosstalk/1997/10/planning. asp Telcordia, 1997 Cohen, D. M. et. Alabama. The AETG System: An Approach to Testing Based on Combinatorial Design. IEEE Transactions On Software Engineering, July 1997 (Vol. 23, No. 7). argreenhouse/papers/gcp/AETGieee97.shtml This essay is copyright 2007 Michael Bolton. If you liked it, please let me know. If you didnt, please let me know how I might improve upon it. If youd like to be notified when Ive posted another essay that you might enjoy, please click here to be put on my mailing list. If your reply-to address isnt altered to prevent spam, you dont have to put anything in the body of the message. You are welcome to reprint this article for your own use or for your companys use, as long as you follow the instructions here (developsense/reprints. html). If you or your company need counselling or instruction in this area, I can help with engaging and informative courses on quality assurance and software testing in plain English that can help to save your company time and money. Contact me for details. Thanks 1. 3. 4. 7. No widget found with that idNo widget found with that id No widget found with that id

No comments:

Post a Comment