ES2966532T3 - Método y sistema para mejorar una interfaz de usuario para una aplicación web - Google Patents
Método y sistema para mejorar una interfaz de usuario para una aplicación web Download PDFInfo
- Publication number
- ES2966532T3 ES2966532T3 ES19887101T ES19887101T ES2966532T3 ES 2966532 T3 ES2966532 T3 ES 2966532T3 ES 19887101 T ES19887101 T ES 19887101T ES 19887101 T ES19887101 T ES 19887101T ES 2966532 T3 ES2966532 T3 ES 2966532T3
- Authority
- ES
- Spain
- Prior art keywords
- control
- test
- distance
- action
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3698—Environments for analysis, debugging or testing of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/487—Arrangements for providing information services, e.g. recorded voice services or time announcements
- H04M3/493—Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Quality & Reliability (AREA)
- Geometry (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Debugging And Monitoring (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
- Electrotherapy Devices (AREA)
- Paper (AREA)
- Stored Programmes (AREA)
- Telephonic Communication Services (AREA)
Abstract
Un sistema informático para probar una interfaz de usuario (UI) incluye un módulo de ejecución de pruebas y un módulo de análisis. El módulo de análisis está configurado para (i) analizar un estado de la UI, (ii) en respuesta a determinar que el estado satisface los criterios para un objetivo asociado con la UI, generar un indicador de éxito, y (iii) en respuesta a determinar que el estado no satisface los criterios, genera un conjunto de acciones. El módulo de ejecución de pruebas está configurado para, en respuesta a que la salida sea el conjunto de acciones: ejecutar una acción del conjunto de acciones; actualizar una distancia de prueba y complementar los datos de la prueba. El módulo de ejecución de pruebas está configurado además para (i) en respuesta a que la salida sea el indicador de éxito, almacenar la distancia de la prueba y los datos de la prueba en una colección de pruebas completadas y (ii) determinar el camino más corto hacia el objetivo en la interfaz de usuario. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Método y sistema para mejorar una interfaz de usuario para una aplicación web
Campo
La presente divulgación se refiere a un sistema informático y a un método para someter a prueba una interfaz de usuario (UI) para una aplicación web.
Antecedentes
Actualmente, entidades tales como empresas ofrecen a los clientes una variedad de métodos para acceder a información, por ejemplo, el estado de un pedido que realizó el cliente. El cliente puede llamar a la empresa para intentar obtener la información. Alternativamente, el cliente puede acceder a una página web asociada a la empresa para obtener la información. Es posible que el cliente necesite navegar por una interfaz de usuario (UI) de una aplicación para acceder a la información. Por ejemplo, es posible que el cliente necesite iniciar sesión en una aplicación web con un nombre de usuario y contraseña antes de poder acceder a la información. Es posible que muchos clientes no puedan navegar correctamente por la UI, por ejemplo, para iniciar sesión en la aplicación web y navegar a la pantalla pertinente y, por lo tanto, pueden optar por llamar a la empresa para obtener la información.
El documento US 2013/326427 parece divulgar un sistema para evaluar la eficacia de una interfaz de usuario (UI) que incluye un sistema informático para optimizar una estructura de árbol de decisiones, es decir, tener un número óptimo de hojas de hijos y nietos en el árbol. Si hay demasiados hijos, el árbol será demasiado “gordo” y los hijos necesitarán muchas hojas de nietos, lo que requerirá muchos menús en los que hacer clic.
El documento US20070106758 parece divulgar un sistema para determinar una medida cuantitativa de facilidad de uso cualitativa de páginas web relacionadas. Se aceptan páginas web que incluyen, cada una, al menos un hipervínculo que remite a, y señales próximas relacionadas con el contenido distal incluido en, otra página web. Se especifica un objetivo de información que identifica una página web de destino. Se forma una red de activación. Se construye un gráfico dirigido que incluye nodos correspondientes a las páginas web y arcos correspondientes a los hipervínculos. Se asigna una ponderación a cada arco para representar una probabilidad de recorrido del hipervínculo correspondiente basándose en la relación de palabras clave en el objetivo de información con las señales próximas incluidas en la página web a la que se remite. Como medida cuantitativa de facilidad de uso se evalúa un recorrido a través de la red de activación hasta el nodo correspondiente a la página web de destino.
Sumario
Un sistema informático para someter a prueba una interfaz de usuario (UI) para una aplicación web que comprende una página web, comprendiendo el sistema informático: un módulo de creación de prueba configurado para obtener parámetros de prueba, en el que los parámetros de prueba incluyen (i) una ubicación de dirección inicial en la que se puede acceder a la UI; (ii) criterios para un objetivo asociado con la UI, tal como texto de objetivo; y (iii) un número de pruebas permitidas; un módulo de ejecución de prueba configurado para (i) obtener un estado de la UI basándose en la ubicación de dirección inicial y (ii) establecer una posición actual a una ubicación predeterminada dentro de la UI; y un módulo de análisis configurado para: analizar un estado designado de la página web de la UI, en respuesta a determinar que el estado designado satisface los criterios para el objetivo, tal como identificar si el texto de objetivo está en la página web de la UI, emitir un indicador de éxito, y, en respuesta a determinar que el estado designado de la UI no satisface los criterios para el objetivo, determinar un conjunto de acciones posibles basándose en elementos de la UI dentro del estado designado y establecer la salida al conjunto de acciones posibles, para cada acción en el conjunto de acciones posibles, (i) determinar una probabilidad de que realizar la acción dé como resultado el objetivo y (ii) almacenar la probabilidad determinada en el conjunto de acciones posibles; y seleccionar la acción del conjunto de acciones posibles incluye seleccionar la acción del conjunto de acciones posibles basándose en probabilidades almacenadas en el conjunto de acciones posibles, en el que el módulo de ejecución de prueba está configurado para: proporcionar un estado de la UI al módulo de análisis y recibir la salida del módulo de análisis, en respuesta a que la salida recibida sea el conjunto de acciones posibles: seleccionar una acción del conjunto de acciones posibles, en el que la acción está asociada con un primer elemento de la UI, ejecutar la acción seleccionada, identificar un punto del primer elemento de la UI, actualizar una distancia de prueba basándose en (i) coordenadas del punto y (ii) coordenadas de la posición actual, establecer la posición actual al punto, en el que el punto es un punto más cercano del primer elemento de la UI a la posición actual; y actualizar la distancia de prueba incluye (i) determinar una distancia entre las coordenadas de la posición actual y las coordenadas del punto y (ii) añadir la distancia determinada a la distancia de prueba; y complementar datos de prueba con (i) la acción seleccionada y (ii) el conjunto de acciones posibles, incrementar un contador en respuesta a que la salida recibida sea el indicador de éxito, almacenar la distancia de prueba y los datos de prueba en una colección de pruebas completadas, y determinar la trayectoria más corta hasta el objetivo en la UI basándose en la colección de pruebas completadas, en el que determinar la trayectoria más corta incluye seleccionar, en respuesta a determinar que un valor del contador es mayor o igual al número de pruebas permitidas, una prueba completada de la colección de pruebas completadas con la distancia de prueba más corta.
Opcionalmente, el sistema informático de la invención comprende además: un módulo de red neuronal configurado para hacer funcionar una pluralidad de redes neuronales, en el que el módulo de análisis está configurado para usar selectivamente al menos una red neuronal de la pluralidad de redes neuronales para determinar la probabilidad de que realizar la acción dé como resultado el objetivo. Opcionalmente, la pluralidad de redes neuronales incluye al menos una de una red neuronal de memoria a corto plazo de larga duración y una red neuronal convolucional.
Opcionalmente, el sistema informático de la invención comprende además un módulo de entrenamiento configurado para, en respuesta a que la salida recibida sea el indicador de éxito: entrenar la pluralidad de redes neuronales usando los datos de prueba; determinar un rendimiento de la pluralidad de redes neuronales después del entrenamiento basándose en las probabilidades almacenadas en la colección de pruebas completadas; y, en respuesta a determinar que un valor del rendimiento de la pluralidad de redes neuronales después del entrenamiento es mayor que un valor predeterminado, establecer un estado de la pluralidad de redes neuronales a entrenadas.
Opcionalmente, el sistema informático de la invención comprende además: un módulo de Monte Carlo configurado para realizar una simulación de Monte Carlo para generar un valor aleatorio; y un módulo de reponderación configurado para: en respuesta a que el estado de la pluralidad de redes neuronales sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba basándose en una salida de al menos una red neuronal de la pluralidad de redes neuronales; y, en respuesta a que el estado de la pluralidad de redes neuronales no sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba con un valor aleatorio generado por el módulo de Monte Carlo.
La presente invención también proporciona un método para someter a prueba una interfaz de usuario (UI) para una aplicación web que comprende una página web, comprendiendo el método: obtener parámetros de prueba, en el que los parámetros de prueba incluyen (i) una ubicación de dirección inicial en la que se puede acceder a la UI; (ii) criterios para un objetivo asociado con la UI, tal como texto de objetivo; y (iii) un número de pruebas permitidas; obtener un estado de la UI basándose en la ubicación de dirección inicial; establecer una posición actual a una ubicación predeterminada dentro de la UI; analizar un estado designado de la página web de la UI; en respuesta a determinar que el estado designado satisface los criterios para el objetivo, tales como identificar si el texto de objetivo está en la página web de la UI, establecer una salida a un indicador de éxito; en respuesta a determinar que el estado designado no satisface los criterios para el objetivo, (i) determinar un conjunto de acciones posibles basándose en elementos de la UI dentro del estado designado y (ii) establecer la salida al conjunto de acciones posibles; para cada acción en el conjunto de acciones posibles, (i) determinar una probabilidad de que realizar la acción dé como resultado el objetivo y (ii) almacenar la probabilidad determinada en el conjunto de acciones posibles; y seleccionar la acción del conjunto de acciones posibles incluye seleccionar la acción del conjunto de acciones posibles basándose en probabilidades almacenadas en el conjunto de acciones posibles, en respuesta a que la salida sea el conjunto de acciones posibles: seleccionar una acción del conjunto de acciones posibles, en el que la acción está asociada con un primer elemento de la UI, ejecutar la acción seleccionada, identificar un punto del primer elemento de la UI, actualizar una distancia de prueba basándose en (i) coordenadas del punto y (ii) coordenadas de la posición actual, establecer la posición actual al punto, en el que el punto es el punto más cercano del primer elemento de la UI a la posición actual; y actualizar la distancia de prueba incluye (i) determinar una distancia entre las coordenadas de la posición actual y las coordenadas del punto y (ii) añadir la distancia determinada a la distancia de prueba; y complementar los datos de prueba con (i) la acción seleccionada y (ii) el conjunto de acciones posibles; incrementar un contador en respuesta a que la salida sea el indicador de éxito, almacenar la distancia de prueba y los datos de prueba en una colección de pruebas completadas; y determinar la trayectoria más corta hasta el objetivo en la UI basándose en la colección de pruebas completadas, en el que determinar la trayectoria más corta incluye seleccionar, en respuesta a determinar que un valor del contador es mayor o igual al número de pruebas permitidas, una prueba completada de la colección de pruebas completadas con la distancia de prueba más corta.
Opcionalmente, el método de la invención comprende además, en respuesta a que la salida sea el indicador de éxito: entrenar una pluralidad de redes neuronales usando los datos de prueba; determinar un rendimiento de la pluralidad de redes neuronales después del entrenamiento basándose en las probabilidades almacenadas en la colección de pruebas completadas; y, en respuesta a determinar que un valor del rendimiento de la pluralidad de redes neuronales después del entrenamiento es mayor que un valor predeterminado, establecer un estado de la pluralidad de redes neuronales a entrenadas.
Opcionalmente, el método de la invención comprende además: en respuesta a que el estado de la pluralidad de redes neuronales sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba basándose en una salida de al menos una red neuronal de la pluralidad de redes neuronales; y, en respuesta a que el estado de la pluralidad de redes neuronales no sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba con un valor aleatorio.
La presente invención también proporciona un medio no transitorio legible por ordenador que almacena instrucciones ejecutables por procesador para realizar uno cualquiera de los métodos de la invención.
En aún otras características, el módulo de distancia está configurado para, para cada distancia generada aleatoriamente, generar un valor de adecuación basándose al menos en el recuento de predicción exitosa emitido por el módulo de predicción. El sistema informático incluye un módulo de análisis configurado para realizar un análisis de agrupación de los valores de adecuación generados.
En características adicionales, el módulo de distancia está configurado para, para cada página de la UI, en respuesta a que el análisis de agrupación de los valores de adecuación generados identifique una única agrupación, establecer la distancia generada aleatoriamente asociada con la página con el valor de adecuación más alto como la distancia de refuerzo para la página.
Se divulga un método para mejorar una interfaz de usuario (UI). El método incluye obtener (i) información de trayectoria que indica la trayectoria más corta hasta un objetivo en la UI y (ii) un conjunto de experimentos de interacción de usuario asociados con la búsqueda del objetivo. Cada experimento en el conjunto de experimentos de interacción de usuario incluye datos de seguimiento de usuario, la información de trayectoria incluye una pluralidad de etapas, y cada etapa de la pluralidad de etapas está asociada con una página de la U i. El método también incluye, para cada página de la UI, determinar una distancia de refuerzo para la página basándose en el conjunto de experimentos de interacción de usuario y, para cada etapa de la pluralidad de etapas, determinar un recuento de veces que los datos de seguimiento de usuario del conjunto de experimentos de interacción de usuario indican una desviación con respecto a la etapa. La determinación se basa en la distancia de refuerzo determinada para la página de la Ul asociada con la etapa. El método también incluye determinar si la etapa requiere refuerzo basándose en el recuento y, en respuesta a determinar que la etapa requiere refuerzo, generar un refuerzo para la etapa. Generar el refuerzo incluye al menos uno de generar una instrucción para una acción asociada con la etapa y alterar un elemento de la UI asociado con la etapa.
En otras características, determinar la distancia de refuerzo para una página incluye determinar al menos una distancia entre datos de seguimiento de usuario del conjunto de experimentos de interacción de usuario y la trayectoria más corta.
En aún otras características, determinar la distancia de refuerzo para una página incluye determinar (i) una distancia de éxito media para la página basándose en los datos de seguimiento de usuario de un primer subconjunto de experimentos de interacción de usuario que alcanzaron con éxito el objetivo y (ii) una distancia de fallo media de la página basándose en los datos de seguimiento de usuario de un segundo subconjunto de experimentos de interacción de usuario.
En características adicionales, determinar la distancia de refuerzo para una página incluye generar al menos una distancia aleatoria que es menor que la distancia de éxito media para la página y mayor que la distancia de fallo media para la página. El método también incluye, para cada muestra en datos de seguimiento de usuario de un experimento en el conjunto de experimentos de interacción de usuario, predecir un resultado del experimento basándose en (i) una distancia aleatoria generada para la página asociada con la muestra, (ii) coordenadas de la muestra, y (iii) coordenadas de un punto a lo largo de la trayectoria más corta y comparar el resultado predicho con un resultado almacenado del experimento.
En otras características, predecir el resultado del experimento incluye calcular una distancia entre las coordenadas de la muestra y las coordenadas del punto a lo largo de la trayectoria más corta y determinar el resultado predicho basándose en una comparación de la distancia determinada y la distancia aleatoria para la página asociada con la muestra. Comparar el resultado predicho con el resultado almacenado incluye, en respuesta a que el resultado predicho coincida con el resultado almacenado, incrementar un recuento de predicción exitosa.
En aún otras características, determinar la distancia de refuerzo para una página incluye, para cada distancia generada aleatoriamente, generar un valor de adecuación basándose al menos en el recuento de predicción exitosa asociado con la distancia generada aleatoriamente y realizar un análisis de agrupación de los valores de adecuación generados.
En características adicionales, determinar la distancia de refuerzo para una página incluye, en respuesta a que el análisis de agrupación de los valores de adecuación generados identifique una única agrupación, establecer la distancia generada aleatoriamente asociada con la página con el valor de adecuación más alto como la distancia de refuerzo para la página.
Se divulga un medio no transitorio legible por ordenador que almacena instrucciones ejecutables por procesador. Las instrucciones incluyen obtener (i) información de trayectoria que indica la trayectoria más corta hasta un objetivo en una interfaz de usuario (UI) y (ii) un conjunto de experimentos de interacción de usuario asociados con la búsqueda del objetivo. Cada experimento en el conjunto de experimentos de interacción de usuario incluye datos de seguimiento de usuario, la información de trayectoria incluye una pluralidad de etapas, y cada etapa de la pluralidad de etapas está asociada con una página de la UI. Las instrucciones también incluyen, para cada página de la UI, determinar una distancia de refuerzo para la página basándose en el conjunto de experimentos de interacción de usuario y para cada etapa de la pluralidad de etapas, determinar un recuento de veces que los datos de seguimiento de usuario del conjunto de experimentos de interacción de usuario indican una desviación con respecto a la etapa. La determinación se basa en la distancia de refuerzo determinada para la página de la UI asociada con la etapa. Las instrucciones incluyen además, para cada etapa de la pluralidad de etapas, determinar si la etapa requiere refuerzo basándose en el recuento y, en respuesta a determinar que la etapa requiere refuerzo, generar un refuerzo para la etapa. Generar el refuerzo incluye al menos uno de generar una instrucción para una acción asociada con la etapa y alterar un elemento de la UI asociado con la etapa.
En otras características, determinar la distancia de refuerzo para una página incluye determinar (i) una distancia de éxito media para la página basándose en los datos de seguimiento de usuario de un primer subconjunto de experimentos de interacción de usuario que alcanzaron con éxito el objetivo y (ii) una distancia de fallo media de la página basándose en los datos de seguimiento de usuario de un segundo subconjunto de experimentos de interacción de usuario.
En aún otras características, determinar la distancia de refuerzo para una página incluye generar al menos una distancia aleatoria que es menor que la distancia de éxito media para la página y mayor que la distancia de fallo media para la página. Las instrucciones también incluyen, para cada muestra en datos de seguimiento de usuario de un experimento en el conjunto de experimentos de interacción de usuario, predecir un resultado del experimento basándose en (i) una distancia aleatoria generada para la página asociada con la muestra, (ii) coordenadas de la muestra, y (iii) coordenadas de un punto a lo largo de la trayectoria más corta. Las instrucciones incluyen además comparar el resultado predicho con un resultado almacenado del experimento.
En características adicionales, predecir el resultado del experimento incluye (i) calcular una distancia entre las coordenadas de la muestra y las coordenadas del punto a lo largo de la trayectoria más corta y (ii) determinar el resultado predicho basándose en una comparación de la distancia determinada y la distancia aleatoria para la página asociada con la muestra. Comparar el resultado predicho con el resultado almacenado incluye, en respuesta a que el resultado predicho coincida con el resultado almacenado, incrementar un recuento de predicción exitosa.
En otras características, determinar la distancia de refuerzo para una página incluye, para cada distancia generada aleatoriamente, (i) generar un valor de adecuación basándose al menos en el recuento de predicción exitosa asociado con la distancia generada aleatoriamente y (ii) realizar un análisis de agrupación de los valores de adecuación generados.
En aún otras características, determinar la distancia de refuerzo para una página incluye, en respuesta a que el análisis de agrupación de los valores de adecuación generados identifique una única agrupación, establecer la distancia generada aleatoriamente asociada con la página con el valor de adecuación más alto como la distancia de refuerzo para la página.
Se divulga un sistema para integrar un sistema telefónico y un sistema informático. El sistema incluye una plataforma de respuesta de voz interactiva (IVR) configurada para obtener un comando legible por ordenador basándose en una entrada de audio de un usuario y, en respuesta a la obtención del comando legible por ordenador, (i) determinar una aplicación web que corresponde al comando legible por ordenador, (ii) determinar un objetivo en la aplicación web asociada con el comando legible por ordenador, y (iii) obtener información que indica la trayectoria de interfaz de usuario más corta hasta el objetivo en la aplicación web. El sistema también incluye un cliente de navegación conjunta configurado para recibir un modelo de objetos de documento (DOM) de un estado actual de la aplicación web desde una sesión de navegación conjunta para un servidor web que aloja la aplicación web. La plataforma de IVR está configurada para, basándose en el DOM del cliente de navegación conjunta, determinar la siguiente acción de interfaz de usuario a lo largo de la trayectoria de interfaz de usuario más corta y generar una instrucción de voz para el usuario basándose en la siguiente acción de interfaz de usuario. El cliente de navegación conjunta está configurado para recibir un DOM actualizado en respuesta a la ejecución por parte del usuario de la siguiente acción de interfaz de usuario.
En otras características, la plataforma de IVR está configurada para conectarse al cliente de navegación conjunta mediante un navegador sin encabezado.
En aún otras características, obtener la entrada de audio del usuario incluye obtener la entrada de audio a través de un teléfono del usuario.
En otras características, la plataforma de IVR está configurada para obtener un identificador de sesión de navegación conjunta del usuario, transmitir el identificador de sesión de navegación conjunta a la sesión de navegación conjunta, y recibir el DOM del estado actual en respuesta a la transmisión del identificador de sesión de navegación conjunta.
En características adicionales, obtener el identificador de sesión de navegación conjunta incluye generar una instrucción de voz para el usuario que solicita al usuario que (i) inicie la sesión de navegación conjunta y (ii) proporcione el identificador de sesión de navegación conjunta a la plataforma de IVR.
En otras características, la plataforma de IVR está configurada para, en respuesta al vencimiento de un período de tiempo predeterminado posterior a la generación de la instrucción de voz durante el cual no se recibe ningún DOM actualizado, (i) determinar un refuerzo basándose en la siguiente acción de interfaz de usuario a lo largo de la trayectoria de interfaz de usuario más corta y (ii) generar una instrucción de refuerzo de audio para el usuario basándose en el refuerzo determinado.
En características adicionales, la instrucción de refuerzo de audio especifica una ubicación de un elemento de la interfaz de usuario asociado con la siguiente acción de interfaz de usuario.
Se divulga un método para integrar un sistema telefónico y un sistema informático. El método incluye: obtener un comando legible por ordenador basándose en una entrada de audio de un usuario; determinar una aplicación web que corresponde al comando legible por ordenador; determinar un objetivo en la aplicación web asociada con el comando legible por ordenador; obtener información que indica la trayectoria de interfaz de usuario más corta hasta el objetivo en la aplicación web; recibir un modelo de objetos de documento (DOM) de un estado actual de la aplicación web desde una sesión de navegación conjunta para un servidor web que aloja la aplicación web; y determinar una siguiente acción de interfaz de usuario a lo largo de la trayectoria de interfaz de usuario más corta. El método también incluye generar una instrucción de voz para el usuario basándose en la siguiente acción de interfaz de usuario y recibir un DOM actualizado en respuesta a la ejecución por parte del usuario de la siguiente acción de interfaz de usuario.
En otras características, recibir el DOM del estado actual de la aplicación web incluye acceder a un cliente de navegación conjunta a través de un navegador sin encabezado.
En aún otras características, obtener la entrada de audio del usuario incluye obtener la entrada de audio a través de un teléfono del usuario.
En otras características, el método incluye obtener un identificador de sesión de navegación conjunta del usuario; transmitir el identificador de sesión de navegación conjunta a la sesión de navegación conjunta; y recibir el DOM del estado actual incluye recibir el DOM en respuesta a la transmisión del identificador de sesión de navegación conjunta.
En características adicionales, obtener el identificador de sesión de navegación conjunta incluye generar una instrucción de voz para el usuario que solicita al usuario que (i) inicie la sesión de navegación conjunta y (ii) proporcione el identificador de sesión de navegación conjunta a través de una PSTN.
En otras características, el método incluye, en respuesta al vencimiento de un período de tiempo predeterminado posterior a la generación de la instrucción de voz durante el cual no se recibe ningún DOM actualizado, (i) determinar un refuerzo basándose en la siguiente acción de interfaz de usuario a lo largo de la trayectoria de interfaz de usuario más corta y (ii) generar una instrucción de refuerzo de audio para el usuario basándose en el refuerzo determinado.
En características adicionales, la instrucción de refuerzo de audio especifica una ubicación de un elemento de la interfaz de usuario asociado con la siguiente acción de interfaz de usuario.
Se divulga un medio no transitorio legible por ordenador que almacena instrucciones ejecutables por procesador. Las instrucciones incluyen: obtener un comando legible por ordenador basándose en una entrada de audio de un usuario; determinar una aplicación web que corresponde al comando legible por ordenador; determinar un objetivo en la aplicación web asociada con el comando legible por ordenador; obtener información que indica la trayectoria de interfaz de usuario más corta hasta el objetivo en la aplicación web; recibir un modelo de objetos de documento (DOM) de un estado actual de la aplicación web desde una sesión de navegación conjunta para un servidor web que aloja la aplicación web; y determinar una siguiente acción de interfaz de usuario a lo largo de la trayectoria de interfaz de usuario más corta. Las instrucciones también incluyen generar una instrucción de voz para el usuario basándose en la siguiente acción de interfaz de usuario y recibir un DOM actualizado en respuesta a la ejecución por parte del usuario de la siguiente acción de interfaz de usuario.
En otras características, obtener la entrada de audio del usuario incluye obtener la entrada de audio a través de un teléfono del usuario.
En aún otras características, las instrucciones incluyen: obtener un identificador de sesión de navegación conjunta del usuario; transmitir el identificador de sesión de navegación conjunta a la sesión de navegación conjunta; y recibir el DOM del estado actual incluye recibir el DOM en respuesta a la transmisión del identificador de sesión de navegación conjunta.
En características adicionales, obtener el identificador de sesión de navegación conjunta incluye generar una instrucción de voz para el usuario que solicita al usuario que (i) inicie la sesión de navegación conjunta y (ii) proporcione el identificador de sesión de navegación conjunta a través de una PSTN.
En otras características, las instrucciones incluyen, en respuesta al vencimiento de un período de tiempo predeterminado posterior a la generación de la instrucción de voz durante el cual no se recibe ningún DOM actualizado, (i) determinar un refuerzo basándose en la siguiente acción de interfaz de usuario a lo largo de la trayectoria de interfaz de usuario más corta y (ii) generar una instrucción de refuerzo de audio para el usuario basándose en el refuerzo determinado.
En características adicionales, la instrucción de refuerzo de audio especifica una ubicación de un elemento de la interfaz de usuario asociado con la siguiente acción de interfaz de usuario.
Otras áreas de aplicabilidad de la presente divulgación resultarán evidentes a partir de la descripción detallada, las reivindicaciones, y los dibujos. La descripción detallada y los ejemplos específicos tienen como objetivo únicamente fines ilustrativos y no se pretende que limiten el alcance de la divulgación.
Breve descripción de los dibujos
La presente divulgación se entenderá más completamente a partir de la descripción detallada y los dibujos adjuntos. La figura 1 es un diagrama de bloques funcional de un sistema ejemplificativo para someter a prueba una interfaz de usuario (UI).
La figura 2 es un diagrama de bloques funcional de una red neuronal de memoria a corto plazo de larga duración ejemplificativa.
La figura 3 es un diagrama de bloques funcional de una red neuronal de enlace ejemplificativa.
La figura 4 es un diagrama de bloques funcional de una red neuronal de envío ejemplificativa.
La figura 5A es un diagrama de bloques funcional de una red neuronal de elección de datos ejemplificativa.
La figura 5B es un diagrama de bloques funcional de una red neuronal de coincidencia de datos ejemplificativa. La figura 6 es un diagrama de bloques funcional de una red neuronal de ponderación de acción ejemplificativa. Las figuras 7A y 7B son un diagrama de flujo que representa un método ejemplificativo para determinar la trayectoria más corta hasta un objetivo dado en una UI.
Las figuras 8A-8C son un diagrama de flujo que representa un método ejemplificativo para analizar un estado de una UI.
Las figuras 9A y 9B son un diagrama de flujo que representa un método ejemplificativo para entrenar redes neuronales usando pruebas de la trayectoria más corta completadas.
Las figuras 10A-10C son un diagrama de flujo que representa un método ejemplificativo para reponderar acciones en estados almacenados.
La figura 11 es un diagrama de flujo que representa un método ejemplificativo para construir una nueva sesión de UI basándose en una acción de la trayectoria más corta seleccionada.
Las figuras 12A-12H son representaciones gráficas para determinar la trayectoria más corta hasta un objetivo en una UI ejemplificativa específica.
La figura 13 es un diagrama de flujo que representa un método ejemplificativo para mejorar una UI basándose en experimentos de seguimiento ocular.
La figura 14 es un diagrama de flujo que representa un método ejemplificativo para determinar una distancia de refuerzo para cada URL para una UI basada en web.
La figura 15 es un diagrama de flujo que representa un método ejemplificativo para determinar distancias entre experimentos de seguimiento ocular y puntos a lo largo de la trayectoria más corta cargada.
La figura 16 es un diagrama de flujo que representa un método ejemplificativo para determinar las distancias entre datos de seguimiento y puntos a lo largo de la trayectoria más corta cargada para una página de la UI.
La figura 17 es un diagrama de flujo que representa un método ejemplificativo para determinar la distancia de éxito media para cada URL en un conjunto de experimentos de seguimiento ocular basándose en datos almacenados en los experimentos de seguimiento ocular.
La figura 18 es un diagrama de flujo que representa un método ejemplificativo para determinar la distancia de fallo media para cada URL en un conjunto de experimentos de seguimiento ocular basándose en datos almacenados en los experimentos de seguimiento ocular.
La figura 19 es un diagrama de flujo que representa un método ejemplificativo para comparar predicciones de resultados de experimentos de seguimiento ocular con resultados previamente almacenados.
La figura 20 es un diagrama de flujo que representa un método ejemplificativo para comparar una predicción de un resultado de un experimento de seguimiento ocular aéreo con resultados previamente almacenados.
La figura 21 es un diagrama de flujo que representa un método ejemplificativo para determinar las etapas de la trayectoria más corta hasta un objetivo en una UI que puede requerir refuerzo.
La figura 22 es un diagrama de flujo que representa un método ejemplificativo para determinar las etapas de la trayectoria más corta asociada con una página de un experimento de seguimiento ocular que puede necesitar refuerzo. Las figuras 23A-23E son representaciones visuales de un procedimiento ejemplificativo de generación de un vector de seguimiento ocular y un vector de la trayectoria más corta para una página de una UI.
La figura 24 es un diagrama de bloques funcional de un sistema de migración de clientes ejemplificativo.
La figura 25 es un diagrama de secuencia que representa un inicio ejemplificativo de una sesión de navegación conjunta por parte del sistema de migración de clientes.
La figura 26 es un diagrama de secuencia que representa una sesión de navegación conjunta ejemplificativa del sistema de migración de clientes.
Las figuras 27A-27D son representaciones de una sesión de navegación conjunta ejemplificativa de un sistema de migración de clientes, de acuerdo con los principios de la presente divulgación.
La figura 28 es un diagrama de bloques funcional de un sistema ejemplificativo que incluye una farmacia de alto volumen.
La figura 29 es un diagrama de bloques funcional de un dispositivo de cumplimiento de farmacia ejemplificativo, que puede implementarse dentro del sistema de la figura 28.
La figura 30 es un diagrama de bloques funcional de un dispositivo de procesamiento de pedidos ejemplificativo, que puede implementarse dentro del sistema de la figura 28.
En los dibujos, los números de referencia se pueden reutilizar para identificar elementos similares y/o idénticos.Descripción detallada
INTRODUCCIÓN
Una interfaz de usuario (UI) proporciona acceso a información y puede permitir que se realicen diversas acciones. Sin embargo, es posible que un usuario necesite realizar ciertas acciones en la UI antes de que el usuario pueda acceder a información de interés. Por ejemplo, es posible que un usuario necesite iniciar sesión primero con un nombre de usuario y contraseña. Luego, antes de poder acceder a la información, es posible que necesite navegar a una determinada pantalla de la UI y seleccionar un botón particular. Es posible que muchos usuarios no puedan navegar de manera eficiente por la UI para obtener la información.
En diversas implementaciones, se puede determinar automáticamente la trayectoria más corta hasta un objetivo en una UI, tal como iniciar sesión y obtener el estado de un pedido. La longitud de la trayectoria se puede medir usando una variedad de métricas, tales como el número de entradas requeridas, el movimiento total del ratón, el número de pulsaciones de teclas o eventos de clic del ratón, etc. En varias implementaciones, la longitud de la trayectoria puede evaluarse basándose en la distancia euclidiana total del recorrido del ratón, es decir, la suma de los movimientos lineales hasta cada elemento de la UI donde se necesita interacción (por ejemplo, desde un punto de partida hasta un cuadro de texto, desde el cuadro de texto hasta un botón de envío, y desde la ubicación del botón de envío hasta un enlace que debe seleccionarse).
La trayectoria más corta se puede usar para mejorar la UI. Por ejemplo, datos empíricos (tales como el movimiento de los ojos o del ratón) medidos mientras los usuarios interactúan con la UI pueden usarse para determinar cuándo es más probable que los usuarios de la UI se desvíen de la trayectoria más corta determinada. La UI se puede mejorar basándose en las desviaciones determinadas, por ejemplo, se pueden cambiar elementos de la UI asociados con las desviaciones, se pueden generar instrucciones relacionadas con la trayectoria más corta, y/o se pueden resaltar elementos de la UI para ayudar a los usuarios a navegar con éxito por la UI.
Estas mejoras de la UI también se pueden usar por un sistema de migración de clientes para guiar automáticamente a un usuario que ha llamado a una plataforma de respuesta de voz interactiva (IVR) (tal como un número de atención al cliente) a un estado particular de una UI. Por ejemplo, el sistema de migración de clientes puede ayudar al usuario a iniciar sesión exitosamente en una aplicación web y navegar hasta un estado del sitio web donde el usuario puede obtener la información deseada. El sistema de migración de clientes puede indicarle al usuario que acceda a una página web y luego generar instrucciones de audio y visuales basándose en las mejoras de la UI para guiar al usuario a realizar acciones en la UI que corresponden a la trayectoria más corta determinada hasta el objetivo.
La figura 1 es un diagrama de bloques de una implementación ejemplificativa de un sistema 100 para someter a prueba una UI. El sistema 100 incluye un dispositivo 110 de prueba y mejora de la UI, un dispositivo 112 de almacenamiento, y un dispositivo 114 de operario. El dispositivo 110 de prueba y mejora de la UI puede incluir un módulo 120 de trayectoria más corta, un módulo 122 de mejora de la UI, un módulo 124 de inteligencia artificial (AI), y un navegador 126 sin encabezado. El dispositivo 112 de almacenamiento puede incluir almacenamiento no volátil en comunicación con el módulo 120 de trayectoria más corta y el módulo 122 de mejora de la UI.
El módulo 120 de trayectoria más corta determina la trayectoria más corta hasta un objetivo en una UI. Por ejemplo, el módulo 120 de trayectoria más corta puede determinar el menor número de etapas para iniciar sesión en una aplicación web. Una etapa consiste en una acción realizada en una página de la UI, por ejemplo, hacer clic en un enlace o introducir datos en un campo de entrada de texto. La ejecución de una etapa puede cambiar el estado de la UI, es decir, pasar a una pantalla o estado diferente de la UI, o cambiar el estado o la pantalla actual para que haya información u opciones adicionales o diferentes disponibles.
El módulo 120 de trayectoria más corta incluye un módulo 128 de creación de prueba y un módulo 130 de ejecución de prueba. El módulo 130 de ejecución de prueba incluye un módulo 132 de análisis, un módulo 134 de entrenamiento, un módulo 136 de reponderación, y un módulo 138 de creación de sesión.
El módulo 124 de AI incluye un módulo 142 de Monte Carlo, un módulo 144 de red neuronal, y un módulo 146 de reconocimiento de lenguaje natural. El módulo 142 de Monte Carlo realiza una simulación de Monte Carlo para generar valores pseudoaleatorios. El módulo 144 de red neuronal puede incluir una red 148 neuronal de enlace, una red 150 neuronal de envío, una red 152 neuronal de coincidencia de datos, una red 154 neuronal de elección de datos, y una red 156 neuronal de ponderación de acción, cada una de las cuales se describe con más detalle a continuación.
La red 148 neuronal de enlace, la red 150 neuronal de envío, la red 154 neuronal de elección de datos, y la red 156 neuronal de ponderación de acción generan, cada una, una probabilidad de que una entrada dada dé como resultado alcanzar el objetivo. Por ejemplo, la red 152 neuronal de coincidencia de datos genera una probabilidad de que un dato coincida con un campo de entrada de datos, tal como la probabilidad de que una cadena de texto particular coincida con un campo de entrada de texto. El módulo 146 de reconocimiento de lenguaje natural analiza sintácticamente una entrada de texto y determina si la entrada contiene una cadena de texto especificada. Por ejemplo, el módulo 146 de reconocimiento de lenguaje natural puede usarse para determinar si un estado de la UI incluye una cadena de texto específico.
El navegador 126 sin encabezado es un navegador web que no tiene una interfaz gráfica de usuario. El navegador 126 sin encabezado puede incluir una interfaz de línea de comandos usada para cargar e interactuar con páginas web, tales como páginas web de una aplicación web alojada en un servidor 158 web.
El módulo 128 de creación de prueba obtiene parámetros de prueba y genera datos de configuración de pruebas. Los parámetros de prueba pueden incluir una dirección inicial de la UI, un objetivo, un número máximo de etapas permitidas hasta el objetivo, el número de pruebas que van a realizarse, y datos variables. Los datos variables pueden incluir cadenas de texto, tales como nombres de usuario o contraseñas, u opciones de menú que pueden introducirse en campos de entrada de datos de la UI. En algunas implementaciones, el módulo 128 de creación de prueba puede recibir los parámetros de prueba desde el dispositivo 114 de operario. En otras implementaciones, el módulo 128 de creación de prueba puede recuperar parámetros de prueba previamente almacenados desde el dispositivo 112 de almacenamiento. El módulo 128 de creación de prueba proporciona los datos de configuración de pruebas al módulo 130 de ejecución de prueba. El módulo 128 de creación de prueba también puede almacenar los datos de configuración de pruebas en el dispositivo 112 de almacenamiento.
El módulo 130 de ejecución de prueba usa los datos de configuración de pruebas generados por el módulo 128 de creación de prueba para realizar pruebas en la UI para determinar la trayectoria más corta en la UI hasta el objetivo especificado. En respuesta a recibir los datos de configuración de prueba desde el módulo 128 de creación de prueba, el módulo 130 de ejecución de prueba inicia la primera prueba de la UI. Por ejemplo, el módulo 130 de ejecución de prueba indica al navegador 126 sin encabezado que cargue la página de inicio de la UI. El navegador 126 sin encabezado carga la página web solicitada y proporciona un modelo de objetos de documento (DOM) de la página web cargada al módulo 130 de ejecución de prueba.
El módulo 130 de ejecución de prueba establece una posición del cursor a una posición predeterminada (tal como el centro) de la UI, marca cada variable en la configuración de prueba como no usada, y establece el estado de las redes neuronales en el módulo 144 de red neuronal a no entrenadas. El módulo 130 de ejecución de prueba usa el módulo 132 de análisis para analizar el estado actual de la UI, en otras palabras, la página web actualmente cargada. El módulo 132 de análisis puede usar el DOM recibido del navegador 126 sin encabezado para realizar el análisis.
El módulo 132 de análisis determina primero si el estado actual de la UI satisface los criterios del objetivo, por ejemplo, que la página web cargada incluya el texto de objetivo. El módulo 132 de análisis puede usar el módulo 146 de reconocimiento de lenguaje natural para analizar sintácticamente el texto de la página web cargada para determinar si incluye el texto de objetivo. En respuesta a localizar el texto de objetivo, el módulo 132 de análisis determina que la prueba actual es un éxito. Se considera que la prueba actual es un fallo cuando se ha alcanzado un número máximo de etapas sin que se encuentre el texto de objetivo. En respuesta a determinar que la prueba actual no es ni un éxito ni un fallo, el módulo 132 de análisis determina si el estado actual de la UI incluye elementos interactivos, por ejemplo, enlaces, campos de entrada de datos, y elementos que envían datos, que pueden ejecutarse para cambiar el estado de la UI.
El módulo 132 de análisis asigna una probabilidad a una acción asociada con cada elemento interactivo ubicado en la página cargada. La probabilidad representa la probabilidad de que la ejecución de la acción dé como resultado alcanzar el objetivo. Si las redes neuronales en el módulo 144 de red neuronal están entrenadas, el módulo 132 de análisis usa las redes neuronales en el módulo 144 de red neuronal para determinar la probabilidad. El módulo 132 de análisis también asigna una ponderación a cada tipo de acción: enlace, campo de entrada, y envío. Si las redes neuronales en el módulo 144 de red neuronal están entrenadas, el módulo 132 de análisis usa las redes neuronales en el módulo 144 de red neuronal para determinar la ponderación para cada tipo de acción. El módulo 132 de análisis determina entonces una probabilidad ponderada para cada acción. El módulo 132 de análisis proporciona cada acción identificada y la probabilidad ponderada asociada al módulo 130 de ejecución de prueba. Si las redes neuronales en el módulo 144 de red neuronal aún no están entrenadas, el módulo 132 de análisis usa el módulo 142 de Monte Carlo para asignar valores aleatorios para las probabilidades de éxito de la acción y el éxito del tipo de acción.
El módulo 130 de ejecución de prueba selecciona la acción con la mayor probabilidad entre las acciones proporcionadas por el módulo 132 de análisis. El módulo 130 de ejecución de prueba determina la distancia entre la posición actual y el punto más cercano del elemento interactivo asociado con la acción seleccionada. El módulo 130 de ejecución de prueba actualiza una distancia total de la prueba actual basándose en la distancia calculada y luego almacena tanto la distancia calculada como la distancia total. El módulo 130 de ejecución de prueba indica al navegador sin encabezado que realice la acción seleccionada. La acción ejecutada se denomina etapa y la pantalla de la UI que resulta de la ejecución de la acción es un estado. En otras palabras, realizar una etapa da como resultado la transición de la UI de un primer estado a un segundo estado o da como resultado la transformación del primer estado.
El módulo 130 de ejecución de prueba concluye que la prueba actual es un fallo (es decir, no es la trayectoria más corta) si la distancia total de la prueba actual es mayor que una trayectoria previamente identificada hasta el objetivo. De lo contrario, el módulo 130 de ejecución de prueba continúa con la prueba y analiza el estado actual de la UI, como se describió anteriormente.
En respuesta a determinar que la prueba actual es un éxito o un fallo, el módulo 130 de ejecución de prueba registra los resultados de la prueba completada. En respuesta a determinar que la prueba actual fue un éxito, el módulo 130 de ejecución de prueba almacena las etapas de la prueba actual como la trayectoria más corta hasta el objetivo. El módulo 130 de ejecución de prueba determina entonces si el número de pruebas completadas ha alcanzado el número máximo de pruebas. Si es así, el módulo 130 de ejecución de prueba emite la trayectoria más corta encontrada hasta el objetivo.
Si se necesitan más pruebas, el módulo 130 de ejecución de prueba comienza una nueva prueba. Si la prueba recién completada fue un éxito, el módulo 134 de entrenamiento entrena (o, después del primer entrenamiento, vuelve a entrenar o complementa el entrenamiento de) las redes neuronales en el módulo 144 de red neuronal. El módulo de entrenamiento usa los resultados de la prueba completada con éxito para generar datos de entrenamiento. El módulo 134 de entrenamiento guarda las redes neuronales en el módulo 144 de red neuronal y el estado asociado de las redes neuronales, tal como entrenadas o no entrenadas. En algunas implementaciones, el módulo 134 de entrenamiento puede almacenar tanto las redes neuronales como su estado asociado en el dispositivo 112 de almacenamiento.
Luego, el módulo 134 de entrenamiento vuelve a entrenar la red 148 neuronal de enlace, la red 150 neuronal de envío, la red 152 neuronal de coincidencia de datos, la red 154 neuronal de elección de datos, y la red 156 neuronal de ponderación de acción usando los datos de entrenamiento generados. Una vez que las redes neuronales se han vuelto a entrenar, el módulo 134 de entrenamiento determina el rendimiento de las redes que se han vuelto a entrenar. Por ejemplo, el módulo 134 de entrenamiento establece el estado de las redes neuronales en el módulo 144 de red neuronal a entrenado. Luego, el módulo 134 de entrenamiento usa el módulo 132 de análisis para analizar cada etapa de cada prueba completada y produce una lista de acciones posibles y probabilidades asociadas. Dado que el estado de las redes neuronales en el módulo 144 de red neuronal está establecido a entrenado, las probabilidades producidas por el módulo 132 de análisis se basarán en las redes recién entrenadas. Para cada acción en cada etapa analizada, el módulo 134 de entrenamiento calcula un cambio entre la probabilidad previamente determinada y la probabilidad recién determinada.
El módulo 134 de entrenamiento determina el rendimiento de las redes basándose en los cambios calculados. En respuesta a determinar que el nuevo entrenamiento no mejoró el rendimiento de las redes neuronales en el módulo 144 de red neuronal, el módulo de entrenamiento restaura las redes neuronales en el módulo 144 de red neuronal a su estado anterior. Por ejemplo, el módulo de entrenamiento puede recuperar las redes almacenadas y el estado asociado del dispositivo 112 de almacenamiento.
A continuación, el módulo 136 de reponderación recalcula probabilidades, tales como para cada acción en cada estado de la última prueba completada. El módulo 136 de reponderación calcula las probabilidades usando las redes neuronales en el módulo 144 de red neuronal, si están entrenadas, o actualiza las probabilidades con nuevos valores aleatorios. El uso de las redes neuronales en el módulo 144 de red neuronal dará como resultado probabilidades que coinciden más estrechamente con la probabilidad real de que cada acción dé como resultado el objetivo.
El módulo 130 de ejecución de prueba selecciona una acción entre las acciones reponderadas. El módulo 130 de ejecución de prueba basa la selección en la probabilidad reponderada de cada acción y la distancia total requerida para alcanzar la acción desde el estado inicial de la UI.
El módulo 138 de creación de sesión determina las etapas requeridas para alcanzar la acción seleccionada por el módulo 130 de ejecución de prueba desde el URL inicial de la UI. El módulo 138 de creación de sesión ejecuta las etapas determinadas requeridas para alcanzar la acción y el navegador 126 sin encabezado devuelve el DOM de la página web resultante. El módulo 132 de análisis analiza entonces el estado actual de la UI, como se describió anteriormente. El módulo 130 de ejecución de prueba continúa ejecutando nuevas pruebas hasta que se ha alcanzado el número máximo de pruebas.
El módulo 122 de mejora de la UI genera instrucciones y otras ayudas que pueden usarse para guiar a un usuario hasta un objetivo en una UI basándose en la trayectoria más corta hasta el objetivo y experimentos de seguimiento ocular que corresponden a la UI. Los experimentos de seguimiento ocular son una forma de pruebas de facilidad de uso de la UI que incluyen datos de seguimiento basados o bien en la mirada de un usuario o bien en el movimiento de un cursor de ratón por parte del usuario mientras el usuario navega por una UI para alcanzar un objetivo. Los experimentos de seguimiento ocular se usan para identificar dónde es probable que un usuario de la UI se desvíe con respecto a la trayectoria más corta hasta el objetivo. El módulo 122 de mejora de la UI determina una distancia para cada página de la UI que representa una desviación con respecto a la trayectoria más corta que puede requerir refuerzo de una etapa de la trayectoria más corta para ayudar al usuario a alcanzar el objetivo.
El módulo 122 de mejora de la UI incluye un módulo 160 de refuerzo y un módulo 162 de generación de instrucciones. El módulo 160 de refuerzo determina qué etapas de la trayectoria más corta pueden necesitar refuerzo. El módulo 160 de refuerzo basa la determinación en los experimentos de seguimiento ocular asociados con la UI. El módulo 122 de mejora de la UI determina qué etapas de la trayectoria más corta requieren refuerzo basándose en la determinación del módulo 160 de refuerzo y un porcentaje de refuerzo recibido.
El módulo 160 de refuerzo incluye un módulo 164 de distancia y un módulo 166 de análisis de etapas. El módulo 164 de distancia determina una distancia de refuerzo para cada URL de la UI basándose en los experimentos de seguimiento ocular asociados con el objetivo y la trayectoria más corta hasta el objetivo. La distancia de refuerzo es una distancia desde una etapa de la trayectoria más corta (por ejemplo, la distancia entre un cursor y un punto en la trayectoria más corta) que indica que la etapa puede requerir refuerzo.
El módulo 164 de distancia incluye un módulo 168 de predicción y un módulo 170 de análisis de agrupación. El módulo 164 de distancia obtiene parámetros para determinar la distancia, tales como valores de ponderación para un algoritmo de adecuación y un número permitido de evoluciones. Una evolución consiste en la selección de distancias de refuerzo aleatorias para cada URL de la UI que luego se usan por el módulo 168 de predicción para predecir el éxito o el fallo de un único experimento de seguimiento ocular. El número de evoluciones permitidas representa el número de conjuntos diferentes de distancias de refuerzo aleatorias que se generan y usan para predecir el resultado de diferentes experimentos de seguimiento ocular.
El módulo 164 de distancia compara datos de seguimiento en cada experimento de seguimiento ocular con la trayectoria más corta y determina una distancia entre cada muestra incluida en los datos de seguimiento ocular y un punto correspondiente en la trayectoria más corta. El módulo 164 de distancia, para cada URL de la UI, calcula la distancia media entre muestras de seguimiento ocular asociadas con pruebas exitosas y la trayectoria más corta. Las pruebas exitosas incluyen pruebas en las que el usuario alcanzó el objetivo en la UI; por ejemplo, el usuario inició sesión correctamente en una aplicación web. El módulo 164 de distancia, para cada URL de la UI, también calcula la distancia media entre muestras de seguimiento ocular asociadas con pruebas fallidas y la trayectoria más corta. Las pruebas fallidas incluyen pruebas en las que el usuario no alcanzó el objetivo; por ejemplo, el usuario no pudo iniciar sesión en la aplicación web. Las pruebas fallidas también pueden incluir pruebas en las que el usuario alcanzó el objetivo, pero no siguió la trayectoria más corta hasta el objetivo. Por ejemplo, aunque es posible que el usuario finalmente haya iniciado sesión en la aplicación web, no lo hizo en el menor número de etapas posible.
El módulo 164 de distancia usa las distancias medias determinadas para cada URL como límites superior e inferior para generar distancias de refuerzo aleatorias para cada URL. Por ejemplo, el módulo 164 de distancia establece el límite inferior para un URL igual a la distancia de éxito media para el URL y establece el límite superior para el URL igual a la distancia de fallo media. En algunas implementaciones, el módulo 164 de distancia puede usar el módulo 142 de Monte Cario para generar las distancias aleatorias.
El módulo 168 de predicción realiza entonces una evolución usando las distancias de refuerzo generadas aleatoriamente y el primer experimento de seguimiento ocular. Para cada muestra en el experimento de seguimiento ocular, el módulo 168 de predicción determina si las distancias de refuerzo generadas aleatoriamente y la trayectoria más corta indican que el experimento fue un éxito (el usuario alcanzó el objetivo) o un fallo (el usuario no alcanzó el objetivo o no siguió la trayectoria más corta hasta el objetivo). A continuación, el módulo 168 de predicción compara el resultado predicho del experimento con el resultado almacenado del experimento. Para cada evolución, el módulo 168 de predicción emite el número de veces que se predijo el resultado correcto del experimento, el número de veces que se predijo incorrectamente que el experimento sería un éxito, y el número de veces que se predijo incorrectamente que el experimento sería un fallo. El módulo 160 de refuerzo almacena la salida del módulo 168 de predicción después de cada evolución.
El módulo 164 de distancia continúa generando distancias de refuerzo aleatorias para cada URL y el módulo 168 de predicción realiza una evolución usando las distancias de refuerzo generadas aleatoriamente y un nuevo experimento de seguimiento ocular hasta que se haya alcanzado el número máximo de evoluciones permitidas.
En respuesta a realizar el número máximo de evoluciones permitidas, el módulo 164 de distancia determina un valor de adecuación para cada distancia de refuerzo generada aleatoriamente usando las salidas almacenadas del módulo 168 de predicción y los valores de ponderación obtenidos. El módulo 170 de análisis de agrupación realiza entonces un análisis de agrupación de una gráfica de cada valor de adecuación frente a la distancia de prueba asociada con el valor de adecuación. En algunas implementaciones, el módulo 170 de análisis de agrupación puede usar el algoritmo de agrupación espacial basada en densidad de aplicaciones con ruido (DBSCAN) para realizar el análisis de agrupación. En otras implementaciones, el módulo 170 de análisis de agrupación puede usar la técnica de desplazamiento medio para realizar el análisis de agrupación. En aún otras implementaciones, el módulo 170 de análisis de agrupación puede usar otra técnica o algoritmo de análisis de agrupación adecuado para analizar la gráfica de valores de adecuación frente a distancias generadas aleatoriamente.
En respuesta a determinar que el módulo 170 de análisis de agrupación identificó una única agrupación de valores de adecuación frente a distancias de refuerzo para cada URL de la UI, el módulo 164 de distancia emite una distancia de refuerzo para cada URL. Para cada URL, el módulo 164 de distancia emite la distancia de refuerzo asociada con el URL con el valor de adecuación más alto.
En respuesta a determinar que el módulo 170 de análisis de agrupación no identificó una única agrupación de valores de adecuación frente a distancias de refuerzo para cada URL, el módulo 164 de distancia establece nuevos límites superior e inferior para cada URL. Para cada URL, el módulo 164 de distancia establece el límite superior a la distancia más grande en la agrupación más exitosa asociada con el URL y establece el límite inferior a la distancia más pequeña en la agrupación más exitosa. La agrupación más exitosa es la agrupación que incluye el mayor número de puntos de datos.
El módulo 164 de distancia restablece a cero el número de evoluciones realizadas. Luego, el módulo 164 de distancia comienza a generar distancias de refuerzo aleatorias para cada URL usando los nuevos límites superior e inferior y el módulo 168 de predicción realiza evoluciones usando las distancias de refuerzo generadas aleatoriamente hasta que se haya alcanzado el número máximo de evoluciones permitidas.
El módulo 164 de distancia determina los valores de adecuación para las distancias de refuerzo aleatorias recién generadas basándose en la salida del módulo 168 de predicción. El módulo 170 de análisis de agrupación analiza entonces los nuevos valores de adecuación. El procedimiento continúa de esta manera hasta que el módulo 164 de distancia emite una distancia de refuerzo para cada URL.
El módulo 166 de análisis de etapas determina, basándose en la distancia de refuerzo para cada URL, el número de veces que los experimentos de seguimiento ocular indican que un usuario se desvió de una etapa de la trayectoria más corta. Por ejemplo, el módulo 166 de análisis de etapas compara cada muestra incluida en un experimento de seguimiento ocular con una etapa asociada en la trayectoria más corta y determina, basándose en la distancia de refuerzo para el URL asociado con la etapa de la trayectoria más corta, si la muestra indica que el usuario se desvió de la etapa de la trayectoria más corta.
El módulo 162 de generación de instrucciones genera instrucciones para cada etapa de la trayectoria más corta. Las instrucciones pueden usarse para ayudar a un usuario de la UI a completar la etapa. El módulo 162 de generación de instrucciones genera las instrucciones basándose en la acción incluida en la etapa de la trayectoria más corta. Por ejemplo, el módulo 162 de generación de instrucciones puede generar una instrucción que indique a un usuario que haga clic en un enlace incluido en una etapa de la trayectoria más corta. Como otro ejemplo, el módulo 162 de generación de instrucciones puede indicarle al usuario que introduzca texto en un campo de entrada de datos, por ejemplo, escribiendo un nombre de usuario.
El módulo 162 de generación de instrucciones puede usar un elemento de DOM que corresponde a la acción incluida en la etapa de la trayectoria más corta para generar la instrucción. En algunas implementaciones, el módulo 162 de generación de instrucciones incluye detalles del elemento interactivo de la UI obtenido a partir del elemento de DOM, por ejemplo, el nombre de, o el texto asociado con, el elemento, en la instrucción generada. El módulo 162 de generación de instrucciones puede usar el navegador 126 sin encabezado para obtener el elemento de DOM.
El módulo 122 de mejora de la UI determina si la etapa requiere refuerzo basándose en el porcentaje de refuerzo y los resultados del módulo 166 de análisis de etapas. Por ejemplo, el módulo 122 de mejora de la UI calcula una razón del número de veces que una muestra de seguimiento ocular indicó que un usuario se desvió de la etapa de la trayectoria más corta y el número total de muestras de seguimiento ocular asociadas con la etapa. El módulo 122 de mejora de la UI determina que la etapa requiere refuerzo en respuesta a determinar que la razón calculada es igual o mayor que el porcentaje de refuerzo.
En respuesta a determinar que una etapa de la trayectoria más corta requiere refuerzo, el módulo 122 de mejora de la UI genera un refuerzo para la etapa. En algunas implementaciones, el refuerzo puede incluir una instrucción adicional que incluye más información sobre la acción que tiene que ejecutar el usuario. Por ejemplo, la instrucción adicional puede informar al usuario de la ubicación del elemento interactivo en la pantalla. En otras implementaciones, el refuerzo puede incluir instrucciones para resaltar el elemento interactivo. En aún otras implementaciones, el refuerzo puede incluir tanto la instrucción adicional como las instrucciones resaltadas. El módulo 122 de mejora de la UI almacena las instrucciones y refuerzos generados, junto con la trayectoria más corta. Por ejemplo, el módulo 122 de mejora de la UI puede almacenar la información en el dispositivo 112 de almacenamiento.
En diversas implementaciones, la trayectoria más corta generada por el módulo 120 de trayectoria más corta y las instrucciones y refuerzos generados por el módulo 122 de mejora de la UI se pueden usar para alterar la UI para mejorar la facilidad de uso de la UI y la aplicación asociada. Por ejemplo, los elementos interactivos de la UI (tales como enlaces, botones, y campos de entrada de datos) se pueden reposicionar, ya sea de forma automática o manual, para reducir la distancia total requerida para alcanzar un objetivo. El dispositivo 110 de prueba y mejora de la UI puede entonces realizar pruebas adicionales en la UI alterada. Por ejemplo, el módulo 120 de trayectoria más corta puede generar una nueva trayectoria más corta para la UI alterada para determinar si los elementos reposicionados mejoraron la UI; en otras palabras, si se redujo la distancia total de la trayectoria más corta.
Además, se pueden realizar nuevos experimentos de seguimiento ocular en una UI que incorpora las mejoras de la UI generadas. El módulo 122 de mejora de la UI puede usar los datos de los nuevos experimentos de seguimiento ocular para determinar si las mejoras mejoraron la facilidad de uso de la UI. Por ejemplo, el módulo 122 de mejora de la UI puede determinar que las mejoras de la UI dieron como resultado una reducción global en la desviación con respecto a la trayectoria más corta, es decir, menos etapas de la trayectoria más corta requieren refuerzo.
REDES NEURONALES
En diversas implementaciones, la red 148 neuronal de enlace, la red 150 neuronal de envío, la red 154 neuronal de elección de datos, y la red 156 neuronal de ponderación de acción pueden implementarse como redes neuronales de memoria a corto plazo de larga duración (LSTM). Las redes neuronales de LSTM son redes neuronales predictivas. La figura 2 es un diagrama de bloques funcional de una red 202 neuronal de LSTM genérica ejemplificativa. La red 202 neuronal de LSTM incluye una capa 204 de entrada, una capa 208 oculta, y una capa 212 de salida. La capa 204 de entrada incluye entradas 204a, 204b...204n. La capa 208 oculta incluye “neuronas” 208a, 208b...208n. La capa 212 de salida incluye salidas 212a, 212b...212n.
Cada neurona de la capa 208 oculta recibe una entrada desde la capa 204 de entrada y emite un valor a la salida correspondiente en la capa 212 de salida. Por ejemplo, la neurona 208a recibe una entrada desde la entrada 204a y emite un valor a la salida 212a. Cada neurona, distinta de la primera neurona 208a, también recibe como entrada la salida de la neurona anterior. Por ejemplo, la neurona 208b recibe una entrada desde la entrada 204b y una entrada desde la salida 212a. De esta manera, la salida de cada neurona se alimenta hacia delante a la siguiente neurona en la capa 208 oculta. La última salida 212n en la capa 212 de salida emite una probabilidad asociada con las entradas 204a-204n. Aunque la capa 204 de entrada, la capa 208 oculta, y la capa 212 de salida se representan incluyendo cada una de ellas tres elementos, la capa 204 de entrada, la capa 208 oculta, y la capa 212 de salida pueden contener cualquier número de elementos. En diversas implementaciones, cada capa de la red 202 neuronal de LSTM debe incluir el mismo número de elementos que cada una de las otras capas de la red 202 neuronal de LSTM.
La figura 3 es un diagrama de bloques funcional de una implementación ejemplificativa de una red 148 neuronal de enlace. La red 148 neuronal de enlace incluye una capa 304 de entrada, una capa 308 oculta, y una capa 312 de salida. La capa 304 de entrada incluye entradas 304a, 304b, y 304c. La capa 308 oculta incluye neuronas 308a, 308b, y 308c. La capa 312 de salida incluye salidas 312a, 312b, y 312c.
Se representa que la red 148 neuronal de enlace procesa el enlace “company.com/order/display.htm?number=123456”. El enlace se analiza sintácticamente para crear entradas para las entradas 304a, 304b, y 304c. Por ejemplo, la parte estática del enlace, “company.com”, se descarta. La parte restante del enlace se separa en entradas basándose en el formato y la sintaxis del enlace. Específicamente, se proporciona “order” a la entrada 304a, se proporciona “display.htm” a la entrada 304b, y se proporciona “number=123456” a la entrada 304c.
En el ejemplo representado en la figura 3, la salida de la red 148 neuronal de enlace es 0,75, lo que representa la probabilidad de que la ejecución del enlace introducido dé como resultado el objetivo. Aunque se representa que la red 148 neuronal de enlace incluye tres neuronas, la red 148 neuronal de enlace puede incluir más o menos neuronas.
La figura 4 es un diagrama de bloques funcional de una implementación ejemplificativa de una red 150 neuronal de envío. La red 150 neuronal de envío incluye una capa 404 de entrada, una capa 408 oculta, y una capa 412 de salida. La capa 404 de entrada incluye entradas 404a, 404b, y 404c. La capa 408 oculta incluye neuronas 408a, 408b, y 408c. La capa 412 de salida incluye salidas 412a, 412b, y 412c.
Se representa que la red 150 neuronal de envío procesa un envío denominado inicio de sesión ubicado en “company.com/help/faq.htm”. El nombre del envío se proporciona a la entrada 404a. La ubicación del envío se analiza sintácticamente para crear entradas para las entradas 404b y 404c. Por ejemplo, la parte estática de la ubicación (“company.com”) se descarta y la parte restante de la ubicación se separa en diferentes entradas basándose en el formato y la sintaxis de la ubicación. Específicamente, se proporciona “help” a la entrada 404b y se proporciona “faq.htm” a la entrada 404c.
En el ejemplo representado en la figura 4, la salida de la red 150 neuronal de envío es 0,25, lo que representa la probabilidad de que la ejecución del envío introducido dé como resultado el objetivo. Aunque se representa que la red 150 neuronal de envío incluye tres neuronas, la red 150 neuronal de envío puede incluir más o menos neuronas.
La figura 5A es un diagrama de bloques funcional de una implementación ejemplificativa de la red 154 neuronal de elección de datos. La red 154 neuronal de elección de datos incluye una capa 504 de entrada, una capa 508 oculta, y una capa 512 de salida. La capa 504 de entrada incluye entradas 504a, 504b, y 504c. La capa 508 oculta incluye neuronas 508a, 508b, y 508c. La capa de salida 512 incluye salidas 512a, 512b, y 512c.
Se representa que la red 154 neuronal de elección de datos procesa un campo de entrada de datos de texto denominado “nombre de usuario” ubicado en “company.com/help/faq.htm”. El nombre del campo de entrada de datos se proporciona a la entrada 504a. El tipo de campo de entrada de datos (texto) se proporciona a la entrada 504b. La ubicación de la entrada de datos se analiza sintácticamente para crear una entrada para la entrada 504c. Por ejemplo, la parte estática de la ubicación (company.com) se descarta y la parte restante de la ubicación se separa, si es necesario, en entradas basándose en el formato y la sintaxis de la ubicación. En el ejemplo representado en la figura 5A, la parte restante de la ubicación no requiere separación. En otras palabras, “home.htm” simplemente se proporciona a la entrada 504c.
En el ejemplo representado en la figura 5A, la salida de la red 154 neuronal de elección de datos es 0,98, lo que representa la probabilidad de que introducir texto en el campo de entrada de datos introducidos dé como resultado el objetivo. Aunque se representa que la red 154 neuronal de elección de datos incluye tres neuronas, la red 154 neuronal de elección de datos puede incluir más de tres neuronas.
La figura 5B es un diagrama de bloques funcional de una implementación ejemplificativa de la red 152 neuronal de coincidencia de datos. La red 152 neuronal de coincidencia de datos es una red neuronal convolucional. De manera similar a las redes neuronales de LSTM, las redes neuronales convolucionales incluyen una capa de entrada, una capa oculta, y una capa de salida. Sin embargo, en una red neuronal convolucional, la capa de salida incluye una salida menos que el número de neuronas en la capa oculta y cada neurona está conectada a cada salida. Además, cada entrada de la capa de entrada está conectada a cada neurona de la capa oculta.
La red 152 neuronal de coincidencia de datos incluye una capa 524 de entrada, una capa 528 oculta, y una capa 532 de salida. En la figura 5B, la capa 524 de entrada incluye entradas 524a, 524b, y 524c; la capa 528 oculta incluye neuronas 528a, 528b, y 528c; y la capa 532 de salida incluye las salidas 532a y 532b.
Se representa que la red 152 neuronal de coincidencia de datos procesa una entrada de datos de texto denominada “nombre de usuario” que está emparejada con los datos “usuario de prueba”. Los datos emparejados (“usuario de prueba”) se proporcionan a la entrada 524a. El nombre del campo de entrada de datos (“nombre de usuario”) se proporciona a la entrada 524b. El tipo de campo de entrada de datos (prueba) se proporciona a la entrada 524c. En el ejemplo representado en la figura 5B, la salida de la red 152 neuronal de coincidencia de datos es 0,75, lo que representa la probabilidad de que los datos introducidos deban introducirse en el campo de entrada de datos introducidos.
La figura 6 es un diagrama de bloques funcional de una implementación ejemplificativa de una red 156 neuronal de ponderación de acción. La red 156 neuronal de ponderación de acción incluye una capa 604 de entrada, una capa 608 oculta, y una capa 612 de salida. La capa 604 de entrada incluye entradas 604a, 604b, y 604c. La capa 608 oculta incluye neuronas 608a, 608b, y 608c. La capa 612 de salida incluye salidas 612a, 612b, y 612c.
Se representa que la red 156 neuronal de ponderación de acción procesa un tipo de acción de envío que está ubicado en “company.com/help/faq.htm”. El tipo de acción se proporciona a la entrada 604a. La ubicación de la acción se analiza sintácticamente para crear entradas para las entradas 604b y 604c. Por ejemplo, la parte estática de la ubicación (“company.com”) se descarta y la parte restante de la ubicación se separa en entradas basándose en el formato y la sintaxis de la ubicación. Específicamente, se proporciona “help” a la entrada 604b y se proporciona “faq.htm” a la entrada 604c.
En el ejemplo representado en la figura 6, la salida de la red 156 neuronal de ponderación de acción es 0,25, lo que representa la probabilidad de que la ejecución de un envío ubicado en “company.com/help/faq.htm” dé como resultado el objetivo. Aunque se representa que la red 156 neuronal de ponderación de acción incluye tres neuronas, la red 156 neuronal de ponderación de acción puede incluir más de tres neuronas y tan sólo dos neuronas.
DETERMINACIÓN DE LA TRAYECTORIA MÁS CORTA
Las figuras 7A y 7B son un diagrama de flujo que representa un método ejemplificativo para determinar la trayectoria más corta hasta un objetivo en una UI. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 120 de trayectoria más corta.
El control comienza en 703 de la figura 7A. En 703, el control obtiene parámetros de prueba: por ejemplo, texto de objetivo, datos para un conjunto de variables, un URL inicial de una Ui que se va a someter a prueba, el número máximo de etapas permitidas por prueba, y el número máximo de pruebas permitidas. Luego, el control almacena los parámetros de prueba como datos de configuración de prueba. Por ejemplo, el control puede almacenar los datos de configuración de prueba en el dispositivo 112 de almacenamiento. El control continúa con 706, donde el control inicializa valores asociados con las pruebas. Por ejemplo, el control establece el estado de entrenamiento de las redes neuronales (Redes_Entrenadas) a falso y Pruebas_Completadas a Nulo. Luego, el control continúa con 709, donde el control carga el URL inicial y establece el número de pruebas ejecutadas (Pruebas_Ejecutadas) a cero.
En 709, el control, para cada variable en los datos de configuración almacenados, establece un indicador de estado usado (Usado) a falso. Luego, el control continúa con 712, donde el control establece la posición actual (Posición_Actual) al centro de la UI. En 712, el control también almacena el resultado de cargar el URL inicial, el estado actual de la UI, como Estado_Inicial, y luego el control continúa con 715. En 715, el control inicializa los datos asociados con la primera prueba: por ejemplo, el control establece Datos_Prueba a Nulo, Etapa a cero, y Distancia_Prueba a cero. Luego, el control avanza a 718.
En 718, el control inicializa los datos asociados con la etapa actual; por ejemplo, el control establece Datos_Etapa a Nulo. Luego, el control analiza el estado actual de la UI. Por ejemplo, el control puede realizar el método divulgado en las figuras 8A-8C. El resultado del análisis puede ser Éxito, Fallo, o una lista de acciones. Éxito indica que el estado actual de la UI incluye el texto de objetivo o satisface algún otro criterio del objetivo. Fallo puede indicar que el estado actual no incluye ni el texto de objetivo ni ninguna acción posible, tal como atravesar enlaces, introducir datos en un campo de entrada de datos, o enviar datos que se han introducido en un campo de entrada de datos. En vez de eso, Fallo puede indicar que la prueba ha realizado el número máximo de etapas permitidas y no ha alcanzado el objetivo.
Una lista de acciones indica que el estado actual incluye al menos una acción posible que puede ejecutarse. Cada acción en la lista de acciones incluye una probabilidad de que la acción dé como resultado alcanzar el objetivo. El control almacena los resultados del análisis. Por ejemplo, el control añade el resultado de éxito o fallo a Datos_Prueba y un resultado de una lista de acciones a Datos_Etapa. Luego, el control avanza a 721, donde el control determina si el resultado del análisis es una lista de acciones o un indicador de Éxito/Fallo. Si el resultado es una lista de acciones, el control avanza a 724 de la figura 7B; de lo contrario, el control se transfiere a 727.
En 724 de la figura 7B, el control determina una acción a ejecutar. Por ejemplo, el control selecciona la acción con la mayor probabilidad global entre las acciones indicadas. El control puede usar las siguientes ecuaciones 1 y 2 para determinar la probabilidad global para cada acción.
P acción > DistanaaPrueba = 0
P distancia ponderada ~ | / >3CC)(jn * | r Distanaa Prueba \
l Distancia_Acdón ) ' Di$tanda_Pweba > 0 (1)
o ¡'ponderada
r global = zrr,— c--------------- (2)
¿ ' distancia jronderada
Pacción es la probabilidad de que una acción esté incluida en la lista de acciones, Distancia_Acción es la distancia euclidiana entre la posición actual y el punto más cercano del elemento de la UI asociado con la acción. Distancia_Prueba es la distancia total recorrida en la UI durante la prueba actual. IPd¡stanc¡a_ponderada es una suma de Pdistancia_ponderada para cada una de las acciones de la lista de acciones.
Luego, el control avanza a 730 donde el control determina si la acción seleccionada es un envío, un enlace, o una entrada. En respuesta a determinar que la acción seleccionada es un envío, el control avanza a 733; en respuesta a determinar que la acción seleccionada es un enlace, el control avanza a 745; de lo contrario, el control avanza a 748.
En 733, el control determina un punto del elemento de la UI asociado con el envío que está más cerca de la posición actual (Posición_Actual). En varias implementaciones, las coordenadas del punto más cercano se obtienen de la lista de acciones para la acción seleccionada. Luego, el control calcula la distancia de la etapa (Distancia_Etapa) como la distancia euclidiana entre Posición_Actual y el punto más cercano. Luego, el control continúa con 739, donde el control almacena la distancia de la etapa y ejecuta el envío; por ejemplo, el control añade Distancia_Etapa a Datos_Etapa y activa un clic en el elemento de la U<i>asociado con el envío. En 739, el control también actualiza Posición_Actual a las coordenadas del punto más cercano.
Volviendo a 736, el control determina el punto del elemento de la UI asociado con el enlace más cercano a Posición_Actual. Las coordenadas pueden almacenarse en la lista de acciones para la acción seleccionada. Luego, el control establece la distancia de la etapa (Distancia_Etapa) a la distancia euclidiana entre Posición_Actual y el punto más cercano. Luego, el control continúa con 740, donde el control almacena la distancia de la etapa y ejecuta el enlace; por ejemplo, añade Distancia_Etapa a Datos_Etapa y activa un clic en el elemento de la UI asociado con el enlace. En 740, el control también establece Posición_Actual al punto más cercano del elemento de la UI asociado con el enlace. Por ejemplo, el control puede establecer Posición_Actual a las coordenadas almacenadas en la lista de acciones para la acción seleccionada. Luego, el control avanza a 742.
Volviendo a 738, el control determina el punto del elemento de la UI asociado con la entrada más cercana a Posición_Actual. Por ejemplo, las coordenadas almacenadas en la lista de acciones para la acción seleccionada. Luego, el control establece la distancia de la etapa (Distancia_Etapa) a la distancia euclidiana entre Posición_Actual y el punto más cercano del elemento de la UI asociado con la entrada. Luego, el control continúa con 741, donde el control almacena la distancia de la etapa y ejecuta la entrada; por ejemplo, añade Distancia_Etapa a Datos_Etapa e introduce la variable asociada con la acción en el campo de entrada de datos. En 741, el control también marca la variable introducida en el campo de entrada de datos como usada y establece Posición_Actual al punto más cercano del elemento de la UI asociado con la entrada. Por ejemplo, el control puede establecer Usado para la variable a Verdadero y Posición_Actual a las coordenadas almacenadas en la lista de acciones para la acción seleccionada. Luego, el control avanza a 742.
En 742, el control almacena el progreso de la prueba actual; por ejemplo, el control añade Datos_Etapa a Datos_Prueba, añade Distancia_Etapa a Distancia_Prueba, y aumenta el número de etapas realizadas en 1. El control continúa entonces con 756 de la figura 7A.
En 756 de la figura 7A, el control determina si la distancia de prueba actual es más larga que una trayectoria ya determinada; en otras palabras, si la distancia de prueba actual es más larga que la prueba más corta completada con éxito. Si es así, el control avanza a 757; de lo contrario, el control vuelve a 718. En 757, el control establece el estado de la prueba actual a un fallo. Por ejemplo, el control establece Resultado igual a fallo. El control continúa entonces con 727.
Volviendo a 727, el control almacena la prueba actual como una prueba completada. Por ejemplo, el control añade la distancia total de la prueba (Distancia_Prueba) y los datos asociados con la prueba actual (Datos_Prueba) a Pruebas_Completadas. En 727, el control incrementa Pruebas_Ejecutadas en uno. El control avanza a 758 donde el control determina si el número de pruebas que se han ejecutado (Pruebas_Ejecutadas) es igual o mayor que el número de pruebas permitidas (Pruebas_Máx). Si es así, el control avanza a 761; de lo contrario, el control se transfiere a 764.
En 761, el control determina la trayectoria más corta hasta el objetivo basándose en las pruebas completadas almacenadas (Pruebas_Completadas). Por ejemplo, el control selecciona una prueba exitosa almacenada en Pruebas_Completadas con la distancia total más pequeña (Distancia_Prueba) como la trayectoria más corta. El control avanza a 762, donde el control emite los datos almacenados asociados con la prueba seleccionada (Datos_Prueba) como la trayectoria más corta. Entonces el control termina.
En 764, el control entrena las redes neuronales. Por ejemplo, el control realiza el método divulgado en las figuras 9A y 9B. Luego, el control avanza a 770, donde el control repondera las probabilidades asociadas con las acciones de cada etapa de la prueba completada; por ejemplo, el control puede realizar el método divulgado en las figuras 10A-10C. Luego, el control continúa con 773, donde el control selecciona la acción asociada con la prueba completada que tiene la mayor probabilidad global de dar como resultado el texto de objetivo. El control puede usar las ecuaciones 1 y 2, como se describió anteriormente, para determinar la probabilidad global de cada acción. Luego, el control avanza a 776, donde el control construye una nueva sesión basándose en la acción seleccionada. Por ejemplo, el control puede realizar el método divulgado en la figura 11. Luego, el control vuelve a 715.
Las figuras 8A-8C son un diagrama de flujo que representa un método ejemplificativo para analizar un estado de una UI. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 120 de trayectoria más corta y/o el módulo 132 de análisis.
El control comienza en 802 de la figura 8A. En 802, el control inicializa los datos de acción para el estado que se va a analizar. Por ejemplo, el control establece Datos_Acción a Nulo. Luego, el control avanza a 804, donde el control busca el estado actual (la pantalla) de la UI para determinar si se han satisfecho los criterios del objetivo. Por ejemplo, en la figura 8A, el control determina si el estado actual incluye el texto de objetivo. El control puede usar el módulo 146 de reconocimiento de lenguaje natural para hacer coincidir el texto encontrado en la pantalla con el texto de objetivo. Si, en 806, se encontró el texto de objetivo, el control continúa con 808; de lo contrario, el control se transfiere a 810.
En 808, el control actualiza la distancia de prueba actual basándose en la ubicación del texto de objetivo. Por ejemplo, el control calcula la distancia euclidiana entre Posición_Actual y el punto del texto de objetivo más cercano a Posición_Actual. El control añade la distancia a Distancia_Prueba. En 808, el control también establece Resultado a Éxito para indicar que el estado actual incluye el texto de objetivo. El control avanza a 809 donde el control emite el valor de Resultado. Entonces el control termina.
Volviendo a 810, el control determina si se ha alcanzado el número máximo de etapas permitidas (Etapas_Máx). Si el número de etapas en la sesión actual es menor que el número máximo de etapas, el control avanza a 816; de lo contrario, el control se transfiere a 814. En 814, el control establece Resultado a Fallo. Luego, el control avanza a 809.
En 816, el control busca enlaces en el estado actual y luego el control avanza a 818. En 818, si se localizaron uno o más enlaces en el estado actual, el control continúa con 820; de lo contrario, el control se transfiere a 822 de la figura 8B.
En 820, el control genera una lista de enlaces encontrados en el estado actual. El control elimina cualquier enlace de la lista que se haya visitado previamente durante la sesión actual. Luego, el control continúa con 824 donde el control, para cada enlace de la lista, determina y almacena las coordenadas de un punto de un elemento de la UI de enlace asociado que es el más cercano a Posición_Actual. Luego, el control avanza a 826, donde el control determina si las redes neuronales están entrenadas. Si es así, el control avanza a 828; de lo contrario, el control se transfiere a 830. En 828, el control usa la red 148 neuronal de enlace para estimar, para cada enlace de la lista, la probabilidad de que el enlace dé como resultado el objetivo. El control almacena la probabilidad de cada enlace en la lista de enlaces. El control continúa entonces con 832.
En 830, el control, para cada enlace en la lista de enlaces, asigna una probabilidad aleatoria de que el enlace dé como resultado el objetivo y almacena la probabilidad en la lista de enlaces. En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para asignar las probabilidades aleatorias. El control continúa con 832. En 832, el control almacena la lista de enlaces; por ejemplo, el control añade la lista de enlaces y las probabilidades asociadas a Datos_Acción. El control avanza a 822 de la figura 8B.
En 822 de la figura 8B, el control busca campos de entrada de datos en el estado actual y luego el control avanza a 834. En 834, el control determina si se localizó algún campo de entrada de datos en el estado actual. Si es así, el control continúa con 836; de lo contrario, el control se transfiere a 838 de la figura 8C.
En 836, el control determina si los datos de configuración incluyen datos que pueden introducirse en el campo de entrada de datos localizado, es decir, variables que aún no están marcadas como usadas. Si es así, el control avanza a 840; de lo contrario, el control se transfiere a 838 de la figura 8C. En 840, el control genera una lista de todos los campos de entrada de datos posibles y combinaciones de datos disponibles. Para cada entrada en la lista, el control determina y almacena las coordenadas del punto más cercano del campo de entrada de datos a Posición_Actual. El control continúa con 842.
En 842, el control determina si las redes neuronales están entrenadas. Si es así, el control avanza a 844; de lo contrario, el control se transfiere a 846. En 844, para cada campo de entrada de datos y combinación de datos en la lista, el control usa la red 152 neuronal de coincidencia de datos para estimar la probabilidad de que el campo de entrada de datos coincida con los datos (P_coincidencia). El control avanza a 848 donde, para cada campo de entrada de datos en la lista, el control usa la red 154 neuronal de elección de datos para estimar la probabilidad de que la entrada de datos en el campo de entrada de datos dé como resultado el objetivo (P_elección). El control avanza a 850.
En 846, para cada combinación de datos de campo de entrada en la lista, el control asigna una probabilidad aleatoria de que el campo de entrada coincida con los datos (P_coincidencia). El control avanza a 852 donde, para cada campo de entrada en la lista, el control asigna una probabilidad aleatoria de que introducir datos en el campo de entrada dé como resultado el texto de objetivo (P_elección). En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para generar probabilidades aleatorias para P_coincidencia y P_elección. El control continúa con 850.
En 850, el control calcula y almacena una probabilidad combinada para cada campo de entrada de datos y combinación de datos en la lista. Por ejemplo, el control puede promediar P_coincidencia y P_elección para cada elemento de la lista. Luego, el control avanza a 854 donde el control almacena el campo de entrada de datos y la lista de combinación de datos; por ejemplo, el control puede añadir la lista a Datos_Acción. El control continúa con 838 de la figura 8C.
En 838 de la figura 8C, el control busca “envíos” (por ejemplo, botones u opciones de menú que envían datos introducidos en un campo de entrada de datos) en el estado actual y luego el control avanza a 856. En 856, el control determina si se localizó algún envío en el estado actual. Si es así, el control continúa con 858; de lo contrario, el control se transfiere a 860.
En 858, el control genera una lista de envíos encontrados en el estado actual. El control continúa con 862 donde el control, para cada envío en la lista, determina y almacena las coordenadas del punto más cercano del elemento de la UI de envío a Posición_Actual. El control avanza a 864, donde el control determina si las redes neuronales en el módulo 144 de red neuronal están entrenadas. Si es así, el control avanza a 866; de lo contrario, el control se transfiere a 868. En 866, el control usa la red 150 neuronal de envío para estimar la probabilidad de que cada envío en la lista dé como resultado el objetivo. El control almacena las probabilidades en la lista de envíos. El control continúa con 870.
En 868, el control asigna una probabilidad aleatoria a cada envío en la lista y almacena la probabilidad en la lista de envíos. En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para asignar las probabilidades aleatorias. El control continúa con 870.
En 860, el control determina si Datos_Acción es igual a Nulo; en otras palabras, el estado actual no contiene enlaces, campos de entrada de datos y combinaciones de datos, ni envíos. Si es así, el control avanza a 874; de lo contrario, el control se transfiere a 872. En 874, el control establece Resultado a Fallo y luego emite Resultado. Entonces el control termina.
Volviendo a 870, el control almacena la lista de envíos; por ejemplo, el control puede añadir la lista de envíos a Datos_Acción. El control continúa con 872. En 872, el control determina si las redes neuronales en el módulo 144 de red neuronal están entrenadas. Si es así, el control continúa con 876; de lo contrario, el control se transfiere a 878. En 876, el control usa la red 156 neuronal de ponderación de acción para determinar una ponderación de probabilidad para cada tipo de acción, por ejemplo, enlaces, campos de entrada de datos, y envíos. Luego, el control avanza a 880.
En 878, el control asigna una ponderación de probabilidad aleatoria a cada tipo de acción, por ejemplo, enlaces, campos de entrada, y envíos. En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para determinar las ponderaciones de probabilidad aleatoria. Luego, el control avanza a 880.
En 880, el control determina y almacena una probabilidad ponderada para cada acción almacenada; en otras palabras, para cada enlace, campo de entrada de datos y combinación de datos, y envío almacenado en Datos_Acción. Por ejemplo, el control puede usar las siguientes ecuaciones 3 y 4 para calcular cada probabilidad ponderada (Pacción).
n_,Á,. n ,(YA Distancia) \
*ponderada ~~**'tipo * “ no ponderada* lvDistancia ><(>3<)>
Pno ponderada es la probabilidad almacenada para la acción, Wtipo es la ponderación de probabilidad para el tipo de acción de la acción, y Distancia es la distancia euclidiana entre la posición actual (Posición_Actual) y el punto más cercano almacenado para cada acción en Datos_Acción. La ecuación 4 se usa para normalizar la probabilidad ponderada (Pponderada) de cada acción.
El control continúa con 882 donde el control emite los resultados del análisis del estado actual de la UI. Por ejemplo, el control establece Resultado a Datos_Acción y luego emite Resultado. Entonces el control termina.
Las figuras 9A y 9B son un diagrama de flujo que representa un método ejemplificativo para entrenar las redes neuronales en el módulo 144 de red neuronal basándose en pruebas de la trayectoria más corta completadas. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros sistemas. En diversas implementaciones, el control puede realizarse por el módulo 120 de trayectoria más corta y/o el módulo 134 de entrenamiento.
El control comienza en 904 de la figura 9A en respuesta a recibir el control una prueba completada. En 904, el control determina si la prueba completada fue un éxito. Si es así, el control continúa con 908; de lo contrario, el control termina. En otras palabras, sólo se usan pruebas exitosas para entrenar redes neuronales en el módulo 144 de red neuronal. En 908, el control establece Estado al número de estados de la prueba completada, por ejemplo, el número de estados almacenados en Datos_Prueba. El control también establece el estado actual (Estado_Sesión) al primer estado de la prueba exitosa, por ejemplo, la primera etapa almacenada en Datos_Prueba.
Luego, el control continúa con 912, donde el control determina el tipo de acción asociada con una acción ejecutada en el estado actual (Estado_Sesión). El control añade la ponderación de la acción del tipo de acción determinado a los datos de entrenamiento. Luego, el control avanza a 916, donde el control guarda la probabilidad no ponderada de la acción ejecutada y cualquier dato asociado con la acción ejecutada (por ejemplo, un enlace, un campo de entrada de datos y combinación de datos, o un envío) a los datos de entrenamiento. El control continúa con 920, donde el control disminuye Estado en uno. Luego, el control avanza a 924.
En 924, el control determina si hay estados adicionales en la prueba completada. Por ejemplo, el control determina si Estado es mayor que cero. Si es así, el control avanza a 928; de lo contrario, el control se transfiere a 930. En 928, el control establece Estado_Sesión al siguiente estado de la prueba completada, por ejemplo, el siguiente estado almacenado en Datos_Prueba. Luego, el control vuelve a 912.
En 930, el control almacena el estado de entrenamiento actual de las redes neuronales en el módulo 144 de red neuronal. El control avanza a 932, donde el control determina si las redes neuronales en el módulo 144 de red neuronal están entrenadas, es decir, si el valor de Redes_Entrenadas es verdadero. Si es así, el control avanza a 936; de lo contrario, el control se transfiere a 940. En 936, el control guarda las redes neuronales actuales. Luego, el control avanza a 940.
En 940, el control usa los datos de entrenamiento para entrenar las redes neuronales. El control avanza a 944, donde el control establece Prueba al número de pruebas completadas, por ejemplo, el número de pruebas almacenadas en Pruebas_Completadas. El control usa Prueba_Entrenamiento para recorrer cada prueba almacenada. En 944, el control también establece Prueba_Entrenamiento a la primera prueba almacenada en Pruebas_Completadas. El control continúa con 948 de la figura 9B.
En 948 de la figura 9B, el control establece el estado de las redes neuronales en el módulo 144 de red neuronal a entrenadas. En 948, el control también establece Éxito_Cambio a cero y Fallo_Cambio a cero. Se usan Éxito_Cambio y Fallo_Cambio para almacenar las diferencias entre las probabilidades calculadas previamente y las probabilidades que producen las redes neuronales recién entrenadas. El control continúa con 952 donde el control establece Sesión_Entrenamiento a los Datos_Prueba asociados con Prueba_Entrenamiento. En 952, el control también establece Estado al número de estados almacenados en Sesión_Entrenamiento. El control usa Estado para recorrer cada estado almacenado en Sesión_Entrenamiento. El control avanza a 956 donde el control establece Estado_Entrenamiento en el primer estado almacenado en Sesión_Entrenamiento. El control continúa con 960.
En 960, el control ejecuta la acción asociada con Estado_Entrenamiento y el control continúa con 964. En 964, el control analiza el estado de la UI después de ejecutarse la acción; por ejemplo, el control puede realizar el método divulgado en las figuras 8A-8C. Luego, el control avanza a 966, donde el control determina si la prueba asociada con la acción (Sesión_Entrenamiento) fue un éxito. Si es así, el control continúa con 968; de lo contrario, el control se transfiere a 970. En 968, para cada acción identificada durante el análisis, el control calcula la diferencia entre la probabilidad almacenada en Estado_Entrenamiento y la probabilidad generada por el análisis. Luego, el control realiza una suma de todas las diferencias y añade el valor de la suma a Éxito_Cambio. El control avanza a 972.
En 970, para cada acción identificada durante el análisis, el control calcula la diferencia entre la probabilidad generada por el análisis y la probabilidad almacenada en Estado_Entrenamiento. Luego, el control realiza una suma de las diferencias y añade el valor de la suma a Fallo_Cambio. El control continúa entonces con 972.
En 972, el control disminuye Estado en 1. El control continúa con 976, donde el control determina si hay estados adicionales almacenados en Sesión_Entrenamiento; en otras palabras, Estado es mayor que cero. Si es así, el control continúa con 980; de lo contrario, el control se transfiere a 984. En 980, el control establece el Estado_Prueba al siguiente estado almacenado en Sesión_Entrenamiento. Luego, el control vuelve a 960.
En 984, el control determina si hay pruebas adicionales almacenadas en Pruebas_Completadas, es decir, Prueba es mayor que cero. Si es así, el control continúa con 988; de lo contrario, el control se transfiere a 992. En 988, el control reduce Prueba en uno y establece Prueba_Entrenamiento a la siguiente prueba completada, por ejemplo, la siguiente prueba almacenada en Pruebas_Completadas. Luego, el control vuelve a 952.
En 992, el control determina el rendimiento global de la red neuronal recién entrenada. Por ejemplo, el control puede usar la siguiente ecuación 5 para calcular el rendimiento global (Rendimiento).
Rendimiento = Éxito_Cambio Fallo_Cambio (5)
Luego, el control continúa con 996, donde el control determina si el rendimiento global de la red neutral entrenada representa una mejora de las redes neuronales. Por ejemplo, el control determina si Rendimiento es mayor o igual a cero. Si es así, las redes neuronales recién entrenadas son una mejora con respecto a las redes anteriores y el control termina. Si Rendimiento es menor que cero, las redes neuronales recién entrenadas no son una mejora y el control se transfiere a 998. En 998, el control restaura las antiguas redes neuronales, en otras palabras, el control restaura las redes neuronales al estado en el que se encontraban justo antes del entrenamiento más reciente. En 998, el control también establece el estado de entrenamiento de las redes neuronales (Redes_Entrenadas) al estado asociado con las redes neuronales antiguas (estado_anterior). Entonces el control termina.
Las figuras 10A-10C son un diagrama de flujo que representa un método ejemplificativo para reponderar acciones en una prueba de la trayectoria más corta completada. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros sistemas. En diversas implementaciones, el control puede realizarse por el módulo 120 de trayectoria más corta y/o el módulo 136 de reponderación.
El control comienza en 1003 de la figura 10A, donde el control determina el número de estados que se van a reponderar; por ejemplo, el control establece Recuento_Estado al número de etapas almacenadas en Datos_Prueba. El control avanza a 1006, donde el control establece el estado que se va a reponderar (Estado_Reponderación) al primer estado de la última prueba completada: la primera etapa almacenada en Datos_Prueba. El control continúa entonces con 1009.
En 1009, el control determina si el estado que se va a reponderar incluye enlaces. Si es así, el control avanza a 1012; de lo contrario, el control se transfiere a 1015 de la figura 10B. En 1012, el control determina si las redes neuronales en el módulo 144 de red neuronal están entrenadas. Si es así, el control avanza a 1018; de lo contrario, el control se transfiere a 1021. En 1018, para cada enlace en el estado que se va a reponderar, el control usa las redes neuronales en el módulo 144 de red neuronal para estimar la probabilidad de que el enlace dé como resultado el texto de objetivo y luego almacena las probabilidades estimadas, por ejemplo, en Estado_Reponderación. Luego, el control avanza a 1015 de la figura 10B.
En 1021, para cada enlace en el estado que se va a reponderar, el control asigna una probabilidad aleatoria de que el enlace dé como resultado el objetivo y luego almacena las probabilidades aleatorias, por ejemplo, en Estado_Reponderación. En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para generar las probabilidades aleatorias. Luego, el control avanza a 1015 de la figura 10B.
En 1015 de la figura 10B, el control determina si el estado que se va a reponderar (Estado_Reponderación) incluye un campo de entrada de datos. Si es así, el control continúa con 1024; de lo contrario, el control se transfiere a 1027 de la figura 10C. En 1024, el control determina si el estado que se va a reponderar (Estado_Reponderación) incluye datos. Si es así, el control continúa con 1030; de lo contrario, el control se transfiere a 1027 de la figura 10C.
En 1030, el control determina si las redes neuronales están entrenadas. Si es así, el control continúa con 1033; de lo contrario, el control se transfiere a 1036. En 1033, para cada posible campo de entrada de datos y combinación de datos en el estado que se va a reponderar, el control usa las redes neuronales en el módulo 144 de red neuronal (por ejemplo, la red 152 neuronal de coincidencia de datos) para estimar la probabilidad de que el campo de entrada de datos coincida con los datos (P_coincidencia). El control continúa con 1039 donde, para cada campo de entrada de datos en el estado que se va a reponderar, el control usa redes neuronales en el módulo 144 de red neuronal (por ejemplo, la red 154 neuronal de elección de datos) para estimar la probabilidad de que introducir datos en el campo de entrada dé como resultado el texto de objetivo (P_elección). El control avanza a 1042.
En 1036, para cada campo de entrada y cada dato en el estado que se va a reponderar, el control asigna una probabilidad aleatoria de que el campo de entrada coincida con los datos (P_coincidencia). El control avanza a 1045 donde, para cada entrada en el estado que se va a reponderar, el control asigna una probabilidad aleatoria de que introducir datos en el campo de entrada de datos dé como resultado el objetivo (P_elección). En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para generar probabilidades aleatorias para P_coincidencia y P_elección. Luego, el control avanza a 1042.
En 1042, el control calcula una probabilidad combinada para cada campo de entrada de datos y combinación de datos. Por ejemplo, el control puede promediar P_coincidencia y P_elección para cada campo de entrada de datos y combinación de datos en el estado que se va a reponderar. El control almacena las probabilidades combinadas, por ejemplo, en Estado_Reponderación. El control continúa entonces con 1027 de la figura 10C.
En 1027 de la figura 10C, el control determina si el estado que se va a reponderar incluye envíos. Si es así, el control avanza a 1048; de lo contrario, el control se transfiere a 1051. En 1048, el control determina si las redes neuronales están entrenadas. Si es así, el control avanza a 1054; de lo contrario, el control se transfiere a 1057. En 1054, para cada envío en el estado que se va a reponderar, el control usa redes neuronales en el módulo 144 de red neuronal (por ejemplo, la red 150 neuronal de envío) para estimar la probabilidad de que la ejecución del envío dé como resultado el texto de objetivo y luego almacena las probabilidades estimadas, por ejemplo, en Estado_Reponderación. Luego, el control avanza a 1051.
En 1057, para cada envío en el estado que se va a reponderar, el control asigna una probabilidad aleatoria de que el envío dé como resultado el texto de objetivo y luego almacena las probabilidades aleatorias, por ejemplo, en Estado_Reponderación. En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para generar las probabilidades aleatorias. Luego, el control avanza a 1051.
En 1051, el control determina si las redes neuronales en el módulo 144 de red neuronal están entrenadas. Si es así, el control continúa con 1060; de lo contrario, el control se transfiere a 1063. En 1060, el control usa la red 156 neuronal de ponderación de acción para determinar una ponderación de probabilidad para cada tipo de acción, por ejemplo, enlaces, campos de entrada de datos, y envíos. El control continúa con 1066. En 1063, el control asigna una ponderación de probabilidad aleatoria a cada tipo de acción, por ejemplo, enlaces, campos de entrada, y envíos. En algunas implementaciones, el control puede usar el módulo 142 de Monte Carlo para determinar las ponderaciones de probabilidad aleatoria. El control continúa con 1066.
En 1066, el control determina y almacena una probabilidad ponderada actualizada para cada enlace, campo de entrada de datos y combinación de datos, y envío en el estado que se va a reponderar, en otras palabras, para cada acción en Estado_Reponderación. El control puede usar las ecuaciones 3 y 4, como se describió anteriormente, para calcular cada probabilidad ponderada. Luego, el control avanza a 1069.
En 1069, el control almacena el estado reponderado; por ejemplo, el control puede establecer el estado en Datos_Prueba que corresponde al estado reponderado a Estado_Reponderación. En 1069, el control también disminuye Recuento_Estado en uno. El control continúa con 1072, donde el control determina si hay estados adicionales que se deben reponderar, es decir, si Recuento_Estado es mayor que cero. Si es así, el control continúa con 1075 donde el control establece el estado que se va a reponderar al siguiente estado almacenado en la última prueba completada; por ejemplo, el control establece Estado_Reponderación al siguiente estado almacenado en Datos_Prueba. Luego, el control vuelve a 1009 de la figura 10A. Si el control determina que no hay estados adicionales que se deben reponderar, el control termina.
La figura 11 es un diagrama de flujo que representa un método ejemplificativo para construir una nueva sesión de UI basándose en una acción seleccionada. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros sistemas. En diversas implementaciones, el control puede realizarse por el módulo 120 de trayectoria más corta y/o el módulo 138 de creación de sesión.
El control comienza en 1104 tras la selección de la acción de mayor probabilidad en una prueba de la trayectoria más corta completada. En 1104, el control establece una variable de estado actual (Estado_Actual) a la etapa de la prueba completada que está asociada con la acción seleccionada. En 1104, el control también inicializa una pila para mantener temporalmente una secuencia de estado (Secuencia_Temp) a Nula. Luego, el control avanza a 1108, donde el control empuja el estado actual (Estado_Actual) a la pila temporal (Secuencia_Temp). El control continúa con 1112, donde el control determina si el estado actual es el estado inicial de la prueba completada. Si es así, el control avanza a 1116; de lo contrario, el control se transfiere a 1120.
En 1120, el control establece el estado actual a la etapa anterior al estado actual, por ejemplo, la etapa anterior al estado actual en Datos_Prueba. Luego, el control empuja el estado actual (Estado_Actual) y la acción asociada con el estado actual a la pila temporal (Secuencia_Temp). Luego, el control vuelve a 1112.
En 1116, el control inicializa la secuencia de estado para la nueva sesión; por ejemplo, el control establece Datos_Prueba a Nulo, Distancia_Prueba a cero, Etapas a cero, y, para cada variable en los datos de configuración, Usado a Falso. El control avanza a 1124, donde el control carga el URL inicial y establece la posición actual al centro de la UI. El control continúa con 1128, donde el control extrae la entrada superior de la pila temporal (Secuencia_Temp) y la añade a los datos de prueba (Datos_Prueba). En 1128, el control también establece la acción asociada con la entrada a la acción actual (Acción_Actual). El control continúa con 1132.
En 1132, el control determina el tipo de acción actual. Si el tipo es un envío, el control avanza a 1136; si el tipo de acción correcta es un enlace, el control se transfiere a 1152; si el tipo de acción actual es un campo de entrada de datos, el control se transfiere a 1156. En 1136, el control determina el punto más cercano del elemento de la UI asociado con el envío. Luego, el control calcula la distancia de acción (Distancia_Acción) como la distancia euclidiana entre Posición_Actual y el punto más cercano del elemento de la UI asociado con el envío. Luego, el control continúa con 1144, donde el control ejecuta el envío (por ejemplo, el control añade clics en el elemento de la UI asociado con el envío) y establece la posición actual (Posición_Actual) al punto más cercano del elemento de la UI asociado con el envío. Luego, el control avanza a 1148.
En 1152, el control determina el punto más cercano del elemento de la UI asociado con el enlace. Luego, el control calcula la distancia de acción (Distancia_Acción) como la distancia euclidiana entre Posición_Actual y el punto más cercano del elemento de la UI asociado con el enlace. Luego, el control continúa con 1160, donde el control ejecuta el enlace, por ejemplo, el control activa un toque de clic en el elemento de la UI asociado con el enlace, y establece la posición actual (Posición_Actual) al punto más cercano del elemento de la UI asociado con el enlace. Luego, el control avanza a 1148.
En 1156, el control determina el punto más cercano del campo de entrada de datos. Luego, el control calcula la distancia de acción (Distancia_Acción) como la distancia euclidiana entre Posición_Actual y el punto más cercano del campo de entrada de datos. Luego, el control continúa con 1164, donde el control introduce la variable asociada con la acción en el campo de entrada de datos; marca la variable como usada (establece Usado a Verdadero) y establece Posición_Actual al punto más cercano del campo de entrada de datos. Luego, el control avanza a 1148.
En 1148, el control actualiza la distancia de prueba y el número de etapas. Por ejemplo, el control añade Distancia_Acción a Distancia_Prueba e incrementa Etapa en uno. El control continúa entonces con 1168. En 1168, el control determina si la pila temporal (Secuencia_Temp) está vacía; por ejemplo, el tamaño de Secuencia_Temp es cero. Si es así, el control continúa con 1172; de lo contrario, el control vuelve a 1128. En 1172, el control añade la distancia de prueba a la secuencia de estado almacenada; por ejemplo, el control añade Distancia_Prueba a Datos_Prueba. Entonces el control termina.
Las figuras 12A-12H son representaciones gráficas de un procedimiento para determinar una trayectoria hasta un objetivo en una UI ejemplificativa. Específicamente, las figuras 12A-12H representan un procedimiento ejemplificativo para determinar una trayectoria para completar un procedimiento de inicio de sesión en la UI ejemplificativa. La figura 12A es una representación de un estado 1202 inicial de la UI ejemplificativa. El procedimiento comienza estableciendo la posición actual al centro de la pantalla 1204. A continuación, se analiza el estado 1202 inicial de la UI.
La figura 12B es una representación gráfica de los resultados del análisis del estado 1202 inicial de la UI: por ejemplo, una identificación de todas las acciones posibles que pueden realizarse en el estado 1202 inicial de la UI. Específicamente, el análisis identificó un primer enlace 1206, un segundo enlace 1207, un tercer enlace 1208, y un cuarto enlace 1209. El análisis también identificó un primer campo 1212 de entrada de datos, un segundo campo 1213 de entrada de datos, y un botón 1215 de envío denominado “ Iniciar sesión”. Las flechas que surgen del centro de la pantalla 1204 representan la distancia desde la posición actual hasta cada acción identificada en el estado 1202 inicial.
En la figura 12C, la acción seleccionada como primera etapa en la trayectoria más corta es introducir el texto “usuario de prueba” en el primer campo 1212 de entrada de datos. Esta selección se puede realizar, como se describió anteriormente, basándose en probabilidades ponderadas de redes neuronales entrenadas. La distancia entre la posición actual (el centro de la pantalla) y la ubicación del primer campo de entrada de datos es una primera distancia 1218 de etapa que se almacena como la distancia de la trayectoria más corta. Realizar la acción seleccionada da como resultado que la UI pase del estado 1202 inicial a un segundo estado 1219 y cambie la posición actual a la ubicación del primer campo 1212 de entrada de datos. A continuación, se analiza el segundo estado 1219 de la UI.
La figura 12D es una representación gráfica de los resultados de un análisis de acciones posibles que pueden realizarse en el segundo estado 1219 de la UI. Específicamente, el análisis identificó el primer enlace 1206, el segundo enlace 1207, el tercer enlace 1208, el cuarto enlace 1209, el segundo campo 1213 de entrada de datos, y el botón 1215 de envío como acciones posibles para la segunda etapa. Las flechas que surgen del primer campo 1212 de entrada de datos representan las distancias desde la posición actual hasta cada acción identificada en el segundo estado 1219 de la UI.
En la figura 12E, la acción seleccionada como segunda etapa es introducir texto en el segundo campo 1213 de entrada de datos, representado como “******”. La distancia entre la posición actual (la ubicación del primer campo 1212 de entrada de datos) y la ubicación del segundo campo 1213 de entrada de datos es una segunda distancia 1220 de etapa que se añade a la distancia de la trayectoria actual almacenada. Realizar la acción seleccionada en el segundo estado 1219 da como resultado que la UI pase a un tercer estado 1222 y cambie la posición actual a la ubicación del segundo campo 1213 de entrada de datos. A continuación, se analiza el tercer estado 1222 de la UI.
La figura 12F es una representación gráfica de los resultados de un análisis del tercer estado 1222 de la UI, en otras palabras, todas las acciones posibles que pueden realizarse en el tercer estado 1222 de la UI. Específicamente, el análisis identificó el primer enlace 1206, el segundo enlace 1207, el tercer enlace 1208, el cuarto enlace 1209, y el botón 1215 de envío como acciones posibles para la tercera etapa de la trayectoria más corta. Las flechas que surgen del segundo campo 1213 de entrada de datos representan la distancia desde la posición actual hasta cada acción identificada en el tercer estado 1222.
En la figura 12G, la acción seleccionada como tercera etapa es hacer clic en el botón 1215 de envío denominado “ Iniciar sesión”. La distancia entre la posición actual (la ubicación del segundo campo 1213 de entrada de datos) y la ubicación del botón 1215 de envío denominado “Iniciar sesión” es una tercera distancia 1224 de etapa que se añade a la distancia de trayectoria actual almacenada. Realizar la acción seleccionada en el tercer estado 1222 da como resultado que la UI pase a un cuarto estado 1226 mostrado en la figura 12H y cambie la posición actual a la ubicación del botón 1215 de envío denominado “Iniciar sesión”.
Como se muestra en la figura 12H, un análisis del cuarto estado 1226 de la UI da como resultado la identificación del texto 1230. El texto 1230 coincide con el texto de objetivo (por ejemplo, “Bienvenido”), lo que indica que se ha alcanzado el objetivo. La distancia desde la posición actual (la ubicación anterior del botón 1215 de envío denominado “ Iniciar sesión”) hasta la ubicación del texto 1230 es una cuarta distancia 1232 de etapa que se añade a la distancia de la trayectoria actual para determinar la distancia total de la trayectoria actual. Esta trayectoria condujo a un resultado exitoso. Se pueden investigar trayectorias adicionales para determinar si se puede encontrar una trayectoria exitosa con una distancia total más corta.
MEJORA DE LA INTERFAZ DE USUARIO
La figura 13 es un diagrama de flujo que representa un método ejemplificativo para generar instrucciones y refuerzos para una UI usando experimentos de seguimiento ocular. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 122 de mejora de la UI y el módulo 120 de trayectoria más corta.
El control comienza en 1304, donde el control obtiene un URL inicial para una UI, un objetivo para la UI, y un porcentaje de refuerzo. El porcentaje de refuerzo es un umbral que se usa para determinar si una etapa de la trayectoria más corta hasta el objetivo requiere refuerzo del usuario. Por ejemplo, el porcentaje de refuerzo indica con qué frecuencia los usuarios pueden desviarse de una etapa de la trayectoria más corta antes de que se determine que la etapa requiere refuerzo. El control continúa con 1306. En 1306, el control determina la trayectoria más corta en la UI hasta el objetivo. En algunas implementaciones, el control puede realizar el método divulgado en las figuras 7A y 7B, como se describió anteriormente. En otras implementaciones, el control puede cargar la trayectoria más corta previamente almacenada asociada con el objetivo de la UI, por ejemplo, desde el dispositivo 112 de almacenamiento. Luego, el control avanza a 1308.
En 1308, el control determina una distancia de refuerzo para cada URL de la UI que se encuentra a lo largo de la trayectoria más corta. La distancia de refuerzo es la distancia máxima que un usuario puede desviarse de la etapa de la trayectoria más corta aplicable antes de que el control determine que la etapa puede requerir refuerzo. El control puede realizar el método descrito en la figura 14 para determinar la distancia de refuerzo para cada URL. El control continúa entonces con 1312.
En 1312, el control determina, basándose en la distancia de refuerzo determinada para cada URL de la UI, las etapas de la trayectoria más corta que pueden requerir refuerzo. Por ejemplo, el control puede realizar el método divulgado en la figura 21 para determinar qué etapas pueden requerir refuerzo. El control continúa con 1316.
En 1316, el control carga la primera etapa de la trayectoria más corta. El control también inicia Mejora_UI en Nulo. Mejora_UI se usa para almacenar instrucciones y refuerzos relacionados con la UI que pueden usarse para ayudar a un usuario a alcanzar el objetivo. Luego, el control avanza a 1320.
En 1320, el control determina si la etapa incluye un enlace. Si es así, el control continúa con 1324; de lo contrario, el control se transfiere a 1328. En 1324, el control obtiene el elemento de DOM que corresponde al enlace incluido. El control continúa con 1332 donde el control determina, basándose en el elemento de DOM obtenido, si el enlace está representado por un botón. Si es así, el control continúa con 1336; de lo contrario, el control se transfiere a 1340.
En 1336, el control genera una instrucción que indica a un usuario que haga clic en el botón asociado con el enlace. Por ejemplo, el control puede establecer la instrucción a “Haga clic en «botón»”. En la instrucción generada, «botón» es texto que describe el botón; por ejemplo, el nombre del botón o texto asociado con el botón. El control puede obtener el nombre de, o el texto asociado con, el botón a partir del elemento de DOM obtenido. Luego, el control avanza a 1344, como se describe a continuación.
En 1340, el control genera una instrucción que indica a un usuario que seleccione una opción de un menú. Por ejemplo, el control puede establecer la instrucción a “Seleccione «opción» de «menú»”. En la instrucción generada, «opción» y «menú» son textos que describen la opción y el menú, respectivamente. El control puede obtener el texto a partir del elemento de DOM obtenido. El control continúa con 1344, como se describe a continuación.
Volviendo a 1328, el control determina si la etapa incluye un envío. Si es así, el control continúa con 1348; de lo contrario, el control determina que la etapa incluye un campo de entrada de datos y el control se transfiere a 1352. En 1348, el control obtiene el elemento de DOM que corresponde al envío incluido en la etapa. El control continúa con 1356, donde el control genera una instrucción que indica a un usuario que haga clic en el envío. Por ejemplo, el control puede establecer la instrucción en “Haga clic en «envío»”. En la instrucción generada, «envío» es texto que describe el envío; por ejemplo, el nombre del envío o texto asociado con el envío. El control puede obtener el nombre de, o el texto asociado con, el envío a partir del elemento de DOM obtenido. Luego, el control avanza a 1344, como se describe a continuación.
Volviendo a 1352, el control obtiene el elemento de DOM que corresponde al campo de entrada de datos. El control continúa con 1360 donde el control determina, basándose en el elemento de DOM obtenido, si el campo de entrada de datos es un campo de entrada de texto. Si es así, el control continúa con 1364; de lo contrario, el control puede deducir que el campo de entrada es una lista de una o más opciones y transferirlo a 1368. En 1364, el control genera una instrucción que indica a un usuario que introduzca texto en el campo de entrada. Por ejemplo, el control puede establecer la instrucción a “Introduzca sus datos en «campo»”. En la instrucción generada, «campo» es texto que describe el campo de entrada; por ejemplo, el nombre del campo de entrada o texto asociado con el campo de entrada. El control puede obtener el nombre de, o el texto asociado con, el campo de entrada a partir del elemento de DOM obtenido. Luego, el control avanza a 1344.
Volviendo a 1368, el control genera una instrucción que indica a un usuario que seleccione una opción de la lista de opciones. Por ejemplo, el control puede establecer la instrucción a “Seleccione «opción» de las opciones en «campo»”. En la instrucción generada, «campo» es texto que describe el campo de entrada; por ejemplo, el nombre del campo de entrada o el texto asociado con el campo de entrada. El control puede obtener el nombre de, o texto asociado con, el campo de entrada a partir del elemento de DOM obtenido. El control continúa con 1344.
Volviendo a 1344, el control determina si la etapa requiere refuerzo del usuario basándose en el porcentaje de refuerzo recibido. Por ejemplo, el control puede usar la siguiente desigualdad 6 para determinar si la etapa requiere refuerzo.
Recuentorefuerzo representa el número de veces que se hace referencia a la etapa como que posiblemente requiere refuerzo: cada aparición de una muestra de datos de seguimiento ocular que se desvía de la etapa en más de la distancia de refuerzo correspondiente. Recuentototal es el número total de veces que se determinó que una muestra de seguimiento ocular correspondía a la etapa. Si la desigualdad 6 es cierta, el control determina que la etapa requiere refuerzo y el control continúa con 1372; de lo contrario, el control se transfiere a 1376.
En 1372, el control marca el componente de la UI asociado con el elemento de DOM obtenido como que requiere refuerzo adicional. En algunas implementaciones, el componente de la UI puede resaltarse mientras se presenta la instrucción a un usuario. En otras implementaciones, se puede proporcionar la ubicación del componente de la UI a un usuario. Luego, el control avanza a 1376.
En 1376, el control almacena la etapa de la trayectoria más corta, el elemento de DOM, la instrucción generada, y cualquier refuerzo adicional en Mejora_UI. El control continúa con 1380.
En 1380, el control determina si la trayectoria más corta incluye una siguiente etapa. Si es así, el control continúa con 1384; de lo contrario, el control se transfiere a 1388. En 1384, el control carga la siguiente etapa en la trayectoria más corta y luego vuelve a 1320.
En 1388, el control genera Mejora_UI. Entonces el control termina. Las mejoras de la UI generadas se pueden usar para generar una nueva UI que guía a un usuario hasta el objetivo. Por ejemplo, las instrucciones generadas pueden incorporarse en la UI. Los datos contenidos en Mejora_UI también se pueden usar por un sistema automatizado para proporcionar a un usuario instrucciones que lo guíen hasta un objetivo solicitado o sugerido.
En algunas implementaciones, el control lo puede generar únicamente una instrucción en respuesta a determinar que una etapa de la trayectoria más corta requiere refuerzo. En otras palabras, el control puede implementar únicamente los elementos 1320, 1324, 1328, 1332, 1336, 1340, 1348, 1352, 1356, 1360, 1364, y 1368 en respuesta a que el control determine (como en 1344) que la etapa requiere refuerzo del usuario basándose en el porcentaje de refuerzo recibido. Por ejemplo, el control puede usar la desigualdad 6 anterior para determinar si la etapa requiere refuerzo.
La figura 14 es un diagrama de flujo que representa un método ejemplificativo para determinar una distancia de refuerzo para cada URL de una UI. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la U i, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo y/o el módulo 164 de distancia.
El control comienza en 1404 donde el control obtiene la trayectoria más corta para un objetivo. En algunas implementaciones, el control puede cargar la trayectoria más corta que se ha determinado y almacenado previamente, por ejemplo en el dispositivo 112 de almacenamiento. En otras implementaciones, el control puede realizar el método divulgado en las figuras 7A y 7B. El control continúa con 1408 donde el control obtiene parámetros de prueba, por ejemplo, un número máximo de evoluciones que se permite que realice el sistema (Evoluciones_Máx) y un conjunto de valores de ponderación de adecuación. Luego, el control avanza a 1412.
En 1412, el control carga experimentos de seguimiento ocular que corresponden a la UI y el objetivo. Los experimentos de seguimiento ocular incluyen datos de seguimiento de un usuario que navega por la UI. Los datos de seguimiento se capturan con una frecuencia de muestreo fija, por ejemplo, cada dos segundos. Cada experimento de seguimiento ocular agrupa los datos de seguimiento en páginas basándose en la página de la UI por la que está navegando el usuario, en el orden en que se visualizaron por el usuario. En otras palabras, cada página de un experimento de seguimiento ocular representa los movimientos de un usuario durante un único estado de la UI. Cada punto de datos en los datos de seguimiento incluye la página de la UI (URL) en el momento de la captura y un conjunto de coordenadas que indican una ubicación en la pantalla de la UI. El control continúa con 1416.
En 1416, el control calcula las diferencias entre los experimentos de seguimiento ocular y la trayectoria más corta. Por ejemplo, el control determina las distancias entre los datos de seguimiento y puntos a lo largo de la trayectoria más corta. El control puede realizar el método divulgado en la figura 15 para calcular las distancias. Luego, el control avanza a 1420.
En 1420, el control calcula la distancia de éxito media para cada URL incluido en los experimentos de seguimiento ocular marcados como éxitos: experimentos que dieron como resultado que el usuario alcanzara el objetivo. El control puede realizar el método divulgado en la figura 17 para determinar las distancias de éxito medias. Luego, el control avanza a 1424.
En 1424, el control calcula la distancia de fallo media para cada URL incluido en experimentos de seguimiento ocular marcados como fallos. Un experimento puede marcarse como fallo si el usuario no alcanzó el objetivo o si los datos de seguimiento se desviaron de la trayectoria más corta. El control puede realizar el método divulgado en la figura 18 para determinar las distancias de fallo medias. El control continúa con 1428.
En 1428, el control establece valores de límite para cada URL basándose en las distancias de éxito y fallo medias correspondientes. Por ejemplo, el control establece un límite superior para el URL a la distancia de éxito media y establece un límite inferior para el URL a la distancia de fallo media. Los límites superior e inferior se usan para generar estimaciones de la distancia de las desviaciones con respecto a la trayectoria más corta que requieren refuerzo. El control también inicia a cero el número de evoluciones realizadas (Evoluciones). Luego, el control avanza a 1432.
En 1432, para cada URL, el control genera una distancia aleatoria basándose en los valores de límite para el URL. Por ejemplo, el control puede usar el módulo 142 de Monte Carlo para generar un valor aleatorio entre el límite superior del URL y el límite inferior del URL. El control continúa con 1436, donde el control somete a prueba los valores generados para el URL. Por ejemplo, el control puede realizar el método divulgado en la figura 19 para someter a prueba las distancias generadas. Luego, el control avanza a 1440.
En 1440, el control determina si el número de evoluciones realizadas es menor que el número máximo de evoluciones permitidas. Si es así, el control continúa con 1444; de lo contrario, el control se transfiere a 1448. En 1444, el control incrementa Evoluciones y vuelve a 1432.
En 1448, el control calcula un valor de adecuación para cada distancia de refuerzo generada aleatoriamente. El control puede usar la siguiente ecuación 7 para calcular cada valor de adecuación.
W1, W2, y W3son los valores de ponderación de adecuación obtenidos en 1408. RecuentoExitoso representa el número de veces que una predicción, basándose en la distancia de refuerzo generada aleatoriamente para el URL, predijo correctamente el resultado de un experimento de seguimiento ocular. RecuentoFalsoPositivo representa el número de veces que una predicción, basándose en la distancia de refuerzo generada aleatoriamente para el URL, predijo incorrectamente que un experimento de seguimiento ocular exitoso fue un fallo. FalsoNegativo representa el número de veces que una predicción, basándose en la distancia de refuerzo generada aleatoriamente para el URL, predijo incorrectamente que un experimento de seguimiento ocular fallido fue un éxito. El control continúa con 1452.
En 1452, el control realiza un análisis de agrupación en una gráfica de los valores de adecuación determinados frente a las distancias generadas aleatoriamente asociadas. En algunas implementaciones, el control usa el algoritmo de agrupación espacial basada en densidad de aplicaciones con ruido (DBSCAN) para realizar el análisis de agrupación. En otras implementaciones, el control usa la técnica de desplazamiento medio para realizar el análisis de agrupación. En aún otras implementaciones, el control puede usar cualquier técnica o algoritmo de análisis de agrupación adecuado para analizar la gráfica de los valores de adecuación frente a distancias generadas aleatoriamente. El control continúa con 1456.
En 1456, el control determina si se identificó más de una agrupación para un único URL durante el análisis de agrupación. Si es así, el control continúa con 1460; de lo contrario, el control se transfiere a 1464. En 1460, el control actualiza el valor del límite para cada URL basándose en la agrupación de URL más exitosa. Por ejemplo, para cada URL, el control establece el límite superior para el URL a la distancia más grande en la agrupación más exitosa y establece el límite inferior para el URL a la distancia más pequeña en la agrupación más exitosa. El control también restablece a cero el número de evoluciones realizadas. Luego, el control vuelve a 1432.
Volviendo a 1464, el control genera las distancias de refuerzo. Por ejemplo, para cada URL, el control emite la distancia de refuerzo asociada con el URL con el valor de adecuación más alto. Entonces el control termina.
La figura 15 es un diagrama de flujo que representa un método ejemplificativo para determinar las distancias entre experimentos de seguimiento ocular y puntos a lo largo de la trayectoria más corta cargada. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo y/o el módulo 164 de distancia.
El control comienza con 1502. En 1502, el control obtiene experimentos de seguimiento ocular y la trayectoria más corta. En algunas implementaciones, el control puede cargar experimentos de seguimiento ocular previamente almacenados y/o la trayectoria más corta, por ejemplo, desde el dispositivo 112 de almacenamiento. En otras implementaciones, el control puede usar experimentos de seguimiento ocular y/o la trayectoria más corta que ya estén cargadas. El control continúa con 1504, donde el control establece la variable Experimento_Actual al primer experimento de seguimiento ocular cargado. El control continúa con 1508 donde el control establece Página_Actual a la primera página almacenada en Experimento_Actual. En 1508, el control también carga las etapas de la trayectoria más corta en una cola temporal (Trayectoria_Temp). Luego, el control avanza a 1512.
En 1512, el control determina las distancias para la página actual usando la cola temporal. Por ejemplo, el control puede realizar el método divulgado en la figura 16 para cargar Página_Actual y calcular las distancias basándose en las etapas de la trayectoria más corta en Trayectoria_Temp. Luego, el control avanza a 1516. En 1516, el control determina si los datos de seguimiento asociados con la página actual se desviaron de la trayectoria más corta, por ejemplo, si Resultado es igual a desviación. Si es así, el control continúa con 1520; de lo contrario, el control se transfiere a 1524. En 1520, el control registra la desviación de la trayectoria para la página actual. Por ejemplo, el control almacena la desviación en Página_Actual. El control continúa con 1524.
En 1524, el control registra las distancias determinadas y los datos asociados para la página actual; por ejemplo, el control puede añadir Resultado a Página_Actual. El control continúa con 1526, donde el control actualiza Experimento_Actual basándose en los datos asociados con los datos almacenados en Página_Actual. El control avanza a 1528, donde el control determina si Experimento_Actual incluye páginas adicionales. Si es así, el control continúa con 1532; de lo contrario, el control se transfiere a 1536. En 1532, el control establece Página_Actual a la siguiente página almacenada en Experimento_Actual. Luego, el control vuelve a 1512.
En 1536, el control determina si alguna de las páginas en Experimento_Actual incluye una desviación. Si es así, el control continúa con 1540; de lo contrario, el control se transfiere a 1544. En 1540, el control establece el estado asociado con las distancias (Estado_Distancia) almacenadas en el experimento actual a fallo. El control continúa entonces con 1548. En 1544, el control establece Estado_Distancia almacenado en el experimento actual al estado del experimento actual (Experimento_Actual), por ejemplo, o bien éxito o bien fallo. El control continúa con 1548.
En 1548, el control registra el estado asociado con las distancias almacenadas en el experimento actual. Por ejemplo, el control puede añadir Estado_Distancia a Experimento_Actual. El control avanza a 1550, donde el control actualiza los experimentos de seguimiento ocular cargados basándose en los datos asociados con el experimento actual; en otras palabras, los datos almacenados en Experimento_Actual. El control continúa entonces con 1552.
En 1552, el control determina si los experimentos de seguimiento ocular cargados incluyen otro experimento. Si es así, el control continúa con 1556; de lo contrario, el control se transfiere a 1560 donde el control guarda los experimentos cargados y el control termina. En 1556, el control establece Experimento_Actual al siguiente experimento cargado. Luego, el control vuelve a 1508.
La figura 16 es un diagrama de flujo que representa un método ejemplificativo para determinar las distancias entre datos de seguimiento ocular y puntos a lo largo de la trayectoria más corta cargada para una página de la UI. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo y/o el módulo 164 de distancia.
El control comienza con 1604 al recibir datos de seguimiento ocular asociados con la página de la UI y una cola que contiene etapas de la trayectoria más corta, por ejemplo, Página_Actual y Trayectoria_Temp de 1512 de la figura 15. En 1604, el control determina el URL asociado con los datos de seguimiento ocular y establece Resultado a Nulo. El control continúa con 1608, donde el control extrae muestras de seguimiento ocular en forma de coordenadas de los datos de seguimiento ocular, por ejemplo, Página_Actual. El control continúa con 1612, donde el control traza las muestras de seguimiento ocular en una cuadrícula y genera un vector que representa las muestras. El control avanza a 1616.
En 1616, el control carga una etapa de la trayectoria más corta; por ejemplo, el control extrae una etapa de Trayectoria_Temp, luego el control compara el URL asociado con los datos de seguimiento ocular y el URL asociado con la etapa de la trayectoria más corta. El control avanza a 1620. Si los URL coinciden, el control continúa con 1624; de lo contrario, el control determina que los datos de seguimiento ocular se desvían de la trayectoria más corta y el control se transfiere a 1628. En 1628, el control establece el resultado para la determinación global (Resultado) a desviación y el control continúa con 1632. En 1632, el control emite Resultado y termina.
En 1624, el control traza las coordenadas de inicio y fin de la etapa de la trayectoria más corta en la cuadrícula. Luego, el control genera un vector de la trayectoria más corta entre los puntos inicial y final de la etapa. El control avanza a 1636, donde el control determina si hay otra etapa en la trayectoria más corta; por ejemplo, si el tamaño de Trayectoria_Temp es mayor que cero. Si es así, el control avanza a 1640; de lo contrario, el control se transfiere a 1644.
En 1640, el control compara el URL asociado con la siguiente etapa en la trayectoria más corta con el URL asociado con los datos de seguimiento ocular; por ejemplo, el control echa un vistazo a la siguiente etapa en Trayectoria_Temp sin eliminar la etapa de la cola. Luego, el control avanza a 1648. Si los URL coinciden, el control continúa con 1652; de lo contrario, el control se transfiere a 1644. En 1652, el control carga la siguiente etapa de la trayectoria más corta; por ejemplo, el control extrae una etapa de Trayectoria_Temp. Luego, el control actualiza la cuadrícula y el vector de la trayectoria más corta basándose en la siguiente etapa de la trayectoria más corta. Luego, el control vuelve a 1636.
En 1644, el control traza puntos que corresponden a las muestras de seguimiento a lo largo del vector de la trayectoria más corta. Por ejemplo, el control traza un punto para cada muestra de seguimiento ocular trazada equidistantemente a lo largo del vector de la trayectoria más corta, comenzando en el inicio del vector de la trayectoria más corta. El control continúa con 1656, donde el control establece el punto actual al punto en el inicio del vector de la trayectoria más corta. Luego, el control avanza a 1660.
En 1660, el control calcula la distancia euclidiana entre el punto actual y la muestra de seguimiento ocular que corresponde al punto actual. En 1664, el control registra las coordenadas tanto del punto actual como de la muestra de seguimiento ocular correspondiente, así como la distancia entre los dos. Por ejemplo, el control puede añadir estos valores a Resultado. Luego, el control avanza a 1668, donde el control determina si el punto actual está al final del vector de la trayectoria más corta. Si es así, el control continúa con 1632, donde el control emite Resultados y termina; de lo contrario, el control se transfiere a 1672. En 1672, el control establece el punto actual al siguiente punto en el vector de la trayectoria más corta y vuelve a 1660.
La figura 17 es un diagrama de flujo que representa un método ejemplificativo para determinar la distancia de éxito media para cada URL en un conjunto de experimentos de seguimiento ocular basándose en datos almacenados en los experimentos de seguimiento ocular. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo y/o el módulo 164 de distancia.
El control comienza con 1702. En 1702, el control obtiene experimentos de seguimiento ocular. En algunas implementaciones, el control puede cargar experimentos de seguimiento ocular previamente almacenados, por ejemplo, desde el dispositivo 112 de almacenamiento. En otras implementaciones, el control puede usar experimentos de seguimiento ocular que ya están cargados. El control continúa con 1704, donde el control establece el experimento actual al primer experimento de los experimentos de seguimiento ocular y Éxito_Temp a Nulo. El control usa Éxito_Temp para almacenar cada distancia de éxito y el URL asociado. Luego, el control avanza a 1708.
En 1708, el control carga los datos y el estado del experimento actual. El control continúa con 1712, donde el control determina si el experimento actual está marcado como un éxito; en otras palabras, el usuario de la prueba alcanzó el objetivo. Si es así, el control continúa con 1716; de lo contrario, el control se transfiere a 1720. En 1716, el control carga todas las distancias asociadas con el primer URL del experimento actual. Luego, el control avanza a 1724, donde el control añade cada distancia asociada con el URL junto con el URL a Éxito_Temp. En otras palabras, cada distancia almacenada en Éxito_Temp está vinculada a un URL. El control continúa con 1728, donde el control determina si hay otro URL en el experimento actual. Si es así, el control continúa con 1732, donde el control carga todas las distancias asociadas con el siguiente URL en el experimento actual y luego el control vuelve a 1724; de lo contrario, el control se transfiere a 1720.
En 1720, el control determina si hay otro experimento de seguimiento ocular. Si es así, el control continúa con 1736; de lo contrario, el control se transfiere a 1740. En 1736, el control carga los datos y el estado del siguiente experimento y luego vuelve a 1708. En 1740, el control determina la distancia media almacenada en Éxito_Temp para cada URL. El control continúa con 1744, donde el control emite la distancia de éxito media para cada URL en los experimentos de seguimiento ocular. Entonces el control termina.
La figura 18 es un diagrama de flujo que representa un método ejemplificativo para determinar la distancia de fallo media para cada URL en un conjunto de experimentos de seguimiento ocular basándose en datos almacenados en los experimentos de seguimiento ocular. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo y/o el módulo 164 de distancia.
El control comienza con 1802, donde el control obtiene los experimentos de seguimiento ocular. En algunas implementaciones, el control puede cargar experimentos de seguimiento ocular previamente almacenados, por ejemplo, desde el dispositivo 112 de almacenamiento. En otras implementaciones, el control puede usar experimentos de seguimiento ocular que ya están cargados. El control continúa con 1804, donde el control establece el experimento actual al primer experimento de los experimentos de seguimiento ocular y Fallo_Temp a Nulo. El control usa Fallo_Temp para almacenar cada distancia de fallo y el URL asociado. Luego, el control avanza a 1808.
En 1808, el control carga los datos y el estado del experimento actual. El control continúa con 1812, donde el control determina si el experimento actual está marcado como fallo. Un experimento puede marcarse como fallo en respuesta o bien a que el usuario de la prueba no logre alcanzar el objetivo o bien a que los datos de seguimiento se desvíen de la trayectoria más corta. Si el experimento está marcado como Fallo, el control continúa con 1816; de lo contrario, el control se transfiere a 1820. En 1816, el control carga todas las distancias asociadas con el primer URL del experimento actual. Luego, el control avanza a 1824, donde el control añade cada distancia asociada con el URL junto con el URL a Fallo_Temp. En otras palabras, cada distancia almacenada en Fallo_Temp está vinculada a un URL. El control continúa con 1828, donde el control determina si hay otro URL en el experimento actual. Si es así, el control continúa con 1832, donde el control carga todas las distancias asociadas con el siguiente URL en el experimento actual y luego el control vuelve a 1824; de lo contrario, el control se transfiere a 1820.
En 1820, el control determina si hay otro experimento de seguimiento ocular. Si es así, el control continúa con 1836; de lo contrario, el control se transfiere a 1840. En 1836, el control carga los datos y el estado del siguiente experimento y luego vuelve a 1808. En 1840, el control determina la distancia media almacenada en Fallo_Temp para cada URL. El control continúa con 1844, donde el control emite la distancia de fallo media para cada URL en los experimentos de seguimiento ocular. Entonces el control termina.
La figura 19 es un diagrama de flujo que representa un método ejemplificativo para comparar predicciones de los resultados de experimentos de seguimiento ocular con resultados previamente almacenados. Las predicciones se basan en la trayectoria más corta hasta un objetivo y un conjunto de distancias de prueba que representan una desviación aceptable con respecto a la trayectoria más corta. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo, el módulo 164 de distancia y/o el módulo 168 de predicción.
El control comienza con 1904, donde el control obtiene los experimentos de seguimiento ocular, la trayectoria más corta, y las distancias de prueba. En algunas implementaciones, el control puede cargar experimentos de seguimiento ocular previamente almacenados, la trayectoria más corta y/o distancias de prueba, por ejemplo, desde el dispositivo 112 de almacenamiento. En otras implementaciones, el control puede usar experimentos de seguimiento ocular, la trayectoria más corta, y/o distancias de prueba que ya están cargadas. El control continúa con 1908, donde el control establece el experimento actual al primer experimento de seguimiento ocular cargado y establece Predicción a Nula. El control usa Predicción para almacenar las predicciones generadas para cada URL. El control continúa con 1912, donde el control establece la página actual a la primera página almacenada en el experimento actual. En 1912, el control también carga la trayectoria más corta en una cola temporal (Trayectoria_Temp). Luego, el control avanza a 1916.
En 1916, el control genera predicciones para la página actual usando las distancias de prueba y las etapas de la trayectoria más corta almacenadas en la cola temporal (Trayectoria_Temp). Por ejemplo, el control puede realizar el método divulgado en la figura 20 para generar las predicciones. Luego, el control avanza a 1920, donde el control registra la predicción generada; por ejemplo, el control añade la predicción a Predicción. Luego, el control avanza a 1924.
En 1924, el control determina si hay otra página en el experimento actual. Si es así, el control avanza a 1928; de lo contrario, el control se transfiere a 1932. En 1928, el control establece la página actual a la siguiente página del experimento actual. Luego, el control vuelve a 1916.
En 1932, el control determina si hay otro experimento. Si es así, el control continúa con 1936; de lo contrario, el control se transfiere a 1940. En 1940, el control emite las predicciones generadas para cada URL (Predicción). Entonces el control termina.
La figura 20 es un diagrama de flujo que representa un método ejemplificativo para comparar una predicción de un resultado de un experimento de seguimiento ocular, basándose en un análisis de una única página del experimento de seguimiento ocular, con resultados previamente almacenados. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo, el módulo 164 de distancia y/o el módulo 168 de predicción.
El control comienza con 2004, al recibir una página del experimento de seguimiento ocular, distancias de prueba, y una cola que contiene etapas de la trayectoria más corta, por ejemplo, Página_Actual, Distancias_Prueba y Trayectoria_Temp de 1916 de la figura 19. En 2004, el control determina y almacena el estado del experimento (como el éxito o el fallo) asociado con la página de datos de seguimiento ocular. Por ejemplo, el control establece Estado al resultado almacenado del experimento asociado con la página recibida. El control también inicia Resultado a Nulo. El control usa Resultado para almacenar los resultados de las comparaciones de la página de datos de seguimiento ocular. El control continúa entonces con 2008.
En 2008, el control determina el URL asociado con la página de datos de seguimiento ocular. Luego, el control determina y almacena la distancia de prueba asociada con el URL determinado (Dist_Prueba). El control continúa en 2012, donde el control extrae muestras de seguimiento ocular en forma de coordenadas de los datos de seguimiento ocular (por ejemplo, Página_Actual). Luego, el control avanza a 2016, donde el control traza las muestras de seguimiento ocular en una cuadrícula y genera un vector que representa las muestras. El control continúa con 2020.
En 2020, el control carga una etapa de la trayectoria más corta; por ejemplo, el control extrae una etapa de Trayectoria_Temp. Luego, el control compara el URL asociado con los datos de seguimiento ocular y el URL asociado con la etapa de la trayectoria más corta. El control avanza a 2024. Si los URL coinciden, el control continúa con 2028; de lo contrario, el control determina que los datos de seguimiento ocular y la etapa de la trayectoria más corta no están asociados con la misma pantalla de la UI y el control termina.
En 2028, el control traza las coordenadas de inicio y fin de la etapa de la trayectoria más corta en la cuadrícula. Luego, el control genera un vector de la trayectoria más corta entre los puntos inicial y final de la etapa. El control avanza a 2032, donde determina si hay otra etapa en la trayectoria más corta; por ejemplo, el tamaño de Trayectoria_Temp es mayor que cero. Si es así, el control avanza a 2032; de lo contrario, el control se transfiere a 2040.
En 2032, el control compara el URL asociado con la siguiente etapa en la trayectoria más corta con el URL asociado con los datos de seguimiento ocular; por ejemplo, el control echa un vistazo a la siguiente etapa en Trayectoria_Temp sin eliminar la etapa de la cola. Luego, el control avanza a 2044. Si los URL coinciden, el control continúa con 2048; de lo contrario, el control se transfiere a 2040. En 2048, el control carga la siguiente etapa de la trayectoria más corta; por ejemplo, el control extrae una etapa de Trayectoria_Temp. Luego, el control actualiza la cuadrícula y el vector de la trayectoria más corta basándose en la etapa siguiente. Luego, el control vuelve a 2032.
En 2040, el control traza puntos que corresponden a las muestras de seguimiento trazadas a lo largo del vector más corto. Por ejemplo, el control traza un punto para cada muestra de seguimiento ocular trazada equidistantemente a lo largo del vector de la trayectoria más corta, comenzando en el inicio del vector. El control continúa con 2052, donde el control establece el punto actual (Punto_Actual) al punto al inicio del vector de la trayectoria más corta. Luego, el control avanza a 2056.
En 2056, el control calcula la distancia euclidiana entre Punto_Actual y la muestra de seguimiento ocular que corresponde a Punto_Actual (Dist_Calculada). El control avanza a 2060, donde el control calcula una predicción del resultado del experimento basándose en la distancia entre Punto_Actual y la muestra de seguimiento asociada y la distancia de prueba para el URL asociado con Punto_Actual y la muestra de seguimiento. Por ejemplo, el control determina si Dist_Calculada es mayor que Dist_Prueba. Si es así, el control predice que el experimento es un fallo; de lo contrario, el control predice que el experimento es un éxito. Luego, el control avanza a 2064.
En 2064, el control compara la predicción calculada con el estado previamente almacenado del experimento (Estado) y clasifica la predicción. Por ejemplo, si la predicción y Estado coinciden, el control determina que la predicción es un éxito. Si el control predijo un experimento fallido y Estado indica un éxito, el control determina que la predicción es un falso positivo. Por el contrario, si el control predijo un experimento exitoso y Estado indica un fallo, el control determina que la predicción es un falso negativo. A continuación, el control almacena el estado de predicción determinado. Por ejemplo, el control añade el estado determinado junto con el URL asociado y la distancia de prueba (Dist_Prueba) a Resultado. Luego, el control avanza a 2068.
En 2068, el control determina si Punto_Actual está al final del vector de la trayectoria más corta. Si es así, el control continúa con 2072, donde el control emite Resultado y termina; de lo contrario, el control se transfiere a 2076. En 2076, el control establece el punto actual al siguiente punto en el vector de la trayectoria más corta. Luego, el control vuelve a 2056.
La figura 21 es un diagrama de flujo que representa un método ejemplificativo para determinar las etapas de la trayectoria más corta hasta un objetivo en una UI que puede requerir refuerzo. La determinación se basa en experimentos de seguimiento ocular y distancias de refuerzo predeterminadas para cada URL en la UI. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo.
El control comienza con 2104, donde el control obtiene experimentos de seguimiento ocular, la trayectoria más corta, y distancias de refuerzo. En algunas implementaciones, el control puede cargar experimentos de seguimiento ocular previamente almacenados, la trayectoria más corta, y/o distancias de refuerzo, por ejemplo, desde el dispositivo 112 de almacenamiento. El control continúa con 2108, donde el control establece el experimento actual al primer experimento de seguimiento ocular cargado y Refuerzo a Nulo. El control usa Refuerzo para almacenar información sobre qué etapas requieren refuerzo. El control continúa con 2112, donde el control establece la página actual a la primera página almacenada en el experimento actual. En 2112, el control también carga la trayectoria más corta en una cola temporal (Trayectoria_Temp). Luego, el control avanza a 2116.
En 2116, el control genera datos de refuerzo que identifican las etapas asociadas con la página actual que pueden requerir refuerzo basándose en los datos de seguimiento ocular de la página actual y la distancia de refuerzo. Por ejemplo, el control puede realizar el método divulgado en la figura 21 para identificar las etapas. Luego, el control avanza a 2120, donde el control registra los datos de refuerzo generados; por ejemplo, el control añade los datos a Refuerzo. Luego, el control avanza a 2124.
En 2124, el control determina si hay otra página en el experimento actual. Si es así, el control avanza a 2128; de lo contrario, el control se transfiere a 2132. En 2128, el control establece la página actual a la siguiente página del experimento actual. Luego, el control vuelve a 2116.
En 2132, el control determina si hay otro experimento. Si es así, el control continúa con 2136; de lo contrario, el control se transfiere a 2140. En 2136, el control establece el siguiente experimento como el experimento actual y luego el control vuelve a 2112. En 2140, el control emite los datos de refuerzo (Refuerzo). Entonces el control termina.
La figura 22 es un diagrama de flujo que representa un método ejemplificativo para determinar las etapas de la trayectoria más corta asociada con una página de un experimento de seguimiento ocular que puede necesitar refuerzo. Aunque el método ejemplificativo se describe a continuación con respecto al dispositivo 110 de prueba y mejora de la UI, el método puede implementarse en otros dispositivos y/o sistemas. En diversas implementaciones, el control puede realizarse por el módulo 160 de refuerzo.
El control comienza con 2204, al recibir una página del experimento de seguimiento ocular, distancias de refuerzo, y una cola que contiene etapas de la trayectoria más corta, por ejemplo, Página_Actual, Distancias_Prueba y Trayectoria_Temp desde 2116 de la figura 21. En 2204, el control determina el URL asociado con la página de datos de seguimiento ocular. El control avanza a 2208, donde el control determina la distancia de refuerzo para el URL asociado con la página de los datos de seguimiento ocular y establece Refuerzo a Nulo. El control usa Refuerzo para almacenar información sobre qué etapas requieren refuerzo. El control continúa entonces con 2212.
En 2212, el control extrae muestras de seguimiento ocular en forma de coordenadas de los datos de seguimiento ocular, por ejemplo, Página_Actual. Luego, el control avanza a 2216, donde el control traza las muestras de seguimiento ocular extraídas en una cuadrícula y genera un vector que representa las muestras. El control continúa con 2220.
En 2220, el control carga una etapa de la trayectoria más corta, por ejemplo, el control extrae una etapa de Trayectoria_Temp. Luego, el control compara el URL asociado con los datos de seguimiento ocular y el URL asociado con la etapa de la trayectoria más corta cargada. El control avanza a 2224. Si los URL coinciden, el control continúa con 2228; de lo contrario, el control determina que los datos de seguimiento ocular y la etapa de la trayectoria más corta no están asociados con la misma pantalla de la UI y el control termina.
En 2228, el control traza las coordenadas de inicio y fin de la etapa de la trayectoria más corta cargada en la cuadrícula. Luego, el control genera un vector de la trayectoria más corta entre el punto inicial y el punto final de la etapa. El control avanza a 2232, donde el control determina si hay otra etapa en la trayectoria más corta; por ejemplo, el tamaño de Trayectoria_Temp es mayor que cero. Si es así, el control avanza a 2236; de lo contrario, el control se transfiere a 2240.
En 2232, el control compara el URL asociado con la siguiente etapa en la trayectoria más corta con el URL asociado con los datos de seguimiento ocular; por ejemplo, el control echa un vistazo a la siguiente etapa en Trayectoria_Temp sin eliminar la etapa de la cola. Luego, el control avanza a 2244. Si los URL coinciden, el control continúa con 2248; de lo contrario, el control se transfiere a 2240. En 2248, el control carga la siguiente etapa de la trayectoria más corta; por ejemplo, el control extrae una etapa desde Trayectoria_Temp. El control actualiza la cuadrícula y el vector de la trayectoria más corta basándose en la etapa de la trayectoria más corta cargada. Luego, el control vuelve a 2232.
En 2240, el control traza puntos que corresponden a las muestras de seguimiento a lo largo del vector más corto. Por ejemplo, el control traza un punto para cada muestra de seguimiento ocular trazada equidistantemente a lo largo del vector de la trayectoria más corta, comenzando en el inicio del vector. El control continúa con 2252, donde el control establece el punto actual al punto al inicio del vector de la trayectoria más corta. Luego, el control avanza a 2256.
En 2256, el control calcula la distancia euclidiana (Dist_Calculada) entre el punto actual y la muestra de seguimiento ocular que corresponde al punto actual. El control avanza a 2260, donde el control determina la etapa de la trayectoria más corta asociada con el punto actual. El control continúa entonces con 2264.
En 2264, el control determina si la distancia calculada (Dist_Calculada) es mayor que la distancia de refuerzo (Dist_Refuerzo). Si es así, el control determina que la etapa puede necesitar refuerzo y el control continúa con 2268; de lo contrario, el control se transfiere a 2272. En 2268, el control añade una referencia a la etapa de la trayectoria más corta asociada con el punto actual y una indicación de que la etapa puede requerir refuerzo a Refuerzo. El control continúa entonces con 2276. En 2272, el control añade una referencia a la etapa de la trayectoria más corta asociada con el punto actual y una indicación de que la etapa no requiere refuerzo a Refuerzo. Luego, el control avanza a 2276.
En 2276, el control determina si el punto actual está al final del vector de la trayectoria más corta. Si es así, el control continúa con 2280; de lo contrario, el control se transfiere a 2284. En 2284, el control establece el punto actual en el siguiente punto en el vector de la trayectoria más corta. Luego, el control vuelve a 2256. En 2280, el control emite los resultados de refuerzo determinados para las etapas de la trayectoria más corta asociadas con los datos de seguimiento ocular; por ejemplo, el control emite Refuerzo. Entonces el control termina.
Las figuras 23A-23E son representaciones visuales del procedimiento de generación de un vector de seguimiento ocular ejemplificativo y un vector de la trayectoria más corta ejemplificativo para una página de una UI. La figura 23A muestra una página 2302 ejemplificativa de una UI. Las muestras 2310-2319 de seguimiento ocular primera a décima de un experimento de seguimiento ocular que corresponden a la página 2302 se trazan en la UI. Cada muestra de seguimiento ocular representa el punto de enfoque de un usuario de prueba que navega por la UI en el momento en que se capturó la muestra. Como ejemplo, las muestras 2310-2319 de seguimiento ocular pueden representar la ubicación de un cursor de ratón que se capturó una vez cada dos segundos. Se genera un vector 2320 de seguimiento ocular que incluye cada una de las muestras 2310-2319 de seguimiento ocular trazadas. El vector de seguimiento ocular puede ser lineal por partes o suavizado y es representativo de la trayectoria tomada por el usuario de prueba durante el experimento de seguimiento ocular.
En la figura 23B, en la página 2302 se trazan un primer punto 2330 de la trayectoria más corta que corresponde al comienzo de una primera etapa de la trayectoria más corta y un segundo punto 2331 de la trayectoria más corta que corresponde al final de la primera etapa de la trayectoria más corta. En la figura 23C, en la página 2302 se traza un tercer punto 2332 de la trayectoria más corta que corresponde al final de una segunda etapa de la trayectoria más corta que comenzó en el segundo punto 2331 de la trayectoria más corta. En la figura 23D, en la página 2302 se traza un cuarto punto 2333 de la trayectoria más corta que corresponde al final de una tercera etapa de la trayectoria más corta que comenzó en el tercer punto 2332 de la trayectoria más corta.
En la figura 23E, se muestra la trayectoria 2335 más corta en la página 2302. La trayectoria 2335 más corta es un vector entre el primer punto 2330 de la trayectoria más corta, el segundo punto 2331 de la trayectoria más corta, el tercer punto 2332 de la trayectoria más corta, y el cuarto punto 2333 de la trayectoria más corta. La trayectoria 2335 más corta representa una trayectoria en la página 2302 de la UI que corresponde a la trayectoria más corta.
Los puntos 2340-2349 de la trayectoria más corta primero a décimo se trazan equidistantemente a lo largo de la trayectoria 2335 más corta. Cada punto de los puntos 2340-2349 de la trayectoria más corta corresponde a una muestra numerada y etiquetada de manera similar de las muestras 2310-2319 de seguimiento ocular trazadas (es decir, los dígitos finales coinciden). Por ejemplo, el primer punto 2340 de la trayectoria más corta corresponde a la primera muestra 2310 de seguimiento ocular y el segundo punto 2342 de la trayectoria más corta corresponde a la segunda muestra 2311 de seguimiento ocular.
Los puntos 2340-2349 del vector de la trayectoria más corta y las correspondientes muestras 2310-2319 de seguimiento ocular representadas en la figura 23E se pueden usar para determinar la distancia de refuerzo para la página 2302. Por ejemplo, las distancias respectivas entre los puntos 2340-2349 del vector de la trayectoria más corta y las muestras 2310-2319 de seguimiento ocular correspondientes pueden difundir hasta qué punto se desvió el usuario de prueba de la trayectoria más corta. Dependiendo del resultado del experimento de seguimiento ocular, estas distancias se pueden usar para determinar la distancia de éxito media o la distancia de fallo media para la página 2302. Además, estas distancias se pueden usar para someter a prueba las distancias de refuerzo generadas aleatoriamente para la página 2302.
MIGRACIÓN DE CLIENTES
La figura 24 es un diagrama de bloques de un sistema 2400 de migración de clientes ejemplificativo. El sistema 2400 de migración de clientes incluye una plataforma 2402 de respuesta de voz interactiva (IVR). La plataforma 2402 de IVR incluye un dispositivo 2404 de IVR y un servidor 2408 de IVR. El sistema 2400 de migración de clientes también puede incluir un servidor 2412 de aplicaciones web y un servidor 2416 de navegación conjunta.
Una organización puede usar el dispositivo 2404 de IVR para implementar un número de atención al cliente al que puede llamar un usuario para solicitar información o realizar una tarea. Por ejemplo, el usuario puede usar un teléfono 2420 para acceder al dispositivo 2404 de IVR a través de una red 2422 telefónica pública conmutada (PSTN), voz sobre protocolo de Internet (VoIP), o una combinación de los dos. El dispositivo 2404 de IVR recibe una solicitud de voz del usuario y se comunica con el servidor 2408 de IVR para determinar una respuesta adecuada a la solicitud del usuario.
En algunas implementaciones, el dispositivo 2404 de IVR puede usar el módulo 2424 de reconocimiento de voz para traducir entradas verbales proporcionadas por el usuario a través del teléfono 2420 a un navegador 2426 de voz XML. En otras implementaciones, el dispositivo 2404 de IVR puede subcontratar la traducción de las entradas verbales a un servicio remoto. Por ejemplo, el dispositivo 2404 de IVR puede transmitir las entradas verbales recibidas por el navegador 2426 de voz XML al servicio remoto y recibir una traducción o transcripción de las entradas verbales desde el servicio remoto. El navegador 2426 de voz XML proporciona la traducción a una aplicación 2428 de voz XML del servidor 2408 de IVR.
La aplicación 2428 de voz XML puede determinar que el usuario puede completar la solicitud usando una aplicación 2430 web alojada en el servidor 2412 de aplicaciones web. En respuesta a determinar que el usuario puede completar la solicitud usando la aplicación 2430 web, la aplicación 2428 de voz XML solicita una configuración de navegación conjunta desde el módulo 2432 de configuración de navegación conjunta. El módulo 2432 de configuración de navegación conjunta proporciona una configuración de navegación conjunta asociada con la solicitud del usuario a la aplicación 2428 de voz XML. La configuración de navegación conjunta se usa para establecer una sesión de navegación conjunta en el servidor 2416 de navegación conjunta. Una sesión de navegación conjunta proporciona a la aplicación 2428 de voz XML el estado actual de la aplicación 2430 web a la que accede el usuario; en otras palabras, el estado actual de una UI tal como es vista por el usuario.
Al recibir la configuración de navegación conjunta, la aplicación 2428 de voz XML transmite una instrucción que indica al usuario que acceda a la aplicación 2430 web, inicie una sesión de navegación conjunta y proporcione al dispositivo 2404 de IVR el ID de sesión de la sesión de navegación conjunta. El navegador 2426 de voz XML recibe la instrucción y genera una instrucción de audio para el usuario; por ejemplo, el navegador 2426 de voz XML puede usar el módulo 2436 de texto a voz para generar la instrucción de audio.
El usuario puede acceder a la aplicación 2430 web usando un dispositivo 2438 informático a través de Internet 2440. El dispositivo 2438 informático puede ser un ordenador de sobremesa, un ordenador portátil, una tableta, un teléfono inteligente, o cualquier otro dispositivo informático que puede acceder al servidor 2412 de aplicaciones web. En algunas implementaciones, el usuario puede hacer clic en un botón dentro de la UI de la aplicación 2430 web cargada para iniciar la sesión de navegación conjunta.
En respuesta a recibir la solicitud para iniciar una sesión de navegación conjunta, la aplicación 2430 web usa un cliente 2442 de navegación conjunta del servidor web para comunicarse con el servidor 2416 de navegación conjunta para iniciar una sesión 2444 de navegación conjunta. Al iniciar la sesión 2444 de navegación conjunta, el servidor de navegación conjunta transmite el ID de sesión de la sesión 2444 de navegación conjunta al cliente 2442 de navegación conjunta del servidor web. La aplicación 2430 web muestra el ID de sesión en la UI de la aplicación 2430 web. Al recibir el ID de sesión de la sesión 2444 de navegación conjunta, el cliente 2442 de navegación conjunta del servidor web envía el DOM del estado actual de la UI de la aplicación 2430 web a la sesión 2444 de navegación conjunta. Cada vez que cambia el estado de la UI de la aplicación 2430 web, el cliente 2442 de navegación conjunta del servidor web envía un nuevo DOM a la sesión 2444 de navegación conjunta.
El usuario puede proporcionar el ID de sesión al dispositivo 2404 de IVR. El navegador 2426 de voz XML traduce el ID de sesión y lo proporciona a la aplicación 2428 de voz XML. La aplicación 2428 de voz XML proporciona el ID de sesión traducido a un navegador 2446 sin encabezado. El navegador 2446 sin encabezado usa un cliente 2448 de navegación conjunta de IVR para transmitir el ID de sesión traducido a la sesión 2444 de navegación conjunta. El servidor 2416 de navegación conjunta, el cliente 2442 de navegación conjunta del servidor web, la sesión 2444 de navegación conjunta, y el cliente 2448 de navegación conjunta de IVR forman una plataforma de navegación conjunta. En algunas implementaciones, la plataforma de navegación conjunta puede ser proporcionada por un servicio remoto, que puede hacerse funcionar por un tercero.
En respuesta a recibir el ID de sesión, la sesión 2444 de navegación conjunta transmite el DOM del estado actual de la UI de la aplicación 2430 web al cliente 2448 de navegación conjunta de IVR, que pasa el DOM al navegador 2446 sin encabezado. El navegador 2446 sin encabezado proporciona el DOM a la aplicación 2428 de voz XML. La aplicación 2428 de voz XML puede usar el navegador 2446 sin encabezado y el cliente 2448 de navegación conjunta de IVR para obtener el DOM actual de la sesión 2444 de navegación conjunta. De esta manera, la aplicación de voz XML puede determinar el estado actual de la UI de la aplicación 2430 web.
La aplicación 2428 de voz XML puede usar el módulo 2432 de configuración de navegación conjunta para proporcionar instrucciones y refuerzos al usuario basándose en el objetivo asociado con la solicitud del usuario y el estado actual de la UI. Por ejemplo, el módulo 2432 de configuración de navegación conjunta incluye información sobre el objetivo, tal como la trayectoria más corta hasta el objetivo, instrucciones para cada etapa de la trayectoria más corta y cualesquiera refuerzos asociados con la trayectoria más corta. En algunas implementaciones, el módulo 2432 de configuración de navegación conjunta puede incluir información generada por el dispositivo 110 de prueba y mejora de la UI del sistema 100. En otras implementaciones, el módulo 2432 de configuración de navegación conjunta puede incluir información generada por otro dispositivo y/o sistema.
La figura 25 es un diagrama de secuencia que representa solicitudes ejemplificativas y respuestas asociadas entre el usuario, el dispositivo 2404 de IVR, la aplicación 2428 de voz XML, el módulo 2432 de configuración de navegación conjunta, el navegador 2446 sin encabezado, el cliente 2448 de navegación conjunta de IVR, el servidor 2416 de navegación conjunta, y el servidor 2412 de aplicaciones web durante un ejemplo de inicio de una sesión de navegación conjunta.
El diagrama de secuencia comienza proporcionando el usuario una solicitud de audio para una transacción 2510 al dispositivo 2404 de IVR. El dispositivo 2404 de IVR traduce la solicitud usando el módulo 2424 de reconocimiento de voz y transmite la solicitud 2514 traducida a la aplicación 2428 de voz XML. En respuesta a recibir la solicitud traducida, la aplicación 2428 de voz XML solicita una configuración 2516 de navegación conjunta asociada con la solicitud traducida desde el módulo 2432 de configuración de navegación conjunta. El módulo 2432 de configuración de navegación conjunta responde proporcionando una configuración 2520 de navegación conjunta a la aplicación 2428 de voz XML.
En respuesta a recibir la configuración de navegación conjunta, la aplicación 2428 de voz XML transmite una instrucción 2524 de navegación conjunta al dispositivo 2404 de IVR. Luego, el dispositivo 2404 de IVR proporciona al usuario una instrucción 2528 de navegación conjunta que indica al usuario que inicie una sesión de navegación conjunta usando la aplicación 2430 web y proporcione al dispositivo 2404 de IVR el ID de sesión de la sesión de navegación conjunta. Por ejemplo, el dispositivo 2404 de IVR puede usar el módulo 2436 de texto a voz para generar una instrucción de audio que se presenta al usuario a través del teléfono 2420. Luego, el dispositivo 2404 de IVR espera 2532 una respuesta del usuario, por ejemplo, que el usuario proporcione un ID de sesión de la sesión de navegación conjunta.
Al escuchar las instrucciones para iniciar una sesión de navegación conjunta, el usuario envía una solicitud para iniciar una sesión 2536 de navegación conjunta al servidor 2412 de aplicaciones web. En respuesta a recibir la solicitud para iniciar una sesión de navegación conjunta, el servidor 2412 de aplicaciones web transmite una solicitud para una sesión 2540 de navegación conjunta al servidor 2416 de navegación conjunta. En respuesta a recibir la solicitud de sesión de navegación conjunta, el servidor 2416 de navegación conjunta comienza una sesión de navegación conjunta y devuelve el ID de sesión de la sesión 2544 de navegación conjunta al servidor 2412 de aplicaciones web. En respuesta a recibir el ID de sesión, el servidor 2412 de aplicaciones web proporciona el ID 2548 de sesión al usuario. Por ejemplo, el servidor 2412 de aplicaciones web muestra el ID de sesión en la UI de la aplicación 2430 web.
Luego, el usuario proporciona el ID 2552 de sesión al dispositivo 2404 de IVR. En respuesta a recibir el ID de sesión del usuario, el dispositivo 2404 de IVR traduce el ID de sesión y transmite el ID 2556 de sesión traducido a la aplicación 2428 de voz XML. La aplicación 2428 de voz XML transmite una solicitud para conectarse a la sesión 2560 de navegación conjunta al navegador 2446 sin encabezado. La solicitud para conectarse a la sesión de navegación conjunta incluye el ID de sesión traducido. El navegador 2446 sin encabezado envía la solicitud para conectarse a la sesión 2564 de navegación conjunta al cliente 2448 de navegación conjunta de IVR. En respuesta a recibir la solicitud para conectarse, el cliente 2448 de navegación conjunta de IVR transmite una solicitud 2568 para conectarse a la sesión de navegación conjunta al servidor 2416 de navegación conjunta.
En respuesta a recibir la solicitud para conectarse, el servidor 2416 de navegación conjunta recupera el DOM actual de la sesión 2444 de navegación conjunta y transmite el DOM 2572 actual al cliente 2448 de navegación conjunta de IVR, que luego proporciona el DOM 2576 actual al navegador 2446 sin encabezado. El navegador 2446 sin encabezado proporciona entonces el DOM 2580 actual a la aplicación 2428 de voz XML. La aplicación 2428 de voz XML usa el DOM actual para monitorizar el progreso del usuario con respecto a alcanzar el objetivo en la UI.
La figura 26 es un diagrama de secuencia de navegación conjunta ejemplificativo que representa solicitudes ejemplificativas y respuestas asociadas entre el usuario, el dispositivo 2404 de IVR, la aplicación 2428 de voz XML, el módulo 2432 de configuración de navegación conjunta, el navegador 2446 sin encabezado, el cliente 2448 de navegación conjunta de IVR, el servidor 2416 de navegación conjunta, y el servidor 2412 de aplicaciones web durante una parte de una sesión de navegación conjunta ejemplificativa. Durante la parte de la sesión de navegación conjunta descrita en el diagrama 2600 de secuencia de navegación conjunta, se presenta una instrucción al usuario con respecto a una acción asociada con una etapa en la trayectoria más corta hasta un objetivo en la UI, y la aplicación 2428 de voz XML monitoriza el progreso del usuario y proporciona un refuerzo para ayudar al usuario a completar la acción asociada con la etapa.
El diagrama de secuencia de navegación conjunta comienza solicitando la aplicación 2428 de voz XML datos 2603 de configuración para el estado actual de la UI desde el módulo 2432 de configuración de navegación conjunta. En respuesta, el módulo 2432 de configuración de navegación conjunta proporciona a la aplicación 2428 de voz XML una instrucción 2606 asociada con la etapa actual de la trayectoria más corta asociada con el estado actual de la UI, por ejemplo, “Introduzca su nombre de usuario”. La aplicación 2428 de voz XML proporciona entonces la instrucción 2609 al dispositivo 2404 de IVR. El dispositivo 2404 de IVR presenta la instrucción 2612 al usuario. Por ejemplo, el dispositivo 2404 de IVR puede usar el módulo 2436 de texto a voz para generar una instrucción de audio que se presenta al usuario a través del teléfono 2420.
Después de que la aplicación 2428 de voz XML proporciona la instrucción 2609 al dispositivo 2404 de IVR, la aplicación 2428 de voz XML se retrasa durante un período predeterminado y luego comienza a monitorizar el DOM 2615 de la sesión 2444 de navegación conjunta. Específicamente, la aplicación 2428 de voz XML solicita el DOM 2618 desde el navegador 2446 sin encabezado. Al recibir la solicitud para el DOM 2618, el navegador 2446 sin encabezado solicita el DOM 2621 del cliente 2448 de navegación conjunta de IVR, lo que hace que el cliente 2448 de navegación conjunta de IVR transmita una solicitud 2624 al servidor 2416 de navegación conjunta para el DOM. En respuesta a recibir la solicitud 2624 para el DOM desde el cliente 2448 de navegación conjunta de IVR, el servidor 2416 de navegación conjunta transmite el DOM 2627 actual de la sesión 2444 de navegación conjunta al cliente 2448 de navegación conjunta de IVR. El cliente 2448 de navegación conjunta de IVR proporciona el DOM 2630 actual al navegador 2446 sin encabezado, que a su vez proporciona el DOM 2633 actual a la aplicación 2428 de voz XML. De esta manera, la aplicación 2428 de voz XML puede determinar si el usuario ha completado la acción solicitada.
En respuesta a determinar que el DOM no indica que el usuario ha realizado la acción indicada, la aplicación 2428 de voz XML solicita un refuerzo 2636 asociado con la etapa actual desde el módulo 2432 de configuración de navegación conjunta. En respuesta a recibir la solicitud del refuerzo 2636, el módulo 2432 de configuración de navegación conjunta proporciona un refuerzo 2639 asociado con la etapa actual a la aplicación 2428 de voz XML. Por ejemplo, el refuerzo puede ser una instrucción que indica la ubicación de un campo de entrada de datos que corresponde a la acción indicada.
En respuesta a recibir el refuerzo 2639, la aplicación 2428 de voz XML determina la ubicación relativa 2642 de las coordenadas incluidas en el refuerzo. La aplicación 2428 de voz XML proporciona entonces el refuerzo 2645 al dispositivo 2404 de IVR que presenta el refuerzo 2648 al usuario. Por ejemplo, el dispositivo 2404 de IVR puede usar el módulo 2436 de texto a voz para generar un refuerzo de audio.
Al escuchar el refuerzo de audio, el usuario puede realizar la acción 2651 inicialmente indicada. Por ejemplo, el usuario puede introducir un nombre de usuario en el campo de entrada de texto apropiado de la UI. En respuesta a que el usuario introduce texto en un campo de entrada de datos de texto, el estado de la UI cambia y el servidor 2412 de aplicaciones web proporciona un DOM 2654 actualizado al servidor 2416 de navegación conjunta.
Después de proporcionar el refuerzo 2645 al dispositivo 2404 de IVR, la aplicación 2428 de voz XML se retrasa durante un período predeterminado y luego comienza a monitorizar el DOM 2657 solicitando el DOM 2660 del navegador 2446 sin encabezado que solicita el DOM 2663 del cliente 2448 de navegación conjunta de IVR. En respuesta a recibir la solicitud para el DOM 2663, el cliente 2448 de navegación conjunta de IVR transmite una solicitud para el DOM 2666 al servidor 2416 de navegación conjunta. En respuesta a recibir la solicitud para el DOM 2666, el servidor 2416 de navegación conjunta transmite el<d>O<m>2669 actual al cliente 2448 de navegación conjunta de IVR. Al recibir el DOM 2669 actual, el cliente 2448 de navegación conjunta de IVR proporciona el DOM 2672 actual al navegador 2446 sin encabezado, que a su vez proporciona el DOM 2675 actual a la aplicación 2428 de voz XML. En respuesta a recibir el DOM 2675 actual, la aplicación 2428 de voz XML determina si se ha completado la acción inicialmente indicada. Si es así, la aplicación 2428 de voz XML avanza a la siguiente etapa 2678 por la trayectoria más corta. El sistema 2400 de migración de clientes continúa de esta manera, hasta que la aplicación 2428 de voz XML determina que el usuario ha alcanzado el objetivo.
Las figuras 27A-27D son representaciones de una sesión de navegación conjunta ejemplificativa del sistema 2400 de migración de clientes. En la figura 27A, se muestra la salida de una pantalla del dispositivo 2438 informático que muestra un primer estado 2702 de la UI de la aplicación 2430 web. Por ejemplo, el primer estado 2702 es el estado inicial de la UI de la aplicación 2430 web. El dispositivo 2404 de IVR genera una primera instrucción 2704 de audio a través del teléfono 2420 que indica al usuario que haga clic en un enlace 2705 de navegación conjunta ubicado en el primer estado 2702 para iniciar una sesión de navegación conjunta. En respuesta a que el usuario haga clic en el enlace 2705 de navegación conjunta, el servidor 2412 de aplicaciones web inicia la sesión 2444 de navegación conjunta en el servidor 2416 de navegación conjunta. En respuesta al inicio de la sesión 2444 de navegación conjunta, el servidor 2416 de navegación conjunta proporciona al servidor 2412 de aplicaciones web el ID de sesión de la sesión 2444 de navegación conjunta.
En la figura 27B, en respuesta a recibir el ID de sesión de la sesión 2444 de navegación conjunta, la aplicación 2430 web cambia el estado de la UI de tal manera que la salida de la pantalla del dispositivo 2438 informático muestra un segundo estado 2706 de la UI de la aplicación 2430 web. El segundo estado 2706 de la UI incluye una ventana 2710 que contiene el ID de sesión de la sesión 2444 de navegación conjunta (123456). En respuesta a generar la primera instrucción 2704 de audio, el dispositivo 2404 de IVR genera una segunda instrucción 2708 de audio a través del teléfono 2420 que solicita al usuario que proporcione al dispositivo 2404 de IVR el ID de sesión de la sesión 2444 de navegación conjunta.
En la figura 27C, en respuesta a que el usuario haga clic en un botón Aceptar en la ventana 2710, la aplicación 2430 web cambia el estado de la UI, de modo que la pantalla del dispositivo 2438 informático muestra el primer estado 2702. En otras palabras, la salida de la pantalla del dispositivo informático ya no incluye la ventana 2710. En respuesta al cambio del estado de la UI, el servidor 2412 de aplicaciones web proporciona un DOM del primer estado 2702 al servidor 2416 de navegación conjunta. En respuesta a que el usuario proporciona al dispositivo 2404 de IVR el ID de sesión de la sesión 2444 de navegación conjunta, el dispositivo 2404 de IVR proporciona al servidor 2408 de IVR el ID de sesión.
Luego, el servidor 2408 de IVR se conecta a la sesión 2444 de navegación conjunta y recibe el DOM actual de la sesión de navegación conjunta, o, por ejemplo, el DOM 2702 del primer estado. El servidor 2408 de IVR, basándose en el DOM 2702 del primer estado y los datos de instrucción del módulo 2432 de configuración de navegación conjunta, hace que el dispositivo 2404 de IVR genere una tercera instrucción 2714 de audio. La tercera instrucción 2714 de audio indica al usuario que introduzca su nombre de usuario en la aplicación web.
En la figura 27D, en respuesta a determinar que el usuario no ha completado la acción asociada con la tercera instrucción 2714 de audio, el servidor 2408 de IVR, basándose en el DOM 2702 del primer estado y la información de refuerzo del módulo 2432 de configuración de navegación conjunta, hace que el dispositivo 2404 de IVR genere un refuerzo 2716 de audio. El refuerzo 2716 de audio indica al usuario que realice la acción original y proporciona al usuario información adicional relevante para completar la acción. Por ejemplo, el refuerzo 2716 de audio proporciona al usuario la ubicación del campo de entrada de datos que se usará para introducir su nombre de usuario. De esta manera, el servidor 2408 de IVR puede guiar al usuario por la aplicación 2430 web hasta un objetivo específico.
FARMACIA DE ALTO VOLUMEN
La figura 28 es un diagrama de bloques de una implementación ejemplificativa de un sistema 2800 para una farmacia de alto volumen. Si bien el sistema 2800 se describe generalmente como que se implementa en una farmacia de alto volumen o un centro de cumplimiento (por ejemplo, una farmacia de pedidos por correo, una farmacia de entrega directa, etc.), el sistema 2800 y/o los componentes del sistema 2800 pueden implementarse de otro modo (por ejemplo, en una farmacia de menor volumen, etc.). Una farmacia de alto volumen puede ser una farmacia que puede cumplimentar al menos algunas prescripciones mecánicamente. El sistema 2800 puede incluir un dispositivo 2802 de administrador de beneficios y un dispositivo 2806 de farmacia en comunicación entre sí directamente y/o a través de una red 2804.
El sistema 2800 también puede incluir uno o más dispositivos 2808 de usuario. Un usuario, tal como un farmacéutico, paciente, analista de datos, administrador de plan de salud, etc., puede acceder al dispositivo 2802 de administrador de beneficios o al dispositivo 2806 de farmacia usando el dispositivo 2808 de usuario. El dispositivo 2808 de usuario puede ser un ordenador de sobremesa, un ordenador portátil, una tableta, un teléfono inteligente, etc.
El dispositivo 2802 de administrador de beneficios es un dispositivo operado por una entidad que es al menos parcialmente responsable de la creación y/o gestión del beneficio de medicamento o farmacia. Si bien la entidad que opera el dispositivo 2802 de administrador de beneficios es típicamente un administrador de beneficios de farmacia (PBM), otras entidades pueden operar el dispositivo 2802 de administrador de beneficios en nombre de sí mismas o de otras entidades (tales como<p>B<m>). Por ejemplo, el dispositivo 2802 de administrador de beneficios puede operarse por un plan de salud, una cadena de farmacias minoristas, un mayorista de medicamentos, una empresa de análisis de datos u otro tipo de empresa relacionada con software, etc. En algunas implementaciones, un PBM que proporciona beneficio a la farmacia puede proporcionar uno o más beneficios adicionales, incluyendo un beneficio médico o de salud, un beneficio dental, un beneficio de visión, un beneficio de bienestar, un beneficio de radiología, un beneficio de cuidado de mascotas, un beneficio de seguro, un beneficio de atención a largo plazo, un beneficio de hogar de ancianos, etc. El PBM puede, además de sus operaciones de PBM, operar una o más farmacias. Las farmacias pueden ser farmacias minoristas, farmacias de pedidos por correo, etc.
Algunas de las operaciones del PBM que opera el dispositivo 2802 de administrador de beneficios pueden incluir las siguientes actividades y procedimientos. Un miembro (o una persona en nombre del miembro) de un plan de beneficios de farmacia puede obtener un medicamento con prescripción en una ubicación de farmacia minorista (por ejemplo, una ubicación de una tienda física) de un farmacéutico o un técnico farmacéutico. El miembro también puede obtener el medicamento con prescripción mediante entrega de medicamentos por correo desde una ubicación de farmacia de pedido por correo, tal como el sistema 2800. En algunas implementaciones, el miembro puede obtener el medicamento con prescripción directa o indirectamente mediante el uso de una máquina, tal como un quiosco, una unidad expendedora, un dispositivo electrónico móvil, o un tipo diferente de dispositivo mecánico, dispositivo eléctrico, dispositivo de comunicación electrónica, y/o dispositivo informático. El sistema 2800 puede llenar una máquina de este tipo con el medicamento con prescripción en un paquete de prescripción, que puede incluir múltiples componentes de prescripción. El plan de beneficios de farmacia se administra por o a través del dispositivo 2802 de administrador de beneficios.
El miembro puede tener un copago para el medicamento con prescripción que refleja una cantidad de dinero que el miembro es responsable de pagar a la farmacia por el medicamento con prescripción. El dinero pagado por el miembro a la farmacia puede provenir, por ejemplo, de fondos personales del miembro, una cuenta de ahorros para la salud (HSA) del miembro o de la familia del miembro, un acuerdo de reembolso de salud (HRA) del miembro o de la familia del miembro, o una cuenta de gastos flexible (FSA) del miembro o de la familia del miembro. En algunos casos, un empleador del miembro puede financiar o reembolsar directa o indirectamente al miembro los copagos.
La cantidad del copago requerido por el miembro puede variar entre diferentes planes de beneficios de farmacia que tienen diferentes patrocinadores o clientes del plan y/o para diferentes medicamentos con prescripción. El copago del miembro puede ser un copago fijo (en un ejemplo, $10), un seguro conjunto (en un ejemplo, 10 %) y/o un deducible (por ejemplo, responsabilidad por los primeros $500 del gasto anual en medicamentos con prescripción, etc.) para ciertos medicamentos con prescripción, ciertos tipos y/o clases de medicamentos con prescripción, y/o todos los medicamentos con prescripción. El copago puede almacenarse en un dispositivo 2810 de almacenamiento o determinarse mediante el dispositivo 2802 de administrador de beneficios.
En algunos casos, es posible que el miembro no pague el copago o que sólo pague una parte del copago por el medicamento con prescripción. Por ejemplo, si el coste habitual y acostumbrado de una versión genérica de un medicamento con prescripción es de $4, y el copago fijo del miembro es de $20 por el medicamento con prescripción, es posible que el miembro sólo deba pagar $4 para recibir el medicamento con prescripción. En otro ejemplo que involucra una reclamación de compensación laboral, es posible que el miembro no deba ningún copago por el medicamento con prescripción.
Además, los copagos también pueden variar basándose en los diferentes canales de entrega del medicamento con prescripción. Por ejemplo, el copago por recibir el medicamento con prescripción de una ubicación de la farmacia de pedidos por correo puede ser menor que el copago por recibir el medicamento con prescripción en una ubicación de farmacia minorista.
Junto con recibir un copago (si lo hubiera) del miembro y dispensar el medicamento con prescripción al miembro, la farmacia presenta una reclamación al PBM por el medicamento con prescripción. Después de recibir la reclamación, el PBM (tal como mediante el uso del dispositivo 2802 de administrador de beneficios) puede realizar ciertas operaciones de adjudicación, incluyendo verificar la elegibilidad del miembro, identificar/revisar un formulario aplicable para el miembro para determinar cualquier copago, seguro conjunto, y deducible apropiados para el medicamento con prescripción, y realizar una revisión de uso de medicamentos (DUR) para el miembro. Además, el PBM puede proporcionar una respuesta a la farmacia (por ejemplo, el sistema 2800 de farmacia) después de la realización de al menos algunas de las operaciones antes mencionadas.
Como parte de la adjudicación, un patrocinador del plan (o el PBM en nombre del patrocinador del plan) finalmente reembolsa a la farmacia por cumplimentar el medicamento con prescripción cuando el medicamento con prescripción se adjudicó con éxito. Las operaciones de adjudicación antes mencionadas generalmente ocurren antes de que se reciba el copago y se dispense el medicamento con prescripción. Sin embargo, en algunos casos, estas operaciones pueden ocurrir simultáneamente, de manera sustancialmente simultánea, o en un orden diferente. Además, se pueden realizar más o menos operaciones de adjudicación como al menos parte del procedimiento de adjudicación.
El importe del reembolso pagado a la farmacia por un patrocinador del plan y/o el dinero pagado por el miembro pueden determinarse al menos parcialmente basándose en los tipos de redes de farmacias en las que está incluida la farmacia. En algunas implementaciones, la cantidad también puede determinarse basándose en otros factores. Por ejemplo, si el miembro paga a la farmacia por el medicamento con prescripción sin usar el beneficio de prescripción o de medicamentos proporcionado por el PBM, la cantidad de dinero pagada por el miembro puede ser mayor que cuando el miembro usa el beneficio de prescripción o de medicamentos. En algunas implementaciones, la cantidad de dinero que recibe la farmacia por dispensar el medicamento con prescripción y por el medicamento con prescripción en sí puede ser mayor que cuando el miembro usa el beneficio de prescripción o de medicamento. Algunas o todas las operaciones anteriores se pueden realizar ejecutando instrucciones almacenadas en el dispositivo 2802 de administrador de beneficios y/o un dispositivo adicional.
Los ejemplos de la red 2804 incluyen una red de sistema global para comunicaciones móviles (GSM), una red de acceso múltiple por división de código (CDMA), un proyecto de asociación de tercera generación (3GPP), una red de protocolo de Internet (IP), una red de protocolo de aplicación inalámbrica (WAP), o una red con normas IEEE 802.11, así como varias combinaciones de las redes anteriores. La red 2804 puede incluir una red óptica. La red 2804 puede ser una red de área local o una red de comunicación global, tal como Internet. En algunas implementaciones, la red 2804 puede incluir una red dedicada a pedidos de prescripciones: una red de prescripción tal como la red de prescripción electrónica operada por Surescripts de Arlington, Virginia.
Además, aunque el sistema muestra una única red 2804, se pueden usar múltiples redes. Las múltiples redes pueden comunicarse en serie y/o paralelo entre sí para vincular los dispositivos 2802-2810.
El dispositivo 2806 de farmacia puede ser un dispositivo asociado con una ubicación de farmacia minorista (por ejemplo, una ubicación de farmacia exclusiva, una tienda de comestibles con una farmacia minorista, o una tienda de ventas generales con una farmacia minorista) u otro tipo de ubicación de farmacia en la que un miembro intenta obtener una prescripción. La farmacia puede usar el dispositivo 2806 de farmacia para presentar la reclamación al PBM para su adjudicación.
Además, en algunas implementaciones, el dispositivo 2806 de farmacia puede permitir el intercambio de información entre la farmacia y el<p>B<m>. Por ejemplo, esto puede permitir compartir información del miembro, tal como el historial de medicamentos, lo que puede permitir que la farmacia proporcione un mejor servicio al miembro (por ejemplo, proporcionando consultas terapéuticas más informadas e información sobre interacciones entre medicamentos). En algunas implementaciones, el dispositivo 2802 de administrador de beneficios puede rastrear el cumplimiento de medicamentos con prescripción y/u otra información para usuarios que no son miembros, o que no se han identificado como miembros, en el momento (o junto con el momento) en el que buscan obtener una prescripción en una farmacia.
El dispositivo 2806 de farmacia puede incluir un dispositivo 2812 de cumplimiento de farmacia, un dispositivo 2814 de procesamiento de pedidos, y un dispositivo 2816 de gestión de farmacia en comunicación entre sí directamente y/o a través de la red 2804. El dispositivo 2814 de procesamiento de pedidos puede recibir información sobre la cumplimentación de prescripciones y puede dirigir un componente de pedido a uno o más dispositivos del dispositivo 2812 de cumplimiento de farmacia en una farmacia. El dispositivo 2812 de cumplimiento de farmacia puede cumplir, dispensar, añadir y/o empaquetar los componentes del pedido de los medicamentos con prescripción de acuerdo con uno o más pedidos de prescripción dirigidos por el dispositivo 2814 de procesamiento de pedidos.
En general, el dispositivo 2814 de procesamiento de pedidos es un dispositivo ubicado dentro o asociado de otro modo con la farmacia para permitir que el dispositivo 2812 de cumplimiento de farmacia cumpla con una prescripción y dispense medicamentos con prescripción. En algunas implementaciones, el dispositivo 2814 de procesamiento de pedidos puede ser un dispositivo de procesamiento de pedidos externo separado de la farmacia y en comunicación con otros dispositivos ubicados dentro de la farmacia.
Por ejemplo, el dispositivo de procesamiento de pedidos externo puede comunicarse con un dispositivo de procesamiento de pedidos de farmacia interno y/u otros dispositivos ubicados dentro del sistema 2800. En algunas implementaciones, el dispositivo de procesamiento de pedidos externo puede tener una funcionalidad limitada (por ejemplo, cuando lo opera un usuario que solicita el cumplimiento de un medicamento con prescripción), mientras que el dispositivo interno de procesamiento de pedidos de farmacia puede tener una mayor funcionalidad (por ejemplo, como lo opera un farmacéutico).
El dispositivo 2814 de procesamiento de pedidos puede rastrear el pedido de prescripción tal como lo cumple el dispositivo 2812 de cumplimiento de farmacia. El pedido de prescripción puede incluir uno o más medicamentos con prescripción que la farmacia debe cumplimentar. El dispositivo 2814 de procesamiento de pedidos puede tomar decisiones de trayectoria de farmacia y/o decisiones de consolidación de pedidos para el pedido de prescripción particular. Las decisiones de trayectoria de farmacia incluyen qué dispositivos en la farmacia son responsables de cumplimentar o manejar de otro modo ciertas partes del pedido de prescripción. Las decisiones de consolidación de pedidos incluyen si partes de un pedido de prescripción o varios pedidos de prescripción deben enviarse juntos para un usuario o una familia de usuarios. El dispositivo 2814 de procesamiento de pedidos también puede rastrear y/o programar literatura o documentación asociada con cada pedido de prescripción o múltiples pedidos de prescripción que se envían juntos. En algunas implementaciones, el dispositivo 2814 de procesamiento de pedidos puede funcionar en combinación con el dispositivo 2816 de gestión de farmacia.
El dispositivo 2814 de procesamiento de pedidos puede incluir circuitos, un procesador, una memoria para almacenar datos e instrucciones, y funcionalidad de comunicación. El dispositivo 2814 de procesamiento de pedidos está dedicado a realizar procedimientos, métodos, y/o instrucciones descritos en esta solicitud. También se pueden usar otros tipos de dispositivos electrónicos que estén configurados específicamente para implementar los procedimientos, métodos y/o instrucciones que se describen con más detalle a continuación.
En algunas implementaciones, al menos alguna funcionalidad del dispositivo 2814 de procesamiento de pedidos puede incluirse en el dispositivo 2816 de gestión de farmacia. El dispositivo 2814 de procesamiento de pedidos puede estar en una relación cliente-servidor con el dispositivo 2816 de gestión de farmacia, en una relación de igual a igual con el dispositivo 2816 de gestión de farmacia, o en un tipo diferente de relación con el dispositivo 2816 de gestión de farmacia. El dispositivo 2814 de procesamiento de pedidos y/o el dispositivo 2816 de gestión de farmacia pueden comunicarse directamente (por ejemplo, mediante el uso de un almacenamiento local) y/o a través de la red 2804 (como mediante el uso de una configuración de almacenamiento en la nube, software como servicio, etc.) con el dispositivo 2810 de almacenamiento.
El dispositivo 2810 de almacenamiento puede incluir: almacenamiento no transitorio (por ejemplo, memoria, disco duro, CD-ROM, etc.) en comunicación con el dispositivo 2802 de administrador de beneficios y/o el dispositivo 2806 de farmacia directamente y/o a través de la red 2804. El almacenamiento no transitorio puede almacenar datos 2818 de pedidos, datos 2820 de miembros, datos 2822 de reclamaciones, datos 2824 de medicamentos, datos 2826 de prescripciones, y/o datos 2828 del patrocinador del plan. Además, el sistema 2800 puede incluir dispositivos adicionales, que pueden comunicarse entre sí directamente o a través de la red 2804.
Los datos 2818 de pedidos pueden estar relacionados con un pedido de prescripción. Los datos del pedido pueden incluir el tipo de medicamento con prescripción (por ejemplo, nombre y concentración del medicamento) y la cantidad del medicamento con prescripción. Los datos 2818 de pedidos también pueden incluir datos usados para completar la prescripción, tales como materiales de prescripción. En general, los materiales de prescripción incluyen una copia electrónica de la información sobre el medicamento con prescripción para incluirla con la prescripción cumplimentada o junto con ella. Los materiales de prescripción pueden incluir información electrónica sobre advertencias de interacción de medicamentos, uso recomendado, posibles efectos secundarios, fecha de vencimiento, fecha de prescripción, etc. Los datos 2818 de pedidos se pueden usar por un centro logístico de alto volumen para cumplir con un pedido de farmacia.
En algunas implementaciones, los datos 2818 de pedidos incluyen información de verificación asociada con el cumplimiento de la prescripción en la farmacia. Por ejemplo, los datos 2818 de pedidos pueden incluir vídeos y/o imágenes tomadas de (i) el medicamento con prescripción antes de la dispensación, durante la dispensación, y/o después de la dispensación, (ii) el recipiente de la prescripción (por ejemplo, un recipiente de la prescripción y una tapa de sellado, empaquetado de prescripción, etc.) usados para contener el medicamento con prescripción antes de dispensar, durante la dispensación, y/o después de la dispensación, (iii) el embalaje y/o los materiales de embalaje usados para enviar o de otro modo entregar el medicamento con prescripción antes de dispensar, durante la dispensación, y/o después de la dispensación, y/o (iv) el procedimiento de cumplimiento dentro de la farmacia. Otros tipos de información de verificación, tales como datos de códigos de barras leídos de palés, recipientes, bandejas, o carros usados para transportar prescripciones dentro de la farmacia, también pueden almacenarse como datos 2818 de pedidos.
Los datos 2820 de miembros incluyen información con respecto a los miembros asociados con el PBM. La información almacenada como datos 2820 de miembros puede incluir información personal, información de salud personal, información de salud protegida, etc. Ejemplos de datos 2820 de miembros incluyen nombre, dirección, número de teléfono, dirección de correo electrónico, historial de medicamentos con prescripción, etc. Los datos 2820 de miembros pueden incluir un identificador de patrocinador del plan que identifica al patrocinador del plan asociado con el miembro y/o un identificador de miembro que identifica al miembro ante el patrocinador del plan. Los datos 2820 de miembros pueden incluir un identificador de miembro que identifica al patrocinador del plan asociado con el usuario y/o un identificador de usuario que identifica al usuario al patrocinador del plan. Los datos 2820 de miembros también pueden incluir preferencias de dispensación tales como tipo de etiqueta, tipo de tapa, preferencias de mensaje, preferencias de idioma, etc.
Se puede acceder a los datos 2820 de miembros mediante varios dispositivos en la farmacia (por ejemplo, el centro logístico de alto volumen, etc.) para obtener información usada para el cumplimiento y envío de pedidos de prescripciones. En algunas implementaciones, un dispositivo de procesamiento de pedidos externo operado por o en nombre de un miembro puede tener acceso a al menos una parte de los datos 2820 de miembros para revisión, verificación, u otros fines.
En algunas implementaciones, los datos 2820 de miembros pueden incluir información para personas que son usuarios de la farmacia pero que no son miembros del plan de beneficios de farmacia proporcionado por el PBM. Por ejemplo, estos usuarios pueden obtener medicamentos directamente en la farmacia, a través de un servicio de marca propia ofrecido por la farmacia, el centro logístico de alto volumen o de otro modo. En general, el uso de los términos “miembro” y “usuario” podrá usarse indistintamente.
Los datos 2822 de reclamaciones incluyen información sobre reclamaciones de farmacia adjudicadas por el PBM bajo un programa de beneficios de medicamentos proporcionado por el PBM para uno o más patrocinadores del plan. En general, los datos 2822 de reclamaciones incluyen una identificación del cliente que patrocina el programa de beneficios de medicamentos bajo el cual se realiza la reclamación, y/o el miembro que compró el medicamento con prescripción que dio origen a la reclamación, el medicamento con prescripción que cumplimentó la farmacia (por ejemplo, el número de código nacional de medicamento, etc.), la fecha de dispensación, el indicador genérico, el número de identificador de producto genérico (GPI), la clase de medicamento, el coste del medicamento con prescripción proporcionado bajo el programa de beneficios de medicamentos, la cantidad del copago/seguro conjunto, información sobre reembolsos, y/o elegibilidad de los miembros, etc. Se puede incluir información adicional.
En algunas implementaciones, otros tipos de reclamaciones más allá de las reclamaciones de medicamentos con prescripción pueden almacenarse en los datos 2822 de reclamaciones. Por ejemplo, las reclamaciones médicas, dentales, de bienestar u otros tipos de reclamaciones relacionadas con la atención médica para miembros pueden almacenarse como una parte de los datos 2822 de reclamaciones.
En algunas implementaciones, los datos 2822 de reclamaciones incluyen reclamaciones que identifican a los miembros con quienes están asociadas las reclamaciones. Adicional o alternativamente, los datos 2822 de reclamaciones pueden incluir reclamaciones que se han anonimizado (es decir, asociadas con un identificador único pero no con un miembro identificable particular).
Los datos 2824 de medicamentos pueden incluir el nombre del medicamento (por ejemplo, nombre técnico y/o nombre común), otros nombres por los que se conoce el medicamento, principios activos, una imagen del medicamento (tal como en forma de píldora), etc. Los datos 2824 de medicamentos pueden incluir información asociada con un único medicamento o múltiples medicamentos.
Los datos 2826 de prescripciones pueden incluir información sobre prescripciones que pueden ser emitidas por prescripciones en nombre de los usuarios, que pueden ser miembros del plan de beneficios de farmacia, por ejemplo, para cumplimentarse por una farmacia. Ejemplos de datos 2826 de prescripciones incluyen nombres de usuario, medicamentos o tratamientos (tal como pruebas de laboratorio), información de dosificación, etc. Las prescripciones pueden incluir prescripciones electrónicas o prescripciones en papel que se hayan escaneado. En algunas implementaciones, la información de dosificación refleja una frecuencia de uso (por ejemplo, una vez al día, dos veces al día, antes de cada comida, etc.) y una duración del uso (por ejemplo, unos días, una semana, unas semanas, un mes, etc.).
En algunas implementaciones, los datos 2818 de pedidos pueden vincularse a datos de miembros asociados 2820, datos 2822 de reclamaciones, datos de medicamentos 2824 y/o datos 2826 de prescripciones.
Los datos 2828 del patrocinador del plan incluyen información sobre los patrocinadores del plan del PBM. Ejemplos de datos 2828 del patrocinador del plan incluyen el nombre de la empresa, la dirección de la empresa, el nombre de contacto, el número de teléfono de contacto, la dirección de correo electrónico de contacto, etc.
La figura 29 ilustra el dispositivo 2812 de cumplimiento de farmacia según una implementación ejemplificativa. El dispositivo 2812 de cumplimiento de farmacia puede usarse para procesar y cumplir prescripciones y pedidos de prescripciones. Después del cumplimiento, las prescripciones cumplidas se empaquetan para su envío.
El dispositivo 2812 de cumplimiento de farmacia puede incluir dispositivos en comunicación con el dispositivo 2802 de administrador de beneficios, el dispositivo 2814 de procesamiento de pedidos, y/o el dispositivo 2810 de almacenamiento, directamente o a través de la red 2804. Específicamente, el dispositivo 2812 de cumplimiento de farmacia puede incluir dispositivo(s) 2906 de dimensionamiento y plegado de palés, dispositivo(s) 2908 de carga, dispositivo(s) 2910 de inspección, dispositivo(s) 2912 de unidad de uso, dispositivo(s) 2914 de dispensación automatizada, dispositivo(s) 2916 de cumplimiento manual, dispositivos 2918 de revisión, dispositivo(s) 2920 de obtención de imágenes, dispositivo(s) 2922 de tapa, dispositivos 2924 de acumulación, dispositivo(s) 2926 de embalaje, dispositivo(s) 2928 de literatura, dispositivo(s) 2930 de embalaje de unidad de uso, y dispositivo(s) 2932 de manifiesto de correo. Además, el dispositivo 2812 de cumplimiento de farmacia puede incluir dispositivos adicionales, que pueden comunicarse entre sí directamente o a través de la red 2804.
En algunas implementaciones, las operaciones realizadas por uno de estos dispositivos 2906-2932 se pueden realizar secuencialmente, o en paralelo con las operaciones de otro dispositivo como puede ser coordinado por el dispositivo 2814 de procesamiento de pedidos. En algunas implementaciones, el dispositivo 2814 de procesamiento de pedidos rastrea una prescripción con la farmacia basándose en operaciones realizadas por uno o más de los dispositivos 2906 2932.
En algunas implementaciones, el dispositivo 2812 de cumplimiento de farmacia puede transportar recipientes de medicamentos con prescripción, por ejemplo, entre los dispositivos 2906-2932 en el centro logístico de alto volumen, mediante el uso de palés. El dispositivo 2906 de dimensionamiento y plegado de palés puede configurar pliegues en un palé. Un palé puede ser una estructura de transporte para varios recipientes de prescripción y puede incluir varias cavidades. Se puede colocar un pliegue en una o más de una de las cavidades en un palé mediante el dispositivo 2906 de dimensionamiento y plegado de palés. El pliegue puede incluir un receptáculo del tamaño y la forma para recibir un recipiente de prescripción. Tales recipientes pueden estar soportados por los pliegues durante el transporte en el palé. Diferentes pliegues pueden tener receptáculos de diferentes tamaños y formas para acomodar recipientes de diferentes tamaños, según sea apropiado para diferentes prescripciones.
La disposición de los pliegues en un palé puede ser determinada por el dispositivo 2814 de procesamiento de pedidos basándose en las prescripciones que el dispositivo 2814 de procesamiento de pedidos decide lanzar. La lógica de disposición se puede implementar directamente en el dispositivo 2906 de dimensionamiento y plegado de palés. Una vez que se prepara el lanzamiento de una prescripción, un brazo robótico o recolectores pueden colocar en un palé un pliegue adecuado para el tamaño apropiado del recipiente para esa prescripción. El dispositivo 2906 de dimensionamiento y plegado de palés puede lanzar un palé una vez que se hayan configurado los pliegues en el palé.
El dispositivo 2908 de carga puede cargar recipientes de prescripciones en los pliegues en un palé mediante un brazo robótico, un mecanismo de recogida y colocación (también conocido como recolectores), etc. En diversas implementaciones, el dispositivo 2908 de carga tiene brazos robóticos o recolectores para agarrar un recipiente de medicamentos con prescripción y moverlo hasta y desde un palé o un pliegue. El dispositivo 2908 de carga también puede imprimir una etiqueta que sea apropiada para un recipiente que se va a cargar en el palé y aplicar la etiqueta al recipiente. El palé puede ubicarse en un conjunto transportador durante estas operaciones (por ejemplo, en el centro logístico de alto volumen, etc.).
El dispositivo 2910 de inspección puede verificar que los recipientes en un palé estén correctamente etiquetados y en el lugar correcto en el palé. El dispositivo 2910 de inspección puede escanear la etiqueta en uno o más recipientes en el palé. Las etiquetas de los recipientes pueden escanearse o tomarse imágenes en su totalidad o en parte mediante el dispositivo 2910 de inspección. Tal obtención de imágenes puede realizarse después de que un brazo robótico, recolector, etc., haya levantado el recipiente fuera de su pliegue, o pueden escanearse o tomar imágenes de otro modo mientras están retenidos en el pliegue. En algunas implementaciones, las imágenes y/o videos capturados por el dispositivo 2910 de inspección pueden almacenarse en el dispositivo 2810 de almacenamiento como datos 2818 de pedidos.
El dispositivo 2912 de unidad de uso puede almacenar, monitorizar, etiquetar y/o dispensar temporalmente productos de unidad de uso. En general, los productos de unidad de uso son productos farmacéuticos con prescripción que pueden entregarse a un usuario o miembro sin ser reenvasados en la farmacia. Estos productos pueden incluir píldoras en un recipiente, píldoras en un envase de tipo blíster, inhaladores, etc. Los productos de medicamentos con prescripción dispensados por el dispositivo 2912 de unidad de uso pueden empaquetarse individual o colectivamente para su envío, o pueden enviarse en combinación con otros medicamentos con prescripción dispensados por otros dispositivos en el centro logístico de alto volumen.
Al menos algunas de las operaciones de los dispositivos 2906-2932 pueden ser dirigidas por el dispositivo 2814 de procesamiento de pedidos. Por ejemplo, el dispositivo 2916 de cumplimiento manual, el dispositivo 2918 de revisión, el dispositivo 2914 de dispensación automatizado, y/o el dispositivo 2926 de embalaje, etc., pueden recibir instrucciones proporcionadas por el dispositivo 2814 de procesamiento de pedidos.
El dispositivo 2914 de dispensación automatizado puede incluir uno o más dispositivos que dispensan medicamentos con prescripción o productos farmacéuticos en recipientes de prescripción de acuerdo con uno o múltiples pedidos de prescripción. En general, el dispositivo 2914 dispensador automatizado puede incluir componentes mecánicos y electrónicos con, en algunas implementaciones, software y/o lógica para facilitar la dispensación farmacéutica que de otro modo sería realizada de forma manual por un farmacéutico y/o técnico farmacéutico. Por ejemplo, el dispositivo 2914 dispensador automatizado puede incluir llenadores de alto volumen que cumplimentan varios tipos de medicamentos con prescripción a un ritmo rápido y máquinas de envasado en envase de tipo blíster que dispensan y envasan medicamentos en un envase de tipo blíster. Los medicamentos con prescripción dispensados por los dispositivos 2914 dispensadores automatizados pueden empaquetarse individual o colectivamente para su envío, o pueden enviarse en combinación con otros medicamentos con prescripción dispensados por otros dispositivos en el centro logístico de alto volumen.
El dispositivo 2916 de cumplimiento manual controla cómo se cumplen manualmente las prescripciones. Por ejemplo, el dispositivo 2916 de cumplimiento manual puede recibir u obtener un recipiente y permitir el cumplimiento del recipiente por parte de un farmacéutico o técnico de farmacia. En algunas implementaciones, el dispositivo 2916 de cumplimiento manual proporciona el recipiente lleno a otro dispositivo en los dispositivos de cumplimiento de farmacia 2812 para unirlo con otros recipientes en un pedido de prescripción para un usuario o miembro.
En general, el cumplimiento manual puede incluir operaciones al menos parcialmente realizadas por un farmacéutico o un técnico de farmacia. Por ejemplo, una persona puede recuperar un suministro del medicamento con prescripción, puede hacer una observación, puede contar una cantidad prescrita de medicamentos y colocarlos en un recipiente de medicamentos con prescripción, etc. Algunas partes del procedimiento de cumplimiento manual pueden automatizarse mediante el uso de una máquina. Por ejemplo, el recuento de cápsulas, comprimidos, o píldoras puede automatizarse al menos parcialmente (tal como mediante el uso de un contador de píldoras). Los medicamentos con prescripción dispensados por el dispositivo 2916 de cumplimiento manual pueden empaquetarse individual o colectivamente para su envío, o pueden enviarse en combinación con otros medicamentos con prescripción dispensados por otros dispositivos en el centro logístico de alto volumen.
El dispositivo 2918 de revisión puede procesar recipientes de prescripciones para que un farmacéutico los revise para determinar el recuento adecuado de píldoras, manejo de excepciones, verificación de prescripciones, etc. Las prescripciones cumplidas pueden ser revisadas y/o verificadas manualmente por un farmacéutico, según lo requiera el estado o la ley local. Un farmacéutico u otra persona autorizada en farmacia que pueda dispensar ciertos medicamentos de conformidad con las leyes locales y/o de otro tipo puede operar el dispositivo 2918 de revisión e inspeccionar visualmente un recipiente de prescripción que se ha llenado con un medicamento de prescripción. El farmacéutico puede revisar, verificar, y/o evaluar la cantidad de medicamento, la concentración del medicamento y/o las interacciones de los medicamentos, o prestar servicios farmacéuticos de otro modo. El farmacéutico también podrá manipular recipientes que se hayan marcado como excepción, tales como recipientes con etiquetas ilegibles, recipientes cuyo pedido de prescripción asociado se haya cancelado, recipientes con defectos, etc. Por ejemplo, la revisión manual se puede realizar en una estación de revisión manual.
El dispositivo 2920 de obtención de imágenes puede obtener imágenes de recipientes una vez que se han llenado con productos farmacéuticos. El dispositivo 2920 de obtención de imágenes puede medir una altura de llenado de los productos farmacéuticos en el recipiente basándose en la imagen obtenida para determinar si el recipiente está lleno a la altura correcta dado el tipo de producto farmacéutico y el número de píldoras en la prescripción. También se pueden obtener imágenes de las píldoras en el recipiente para detectar el tamaño de las propias píldoras y las marcas en las mismas. Las imágenes pueden transmitirse al dispositivo 2814 de procesamiento de pedidos y/o almacenarse en el dispositivo 2810 de almacenamiento como parte de los datos 2818 de pedidos.
El dispositivo 2922 de tapa se puede usar para tapar o sellar de otro modo un recipiente de prescripción. En algunas implementaciones, el dispositivo 2922 de tapa puede asegurar un recipiente de prescripción con un tipo de tapa de acuerdo con una preferencia del usuario (por ejemplo, una preferencia con respecto a la resistencia infantil, etc.), una preferencia del patrocinador del plan, una preferencia del prescriptor, etc. El dispositivo 2922 de tapa también puede grabar un mensaje en la tapa, aunque este procedimiento puede realizarse por un dispositivo posterior en el centro logístico de alto volumen.
El dispositivo 2924 de acumulación acumula varios recipientes de medicamentos con prescripción en un pedido de prescripción. El dispositivo 2924 de acumulación puede acumular recipientes de prescripciones de varios dispositivos o áreas de la farmacia. Por ejemplo, el dispositivo 2924 de acumulación puede acumular recipientes de prescripciones del dispositivo 2912 de unidad de uso, el dispositivo 2914 de dispensación automatizado, el dispositivo 2916 de cumplimiento manual, y el dispositivo 2918 de revisión. El dispositivo 2924 de acumulación se puede usar para agrupar los recipientes de prescripciones antes del envío al miembro.
El dispositivo 2928 de literatura imprime, o genera de otro modo, literatura para incluirla en cada pedido de medicamento con prescripción. La literatura puede imprimirse en varias hojas de sustratos, tales como papel, papel revestido, polímeros imprimibles, o combinaciones de los sustratos anteriores. La literatura impresa por el dispositivo 2928 de literatura puede incluir información requerida para acompañar a los medicamentos con prescripción incluidos en un pedido de prescripción, otra información relacionada con los medicamentos con prescripción en el pedido, información financiera asociada con el pedido (por ejemplo, una factura o un estado de cuenta), etc.
En algunas implementaciones, el dispositivo 2928 de literatura pliega o prepara de otro modo la literatura para su inclusión en un pedido de medicamento con prescripción (por ejemplo, en un recipiente de envío). En otras implementaciones, el dispositivo 2928 de literatura imprime la literatura y está separado de otro dispositivo que prepara la literatura impresa para su inclusión en un pedido de prescripción.
El dispositivo 2926 de embalaje empaqueta el pedido de prescripción en preparación para el envío del pedido. El dispositivo 2926 de embalaje puede introducir en cajas, embolsar, o empaquetar de otro modo el pedido de prescripción cumplimentado para su entrega. El dispositivo 2926 de embalaje puede colocar además inserciones (por ejemplo, literatura u otros papeles, etc.) en el embalaje recibido desde el dispositivo 2928 de literatura. Por ejemplo, pedidos de muchas prescripciones pueden enviarse en una caja, mientras que otros pedidos de prescripciones pueden enviarse en una bolsa, que puede ser una bolsa con cierre hermético.
El dispositivo 2926 de embalaje puede etiquetar la caja o bolsa con una dirección y un nombre de un destinatario. La etiqueta puede imprimirse y fijarse a la bolsa o caja, imprimirse directamente sobre la bolsa o caja, o asociarse de otro modo con la bolsa o caja. El dispositivo 2926 de embalaje puede clasificar la caja o bolsa para su envío por correo de manera eficiente (por ejemplo, clasificar por dirección de entrega, etc.). El dispositivo 2926 de embalaje puede incluir hielo o elementos sensibles a la temperatura para prescripciones que deben mantenerse dentro de un rango de temperatura durante el envío (por ejemplo, esto puede ser necesario para conservar la eficacia). Luego, el paquete final puede enviarse por correo postal, a través de un servicio de entrega por correo que se envía por tierra y/o aire (por ejemplo, UPS, FEDEX, o DHL, etc.), a través de un servicio de entrega, a través de un casillero en un sitio de envío (por ejemplo, casillero de AMAZON o apartado postal, etc.), o de otro modo.
El dispositivo 2930 de embalaje de unidad de uso empaqueta un pedido de prescripción de unidad de uso en preparación para enviar el pedido. La unidad de uso del dispositivo 2930 de embalaje puede incluir escaneo manual de los recipientes que se van a embolsar para su envío para verificar cada recipiente en el pedido. En una implementación ejemplificativa, el escaneo manual se puede realizar en una estación de escaneo manual. El dispositivo 2812 de cumplimiento de farmacia también puede incluir un dispositivo 2932 de manifiesto de correo para imprimir etiquetas de envío usadas por el dispositivo 2926 de embalaje y puede imprimir manifiestos de envío y listas de embalaje.
Aunque el dispositivo 2812 de cumplimiento de farmacia en la figura 29 se muestra para incluir dispositivos 2906-2932 únicos, se pueden usar múltiples dispositivos. Cuando hay varios dispositivos presentes, los múltiples dispositivos pueden ser del mismo tipo o modelo de dispositivo, o pueden ser de un tipo o modelo de dispositivo diferente. Los tipos de dispositivos 2906-2932 que se muestran en la figura 29 son dispositivos ejemplificativos. En otras configuraciones del sistema 2800, se pueden incluir tipos de dispositivos menores, adicionales, o diferentes.
Además, múltiples dispositivos pueden compartir recursos de procesamiento y/o memoria. Los dispositivos 2906-2932 pueden estar ubicados en la misma zona o en diferentes ubicaciones. Por ejemplo, los dispositivos 2906-2932 pueden estar ubicados en un edificio o conjunto de edificios contiguos. Los dispositivos 2906-2932 pueden estar interconectados (por ejemplo, mediante transportadores), conectados en red y/o en contacto entre sí o integrados entre sí de otro modo (por ejemplo, en el centro logístico de alto volumen, etc.). Además, la funcionalidad de un dispositivo puede dividirse entre varios dispositivos discretos y/o combinarse con otros dispositivos.
La figura 30 ilustra el dispositivo 2814 de procesamiento de pedidos según una implementación ejemplificativa. El dispositivo 2814 de procesamiento de pedidos se puede usar por uno o más operarios para generar pedidos de prescripciones, tomar decisiones de trayectoria, tomar decisiones de consolidación de pedidos de prescripciones, rastrear literatura con el sistema 2800, y/o ver el estado del pedido y otra información relacionada con el pedido. Por ejemplo, el pedido de prescripción puede estar compuesto por componentes del pedido.
El dispositivo 2814 de procesamiento de pedidos puede recibir instrucciones para cumplir un pedido sin la intervención del operario. Un componente de pedido puede incluir un medicamento con prescripción cumplido mediante el uso de un recipiente a través del sistema 2800. El dispositivo 2814 de procesamiento de pedidos puede incluir un subsistema 3002 de verificación de pedidos, un subsistema 3004 de control de pedidos, y/o un subsistema 3006 de seguimiento de pedidos. Otros subsistemas también pueden incluirse en el dispositivo 2814 de procesamiento de pedidos.
El subsistema 3002 de verificación de pedidos puede comunicarse con el dispositivo 2802 de administrador de beneficios para verificar la elegibilidad del miembro y revisar el formulario para determinar el copago, seguro conjunto, y deducible apropiados para el medicamento con prescripción y/o realizar una DUR (revisión de uso de medicamentos). Se pueden realizar otras comunicaciones entre el subsistema 3002 de verificación de pedidos y el dispositivo 2802 de administrador de beneficios para diversos fines.
El subsistema 3004 de control de pedidos controla varios movimientos de los recipientes y/o palés junto con varias funciones de llenado durante su progresión a través del sistema 2800. En algunas implementaciones, el subsistema 3004 de control de pedidos puede identificar el medicamento con prescripción en uno o más de un pedido de prescripción como que puede cumplirse por el dispositivo 2914 dispensador automatizado. El subsistema 3004 de control de pedidos puede determinar qué prescripciones se van a lanzar y podrá determinar que se va a lanzar un pallet de recipientes de llenado automatizado.
El subsistema 3004 de control de pedidos puede determinar que se va a lanzar una prescripción de cumplimentación automatizada de un producto farmacéutico específico y puede examinar una cola de pedidos en espera de cumplimiento para otros pedidos de prescripción, que se cumplimentarán con el mismo producto farmacéutico. El subsistema 3004 de control de pedidos puede entonces lanzar pedidos con necesidades farmacéuticas de llenado automatizado similares juntos en un palé al dispositivo 2914 de dispensación automatizado. Como los dispositivos 2906-2932 pueden estar interconectados mediante un sistema de transportadores u otros sistemas de movimiento de recipientes, el subsistema 3004 de control de pedidos puede controlar varios transportadores; por ejemplo, para entregar el palé desde el dispositivo 2908 de carga al dispositivo 2916 de cumplimiento manual desde el dispositivo 2928 de literatura, la documentación necesaria para cumplimentar la prescripción.
El subsistema 3006 de seguimiento de pedidos puede rastrear un pedido de prescripción durante su progreso hacia el cumplimiento. El subsistema 3006 de seguimiento de pedidos puede rastrear, registrar, y/o actualizar el historial de pedidos, el estado del pedido, etc. El subsistema 3006 de seguimiento de pedidos puede almacenar datos localmente (por ejemplo, en una memoria) o como una parte de los datos 2818 de pedidos almacenados en el dispositivo 2810 de almacenamiento.
CONCLUSIÓN
La descripción anterior es de naturaleza meramente ilustrativa y de ninguna manera pretende limitar la divulgación, su aplicación, o usos. Las enseñanzas amplias de la divulgación se pueden implementar en una variedad de formas. Por lo tanto, si bien esta divulgación incluye ejemplos particulares, el verdadero alcance de la divulgación no debe estar tan limitado ya que otras modificaciones se harán evidentes tras un estudio de los dibujos, la descripción y las siguientes reivindicaciones. Debe entenderse que una o más etapas dentro de un método pueden ejecutarse en un orden diferente (o simultáneamente) sin alterar los principios de la presente divulgación. Además, aunque se describió anteriormente que cada una de las realizaciones tiene ciertas características, una o más de esas características descritas con respecto a cualquier realización de la divulgación se pueden implementar y/o combinar con características de cualquiera de las otras realizaciones, incluso si esa combinación no se describe explícitamente. En otras palabras, las realizaciones descritas no son mutuamente excluyentes, y las permutaciones de una o más realizaciones entre sí permanecen dentro del alcance de esta divulgación.
Las relaciones espaciales y funcionales entre elementos (por ejemplo, entre módulos) se describen usando varios términos, incluyendo “conectado”, “enganchado”, “ interconectado” y “acoplado”. A menos que se describa explícitamente como “directa”, cuando en la divulgación anterior se describe una relación entre elementos primero y segundo, esa relación abarca una relación directa donde no están presentes otros elementos intervinientes entre los elementos primero y segundo, y también una relación indirecta donde uno o más elementos intervinientes están presentes (ya sea espacial o funcionalmente) entre los elementos primero y segundo. Tal como se usa en este documento, la frase al menos uno de A, B, y C debe interpretarse en el sentido de un lógico (A o B o C), usando un O lógico no exclusivo, y no debe interpretarse en el sentido de “al menos uno de A, al menos uno de B y al menos uno de C”.
En las figuras, la dirección de una flecha, como lo indica la punta de flecha, generalmente demuestra el flujo de información (tal como datos o instrucciones) que es de interés para la ilustración. Por ejemplo, cuando el elemento A y el elemento B intercambian una variedad de información pero la información transmitida del elemento A al elemento B es relevante para la ilustración, la flecha puede apuntar del elemento A al elemento B. Esta flecha unidireccional no implica que no se transmita otra información del elemento B al elemento A. Además, para la información enviada del elemento A al elemento B, el elemento B puede enviar solicitudes o acuses de recibo de la información al elemento A. El término subconjunto no requiere necesariamente un subconjunto adecuado. En otras palabras, un primer subconjunto de un primer conjunto puede ser coextensivo (igual) al primer conjunto.
En esta solicitud, incluyendo las definiciones siguientes, el término “módulo” o el término “controlador” se pueden reemplazar por el término “circuito”. El término “módulo” puede referirse, ser parte de, o incluir hardware de procesador (compartido, dedicado, o de agrupación) que ejecuta código y hardware de memoria (compartido, dedicado, o de agrupación) que almacena código ejecutado por el hardware del procesador.
El módulo puede incluir uno o más circuitos de interfaz. En algunos ejemplos, el circuito o circuitos de interfaz pueden implementar interfaces cableadas o inalámbricas que se conectan a una red de área local (LAN) o una red de área personal inalámbrica (WPAN). Ejemplos de una LAN son la norma 802.11-2016 del Institute of Electrical and Electronics Engineers (IEEE) (también conocida como norma de redes inalámbricas WIFI) y la norma IEEE 802.3 2015 (también conocida como norma de redes cableadas ETHERNET). Ejemplos de WPAN son la norma de red inalámbrica BLUETOOTH del Bluetooth Special Interest Group y la norma IEEE 802.15.4.
El módulo puede comunicarse con otros módulos usando el circuito o circuitos de interfaz. Aunque en la presente divulgación el módulo puede representarse comunicándose lógicamente directamente con otros módulos, en diversas implementaciones el módulo puede realmente comunicarse a través de un sistema de comunicaciones. El sistema de comunicaciones incluye equipos de red físicos y/o virtuales, tales como concentradores, conmutadores, enrutadores y puertas de enlace. En algunas implementaciones, el sistema de comunicaciones se conecta con, o atraviesa, una red de área amplia (WAN), tal como Internet. Por ejemplo, el sistema de comunicaciones puede incluir múltiples LAN conectadas entre sí a través de Internet o líneas arrendadas punto a punto usando tecnologías que incluyen conmutación de etiquetas multiprotocolo (MPLS) y redes privadas virtuales (VPN).
En diversas implementaciones, la funcionalidad del módulo se puede distribuir entre múltiples módulos que están conectados a través del sistema de comunicaciones. Por ejemplo, múltiples módulos pueden implementar la misma funcionalidad distribuida por un sistema de equilibrio de carga. En otro ejemplo, la funcionalidad del módulo se puede dividir entre un módulo de servidor (también conocido como remoto o de nube) y un módulo de cliente (o, usuario).
El término código, como se usa anteriormente, puede incluir software, firmware, y/o microcódigo, y puede referirse a programas, rutinas, funciones, clases, estructuras de datos, y/u objetos. El hardware de procesador compartido abarca un único microprocesador que ejecuta parte o todo el código de múltiples módulos. El hardware del procesador de agrupación abarca un microprocesador que, en combinación con microprocesadores adicionales, ejecuta parte o todo el código de uno o más módulos. Las referencias a múltiples microprocesadores abarcan múltiples microprocesadores en matrices discretas, múltiples microprocesadores en una única matriz, múltiples núcleos de un único microprocesador, múltiples subprocedimientos de un único microprocesador, o una combinación de los anteriores.
El hardware de memoria compartida abarca un único dispositivo de memoria que almacena parte o todo el código de múltiples módulos. El hardware de memoria de agrupación abarca un dispositivo de memoria que, en combinación con otros dispositivos de memoria, almacena parte o todo el código de uno o más módulos.
El término hardware de memoria es un subconjunto del término medio legible por ordenador. El término medio legible por ordenador, tal como se usa en el presente documento, no abarca señales eléctricas o electromagnéticas transitorias que se propagan a través de un medio (tal como una onda portadora); por tanto, el término medio legible por ordenador se considera tangible y no transitorio. Ejemplos no limitativos de un medio no transitorio legible por ordenador son dispositivos de memoria no volátil (tales como un dispositivo de memoria flash, un dispositivo de memoria de sólo lectura programable y borrable o un dispositivo de memoria de máscara de sólo lectura), dispositivos de memoria volátil (tales como un dispositivo de memoria de acceso aleatorio estático o un dispositivo de memoria de acceso aleatorio dinámico), medios de almacenamiento magnético (tal como una cinta magnética analógica o digital o una unidad de disco duro), y medios de almacenamiento óptico (tal como un CD, un DVD, o un disco Blu-ray).
Los aparatos y métodos descritos en esta solicitud pueden implementarse parcial o totalmente mediante un ordenador de propósito especial creado mediante la configuración de un ordenador de propósito general para ejecutar una o más funciones particulares incorporadas en programas de ordenador. Los bloques funcionales y elementos del diagrama de flujo descritos anteriormente sirven como especificaciones de software, que pueden traducirse en programas informáticos mediante el trabajo rutinario de un técnico o programador experto.
Los programas informáticos incluyen instrucciones ejecutables por procesador que se almacenan al menos en un medio no transitorio legible por ordenador. Los programas informáticos también pueden incluir o depender de datos almacenados. Los programas informáticos pueden abarcar un sistema básico de entrada/salida (BIOS) que interactúa con el hardware del ordenador de propósito especial, controladores de dispositivos que interactúan con dispositivos particulares del ordenador de propósito especial, uno o más sistemas operativos, aplicaciones de usuario, servicios en segundo plano, aplicaciones en segundo plano, etc.
Los programas informáticos pueden incluir: (i) texto descriptivo que va a analizarse sintácticamente, tal como HTML (lenguaje de marcado de hipertexto), XML (lenguaje de marcado extensible), o JSON (notación de objetos JavaScript), (ii) código ensamblador, (iii) código objeto generado a partir del código fuente por un compilador, (iv) código fuente para ejecución por un intérprete, (v) código fuente para compilación y ejecución por un compilador justo a tiempo, etc. Sólo como ejemplos, el código fuente puede escribirse usando la sintaxis de lenguajes que incluyen C, C++, C#, Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, Javascript®, HTML5 (lenguaje de marcado de hipertexto, quinta revisión), Ada, ASP (Páginas de servidor activo), PHP (PHP: Preprocesador de hipertexto), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, MATLAB, STMULTNK y Python®.
Claims (9)
- REIVINDICACIONESSistema informático para someter a prueba una interfaz de usuario (UI) para una aplicación web que comprende una página web, comprendiendo el sistema informático:un módulo (128) de creación de prueba configurado para obtener parámetros de prueba, en el que los parámetros de prueba incluyen (i) una ubicación de dirección inicial en la que se puede acceder a la UI; (ii) criterios para un objetivo asociado con la UI, tal como texto de objetivo; y (iii) un número de pruebas permitidas;un módulo (130) de ejecución de prueba configurado para (i) obtener un estado de la UI basándose en la ubicación de dirección inicial y (ii) establecer una posición actual a una ubicación predeterminada dentro de la UI; yun módulo (132) de análisis configurado para:analizar un estado designado de la página web de la UI,en respuesta a determinar que el estado designado satisface los criterios para el objetivo, tal como identificar si el texto de objetivo está en la página web de la UI, emitir un indicador de éxito, y caracterizado por, en respuesta a determinar que el estado designado de la UI no satisface los criterios para el objetivo, determinar un conjunto de acciones posibles basándose en elementos de la UI dentro del estado designado y establecer la salida al conjunto de acciones posibles,para cada acción en el conjunto de acciones posibles, (i) determinar una probabilidad de que realizar la acción dé como resultado el objetivo y (ii) almacenar la probabilidad determinada en el conjunto de acciones posibles; yseleccionar la acción del conjunto de acciones posibles incluye seleccionar la acción del conjunto de acciones posibles basándose en las probabilidades almacenadas en el conjunto de acciones posibles, en el que el módulo de ejecución de prueba está configurado para:proporcionar un estado de la UI al módulo de análisis y recibir la salida del módulo de análisis, en respuesta a que la salida recibida sea el conjunto de acciones posibles:seleccionar una acción del conjunto de acciones posibles, en el que la acción está asociada con un primer elemento de la UI,ejecutar la acción seleccionada,identificar un punto del primer elemento de la UI,actualizar una distancia de prueba basándose en (i) coordenadas del punto y (ii) coordenadas de la posición actual,establecer la posición actual al punto,en el que el punto es el punto más cercano del primer elemento de la UI a la posición actual; y actualizar la distancia de prueba incluye (i) determinar una distancia entre las coordenadas de la posición actual y las coordenadas del punto y (ii) añadir la distancia determinada a la distancia de prueba; ycomplementar datos de prueba con (i) la acción seleccionada y (ii) el conjunto de acciones posibles, incrementar un contador en respuesta a que la salida recibida sea el indicador de éxito, almacenar la distancia de prueba y los datos de prueba en una colección de pruebas completadas, y determinar la trayectoria más corta hasta el objetivo en la UI basándose en la colección de pruebas completadas,en el que determinar la trayectoria más corta incluye seleccionar, en respuesta a determinar que un valor del contador es mayor o igual al número de pruebas permitidas, una prueba completada de la colección de pruebas completadas con la distancia de prueba más corta.
- 2. Sistema informático según la reivindicación 1, que comprende además:un módulo de red neuronal configurado para hacer funcionar una pluralidad de redes neuronales,en el que el módulo de análisis está configurado para usar selectivamente al menos una red neuronal de la pluralidad de redes neuronales para determinar la probabilidad de que realizar la acción dé como resultado el objetivo.
- 3. Sistema informático según la reivindicación 2, en el que la pluralidad de redes neuronales incluye al menos una de una red neuronal de memoria a corto plazo de larga duración y una red neuronal convolucional.
- 4. Sistema informático según la reivindicación 2, que comprende además un módulo de entrenamiento configurado para, en respuesta a que la salida recibida sea el indicador de éxito:entrenar la pluralidad de redes neuronales usando los datos de prueba;determinar un rendimiento de la pluralidad de redes neuronales después del entrenamiento basándose en las probabilidades almacenadas en la colección de pruebas completadas; yen respuesta a determinar que un valor del rendimiento de la pluralidad de redes neuronales después del entrenamiento es mayor que un valor predeterminado, establecer un estado de la pluralidad de redes neuronales a entrenadas.
- 5. Sistema informático según la reivindicación 4, que comprende además:un módulo de Monte Carlo configurado para realizar una simulación de Monte Carlo para generar un valor aleatorio; yun módulo de reponderación configurado para:en respuesta a que el estado de la pluralidad de redes neuronales sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba basándose en una salida de al menos una red neuronal de la pluralidad de redes neuronales; yen respuesta a que el estado de la pluralidad de redes neuronales no sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba con un valor aleatorio generado por el módulo de Monte Carlo.
- 6. Método para someter a prueba una interfaz de usuario (UI) para una aplicación web que comprende una página web, comprendiendo el método:obtener parámetros de prueba, en el que los parámetros de prueba incluyen (i) una ubicación de dirección inicial en la que se puede acceder a la UI; (ii) criterios para un objetivo asociado con la UI, tal como texto de objetivo; y (iii) un número de pruebas permitidas;obtener un estado de la UI basándose en la ubicación de dirección inicial;establecer una posición actual a una ubicación predeterminada dentro de la UI; analizar un estado designado de la página web de la UI; en respuesta a determinar que el estado designado satisface los criterios para el objetivo, tal como identificar si el texto de objetivo está en la página web de la UI, establecer una salida a un indicador de éxito; caracterizado por, en respuesta a determinar que el estado designado no satisface los criterios para el objetivo, (i) determinar un conjunto de acciones posibles basándose en elementos de la UI dentro del estado designado y (ii) establecer la salida al conjunto de acciones posibles; para cada acción en el conjunto de acciones posibles, (i) determinar una probabilidad de que realizar la acción dé como resultado el objetivo y (ii) almacenar la probabilidad determinada en el conjunto de acciones posibles; y seleccionar la acción del conjunto de acciones posibles incluye seleccionar la acción del conjunto de acciones posibles basándose en probabilidades almacenadas en el conjunto de acciones posibles, en respuesta a que la salida sea el conjunto de acciones posibles: seleccionar una acción del conjunto de acciones posibles, en el que la acción está asociada con un primer elemento de la UI, ejecutar la acción seleccionada, identificar un punto del primer elemento de la UI, actualizar una distancia de prueba basándose en (i) coordenadas del punto y (ii) coordenadas de la posición actual, establecer la posición actual al punto, en el que el punto es el punto más cercano del primer elemento de la UI a la posición actual; y actualizar la distancia de prueba incluye (i) determinar una distancia entre las coordenadas de la posición actual y las coordenadas del punto y (ii) añadir la distancia determinada a la distancia de prueba; y complementar datos de prueba con (i) la acción seleccionada y (ii) el conjunto de acciones posibles; incrementar un contador en respuesta a que la salida sea el indicador de éxito, almacenar la distancia de prueba y los datos de prueba en una colección de pruebas completadas; y determinar la trayectoria más corta hasta el objetivo en la UI basándose en la colección de pruebas completadas, en el que determinar la trayectoria más corta incluye seleccionar, en respuesta a determinar que un valor del contador es mayor o igual al número de pruebas permitidas, una prueba completada de la colección de pruebas completadas con la distancia de prueba más corta.
- 7. Método según la reivindicación 6, que comprende además, en respuesta a que la salida sea el indicador de éxito: entrenar una pluralidad de redes neuronales usando los datos de prueba; determinar un rendimiento de la pluralidad de redes neuronales después del entrenamiento basándose en las probabilidades almacenadas en la colección de pruebas completadas; y, en respuesta a determinar que un valor del rendimiento de la pluralidad de redes neuronales después del entrenamiento es mayor que un valor predeterminado, establecer un estado de la pluralidad de redes neuronales a entrenadas.
- 8. Método según la reivindicación 7, que comprende además: en respuesta a que el estado de la pluralidad de redes neuronales sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba basándose en una salida de al menos una red neuronal de la pluralidad de redes neuronales; y, en respuesta a que el estado de la pluralidad de redes neuronales no sea entrenadas, actualizar cada probabilidad almacenada en los datos de prueba con un valor aleatorio.
- 9. Medio no transitorio legible por ordenador que almacena instrucciones ejecutables por procesador para realizar uno cualquiera de los métodos de las reivindicaciones 6, 7 u 8.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/196,321 US10747655B2 (en) | 2018-11-20 | 2018-11-20 | Method and system for programmatically testing a user interface |
| PCT/US2019/062152 WO2020106686A1 (en) | 2018-11-20 | 2019-11-19 | Method and system for enhancing a user interface for a web application |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2966532T3 true ES2966532T3 (es) | 2024-04-22 |
Family
ID=70726351
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19887101T Active ES2966532T3 (es) | 2018-11-20 | 2019-11-19 | Método y sistema para mejorar una interfaz de usuario para una aplicación web |
Country Status (8)
| Country | Link |
|---|---|
| US (3) | US10747655B2 (es) |
| EP (3) | EP3841466B1 (es) |
| CN (1) | CN113056736A (es) |
| CA (3) | CA3202034A1 (es) |
| ES (1) | ES2966532T3 (es) |
| PH (1) | PH12021550928A1 (es) |
| TW (3) | TW202409831A (es) |
| WO (1) | WO2020106686A1 (es) |
Families Citing this family (53)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
| US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
| US8676904B2 (en) | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
| US10057736B2 (en) | 2011-06-03 | 2018-08-21 | Apple Inc. | Active transport based notifications |
| US10417037B2 (en) | 2012-05-15 | 2019-09-17 | Apple Inc. | Systems and methods for integrating third party services with a digital assistant |
| DE112014000709B4 (de) | 2013-02-07 | 2021-12-30 | Apple Inc. | Verfahren und vorrichtung zum betrieb eines sprachtriggers für einen digitalen assistenten |
| US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
| US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
| US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
| US9886953B2 (en) | 2015-03-08 | 2018-02-06 | Apple Inc. | Virtual assistant activation |
| US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
| US10671428B2 (en) | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
| US10331312B2 (en) | 2015-09-08 | 2019-06-25 | Apple Inc. | Intelligent automated assistant in a media environment |
| US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
| US11587559B2 (en) | 2015-09-30 | 2023-02-21 | Apple Inc. | Intelligent device identification |
| US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
| US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking environment |
| DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
| US12197817B2 (en) | 2016-06-11 | 2025-01-14 | Apple Inc. | Intelligent device arbitration and control |
| US11204787B2 (en) | 2017-01-09 | 2021-12-21 | Apple Inc. | Application integration with a digital assistant |
| DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
| DK201770428A1 (en) | 2017-05-12 | 2019-02-18 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
| DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
| DK201770411A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | Multi-modal interfaces |
| DK179560B1 (en) | 2017-05-16 | 2019-02-18 | Apple Inc. | FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES |
| US10303715B2 (en) | 2017-05-16 | 2019-05-28 | Apple Inc. | Intelligent automated assistant for media exploration |
| US10818288B2 (en) | 2018-03-26 | 2020-10-27 | Apple Inc. | Natural assistant interaction |
| US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
| DK180639B1 (en) | 2018-06-01 | 2021-11-04 | Apple Inc | DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT |
| DK201870355A1 (en) | 2018-06-01 | 2019-12-16 | Apple Inc. | VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS |
| US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
| US10747655B2 (en) * | 2018-11-20 | 2020-08-18 | Express Scripts Strategic Development, Inc. | Method and system for programmatically testing a user interface |
| US11348573B2 (en) | 2019-03-18 | 2022-05-31 | Apple Inc. | Multimodality in digital assistant systems |
| US10983898B2 (en) * | 2019-03-29 | 2021-04-20 | Usablenet, Inc. | Methods for improved web application testing using remote headless browsers and devices thereof |
| DK201970509A1 (en) | 2019-05-06 | 2021-01-15 | Apple Inc | Spoken notifications |
| US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
| US12198695B2 (en) | 2019-05-31 | 2025-01-14 | Apple Inc. | Voice assistant discoverability through on-device targeting and personalization |
| DK180649B1 (en) * | 2019-05-31 | 2021-11-11 | Apple Inc | Voice assistant discoverability through on-device targeting and personalization |
| US11227599B2 (en) | 2019-06-01 | 2022-01-18 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
| USD931324S1 (en) * | 2019-07-12 | 2021-09-21 | Express Scripts Strategic Development, Inc. | Display screen with graphical user interface |
| CN110704304B (zh) * | 2019-09-06 | 2022-09-27 | 平安普惠企业管理有限公司 | 一种应用程序测试方法、装置、存储介质和服务器 |
| US11392484B2 (en) * | 2019-10-31 | 2022-07-19 | Express Scripts Strategie Development, Inc. | Method and system for programmatically testing user interface paths |
| US12301635B2 (en) | 2020-05-11 | 2025-05-13 | Apple Inc. | Digital assistant hardware abstraction |
| US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
| US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
| US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
| US20220035640A1 (en) * | 2020-07-28 | 2022-02-03 | Electronic Arts Inc. | Trainable agent for traversing user interface |
| US11635903B2 (en) * | 2021-06-15 | 2023-04-25 | International Business Machines Corporation | Cloud data migration |
| US11520692B1 (en) * | 2021-09-08 | 2022-12-06 | International Business Machines Corporation | Performing software testing with best possible user experience |
| TWI806412B (zh) * | 2022-02-08 | 2023-06-21 | 中華精測科技股份有限公司 | 標記產品全域高點的方法 |
| CN115454738A (zh) * | 2022-08-23 | 2022-12-09 | 聚好看科技股份有限公司 | 一种界面测试方法和测试设备 |
| FI20225762A1 (en) * | 2022-08-31 | 2024-03-01 | Elisa Oyj | A COMPUTER-IMPLEMENTED METHOD FOR DETECTING ACTIVITY IN A VOICE STREAM |
| KR20250093996A (ko) * | 2023-12-18 | 2025-06-25 | 쿠팡 주식회사 | 사용자 인터페이스를 테스트하기 위한 전자 장치 및 그 동작 방법 |
Family Cites Families (39)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030115167A1 (en) * | 2000-07-11 | 2003-06-19 | Imran Sharif | Web browser implemented in an Internet appliance |
| US6925454B2 (en) * | 2000-12-12 | 2005-08-02 | International Business Machines Corporation | Methodology for creating and maintaining a scheme for categorizing electronic communications |
| US7137103B2 (en) * | 2001-03-08 | 2006-11-14 | International Business Machines Corporation | Coverage analysis of message flows |
| AT411802B (de) * | 2001-06-01 | 2004-05-25 | Siemens Ag Oesterreich | Verfahren zum testen von software |
| US7415437B2 (en) * | 2001-10-31 | 2008-08-19 | The United States Of America As Represented By The Secretary Of The Navy | Business development process |
| US7363099B2 (en) * | 2002-06-07 | 2008-04-22 | Cadence Design Systems, Inc. | Integrated circuit metrology |
| US20050114829A1 (en) * | 2003-10-30 | 2005-05-26 | Microsoft Corporation | Facilitating the process of designing and developing a project |
| US7308418B2 (en) * | 2004-05-24 | 2007-12-11 | Affinova, Inc. | Determining design preferences of a group |
| JP4176741B2 (ja) * | 2005-05-25 | 2008-11-05 | 株式会社スクウェア・エニックス | 移動先情報設定装置及び方法、プログラム、並びに記録媒体 |
| US7673019B2 (en) * | 2005-11-04 | 2010-03-02 | Palo Alto Research Center Incorporated | System and method for determining a quantitative measure of qualitative usability of related Web pages |
| US9165040B1 (en) | 2006-10-12 | 2015-10-20 | Google Inc. | Producing a ranking for pages using distances in a web-link graph |
| US20080222530A1 (en) * | 2007-03-06 | 2008-09-11 | Microsoft Corporation | Navigating user interface controls on a two-dimensional canvas |
| US20090043621A1 (en) * | 2007-08-09 | 2009-02-12 | David Kershaw | System and Method of Team Performance Management Software |
| US20090125821A1 (en) * | 2007-11-08 | 2009-05-14 | Carolynn Rae Johnson | Graphical user interface feature for enabling faster discrete navigation among monitors in a multiple monitor workstation |
| CN101256596B (zh) * | 2008-03-28 | 2011-12-28 | 北京搜狗科技发展有限公司 | 一种站内导航的方法及系统 |
| US20100064282A1 (en) * | 2008-09-05 | 2010-03-11 | Microsoft Corporation | Declarative testing for user interfaces |
| CA2773461C (en) * | 2009-09-08 | 2016-10-04 | Core Sdi Incorporated | System and method for probabilistic attack planning |
| AU2011298991B2 (en) * | 2010-09-10 | 2016-09-08 | Vocus, Inc | Systems and methods for consumer-generated media reputation management |
| US8688418B2 (en) | 2011-09-01 | 2014-04-01 | Mcmoran Oil & Gas, Llc | Engineered methodology for design verification and validation of ultra-deep high pressure high temperature oil and gas well control equipment |
| US9514027B2 (en) * | 2011-11-08 | 2016-12-06 | Microsoft Technology Licensing, Llc | Context-aware model-driven hierarchical monitoring metadata |
| US20130326427A1 (en) * | 2012-05-30 | 2013-12-05 | Red Hat, Inc. | Automated assessment of user interfaces |
| CN108763334A (zh) * | 2012-07-19 | 2018-11-06 | 格兰斯电讯网络有限公司 | 协同浏览与其他形式的信息共享的集成 |
| US9753960B1 (en) * | 2013-03-20 | 2017-09-05 | Amdocs Software Systems Limited | System, method, and computer program for dynamically generating a visual representation of a subset of a graph for display, based on search criteria |
| US20150120717A1 (en) * | 2013-10-25 | 2015-04-30 | Marketwire L.P. | Systems and methods for determining influencers in a social data network and ranking data objects based on influencers |
| US20150169430A1 (en) * | 2013-12-13 | 2015-06-18 | International Business Machines Corporation | Selecting webpage test paths |
| CN106462436A (zh) | 2014-03-12 | 2017-02-22 | 界标制图有限公司 | 用于具有天然裂缝性储层的油田的水平井设计 |
| US10649634B2 (en) * | 2014-06-06 | 2020-05-12 | International Business Machines Corporation | Indexing and annotating a usability test recording |
| CN107003799A (zh) * | 2015-01-16 | 2017-08-01 | 夏普株式会社 | 终端装置和用于控制终端装置的程序 |
| JP6549959B2 (ja) | 2015-10-02 | 2019-07-24 | 株式会社日立製作所 | 障害切り分け方法および障害切り分けを行う管理サーバ |
| US9983892B2 (en) * | 2015-11-06 | 2018-05-29 | Samsung Electronics Co., Ltd. | Deep linking to mobile application states through programmatic replay of user interface events |
| US20170212651A1 (en) * | 2016-01-27 | 2017-07-27 | Amadeus S.A.S. | Short cut links in a graphical user interface |
| US10310965B2 (en) | 2016-02-25 | 2019-06-04 | Dell Products, Lp | Dynamic virtual testing environment for webpages |
| US10146664B2 (en) | 2016-02-25 | 2018-12-04 | Dell Products, Lp | Virtual test environment for webpages with automation features |
| KR102667413B1 (ko) * | 2016-10-27 | 2024-05-21 | 삼성전자주식회사 | 음성 명령에 기초하여 애플리케이션을 실행하는 방법 및 장치 |
| US20180130464A1 (en) * | 2016-11-08 | 2018-05-10 | Sap Se | User interface based voice operations framework |
| US10489126B2 (en) * | 2018-02-12 | 2019-11-26 | Oracle International Corporation | Automated code generation |
| US10747655B2 (en) * | 2018-11-20 | 2020-08-18 | Express Scripts Strategic Development, Inc. | Method and system for programmatically testing a user interface |
| US10795701B2 (en) | 2018-11-20 | 2020-10-06 | Express Scripts Strategic Development, Inc. | System and method for guiding a user to a goal in a user interface |
| US11099640B2 (en) | 2018-11-20 | 2021-08-24 | Express Scripts Strategie Development, Inc. | System and method for enhancing a user interface using eye tracking data |
-
2018
- 2018-11-20 US US16/196,321 patent/US10747655B2/en active Active
-
2019
- 2019-11-19 EP EP19887101.4A patent/EP3841466B1/en active Active
- 2019-11-19 CA CA3202034A patent/CA3202034A1/en active Pending
- 2019-11-19 CA CA3202017A patent/CA3202017A1/en active Pending
- 2019-11-19 WO PCT/US2019/062152 patent/WO2020106686A1/en not_active Ceased
- 2019-11-19 ES ES19887101T patent/ES2966532T3/es active Active
- 2019-11-19 CA CA3113839A patent/CA3113839A1/en active Pending
- 2019-11-19 EP EP23200249.3A patent/EP4293516A3/en not_active Withdrawn
- 2019-11-19 CN CN201980076708.6A patent/CN113056736A/zh active Pending
- 2019-11-19 EP EP23200172.7A patent/EP4350510A1/en not_active Withdrawn
- 2019-11-20 TW TW112142969A patent/TW202409831A/zh unknown
- 2019-11-20 TW TW112142967A patent/TW202409830A/zh unknown
- 2019-11-20 TW TW108142171A patent/TWI825225B/zh not_active IP Right Cessation
-
2020
- 2020-08-11 US US16/990,174 patent/US11734162B2/en active Active
-
2021
- 2021-04-23 PH PH12021550928A patent/PH12021550928A1/en unknown
-
2023
- 2023-08-21 US US18/236,158 patent/US12210444B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| CA3202034A1 (en) | 2020-05-28 |
| TW202409831A (zh) | 2024-03-01 |
| WO2020106686A1 (en) | 2020-05-28 |
| EP3841466A1 (en) | 2021-06-30 |
| US10747655B2 (en) | 2020-08-18 |
| EP4350510A1 (en) | 2024-04-10 |
| US20200371904A1 (en) | 2020-11-26 |
| CA3113839A1 (en) | 2020-05-28 |
| US12210444B2 (en) | 2025-01-28 |
| US20200159651A1 (en) | 2020-05-21 |
| TW202036281A (zh) | 2020-10-01 |
| US20230393967A1 (en) | 2023-12-07 |
| WO2020106686A8 (en) | 2021-04-15 |
| PH12021550928A1 (en) | 2021-11-08 |
| EP3841466C0 (en) | 2023-11-15 |
| TW202409830A (zh) | 2024-03-01 |
| EP3841466A4 (en) | 2022-05-04 |
| CN113056736A (zh) | 2021-06-29 |
| EP4293516A3 (en) | 2024-01-31 |
| US11734162B2 (en) | 2023-08-22 |
| TWI825225B (zh) | 2023-12-11 |
| CA3202017A1 (en) | 2020-05-28 |
| EP3841466B1 (en) | 2023-11-15 |
| EP4293516A2 (en) | 2023-12-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2966532T3 (es) | Método y sistema para mejorar una interfaz de usuario para una aplicación web | |
| US11847475B2 (en) | System and method for guiding a user to a goal in a user interface | |
| US12204440B2 (en) | Method and system for programmatically testing user interface paths | |
| US11609630B2 (en) | System and method for enhancing a user interface using eye tracking data | |
| US11862315B2 (en) | System and method for natural language processing | |
| US20230395220A1 (en) | Systems and methods for providing an interactive digital personalized experience interface for users to engage in various aspects of behavioral healthcare | |
| US20250103874A1 (en) | Machine learning model training for automated entity update processing | |
| US12248660B2 (en) | Machine learning model automation of user interface transformation | |
| US11783186B2 (en) | Methods and systems for predicting prescription directions using machine learning algorithm |