towards mutation analysis of android apps

20
of 20 Towards Mutation Analysis of Android Apps Lin Deng, Nariman Mirzaei, Paul Ammann, and Jeff Offutt George Mason University www.cs.gmu.edu/~offutt/

Upload: others

Post on 04-May-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Towards Mutation Analysis of Android Apps

of 20

Towards Mutation Analysis of Android Apps

Lin Deng, Nariman Mirzaei, Paul Ammann, and Jeff Offutt

George Mason University www.cs.gmu.edu/~offutt/

Page 2: Towards Mutation Analysis of Android Apps

of 20

Background: Mobile Apps

© Deng, Mirzaei, Ammann, & Offutt 2

Mobile App A software program that runs on a mobile device

Over a million apps on Google Play Thousands added every day

Mutation 2015

Android OS has 83% of the mobile market

Page 3: Towards Mutation Analysis of Android Apps

of 20

Quality Problems

© Deng, Mirzaei, Ammann, & Offutt 3

Many apps have significant flaws •  Lack of robustness •  Runtime crashes •  Incorrect behavior •  Security vulnerabilities

Quality testing is rare Ad-hoc and random testing common

New techniques have not reached practice

Little or no testing Little knowledge for how to test apps

Mutation 2015

Page 4: Towards Mutation Analysis of Android Apps

of 20

Motivation

Mutation 2015 © Deng, Mirzaei, Ammann, & Offutt 4

Provide an evaluation criterion for other test selection strategies

Provide more sophisticated testing than current practice

Filter redundant pre-existing tests

Page 5: Towards Mutation Analysis of Android Apps

of 20

Unique Programmatic Aspects •  Android apps are event driven •  Android programming components

–  Activity : A screen presented to users –  Service : Performs long running background tasks (music) –  Content Provider : Manages structured data (contacts) –  Broadcast Receiver : Responds to system wide announcement

messages (screen is off, battery is low) –  Intents : Events that activities, services, and broadcast receivers

used to communicate

•  Unique execution engine –  Novel JVM: Dalvik (4.4 and earlier), ART (5.0) –  XML files define screen layouts and configuration –  Testing is done on emulators

© Deng, Mirzaei, Ammann, & Offutt 5 Mutation 2015

Page 6: Towards Mutation Analysis of Android Apps

of 20

Research Objective

© Deng, Mirzaei, Ammann, & Offutt 6

Improve our ability to deliver quality Android apps through stronger testing

Plan Design mutation operators based on the unique aspects of Android programming

Generate high quality tests by killing mutants Mutation 2015

Strategy Apply existing technique (mutation testing)

to a new type of software (mobile apps)

Page 7: Towards Mutation Analysis of Android Apps

of 20

Preliminary Design Work •  19 traditional (method level) muJava operators •  Eight novel Android mutation operators

1.  Intent Payload Replacement (IPR) 2.  Intent Target Replacement (ITR) 3.  OnClick Event Replacement (ECR) 4.  OnTouch Event Replacement (ETR) 5.  Lifecycle Method Deletion (MDL) 6.  XML Button Widget Deletion (BWD) 7.  XML EditText Widget Deletion (TWD) 8.  XML Activity Permission Deletion (APD)

© Deng, Mirzaei, Ammann, & Offutt 7 Mutation 2015

Page 8: Towards Mutation Analysis of Android Apps

of 20

Intent Mutation Operators •  Intent Payload Replacement (IPR)

–  Mutates the parameter to a default value

•  Intent Target Replacement (ITP)

–  Replaces the target of each Intent with other classes

© Deng, Mirzaei, Ammann, & Offutt 8

Original Type Default Value

int, short, long, float, double, char 0

String “”

Array null

boolean true / false

Intent  intent  =  new  Intent  (this,  DisplayMessageAc6vity.class);    intent.putExtra  (EXTRA  MESSAGE,  “test  message”);    startAc6vity  (intent);    

“  ”  

Intent  intent  =  new  Intent  (AcAvityA.this,  AcAvityB.class);    Ac6vityC.class  

Mutation 2015

Page 9: Towards Mutation Analysis of Android Apps

of 20

Event Handler Operators •  OnClick Event Replacement (ECR)

–  Replaces event handlers with other compatible handler

•  OnTouch Event Replacement (ETR) –  Replaces OnTouch events, similar to ECR

© Deng, Mirzaei, Ammann, & Offutt 9

mPrepUp.setOnClickListener  (new  OnClickListener()  {          public  void  onClick  (View  v)  {                    incrementPrepTime  ();  }    });    mPrepDown.setOnClickListener  (new  OnClickListener()  {          public  void  onClick  (View  v)  {                    decrementPrepTime  ();  }    });    

 public  void  onClick  (View  v)  {                    decrementPrepTime  ();  }    

Mutation 2015

Page 10: Towards Mutation Analysis of Android Apps

of 20

Activity Lifecycle Operator

Mutation 2015 © Deng, Mirzaei, Ammann, & Offutt 10

Running Activity is visible in

foreground

Paused Activity is partially visible; not in focus

Stopped Activity is hidden

Activity launched

Activity destroyed

1.  onCreate () 2.  onStart () 3.  onResume ()

1.  onRestart () 2.  onStart () 3.  onResume ()

