yoza aprilio - we must design

28
We (Must) Design @ TDD Adrianus Yoza Aprilio | CIO – Dicoding Indonesia ID Android Techtalk – Malang, April 2016

Upload: dicoding

Post on 11-Jan-2017

745 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Yoza Aprilio - We must design

We (Must) Design @ TDDAdrianus Yoza Aprilio | CIO – Dicoding IndonesiaID Android Techtalk – Malang, April 2016

Page 2: Yoza Aprilio - We must design

Coding Behavior• Outline• Tech Spec• Requirements• Business Process• Scenario• Best/Worst case(s)• Code• Test• Repeat

Page 3: Yoza Aprilio - We must design

Ngoding-in-Reality• Outline• Tech Spec• Requirements Coding• Business Process Coding• Scenario Coding• Best/Worst case(s)Bug• Code Bug, and more bug• Test Bug, and much more bug• Repeat MUTUNG

Page 4: Yoza Aprilio - We must design

What’s Wrong

Page 5: Yoza Aprilio - We must design

MINDSET, MINDSET, MINDSET• Architecture is King, Scenarios are Kong!

• Act Locally, Think Globally

• Create a Testable Code

• Do Testable Hacks / Patch

• Never commit code before test commits.

Page 6: Yoza Aprilio - We must design

MINDSET, MINDSET, MINDSET

!! NEVER CREATE CODE-ORIENTED TEST !!

Page 7: Yoza Aprilio - We must design

No matter what you are writing; … you have to

DESIGN.(Uncle Bob Martin)

Page 8: Yoza Aprilio - We must design

Design, Y U No?

TDD can't even be begun until we know the shape of the system that is to be created.

Architect/Scenario/case First, Test Second, CODE LAST

Page 9: Yoza Aprilio - We must design

1.Business impact2.Mockup3.Correct Implementation4.Maintainable Code

Page 10: Yoza Aprilio - We must design

Menggali skenario/skema•Saya ingin [komponen A] dapat melakukan [x]•Saya TIDAK INGIN pada [komponen B] terjadi [y]

•Ketika user melakukan [aktivitas C], pastikan [z] bernilai [W]•Berikan batasan ketika sistem melakukan [aktivitas D]

•Tipe data yang bisa diterima oleh [komponen E]•Tipe data yang dihasilkan oleh [komponen F] atau [aktivitas G]

•Apa yang diasosiasikan [entitas H] tentang [proses bisnis I] •Skema UI/UX

Page 11: Yoza Aprilio - We must design

Contoh

Business case:Saya ingin membuat aplikasi menambahkan dua angka.

taken from Modul1 - Belajar Membuat Aplikasi Android dengan Android Studio Bagian I

https://www.dicoding.com/academies/2

Hasil

Page 12: Yoza Aprilio - We must design

Menggali skenario/skema dari contoh•Define “tambah”•Define tipe data (integer, float)•Apakah yang terjadi ketika user klik hitung

•Ketika kedua field kosong•Ketika kedua field terisi tidak sesuai tipe data yang diharapkan•Ketika salah satu saja terisi sesuai dengan harapan•Ketika keduanya terisi sesuai dengan ekspektasi (mis. integer)•Apakah yang terjadi ketika user mengisikan string?

•Contoh nama deskriptif: ketika_user_mengklik_button_lakukan_tambah()

when_button_clicked_but_empty_field_then_except()

Page 13: Yoza Aprilio - We must design

Mengantisipasi (negasi)•Exception

•Validation

•Message Box

•Vibrate

•Back to Previous Menu

•Close

Page 14: Yoza Aprilio - We must design

Contoh Pengujian•Buka Aplikasi, langsung klik tombol

•Buka Aplikasi, klik field, apakah yang muncul adalah keyboard numerik atau alpha-numeric?

•Buka Aplikasi, isi 1 field, klik tombol

•Buka Aplikasi, isi 2 field dengan titik (dot), klik tombol

•Test aplikasi dengan asumsi skema sebenarnya

Page 15: Yoza Aprilio - We must design

Android TDD• Unit Testing (jUnit/ espresso)

• Functional/Integration Testing (Appium / Robotium)

• User Acceptance Testing (Nasi Pecel)

http://bit.ly/androidTDD

Page 16: Yoza Aprilio - We must design

http://bit.ly/espressoDocs

Page 17: Yoza Aprilio - We must design

Dicoding menerapkan TDD dalam:•Platform Development

•UI/UX

•Academy Submission Testing / Feedback

•Challenge App Testing / Feedback

Page 18: Yoza Aprilio - We must design

DECODE IDEAS DISCOVER POTENTIAL

Page 19: Yoza Aprilio - We must design
Page 20: Yoza Aprilio - We must design
Page 21: Yoza Aprilio - We must design

Our Developer Journey

events

academy

challenge

partners

public challenge

private challenge

getjobs

entrepreneur

upgrading skill api & sdk adoption

getideas

get support startup

Page 22: Yoza Aprilio - We must design
Page 23: Yoza Aprilio - We must design
Page 24: Yoza Aprilio - We must design

Memberikan tuntunan belajar teknologi terbaru yang mudah dan disesuaikan dengan kurikulum globalDibuat dan diverifikasi oleh para ahli tersertifikasi, kode/tugas diperiksa oleh ahli dan diberikan umpan balikKurikulum menggunakan pendekatan terbaik dan berbasis praktek

DICODING

ACADEMY

PLATFORM

3.100+ StudentsMaret 2016

CASE STUDY

App Academy1.350+ students

Android NDK Academy

400+ apps powered by NDK

4.100 CODE SUBMISSION

Page 25: Yoza Aprilio - We must design
Page 26: Yoza Aprilio - We must design
Page 27: Yoza Aprilio - We must design
Page 28: Yoza Aprilio - We must design

Adrianus Yoza Aprilio [email protected] | +62 857 3160 3055

www.dicoding.com

Contacts

28

facebook.com/dicodingDicoding Indonesia

@dicoding

https://plus.google.com/112297462024647355499 Dicoding Indonesia