SlideShare a Scribd company logo

Analysis And Observations Of The Evolution Of Testing Library Usage

My presentation in SATOSSE 2017 about the Analysis And Observations Of The Evolution Of Testing Library Usage.

1 of 19
Download to read offline
Analysis And Observations Of The
Evolution Of Testing Library Usage
1
Ahmed ZEROUALI, Tom MENS
Software Engineering Lab, University of Mons, Belgium
SATToSE 2017 — Madrid, Spain, June 2017
Work in Progress
software
project
software
project
library 1
library 1
library 1
library 1
library 1
library 1
Motivation
2
software
project
library 1
library 2
library n
…
software
developer
Which library should I use?
When should I upgrade?
When should I migrate?
What is the impact?
What is the effort involved?
software
project
software
project
library 1
library 1
Motivation
3
software
project
library 1
library
maintainer
Who uses my library and how?
How to stay ahead of competition?
How to avoid users migrating to other libraries?
When should I release library updates?
software
project
Motivation
4
Focus
5
Most popular programming language [1]
> 900k of open source Java projects.
[1] According to TIOBE Index for June 2017 http://www.tiobe.com/tiobe-index/
[2] According to https://mvnrepository.com/open-source/testing-frameworks
Most popular Java testing and mocking libraries [2]
Most Frequently Used
Testing-related Libraries
7
AssertJ
Previous study: A Zerouali, T Mens. Analyzing the evolution of testing library usage in open
source Java projects. SANER 2017.
Ad

Recommended

Analyzing the Evolution of Testing Library Usage in Open Source Java Projects
Analyzing the Evolution of Testing Library Usage in Open Source Java ProjectsAnalyzing the Evolution of Testing Library Usage in Open Source Java Projects
Analyzing the Evolution of Testing Library Usage in Open Source Java ProjectsAhmed Zerouali
 
Analyzing the Evolution of Testing Library Usage in Open Source Java Projects
Analyzing the Evolution of Testing Library Usage in Open Source Java ProjectsAnalyzing the Evolution of Testing Library Usage in Open Source Java Projects
Analyzing the Evolution of Testing Library Usage in Open Source Java ProjectsAhmed Zerouali
 
IWPSE-Evol'09 Presentation
IWPSE-Evol'09 PresentationIWPSE-Evol'09 Presentation
IWPSE-Evol'09 Presentationyanamm
 
Bledar Gjocaj - Java open source
Bledar Gjocaj - Java open sourceBledar Gjocaj - Java open source
Bledar Gjocaj - Java open sourceOpen Labs Albania
 
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringA Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringRaffi Khatchadourian
 
Third-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to MigrationThird-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to MigrationAli Ouni
 
KOHA - Open Source Library Management Software
KOHA - Open Source Library Management SoftwareKOHA - Open Source Library Management Software
KOHA - Open Source Library Management Softwarerajivkumarmca
 
Koha - Open Source Library Management Software
Koha - Open Source Library Management SoftwareKoha - Open Source Library Management Software
Koha - Open Source Library Management Softwarerajivkumarmca
 

More Related Content

Similar to Analysis And Observations Of The Evolution Of Testing Library Usage

Analysing the evolution of testing library usage in open source Java projects
Analysing the evolution of testing library usage in open source Java projectsAnalysing the evolution of testing library usage in open source Java projects
Analysing the evolution of testing library usage in open source Java projectsTom Mens
 
Backing Library Operations with Open Source Applications
Backing Library Operations with Open Source ApplicationsBacking Library Operations with Open Source Applications
Backing Library Operations with Open Source ApplicationsMyka Kennedy Stephens
 
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformaticsStephen Turner
 
OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...
OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...
OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...NETWAYS
 
Maintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia EcosystemsMaintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia EcosystemsChris Rackauckas
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitHristo Chakarov
 
Fantastic four machine_learning_java_libraries
Fantastic four machine_learning_java_librariesFantastic four machine_learning_java_libraries
Fantastic four machine_learning_java_librariesAegis Software Canada
 
