SlideShare une entreprise Scribd logo
1  sur  82
Télécharger pour lire hors ligne
Kevin Moran,
MicheleTufano,
Carlos Bernal-Cárdenas,
Mario Linares-Vásquez,
Gabriele Bavota,
ChristopherVendome,
Massimiliano DiPenta, and
Denys Poshyvanyk
MDroid+:A MutationTesting
Framework for Android
40th International Conference
on Software Engineering (ICSE’18)
Wednesday, May 30th, 2018
!4
!4
MOBILE DEVELOPMENT CHALLENGES
MOBILE DEVELOPMENT CHALLENGES
Highly Competitive
App Marketplaces
MOBILE DEVELOPMENT CHALLENGES
Noisy Feedback
from
User Reviews
Highly Competitive
App Marketplaces
MOBILE DEVELOPMENT CHALLENGES
Noisy Feedback
from
User Reviews
Highly Competitive
App Marketplaces
Change/Fault
Prone APIs
MOBILE DEVELOPMENT CHALLENGES
Noisy Feedback
from
User Reviews
Highly Competitive
App Marketplaces
Pressure for
Frequent
Releases
Change/Fault
Prone APIs
MOBILE DEVELOPMENT CHALLENGES
Noisy Feedback
from
User Reviews
Highly Competitive
App Marketplaces
Pressure for
Frequent
Releases
Touch-Based
Event-Driven
Interface
Change/Fault
Prone APIs
TEST ADEQUACY CRITERIA
TEST ADEQUACY CRITERIA
Test Suite
Test #1
Test #2
Test #3
Test #4
Test #5
TEST ADEQUACY CRITERIA
Test Suite
Test #1
Test #2
Test #3
Test #4
Test #5
Test #1
Test #2
Test #3
Test #4
Test #5
Testing Results
TEST ADEQUACY CRITERIA
Test Suite
Test #1
Test #2
Test #3
Test #4
Test #5
Test #1
Test #2
Test #3
Test #4
Test #5
Testing Results
Code
Coverage: 65.2%
HOW EFFECTIVE ARE MY TESTS?
MUTATION TESTING
MUTATION TESTING
Mutation
Operators
Void Method Calls
Invert Negatives
ReturnValue Mutator
Negate Conditionals
Math Mutator
MUTATION TESTING
Mutation
Operators
Void Method Calls
Invert Negatives
ReturnValue Mutator
Negate Conditionals
Math Mutator
Mutated Apks
MUTATION TESTING FOR ANDROID
MUTATION TESTING FOR ANDROID
Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015.
Towards mutation analysis of Android Apps, ICSTW’15
MUTATION TESTING FOR ANDROID
Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015.
Towards mutation analysis of Android Apps, ICSTW’15
8
Operators
MUTATION TESTING FOR ANDROID
Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015.
Towards mutation analysis of Android Apps, ICSTW’15
8
Operators
Lin Deng, J. Offutt, P.Ammann, and N. Mirzsaei. 2017.
Towards mutation analysis of Android Apps, IST Journal
MUTATION TESTING FOR ANDROID
Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015.
Towards mutation analysis of Android Apps, ICSTW’15
8
Operators
11
Operators
Lin Deng, J. Offutt, P.Ammann, and N. Mirzsaei. 2017.
Towards mutation analysis of Android Apps, IST Journal
MUTATION TESTING FOR ANDROID
Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015.
Towards mutation analysis of Android Apps, ICSTW’15
8
Operators
11
Operators
Lin Deng, J. Offutt, P.Ammann, and N. Mirzsaei. 2017.
Towards mutation analysis of Android Apps, IST Journal
Intent payload replacement ( IPR )
Intent target replacement ( ITR )
Lifecycle method deletion ( MDL )
OnClick event replacement ( ECR )
OnTouch event replacement ( ETR )
Activity permission deletion ( APD )
Button widget deletion ( BWD)
EditText widget deletion ( TWD )
Button widget switch ( BWS )
Fail on null ( FON )
Orientation lock ( ORL )
MOTIVATION
MOTIVATION
1. No Characterization of Bugs Exhibited by Mobile Apps
MOTIVATION
1. No Characterization of Bugs Exhibited by Mobile Apps
2. Few Mutation Operators Have Been Proposed for
Android
MOTIVATION
1. No Characterization of Bugs Exhibited by Mobile Apps
2. Few Mutation Operators Have Been Proposed for
Android
3. No AutomatedTool Capable of Seeding Android-
Specific Mutation Operators
HOW CAN WE DERIVE EFFECTIVE MUTATION OPERATORS?
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived
Catalog of Mutation Operators
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived Catalog
of Mutation Operators
2K+ / 26K+
ISSUES / BUG-FIXES
365 / 43
BUGS / PAPERS
718K+
REVIEWS
5,414
API METHODS
51K+
DISCUSSIONS
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived Catalog
of Mutation Operators
2K+ / 26K+
ISSUES / BUG-FIXES
365 / 43
BUGS / PAPERS
718K+
REVIEWS
5,414
API METHODS
51K+
DISCUSSIONS
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived Catalog
of Mutation Operators
2,023 DOCUMENTS
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived Catalog
of Mutation Operators
2,023 DOCUMENTS
TAGGERS
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived Catalog
of Mutation Operators
2,023 DOCUMENTS
TAGGERS
400 FALSE POSITIVES
393 UNCLEAR
1,230 TAGGED DOCUMENTS
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived Catalog
of Mutation Operators
Activities and Intents [37] Android programming [107] API and Libraries [86]
Back-end Services [22]
Collections and Strings [34]
Connectivity [19]
Data/Objects Parsing and Format [187]
Database [87]
Device/Emulator [51]
General Programming [283]
GUI [129]
I/O [105]
Non-functional Requirements [47]
Threading [36]
Invalid data/uri [19]
Invalid activity name [1]
ActivityNotFoundException, Invalid intent [18]
Issues with manifest file [3]
Invalid activity path in manifest [1]
Missing activity definition in manifest [2]
Bad practices [11]
API misuse (improper call activity methods) [1]
Errors implementing Activity lifecycle [6]
Invalid context used for intent [2]
Call in wrong activity lifecycle method [2]
Other [4]
Bug in Intent implementation [3]
Issues in onCreate methods [1]
Invalid data/uri [7]
Invalid GPS location [4]
Invalid ID in findView [2]
Package name not found [1]
Issues with app’s folder structure [5]
Android app folder structure [4]
Executable/command not in right folder [1]
Issues with manifest file [23]
Android app permissions [11]
Issues with high screen resolution [1]
Other [11]
Issues with peripherals/ports [2]
Controller quirk on android games [1]
Resting value of analog channel [1]
Bad practices [13]
Argument/Object is not parcelable [1]
Component decl. before call setContentView [2]
Declaring loader fragment inside the fragment [1]
Missing override isValidFragment method [1]
Multiple instantiation of a resource [1]
OpenGL issues [1]
Parcelable not implement for intent call [1]
Service unbinding is missing [1]
System service invoked before creating activity [1]
Wake lock misuse [1]
Wakelock on WIFI connection [1]
65K methods limitation in a single dex file [1]
Resources [10]
Invalid Drawable [1]
Invalid Path to Resources [1]
Invalid resource id [5]
Missing String in Resources Folder [1]
Resources.NotFoundException [1]
Wrong version number of OBB file [1]
Other [36]
Call restricted method in accessibility service [11]
Google API key configuration/setup [1]
Invalid Application package [2]
Using Context.MODE_PRIVATE to open file [1]
Issues with Preferences [2]
Issues with Timers [2]
Miss return in listener/event implementation [1]
Stale data in app [2]
Timeout values for location services [1]
Running out of loopback devices [1]
Errors in managing the apps fragments [3]
Internationalization [4]
Unregistered Receivers Errors [1]
Missing 3G interfaces [1]
State not saved [1]
App change and fault proneness [16]
Generic API bug [4]
Impact of API change [10]
Operation on deprecated API [2]
Device/Emulator with different API [18]
Android compatibility APIs [11]
Build.VERSION.SDK_INT unavailable in Andr. x.y [1]
Image viewer bug in Android x.y and below [1]
Invalid TPL version [1]
Invalid/Lower SDK version [2]
Unsupported Operation at run-time [2]
Bad practices [30]
API misuse (general) [25]
API misuse (bluetooth) [1]
API misuse (camera) [2]
Web API misuse [2]
Other [22]
Errors with API/Library linking [14]
Meta-data tag for play services [1]
Conflicts between libraries [1]
Library bug [6]
Authentication [3]
Invalid auth token for back-end service [1]
Invalid certificate for back-end service [2]
Invalid data/uri [2]
Return from back-end service not well formed [1]
Special characters in HTTP post [1]
Other [17]
Back-end service not available/returns null [7]
Error while invoking back-end service [10]
Size-related [24]
Miss check for IndexOutOfBoundException [14]
Operation on empty string [1]
Issues with collections size [1]
Operations on empty collections [8]
Other [10]
ArrayStoreException [1]
Missing implementation of comparable [3]
Accessing TypedArray already recycled [1]
Invalid operation on collection [4]
Invalid string comparison in condition [1]
UDP 53 bypass [1]
SMTPSendFailedException (Authent. Failure) [1]
Network connection is off/lost [6]
Data loss in network operations [1]
HTTP request issue [2]
HttpClient usage [1]
Network errors during authentication [1]
Using infinite loop to check WIFI connection [1]
Player crashes on slow connection [1]
Network timeout [1]
SipException (VoIP) [3]
Missing checks [147]
Missing null check [10]
Null/Uninitialized object [40]
Null Parameter [42]
NullPointerException (general) [55]
URI/URL [7]
Error parsing URL in HTML website [1]
Invalid URI used internally [4]
Invalid URI provided by the user [1]
URL UnsupportedEncodingException [1]
XML-related [11]
Invalid SAX transformer configuration [1]
SAXException [4]
XML Format Error [1]
XmlPullParserException [1]
DOMException [1]
Data Parsing Errors [3]
Numeric-data [5]
NumberFormatException [4]
Parsing numeric values [1]
Other [17]
DataFormatException [1]
JSON Parsing Errors [13]
Invalid user input [3]
SQL-related [67]
DB table/column not found [3]
SQL Injection [1]
Invalid field type retrieval [1]
Query syntax error [62]
Cursor [7]
Closing null/empty cursor [2]
Issues when using DB cursors [5]
Other [13]
Database file cannot be opened [1]
Bug in database access on SD card [1]
Database locked [2]
Wrong database version code [4]
Database connection error [4]
Bug in database descriptor [1]
Device/Android ROM-specific issues [12]
Emulator-specific issues [8]
Keyboard not showing up in webview [1]
Directories/Space missing in filesystem [7]
Device rotation [23]
Bugs in application logic [106]
Invalid Parameter [70]
Error in numerical operations [1]
ClassCastException [4]
GenericSignatureFormatError [1]
Missing precondition check [8]
Empty constructors are missed [1]
Errors implementing inner class [3]
Override method missing [2]
Super not called [1]
Date issues [2]
Error in loop limit [1]
Exception/Error handling [3]
Invalid constant [2]
Missing break in switch [1]
Syntax Error [18]
Regex error [1]
Wrong relational operator [1]
Uncaught exception [14]
Error in console command invoked from app [3]
Issues executing telnet commands [1]
Data race [26]
Bug in loading resources [8]
IllegalStateException [5]
Components and Views [30]
Component with wrong dimensions [1]
Invalid component/view focus [6]
Text in input/label/view disappears [1]
View/Component is not displayed [4]
Component with wrong fonts style [1]
Wrong text in view/component [6]
Issues in component animation [8]
FindViewById returns null [3]
Issues with manifest file [4]
Button should not be clickable [1]
Component undefined in XML Layout files [3]
Layout [23]
Issues in layout files [3]
Visual appearance (layout issues) [19]
Unsupported theme [1]
Bad practices [21]
ViewHolder pattern is not used [9]
Improper call to getView [1]
Inappropriate use of ListView [6]
Inappropriate use of ViewPager [2]
Inflating too many views [1]
Large number of fragments in the app [1]
setContent before content view is set [1]
Message/Dialog [5]
Error messages are not descriptive [1]
Notification/Warning message missing [3]
Notification/Warning message re-appear [1]
Other [30]
Issues in GUI logic (general) [14]
Multi line text selection is not allowed [1]
Bug in GUI listener [7]
Bug in webViewClient listener [1]
Dismiss progress dialog before activity ends [1]
GUI refresh issue [1]
Tab is missing listener [1]
Wrong onClickListener [2]
Fragm. without implement. of onViewCreated [1]
Fragment not attached to activity [1]
Visual appearance [16]
Data is not listed in the right sorting/order [2]
Showing data in wrong format [3]
Texture error [4]
Invalid colors [7]
Buffer [9]
Buffer overflow [3]
BufferUnderflowException [2]
ShortBufferException [1]
Mutation operation on non-mutable buffer [2]
InvalidMarkException [1]
Channel/Socket connection [12]
AsynchronousCloseException [1]
ClosedChannelException [1]
ErrnoException [6]
NonWritableChannelException [1]
SocketException [3]
File [72]
File I/O error [56]
File metadata issue [1]
File permissions [1]
Operation with invalid file [5]
Using symbolic link in backup [1]
Issue creating file/folder in device system [1]
FileNotFoundException/Invalid file path [7]
Streams [12]
Closing unverified writer [1]
Connect PipedWriter to closed/connected reader [2]
File operation on closed reader [2]
File operation on closed stream/scanner [2]
KeyException [1]
Release stream without verifying if still busy [1]
Next token cannot translate to expected type [1]
Flush of decoder at the end of the input [1]
Operations on closed Formatter [1]
Memory [15]
OOM (canvas texture size) [1]
OOM (general) [1]
OOM (large arrays) [2]
OOM (large bitmap) [3]
OOM (loading too many images) [3]
OOM (resizing multiple images) [1]
OOM (saving JSON to SharedPreferences) [1]
Uncaught OOM exception [3]
Responsiveness/Battery Drain [25]
Expensive operation in main thread (GUI lags) [16]
ANR (unnecessary computation in Handler) [1]
Performance (lengthy operation creating db) [1]
Performance (unnecessary computation) [1]
GUI updated unnecessarily often [1]
Lengthy operations on background thread [1]
Network request in the GUI thread [4]
Security [7]
KeyChainException [1]
PrivilegedActionException [1]
SecurityException [4]
Invalid signed public key [1]
Callback/message not removed from handler [1]
Data race (threads synchronization) [3]
GUI operation out of main thread [1]
Inappropriate use of threads/async tasks [7]
Instantiating Handler without looper [1]
Synchronized access to methods [1]
Wrong GUI update from async task [3]
Wrong GUI update from thread [1]
Wrong handler import [1]
Bug in threading implementation [7]
Runnable does not stop [1]
Invalid operation on AsynkTaskLoader [1]
Invalid operation on interrupted thread [6]
Invalid operation on Phaser [1]
Set thread as deamon when it already runs [1]
Media [3]
Bad call of SyncParams.getAudioAdjustMode [1]
Flush on initialized player [1]
Getting token from closed media browser [1]
Discarded [793]
False positive [400]
Unclear [393]
Images [8]
Failed binder transaction (bitmaps) [1]
Images without default dimensions [2]
Inducing GC operations because of images [1]
Large bitmaps [2]
Persisting images as strings in DB [1]
Resizing images in GUI thread [1]
35%
ANDROID FAULTS
65%
JAVA FAULTS
Activities and Intents [37] Android programming [107] API and Libraries [86]
Back-end Services [22]
Collections and Strings [34]
Connectivity [19]
Data/Objects Parsing and Format [187]
Database [87]
Device/Emulator [51]
General Programming [283]
GUI [129]
I/O [105]
Non-functional Requirements [47]
Threading [36]
Invalid data/uri [19]
Invalid activity name [1]
ActivityNotFoundException, Invalid intent [18]
Issues with manifest file [3]
Invalid activity path in manifest [1]
Missing activity definition in manifest [2]
Bad practices [11]
API misuse (improper call activity methods) [1]
Errors implementing Activity lifecycle [6]
Invalid context used for intent [2]
Call in wrong activity lifecycle method [2]
Other [4]
Bug in Intent implementation [3]
Issues in onCreate methods [1]
Invalid data/uri [7]
Invalid GPS location [4]
Invalid ID in findView [2]
Package name not found [1]
Issues with app’s folder structure [5]
Android app folder structure [4]
Executable/command not in right folder [1]
Issues with manifest file [23]
Android app permissions [11]
Issues with high screen resolution [1]
Other [11]
Issues with peripherals/ports [2]
Controller quirk on android games [1]
Resting value of analog channel [1]
Bad practices [13]
Argument/Object is not parcelable [1]
Component decl. before call setContentView [2]
Declaring loader fragment inside the fragment [1]
Missing override isValidFragment method [1]
Multiple instantiation of a resource [1]
OpenGL issues [1]
Parcelable not implement for intent call [1]
Service unbinding is missing [1]
System service invoked before creating activity [1]
Wake lock misuse [1]
Wakelock on WIFI connection [1]
65K methods limitation in a single dex file [1]
Resources [10]
Invalid Drawable [1]
Invalid Path to Resources [1]
Invalid resource id [5]
Missing String in Resources Folder [1]
Resources.NotFoundException [1]
Wrong version number of OBB file [1]
Other [36]
Call restricted method in accessibility service [11]
Google API key configuration/setup [1]
Invalid Application package [2]
Using Context.MODE_PRIVATE to open file [1]
Issues with Preferences [2]
Issues with Timers [2]
Miss return in listener/event implementation [1]
Stale data in app [2]
Timeout values for location services [1]
Running out of loopback devices [1]
Errors in managing the apps fragments [3]
Internationalization [4]
Unregistered Receivers Errors [1]
Missing 3G interfaces [1]
State not saved [1]
App change and fault proneness [16]
Generic API bug [4]
Impact of API change [10]
Operation on deprecated API [2]
Device/Emulator with different API [18]
Android compatibility APIs [11]
Build.VERSION.SDK_INT unavailable in Andr. x.y [1]
Image viewer bug in Android x.y and below [1]
Invalid TPL version [1]
Invalid/Lower SDK version [2]
Unsupported Operation at run-time [2]
Bad practices [30]
API misuse (general) [25]
API misuse (bluetooth) [1]
API misuse (camera) [2]
Web API misuse [2]
Other [22]
Errors with API/Library linking [14]
Meta-data tag for play services [1]
Conflicts between libraries [1]
Library bug [6]
Authentication [3]
Invalid auth token for back-end service [1]
Invalid certificate for back-end service [2]
Invalid data/uri [2]
Return from back-end service not well formed [1]
Special characters in HTTP post [1]
Other [17]
Back-end service not available/returns null [7]
Error while invoking back-end service [10]
Size-related [24]
Miss check for IndexOutOfBoundException [14]
Operation on empty string [1]
Issues with collections size [1]
Operations on empty collections [8]
Other [10]
ArrayStoreException [1]
Missing implementation of comparable [3]
Accessing TypedArray already recycled [1]
Invalid operation on collection [4]
Invalid string comparison in condition [1]
UDP 53 bypass [1]
SMTPSendFailedException (Authent. Failure) [1]
Network connection is off/lost [6]
Data loss in network operations [1]
HTTP request issue [2]
HttpClient usage [1]
Network errors during authentication [1]
Using infinite loop to check WIFI connection [1]
Player crashes on slow connection [1]
Network timeout [1]
SipException (VoIP) [3]
Missing checks [147]
Missing null check [10]
Null/Uninitialized object [40]
Null Parameter [42]
NullPointerException (general) [55]
URI/URL [7]
Error parsing URL in HTML website [1]
Invalid URI used internally [4]
Invalid URI provided by the user [1]
URL UnsupportedEncodingException [1]
XML-related [11]
Invalid SAX transformer configuration [1]
SAXException [4]
XML Format Error [1]
XmlPullParserException [1]
DOMException [1]
Data Parsing Errors [3]
Numeric-data [5]
NumberFormatException [4]
Parsing numeric values [1]
Other [17]
DataFormatException [1]
JSON Parsing Errors [13]
Invalid user input [3]
SQL-related [67]
DB table/column not found [3]
SQL Injection [1]
Invalid field type retrieval [1]
Query syntax error [62]
Cursor [7]
Closing null/empty cursor [2]
Issues when using DB cursors [5]
Other [13]
Database file cannot be opened [1]
Bug in database access on SD card [1]
Database locked [2]
Wrong database version code [4]
Database connection error [4]
Bug in database descriptor [1]
Device/Android ROM-specific issues [12]
Emulator-specific issues [8]
Keyboard not showing up in webview [1]
Directories/Space missing in filesystem [7]
Device rotation [23]
Bugs in application logic [106]
Invalid Parameter [70]
Error in numerical operations [1]
ClassCastException [4]
GenericSignatureFormatError [1]
Missing precondition check [8]
Empty constructors are missed [1]
Errors implementing inner class [3]
Override method missing [2]
Super not called [1]
Date issues [2]
Error in loop limit [1]
Exception/Error handling [3]
Invalid constant [2]
Missing break in switch [1]
Syntax Error [18]
Regex error [1]
Wrong relational operator [1]
Uncaught exception [14]
Error in console command invoked from app [3]
Issues executing telnet commands [1]
Data race [26]
Bug in loading resources [8]
IllegalStateException [5]
Components and Views [30]
Component with wrong dimensions [1]
Invalid component/view focus [6]
Text in input/label/view disappears [1]
View/Component is not displayed [4]
Component with wrong fonts style [1]
Wrong text in view/component [6]
Issues in component animation [8]
FindViewById returns null [3]
Issues with manifest file [4]
Button should not be clickable [1]
Component undefined in XML Layout files [3]
Layout [23]
Issues in layout files [3]
Visual appearance (layout issues) [19]
Unsupported theme [1]
Bad practices [21]
ViewHolder pattern is not used [9]
Improper call to getView [1]
Inappropriate use of ListView [6]
Inappropriate use of ViewPager [2]
Inflating too many views [1]
Large number of fragments in the app [1]
setContent before content view is set [1]
Message/Dialog [5]
Error messages are not descriptive [1]
Notification/Warning message missing [3]
Notification/Warning message re-appear [1]
Other [30]
Issues in GUI logic (general) [14]
Multi line text selection is not allowed [1]
Bug in GUI listener [7]
Bug in webViewClient listener [1]
Dismiss progress dialog before activity ends [1]
GUI refresh issue [1]
Tab is missing listener [1]
Wrong onClickListener [2]
Fragm. without implement. of onViewCreated [1]
Fragment not attached to activity [1]
Visual appearance [16]
Data is not listed in the right sorting/order [2]
Showing data in wrong format [3]
Texture error [4]
Invalid colors [7]
Buffer [9]
Buffer overflow [3]
BufferUnderflowException [2]
ShortBufferException [1]
Mutation operation on non-mutable buffer [2]
InvalidMarkException [1]
Channel/Socket connection [12]
AsynchronousCloseException [1]
ClosedChannelException [1]
ErrnoException [6]
NonWritableChannelException [1]
SocketException [3]
File [72]
File I/O error [56]
File metadata issue [1]
File permissions [1]
Operation with invalid file [5]
Using symbolic link in backup [1]
Issue creating file/folder in device system [1]
FileNotFoundException/Invalid file path [7]
Streams [12]
Closing unverified writer [1]
Connect PipedWriter to closed/connected reader [2]
File operation on closed reader [2]
File operation on closed stream/scanner [2]
KeyException [1]
Release stream without verifying if still busy [1]
Next token cannot translate to expected type [1]
Flush of decoder at the end of the input [1]
Operations on closed Formatter [1]
Memory [15]
OOM (canvas texture size) [1]
OOM (general) [1]
OOM (large arrays) [2]
OOM (large bitmap) [3]
OOM (loading too many images) [3]
OOM (resizing multiple images) [1]
OOM (saving JSON to SharedPreferences) [1]
Uncaught OOM exception [3]
Responsiveness/Battery Drain [25]
Expensive operation in main thread (GUI lags) [16]
ANR (unnecessary computation in Handler) [1]
Performance (lengthy operation creating db) [1]
Performance (unnecessary computation) [1]
GUI updated unnecessarily often [1]
Lengthy operations on background thread [1]
Network request in the GUI thread [4]
Security [7]
KeyChainException [1]
PrivilegedActionException [1]
SecurityException [4]
Invalid signed public key [1]
Callback/message not removed from handler [1]
Data race (threads synchronization) [3]
GUI operation out of main thread [1]
Inappropriate use of threads/async tasks [7]
Instantiating Handler without looper [1]
Synchronized access to methods [1]
Wrong GUI update from async task [3]
Wrong GUI update from thread [1]
Wrong handler import [1]
Bug in threading implementation [7]
Runnable does not stop [1]
Invalid operation on AsynkTaskLoader [1]
Invalid operation on interrupted thread [6]
Invalid operation on Phaser [1]
Set thread as deamon when it already runs [1]
Media [3]
Bad call of SyncParams.getAudioAdjustMode [1]
Flush on initialized player [1]
Getting token from closed media browser [1]
Discarded [793]
False positive [400]
Unclear [393]
Images [8]
Failed binder transaction (bitmaps) [1]
Images without default dimensions [2]
Inducing GC operations because of images [1]
Large bitmaps [2]
Persisting images as strings in DB [1]
Resizing images in GUI thread [1]
Activities and Intents [37] Android programming [107] API and Libraries [86]
Back-end Services [22]
Collections and Strings [34]
Connectivity [19]
Data/Objects Parsing and Format [187]
Database [87]
GUI [129]
I/O [105]
Invalid data/uri [19]
Invalid activity name [1]
ActivityNotFoundException, Invalid intent [18]
Issues with manifest file [3]
Invalid activity path in manifest [1]
Missing activity definition in manifest [2]
Bad practices [11]
API misuse (improper call activity methods) [1]
Errors implementing Activity lifecycle [6]
Invalid context used for intent [2]
Call in wrong activity lifecycle method [2]
Other [4]
Bug in Intent implementation [3]
Issues in onCreate methods [1]
Invalid data/uri [7]
Invalid GPS location [4]
Invalid ID in findView [2]
Package name not found [1]
Issues with app’s folder structure [5]
Android app folder structure [4]
Executable/command not in right folder [1]
Issues with manifest file [23]
Android app permissions [11]
Issues with high screen resolution [1]
Other [11]
Issues with peripherals/ports [2]
Controller quirk on android games [1]
Resting value of analog channel [1]
Bad practices [13]
Argument/Object is not parcelable [1]
Component decl. before call setContentView [2]
Declaring loader fragment inside the fragment [1]
Missing override isValidFragment method [1]
Multiple instantiation of a resource [1]
OpenGL issues [1]
Parcelable not implement for intent call [1]
Service unbinding is missing [1]
System service invoked before creating activity [1]
Wake lock misuse [1]
Wakelock on WIFI connection [1]
65K methods limitation in a single dex file [1]
Resources [10]
Invalid Drawable [1]
Invalid Path to Resources [1]
Invalid resource id [5]
Missing String in Resources Folder [1]
Resources.NotFoundException [1]
Wrong version number of OBB file [1]
Other [36]
App change and fault proneness [16]
Generic API bug [4]
Impact of API change [10]
Operation on deprecated API [2]
Device/Emulator with different API [18]
Android compatibility APIs [11]
Build.VERSION.SDK_INT unavailable in Andr. x.y [1]
Image viewer bug in Android x.y and below [1]
Invalid TPL version [1]
Invalid/Lower SDK version [2]
Unsupported Operation at run-time [2]
Bad practices [30]
API misuse (general) [25]
API misuse (bluetooth) [1]
API misuse (camera) [2]
Web API misuse [2]
Other [22]
Errors with API/Library linking [14]
Meta-data tag for play services [1]
Conflicts between libraries [1]
Library bug [6]
Authentication [3]
Invalid auth token for back-end service [1]
Invalid certificate for back-end service [2]
Invalid data/uri [2]
Return from back-end service not well formed [1]
Special characters in HTTP post [1]
Other [17]
Back-end service not available/returns null [7]
Error while invoking back-end service [10]
Size-related [24]
Miss check for IndexOutOfBoundException [14]
Operation on empty string [1]
Issues with collections size [1]
Operations on empty collections [8]
Other [10]
ArrayStoreException [1]
Missing implementation of comparable [3]
Accessing TypedArray already recycled [1]
Invalid operation on collection [4]
Invalid string comparison in condition [1]
UDP 53 bypass [1]
SMTPSendFailedException (Authent. Failure) [1]
Network connection is off/lost [6]
Data loss in network operations [1]
HTTP request issue [2]
HttpClient usage [1]
Network errors during authentication [1]
Using infinite loop to check WIFI connection [1]
Player crashes on slow connection [1]
Network timeout [1]
SipException (VoIP) [3]
Missing checks [147]
Missing null check [10]
Null/Uninitialized object [40]
SQL-related [67]
DB table/column not found [3]
SQL Injection [1]
Invalid field type retrieval [1]
Query syntax error [62]
Cursor [7]
Closing null/empty cursor [2]
Issues when using DB cursors [5]
Other [13]
Database file cannot be opened [1]
Bug in database access on SD card [1]
Database locked [2]
Components and Views [30]
Component with wrong dimensions [1]
Invalid component/view focus [6]
Text in input/label/view disappears [1]
View/Component is not displayed [4]
Component with wrong fonts style [1]
Wrong text in view/component [6]
Issues in component animation [8]
FindViewById returns null [3]
Issues with manifest file [4]
Button should not be clickable [1]
Component undefined in XML Layout files [3]
Layout [23]
Issues in layout files [3]
Visual appearance (layout issues) [19]
Unsupported theme [1]
Bad practices [21]
ViewHolder pattern is not used [9]
Improper call to getView [1]
Inappropriate use of ListView [6]
Inappropriate use of ViewPager [2]
Inflating too many views [1]
Large number of fragments in the app [1]
setContent before content view is set [1]
Message/Dialog [5]
Error messages are not descriptive [1]
Notification/Warning message missing [3]
Notification/Warning message re-appear [1]
Other [30]
Issues in GUI logic (general) [14]
Multi line text selection is not allowed [1]
Bug in GUI listener [7]
Bug in webViewClient listener [1]
Dismiss progress dialog before activity ends [1]
GUI refresh issue [1]
Tab is missing listener [1]
Wrong onClickListener [2]
Fragm. without implement. of onViewCreated [1]
Fragment not attached to activity [1]
Visual appearance [16]
Data is not listed in the right sorting/order [2]
Showing data in wrong format [3]
Texture error [4]
Invalid colors [7]
Buffer [9]
Media [3]
Bad call of SyncParams.getAudioAdjustMode [1]
Flush on initialized player [1]
Getting token from closed media browser [1]
Images [8]
Failed binder transaction (bitmaps) [1]
Images without default dimensions [2]
Inducing GC operations because of images [1]
Large bitmaps [2]
Persisting images as strings in DB [1]
Resizing images in GUI thread [1]
CATEGORY
Sub-category
Bug-type
http://android-mutation.com
LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS
Real Bugs in
Android Applications
Taxonomy of Android
Application Faults
Empirically Derived Catalog
of Mutation Operators
38 OPERATORS (10 CATEGORIES)
ACTIVITY/INTENTS
ANDROID PROGRAMMING
BACK-END SERVICES
CONNECTIVITY
DATA
DATABASE
GENERAL PROGRAMMING
GUI
INPUT / OUTPUT
NON-FUNCTIONAL REQUIREMENTS
8
5
1
2
1
3
4
6
3
5
MDROID+
App Src
1 PFP Derivation
AST Analysis Text Analysis
Activity Not Defined
Invalid Label
Null GPS Location
Invalid URI
Invalid Date
…
Android Operators
Potential Fault Profile
Activity Not
Defined
Invalid
Label
Null GPS
Location
Invalid
URI
InvalidDate
2 Mutant Generation
Parallel Project Cloning
& Operator Application
Mutant
Projects + Log
Mutant
Log
MDROID+
MDROID+
RQ1: Fault coverage of operators?
MDROID+
RQ1: Fault coverage of operators?
RQ2: Rate of Non-Compilable andTrivial
Mutants?
MDROID+
RQ1: Fault coverage of operators?
RQ2: Rate of Non-Compilable andTrivial
Mutants?
RQ3: Major Causes for Non-Compilable and
trivial mutants?
RQ1: FAULT COVERAGE OF OPERATORS
762
UNTAGGED
DOCUMENTS
Major, PIT, muJava,
Javalanche, muDroid,
Deng et al (ICSTW),
MDroid+
RQ1: FAULT COVERAGE OF OPERATORS
762
UNTAGGED
DOCUMENTS
TAGGERS
Major, PIT, muJava,
Javalanche, muDroid,
Deng et al (ICSTW),
MDroid+
RQ1: FAULT COVERAGE OF OPERATORS
762
UNTAGGED
DOCUMENTS
TAGGERS
Major, PIT, muJava,
Javalanche, muDroid,
Deng et al (ICSTW),
MDroid+
413 / 119
BUGS / TYPES
RQ1: FAULT COVERAGE OF OPERATORS
762
UNTAGGED
DOCUMENTS
TAGGERS
Major, PIT, muJava,
Javalanche, muDroid,
Deng et al (ICSTW),
MDroid+
102
MUTATION
OPERATORS
413 / 119
BUGS / TYPES
RQ1: FAULT COVERAGE OF OPERATORS
762
UNTAGGED
DOCUMENTS
TAGGERS
Major, PIT, muJava,
Javalanche, muDroid,
Deng et al (ICSTW),
MDroid+
102
MUTATION
OPERATORS
413 / 119
BUGS / TYPES
Coverage
% Types
% Faults
RQ1: FAULT COVERAGE OF OPERATORS
119
TYPES
103 (87%)
IN THE TAXONOMY
16
NEW TYPES
= +
413
BUGS
392 (95%)
IN THE TAXONOMY
21
NEW BUGS
= +
RQ1: FAULT COVERAGE OF OPERATORS
119
BUG TYPES
Major
PIT
muDroid
muJava
Javalanche
Deng et. al
MDroid+
13%
13%
8%
9%
10%
15%
38%
BUG TYPE COVERAGE
Major
PIT
muDroid
muJava
Javalanche
Deng et. al
MDroid+
35%
33%
26%
32%
31%
41%
62%
TOTAL BUG COVERAGE
413
BUGS
RQ1: FAULT COVERAGE OF OPERATORS
119
BUG TYPES
Major
PIT
muDroid
muJava
Javalanche
Deng et. al
MDroid+
13%
13%
8%
9%
10%
15%
38%
BUG TYPE COVERAGE
Major
PIT
muDroid
muJava
Javalanche
Deng et. al
MDroid+
35%
33%
26%
32%
31%
41%
62%
TOTAL BUG COVERAGE
413
BUGS
RQ1: FAULT COVERAGE OF OPERATORS
119
BUG TYPES
Major
PIT
muDroid
muJava
Javalanche
Deng et. al
MDroid+
13%
13%
8%
9%
10%
15%
38%
BUG TYPE COVERAGE
Unique to MDroid+: 26%
Major
PIT
muDroid
muJava
Javalanche
Deng et. al
MDroid+
35%
33%
26%
32%
31%
41%
62%
TOTAL BUG COVERAGE
413
BUGS
Unique to MDroid+: 19%
RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS
55
APPS
RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS
55
APPS
Major
PIT
muDroid
MDroid+
4
TOOLS
RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS
55
APPS
Major
PIT
muDroid
MDroid+
4
TOOLS
MUTANT
APKS
RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS
55
APPS
Major
PIT
muDroid
MDroid+
4
TOOLS
MUTANT
APKS
Execution Engine
RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS
Major
PIT
muDroid
MDroid+
GENERATED
MUTANTS
(AVG PER APP)
904
2.6k
1.5k
167
RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS
Major
PIT
muDroid
MDroid+
GENERATED
MUTANTS
(AVG PER APP)
904
2.6k
1.5k
167
NON-COMPILABLE
MUTANTS
(AVG PER APP)
1.8%
0%
53.9%
0.56%
RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS
Major
PIT
muDroid
MDroid+
GENERATED
MUTANTS
(AVG PER APP)
904
2.6k
1.5k
167
NON-COMPILABLE
MUTANTS
(AVG PER APP)
1.8%
0%
53.9%
0.56%
TRIVIAL
MUTANTS
(AVG PER APP)
5.4%
7.2%
11.8%
2.42%
RQ3: ROOT CAUSES OF NON-COMPILABLE AND TRIVIAL MUTANTS
MDroid+
RQ3: ROOT CAUSES OF NON-COMPILABLE AND TRIVIAL MUTANTS
MDroid+
Non-Compilable Mutants CLOSING NULL CURSOR OPERATOR
dbcursor.close();	
dbcursor	=	null;	
dbcursor.close();
RQ3: ROOT CAUSES OF NON-COMPILABLE AND TRIVIAL MUTANTS
MDroid+
Non-Compilable Mutants CLOSING NULL CURSOR OPERATOR
dbcursor.close();	
dbcursor	=	null;	
dbcursor.close();	
NULL INTENT, FINDVIEWBYID RETURNS NULL,
INVALID ID FINDVIEW
Trivial Mutants
findViewById(R.id.load_data_button) null
SUMMARY OF FINDINGS
Research Questions Outcomes
RQ1: Fault coverage of
operators?
SUMMARY OF FINDINGS
Research Questions Outcomes
• MDroid+ covered more
bugs than other tools.
RQ1: Fault coverage of
operators?
RQ2: Rate of Non-
Compilable andTrivial
Mutants?
SUMMARY OF FINDINGS
Research Questions Outcomes
• MDroid+ covered more
bugs than other tools.
• MDroid+ has the
smallest rate of non-
compilable and trivial
mutants
RQ1: Fault coverage of
operators?
RQ2: Rate of Non-
Compilable andTrivial
Mutants?
RQ3: Major Causes for
Non-Compilable and
trivial mutants?
SUMMARY OF FINDINGS
Research Questions Outcomes
• MDroid+ covered more
bugs than other tools.
• MDroid+ has the
smallest rate of non-
compilable and trivial
mutants
• Unreachable Code, and
NPEs in Main Activity
https://www.android-mutation.com
Any Questions?
Thank you!
Kevin Moran
College of William & Mary
@kevpmo
kpmoran@cs.wm.edu
https://www.kpmoran.com
MDroid+: A Mutation Testing Framework for Android

