COMBINING MACHINE LEARNING WITH TESTING AND ANALYSIS.
Checking or proving that software does what it is supposed to do requires a precise specification of the expected behavior. If a computer is carrying out these checks, the specification must come in a mathematical form comprehensible to the computer, which is a hard and costly task. However, to detect that there is some form of undesirable behavior, it can suffice that something is different from others – even if this “something” cannot be exactly determined. We use large sets of existing programs (such as mobile apps) to have machine learning determine their common properties, and then check new programs to whether they fall in line with these properties. For instance, we can learn that “travel” mobile apps typically access the user’s location, but rarely their text message history. If a new unknown “travel” app comes along and tries to access past text messages and other sensitive information, we can identify it as anomaly because “travel” apps normally do not to that. These checks, which combine machine learning with testing and analysis, are now in place at all major app stores.