SC11 Science Gateway Group Overview
SC11 Science Gateway Group OverviewSC11 Science Gateway Group Overview
SC11 Science Gateway Group Overviewmarpierc
 
Open.source.innovation.20070624
Open.source.innovation.20070624Open.source.innovation.20070624
Open.source.innovation.20070624Vu Hung Nguyen
 
Continuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsContinuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsHugo Josefson
 
Collaborative Data Analysis with Taverna Workflows
Collaborative Data Analysis with Taverna WorkflowsCollaborative Data Analysis with Taverna Workflows
Collaborative Data Analysis with Taverna WorkflowsAndrea Wiggins
 
Isomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactIsomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactTyler Peterson
 
Pushing Chemical Biology Through the Pipes
Pushing Chemical Biology Through the PipesPushing Chemical Biology Through the Pipes
Pushing Chemical Biology Through the PipesRajarshi Guha
 
Best Great Ideas on Java Research Papers
Best Great Ideas on Java Research PapersBest Great Ideas on Java Research Papers
Best Great Ideas on Java Research Paperssuzanneriverabme
 
software technology benchmarking
software  technology benchmarkingsoftware  technology benchmarking
software technology benchmarkingMallikarjuna G D
 
Random thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great productRandom thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great productGuillaume POTIER
 
Elsevier‘s RDM Program: Habits of Effective Data and the Bourne Ulitmatum
Elsevier‘s RDM Program: Habits of Effective Data and the Bourne UlitmatumElsevier‘s RDM Program: Habits of Effective Data and the Bourne Ulitmatum
Elsevier‘s RDM Program: Habits of Effective Data and the Bourne UlitmatumAnita de Waard
 
Open source Software: pros and cons
Open source Software: pros and consOpen source Software: pros and cons
Open source Software: pros and consygpriya
 

Similar to Analysis And Observations Of The Evolution Of Testing Library Usage (20)

Analysing the evolution of testing library usage in open source Java projects
Analysing the evolution of testing library usage in open source Java projectsAnalysing the evolution of testing library usage in open source Java projects
Analysing the evolution of testing library usage in open source Java projects
 
Open sourse library management solutions
Open sourse library management solutionsOpen sourse library management solutions
Open sourse library management solutions
 
Koha presentationnaclin2010
Koha presentationnaclin2010Koha presentationnaclin2010
Koha presentationnaclin2010
 
Backing Library Operations with Open Source Applications
Backing Library Operations with Open Source ApplicationsBacking Library Operations with Open Source Applications
Backing Library Operations with Open Source Applications
 
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
 
OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...
OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...
OSMC 2022 | Open Source: Open Choice – A DevOps Guide for OSS Adoption by Hil...
 
Maintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia EcosystemsMaintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia Ecosystems
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkit
 
Fantastic four machine_learning_java_libraries
Fantastic four machine_learning_java_librariesFantastic four machine_learning_java_libraries
Fantastic four machine_learning_java_libraries
 
SC11 Science Gateway Group Overview
SC11 Science Gateway Group OverviewSC11 Science Gateway Group Overview
SC11 Science Gateway Group Overview
 
Open.source.innovation.20070624
Open.source.innovation.20070624Open.source.innovation.20070624
Open.source.innovation.20070624
 
Continuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsContinuous Integration with Maven for Android apps
Continuous Integration with Maven for Android apps
 
Collaborative Data Analysis with Taverna Workflows
Collaborative Data Analysis with Taverna WorkflowsCollaborative Data Analysis with Taverna Workflows
Collaborative Data Analysis with Taverna Workflows
 
Isomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactIsomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and React
 
Pushing Chemical Biology Through the Pipes
Pushing Chemical Biology Through the PipesPushing Chemical Biology Through the Pipes
Pushing Chemical Biology Through the Pipes
 
Best Great Ideas on Java Research Papers
Best Great Ideas on Java Research PapersBest Great Ideas on Java Research Papers
Best Great Ideas on Java Research Papers
 