Contenu connexe

Tendances

ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...
ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...
ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...Lili Wei
 
ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...
ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...
ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...Lili Wei
 
Android automation tools
Android automation toolsAndroid automation tools
Android automation toolsSSGMCE SHEGAON
 
Vipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_expVipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_expVipin Gupta
 
How to Test Security and Vulnerability of Your Android and iOS Apps
How to Test Security and Vulnerability of Your Android and iOS AppsHow to Test Security and Vulnerability of Your Android and iOS Apps
How to Test Security and Vulnerability of Your Android and iOS AppsBitbar
 
TMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasTMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasKJR
 
Benchpress: Analyzing Android App Vulnerability Benchmark Suites
Benchpress:  Analyzing Android App Vulnerability Benchmark SuitesBenchpress:  Analyzing Android App Vulnerability Benchmark Suites
Benchpress: Analyzing Android App Vulnerability Benchmark SuitesVenkatesh Prasad Ranganath
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsDominik Dary
 
2012 mobile testingsummit-moet
2012 mobile testingsummit-moet2012 mobile testingsummit-moet
2012 mobile testingsummit-moetEing Ong
 
Best Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBest Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBitbar
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentationBitbar
 
Hassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device TestingHassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device TestingBitbar
 
TEA Presentation V 0.3
TEA Presentation V 0.3TEA Presentation V 0.3
TEA Presentation V 0.3Ian McDonald
 
