yoza aprilio - we must design
TRANSCRIPT
We (Must) Design @ TDDAdrianus Yoza Aprilio | CIO – Dicoding IndonesiaID Android Techtalk – Malang, April 2016
Coding Behavior• Outline• Tech Spec• Requirements• Business Process• Scenario• Best/Worst case(s)• Code• Test• Repeat
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
What’s Wrong
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.
MINDSET, MINDSET, MINDSET
!! NEVER CREATE CODE-ORIENTED TEST !!
No matter what you are writing; … you have to
DESIGN.(Uncle Bob Martin)
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
1.Business impact2.Mockup3.Correct Implementation4.Maintainable Code
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
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
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()
Mengantisipasi (negasi)•Exception
•Validation
•Message Box
•Vibrate
•Back to Previous Menu
•Close
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
Android TDD• Unit Testing (jUnit/ espresso)
• Functional/Integration Testing (Appium / Robotium)
• User Acceptance Testing (Nasi Pecel)
http://bit.ly/androidTDD
http://bit.ly/espressoDocs
Dicoding menerapkan TDD dalam:•Platform Development
•UI/UX
•Academy Submission Testing / Feedback
•Challenge App Testing / Feedback
DECODE IDEAS DISCOVER POTENTIAL
Our Developer Journey
events
academy
challenge
partners
public challenge
private challenge
getjobs
entrepreneur
upgrading skill api & sdk adoption
getideas
get support startup
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
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