software technology benchmarking
software  technology benchmarkingsoftware  technology benchmarking
software technology benchmarking
 
Random thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great productRandom thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great product
 
Elsevier‘s RDM Program: Habits of Effective Data and the Bourne Ulitmatum
Elsevier‘s RDM Program: Habits of Effective Data and the Bourne UlitmatumElsevier‘s RDM Program: Habits of Effective Data and the Bourne Ulitmatum
Elsevier‘s RDM Program: Habits of Effective Data and the Bourne Ulitmatum
 
Open source Software: pros and cons
Open source Software: pros and consOpen source Software: pros and cons
Open source Software: pros and cons
 

More from Ahmed Zerouali

Prevalence and Evolution of License Violations in npm and RubyGems Dependency...
Prevalence and Evolution of License Violations in npm and RubyGems Dependency...Prevalence and Evolution of License Violations in npm and RubyGems Dependency...
Prevalence and Evolution of License Violations in npm and RubyGems Dependency...Ahmed Zerouali
 
On Popularity and Quality Metrics of npm Packages
On Popularity and Quality Metrics of npm PackagesOn Popularity and Quality Metrics of npm Packages
On Popularity and Quality Metrics of npm PackagesAhmed Zerouali
 
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...Ahmed Zerouali
 
A multi-dimensional analysis of technical lag in Debian-based Docker images
A multi-dimensional analysis of technical lag in Debian-based Docker imagesA multi-dimensional analysis of technical lag in Debian-based Docker images
A multi-dimensional analysis of technical lag in Debian-based Docker imagesAhmed Zerouali
 
Evolution of Technical Lag in DockerHub images - Benevol20
Evolution of Technical Lag in DockerHub images - Benevol20Evolution of Technical Lag in DockerHub images - Benevol20
Evolution of Technical Lag in DockerHub images - Benevol20Ahmed Zerouali
 
PhD public defense: A Measurement Framework for Analyzing Technical Lag in ...
PhD public defense: A Measurement Framework for  Analyzing Technical Lag in  ...PhD public defense: A Measurement Framework for  Analyzing Technical Lag in  ...
PhD public defense: A Measurement Framework for Analyzing Technical Lag in ...Ahmed Zerouali
 
Technical Lag in Software Ecosystems
Technical Lag in Software EcosystemsTechnical Lag in Software Ecosystems
Technical Lag in Software EcosystemsAhmed Zerouali
 
Technical lag in npm and docker ecosystems
Technical lag in npm and docker ecosystemsTechnical lag in npm and docker ecosystems
Technical lag in npm and docker ecosystemsAhmed Zerouali
 
Analyzing Packages in Docker images hosted On DockerHub
Analyzing Packages in Docker images hosted On DockerHubAnalyzing Packages in Docker images hosted On DockerHub
Analyzing Packages in Docker images hosted On DockerHubAhmed Zerouali
 
On the Diversity of Software Package Popularity Metrics: An Empirical Study o...
On the Diversity of Software Package Popularity Metrics: An Empirical Study o...On the Diversity of Software Package Popularity Metrics: An Empirical Study o...
On the Diversity of Software Package Popularity Metrics: An Empirical Study o...Ahmed Zerouali
 
ConPan: A Tool to Analyze Packages in Software Containers
ConPan: A Tool to Analyze Packages in Software ContainersConPan: A Tool to Analyze Packages in Software Containers
ConPan: A Tool to Analyze Packages in Software ContainersAhmed Zerouali
 
Technical Lag in Docker Containers
Technical Lag in Docker ContainersTechnical Lag in Docker Containers
Technical Lag in Docker ContainersAhmed Zerouali
 
An Empirical Comparison of the Development History of CloudStack and Eucalyptus
An Empirical Comparison of the Development History of CloudStack and EucalyptusAn Empirical Comparison of the Development History of CloudStack and Eucalyptus
An Empirical Comparison of the Development History of CloudStack and EucalyptusAhmed Zerouali
 
