Slide 1

Slide 1 text

Effective testing and delivery using Continuous Integration 06/29/2019 | PRESENTED BY CARLOS PAULINO

Slide 2

Slide 2 text

Carlos Paulino Sr Android Engineer @ American Express github/carlospaulino twitter/_carlospaulino

Slide 3

Slide 3 text

Las opiniones expresadas en esta presentación son solo mías y no de mi empleador.

Slide 4

Slide 4 text

Los temas de hoy 4 • Testing y Control de Calidad. • Conceptos fundamentales de Continuous Integration. • Firebase Test Lab. • Crashlytics Beta. • Estrategias para delivery.

Slide 5

Slide 5 text

Ahora una encuesta 5 • Testing ? • Espresso ? • Firebase Test Lab ? • Continuous Integration ? • Delivery Automatizado ? • Fabric/Crashlytics?

Slide 6

Slide 6 text

¿ Por que Testing ?

Slide 7

Slide 7 text

Las pruebas son extremadamente importantes, ya que ayudan a evitar que los desarrolladores rompan o afecten funcionalidades existentes.

Slide 8

Slide 8 text

Facilita los cambios Ayuda a mejorar el diseñar una mejor arquitectura Simplifica la integración Ayuda a entender mejor el código Incrementa la velocidad del desarrollo

Slide 9

Slide 9 text

¿ Que puedo usar para hacer pruebas ? ENG QA

Slide 10

Slide 10 text

¿Que es Espresso? 10 • Una librería creada por Google para la creación de pruebas de UI. • Es fácil de leer y escribir gracias a su API fluida. • Comparte el proceso con la aplicación. onView(withId(R.id.my_view)) .perform(click()) .check(matches(isDisplayed())) // withId(R.id.my_view) es el ViewMatcher // click() es el ViewAction // matches(isDisplayed()) es el ViewAssertion

Slide 11

Slide 11 text

¿ Que pasa si no hago pruebas ?

Slide 12

Slide 12 text

Bajo control de calidad = Bajos Reviews

Slide 13

Slide 13 text

13

Slide 14

Slide 14 text

84% de los usuarios dicen que las calificaciones del Play Store son lo más importantes al momento de descargar una aplicación móvil. [1] [1]Mobile Apps: What Consumers Really Need and Want - Mobile App Survey Report → Dynatrace https://goo.gl/s2SWqq

Slide 15

Slide 15 text

¿ Alguna otra forma de garantizar calidad ?

Slide 16

Slide 16 text

Static Analysis 16 Detekt: • Static analysis for Kotlin • Unsafe casts • Complex methods • Wrong formatting Android Lint: Static analysis for Android • Unused resources • Missing alt descriptions • Hard Coded Text Security Vulnerability Detection • Hard coded credentials • Broken SSL validation • Leaking information in the log

Slide 17

Slide 17 text

Otras herramientas de Static Analysis 17 • Error Prone • FindBugs • Checkstyle • PMD

Slide 18

Slide 18 text

¿¿¿¿ Pero ?????

Slide 19

Slide 19 text

Es difícil probar manualmente todo un sistema cuando se introduce una nueva característica. Ejecutar pruebas y procesos de análisis en la estación de trabajo puede tomar mucho tiempo.

Slide 20

Slide 20 text

20 ./gradlew clean check

Slide 21

Slide 21 text

Continuous Integration 21 • Continuous Integration es una práctica de desarrollo la cual requiere que los desarrolladores integren código en un repositorio compartido varias veces al día. • Cada check-in o pull request es verificado por un proceso automatizado de compilación y ejecución de pruebas, lo cual permite a los miembros del equipo detectar problemas de manera precoz. • Algunos servicios de Continuous Integration son:

Slide 22

Slide 22 text

22

Slide 23

Slide 23 text

23

Slide 24

Slide 24 text

24

Slide 25

Slide 25 text

Firebase Test Lab

Slide 26

Slide 26 text

Firebase Test Lab para Android ofrece infraestructura basada en la nube para probar apps de Android en dispositivos reales o virtuales.

Slide 27

Slide 27 text

27

Slide 28

Slide 28 text

28

Slide 29

Slide 29 text

29 com.example.MainActivityTest com.example.MainActivityTest com.example.MainActivityTest com.example.MainActivityTest com.example.MainActivityTest com.example.MainActivityTest

Slide 30

Slide 30 text

30 My Application my search keyword

Slide 31

Slide 31 text

Las pruebas de espresso se ejecutan de forma secuencial. 31 Testcase Testcase Testcase Testcase Testcase Testcase Testcase Testcase Test Suite

Slide 32

Slide 32 text

32 Testcase Testcase Testcase Testcase Testcase Testcase Testcase Testcase Testcase Test Suite Test Suite Test Suite Aumentando el performance con Flank [1]Flank - https://github.com/TestArmada/flank

Slide 33

Slide 33 text

Caracteristicas de Flank 33 Test Sharding Throttling Multiple dispositivos Reportes

Slide 34

Slide 34 text

Aumentando el performance con Jobs en paralelo 34

Slide 35

Slide 35 text

Estrategias para delivery

Slide 36

Slide 36 text

Variants & Product Flavors

Slide 37

Slide 37 text

Fabric Beta 37

Slide 38

Slide 38 text

QA QA Alpha/Beta QA QA Staged 5% Full 100% ENG ENG Integrations Review Monitoring

Slide 39

Slide 39 text

Continuous Integration no desaparece los bugs, pero sí ayuda a encontrarlos y eliminarlos. “Continuous integration doesn't get rid of bugs, but it does make them dramatically easier to find and remove” - Martin Fowler @martinfowler

Slide 40

Slide 40 text

Tener un ambiente de trabajo con Continous Integration que ejecute las pruebas de Espresso vale cada segundo de la inversión de tiempo inicial. “Having a working CI environment that runs Espresso tests is worth every second of upfront time investment. Hands down. #AndroidDev” - Donn Felker @donnfelker

Slide 41

Slide 41 text

Material Adicional 41 Flank: Smart Test Runner for Firebase https:/ /medium.com/walmartlabs/flank-smart-test-runner-for-firebase-cf65e1b1eca7 FTL for Android reduced American Express app test costs by 50% https:/ /firebase.google.com/downloads/Firebase_American_Express_Case_Study.pdf

Slide 42

Slide 42 text

!Muchas Gracias!