{"id":1000,"date":"2018-04-18T12:07:59","date_gmt":"2018-04-18T15:07:59","guid":{"rendered":"http:\/\/157.92.27.101\/?p=1000"},"modified":"2022-03-29T10:40:37","modified_gmt":"2022-03-29T13:40:37","slug":"tecnicas-de-testeo-para-detectar-fallas-en-android","status":"publish","type":"post","link":"https:\/\/icc.fcen.uba.ar\/en\/tecnicas-de-testeo-para-detectar-fallas-en-android\/","title":{"rendered":"T\u00e9cnicas de testeo para detectar fallas en Android"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last\" style=\"--awb-bg-size:cover;--awb-margin-bottom:0px;\"><div class=\"fusion-column-wrapper fusion-flex-column-wrapper-legacy\"><div class=\"fusion-text fusion-text-1\"><p><em><strong>En el \u00e1rea de Ingenier\u00eda de Software del ICC existe una l\u00ednea de trabajo denominada \u201cTesting\u201d, que mediante pruebas planificadas es la primera medida para asegurar un determinado umbral de calidad en el software que se construye. <\/strong><\/em><!--more--><\/p>\n<p><span style=\"font-weight: 400;\">Cuando un programador \u201ctestea\u201d lo que hace es ejercitar un programa para comparar el resultado obtenido contra el resultado que espera.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Actualmente es posible no s\u00f3lo automatizar la ejecuci\u00f3n de los casos de prueba, sino tambi\u00e9n su creaci\u00f3n, logrando cubrir autom\u00e1ticamente gran cantidad de l\u00edneas de un programa. \u201c<\/span><i><span style=\"font-weight: 400;\">El principal desaf\u00edo consiste en c\u00f3mo integrar estos enfoques en los procesos actuales de desarrollo, de forma que estas herramientas sean \u00fatiles para incrementar la calidad de los programas y la eficiencia de los programadores<\/span><\/i><span style=\"font-weight: 400;\">\u201d, puntualiza <strong>Juan Pablo Galeotti<\/strong>, Investigador del ICC, Doctor en Ciencias de la Computaci\u00f3n y Profesor del Departamento de Computaci\u00f3n de Exactas-UBA.<\/span><\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<p>El principal desaf\u00edo consiste en c\u00f3mo integrar estos enfoques en los procesos actuales de desarrollo, de forma que estas herramientas sean \u00fatiles para incrementar la calidad de los programas y la eficiencia de los programadores.<\/p>\n<\/blockquote>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">En este contexto, el investigador explica que \u00a0junto a Iv\u00e1n Arcuschin (<\/span><span style=\"font-weight: 400;\">Tesista de Licenciatura del DC<\/span><span style=\"font-weight: 400;\">) est\u00e1n trabajando en la Generaci\u00f3n de casos de test basados en b\u00fasquedas (<\/span><i><span style=\"font-weight: 400;\">Search based software testing<\/span><\/i><span style=\"font-weight: 400;\">). Con esta t\u00e9cnica pueden aplicar algoritmos de optimizaci\u00f3n combinatoria al problema de generaci\u00f3n autom\u00e1tica de casos de test para diferentes programas. \u201c<\/span><i><span style=\"font-weight: 400;\">Es como si uno quisiera escalar una colina y al tener s\u00f3lo una representaci\u00f3n del terreno como si fuera un tablero, va probando cada celda vecina para ver por cu\u00e1l sube y cu\u00e1l es el camino para llegar m\u00e1s alto. Este procedimiento (al que llamamos Hill Climbing) resulta \u00fatil para encontrar una soluci\u00f3n local \u00f3ptima cuando existe un conjunto muy grande de soluciones posibles<\/span><\/i><span style=\"font-weight: 400;\">\u201d, puntualiza Galeotti.<\/span><\/p>\n<p><b>Una iniciativa innovadora con aplicaciones Android<\/b><\/p>\n<p><span style=\"font-weight: 400;\">El proyecto \u201c<\/span><i><span style=\"font-weight: 400;\">Evolutiz: Multi-objective Test Generation for Testing Evolving Android Applications<\/span><\/i><span style=\"font-weight: 400;\">&#8221; tiene como objetivo desarrollar una herramienta de c\u00f3digo abierto para probar nuevas aplicaciones de Android, ayudando a los desarrolladores y a empresas de software a identificar r\u00e1pidamente errores o fallas de funcionalidad. Adem\u00e1s, tiene el prop\u00f3sito de crear una base de datos de defectos en las aplicaciones de Android, que est\u00e9 disponible en forma p\u00fablica.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para desarrollar esta herramienta, los investigadores prueban el comportamiento de la app para monitorear si funciona de la forma esperada. \u00a0Por ejemplo, que no se cuelgue o que no se interrumpa sorpresivamente. En esta instancia, se simulan las interacciones posibles del usuario con el dispositivo (hacer click, doble click, drag &#038; drop, etc.) y las interacciones del dispositivo con el ambiente (eventos del sistema, se\u00f1al de que lleg\u00f3 un mensaje importante, se\u00f1al de baja de bater\u00eda, se\u00f1al de que se desconect\u00f3 de wi-fi, etc.).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201c<\/span><i><span style=\"font-weight: 400;\">Apuntamos a generar algoritmos de b\u00fasqueda para generaci\u00f3n de casos de Test. En el caso de Android lo probamos de varias maneras: sobre emuladores <\/span><\/i><span style=\"font-weight: 400;\">(una computadora que simula ser un tel\u00e9fono Android) <\/span><i><span style=\"font-weight: 400;\">o sobre dispositivos reales<\/span><\/i><span style=\"font-weight: 400;\"> (un dispositivo Android que efectivamente est\u00e1 corriendo la aplicaci\u00f3n)<\/span><i><span style=\"font-weight: 400;\">\u201d<\/span><\/i><span style=\"font-weight: 400;\">, detalla Galeotti.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Volviendo a la analog\u00eda de las colinas, podemos pensar en una secuencia fija de interacciones con un dispositivo Android como si fuera una celda en el tablero. En este punto, el algoritmo de b\u00fasqueda sabe que hay un lugar donde est\u00e1 el error pero a priori no sabe d\u00f3nde puede estar. Como se cuenta con una cantidad limitada de tiempo y no es posible ver semejante cantidad de posibilidades (equivalente a la cantidad de mol\u00e9culas que hay en el universo), el investigador cuenta con dos opciones: A) ver una cantidad reducida de posibilidades, traducida en el vecindario o las 8 celdas alrededor de donde se est\u00e1 situado. B) tomar 8 celdas al azar y determinar cu\u00e1l es la mejor; transitar esa celda, empezar a buscar errores en la aplicaci\u00f3n y probar con otras celdas posibles, tomar distintos m\u00e1ximos locales y finalmente optar por la mejor soluci\u00f3n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cabe recalcar que utilizando la optimizaci\u00f3n combinatoria se puede maximizar la detecci\u00f3n de fallas y maximizar la ejecuci\u00f3n de l\u00edneas de programa (una caracter\u00edstica deseable de un conjunto de casos de prueba). Esto tiene como consecuencia que los casos de test eval\u00faen al menos una vez las l\u00edneas de c\u00f3digo del programa para chequear que funcionen de la manera esperada.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201c<\/span><i><span style=\"font-weight: 400;\">A mediano plazo el proyecto tambi\u00e9n se orienta a analizar fallas de seguridad y encontrar problemas de vulnerabilidad que podr\u00edan perjudicar al usuario<\/span><\/i><span style=\"font-weight: 400;\">\u201d, complementa el investigador del ICC.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Los investigadores se encuentran en la etapa inicial del proyecto: relevar el Estado del Arte en la tem\u00e1tica. \u201c<\/span><i><span style=\"font-weight: 400;\">Estamos \u00a0estudiando todas las soluciones anteriores, que tienen asociadas much\u00edsimas caracter\u00edsticas, buscando determinar si alguna de las caracter\u00edsticas es dominante frente a la otra, es decir, c\u00f3mo funciona cada algoritmo con una determinada optimizaci\u00f3n o sin ella<\/span><\/i><span style=\"font-weight: 400;\">\u201d, concluye Galeotti.<\/span><\/p>\n<blockquote>\n<p><b><img decoding=\"async\" class=\"lazyload size-full wp-image-1002 alignleft\" src=\"https:\/\/157.92.27.101\/wp-content\/uploads\/2018\/08\/noticia_9_recuadro.jpg\" data-orig-src=\"https:\/\/157.92.27.101\/wp-content\/uploads\/2018\/08\/noticia_9_recuadro.jpg\" alt=\" T\u00e9cnicas de testeo para detectar fallas en Android_icc\" width=\"257\" height=\"246\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27257%27%20height%3D%27246%27%20viewBox%3D%270%200%20257%20246%27%3E%3Crect%20width%3D%27257%27%20height%3D%27246%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/icc.fcen.uba.ar\/wp-content\/uploads\/2018\/08\/noticia_9_recuadro-200x191.jpg 200w, https:\/\/icc.fcen.uba.ar\/wp-content\/uploads\/2018\/08\/noticia_9_recuadro.jpg 257w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 257px) 100vw, 257px\" \/>Premio Google LARA<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Juan Pablo Galeotti e Iv\u00e1n Arcuschin fueron distinguidos con el premio <\/span><i><span style=\"font-weight: 400;\">Google Latin American Research Awards<\/span><\/i><span style=\"font-weight: 400;\"> (LARA 2017), por su proyecto de detecci\u00f3n de fallas en Android, en la categor\u00eda &#8220;master thesis&#8221;. Es el \u00fanico proyecto de Argentina premiado en dicha edici\u00f3n y uno de los 27 que fueron seleccionados entre 281 env\u00edos. M\u00e1s informaci\u00f3n:<\/span><a href=\"https:\/\/noticias.dc.uba.ar\/2017\/08\/24\/premio-google-galeotti\/\"> <span style=\"font-weight: 400;\">https:\/\/noticias.dc.uba.ar\/2017\/08\/24\/premio-google-galeotti\/<\/span><\/a><\/p>\n<\/blockquote>\n<\/div><div class=\"fusion-clearfix\"><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>En el \u00e1rea de Ingenier\u00eda de Software del ICC existe una l\u00ednea de trabajo denominada \u201cTesting\u201d, que mediante pruebas planificadas es la primera medida para asegurar un determinado umbral de calidad en el software que se construye.<\/p>\n","protected":false},"author":3,"featured_media":1001,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71,12],"tags":[65,34,63],"class_list":["post-1000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-actualidad","category-noticias","tag-bugs","tag-ingenieria-software","tag-testing"],"_links":{"self":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts\/1000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/comments?post=1000"}],"version-history":[{"count":4,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts\/1000\/revisions"}],"predecessor-version":[{"id":2172,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts\/1000\/revisions\/2172"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/media\/1001"}],"wp:attachment":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/media?parent=1000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/categories?post=1000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/tags?post=1000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}