An Empirical Analysis of Technical Lag in npm Package Dependencies
An Empirical Analysis of Technical Lag in npm Package DependenciesAn Empirical Analysis of Technical Lag in npm Package Dependencies
An Empirical Analysis of Technical Lag in npm Package DependenciesAhmed Zerouali
 

More from Ahmed Zerouali (14)

Prevalence and Evolution of License Violations in npm and RubyGems Dependency...
Prevalence and Evolution of License Violations in npm and RubyGems Dependency...Prevalence and Evolution of License Violations in npm and RubyGems Dependency...
Prevalence and Evolution of License Violations in npm and RubyGems Dependency...
 
On Popularity and Quality Metrics of npm Packages
On Popularity and Quality Metrics of npm PackagesOn Popularity and Quality Metrics of npm Packages
On Popularity and Quality Metrics of npm Packages
 
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency ...
 
A multi-dimensional analysis of technical lag in Debian-based Docker images
A multi-dimensional analysis of technical lag in Debian-based Docker imagesA multi-dimensional analysis of technical lag in Debian-based Docker images
A multi-dimensional analysis of technical lag in Debian-based Docker images
 
Evolution of Technical Lag in DockerHub images - Benevol20
Evolution of Technical Lag in DockerHub images - Benevol20Evolution of Technical Lag in DockerHub images - Benevol20
Evolution of Technical Lag in DockerHub images - Benevol20
 
PhD public defense: A Measurement Framework for Analyzing Technical Lag in ...
PhD public defense: A Measurement Framework for  Analyzing Technical Lag in  ...PhD public defense: A Measurement Framework for  Analyzing Technical Lag in  ...
PhD public defense: A Measurement Framework for Analyzing Technical Lag in ...
 
Technical Lag in Software Ecosystems
Technical Lag in Software EcosystemsTechnical Lag in Software Ecosystems
Technical Lag in Software Ecosystems
 
Technical lag in npm and docker ecosystems
Technical lag in npm and docker ecosystemsTechnical lag in npm and docker ecosystems
Technical lag in npm and docker ecosystems
 
Analyzing Packages in Docker images hosted On DockerHub
Analyzing Packages in Docker images hosted On DockerHubAnalyzing Packages in Docker images hosted On DockerHub
Analyzing Packages in Docker images hosted On DockerHub
 
On the Diversity of Software Package Popularity Metrics: An Empirical Study o...
On the Diversity of Software Package Popularity Metrics: An Empirical Study o...On the Diversity of Software Package Popularity Metrics: An Empirical Study o...
On the Diversity of Software Package Popularity Metrics: An Empirical Study o...
 
ConPan: A Tool to Analyze Packages in Software Containers
ConPan: A Tool to Analyze Packages in Software ContainersConPan: A Tool to Analyze Packages in Software Containers
ConPan: A Tool to Analyze Packages in Software Containers
 
Technical Lag in Docker Containers
Technical Lag in Docker ContainersTechnical Lag in Docker Containers
Technical Lag in Docker Containers
 
An Empirical Comparison of the Development History of CloudStack and Eucalyptus
An Empirical Comparison of the Development History of CloudStack and EucalyptusAn Empirical Comparison of the Development History of CloudStack and Eucalyptus
An Empirical Comparison of the Development History of CloudStack and Eucalyptus
 
An Empirical Analysis of Technical Lag in npm Package Dependencies
An Empirical Analysis of Technical Lag in npm Package DependenciesAn Empirical Analysis of Technical Lag in npm Package Dependencies
An Empirical Analysis of Technical Lag in npm Package Dependencies
 

Recently uploaded

The Age of AI: Elevating Experiences & Delivering Customer Value!
The Age of AI: Elevating Experiences & Delivering Customer Value!The Age of AI: Elevating Experiences & Delivering Customer Value!
The Age of AI: Elevating Experiences & Delivering Customer Value!ISPMAIndia
 
