SlideShare a Scribd company logo
Unit Testing & Android
Tomáš Kypta
Unit Testing
Experience on Android
Unit testing and Android
Android apps are
difficult to test
Unit testing and Android
Types of Android tests
Types of Android tests
Instrumentation
tests
Unit tests
Instrumentation tests
Instrumentation tests
• running on physical device or emulator
• gradle connectedCheck
Unit testing and Android
Intstrumentation tests
• Legacy instrumentation tests
or
• Testing Support Library
Legacy instrumentation tests
• JUnit3
• Tests extend from TestCase
• AndroidTestCase
• ActivityInstrumentationTestCase2
• ServiceTestCase
• …
Testing Support Library
• AndroidJUnitRunner
• JUnit4 compatible
android {
defaultConfig {
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
}
androidTestCompile 'com.android.support.test:runner:0.3'

androidTestCompile 'com.android.support.test:rules:0.3'
Testing Support Library
• Test filtering
• @RequiresDevice - run on physical device, no
emulator
• @SdkSupress - don’t run on lower Android API
level
Test Sizes
• @SmallTest
• @MediumTest
• @LargeTest
Test Sizes
Feature Small Medium Large
Network access No localhost only Yes
Database No Yes Yes
File system access No Yes Yes
Use external systems No Discouraged Yes
Multiple threads No Yes Yes
Sleep statements No Yes Yes
System properties No Yes Yes
Time limit (seconds) 60 300 900+
Potential problems
• Manifest merger
• problems when testing libraries
• aar dependency using manifest placeholders
• e.g. ${applicationId}, ${localApplicationId}
android {
defaultConfig {
manifestPlaceholders =
[localApplicationId:”com.example.mylib”]
}
}
Problems
• It affects the device!
• Wiping contacts will wipe contacts!
• You can’t prepare all test preconditions
• e.g. you can’t dynamically change permissions
Problems
Test failed to run to completion. Reason: 'Instrumentation
run failed due to 'java.lang.IllegalStateException''.
Check device logcat for details
Unit testing and Android
• framework for functional UI tests
• part of Android Testing Support Library
androidTestCompile
'com.android.support.test.espresso:espresso-core:2.2'
@Test
public void sayHello(){
onView(withId(R.id.editText))
.perform(typeText(STRING_TO_BE_TYPED),
closeSoftKeyboard());
onView(withText("Say hello!”))
.perform(click());
String expectedText =
"Hello, " + STRING_TO_BE_TYPED + "!";
onView(withId(R.id.textView))
.check(matches(withText(expectedText)));
}
Problems
• testing on device is not isolated
• device state affects the result
• e.g. screen on/off might affect test result
onView(withId(R.id.my_view))
.check(matches(isDisplayed()));
Instrumentation tests
are
SLOOOOOW
java.lang.RuntimeException: Stub!
Unit Tests
Unit Tests
• run on JVM
• mockable android.jar
• gradle test
Grade and Android Studio
support
• natively supported since Gradle plugin 1.1.0
• big problems in AS in previous versions
• has issues
• switching between unit & instrumentation tests
• disabled type is not indexed
Unit testing and Android
Unit testing and Android
• the essential piece
• alone can be used only for pure Java
• don’t use on Android APIs!
Method ... not mocked.
android {

testOptions {

unitTests.returnDefaultValues = true

}

}
• Helps rarely
• returns 0, false, null, …
Unit testing and Android
• mocking framework
• easy to use
• compatible with Android unit testing
testCompile ‘org.mockito:mockito-core:1.10.19'
• can be used in instrumentation tests
• needs dexmaker
androidTestCompile ‘org.mockito:mockito-core:1.10.19'
androidTestCompile "com.google.dexmaker:dexmaker:1.2"
androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.2"
• @RunWith(MockitoJUnitRunner.class)
• @Mock
• Mockito.mock()
• Mockito.when().thenReturn()
• when(obj.getA()).thenReturn(aInstance)
• Mockito.spy()
• wrapping a real object
• Mockito.verify()
• verify that special condition are met
• e.g. method called, called twice, …
Limitations
• final classes
• anonymous classes
• primitive types
• static methods
Unit testing and Android
• at first, might be difficult to use
• the ultimate mock of Android APIs
• allows custom shadows
• @RunWith(RobolectricTestRunner.class)
• supports Android API level 18
• doesn’t support multiple users on the same
machine!!!
2.4
• Robolectric class splits into
• Robolectric
• RuntimeEnvironment
• Shadows
• ShadowApplication
• ShadowLooper
3.0-rc3
that’s the s**t you need for
Android unit testing
Potential problems
• difficult to search for solutions
• long history of bigger changes
• many obsolete posts
Potential problems
• difficulties running on command line and in AS
• different paths
• difficulty working with resources
• RobolectricGradleTestRunner
• doesn’t work in AS
Code Coverage
Code Coverage
• unit tests
• JaCoCo
• instrumentation tests
• EMMA
• obsolete
• Google is supposedly working on JaCoCo support
JaCoCo
JaCoCo
• enabled by default for unit tests
• generates binary report in build/jacoco
• build/jacoco/testDebugUnitTest.exec
• gradle test
Unit testing and Android
Unit testing and Android
Code Coverage
• don’t use it
• generates coverage-instrumented-classes
• for instrumentation tests
• coverage for instrumentation tests is not ready
buildTypes {

debug {

testCoverageEnabled true

}
}
Good tests
Good tests
• run in any order
• run in isolation
• run consistently
• run fast
• are orthogonal
How to write testable
apps?
Rules of thumb
• prefer pure Java
• abstract away from Android APIs
• separate business logic and UI
• don’t write business logic into activities and
fragments
• try avoid static methods
• use dependency injection
Questions?
References
• Espresso
• https://code.google.com/p/android-test-kit/
• https://code.google.com/p/android-test-kit/wiki/
EspressoV2CheatSheet
References
• Mockito
• http://mockito.org/
• https://github.com/mockito/mockito
• Dexmaker
• https://github.com/crittercism/dexmaker
References
• Robolectric
• http://robolectric.org/
• https://github.com/robolectric/robolectric
References
• code coverage
• JaCoCo
• Eclipse Public License v1.0
• http://www.eclemma.org/jacoco/trunk/index.html
• https://github.com/jacoco/jacoco
• EMMA
• Common Public License v1.0
• http://emma.sourceforge.net/
Ad

Recommended

Learn How to Unit Test Your Android Application (with Robolectric)
Learn How to Unit Test Your Android Application (with Robolectric)
Marakana Inc.
 
Unit Testing Android Applications
Unit Testing Android Applications
Rody Middelkoop
 
Testing on Android
Testing on Android
Ari Lacenski
 
Testing for Android: When, Where, and How to Successfully Use Test Automation
Testing for Android: When, Where, and How to Successfully Use Test Automation
Trent Peterson
 
How to setup unit testing in Android Studio
How to setup unit testing in Android Studio
tobiaspreuss
 
Android testing
Android testing
Bitbar
 
Android testing
Android testing
JinaTm
 
Robotium Tutorial
Robotium Tutorial
Mobile March
 
Android Automation Using Robotium
Android Automation Using Robotium
Mindfire Solutions
 
Inside Android Testing
Inside Android Testing
Fernando Cejas
 
Android Testing: An Overview
Android Testing: An Overview
SmartLogic
 
Robotium - sampath
Robotium - sampath
Sampath Muddineni
 
Efficient JavaScript Unit Testing, JavaOne China 2013
Efficient JavaScript Unit Testing, JavaOne China 2013
Hazem Saleh
 
[AnDevCon 2016] Mutation Testing for Android
[AnDevCon 2016] Mutation Testing for Android
Hazem Saleh
 
Selenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And Answers
Ajit Jadhav
 
Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012
Hazem Saleh
 
Top trending selenium interview questions
Top trending selenium interview questions
Rock Interview
 
Android with dagger_2
Android with dagger_2
Kros Huang
 
Introduction to Protractor - Habilelabs
Introduction to Protractor - Habilelabs
HabileLabs
 
Test Automation On Android Platform Using Robotium
Test Automation On Android Platform Using Robotium
IndicThreads
 
Reliable mobile test automation
Reliable mobile test automation
Vishal Banthia
 
Realtime selenium interview questions
Realtime selenium interview questions
Kuldeep Pawar
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
Bitbar
 
The Test way
The Test way
Mikhail Grinfeld
 
Unit-testing and E2E testing in JS
Unit-testing and E2E testing in JS
Michael Haberman
 
Codeception introduction and use in Yii
Codeception introduction and use in Yii
IlPeach
 
How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.
Matt Eland
 
Principles and patterns for test driven development
Principles and patterns for test driven development
Stephen Fuqua
 
Introduction to android testing
Introduction to android testing
Diego Torres Milano
 
Android & iPhone App Testing
Android & iPhone App Testing
SWAAM Tech
 

More Related Content

What's hot (20)

Android Automation Using Robotium
Android Automation Using Robotium
Mindfire Solutions
 
Inside Android Testing
Inside Android Testing
Fernando Cejas
 
Android Testing: An Overview
Android Testing: An Overview
SmartLogic
 
Robotium - sampath
Robotium - sampath
Sampath Muddineni
 
Efficient JavaScript Unit Testing, JavaOne China 2013
Efficient JavaScript Unit Testing, JavaOne China 2013
Hazem Saleh
 
[AnDevCon 2016] Mutation Testing for Android
[AnDevCon 2016] Mutation Testing for Android
Hazem Saleh
 
Selenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And Answers
Ajit Jadhav
 
Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012
Hazem Saleh
 
Top trending selenium interview questions
Top trending selenium interview questions
Rock Interview
 
Android with dagger_2
Android with dagger_2
Kros Huang
 
Introduction to Protractor - Habilelabs
Introduction to Protractor - Habilelabs
HabileLabs
 
Test Automation On Android Platform Using Robotium
Test Automation On Android Platform Using Robotium
IndicThreads
 
Reliable mobile test automation
Reliable mobile test automation
Vishal Banthia
 
Realtime selenium interview questions
Realtime selenium interview questions
Kuldeep Pawar
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
Bitbar
 
The Test way
The Test way
Mikhail Grinfeld
 
Unit-testing and E2E testing in JS
Unit-testing and E2E testing in JS
Michael Haberman
 
Codeception introduction and use in Yii
Codeception introduction and use in Yii
IlPeach
 
How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.
Matt Eland
 
Principles and patterns for test driven development
Principles and patterns for test driven development
Stephen Fuqua
 
Android Automation Using Robotium
Android Automation Using Robotium
Mindfire Solutions
 
Inside Android Testing
Inside Android Testing
Fernando Cejas
 
Android Testing: An Overview
Android Testing: An Overview
SmartLogic
 
Efficient JavaScript Unit Testing, JavaOne China 2013
Efficient JavaScript Unit Testing, JavaOne China 2013
Hazem Saleh
 
[AnDevCon 2016] Mutation Testing for Android
[AnDevCon 2016] Mutation Testing for Android
Hazem Saleh
 
Selenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And Answers
Ajit Jadhav
 
Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012
Hazem Saleh
 
Top trending selenium interview questions
Top trending selenium interview questions
Rock Interview
 
Android with dagger_2
Android with dagger_2
Kros Huang
 
Introduction to Protractor - Habilelabs
Introduction to Protractor - Habilelabs
HabileLabs
 
Test Automation On Android Platform Using Robotium
Test Automation On Android Platform Using Robotium
IndicThreads
 
Reliable mobile test automation
Reliable mobile test automation
Vishal Banthia
 
Realtime selenium interview questions
Realtime selenium interview questions
Kuldeep Pawar
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
Bitbar
 
Unit-testing and E2E testing in JS
Unit-testing and E2E testing in JS
Michael Haberman
 
Codeception introduction and use in Yii
Codeception introduction and use in Yii
IlPeach
 
How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.
Matt Eland
 
Principles and patterns for test driven development
Principles and patterns for test driven development
Stephen Fuqua
 

Viewers also liked (20)

Introduction to android testing
Introduction to android testing
Diego Torres Milano
 
Android & iPhone App Testing
Android & iPhone App Testing
SWAAM Tech
 
Android Unit Tesing at I/O rewind 2015
Android Unit Tesing at I/O rewind 2015
Somkiat Puisungnoen
 
Testing With Open Source
Testing With Open Source
Matthias Käppler
 
Unit testing on Android (Droidcon Dubai 2015)
Unit testing on Android (Droidcon Dubai 2015)
Danny Preussler
 
How ANDROID TESTING changed how we think about Death - Second Edition
How ANDROID TESTING changed how we think about Death - Second Edition
penanochizzo
 
Mobile Performance Testing - Best Practices
Mobile Performance Testing - Best Practices
Eran Kinsbrunner
 
Testing on Android
Testing on Android
Diego Torres Milano
 
TDD with AngularJS
TDD with AngularJS
Leena N
 
Droid con 2013 workshop unit testing in android [robolectirc]
Droid con 2013 workshop unit testing in android [robolectirc]
Leena N
 
Robolectric Android Unit Testing Framework
Robolectric Android Unit Testing Framework
tylerschultz
 
7 stages of unit testing
7 stages of unit testing
Jorge Ortiz
 
How To Improve Your Product Testing Program
How To Improve Your Product Testing Program
The DRG (The Dieringer Research Group)
 
Product Testing and Refinement
Product Testing and Refinement
Chris Cera
 
Product testing methodology & how to conduct a product test
Product testing methodology & how to conduct a product test
VINAMR - Vietnam Marketing Research & Consultants
 
A guide to Android automated testing
A guide to Android automated testing
jotaemepereira
 
Testing Android Security
Testing Android Security
Jose Manuel Ortega Candel
 
Product Testing: Methodological Issues & Design Considerations
Product Testing: Methodological Issues & Design Considerations
T.S. Lim
 
Introduction to android testing - oscon 2012
Introduction to android testing - oscon 2012
OSCON Byrum
 
Android Performance Tips & Tricks
Android Performance Tips & Tricks
Sergii Zhuk
 
Android & iPhone App Testing
Android & iPhone App Testing
SWAAM Tech
 
Android Unit Tesing at I/O rewind 2015
Android Unit Tesing at I/O rewind 2015
Somkiat Puisungnoen
 
Unit testing on Android (Droidcon Dubai 2015)
Unit testing on Android (Droidcon Dubai 2015)
Danny Preussler
 
How ANDROID TESTING changed how we think about Death - Second Edition
How ANDROID TESTING changed how we think about Death - Second Edition
penanochizzo
 
Mobile Performance Testing - Best Practices
Mobile Performance Testing - Best Practices
Eran Kinsbrunner
 
TDD with AngularJS
TDD with AngularJS
Leena N
 
Droid con 2013 workshop unit testing in android [robolectirc]
Droid con 2013 workshop unit testing in android [robolectirc]
Leena N
 
Robolectric Android Unit Testing Framework
Robolectric Android Unit Testing Framework
tylerschultz
 
7 stages of unit testing
7 stages of unit testing
Jorge Ortiz
 
Product Testing and Refinement
Product Testing and Refinement
Chris Cera
 
A guide to Android automated testing
A guide to Android automated testing
jotaemepereira
 
Product Testing: Methodological Issues & Design Considerations
Product Testing: Methodological Issues & Design Considerations
T.S. Lim
 
Introduction to android testing - oscon 2012
Introduction to android testing - oscon 2012
OSCON Byrum
 
Android Performance Tips & Tricks
Android Performance Tips & Tricks
Sergii Zhuk
 
Ad

Similar to Unit testing and Android (20)

Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Enterprise Strength Mobile JavaScript
Enterprise Strength Mobile JavaScript
Troy Miles
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
Dmitry Buzdin
 
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Bitbar
 
Testing Angular
Testing Angular
Lilia Sfaxi
 
Play with Testing on Android - Gilang Ramadhan (Academy Content Writer at Dic...
Play with Testing on Android - Gilang Ramadhan (Academy Content Writer at Dic...
DicodingEvent
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
Mats Bryntse
 
Qt test framework
Qt test framework
ICS
 
Robotium at Android Only 2010-09-29
Robotium at Android Only 2010-09-29
Hugo Josefson
 
Java script unit testing
Java script unit testing
Mats Bryntse
 
Test it! Unit, mocking and in-container Meet Arquillian!
Test it! Unit, mocking and in-container Meet Arquillian!
Ivan Ivanov
 
33rd degree
33rd degree
Dariusz Kordonski
 
#BABBQAmsterdam The other Android getting started guide: Gradle power
#BABBQAmsterdam The other Android getting started guide: Gradle power
Javier de Pedro López
 
Software testing: an introduction - 2017
Software testing: an introduction - 2017
XavierDevroey
 
Genymotion with Jenkins
Genymotion with Jenkins
Vishal Nayak
 
Breaking Dependencies To Allow Unit Testing - Steve Smith | FalafelCON 2014
Breaking Dependencies To Allow Unit Testing - Steve Smith | FalafelCON 2014
FalafelSoftware
 
Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit Testing
Steven Smith
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy Way
Jordi Pradel
 
Test Driven Development with JavaFX
Test Driven Development with JavaFX
Hendrik Ebbers
 
Building XWiki
Building XWiki
Vincent Massol
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Enterprise Strength Mobile JavaScript
Enterprise Strength Mobile JavaScript
Troy Miles
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
Dmitry Buzdin
 
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Bitbar
 
Play with Testing on Android - Gilang Ramadhan (Academy Content Writer at Dic...
Play with Testing on Android - Gilang Ramadhan (Academy Content Writer at Dic...
DicodingEvent
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
Mats Bryntse
 
Qt test framework
Qt test framework
ICS
 
Robotium at Android Only 2010-09-29
Robotium at Android Only 2010-09-29
Hugo Josefson
 
Java script unit testing
Java script unit testing
Mats Bryntse
 
Test it! Unit, mocking and in-container Meet Arquillian!
Test it! Unit, mocking and in-container Meet Arquillian!
Ivan Ivanov
 
#BABBQAmsterdam The other Android getting started guide: Gradle power
#BABBQAmsterdam The other Android getting started guide: Gradle power
Javier de Pedro López
 
Software testing: an introduction - 2017
Software testing: an introduction - 2017
XavierDevroey
 
Genymotion with Jenkins
Genymotion with Jenkins
Vishal Nayak
 
Breaking Dependencies To Allow Unit Testing - Steve Smith | FalafelCON 2014
Breaking Dependencies To Allow Unit Testing - Steve Smith | FalafelCON 2014
FalafelSoftware
 
Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit Testing
Steven Smith
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy Way
Jordi Pradel
 
Test Driven Development with JavaFX
Test Driven Development with JavaFX
Hendrik Ebbers
 
Ad

More from Tomáš Kypta (20)

Modern Android app library stack
Modern Android app library stack
Tomáš Kypta
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Practical RxJava for Android
Practical RxJava for Android
Tomáš Kypta
 
Practical RxJava for Android
Practical RxJava for Android
Tomáš Kypta
 
Reactive programming on Android
Reactive programming on Android
Tomáš Kypta
 
Android Develpment vol. 3, MFF UK, 2015
Android Develpment vol. 3, MFF UK, 2015
Tomáš Kypta
 
Writing testable Android apps
Writing testable Android apps
Tomáš Kypta
 
Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015
Tomáš Kypta
 
ProGuard
ProGuard
Tomáš Kypta
 
Android Development for Phone and Tablet
Android Development for Phone and Tablet
Tomáš Kypta
 
Reactive programming on Android
Reactive programming on Android
Tomáš Kypta
 
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014
Tomáš Kypta
 
Android Libraries
Android Libraries
Tomáš Kypta
 
Android Development 201
Android Development 201
Tomáš Kypta
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
Tomáš Kypta
 
Užitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testování
Tomáš Kypta
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013
Tomáš Kypta
 
Stylování ActionBaru
Stylování ActionBaru
Tomáš Kypta
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012
Tomáš Kypta
 
Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012
Tomáš Kypta
 
Modern Android app library stack
Modern Android app library stack
Tomáš Kypta
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Practical RxJava for Android
Practical RxJava for Android
Tomáš Kypta
 
Practical RxJava for Android
Practical RxJava for Android
Tomáš Kypta
 
Reactive programming on Android
Reactive programming on Android
Tomáš Kypta
 
Android Develpment vol. 3, MFF UK, 2015
Android Develpment vol. 3, MFF UK, 2015
Tomáš Kypta
 
Writing testable Android apps
Writing testable Android apps
Tomáš Kypta
 
Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015
Tomáš Kypta
 
Android Development for Phone and Tablet
Android Development for Phone and Tablet
Tomáš Kypta
 
Reactive programming on Android
Reactive programming on Android
Tomáš Kypta
 
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014
Tomáš Kypta
 
Android Development 201
Android Development 201
Tomáš Kypta
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
Tomáš Kypta
 
Užitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testování
Tomáš Kypta
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013
Tomáš Kypta
 
Stylování ActionBaru
Stylování ActionBaru
Tomáš Kypta
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012
Tomáš Kypta
 
Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012
Tomáš Kypta
 

Recently uploaded (20)

FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Safe Software
 
Security Tips for Enterprise Azure Solutions
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Safe Software
 
Security Tips for Enterprise Azure Solutions
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
 

Unit testing and Android