Best Practices in Mobile Game Testing
Best Practices in Mobile Game TestingBest Practices in Mobile Game Testing
Best Practices in Mobile Game TestingBitbar
 
Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?
Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?
Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?TechWell
 
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Bitbar
 
Software Testing - Sajid Sidi
Software Testing - Sajid SidiSoftware Testing - Sajid Sidi
Software Testing - Sajid SidiSajid Sidi
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Marianne Harness
 
Scrum Events and Artifacts in Action
Scrum Events and Artifacts in ActionScrum Events and Artifacts in Action
Scrum Events and Artifacts in ActionLemi Orhan Ergin
 

Tendances (20)

ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...
ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...
ICSE 2019 - PIVOT: Learning API-Device Correlations to Facilitate Android Com...
 
ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...
ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...
ASE 2016 Taming Android Fragmentation: Characterizing and Detecting Compatibi...
 
Android automation tools
Android automation toolsAndroid automation tools
Android automation tools
 
Vipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_expVipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_exp
 
How to Test Security and Vulnerability of Your Android and iOS Apps
How to Test Security and Vulnerability of Your Android and iOS AppsHow to Test Security and Vulnerability of Your Android and iOS Apps
How to Test Security and Vulnerability of Your Android and iOS Apps
 
TMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasTMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael Palotas
 