sql ppt for students who preparing for sql
sql ppt for students who preparing for sqlsql ppt for students who preparing for sql
sql ppt for students who preparing for sqlbharatjanadharwarud
 
Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Jeffrey Haguewood
 
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...emili denli
 
AI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit BendigiriAI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit BendigiriISPMAIndia
 
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdfAUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdfAutokey
 
Essence of Requirements Engineering: Pragmatic Insights for 2024
Essence of Requirements Engineering: Pragmatic Insights for 2024Essence of Requirements Engineering: Pragmatic Insights for 2024
Essence of Requirements Engineering: Pragmatic Insights for 2024Asher Sterkin
 
OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20Shane Coughlan
 
SPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product ManagementSPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product ManagementISPMAIndia
 
maximum subarray ppt for killing camp students
maximum subarray ppt for killing camp studentsmaximum subarray ppt for killing camp students
maximum subarray ppt for killing camp studentsssuser82c38d
 
killing camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdfkilling camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdfssuser82c38d
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!Anthony Dahanne
 
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)GDSCNiT
 
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkDBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkTimothy Spann
 
killingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdfkillingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdfssuser82c38d
 
P1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 SmartsheetP1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 SmartsheetMatthewTHawley
 
killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이
killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이
killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이ssuser82c38d
 
Getting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptxGetting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptxmavinoikein
 
LLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowLLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowNaoki (Neo) SATO
 

Recently uploaded (20)

The Age of AI: Elevating Experiences & Delivering Customer Value!
The Age of AI: Elevating Experiences & Delivering Customer Value!The Age of AI: Elevating Experiences & Delivering Customer Value!
The Age of AI: Elevating Experiences & Delivering Customer Value!
 
sql ppt for students who preparing for sql
sql ppt for students who preparing for sqlsql ppt for students who preparing for sql
sql ppt for students who preparing for sql
 
Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)
 
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
 
eLearning Content Development Company Code and Pixels.pdf
eLearning Content Development Company Code and Pixels.pdfeLearning Content Development Company Code and Pixels.pdf
eLearning Content Development Company Code and Pixels.pdf
 
AI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit BendigiriAI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit Bendigiri
 
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdfAUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
 
Essence of Requirements Engineering: Pragmatic Insights for 2024
Essence of Requirements Engineering: Pragmatic Insights for 2024Essence of Requirements Engineering: Pragmatic Insights for 2024
Essence of Requirements Engineering: Pragmatic Insights for 2024
 
OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20
 
SPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product ManagementSPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product Management
 
maximum subarray ppt for killing camp students
maximum subarray ppt for killing camp studentsmaximum subarray ppt for killing camp students
maximum subarray ppt for killing camp students
 
killing camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdfkilling camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdf
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!
 
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
 
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkDBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
 
killingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdfkillingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdf
 
P1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 SmartsheetP1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 Smartsheet
 
killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이
killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이
killingcamp 광고삽입문제 풀이, killingcamp 광고삽입문제 풀이
 
Getting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptxGetting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptx
 
LLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowLLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flow
 

