+ All Categories
Home > Science > Analysing the evolution of testing library usage in open source Java projects

Analysing the evolution of testing library usage in open source Java projects

Date post: 12-Apr-2017
Category:
Upload: tom-mens
View: 79 times
Download: 0 times
Share this document with a friend
23
Analyzing the Evolu1on of Tes1ng Library Usage in Open Source Java Projects 1 Ahmed ZEROUALI, Tom MENS SoDware Engineering Lab, University of Mons, Belgium SANER 2017 Early Research Achievements — Klagenfurt, Austria, February 2017
Transcript
Page 1: Analysing the evolution of testing library usage in open source Java projects

AnalyzingtheEvolu1onofTes1ngLibraryUsage

inOpenSourceJavaProjects

1

AhmedZEROUALI,TomMENS

SoDwareEngineeringLab,UniversityofMons,Belgium

SANER2017EarlyResearchAchievements—Klagenfurt,Austria,February2017

Page 2: Analysing the evolution of testing library usage in open source Java projects

Mo1va1on

2

soDwareproject

library1

library2

libraryn

Page 3: Analysing the evolution of testing library usage in open source Java projects

soDwareprojectsoDware

project

library1

library1

library1

library1

library1

library1

Mo1va1on

3

soDwareproject

library1

library2

libraryn

Page 4: Analysing the evolution of testing library usage in open source Java projects

soDwareprojectsoDware

project

library1

library1

library1

library1

library1

library1

Mo1va1on

4

soDwareproject

library1

library2

libraryn

so0waredeveloper

WhichlibraryshouldIuse?WhenshouldIupgrade?WhenshouldImigrate?Whatistheimpact?

Whatistheeffortinvolved?

Page 5: Analysing the evolution of testing library usage in open source Java projects

library1

library1

library1

Mo1va1on

5

librarymaintainer

soDwareproject

library1

library2

libraryn

Whousesmylibraryandhow?Howtostayaheadofcompe11on?

Howtoavoidusersmigra1ngtootherlibraries?WhenshouldIreleaselibraryupdates?

Page 6: Analysing the evolution of testing library usage in open source Java projects

Focus

6

Mostpopularprogramminglanguage[1]

>900kofopensourceJavaprojects.

[1]AccordingtoTIOBEIndexforJanuary2017h_p://www.1obe.com/1obe-index/[2]Accordingtoh_ps://mvnrepository.com/open-source/tes1ng-frameworks

MostpopularJavates@ngandmockinglibraries[2]

Page 7: Analysing the evolution of testing library usage in open source Java projects

Mo1va1on

7h_p://blog.takipi.com/we-analyzed-60678-libraries-on-github-here-are-the-top-100/(April2015)

Page 8: Analysing the evolution of testing library usage in open source Java projects

Mo1va1on

8mvnrepository.com/open-source/tes1ng-frameworksmvnrepository.com/open-source/mocking

Page 9: Analysing the evolution of testing library usage in open source Java projects

MostFrequentlyUsedTes1ng-relatedLibraries

9

AssertJ

Page 10: Analysing the evolution of testing library usage in open source Java projects

MostFrequentlyUsedTes1ng-relatedLibraries

10

Considered:20,688JavaprojectsonGitHubExcluded:•  projects<2years•  unforkedprojects•  forks•  projectsnotusingtheselectedlibrariesRetained:4,532Javaprojects

Page 11: Analysing the evolution of testing library usage in open source Java projects

Dataset

11

Metrics Value

ConsideredJavaprojects

20,688

Projectsusingatleastoneoftheconsideredlibraries

4,532

Commits 125,580

Sourcefiles 10,033,726

Tes1ngrelatedimportstatements

31,264,586

Page 12: Analysing the evolution of testing library usage in open source Java projects

Whichlibrariesareusedmostfrequently?

12

JUnitistheundisputedkingofJavates1nglibraries.Mockitoismorepopularthanitscompe1tors.

Page 13: Analysing the evolution of testing library usage in open source Java projects

Whenarelibrariesintroducedinaproject’slife1me?

13

Page 14: Analysing the evolution of testing library usage in open source Java projects

Whichlibrariesareusedinaproject’slife1me?

14

Page 15: Analysing the evolution of testing library usage in open source Java projects

Whichlibrariesareusedsimultaneouslyinprojects?

15

Mockito EasyMock PowerMock

JUnit 100% 7% 12% 23% 4% 32%

JUnit TestNG Spring Hamcrest AssertJ

9% 5%TestNG 64% 100% 13% 18% 6% 33% 12% 4%Spring 99% 12% 100% 37% 8% 53% 18% 10%

59% 10% 10%AssertJ 95% 16% 23% 41% 100% 61%

Hamcrest 99% 9% 18% 100% 7%11% 15%

Mockito 98% 11% 19% 42% 8% 100% 8% 13%EasyMock 77% 14% 22% 24% 5% 28% 100% 10%

87% 19% 100%PowerMock 99% 9% 23% 47% 13%

Page 16: Analysing the evolution of testing library usage in open source Java projects

Whichlibrariesareusedsimultaneouslyinprojects?

•  JUnitisveryfrequentlyaccompanied(>94%)byHamcrest,AssertJ,Spring,MockitoorPowerMock

•  JUnitisrarelyusedwithcompe1torTestNG(7%)

•  PowerMockismostlyusedasanextensionofMockito(86.5%)

16

Page 17: Analysing the evolution of testing library usage in open source Java projects

Howfrequentlydolibrariesco-occuratfilelevel?

17

Propor1onaldistribu1onofJavafiles(inallprojects)rela1ngtopairsofmockinglibraries.

Page 18: Analysing the evolution of testing library usage in open source Java projects

Doprojectsmigratetocompe1nglibraries?Permanentmigra1ons

18

library1 library2

library1 library2

Page 19: Analysing the evolution of testing library usage in open source Java projects

Doprojectsmigratetocompe1nglibraries?Temporarymigra1ons

19

Page 20: Analysing the evolution of testing library usage in open source Java projects

Howfrequentlyarelibrariesusedover1me?

20

Tes1ngandmatchinglibraries->

<-Mockinglibraries

Page 21: Analysing the evolution of testing library usage in open source Java projects

Limita1ons

21

q  OpensourceJavaProjectsusingMavenasthebuildautoma1ontool.q  Project’slife1metwoyears.

q  Importstatements.

Page 22: Analysing the evolution of testing library usage in open source Java projects

MainFindings

22

•  Manylibrariesareusedsimultaneously.

•  Manyoftheconsideredlibrariescomplementone

another,somearecompe1ng.

•  5%oftheconsideredprojectsweresubjecttolibrary

migra1ons.

Page 23: Analysing the evolution of testing library usage in open source Java projects

FutureWork/OpenQues1ons

23

so0waredeveloper

librarymaintainer

Howtoanalyselibraryevolu1onpa_ernstorecommend•  whentoupgradetoanewlibraryversion?•  whentomigratetoacompe1nglibrary?•  howtoupgradeormigrate(e.g.effort&impact)?

Howtoanalyselibraryusagepa_ernsto•  avoidlibrarymigra1on?•  facilitatelibraryupgrading?•  maximiseusageoflibraryfunc1onali1es?•  detectopportuni1esfornewfunc1onali1es?


Recommended