Benchpress: Analyzing Android App Vulnerability Benchmark Suites
Benchpress:  Analyzing Android App Vulnerability Benchmark SuitesBenchpress:  Analyzing Android App Vulnerability Benchmark Suites
Benchpress: Analyzing Android App Vulnerability Benchmark Suites
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile Projects
 
2012 mobile testingsummit-moet
2012 mobile testingsummit-moet2012 mobile testingsummit-moet
2012 mobile testingsummit-moet
 
Best Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBest Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App Testing
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentation
 
Hassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device TestingHassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device Testing
 
TEA Presentation V 0.3
TEA Presentation V 0.3TEA Presentation V 0.3
TEA Presentation V 0.3
 
Best Practices in Mobile Game Testing
Best Practices in Mobile Game TestingBest Practices in Mobile Game Testing
Best Practices in Mobile Game Testing
 
Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?
Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?
Rise of the Machines: Can Artificial Intelligence Terminate Manual Testing?
 
Dw testing
Dw testingDw testing
Dw testing
 
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?
 
Software Testing - Sajid Sidi
Software Testing - Sajid SidiSoftware Testing - Sajid Sidi
Software Testing - Sajid Sidi
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020
 
Scrum Events and Artifacts in Action
Scrum Events and Artifacts in ActionScrum Events and Artifacts in Action
Scrum Events and Artifacts in Action
 

Similaire à MDroid+: A Mutation Testing Framework for Android

What are the Characteristics of High-rated Apps
What are the Characteristics of High-rated AppsWhat are the Characteristics of High-rated Apps
What are the Characteristics of High-rated AppsSAIL_QU
 
Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...
Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...
Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...Riccardo Coppola
 
iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...
iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...
iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...Concordia University
 
Testing the UI of Mobile Applications
Testing the UI of Mobile ApplicationsTesting the UI of Mobile Applications
Testing the UI of Mobile ApplicationsMarco Torchiano
 
2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdf2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdfBelayet Hossain
 
Continuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsContinuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsDaniel Löffelholz
 
End Users’ Perception of Hybrid Mobile Apps in the Google Play Store
End Users’ Perception of Hybrid Mobile Apps in the Google Play StoreEnd Users’ Perception of Hybrid Mobile Apps in the Google Play Store
End Users’ Perception of Hybrid Mobile Apps in the Google Play StoreIvano Malavolta
 