Analysis And Observations Of The Evolution Of Testing Library Usage

  • 1. Analysis And Observations Of The Evolution Of Testing Library Usage 1 Ahmed ZEROUALI, Tom MENS Software Engineering Lab, University of Mons, Belgium SATToSE 2017 — Madrid, Spain, June 2017 Work in Progress
  • 2. software project software project library 1 library 1 library 1 library 1 library 1 library 1 Motivation 2 software project library 1 library 2 library n … software developer Which library should I use? When should I upgrade? When should I migrate? What is the impact? What is the effort involved?
  • 3. software project software project library 1 library 1 Motivation 3 software project library 1 library maintainer Who uses my library and how? How to stay ahead of competition? How to avoid users migrating to other libraries? When should I release library updates? software project
  • 5. Focus 5 Most popular programming language [1] > 900k of open source Java projects. [1] According to TIOBE Index for June 2017 http://www.tiobe.com/tiobe-index/ [2] According to https://mvnrepository.com/open-source/testing-frameworks Most popular Java testing and mocking libraries [2]
  • 6. Most Frequently Used Testing-related Libraries 7 AssertJ Previous study: A Zerouali, T Mens. Analyzing the evolution of testing library usage in open source Java projects. SANER 2017.
  • 7. Dataset 8 Considered: 20,688 Java projects on GitHub Excluded: • unforked projects • forks • projects not using the selected libraries • Projects not using Maven Retained: 6,424 Java projects
  • 8. How long does it take before a Java project upgrades to a new minor released version of a testing-related library? 9
  • 9. 10 Latency to adopt a new released JUnit minor version (in months) How long does it take before a Java project upgrades to a new minor released version of a testing-related library?
  • 10. How frequently are packages of testing libraries used? 11 The distribution of the mean number of test Java files in a project using different packages of different testing-related libraries.
  • 11. How frequently are packages of testing libraries used? 12 - Most of testing library packages tend to be used in only a few numbers of test Java files. - More than 90% of the projects, use only a few numbers of the available packages in the used library. The distribution of the mean number of test Java files in a project using different packages of different testing-related libraries.
  • 12. How frequently are packages of testing libraries used? 13 The distribution of the proportion of projects that use different packages of different testing related libraries. - The usage of different library packages is not related to the size of the library itself .
  • 13. How does the number of test files in Java projects evolve over time? 14 The evolution of the proportion of the test Java files over time.
  • 14. How often do Java projects use Junit to test classes that provide a particular functionality? 15 Projects: 1,150 Java projects Database access libraries: JDBC, Hibernate, JPA Testing library: JUnit
  • 15. How often do Java projects use Junit to test classes that provide a particular functionality? 16 The evolution of the proportion of the tested database Java classes
  • 16. How often do Java projects use testing libraries to test classes that provide a particular functionality? 17 The co-evolution of the tested database Java classes and the other tested classes.
  • 17. Limitations 18  Open source Java Projects using Maven as the build automation tool.  All type of projects.
  • 18. Main Findings & Future Work 19 • TestNG, PowerMock and AssertJ are rapidly upgraded. • The first major released versions take more time before their adoption than the others. • Testing libraries are not fully used. • Only few packages are usually used together within a Java project. • Half of database Java classes are not tested. • Future Work: Recommendation tools.
  • 19. Main Findings & Future Work 20 • TestNG, PowerMock and AssertJ are rapidly upgraded. • The first major released versions take more time before their adoption than the others. • Testing libraries are not fully used. • Only few packages are usually used together within a Java project. • Half of database Java classes are not tested. • Future Work: Recommendation tools. Thank you !

