Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pavel Panchekha Adam T. Geller Michael D. Ernst Zachary Tatlock Shoaib Kamil
pavpan@cs.uw.edu atgeller@uw.edu mernst@cs.uw.edu ztatlock@cs.uw.edu kamil@adobe.com
Escuela de Ingeniería y Ciencias de la Computación Paul G. Allen Laboratorio de inteligencia creativa
Universidad de Washington, Seattle, WA, EE. UU. Adobe Research, Nueva York, EE. UU.
Resumen 1. Introducción
Las pautas de usabilidad y accesibilidad tienen como objetivo hacer que las interfaces gráficas La accesibilidad a la página web es imperativa por razones morales y legales. Hay más
de usuario sean accesibles para todos los usuarios, por ejemplo, requiriendo que el texto sea lo de 7,4 millones de adultos con discapacidad visual solo en EE. UU. [ 35 ]. Otros usuarios
suficientemente grande, que los controles interactivos sean visibles y que el tamaño del tienen discapacidades sensoriomotoras que restringen el uso de dispositivos de
encabezado corresponda a la importancia. Estas pautas deben mantener la infinita cantidad de entrada. Estas personas deberían tener la oportunidad de usar las páginas web como
representaciones posibles de una página web generada por diferentes tamaños de pantalla, lo hacen otras personas, pero las páginas web inaccesibles las bloquean. Los
fuentes y otras preferencias del usuario. Hoy en día, estas pautas se prueban mediante la diseñadores de GUI se esfuerzan por hacer que sus páginas sean accesibles siguiendo
inspección manual de algunas representaciones, porque 1) las pautas no están expresadas en pautas, como las del Departamento de Justicia [ 50 ] o las Pautas de accesibilidad al
un lenguaje formal, 2) la semántica de la representación del navegador no se comprende bien y contenido web del W3C [ 53 ]. Para algunas aplicaciones, el cumplimiento de estas
3) no existen herramientas para verificar todas las posibles representaciones de una página pautas es obligatorio por la Directiva europea de accesibilidad web y móvil [ dieciséis ], la
web. VizAssert resuelve estos problemas. Primero, presenta lógica visual Ley de Estadounidenses con Discapacidades [ 49 ], o la Ley Básica de Tecnología de la
Información de Japón [ 15 ]; otros países también tienen tales estándares. En 2017, se
entablaron al menos 814 demandas contra propietarios de sitios web por páginas web
para especificar con precisión las propiedades de accesibilidad. En segundo lugar, formaliza un inaccesibles [ 52 ].
gran fragmento de la algoritmo de renderizado del navegador
usando novela reducciones de finitización. En tercer lugar, proporciona una sonido, herramienta
automatizada para verificar afirmaciones en lógica visual. Las pautas de usabilidad son similares: desde una perspectiva de accesibilidad, un desarrollador
Codificamos 14 afirmaciones extraídas de las mejores prácticas de puede querer asegurarse de que los botones sean lo suficientemente grandes para usuarios con
accesibilidad y pautas de usabilidad móvil en lógica visual. VizAssert los verificó discapacidades sensoriomotoras, mientras que desde una perspectiva de usabilidad, un desarrollador
en 62 páginas web diseñadas profesionalmente. Encontró 64 errores distintos en puede querer asegurarse de que los botones sean lo suficientemente grandes para los usuarios de
las páginas web, mientras que reportó solo 13 advertencias falsas positivas. un dispositivo móvil.
Palabras clave accesibilidad, usabilidad, verificación, SMT, diseño, CSS, semántica algunos parámetros elegidos y buscando visualmente violaciones de las restricciones de
diseño, o utilizan motores de comparación automatizados píxel por píxel como Selenium,
Sikuli y Raven [ 9 , 13 , 17 ]. Estas técnicas solo consideran un subconjunto particular de
Formato de referencia de ACM:
parámetros de representación y no son suficientes para garantizar que las aplicaciones
Pavel Panchekha, Adam T. Geller, Michael D. Ernst, Zachary Tatlock y Shoaib Kamil.
2018. Verificación de que las páginas web tengan un diseño accesible. En Actas de la sean accesibles [ 24 , 29 , 43 , 46 ]. Para verificar la accesibilidad es necesario verificar
39ª Conferencia ACM SIGPLAN sobre diseño e implementación de lenguajes de todas las combinaciones posibles de parámetros de renderizado.
programación (PLDI'18).
ACM, NuevaYork, NY, EE. UU., 19 páginas. https://doi.org/10.1145/3192366. 3192407
Presentamos VizAssert, una herramienta para verificar que una afirmación sobre
El permiso para hacer copias digitales o impresas de todo o parte de este trabajo para uso personal el diseño visual sea válida para las páginas web. Las páginas web son un tipo ubicuo
o en el aula se otorga sin cargo siempre que las copias no se realicen o distribuyan con fines de de interfaz de usuario para aplicaciones modernas. VizAssert toma como entrada una
lucro o ventaja comercial y que las copias lleven este aviso y la cita completa en la primera página. . página web y una afirmación en un lógica visual, por ejemplo, un tamaño de fuente
Se deben respetar los derechos de autor de los componentes de este trabajo que son propiedad de
mínimo o la visibilidad y el contraste de los widgets. VizAssert certifica firmemente
terceros distintos del autor. Se permite resumir con crédito. Copiar de otra manera, o volver a
que la aserción se cumple para todos los parámetros de representación en un
publicar, publicar en servidores o redistribuir a listas, requiere un permiso específico previo y / o una
tarifa. Solicite permisos a permissions@acm.org. conjunto acotado elegido por el usuario, o proporciona un contraejemplo por el cual
se viola la aserción.
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU.
© 2018 Copyright del propietario / autor (es). Derechos de publicación autorizados a la Asociación de VizAssert razones sobre el diseño de la página web utilizando una formalización del
Maquinaria de Computación.
algoritmo de representación del navegador especificado por el
ACM ISBN 978-1-4503-5698-5 / 18/06. . . $ 15.00
https://doi.org/10.1145/3192366.3192407
1
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU. P. Panchekha, AT Geller, MD Ernst, Z. Tatlock y S. Kamil
Estándar W3C CSS 2.1 [ 54 ]. El estándar CSS describe varias características clave en
Accesibilidad Lógica visual
términos de operaciones en conjuntos de tamaño arbitrario, que son difíciles de Directrices Afirmación fi nitización
desde los conjuntos de tamaño arbitrario discutidos por el estándar hasta una Figura 1. VizAssert garantiza que las páginas web cumplan con las pautas de
representación compacta de tamaño finito que es más susceptible al razonamiento accesibilidad. VizAssert transforma esas afirmaciones, expresadas en lógica
mecánico. Al reducir los conjuntos de tamaño arbitrario a análogos finitos, VizAssert visual, en propiedades de la fuente HTML y CSS de la página web, luego
codifica su formalización de la representación del navegador en una consulta SMT que se codifica esas propiedades en fórmulas en la teoría libre de cuantificadores de
puede resolver de manera eficiente y utiliza Z3 [ 14 ] para buscar automáticamente aritmética real lineal.
contraejemplos de una afirmación o para certificar que no existen contraejemplos.
a la verdad de esa afirmación. Una respuesta al problema de búsqueda es un conjunto de 4 Los elementos para los usuarios de lectores de pantalla están fuera de la pantalla [ 34 , 41 ]
específicas del dominio de sus páginas web. En total, hay 502 combinaciones de página web
1.3 Contribuciones
Este documento considera 14 pautas de accesibilidad y mejores prácticas (Tabla 1 ). • Lógica visual, un lenguaje para expresar propiedades de diseño visual
Todos representan preocupaciones reales para los diseñadores, pero el conjunto (Sección 3 ), incluidas las 14 pautas de accesibilidad y usabilidad de la
particular es menos importante que el hecho de que VizAssert es general y extensible. Tabla 1 .
• Una formalización eficiente de muchos componentes cruciales del algoritmo
Formalizamos cada pauta de accesibilidad en lógica visual y las de renderizado del navegador. Por razones de espacio, este documento
verificamos en una colección de 62 páginas web diseñadas destaca tres de ellos: altura de línea (Sección 4.1 ), colapso de márgenes
profesionalmente. Sección 3 analiza las adaptaciones y (sección 4.2 ), y flotando
2
Verificación de que las páginas web tengan un diseño accesible PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU.
2. Fondo Figura 2. Los principales subsistemas de la formalización del diseño de páginas web de
VizAssert. Cada componente se describe brevemente en la Sección 2 . Muchos detalles,
Esta sección describe el algoritmo de renderizado del navegador W3C [ 54 ], que
como el manejo de color de VizAssert, las consultas de medios y los límites de ancho y
convierte HTML y CSS en un árbol de cuadros anotados con colores, tamaños y
alto, están ocultos en esta imagen, que muestra solo los componentes de más alto nivel.
posiciones. La formalización de VizAssert de un subconjunto de este algoritmo
Los componentes fuera del área sombreada se formalizan nuevamente en este trabajo.
de renderizado se basa y amplía significativamente el de Cassius [ 39 ]. Las
extensiones más destacadas se describen en la Sección 4 .
ciertos elementos y luego establece los valores de varios propiedades anchura valor y el ancho de su caja contenedor.
en esos elementos. El siguiente archivo CSS contiene dos reglas: • Reducir para ajustar los anchos se utilizan en su lugar para cajas cuyo
Representación El navegador combina HTML y CSS para producir una representación: una árbol • Márgenes a veces colapso, permitiendo que los márgenes verticales adyacentes de las cajas
de caja que contiene todos los elementos visuales de la página. El navegador utiliza el parámetros se superpongan, siguiendo las reglas discutidas en la Sección 4.2 .
de representación,
incluyendo la altura y el ancho de la ventana del navegador y el tamaño de fuente • Despeje se determina para elementos cuya claro la propiedad está establecida.
preferido del usuario, como entradas para este proceso de renderizado. Numerosos El espacio libre mueve esos elementos para que no tengan una caja flotante
subsistemas del navegador interactúan para representar HTML y CSS (Figura 2 ): junto a ellos.
• Diseño flotante permite que los elementos se muevan a la derecha o la
• Selectores se hacen coincidir con los elementos para encontrar los valores especificados para
izquierda de su padre y que el texto los envuelva Sección 4.3 describe este
3
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU. P. Panchekha, AT Geller, MD Ernst, Z. Tatlock y S. Kamil
• afirmación • :: = ∀ segundo 1,. . . ∈ B: • cond • afirmaciones que no pudimos formalizar debido a estas limitaciones. (1) Dado que los
solucionadores SMT solo pueden razonar de manera eficiente lineal aritmética real, las
• cond • :: = • cond • ∧ • cond • | ¬ • cond • | • cond • ∨ • cond •
multiplicaciones deben involucrar una constante. (2) La lógica visual permite solo consultas
| • real • = • real • | • real • <• real • | • real •> • real •
cuantificadas universalmente, ya que corresponden a consultas sin cuantificadores para el
| • caja • = • caja • | • caja •. tipo = • tipo • | • caja •. espacio en blanco
solucionador SMT. (3) Los solucionadores de SMT no pueden razonar sobre propiedades
• real • :: = R | • real • + • real • | • real • - • real • | R × • real • recursivas, por lo que la lógica visual proporciona la antepasado función, que representa el
| • caja •.• dir • | • color •. r | • color •. g | • color •. segundo antepasado más cercano de una caja que satisface una expresión condicional en una
variable (escrito ł? ž). Si ningún antepasado satisface el antepasado condición, la casilla
• color • :: = transparente | rgb • real •, • real •, • real •)
nula se
| • caja •. fg | • caja •. bg | γ ( • caja •. fg) | γ ( • caja •. bg)
• caja • :: = segundo yo | raíz | nulo | • caja •. antepasado( • cond * •) convertido. Por ejemplo, ł segundo. ancestro (?. bg, transparente) .bg ž
| • caja •. padre | • caja •. primer hijo | • caja •. último niño se refiere al color de fondo del antepasado más cercano de segundo
• dir • :: = arriba | derecha | abajo | izquierda segundo. antepasado( C) = segundo Si C[?/ segundo] más segundo. padre.ancestro C)
Figura 3. Lógica visual, un lenguaje para describir formalmente propiedades de diseño visual. Todos
Evaluar una afirmación de lógica visual en una representación concreta de una
los cuantificadores están por encima del conjunto segundo de cajas en un renderizado.
GUI es sencillo. Buscar en el conjunto infinito de todas las representaciones
posibles un contraejemplo de la aserción es más desafiante (ver Sección 4 ).
Una vez que se conoce el tamaño y la posición de cada cuadro (así como los 3.2 Lógica visual para la Web
colores y otras propiedades diversas), la página web se puede dibujar en la La lógica visual formaliza las propiedades de los diseños visuales para cualquier
pantalla. plataforma que estructura interfaces gráficas como un árbol, como HTML y CSS, Swing
[ 19 ], Cacao [ 3 ] o Android [ 42 ]. Adaptar la lógica visual a una de estas plataformas
3 Lógica visual implica agregar construcciones específicas de la plataforma a la lógica visual. Dado
La lógica visual expresa aseveraciones de accesibilidad y usabilidad en términos que este documento se centra en la accesibilidad de las páginas web, se especializa
formales e inequívocos. Esta es la entrada a VizAssert. en la lógica visual para la plataforma web agregando soporte para selectores y el
modelo de caja CSS.
La mayoría de las construcciones de lógica visual son sencillas (y se describen con más
Por ejemplo, ł segundo ∈ $ ( h1, h2) ž se evalúa como verdadero si segundo es la casilla de un
detalle en el Apéndice UNA ). Algunas construcciones específicas de dominio incluyen:
título de primer o segundo nivel. Las adaptaciones de la lógica visual a otras plataformas
podrían agregar conceptos análogos, como el acceso a los nombres de los componentes de
• Las afirmaciones se cuantifican universalmente en casillas ł segundo yo ž. Swing, Cocoa viewID s, o
• ł • caja •. tipo = • tipo • ž marca el tipo de caja, que android: id s en Android.
define el tipo de contenido que contiene la caja.
• ł • caja •. espacio en blanco § determina si un cuadro de texto contiene solo Modelo de caja La lógica visual para la web admite referencias a la posición del
espacios en blanco o también contiene otro texto. contenido, el relleno, el borde y los bordes de los márgenes de un cuadro, con el borde
• El l • caja •.• dir • ž constructo expresa la posición de los bordes de la caja (y del borde como predeterminado.
La lógica visual toma varias decisiones de diseño para permitir un razonamiento segundo 2. margen superior] ž se evalúa como verdadero si segundo 1 y segundo 2 Los bordes de los
eficiente con un solucionador SMT. No encontramos ninguno márgenes están alineados en la parte superior.
4
Verificación de que las páginas web tengan un diseño accesible PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU.
fg fg
Línea
Se deben superar dos grandes desafíos para traducir las pautas informales en altura
de base común y encontrando los ascensos máximos por encima y por debajo de la línea
Identificación de elementos relevantes Usuarios que son parcial o de base, incluido el espacio en blanco por encima y por debajo del texto llamado inicial.
Totalmente ciego a menudo navega por la web utilizando un lector de pantalla. El contenido
destinado exclusivamente a dichos usuarios a menudo se coloca fuera de la pantalla, donde los
usuarios videntes no lo verán. La afirmación # 4, "los elementos para los usuarios de lectores de
Usamos la altura del texto para establecer la importancia visual en el
pantalla están fuera de la pantalla" requiere que estos elementos permanezcan fuera de la pantalla.
páginas de evaluación: importancia_visual ( b): = b. altura. Seleccione-
Los encabezados se hacen usando es_descendiente:
∀ segundo ∈ B: for_screenreader ( b) = ⇒ ¬ en la pantalla( segundo) in_header ( b): = b. tipo = texto ∧ ¬ segundo. espacio en blanco ∧
segundo. tipo = texto ∧ es_descendiente ( b, #S) para determinar todas las representaciones posibles de una página web, dado su código
fuente (CSS y HTML). Esta formalización se basa en trabajos anteriores y contiene
dónde S nombra un servicio social. los is_descendant La función es una variante de antepasado: muchos avances para respaldar páginas web realistas (consulte la Sección 7.1 ). Esta
sección describe un aspecto central de estos avances: una nueva aplicación de reducciones
de finitización. Una reducción de finitización reduce el razonamiento sobre un conjunto
es_descendiente ( b, S): = b. antepasado(? ∈ $ ( S)), nulo
de tamaño arbitrario a un razonamiento equivalente sobre una estructura de datos finita.
VizAssert utiliza reducciones de finitización para formalizar el cálculo de la altura de la
Concretar conceptos de diseño Los diseñadores web utilizan visual
línea, el colapso de márgenes y el diseño flotante.
detalles, como el tamaño o el espaciado, para sugerir a los usuarios videntes qué contenido de
la página es más o menos importante. Los usuarios que navegan por la web con un lector de
pantalla en su lugar leen las etiquetas de encabezado jerárquico h1 ś h6, donde números más
pequeños describen contenido más importante. Sin embargo, los desarrolladores de páginas
4.1 Alturas de línea
web pueden cambiar la apariencia de estas etiquetas, haciendo que los usuarios de lectores de
En el texto en inglés, las letras están alineadas verticalmente a base.
pantalla y los usuarios videntes perciban una jerarquía diferente de importancia en el contenido
En la web, una línea de texto puede mezclar texto de diferentes fuentes y tamaños, y
de la página. La afirmación # 6, “Los títulos deben formar una jerarquía visual”, verifica que no
también imágenes y bloque en línea cajas. Los diseñadores web también pueden
ocurra tal uso indebido.
controlar el tamaño del espacio entre líneas sucesivas de texto con el altura de la línea Propiedad
CSS. 3
5
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU. P. Panchekha, AT Geller, MD Ernst, Z. Tatlock y S. Kamil
texto e imágenes en esa línea a una línea de base común y dejando un espacio en
blanco, llamado líder, arriba y abajo del texto (Figura 4 ). 4 La descripción anterior de la
altura de la línea no es susceptible de razonamiento mecánico. Primero, introduce
cuantificadores anidados al razonar sobre el espacio de posibles alturas de línea. En
segundo lugar, describe el conjunto de todos los objetos en una línea, un conjunto
demasiado complejo para un razonamiento mecánico eficiente. VizAssert utiliza una
descripción más eficaz de las alturas de las líneas.
Dado que cada objeto de la línea debe estar alineado con la línea de base, la altura de la línea
Figura 5. Los márgenes verticales adyacentes colapsan y esta figura visualiza dos
debe ser la más alta que un objeto se eleve por encima de la línea de base más lo más profundo
posibilidades. Cada posibilidad muestra varios recuadros y sus márgenes. Los
que un objeto caiga por debajo de ella (más el interlineado). VizAssert calcula lo más alto que un
cuadros de altura cero están representados por líneas horizontales. Cada flecha
objeto se eleva por encima de la línea de base con un máximo de ejecución (y de manera similar,
representa un margen (todo positivo) y tiene el mismo color que el cuadro que lo
para lo más profundo que un objeto cae por debajo de la línea de base):
genera. Cuando un margen determina la ubicación de un cuadro, se dibuja un
círculo a su alrededor. La figura de la izquierda muestra cómo los cuadros de
above_b • aseline b): = altura cero afectan el colapso de los márgenes; tenga en cuenta que el margen
1 inferior azul no se mide desde la parte inferior de ese cuadro porque ese margen
• se colapsa con el margen superior del cuadro. La figura de la derecha muestra el
• above_baseline
max • ascenso( b) + 2 líder( segundo)anterior) Si segundo. prev, null
( segundo.
margen de un cuadro secundario (en negro) colapsando con el margen de su
• above_baseline ( segundo. último) Si segundo. último, nulo
• padre (naranja) a pesar de ser el segundo hermano del padre (el primer hermano,
El primer argumento tomax es el tamaño del cuadro actual (por encima de la línea de en azul, tiene una altura cero; se ha agregado espacio a su alrededor para mayor
base); los otros pasan el above_baseline valor de izquierda a derecha a lo largo de la línea claridad).
y de los niños a los padres, incorporando así todos los recuadros de la línea. Por lo tanto,
el simétrico below_baseline.
Márgenes positivos y negativos El navegador que representa al-
4.2 Colapso del margen goritmo considera los márgenes positivos y negativos por separado, por lo que VizAssert divide
un niño puede colapsar con el de su padre y que los márgenes superior e inferior de los
niños que colapsan con él, y cualquier margen positivo de sus hermanos anteriores
colapso de márgenes, el conjunto de márgenes que colapsan juntos puede ser bastante
superior e inferior positivos y negativos.
grande.
Primeros hijos de altura cero Cuando el margen superior de un padre
El estándar CSS 2.1 describe el colapso de los márgenes al describir las
colapsa con su primer hijo, y el primer hijo tiene altura cero, sus márgenes
condiciones bajo las cuales colapsan un par de márgenes. Cualquier “componente
colapsan con el margen superior de su siguiente hermano. Esto requiere
conectado” de los márgenes se colapsa, y el tamaño total del margen se calcula
propagar información de ese próximo hermano a ese primer hijo. Esto
sumando los márgenes más positivos y negativos de ese grupo. Razonar sobre un
requiere adicional monte ↑ y +
gran conjunto de márgenes, y mucho menos un conjunto definido por un criterio de
monte
- ↑ valores: monte ↑ es
+ igual a monte para cajas+ con una altura distinta de cero, y es igual
accesibilidad de gráficos, estaría más allá de las capacidades de un solucionador SMT
a la del siguiente hermano monte ↑ para cajas con altura cero. +
moderno. Por lo tanto, VizAssert utiliza una reducción de finitización que reemplaza el
conjunto de márgenes colapsados por una descripción finita. VizAssert rastrea, en
lugar del conjunto de márgenes contraídos, un máximo acumulado de márgenes Despeje Algunas cajas cuyo claro propiedad está configurada y que tienen una caja
vistos hasta ahora e información adicional sobre esos márgenes. Sin embargo, flotante cercana tienen despeje. Una peculiaridad de las reglas de colapso de
hacerlo para los márgenes que colapsan es más complejo que la reducción de márgenes declara que si un cuadro sin altura tiene espacio libre, sus márgenes, y
finitización análoga para la altura de la línea, porque debe enfrentar tres problemas cualquier otro con el que colapse, no colapsarán con el margen inferior de su padre.
5 Esta descripción elides muchos detalles; en algunos casos, otras casillas pueden entrometerse en el margen de En total, la reducción de finitización por colapso de márgenes reduce el conjunto de
una casilla. Apéndice C.2 reproduce la especificación del estándar de colapso de márgenes. márgenes que colapsan a seis valores reales ( mt +,
monte -, mb +, mb -, monte ↑, monte
+↑ -) y el booleano ¿megabyte?.
6
Verificación de que las páginas web tengan un diseño accesible PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU.
Zona de exclusión. Estas zonas de exclusión tienen un mínimo formas canónicas cuyo C3
tamaño compacto los convierte en una opción atractiva para representar diseños
flotantes. VizAssert limita el tamaño de las formas canónicas, lo que permite que un
solucionador SMT las use para calcular las posiciones de las cajas flotantes. Limitar el Figura 6. Un cuadro flotante a la izquierda se coloca en la posición más alta, más a la
tamaño de las formas canónicas es correcto: siempre que VizAssert se agrega a una izquierda fuera de un Zona de exclusión. Aquí, los cuadros azules etiquetados como łAž son
forma canónica, prueba si se acierta el límite; si es así, VizAssert vuelve a ejecutar la elementos secundarios flotantes a la izquierda de su padre, cuyos bordes izquierdo y derecho
verificación con un límite mayor. Limitar el tamaño de los formularios canónicos también se muestran. La zona de exclusión resultante son todos los puntos arriba (ya la izquierda de)
es completo, ya que ningún formulario canónico puede ser mayor que el número de la línea punteada verde, que se utiliza para determinar la ubicación del cuadro naranja
cuadros flotantes en una página. etiquetado como łBž. Formalmente, la zona de exclusión sería un triple
pag. y < y ∨ ( pag. x < ℓ. X ∧ pag. y < ℓ. y) ∨ ( pag. x> r. X ∧ pag. y < r. y)
El estándar CSS describe las posiciones de los cuadros flotantes con nueve reglas:
siete propiedades que la posición debe satisfacer y dos criterios de optimización que Figura 6 muestra la zona de exclusión utilizada para diseñar un cuadro flotante en una página
seleccionan entre múltiples opciones. Para el razonamiento automatizado, estas reglas web.
deben traducirse en fórmulas lógicas sobre las que un solucionador SMT pueda razonar de Dada la zona de exclusión, es posible calcular la posición de una caja flotante
manera eficiente. El desafío es doble: primero, las reglas describen las relaciones que usando el ancho de la caja w su bloque contenedor pag, y la posición y ∗ la caja
deben cumplirse para todos los pares de cajas flotantes, lo que genera demasiadas tendría si estuviera diseñada con un diseño de flujo de bloque. Dada esta
limitaciones para resolverlas de manera eficiente; y en segundo lugar, la codificación de información, la caja se coloca de manera que el borde superior del margen esté en o
los criterios de optimización introduce cuantificadores, lo que mueve las restricciones más por debajo y ∗, sus esquinas superiores no están en la zona de exclusión y sus
allá de las capacidades de los solucionadores SMT actuales. Debido a estos problemas, el esquinas superiores están dentro del bloque contenedor (con excepciones para cajas
trabajo anterior [ 39 ] solo permitía usos restringidos del diseño flotante. Por el contrario, más anchas que su bloque contenedor o de ancho negativo). Esto conduce a una
VizAssert admite la semántica completa del diseño flotante utilizando una formalización codificación SMT eficiente. Por ejemplo, la siguiente fórmula restringe y para
novedosa de diseño flotante basada en la estructura de datos de la zona de exclusión. garantizar que ambas esquinas superiores no estén en la zona de exclusión cuando
la caja tiene un ancho positivo pero no es más ancho que el bloque que lo contiene.
• Bordes superior e inferior de cajas flotantes anteriores; La fórmula anterior es una propiedad que y posición debe tener. Para
• Bordes derechos de los cuadros flotantes a la izquierda anteriores; y determinar el hormigón y posición, VizAssert utiliza el hecho de que el y puesto
• Bordes izquierdos de los cuadros flotantes a la derecha anteriores. debe ser miembro de Y ∪ { y ∗} y
7
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU. P. Panchekha, AT Geller, MD Ernst, Z. Tatlock y S. Kamil
simplemente los prueba en orden creciente, para satisfacer las reglas de CSS 2.1 que son 4.3.4 Implementación mediante triples
criterios de optimización. Del mismo modo, el X posición
VizAssert requiere una codificación SMT eficiente de zonas de exclusión, incluidas
debe (para un flotador izquierdo) ser miembro de { X l | ( X yo y l) ∈ L} ∪ operaciones eficientes para encontrar la posición correcta de una caja flotante y
{ pag. izquierda [contenido]}.
agregar una caja flotante a una zona de exclusión.
• entre zonas de exclusión ( Y ′, L ′, R ′) equivalente a ( Y, L, R), VizAssert usa zonas de exclusión canónicas, Y es un conjunto singleton que se puede
la forma canónica minimiza | Y ′ | + | L ′ | + | R ′ |. almacenar directamente. Cuando se agrega un nuevo flotador a una zona de exclusión, Y se
actualiza al máximo del elemento actual de Y y el borde superior del nuevo flotador. Valores
Prueba. Construimos la forma canónica de manera explícita. Y ∗ está vacío si Y está vacío y
en L y R cuyo y La posición es menor que el borde superior del nuevo flotador también debe
de lo contrario es el conjunto singleton
eliminarse. Esto es fácil ya que L y R se almacenan en orden clasificado como triples ( y, ℓ, r).
Y ∗ = { max ( Y ∪ Y ′)}
Y ′ = { min { y yo y r} | ( X yo y l) ∈ L ∧ ( X r, y r) ∈ R ∧ X l> X r} La codificación de base triple reduce significativamente el tamaño de las fórmulas
SMT que definen las operaciones de la zona de exclusión y evita la codificación de
L ∗ es el máximo su ∧ bset de L tal que
operaciones ineficientes como la clasificación y la combinación. Como una modificación
( x, y) ∈ L ∗ =⇒ ( x, y) = (x ′, y ′) ∨ x> x ′ ∨ y> y ′ adicional a esta codificación, VizAssert permite "triples redundantes", que son dos triples
( X ′, y ′) ∈ L
cuyas y
los valores difieren y cuyo ( ℓ, r) Son identicos. Estos triples redundantes reducen el
R ∗ es análogo. La verificación de las tres propiedades dadas para las formas tamaño de la fórmula SMT para agregar un flotador a una zona de exclusión, a costa de
canónicas es mecánica. □ posiblemente requerir más registros. Hemos encontrado que, en general, los triples
redundantes dan como resultado fórmulas más pequeñas.
Ejemplo 4.1. Los cuadros flotantes se utilizan con frecuencia para diseñar elementos alineados
ℓ cajas flotantes a la izquierda, todas de tamaño 1 × 1. La zona de exclusión es 4.3.5 Validación de la implementación
({ 0}, {(1, 1), (2, 1),. . . ( ℓ, 1)}, ∅). Esta zona de exclusión es equivalente a la zona La codificación de las zonas de exclusión es compleja. Cada vez que se ejecuta
de exclusión canónica ({ 0}, {( ℓ, 1)}, ∅). VizAssert, demuestra que su implementación satisface las reglas del estándar
para el diseño flotante, para el k. Si la prueba falla, VizAssert conserva la solidez
Debido a que las zonas de exclusión tienen formas canónicas compactas, VizAssert puede
al terminar.
establecer un límite k en su tamaño; | L |, | R | ≤ 5 es suficiente para la mayoría de las páginas
Para cada una de las nueve reglas requeridas para el diseño flotante, la prueba
web. Limitando zonas de exclusión a k
considera la ubicación de una caja flotante arbitraria dada una zona de exclusión
elementos plantea el desafío de elegir un tamaño suficientemente grande
arbitraria. Cada regla está probada por inducción sobre la construcción de la zona de
k. VizAssert evita este problema afirmando, en cada adición de una casilla a
exclusión: está probada para una zona de exclusión vacía y se prueba que se conserva
una zona de exclusión, que el límite elegido es suficiente para representar la
cuando se agrega una caja flotante a una zona de exclusión. Cada caso de la prueba
zona de exclusión combinada. Si esta aserción falla para cualquier adición a
se lleva a cabo automáticamente por el solucionador de SMT, ya que la implementación
una zona de exclusión, la consulta se reintenta con más registros. Dado que es
del diseño flotante de VizAssert es una colección de fórmulas SMT.
suficiente utilizar tantos registros como haya cuadros flotantes en la página,
este proceso siempre terminará.
8
Verificación de que las páginas web tengan un diseño accesible PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU.
web. T + y F + son verdaderos y falsos positivos. La tasa general de falsos positivos fue
20 11 dropdown_offscreen 1
12 columnas_alineadas 1
10 15
13 texto_visible 1
14 button_large 1
10
5 Total 388 65 13 11
5
0 0
50 100150200250300350 100 200 300 400 500
páginas web que encajan dentro del subconjunto de CSS admitido por VizAssert
Cajas Reglas
(consulte la Sección 6 ). Cuando las plantillas contenían varias páginas (por ejemplo, una
página principal, una página de información y una página de producto), usábamos solo la
Figura 8. Histograma del número de casillas y reglas CSS para las 62
página principal. En conjunto, las 62 páginas web tienen un promedio de 78 elementos
páginas web.
(rango intercuartil 56ś93), 176 casillas (119ś222 IQR) y 128 reglas (89ś145 IQR). Ver
figura 8 para histogramas de estas estadísticas.
Realizamos una prueba en papel de que la prueba automatizada siempre tiene
éxito.
5.2 Resultados
5 Evaluación Ejecutamos VizAssert con un tiempo de espera de 30 minutos, utilizando una máquina con
VizAssert puede verificar que las páginas web realistas satisfagan las pautas de una CPU i7-4790K, 32 GB de memoria y Z3 versión 4.5.1. VizAssert verificó cada
accesibilidad y usabilidad. Para 62 páginas web, VizAssert determinó si satisface las 8 afirmación para todos los anchos de pantalla posibles de 1024 a 1920 píxeles, alturas de
afirmaciones de propósito general descritas en la Sección 3 . También ejecutamos pantalla de 800 a 1080 píxeles y tamaños de fuente predeterminados de 16 a 32 píxeles.
VizAssert en las 6 afirmaciones específicas de la página y sus páginas web En total, hubo 414 verificaciones exitosas, 64 verdaderos positivos, 13 falsos positivos y 11
correspondientes. tiempos de espera (consulte la Tabla 2 ).
6 Verificado en las 62 páginas, pero 13 verificaciones son vacías porque no se identificaron elementos del
Seleccionamos las páginas web descargando las 100 páginas web de FWT lector de pantalla.
9
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU. P. Panchekha, AT Geller, MD Ernst, Z. Tatlock y S. Kamil
75% 75%
50% 50%
25% 25%
50%
Como ejemplo de un falso positivo, VizAssert informa que el
superposición_texto la afirmación se viola en el artículos deportivos
página web para un 1872 × 800 navegador con 16px texto. El texto no se
25%
superpone (ver Figura 9 ), pero los cuadros de texto lo hacen porque reservan Aserción #
espacio para posibles descendientes. Si el texto fuera "Liquidación" en lugar de 1234
afirmación. VizAssert necesitaría razonar sobre la forma de las letras Tiempo (s; escala logarítmica)
la aserción que se verifica, en lugar de eso depende principalmente del tamaño de la página pruebas, seguimos a Cassius [ 39 ] al evaluar la semántica de VizAssert con estas
que se verifica, ya que las aserciones son pequeñas en relación con la formalización de la pruebas comparando la representación de VizAssert con la de Mozilla Firefox. 7
en tamaño, ya que diferentes aserciones pueden requerir un razonamiento más o menos Para garantizar la exactitud de la implementación de VizAssert de altura de
global. línea, colapso de margen y diseño flotante, usamos todas las pruebas de
conformidad W3C para las subsecciones 10.8 y
A pesar de las grandes instancias, VizAssert decidió la mayoría de las 10.8.1 (altura de línea), 8.3 y 8.3.1 (colapso de margen), y
afirmaciones rápidamente: solo 11 ejecuciones de 502 (2,2%) caducaron en 30 9.5, 9.5.1 y 9.5.2 (diseño flotante). Mesa 3 muestra resultados para VizAssert y Cassius.
minutos. Figura 10 traza el tiempo para decidir cada afirmación de propósito VizAssert pasa todas las pruebas excepto 91; las 91 pruebas fallidas utilizan
general. los grosor de línea la afirmación lleva mucho más tiempo que las demás. características no compatibles, principalmente alineación vertical, texto de derecha a
Creemos que esto se debe al hecho de que requiere razonar sobre la relación izquierda y SVG, por lo que están fuera del alcance de la semántica de VizAssert. Entre
entre tres recuadros diferentes: una línea de texto, su primer hijo y su último hijo. las pruebas aprobadas hay 5 para las que la representación de VizAssert es diferente
de la de Mozilla Firefox. Para verificar la exactitud de VizAssert en estos cuatro casos,
confirmamos manualmente que la representación de VizAssert coincide con la
representación de referencia; Se sabe que la representación de Firefox de estos casos
5.3 Pruebas de conformidad del W3C es incorrecta [ 59 ].
10
Verificación de que las páginas web tengan un diseño accesible PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU.
Tabla 3. Pruebas de conformidad para las siete secciones del estándar CSS 2.1 7 Trabajo relacionado
relevantes para la altura de línea, colapso de márgenes y diseño flotante, todas
VizAssert se basa en esfuerzos anteriores para estudiar formalmente visualizaciones e
formalizadas en VizAssert usando reducciones de finitización. Ninguna herramienta falló
interfaces gráficas. Se suma al conjunto de herramientas disponibles para los
en ninguna prueba, pero Cassius dejó a la abrumadora mayoría sin soporte porque su
desarrolladores web para validar y mejorar sus páginas web.
falta de reducciones de finitización hizo que el soporte para estas características fuera
imposible.
Sección Título VizAssert Cassius Pruebas La formalización de VizAssert del algoritmo de representación del navegador es
8.3 .0 Márgenes 318 218 343 significativamente más detallada y conforme que la del trabajo anterior, Cassius [ 39 ],
8.3.1 Márgenes colapsados 128 13 133 sobre el que se basa. (De los 13 subsistemas principales de la formalización de
9.5 .0 Flotadores 184 0 205 VizAssert en la Figura 2 , siete no están presentes en Cassius). Los avances de
9.5.1 Colocación de flotadores 24 0 27 VizAssert en este trabajo anterior incluyen no solo las reducciones de finitización
9.5.2 Despeje 60 0 69 utilizadas para formalizar la altura de la línea, el colapso de márgenes y el diseño
10,8 .0 Altura de la línea 7 1 10 flotante, sino también varias propiedades CSS adicionales no admitidas por Cassius y
10.8.1 Líder 194 39 219 un soporte de selector CSS más rico.
Total 915 271 1006
Ninguna de las páginas web realistas utilizadas para evaluar VizAssert encaja dentro
del pequeño subconjunto de CSS implementado por Cassius. Además de los subsistemas
VizAssert a una semántica sin reducciones de finitización: Cassius [ 39 ]. Debido a discutidos en la Sección 4 , estas páginas también hacen un uso frecuente del diseño
su falta de reducciones de finitización, Cassius no pudo manejar correctamente la posicionado (que permite colocar un cuadro en una posición fija de píxeles en la pantalla)
mayoría de las pruebas de conformidad. y espacio libre (que permite mover un cuadro verticalmente en respuesta
CSS es grande: decenas de estándares que suman miles de páginas impresas, Cassius estaba destinado a ser utilizado para sintetizar CSS a partir de ejemplos y,
VizAssert admite funciones para permitir la verificación de una fracción sustancial de por lo tanto, no puede asumir un archivo CSS concreto conocido. Sin embargo, al
páginas web, pero omite muchas funciones menos utilizadas. Algunas funciones, como verificar páginas web, se conoce el archivo CSS; esto permite que VizAssert calcule la
la alineación vertical y el texto de derecha a izquierda, solo requerirían tiempo de coincidencia de selectores y la conexión en cascada fuera del solucionador SMT, lo que
ingeniería para implementarlas. Otras características, como la formalización de diseños hace posible admitir selectores descendientes, secundarios y de pseudoclase que
tabulares, presentan importantes desafíos de investigación para comprender las Cassius, que hizo la selección y coincidencia en el solucionador SMT, no pudo admitir.
implementaciones del navegador, desarrollar reducciones de finitización y manejar La suposición de un archivo CSS conocido también permite que VizAssert maneje bien
varios casos extremos. el em y ex unidades, que se escalan con el tamaño de fuente y, por lo tanto, son
esenciales para escribir páginas web accesibles.
VizAssert actualmente maneja solo HTML y CSS. Sería un desafío interesante
analizar el código JavaScript que modifica las páginas web (probando la accesibilidad
sobre todas las posibles modificaciones a la página) o el código del lado del servidor que Otro trabajo ha formalizado subconjuntos de CSS utilizando gramáticas de atributos [ 32
genera las páginas (probando la accesibilidad sobre todos los posibles contenidos de la ]. Debido a las limitaciones de las gramáticas de atributos, estos esfuerzos cubren un
página). Se podrían agregar operadores temporales a la lógica visual para expresar las subconjunto más pequeño de CSS que VizAssert, aunque más grande que Cassius.
propiedades de accesibilidad para el código dinámico [ 21 ]. VizAssert podría combinarse Además, estas formalizaciones no están destinadas a la verificación, solo a la
con otras herramientas para lograrlo. Por ejemplo, para verificar el efecto de JavaScript interpretación y, por lo tanto, no pueden usarse para el razonamiento mecánico.
en una página web, se podría combinar una herramienta de análisis estático de
JavaScript con VizAssert, utilizando el análisis de JavaScript para calcular el conjunto de
posibles DOM de páginas web producidos y luego usar VizAssert para verificar sus
7.2 Razonamiento visual formalizado
propiedades de diseño.
El trabajo anterior ha abordado la idea del razonamiento mecánico sobre el diseño
visual desde muchas direcciones. Algunos autores han investigado la síntesis de
programas a partir de manipulaciones visuales [ 12 , 23 ]. Otros han desarrollado
VizAssert trata solo el algoritmo de renderizado del navegador para CSS. Se
lenguajes específicos de dominio para el diseño visual, como la gramática de gráficos
podrían aplicar técnicas similares a otros algoritmos de diseño, y se podrían usar
[ 62 ] usado por ggplot2 [ 61 ]. ConstraintSS [ 4 ] y trabajos similares sobre el diseño
reducciones de finitización similares a las utilizadas en VizAssert para formalizar
basado en restricciones [ 6 , 22 , 47 , 51 , 64 ] permiten especificar diseños mediante un
esos algoritmos. Por ejemplo, las zonas de exclusión pueden ser útiles para
conjunto de restricciones, sintetizando el diseño a partir de las restricciones. Si bien
formalizar la
todo este trabajo implica algunos
comportamiento de los flotantes en TEX, y la reducción de la altura de la línea podría aplicarse al
11
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU. P. Panchekha, AT Geller, MD Ernst, Z. Tatlock y S. Kamil
razonamiento formal sobre el diseño, ninguno de ellos proporciona una forma de afirmar o Remaui [ 36 ] utiliza heurística para sintetizar diseños de Android a partir de maquetas. Estas
verificar las propiedades de accesibilidad o usabilidad. herramientas tienen como objetivo simplificar la tarea de escribir o editar interfaces gráficas;
Otro trabajo ha explorado disciplinas de prueba para interfaces gráficas. Prueba de VizAssert se enfoca en verificar la accesibilidad y usabilidad de estas interfaces. Algunos
Sikuli [ 10 ] proporciona un lenguaje de secuencia de comandos simple para describir autores han desarrollado heurísticas para detectar diseños problemáticos [ 5 , 28 , 57 , 58 ].
secuencias de entradas de usuario y para comparar la interfaz píxel por píxel con una Otras herramientas intentan detectar diferencias entre navegadores web para las páginas
imagen fija. Otros autores [ 26 , 30 , 37 ] proporcionan técnicas para capturar dichos web, a menudo utilizando heurísticas para construir un modelo de alto nivel del
scripts a partir de las interacciones del usuario. Este trabajo ha demostrado la comportamiento de la página [ 11 , 31 , 44 ] Estas herramientas son útiles, pero cada una es
importancia de desarrollar las descripciones formales correctas del comportamiento específica de una propiedad de página web; VizAssert permite a los desarrolladores web
correcto de la interfaz gráfica [ 63 ]. VizAssert incorpora esta información al desarrollar escribir y verificar afirmaciones personalizadas.
una lógica expresiva en la que los desarrolladores pueden especificar sus propiedades
de accesibilidad y usabilidad.
8 Conclusión
Una de esas lógicas expresivas la proporciona Cornipickle [ 21 ], que prueba, para
Verificar las propiedades visuales de las interfaces de usuario es importante para garantizar que
parámetros de representación particulares y secuencia de acciones del usuario,
las aplicaciones sean utilizables y accesibles para todos los usuarios. Desarrollamos una lógica
propiedades temporales de páginas web interactivas. La lógica visual está inspirada
visual de afirmaciones y una herramienta automatizada disponible públicamente, VizAssert, que
en Cornipickle, pero está adaptada para permitir el razonamiento automatizado: la
verifica las afirmaciones visuales de las páginas web independientemente de las preferencias del
lógica visual agrega funciones para atravesar el árbol de cajas, agrega el antepasado función
usuario y el tamaño de la pantalla. La construcción de VizAssert contiene formalizaciones
para relacionar cajas distantes y limita la multiplicación a la aritmética lineal. Por otro
novedosas de múltiples aspectos del algoritmo de diseño CSS, incluida la altura de la línea, el
lado, dado que VizAssert no razona sobre JavaScript, omite los operadores
colapso de márgenes y el diseño flotante, implementados mediante reducciones de finitización
temporales de Cornipickle. Cornipickle no ofrece una herramienta de verificación
novedosas. Para un conjunto de páginas web del mundo real, VizAssert verificó las afirmaciones
como VizAssert para su lenguaje de afirmación; simplemente ofrece un método
de las pautas y estándares de usabilidad, encontrando 64 errores con solo 13 falsos positivos.
conveniente para probar afirmaciones en representaciones particulares.
Expresiones de gratitud
7.3 Accesibilidad
Agradecemos a Jen Mankoff y Anat Caspi por sus valiosos comentarios sobre los
Los principales marcos de GUI, incluidos Android, iOS, OS X y los múltiples marcos
primeros borradores. También agradecemos a nuestro pastor Ben Livshits y a los
de Windows, incluyen soporte para información de accesibilidad, que a menudo
revisores anónimos por sus valiosas sugerencias.
implica anotar widgets con roles o describir su contenido. Para la web, este marco es
ARIA [ 55 ], que define el significado de los atributos de accesibilidad, y las WCAG [ 53 ],
Este trabajo fue apoyado por una beca de Adobe y por donaciones de Adobe. Este
que documenta las mejores prácticas para su uso. Herramientas como WAVE [ 60 ],
material se basa en el trabajo respaldado por el Programa de becas de investigación
SOAtest [ 40 ] y 508checker [ 18 ] compruebe que el HTML de la página web cumple
para graduados de la National Science Foundation con el número de subvención
con las mejores prácticas de accesibilidad, como evitar el texto justificado y tener
DGE-1256082. Este material se basa en el trabajo respaldado por la Fuerza Aérea de
leyendas significativas. También se ha realizado trabajo académico sobre este
los Estados Unidos bajo el Contrato No. FA8750-15-C-0010, y en una investigación
problema. Cuervo [ 17 ] aplica "reglas de validación" para garantizar que los objetos
patrocinada por el Laboratorio de Investigación de la Fuerza Aérea y DARPA bajo el
Java que componen una interfaz gráfica contengan correctamente títulos, resúmenes
número de acuerdo FA8750-16-2-0032. El gobierno de los EE. UU. Está autorizado a
y mnemónicos válidos, pruebas importantes para interfaces accesibles. Chang, Yeh y
reproducir y distribuir reimpresiones con fines gubernamentales sin perjuicio de
Miller amplían las herramientas basadas en píxeles, como Sikuli, para acceder a la
cualquier mención de derechos de autor al respecto.
información de accesibilidad, como el contenido y la información de funciones para
los elementos de la interfaz de usuario [ 9 ]. Todas estas herramientas solo prueban el
diseño visual para parámetros de representación particulares, por lo que no brindan
garantías sólidas independientes de los parámetros de representación.
Referencias
[1] Apple. 2017. Pautas de interfaz humana. https://developer.apple.
com / ios / human-interface-Guidelines /
[2] Apple. 2017. Qué hacer y qué no hacer en el diseño de UI. https://developer.apple.com/
diseño / consejos /
12
Verificación de que las páginas web tengan un diseño accesible PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU.
Simposio ACM sobre software y tecnología de interfaz de usuario (UIST '14). [23] Thibaud Hottelier, Ras Bodik y Kimiko Ryokai. 2014. Programación
ACM, 117ś122. https://doi.org/10.1145/2642918.2647357 por manipulación para el diseño. En Actas del 27º Simposio anual de ACM sobre software
[6] Alan Borning, Richard Lin y Kim Marriott. 1997. Restricciones para y tecnología de interfaz de usuario (UIST'14). ACM, 231ś241. https://doi.org/10.1145/2642918.2647378
La web. En Actas de la Quinta Conferencia Internacional ACM sobre Multimedia
(MULTIMEDIA '97). ACM, 173ś182. https://doi.org/10. 1145 / 266180.266361 [24] Melody Ivory y Aline Chevalier. 2002. Un estudio de la web automatizada
Herramientas de evaluación del sitio. Reporte técnico. Universidad de Washington, Departamento de Ciencias
Tipografía, solo en línea. [25] Ranjitha Kumar, Jerry O. Talton, Salman Ahmad y Scott R. Klem-
[8] Lyndon Cerejo. 2011. Un enfoque del diseño web centrado en el usuario mer. 2011. Bricolage: Retargeting basado en ejemplos para diseño web. En
para dispositivos móviles. https://www.smashingmagazine.com/2011/05/ un-enfoque-centrado en Actas de la Conferencia SIGCHI sobre factores humanos en sistemas informáticos (CHI'11).
el usuario-al-diseño-web-para-dispositivos-móviles ACM, 2197ś2206. https://doi.org/10.1145/1978942. 1979262
[9] Tsung-Hsiang Chang, Tom Yeh y Rob Miller. 2011. Asociación de
Representación visual de interfaces de usuario con sus estructuras internas y metadatos. [26] Maurizio Leotta, Andrea Stocco, Filippo Ricca y Paolo Tonella. 2015.
En Actas del 24º Simposio anual de ACM sobre tecnología y software de interfaz de Generación automatizada de pruebas web visuales a partir de pruebas web basadas en DOM.
usuario (UIST '11). ACM, 245ś256. En Actas del 30º Simposio Anual ACM sobre Computación Aplicada (SAC '15). ACM, 775ś782.
https://doi.org/10.1145/2047196.2047228 https://doi.org/10.1145/2695664. 2695847
[10] Tsung-Hsiang Chang, TomYeh y Robert C. Miller. 2010. Pruebas de GUI
Usando visión artificial. En Actas de la Conferencia SIGCHI sobre factores humanos en [27] Hsiang-Sheng Liang, Kuan-Hung Kuo, Po-Wei Lee, Yu-Chien Chan,
sistemas informáticos (CHI '10). ACM, 1535 y 1544. https: Yu-Chin Lin y Mike Y. Chen. 2013. SeeSS: Ver lo que rompí ś Visualización del impacto del
//doi.org/10.1145/1753326.1753555 cambio de las hojas de estilo en cascada (CSS). En Actas del 26º Simposio anual de ACM
[11] SR Choudhary, MR Prasad y A. Orso. 2012. CrossCheck: Com- sobre tecnología y software de interfaz de usuario (UIST '13). ACM, 353ś356. https://doi.org/10.1145/2501988.
Combinando rastreo y diferenciación para detectar mejor las incompatibilidades entre 2502006
navegadores en aplicaciones web. En 2012 IEEE Quinta Conferencia Internacional sobre Pruebas,
Verificación y Validación de Software. 171ś180. [28] Sonal Mahajan, Abdulmajeed Alameer, Phil McMinn y William GJ
https://doi.org/10.1109/ICST.2012.97 Halfond. 2017. Reparación automatizada de problemas de diseño entre navegadores utilizando
[12] Ravi Chugh, Brian Hempel, Mitchell Spradlin y Jacob Albers. 2016. técnicas basadas en búsquedas. En Actas del 26 ° Simposio Internacional ACM SIGSOFT sobre
Manipulación programática y directa, por fin juntos. En Actas de la 37ª Conferencia ACM Análisis y Pruebas de Software (ISSTA 2017).
SIGPLAN sobre diseño e implementación de lenguajes de programación (PLDI '16). ACM, ACM, 249ś260. https://doi.org/10.1145/3092703.3092726
341ś354. https: //doi.org/10.1145/2908080.2908103 [29] Jennifer Mankoff, Holly Fait y Tu Tran. 2005. ¿Es su página web?
¿Accesible ?: Un estudio comparativo de métodos para evaluar la accesibilidad de las páginas
[13] Quema a David. 2012. Herramientas de prueba de Selenium 2: Guía para principiantes. Packt web para ciegos. En Actas de la Conferencia SIGCHI sobre factores humanos en sistemas
Publishing, Birmingham, Reino Unido. informáticos (CHI '05). ACM, 41ś50. https: //doi.org/10.1145/1054972.1054979
[14] Leonardo De Moura y Nikolaj Bjùrner. 2008. Z3: un SMT eficiente
Solucionador. En Actas de la Teoría y Práctica del Software, XIV Congreso Internacional [30] Atif Memon, Ishan Banerjee y Adithya Nagarajan. 2003. GUI Rip-
de Herramientas y Algoritmos para la Construcción y Análisis de Sistemas (TACAS'08 / ping: Ingeniería inversa de interfaces gráficas de usuario para pruebas. En Actas de la X
ETAPS'08). Springer-Verlag, 337ś340. Conferencia de Trabajo sobre Ingeniería Inversa (WCRE '03). Sociedad de Informática
http://dl.acm.org/citation.cfm?id=1792734.1792766 IEEE, 260ś. http://dl.acm.org/citation. cfm? id = 950792.951350
[15] Dieta. 2000. Ley básica de formación de una información avanzada
y Sociedad de Redes de Telecomunicaciones. http://japan.kantei.go.jp/ it / it_basiclaw / [31] A. Mesbah y MR Prasad. 2011. Compuerta automatizada entre navegadores
it_basiclaw.html pruebas de compatibilidad. En 2011 33ª Conferencia Internacional de Ingeniería de Software
[16] Comisión Europea. 2016. Directiva (UE) 2016/2102 de la Euro- (ICSE). 561ś570. https://doi.org/10.1145/1985793.1985870
pean Parlamento y el Consejo de 26 de octubre de 2016 sobre la accesibilidad de los sitios [32] Leo A. Meyerovich y Rastislav Bodik. 2010. Web rápida y paralela
diseño de página. En Actas de la XIX Conferencia Internacional sobre la World Wide Web
web y aplicaciones móviles de los organismos del sector público. http://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:
OJ.L_.2016.327.01.0001.01.ENG & toc = OJ: L: 2016: 327: TOC (WWW '10). ACM, 711ś720. https://doi.org/10.1145/
1772690.1772763
[17] Barry Feigenbaum y Michael Squillace. 2006. Accesibilidad Valida- [33] Red de desarrolladores de Mozilla. 2017. flotador. https://developer.mozilla.org/
ción con RAVEN. En Actas del Taller internacional de 2006 sobre calidad del software es-US / docs / Web / CSS / float
(WoSQ '06). ACM, 27ś32. https://doi.org/10.1145/ [34] Red de desarrolladores de Mozilla. 2017. Verificación de accesibilidad móvil
13
PLDI'18, 18 y 22 de junio de 2018, Filadelfia, PA, EE. UU. P. Panchekha, AT Geller, MD Ernst, Z. Tatlock y S. Kamil
[39] Pavel Panchekha y Emina Torlak. 2016. Razonamiento automatizado org / 10.1145 / 357299.357303
para el diseño de páginas web. En Actas de la Conferencia Internacional ACM SIGPLAN [52] Minh N. Vu y Susan Ryan. [Dakota del Norte]. 2017 Web-
2016 sobre Programación Orientada a Objetos, Sistemas, Lenguajes y Aplicaciones Site Resumen de la demanda de accesibilidad: Un año difícil para las empresas.
(OOPSLA 2016). ACM, 181ś194. https: //doi.org/10.1145/2983990.2984010 https://www.adatitleiii.com/2018/01/
2017-recapitulación-de-demanda-de-accesibilidad-del-sitio-web-un-año-difícil-para-las-empresas /
[40] Parasoft. 2017. Pruebas de interfaz de usuario web. https://www.parasoft.com/capability/ [53] W3C. 2008. Pautas de accesibilidad al contenido web 2.0. https: // www.
web-ui-testing / w3.org/TR/WCAG/
[41] Pearson. 2017. Haciendo accesible el aprendizaje electrónico. http: //wps.pearsoned. [54] W3C. 2011. Hojas de estilo en cascada Nivel 2 Revisión 1 (CSS 2.1) Especificación
software de interfaz de usuario (UIST '11). ACM, 393ś402. https://doi.org/10.1145/2047196.2047247 WPT / css / CSS2 / flotadores. https://wptdashboard.appspot.com/css/
CSS2 / flotadores
[46] Terry Sullivan y RebeccaMatson. 2000. Barreras de uso: usabilidad y [60] WebAIM. 2017. Herramienta de accesibilidad web WAVE. http: //wave.webaim.
Accesibilidad al contenido en los sitios más populares de la Web. En Actas de la Conferencia de org /
2000 sobre usabilidad universal (CUU '00). ACM, 139ś144. [61] Hadley Wickham. 2009. ggplot2: Gráficos elegantes para análisis de datos.
https://doi.org/10.1145/355460.355549 Springer-Verlag Nueva York, Nueva York, Nueva York, Estados Unidos. http: // ggplot2. org
[47] Ivan E. Sutherland. 1964. Cuaderno de bocetos, una empresa gráfica hombre-máquina
Sistema de comunicación. En Actas del Taller de Automatización de Diseño SHARE (DAC [62] Leland Wilkinson. 2005. La gramática de los gráficos (estadística y
'64). ACM, 6.329ś6.346. https://doi.org/10.1145/800265. 810742 Informática). Springer-Verlag New York, Inc., Secaucus, NJ, EE. UU.
[63] Qing Xie y Atif M. Memon. 2007. Designing and Comparing Au-
[48] Anthony T. 2012. Diseño amigable para los dedos: toque móvil ideal oráculos de prueba creados para aplicaciones de software basadas en GUI. ACM Trans. Softw. Ing.
tamaños de destino de pantalla. https://www.smashingmagazine.com/2012/02/ Methodol. 16, 1, artículo 4 (febrero de 2007), 38 páginas.
[49] Departamento de Justicia de los Estados Unidos. 2010. Aviso anticipado del Departamento de Justicia de la propuesta
[64] Brad Vander Zanden y Brad A. Myers. 1991. The Lapidary Graphical
Reglamentación, RIN 1190-AA61. https://www.ada.gov/anprm2010/web% Herramienta de diseño de interfaz. En Actas de la Conferencia SIGCHI sobre factores humanos
[50] DOJ de EE. UU. 2017. Kit de herramientas de mejores prácticas de la ADA para gobiernos estatales y locales
Ernments. https://www.ada.gov/pcatoolkit/chap5toolkit.htm
[51] Christopher J. van Wyk. 1982. Un lenguaje de alto nivel para especificar
Imágenes. ACM Trans. Grafico. 1, 2 (abril de 1982), 163ś182. https: // doi.
14