Testando Apps Android na Nuvem
Testando Apps Android na NuvemTestando Apps Android na Nuvem
Testando Apps Android na Nuvemtdc-globalcode
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerQA or the Highway
 
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...SAIL_QU
 
Mobile Application Testing by Javed Ansari
Mobile Application Testing by Javed AnsariMobile Application Testing by Javed Ansari
Mobile Application Testing by Javed AnsariJaved Ansari
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
 
Agile Mobile Testing Workshop
Agile Mobile Testing WorkshopAgile Mobile Testing Workshop
Agile Mobile Testing WorkshopNaresh Jain
 
On-Device Bug Reporting for Android Applications
On-Device Bug Reporting for Android ApplicationsOn-Device Bug Reporting for Android Applications
On-Device Bug Reporting for Android ApplicationsKevin Moran
 
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest
 
Android Performance and Monitoring - Meetup 3 25-14
Android Performance and Monitoring - Meetup 3 25-14Android Performance and Monitoring - Meetup 3 25-14
Android Performance and Monitoring - Meetup 3 25-14Alex Gaber
 
Exploratory testing and the mobile tester : A presentation by Jon Hagar
Exploratory testing and the mobile tester : A presentation by Jon HagarExploratory testing and the mobile tester : A presentation by Jon Hagar
Exploratory testing and the mobile tester : A presentation by Jon HagarGallop Solutions
 
Web API Fragility: How Robust Is Your Mobile Application?
Web API Fragility: How Robust Is Your Mobile Application?Web API Fragility: How Robust Is Your Mobile Application?
Web API Fragility: How Robust Is Your Mobile Application?Andy Zaidman
 
Interview questions for an Android Developer
Interview questions for an Android DeveloperInterview questions for an Android Developer
Interview questions for an Android DeveloperInterview Mocha
 
Application Quality Best Practices with VS2010
Application Quality Best Practices with VS2010Application Quality Best Practices with VS2010
Application Quality Best Practices with VS2010adrian8three
 

Similaire à MDroid+: A Mutation Testing Framework for Android (20)

What are the Characteristics of High-rated Apps
What are the Characteristics of High-rated AppsWhat are the Characteristics of High-rated Apps
What are the Characteristics of High-rated Apps
 
Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...
Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...
Automated Mobile UI Testing Fragility: An Exploratory Assessment Study on And...
 
iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...
iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...
iPerfDetector: Characterizing and Detecting Performance Anti-patterns in iOS ...
 
Testing the UI of Mobile Applications
Testing the UI of Mobile ApplicationsTesting the UI of Mobile Applications
Testing the UI of Mobile Applications
 
2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdf2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdf
 
Continuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsContinuously Delivering Distributed Systems
Continuously Delivering Distributed Systems
 
End Users’ Perception of Hybrid Mobile Apps in the Google Play Store
End Users’ Perception of Hybrid Mobile Apps in the Google Play StoreEnd Users’ Perception of Hybrid Mobile Apps in the Google Play Store
End Users’ Perception of Hybrid Mobile Apps in the Google Play Store
 
Testando Apps Android na Nuvem
Testando Apps Android na NuvemTestando Apps Android na Nuvem
Testando Apps Android na Nuvem
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran Kinsbruner
 
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
 
Mobile Application Testing by Javed Ansari
Mobile Application Testing by Javed AnsariMobile Application Testing by Javed Ansari
Mobile Application Testing by Javed Ansari
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
 
Agile Mobile Testing Workshop
Agile Mobile Testing WorkshopAgile Mobile Testing Workshop
Agile Mobile Testing Workshop
 
On-Device Bug Reporting for Android Applications
On-Device Bug Reporting for Android ApplicationsOn-Device Bug Reporting for Android Applications
On-Device Bug Reporting for Android Applications
 
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
 
Android Performance and Monitoring - Meetup 3 25-14
Android Performance and Monitoring - Meetup 3 25-14Android Performance and Monitoring - Meetup 3 25-14
Android Performance and Monitoring - Meetup 3 25-14
 
Exploratory testing and the mobile tester : A presentation by Jon Hagar
Exploratory testing and the mobile tester : A presentation by Jon HagarExploratory testing and the mobile tester : A presentation by Jon Hagar
Exploratory testing and the mobile tester : A presentation by Jon Hagar
 
Web API Fragility: How Robust Is Your Mobile Application?
Web API Fragility: How Robust Is Your Mobile Application?Web API Fragility: How Robust Is Your Mobile Application?
Web API Fragility: How Robust Is Your Mobile Application?
 
Interview questions for an Android Developer
Interview questions for an Android DeveloperInterview questions for an Android Developer
Interview questions for an Android Developer
 
Application Quality Best Practices with VS2010
Application Quality Best Practices with VS2010Application Quality Best Practices with VS2010
Application Quality Best Practices with VS2010
 

Plus de Kevin Moran

Assessing Test Case Prioritization on Real Faults and Mutants
Assessing Test Case Prioritization on Real Faults and MutantsAssessing Test Case Prioritization on Real Faults and Mutants
Assessing Test Case Prioritization on Real Faults and MutantsKevin Moran
 
Detecting and Summarizing GUI Changes in Evolving Mobile Apps
Detecting and Summarizing GUI Changes in Evolving Mobile AppsDetecting and Summarizing GUI Changes in Evolving Mobile Apps
Detecting and Summarizing GUI Changes in Evolving Mobile AppsKevin Moran
 
Auto-completing Bug Reports for Android Applications
Auto-completing Bug Reports for Android ApplicationsAuto-completing Bug Reports for Android Applications
Auto-completing Bug Reports for Android ApplicationsKevin Moran
 
A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...
A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...
A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...Kevin Moran
 
How do Developers Test Android Applications?
How do Developers Test Android Applications?How do Developers Test Android Applications?
How do Developers Test Android Applications?Kevin Moran
 
ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...
ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...
ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...Kevin Moran
 

Plus de Kevin Moran (6)

Assessing Test Case Prioritization on Real Faults and Mutants
Assessing Test Case Prioritization on Real Faults and MutantsAssessing Test Case Prioritization on Real Faults and Mutants
Assessing Test Case Prioritization on Real Faults and Mutants
 
Detecting and Summarizing GUI Changes in Evolving Mobile Apps
Detecting and Summarizing GUI Changes in Evolving Mobile AppsDetecting and Summarizing GUI Changes in Evolving Mobile Apps
Detecting and Summarizing GUI Changes in Evolving Mobile Apps
 
Auto-completing Bug Reports for Android Applications
Auto-completing Bug Reports for Android ApplicationsAuto-completing Bug Reports for Android Applications
Auto-completing Bug Reports for Android Applications
 
A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...
A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...
A Large-Scale Empirical Comparison of Static and DynamicTest Case Prioritizat...
 