Editor's Notes

  1. In order to improve the way in which a library is used, it is useful to understand how other projects use the library, how and which library functions are often used together, which new releases are the first to be adopted and when one should upgrade to a new version or migrate to a competing library.
  2. From the point of view of library developers, it is useful to have insights about the common practices, and to assess the popularity of their API functionalities in a given ecosystem and to prevent them from risk factors such as breaking changes and eventually migrations to other competing libraries.
  3. And because software testing is one of the main artefacts that affect the improvement of software projects quality Which is clearly observed through the usage of the categorie of testing relatied libraries in software projects. For example, According to a blog post, testing and mocking libraries, including JUnit, TestNG, Mockito and others are among the most popular Java libraries on GitHub.
  4. So based on that, We decided to analyze the usage of testing related libraries. ---We decided to study open source Java projects extracted from GitHub. We chose for Java projects because it is the most popular programming language according to tiobe index, and one of the most used in Github. ---And we chose for GitHub, because we require full access to the project source code history in order to carry out our analysis, and because it’s the largest host of Java source code. ---For the libraries, we decided to study the most popular testing and mocking libraries based on their number of usages in the Maven Central Repository.
  5. So focusing on these most frequenlty used testing related libraries and that we have already used for our previous study.
  6. We found that more than 6,000 projects can be considered, among more than 20,000 Java projects that we have in our corpus and that we have ratained from Github, only this group of projects makes use of Maven and makes use of at least one of the considerd testing libraries. And can be considered for out study.
  7. To know How.. for each project, for the first snapshot of each month of its lifetime, we extracted and analyzed the metadata and dependencies available on the Maven POM file and we identified the minor versions used and related to our considered testing libraries. We observed that the used minor versions of TestNG, PowerMock and AssertJ are more likely to be upgraded in the first months after the release of a new version. And Most of the minor versions of testing libraries tend to be used for less than two years before upgrading or migrating to another library version.
  8. We also observed that some versions of the same library are not quickly adopted like the others. For example the first releases of the major version JUnit 4.0; which might be explained by the fear of the incompatible API changes that are made on the new major version.
  9. To give an overview to the developers about the usage of their library packages, we analyzed the source code of all Java files of all projects that used at least one of the considered libraries.
  10. We observed that most of testing library packages tend to be used in only a few numbers of test Java files. We also observed that more than 90% of the projects that use testing related libraries, use only a few numbers of the available packages in the used library.
  11. And We also noticed that the usage of different library packages is not related to the size of the library itself .
  12. And next, to know how does…. we calculated for each project, for the first snapshot of each month, the number of test Java files existing in this project. And We considered only the unit testing libraries, JUnit, TestNG and Spring. We found that in the last 8 years, the proportion of the numbers of test files were always less than 15% of all Java File. Before 2009, TestNG was used in a higher numbers of test files in projects they use it than JUnit, but after 2009 JUnit test files numbers increased to beat the decreasing numbers of TestNG test files, while Spring's test files proportion was always under 3% of all Java files.
  13. To know how often we use testing libraries to test classes that provide a particular functionality, and because it is important for developers to avoid problems that can occur when tests corrupt the database and cause subsequent tests to fail, we chose database classes as candidates. For more than 1,000 Java projects that used JDBC or JPA or Hibernate for their database access, and used JUnit as a testing library, we identified all Java classes that make use of these database libraries and all test Java classes, and then we analyzed if the database classes are being tested. We chose JUnit so we can have enough projects for this empirical analysis.
  14. We found that half of these classes number is tested, and with a small difference in the last years, classes that used JDBC are more likely to be tested than the classes that used JPA or Hibernate.
  15. We also analyzed the co-evolution of the tested database classes and the other tested classes and we observed that the proportion of the database classes that are tested is slightly decreasing compared to the other tested classes, classes using all other types of libraries. Which is accepted since software projects evolve and offer more functionalities using different APIs.
  16. Of course our analysis suffers from some limitations. Our results should not be generalized beyond Java projects or to private industrial projects or to projects that do not rely on the build automation tool Maven. Also, Our results may be biased by the fact that we consider all type of open source Java projects without classifying these projects into different categories.
  17. Finally, We studied the usage of eight popular testing-related libraries in a large corpus of Java projects hosted on GitHub. And we found: ……. In future work: after we finish our current study on test coverage, we will provide automated recommendation tools on library usage in the form of web-based dashboards. Such empirical Analysis and tools can be useful to project developers desiring to introduce an additional library, or to replace an existing library by another one, as our analysis reveals which competing libraries are available to migrate to. It’s also usefull for library maintainers so they could assess the popularity of their libraries, versions and functionalities and take this into account when developing new versions of their library.
  18. Finally, We studied the usage of eight popular testing-related libraries in a large corpus of Java projects hosted on GitHub. And we found: ……. In future work: after we finish our current study on test coverage, we will provide automated recommendation tools on library usage in the form of web-based dashboards. Such empirical Analysis and tools can be useful to project developers desiring to introduce an additional library, or to replace an existing library by another one, as our analysis reveals which competing libraries are available to migrate to. It’s also usefull for library maintainers so they could assess the popularity of their libraries, versions and functionalities and take this into account when developing new versions of their library.