"*What if we had software bots that tirelessly test, debug, and monitor our software systems?*
IT workers are expensive and scarce. So why can't we further automate boring, repetitive activities such as testing and debugging? The...
"*What if we had software bots that tirelessly test, debug, and monitor our software systems?*
IT workers are expensive and scarce. So why can't we further automate boring, repetitive activities such as testing and debugging? The problem is that we lack computer-readable _specifications_ (so-called _oracles_) for what the system should do or not do. For decades, this _oracle problem_ has been a roadblock to automated test generation, trusted software repairs, and accurate monitoring of software.
Building on groundbreaking research to infer input languages of systems, S3 introduces a unified approach to _learning oracles automatically_. It takes a given software system; _infers_ and _decodes_ its inputs and outputs; and runs _experiments_ to extract _models_ of how the system behaves, capturing its semantics by predicting output features for given input features.
These models, named _system invariants_, allow to _fully automate_ critical software development activities:
TESTING. System invariants encode _languages_ for automatically generating test inputs and provide _oracles_ for checking test results: ""In the TLS server, the <payload> in the <heartbeat-response> must be the same as in the <heartbeat-request>.""
DEBUGGING. System invariants allow narrowing down causes of software behavior (""The X.509 public key certificate is not recognized if <subject-name> contains a zero byte""). Generated tests and oracles ensure reliable automated repair.
MONITORING. System invariants enable detecting abnormal behavior at runtime (""In 'log4j', logging a <user-agent> containing '""${jndi:<url>}""' opens <url>""). Problematic queries can be isolated and investigated until the problem is fixed.
In the future, testing, debugging, and monitoring would thus be taken over by _software bots_ who would autonomously explore software behavior, report issues, and suggest actions to their human co-workers, boosting developer productivity and software reliability.
"ver más
Seleccionando "Aceptar todas las cookies" acepta el uso de cookies para ayudarnos a brindarle una mejor experiencia de usuario y para analizar el uso del sitio web. Al hacer clic en "Ajustar tus preferencias" puede elegir qué cookies permitir. Solo las cookies esenciales son necesarias para el correcto funcionamiento de nuestro sitio web y no se pueden rechazar.
Cookie settings
Nuestro sitio web almacena cuatro tipos de cookies. En cualquier momento puede elegir qué cookies acepta y cuáles rechaza. Puede obtener más información sobre qué son las cookies y qué tipos de cookies almacenamos en nuestra Política de cookies.
Son necesarias por razones técnicas. Sin ellas, este sitio web podría no funcionar correctamente.
Son necesarias para una funcionalidad específica en el sitio web. Sin ellos, algunas características pueden estar deshabilitadas.
Nos permite analizar el uso del sitio web y mejorar la experiencia del visitante.
Nos permite personalizar su experiencia y enviarle contenido y ofertas relevantes, en este sitio web y en otros sitios web.