How do Developers Test Android Applications?
How do Developers Test Android Applications?How do Developers Test Android Applications?
How do Developers Test Android Applications?
 
ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...
ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...
ICSE17 - Tool Demonstration - CrashScope A Practical Tool for the Automated T...
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Dernier (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

MDroid+: A Mutation Testing Framework for Android

  • 1. Kevin Moran, MicheleTufano, Carlos Bernal-Cárdenas, Mario Linares-Vásquez, Gabriele Bavota, ChristopherVendome, Massimiliano DiPenta, and Denys Poshyvanyk MDroid+:A MutationTesting Framework for Android 40th International Conference on Software Engineering (ICSE’18) Wednesday, May 30th, 2018
  • 2.
  • 3.
  • 4. !4
  • 5. !4
  • 7. MOBILE DEVELOPMENT CHALLENGES Highly Competitive App Marketplaces
  • 8. MOBILE DEVELOPMENT CHALLENGES Noisy Feedback from User Reviews Highly Competitive App Marketplaces
  • 9. MOBILE DEVELOPMENT CHALLENGES Noisy Feedback from User Reviews Highly Competitive App Marketplaces Change/Fault Prone APIs
  • 10. MOBILE DEVELOPMENT CHALLENGES Noisy Feedback from User Reviews Highly Competitive App Marketplaces Pressure for Frequent Releases Change/Fault Prone APIs
  • 11. MOBILE DEVELOPMENT CHALLENGES Noisy Feedback from User Reviews Highly Competitive App Marketplaces Pressure for Frequent Releases Touch-Based Event-Driven Interface Change/Fault Prone APIs
  • 13. TEST ADEQUACY CRITERIA Test Suite Test #1 Test #2 Test #3 Test #4 Test #5
  • 14. TEST ADEQUACY CRITERIA Test Suite Test #1 Test #2 Test #3 Test #4 Test #5 Test #1 Test #2 Test #3 Test #4 Test #5 Testing Results
  • 15. TEST ADEQUACY CRITERIA Test Suite Test #1 Test #2 Test #3 Test #4 Test #5 Test #1 Test #2 Test #3 Test #4 Test #5 Testing Results Code Coverage: 65.2%
  • 16.
  • 17. HOW EFFECTIVE ARE MY TESTS?
  • 19. MUTATION TESTING Mutation Operators Void Method Calls Invert Negatives ReturnValue Mutator Negate Conditionals Math Mutator
  • 20. MUTATION TESTING Mutation Operators Void Method Calls Invert Negatives ReturnValue Mutator Negate Conditionals Math Mutator Mutated Apks
  • 22. MUTATION TESTING FOR ANDROID Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015. Towards mutation analysis of Android Apps, ICSTW’15
  • 23. MUTATION TESTING FOR ANDROID Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015. Towards mutation analysis of Android Apps, ICSTW’15 8 Operators
  • 24. MUTATION TESTING FOR ANDROID Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015. Towards mutation analysis of Android Apps, ICSTW’15 8 Operators Lin Deng, J. Offutt, P.Ammann, and N. Mirzsaei. 2017. Towards mutation analysis of Android Apps, IST Journal
  • 25. MUTATION TESTING FOR ANDROID Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015. Towards mutation analysis of Android Apps, ICSTW’15 8 Operators 11 Operators Lin Deng, J. Offutt, P.Ammann, and N. Mirzsaei. 2017. Towards mutation analysis of Android Apps, IST Journal
  • 26. MUTATION TESTING FOR ANDROID Lin Deng, N. Mirzaei, P.Ammann, and J. Offutt. 2015. Towards mutation analysis of Android Apps, ICSTW’15 8 Operators 11 Operators Lin Deng, J. Offutt, P.Ammann, and N. Mirzsaei. 2017. Towards mutation analysis of Android Apps, IST Journal Intent payload replacement ( IPR ) Intent target replacement ( ITR ) Lifecycle method deletion ( MDL ) OnClick event replacement ( ECR ) OnTouch event replacement ( ETR ) Activity permission deletion ( APD ) Button widget deletion ( BWD) EditText widget deletion ( TWD ) Button widget switch ( BWS ) Fail on null ( FON ) Orientation lock ( ORL )
  • 28. MOTIVATION 1. No Characterization of Bugs Exhibited by Mobile Apps
  • 29. MOTIVATION 1. No Characterization of Bugs Exhibited by Mobile Apps 2. Few Mutation Operators Have Been Proposed for Android
  • 30. MOTIVATION 1. No Characterization of Bugs Exhibited by Mobile Apps 2. Few Mutation Operators Have Been Proposed for Android 3. No AutomatedTool Capable of Seeding Android- Specific Mutation Operators
  • 31.
  • 32. HOW CAN WE DERIVE EFFECTIVE MUTATION OPERATORS?
  • 33. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications
  • 34. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults
  • 35. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators
  • 36. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators 2K+ / 26K+ ISSUES / BUG-FIXES 365 / 43 BUGS / PAPERS 718K+ REVIEWS 5,414 API METHODS 51K+ DISCUSSIONS
  • 37. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators 2K+ / 26K+ ISSUES / BUG-FIXES 365 / 43 BUGS / PAPERS 718K+ REVIEWS 5,414 API METHODS 51K+ DISCUSSIONS
  • 38. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators 2,023 DOCUMENTS
  • 39. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators 2,023 DOCUMENTS TAGGERS
  • 40. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators 2,023 DOCUMENTS TAGGERS 400 FALSE POSITIVES 393 UNCLEAR 1,230 TAGGED DOCUMENTS
  • 41. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators Activities and Intents [37] Android programming [107] API and Libraries [86] Back-end Services [22] Collections and Strings [34] Connectivity [19] Data/Objects Parsing and Format [187] Database [87] Device/Emulator [51] General Programming [283] GUI [129] I/O [105] Non-functional Requirements [47] Threading [36] Invalid data/uri [19] Invalid activity name [1] ActivityNotFoundException, Invalid intent [18] Issues with manifest file [3] Invalid activity path in manifest [1] Missing activity definition in manifest [2] Bad practices [11] API misuse (improper call activity methods) [1] Errors implementing Activity lifecycle [6] Invalid context used for intent [2] Call in wrong activity lifecycle method [2] Other [4] Bug in Intent implementation [3] Issues in onCreate methods [1] Invalid data/uri [7] Invalid GPS location [4] Invalid ID in findView [2] Package name not found [1] Issues with app’s folder structure [5] Android app folder structure [4] Executable/command not in right folder [1] Issues with manifest file [23] Android app permissions [11] Issues with high screen resolution [1] Other [11] Issues with peripherals/ports [2] Controller quirk on android games [1] Resting value of analog channel [1] Bad practices [13] Argument/Object is not parcelable [1] Component decl. before call setContentView [2] Declaring loader fragment inside the fragment [1] Missing override isValidFragment method [1] Multiple instantiation of a resource [1] OpenGL issues [1] Parcelable not implement for intent call [1] Service unbinding is missing [1] System service invoked before creating activity [1] Wake lock misuse [1] Wakelock on WIFI connection [1] 65K methods limitation in a single dex file [1] Resources [10] Invalid Drawable [1] Invalid Path to Resources [1] Invalid resource id [5] Missing String in Resources Folder [1] Resources.NotFoundException [1] Wrong version number of OBB file [1] Other [36] Call restricted method in accessibility service [11] Google API key configuration/setup [1] Invalid Application package [2] Using Context.MODE_PRIVATE to open file [1] Issues with Preferences [2] Issues with Timers [2] Miss return in listener/event implementation [1] Stale data in app [2] Timeout values for location services [1] Running out of loopback devices [1] Errors in managing the apps fragments [3] Internationalization [4] Unregistered Receivers Errors [1] Missing 3G interfaces [1] State not saved [1] App change and fault proneness [16] Generic API bug [4] Impact of API change [10] Operation on deprecated API [2] Device/Emulator with different API [18] Android compatibility APIs [11] Build.VERSION.SDK_INT unavailable in Andr. x.y [1] Image viewer bug in Android x.y and below [1] Invalid TPL version [1] Invalid/Lower SDK version [2] Unsupported Operation at run-time [2] Bad practices [30] API misuse (general) [25] API misuse (bluetooth) [1] API misuse (camera) [2] Web API misuse [2] Other [22] Errors with API/Library linking [14] Meta-data tag for play services [1] Conflicts between libraries [1] Library bug [6] Authentication [3] Invalid auth token for back-end service [1] Invalid certificate for back-end service [2] Invalid data/uri [2] Return from back-end service not well formed [1] Special characters in HTTP post [1] Other [17] Back-end service not available/returns null [7] Error while invoking back-end service [10] Size-related [24] Miss check for IndexOutOfBoundException [14] Operation on empty string [1] Issues with collections size [1] Operations on empty collections [8] Other [10] ArrayStoreException [1] Missing implementation of comparable [3] Accessing TypedArray already recycled [1] Invalid operation on collection [4] Invalid string comparison in condition [1] UDP 53 bypass [1] SMTPSendFailedException (Authent. Failure) [1] Network connection is off/lost [6] Data loss in network operations [1] HTTP request issue [2] HttpClient usage [1] Network errors during authentication [1] Using infinite loop to check WIFI connection [1] Player crashes on slow connection [1] Network timeout [1] SipException (VoIP) [3] Missing checks [147] Missing null check [10] Null/Uninitialized object [40] Null Parameter [42] NullPointerException (general) [55] URI/URL [7] Error parsing URL in HTML website [1] Invalid URI used internally [4] Invalid URI provided by the user [1] URL UnsupportedEncodingException [1] XML-related [11] Invalid SAX transformer configuration [1] SAXException [4] XML Format Error [1] XmlPullParserException [1] DOMException [1] Data Parsing Errors [3] Numeric-data [5] NumberFormatException [4] Parsing numeric values [1] Other [17] DataFormatException [1] JSON Parsing Errors [13] Invalid user input [3] SQL-related [67] DB table/column not found [3] SQL Injection [1] Invalid field type retrieval [1] Query syntax error [62] Cursor [7] Closing null/empty cursor [2] Issues when using DB cursors [5] Other [13] Database file cannot be opened [1] Bug in database access on SD card [1] Database locked [2] Wrong database version code [4] Database connection error [4] Bug in database descriptor [1] Device/Android ROM-specific issues [12] Emulator-specific issues [8] Keyboard not showing up in webview [1] Directories/Space missing in filesystem [7] Device rotation [23] Bugs in application logic [106] Invalid Parameter [70] Error in numerical operations [1] ClassCastException [4] GenericSignatureFormatError [1] Missing precondition check [8] Empty constructors are missed [1] Errors implementing inner class [3] Override method missing [2] Super not called [1] Date issues [2] Error in loop limit [1] Exception/Error handling [3] Invalid constant [2] Missing break in switch [1] Syntax Error [18] Regex error [1] Wrong relational operator [1] Uncaught exception [14] Error in console command invoked from app [3] Issues executing telnet commands [1] Data race [26] Bug in loading resources [8] IllegalStateException [5] Components and Views [30] Component with wrong dimensions [1] Invalid component/view focus [6] Text in input/label/view disappears [1] View/Component is not displayed [4] Component with wrong fonts style [1] Wrong text in view/component [6] Issues in component animation [8] FindViewById returns null [3] Issues with manifest file [4] Button should not be clickable [1] Component undefined in XML Layout files [3] Layout [23] Issues in layout files [3] Visual appearance (layout issues) [19] Unsupported theme [1] Bad practices [21] ViewHolder pattern is not used [9] Improper call to getView [1] Inappropriate use of ListView [6] Inappropriate use of ViewPager [2] Inflating too many views [1] Large number of fragments in the app [1] setContent before content view is set [1] Message/Dialog [5] Error messages are not descriptive [1] Notification/Warning message missing [3] Notification/Warning message re-appear [1] Other [30] Issues in GUI logic (general) [14] Multi line text selection is not allowed [1] Bug in GUI listener [7] Bug in webViewClient listener [1] Dismiss progress dialog before activity ends [1] GUI refresh issue [1] Tab is missing listener [1] Wrong onClickListener [2] Fragm. without implement. of onViewCreated [1] Fragment not attached to activity [1] Visual appearance [16] Data is not listed in the right sorting/order [2] Showing data in wrong format [3] Texture error [4] Invalid colors [7] Buffer [9] Buffer overflow [3] BufferUnderflowException [2] ShortBufferException [1] Mutation operation on non-mutable buffer [2] InvalidMarkException [1] Channel/Socket connection [12] AsynchronousCloseException [1] ClosedChannelException [1] ErrnoException [6] NonWritableChannelException [1] SocketException [3] File [72] File I/O error [56] File metadata issue [1] File permissions [1] Operation with invalid file [5] Using symbolic link in backup [1] Issue creating file/folder in device system [1] FileNotFoundException/Invalid file path [7] Streams [12] Closing unverified writer [1] Connect PipedWriter to closed/connected reader [2] File operation on closed reader [2] File operation on closed stream/scanner [2] KeyException [1] Release stream without verifying if still busy [1] Next token cannot translate to expected type [1] Flush of decoder at the end of the input [1] Operations on closed Formatter [1] Memory [15] OOM (canvas texture size) [1] OOM (general) [1] OOM (large arrays) [2] OOM (large bitmap) [3] OOM (loading too many images) [3] OOM (resizing multiple images) [1] OOM (saving JSON to SharedPreferences) [1] Uncaught OOM exception [3] Responsiveness/Battery Drain [25] Expensive operation in main thread (GUI lags) [16] ANR (unnecessary computation in Handler) [1] Performance (lengthy operation creating db) [1] Performance (unnecessary computation) [1] GUI updated unnecessarily often [1] Lengthy operations on background thread [1] Network request in the GUI thread [4] Security [7] KeyChainException [1] PrivilegedActionException [1] SecurityException [4] Invalid signed public key [1] Callback/message not removed from handler [1] Data race (threads synchronization) [3] GUI operation out of main thread [1] Inappropriate use of threads/async tasks [7] Instantiating Handler without looper [1] Synchronized access to methods [1] Wrong GUI update from async task [3] Wrong GUI update from thread [1] Wrong handler import [1] Bug in threading implementation [7] Runnable does not stop [1] Invalid operation on AsynkTaskLoader [1] Invalid operation on interrupted thread [6] Invalid operation on Phaser [1] Set thread as deamon when it already runs [1] Media [3] Bad call of SyncParams.getAudioAdjustMode [1] Flush on initialized player [1] Getting token from closed media browser [1] Discarded [793] False positive [400] Unclear [393] Images [8] Failed binder transaction (bitmaps) [1] Images without default dimensions [2] Inducing GC operations because of images [1] Large bitmaps [2] Persisting images as strings in DB [1] Resizing images in GUI thread [1] 35% ANDROID FAULTS 65% JAVA FAULTS
  • 42. Activities and Intents [37] Android programming [107] API and Libraries [86] Back-end Services [22] Collections and Strings [34] Connectivity [19] Data/Objects Parsing and Format [187] Database [87] Device/Emulator [51] General Programming [283] GUI [129] I/O [105] Non-functional Requirements [47] Threading [36] Invalid data/uri [19] Invalid activity name [1] ActivityNotFoundException, Invalid intent [18] Issues with manifest file [3] Invalid activity path in manifest [1] Missing activity definition in manifest [2] Bad practices [11] API misuse (improper call activity methods) [1] Errors implementing Activity lifecycle [6] Invalid context used for intent [2] Call in wrong activity lifecycle method [2] Other [4] Bug in Intent implementation [3] Issues in onCreate methods [1] Invalid data/uri [7] Invalid GPS location [4] Invalid ID in findView [2] Package name not found [1] Issues with app’s folder structure [5] Android app folder structure [4] Executable/command not in right folder [1] Issues with manifest file [23] Android app permissions [11] Issues with high screen resolution [1] Other [11] Issues with peripherals/ports [2] Controller quirk on android games [1] Resting value of analog channel [1] Bad practices [13] Argument/Object is not parcelable [1] Component decl. before call setContentView [2] Declaring loader fragment inside the fragment [1] Missing override isValidFragment method [1] Multiple instantiation of a resource [1] OpenGL issues [1] Parcelable not implement for intent call [1] Service unbinding is missing [1] System service invoked before creating activity [1] Wake lock misuse [1] Wakelock on WIFI connection [1] 65K methods limitation in a single dex file [1] Resources [10] Invalid Drawable [1] Invalid Path to Resources [1] Invalid resource id [5] Missing String in Resources Folder [1] Resources.NotFoundException [1] Wrong version number of OBB file [1] Other [36] Call restricted method in accessibility service [11] Google API key configuration/setup [1] Invalid Application package [2] Using Context.MODE_PRIVATE to open file [1] Issues with Preferences [2] Issues with Timers [2] Miss return in listener/event implementation [1] Stale data in app [2] Timeout values for location services [1] Running out of loopback devices [1] Errors in managing the apps fragments [3] Internationalization [4] Unregistered Receivers Errors [1] Missing 3G interfaces [1] State not saved [1] App change and fault proneness [16] Generic API bug [4] Impact of API change [10] Operation on deprecated API [2] Device/Emulator with different API [18] Android compatibility APIs [11] Build.VERSION.SDK_INT unavailable in Andr. x.y [1] Image viewer bug in Android x.y and below [1] Invalid TPL version [1] Invalid/Lower SDK version [2] Unsupported Operation at run-time [2] Bad practices [30] API misuse (general) [25] API misuse (bluetooth) [1] API misuse (camera) [2] Web API misuse [2] Other [22] Errors with API/Library linking [14] Meta-data tag for play services [1] Conflicts between libraries [1] Library bug [6] Authentication [3] Invalid auth token for back-end service [1] Invalid certificate for back-end service [2] Invalid data/uri [2] Return from back-end service not well formed [1] Special characters in HTTP post [1] Other [17] Back-end service not available/returns null [7] Error while invoking back-end service [10] Size-related [24] Miss check for IndexOutOfBoundException [14] Operation on empty string [1] Issues with collections size [1] Operations on empty collections [8] Other [10] ArrayStoreException [1] Missing implementation of comparable [3] Accessing TypedArray already recycled [1] Invalid operation on collection [4] Invalid string comparison in condition [1] UDP 53 bypass [1] SMTPSendFailedException (Authent. Failure) [1] Network connection is off/lost [6] Data loss in network operations [1] HTTP request issue [2] HttpClient usage [1] Network errors during authentication [1] Using infinite loop to check WIFI connection [1] Player crashes on slow connection [1] Network timeout [1] SipException (VoIP) [3] Missing checks [147] Missing null check [10] Null/Uninitialized object [40] Null Parameter [42] NullPointerException (general) [55] URI/URL [7] Error parsing URL in HTML website [1] Invalid URI used internally [4] Invalid URI provided by the user [1] URL UnsupportedEncodingException [1] XML-related [11] Invalid SAX transformer configuration [1] SAXException [4] XML Format Error [1] XmlPullParserException [1] DOMException [1] Data Parsing Errors [3] Numeric-data [5] NumberFormatException [4] Parsing numeric values [1] Other [17] DataFormatException [1] JSON Parsing Errors [13] Invalid user input [3] SQL-related [67] DB table/column not found [3] SQL Injection [1] Invalid field type retrieval [1] Query syntax error [62] Cursor [7] Closing null/empty cursor [2] Issues when using DB cursors [5] Other [13] Database file cannot be opened [1] Bug in database access on SD card [1] Database locked [2] Wrong database version code [4] Database connection error [4] Bug in database descriptor [1] Device/Android ROM-specific issues [12] Emulator-specific issues [8] Keyboard not showing up in webview [1] Directories/Space missing in filesystem [7] Device rotation [23] Bugs in application logic [106] Invalid Parameter [70] Error in numerical operations [1] ClassCastException [4] GenericSignatureFormatError [1] Missing precondition check [8] Empty constructors are missed [1] Errors implementing inner class [3] Override method missing [2] Super not called [1] Date issues [2] Error in loop limit [1] Exception/Error handling [3] Invalid constant [2] Missing break in switch [1] Syntax Error [18] Regex error [1] Wrong relational operator [1] Uncaught exception [14] Error in console command invoked from app [3] Issues executing telnet commands [1] Data race [26] Bug in loading resources [8] IllegalStateException [5] Components and Views [30] Component with wrong dimensions [1] Invalid component/view focus [6] Text in input/label/view disappears [1] View/Component is not displayed [4] Component with wrong fonts style [1] Wrong text in view/component [6] Issues in component animation [8] FindViewById returns null [3] Issues with manifest file [4] Button should not be clickable [1] Component undefined in XML Layout files [3] Layout [23] Issues in layout files [3] Visual appearance (layout issues) [19] Unsupported theme [1] Bad practices [21] ViewHolder pattern is not used [9] Improper call to getView [1] Inappropriate use of ListView [6] Inappropriate use of ViewPager [2] Inflating too many views [1] Large number of fragments in the app [1] setContent before content view is set [1] Message/Dialog [5] Error messages are not descriptive [1] Notification/Warning message missing [3] Notification/Warning message re-appear [1] Other [30] Issues in GUI logic (general) [14] Multi line text selection is not allowed [1] Bug in GUI listener [7] Bug in webViewClient listener [1] Dismiss progress dialog before activity ends [1] GUI refresh issue [1] Tab is missing listener [1] Wrong onClickListener [2] Fragm. without implement. of onViewCreated [1] Fragment not attached to activity [1] Visual appearance [16] Data is not listed in the right sorting/order [2] Showing data in wrong format [3] Texture error [4] Invalid colors [7] Buffer [9] Buffer overflow [3] BufferUnderflowException [2] ShortBufferException [1] Mutation operation on non-mutable buffer [2] InvalidMarkException [1] Channel/Socket connection [12] AsynchronousCloseException [1] ClosedChannelException [1] ErrnoException [6] NonWritableChannelException [1] SocketException [3] File [72] File I/O error [56] File metadata issue [1] File permissions [1] Operation with invalid file [5] Using symbolic link in backup [1] Issue creating file/folder in device system [1] FileNotFoundException/Invalid file path [7] Streams [12] Closing unverified writer [1] Connect PipedWriter to closed/connected reader [2] File operation on closed reader [2] File operation on closed stream/scanner [2] KeyException [1] Release stream without verifying if still busy [1] Next token cannot translate to expected type [1] Flush of decoder at the end of the input [1] Operations on closed Formatter [1] Memory [15] OOM (canvas texture size) [1] OOM (general) [1] OOM (large arrays) [2] OOM (large bitmap) [3] OOM (loading too many images) [3] OOM (resizing multiple images) [1] OOM (saving JSON to SharedPreferences) [1] Uncaught OOM exception [3] Responsiveness/Battery Drain [25] Expensive operation in main thread (GUI lags) [16] ANR (unnecessary computation in Handler) [1] Performance (lengthy operation creating db) [1] Performance (unnecessary computation) [1] GUI updated unnecessarily often [1] Lengthy operations on background thread [1] Network request in the GUI thread [4] Security [7] KeyChainException [1] PrivilegedActionException [1] SecurityException [4] Invalid signed public key [1] Callback/message not removed from handler [1] Data race (threads synchronization) [3] GUI operation out of main thread [1] Inappropriate use of threads/async tasks [7] Instantiating Handler without looper [1] Synchronized access to methods [1] Wrong GUI update from async task [3] Wrong GUI update from thread [1] Wrong handler import [1] Bug in threading implementation [7] Runnable does not stop [1] Invalid operation on AsynkTaskLoader [1] Invalid operation on interrupted thread [6] Invalid operation on Phaser [1] Set thread as deamon when it already runs [1] Media [3] Bad call of SyncParams.getAudioAdjustMode [1] Flush on initialized player [1] Getting token from closed media browser [1] Discarded [793] False positive [400] Unclear [393] Images [8] Failed binder transaction (bitmaps) [1] Images without default dimensions [2] Inducing GC operations because of images [1] Large bitmaps [2] Persisting images as strings in DB [1] Resizing images in GUI thread [1]
  • 43. Activities and Intents [37] Android programming [107] API and Libraries [86] Back-end Services [22] Collections and Strings [34] Connectivity [19] Data/Objects Parsing and Format [187] Database [87] GUI [129] I/O [105] Invalid data/uri [19] Invalid activity name [1] ActivityNotFoundException, Invalid intent [18] Issues with manifest file [3] Invalid activity path in manifest [1] Missing activity definition in manifest [2] Bad practices [11] API misuse (improper call activity methods) [1] Errors implementing Activity lifecycle [6] Invalid context used for intent [2] Call in wrong activity lifecycle method [2] Other [4] Bug in Intent implementation [3] Issues in onCreate methods [1] Invalid data/uri [7] Invalid GPS location [4] Invalid ID in findView [2] Package name not found [1] Issues with app’s folder structure [5] Android app folder structure [4] Executable/command not in right folder [1] Issues with manifest file [23] Android app permissions [11] Issues with high screen resolution [1] Other [11] Issues with peripherals/ports [2] Controller quirk on android games [1] Resting value of analog channel [1] Bad practices [13] Argument/Object is not parcelable [1] Component decl. before call setContentView [2] Declaring loader fragment inside the fragment [1] Missing override isValidFragment method [1] Multiple instantiation of a resource [1] OpenGL issues [1] Parcelable not implement for intent call [1] Service unbinding is missing [1] System service invoked before creating activity [1] Wake lock misuse [1] Wakelock on WIFI connection [1] 65K methods limitation in a single dex file [1] Resources [10] Invalid Drawable [1] Invalid Path to Resources [1] Invalid resource id [5] Missing String in Resources Folder [1] Resources.NotFoundException [1] Wrong version number of OBB file [1] Other [36] App change and fault proneness [16] Generic API bug [4] Impact of API change [10] Operation on deprecated API [2] Device/Emulator with different API [18] Android compatibility APIs [11] Build.VERSION.SDK_INT unavailable in Andr. x.y [1] Image viewer bug in Android x.y and below [1] Invalid TPL version [1] Invalid/Lower SDK version [2] Unsupported Operation at run-time [2] Bad practices [30] API misuse (general) [25] API misuse (bluetooth) [1] API misuse (camera) [2] Web API misuse [2] Other [22] Errors with API/Library linking [14] Meta-data tag for play services [1] Conflicts between libraries [1] Library bug [6] Authentication [3] Invalid auth token for back-end service [1] Invalid certificate for back-end service [2] Invalid data/uri [2] Return from back-end service not well formed [1] Special characters in HTTP post [1] Other [17] Back-end service not available/returns null [7] Error while invoking back-end service [10] Size-related [24] Miss check for IndexOutOfBoundException [14] Operation on empty string [1] Issues with collections size [1] Operations on empty collections [8] Other [10] ArrayStoreException [1] Missing implementation of comparable [3] Accessing TypedArray already recycled [1] Invalid operation on collection [4] Invalid string comparison in condition [1] UDP 53 bypass [1] SMTPSendFailedException (Authent. Failure) [1] Network connection is off/lost [6] Data loss in network operations [1] HTTP request issue [2] HttpClient usage [1] Network errors during authentication [1] Using infinite loop to check WIFI connection [1] Player crashes on slow connection [1] Network timeout [1] SipException (VoIP) [3] Missing checks [147] Missing null check [10] Null/Uninitialized object [40] SQL-related [67] DB table/column not found [3] SQL Injection [1] Invalid field type retrieval [1] Query syntax error [62] Cursor [7] Closing null/empty cursor [2] Issues when using DB cursors [5] Other [13] Database file cannot be opened [1] Bug in database access on SD card [1] Database locked [2] Components and Views [30] Component with wrong dimensions [1] Invalid component/view focus [6] Text in input/label/view disappears [1] View/Component is not displayed [4] Component with wrong fonts style [1] Wrong text in view/component [6] Issues in component animation [8] FindViewById returns null [3] Issues with manifest file [4] Button should not be clickable [1] Component undefined in XML Layout files [3] Layout [23] Issues in layout files [3] Visual appearance (layout issues) [19] Unsupported theme [1] Bad practices [21] ViewHolder pattern is not used [9] Improper call to getView [1] Inappropriate use of ListView [6] Inappropriate use of ViewPager [2] Inflating too many views [1] Large number of fragments in the app [1] setContent before content view is set [1] Message/Dialog [5] Error messages are not descriptive [1] Notification/Warning message missing [3] Notification/Warning message re-appear [1] Other [30] Issues in GUI logic (general) [14] Multi line text selection is not allowed [1] Bug in GUI listener [7] Bug in webViewClient listener [1] Dismiss progress dialog before activity ends [1] GUI refresh issue [1] Tab is missing listener [1] Wrong onClickListener [2] Fragm. without implement. of onViewCreated [1] Fragment not attached to activity [1] Visual appearance [16] Data is not listed in the right sorting/order [2] Showing data in wrong format [3] Texture error [4] Invalid colors [7] Buffer [9] Media [3] Bad call of SyncParams.getAudioAdjustMode [1] Flush on initialized player [1] Getting token from closed media browser [1] Images [8] Failed binder transaction (bitmaps) [1] Images without default dimensions [2] Inducing GC operations because of images [1] Large bitmaps [2] Persisting images as strings in DB [1] Resizing images in GUI thread [1] CATEGORY Sub-category Bug-type http://android-mutation.com
  • 44. LARGE-SCALE EMPIRICAL STUDY OF ANDROID BUGS Real Bugs in Android Applications Taxonomy of Android Application Faults Empirically Derived Catalog of Mutation Operators 38 OPERATORS (10 CATEGORIES) ACTIVITY/INTENTS ANDROID PROGRAMMING BACK-END SERVICES CONNECTIVITY DATA DATABASE GENERAL PROGRAMMING GUI INPUT / OUTPUT NON-FUNCTIONAL REQUIREMENTS 8 5 1 2 1 3 4 6 3 5
  • 45. MDROID+ App Src 1 PFP Derivation AST Analysis Text Analysis Activity Not Defined Invalid Label Null GPS Location Invalid URI Invalid Date … Android Operators Potential Fault Profile Activity Not Defined Invalid Label Null GPS Location Invalid URI InvalidDate 2 Mutant Generation Parallel Project Cloning & Operator Application Mutant Projects + Log Mutant Log
  • 46.
  • 47.
  • 50. MDROID+ RQ1: Fault coverage of operators? RQ2: Rate of Non-Compilable andTrivial Mutants?
  • 51. MDROID+ RQ1: Fault coverage of operators? RQ2: Rate of Non-Compilable andTrivial Mutants? RQ3: Major Causes for Non-Compilable and trivial mutants?
  • 52. RQ1: FAULT COVERAGE OF OPERATORS 762 UNTAGGED DOCUMENTS Major, PIT, muJava, Javalanche, muDroid, Deng et al (ICSTW), MDroid+
  • 53. RQ1: FAULT COVERAGE OF OPERATORS 762 UNTAGGED DOCUMENTS TAGGERS Major, PIT, muJava, Javalanche, muDroid, Deng et al (ICSTW), MDroid+
  • 54. RQ1: FAULT COVERAGE OF OPERATORS 762 UNTAGGED DOCUMENTS TAGGERS Major, PIT, muJava, Javalanche, muDroid, Deng et al (ICSTW), MDroid+ 413 / 119 BUGS / TYPES
  • 55. RQ1: FAULT COVERAGE OF OPERATORS 762 UNTAGGED DOCUMENTS TAGGERS Major, PIT, muJava, Javalanche, muDroid, Deng et al (ICSTW), MDroid+ 102 MUTATION OPERATORS 413 / 119 BUGS / TYPES
  • 56. RQ1: FAULT COVERAGE OF OPERATORS 762 UNTAGGED DOCUMENTS TAGGERS Major, PIT, muJava, Javalanche, muDroid, Deng et al (ICSTW), MDroid+ 102 MUTATION OPERATORS 413 / 119 BUGS / TYPES Coverage % Types % Faults
  • 57. RQ1: FAULT COVERAGE OF OPERATORS 119 TYPES 103 (87%) IN THE TAXONOMY 16 NEW TYPES = + 413 BUGS 392 (95%) IN THE TAXONOMY 21 NEW BUGS = +
  • 58. RQ1: FAULT COVERAGE OF OPERATORS 119 BUG TYPES Major PIT muDroid muJava Javalanche Deng et. al MDroid+ 13% 13% 8% 9% 10% 15% 38% BUG TYPE COVERAGE Major PIT muDroid muJava Javalanche Deng et. al MDroid+ 35% 33% 26% 32% 31% 41% 62% TOTAL BUG COVERAGE 413 BUGS
  • 59. RQ1: FAULT COVERAGE OF OPERATORS 119 BUG TYPES Major PIT muDroid muJava Javalanche Deng et. al MDroid+ 13% 13% 8% 9% 10% 15% 38% BUG TYPE COVERAGE Major PIT muDroid muJava Javalanche Deng et. al MDroid+ 35% 33% 26% 32% 31% 41% 62% TOTAL BUG COVERAGE 413 BUGS
  • 60. RQ1: FAULT COVERAGE OF OPERATORS 119 BUG TYPES Major PIT muDroid muJava Javalanche Deng et. al MDroid+ 13% 13% 8% 9% 10% 15% 38% BUG TYPE COVERAGE Unique to MDroid+: 26% Major PIT muDroid muJava Javalanche Deng et. al MDroid+ 35% 33% 26% 32% 31% 41% 62% TOTAL BUG COVERAGE 413 BUGS Unique to MDroid+: 19%
  • 61. RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS 55 APPS
  • 62. RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS 55 APPS Major PIT muDroid MDroid+ 4 TOOLS
  • 63. RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS 55 APPS Major PIT muDroid MDroid+ 4 TOOLS MUTANT APKS
  • 64. RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS 55 APPS Major PIT muDroid MDroid+ 4 TOOLS MUTANT APKS Execution Engine
  • 65. RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS Major PIT muDroid MDroid+ GENERATED MUTANTS (AVG PER APP) 904 2.6k 1.5k 167
  • 66. RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS Major PIT muDroid MDroid+ GENERATED MUTANTS (AVG PER APP) 904 2.6k 1.5k 167 NON-COMPILABLE MUTANTS (AVG PER APP) 1.8% 0% 53.9% 0.56%
  • 67. RQ2: RATE OF NON-COMPILABLE & TRIVIAL MUTANTS Major PIT muDroid MDroid+ GENERATED MUTANTS (AVG PER APP) 904 2.6k 1.5k 167 NON-COMPILABLE MUTANTS (AVG PER APP) 1.8% 0% 53.9% 0.56% TRIVIAL MUTANTS (AVG PER APP) 5.4% 7.2% 11.8% 2.42%
  • 68. RQ3: ROOT CAUSES OF NON-COMPILABLE AND TRIVIAL MUTANTS MDroid+
  • 69. RQ3: ROOT CAUSES OF NON-COMPILABLE AND TRIVIAL MUTANTS MDroid+ Non-Compilable Mutants CLOSING NULL CURSOR OPERATOR dbcursor.close(); dbcursor = null; dbcursor.close();
  • 70. RQ3: ROOT CAUSES OF NON-COMPILABLE AND TRIVIAL MUTANTS MDroid+ Non-Compilable Mutants CLOSING NULL CURSOR OPERATOR dbcursor.close(); dbcursor = null; dbcursor.close(); NULL INTENT, FINDVIEWBYID RETURNS NULL, INVALID ID FINDVIEW Trivial Mutants findViewById(R.id.load_data_button) null
  • 71. SUMMARY OF FINDINGS Research Questions Outcomes
  • 72. RQ1: Fault coverage of operators? SUMMARY OF FINDINGS Research Questions Outcomes • MDroid+ covered more bugs than other tools.
  • 73. RQ1: Fault coverage of operators? RQ2: Rate of Non- Compilable andTrivial Mutants? SUMMARY OF FINDINGS Research Questions Outcomes • MDroid+ covered more bugs than other tools. • MDroid+ has the smallest rate of non- compilable and trivial mutants
  • 74. RQ1: Fault coverage of operators? RQ2: Rate of Non- Compilable andTrivial Mutants? RQ3: Major Causes for Non-Compilable and trivial mutants? SUMMARY OF FINDINGS Research Questions Outcomes • MDroid+ covered more bugs than other tools. • MDroid+ has the smallest rate of non- compilable and trivial mutants • Unreachable Code, and NPEs in Main Activity
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81. Any Questions? Thank you! Kevin Moran College of William & Mary @kevpmo kpmoran@cs.wm.edu https://www.kpmoran.com