onPause ()

onStop ()

onDestroy ()

onResume () Lifecycle Method Deletion (MDL) deletes programmers versions

Page 11: Towards Mutation Analysis of Android Apps

of 20

XML Mutation Operators •  Button Widget Deletion (BWD)

–  Deletes buttons one at a time

•  EditText Widget Deletion (TWD) –  Deletes EditText

•  Activity Permission Deletion (APD) –  Deletes permissions from AndroidManifest.xml  

© Deng, Mirzaei, Ammann, & Offutt 11 Mutation 2015

BWD mutant

TWD mutant

Page 12: Towards Mutation Analysis of Android Apps

of 20

Mutation Procedure

Mutation 2015 © Deng, Mirzaei, Ammann, & Offutt 12

XML Files Java Files App Under Test

Compilation Engine

Execution Engine

Mut Op Mut Op Mut Op

Mutant Mutant Mutant Mutant

APK APK APK APK

Tests

Mutate code and configuration files

Android intermediate code

Emulator

Page 13: Towards Mutation Analysis of Android Apps

of 20

Preliminary Study      TippyTipper : Computes amounts to tip waiters, splits bills

–  Five activities, one service, 12 classes, 196 methods, 3575 blocks –  Tested the main activity TippyTipper.java : 103 LOC –  Mutated the XML layout main.xml : 93 text lines

© Deng, Mirzaei, Ammann, & Offutt 13 Mutation 2015

Page 14: Towards Mutation Analysis of Android Apps

of 20

Preliminary Study •  Tests generated by EvoDroid (Mahmood et al., 2014)

–  Uses an evolutionary algorithm –  Generated 744 tests –  Added test oracles by hand –  10 tests at the last generation selected (85% statement coverage) –  Added one test by hand to achieve 100% statement coverage

•  Mutation analysis tool built by extending muJava –  Generate and compile APK mutants –  Install APK files to an emulator –  Execute tests and compute results

© Deng, Mirzaei, Ammann, & Offutt 14 Mutation 2015

Page 15: Towards Mutation Analysis of Android Apps

of 20

Results •  85 Android mutants, 105 traditional Java mutants •  85% statement coverage tests

© Deng, Mirzaei, Ammann, & Offutt 15

Android Operators Operator Mutants Equivalent Killed

ITR 5 0 5

ECR 66 0 45

MDL 1 0 1

BWD 12 0 6

TWD 1 0 0

Total 85 0 57

Traditional muJava Operators

Operator Mutants Equivalent Killed

AOIS 8 4 0

AOIU 20 0 17

AORB 8 0 0

CDL 2 0 0

LOI 18 0 17

ODL 4 0 0

SDL 43 0 21

VDL 2 0 0

Total 105 4 55 No mutants for IPR, ETR, APD

67.06%

54.46% Mutation 2015

Page 16: Towards Mutation Analysis of Android Apps

of 20

Results 100% statement coverage tests

© Deng, Mirzaei, Ammann, & Offutt 16

Android Operators Operator Mutants Equivalent Killed

ITR 5 0 5

ECR 66 0 66

MDL 1 0 1

BWD 12 0 12

TWD 1 0 0

Total 85 0 84

Traditional muJava Operators

Operator Mutants Equivalent Killed

AOIS 8 4 0

AOIU 20 0 18

AORB 8 0 0

CDL 2 0 0

LOI 18 0 18

ODL 4 0 0

SDL 43 0 35

VDL 2 0 0

Total 105 4 71

98.82%

70.30% Combined mutation

score: 83.33% Mutation 2015

Page 17: Towards Mutation Analysis of Android Apps

of 20

Results

Mutation 2015 © Deng, Mirzaei, Ammann, & Offutt 17

0

10

20

30

40

50

60

70

AOIS AOIU AORB CDL LOI ODL SDL VDL ECR ITR MDL BWD TWD

Number of mutants

85% Stmt Coverage tests

100% Stmt Coverage tests

85% vs 100% statement coverage

Page 18: Towards Mutation Analysis of Android Apps

of 20

Future Work •  Construct a comprehensive fault model based on existing

apps with bug reports, leading to stronger mutation operators (in progress)

•  Define mutation operators based on other Android aspects, e.g. context-aware

•  More precise mutation system –  Better algorithms –  Fewer stillborn & crashing mutants –  Stronger mutation operators

•  More experimentation with more apps –  Fault studies

•  Speed up execution © Deng, Mirzaei, Ammann, & Offutt 18 Mutation 2015

Page 19: Towards Mutation Analysis of Android Apps

of 20

Summary

© Deng, Mirzaei, Ammann, & Offutt 19 Mutation 2015

Evaluated these mutation operators on an example Android app

Defined eight novel mutation operators specific to Android apps

Identified future research areas for mutation analysis of Android apps

Page 20: Towards Mutation Analysis of Android Apps

of 20

Contacts & Questions

Mutation 2015 © Deng, Mirzaei, Ammann, & Offutt 20

Lin Deng [email protected]

cs.gmu.edu/~ldeng2/ Narimen Mirzaei [email protected]

Paul Ammann [email protected]

cs.gmu.edu/~pammann/ Jeff Offutt

[email protected] cs.gmu.edu/~offutt/