EP 11

Ngobrolin Testing - Ngobrolin WEB Ep12

Bagikan:

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Transkrip Bantu Koreksi

0:14Hai hai hai, kita tunggu lagi.

0:18Semuanya.

0:20Selamat Hari Selasa.

0:22Selamat Hari Selasa, hari selasa adalah waktunya?

0:24Waktunya ngobrolin web.

0:26Ngobrolin web. Masih bareng kita bertiga bersama saya Riza.

0:30Ada Ivan dan ada Eka juga.

0:32Dari GDE untuk teknologi web Indonesia.

0:36Web Indonesia.

0:38Gimana kabarnya teman-teman?

0:40Kita masih butuh GDE web selanjutnya.

0:42Kita masih butuh GDE web.

0:44Ada, ada apa?

0:46Ada ini, ada apa?

0:48Bocoran-bocoran dari Mas Denang kemarin.

0:50Tapi kita nanti bicara kan di belakang layar saja.

0:52Malah bikin penasaran yang lain.

0:58Siapa tahu tahun depan ada empat kolom di sini?

1:01Amin, mudah-mudahan.

1:03Bakal ada empat, lima dan seterusnya.

1:05Ada Dita yang baru ketemu.

1:08Terakhir hari...

1:10Semarang.

1:12Ini, Pak Makasar.

1:14Hari ini masih ketemu kita.

1:16Diajak makan-makan, tempatnya kemana-mana ya.

1:18Contoh Makasar.

1:20Ini apa nih?

1:22Kotak-kotak ini.

1:24Unicode.

Lihat transkrip lengkap

1:26Kapan-kapan kita bahas karakter Unicode?

1:28Detail kali ya.

1:30Mungkin di sini, dia pasang Unicode.

1:34Jadi nggak bisa muncul tuh.

1:37Pons, kita bahas Pons di tahun lalu.

1:40Ini yang lalu kan?

1:42Makasar kemarin Defece-nya mantap.

1:44Keren banget.

1:46Sampai over kapasitas ya.

1:48Tapi keren lah, mantap sekali.

1:50Tepok juga mantap.

1:52Selamat buat teman-teman GDG.

1:54Yang mengadakan Defece.

1:56Sukses ya.

1:58Sudah selesai semua ya Indonesia.

2:00Kalian talk.

2:02Terakhir Makasar, Depok, Bandung, dan teman-temannya.

2:06Minggu lalu.

2:08Dan malam hari ini kita akan...

2:10Menyapa-nyapa dulu.

2:12Ada Septian, ada Dito.

2:14Ada Thams.

2:16Ada siapa nih?

2:18Saiful Rahman. Halo-halo.

2:20Dan seperti yang ada di judul.

2:22Kita akan membahas tentang...

2:24Testing.

2:26Testing ini adalah...

2:28Salah satu, dua, tiga.

2:30Bahasa Indonesia apa ya?

2:32Pengujian ya, pengujian.

2:34Gatau apa ya resminya? Betul gitu.

2:36Pengujian.

2:38Cacok kan?

2:40Cuman agak masih asing ya.

2:42Test runner apa dong?

2:44Ujian sambil lari.

2:46Pengujian.

2:48Salah, test runner itu pengujian.

2:50Boleh, boleh, boleh.

2:52Ada...

2:54Topik tentang testing ini adalah...

2:56Topik yang sangat wise ya.

2:58Seperti...

3:00Mas Dana waktu...

3:02Saya mau ke Makasar...

3:04Dia bilang pesannya adalah...

3:06Eating wisely.

3:08Berlebihan.

3:10Karena berbahaya.

3:12Dan ada Dina juga...

3:16Ada Power Ranger.

3:18Power Ranger. Ini Ranger apa?

3:20Ranger Merah.

3:22Dari ikonnya Ranger Merah. Jason ya?

3:24Jason.

3:26Jason Srinivai.

3:28Nama panjangnya.

3:30Oke, oke.

3:32Testing.

3:34Ini kita ngelantar ke mana-mana ya.

3:36Testing.

3:38Apa itu testing?

3:40Siapa yang bisa menjelaskan tentang testing?

3:42Testing. Testing itu kan kita...

3:46Kode kita banyak ya.

3:48Nah, terus kita punya...

3:50Kita nggak tahu nih...

3:52Bakal selalu berjalan dengan baik atau nggak.

3:54Terutama nanti kalau udah diubah...

3:56Berkali-kali.

3:58Atau mungkin digunakan di komponen...

4:00Atau fungsi atau modul yang berbeda.

4:02Nah, jadi intinya nggak tahu ini...

4:04Definisi lebihnya atau nggak.

4:06Saya coba.

4:08Punya ekspetasi.

4:10Terus kita matching dengan...

4:12Hasilnya cocok nggak? Sesuai nggak dengan...

4:14Atau ekspetasi kita.

4:16Itu harus selalu sesuai.

4:18Kalau tambahan dari saya...

4:20Kivan, gimana?

4:22Testing itu bagian dari kualitas...

4:24Assurance.

4:26Assurance itu artinya memastikan.

4:28QA.

4:30Bagaimana memastikan kalau kode kita itu...

4:32Sorry, kalau aplikasi kita itu...

4:34Tetap berjalan...

4:36Sesuai dengan...

4:38Requirement.

4:40Harapan.

4:42Harapan dan sesuai dengan...

4:44Yang diplankan, yang dicitakan.

4:46Jadi...

4:48Kalau inputnya A...

4:50Dan diharapkan...

4:52Diharapkan hasilnya B...

4:54Harus...

4:56Inputnya A tetap B.

4:58Jadi jangan di input A jadi C.

5:00Jadi memastikan itu.

5:02Mungkin kelihatannya sepele.

5:04Keliatannya sepele.

5:06Misalnya kalau kita bikin fungsi...

5:08Jumlah.

5:10A tambah B menjadi C.

5:12Keliatannya sepele.

5:14Tapi kalau misalnya kita sudah...

5:16Memikirkan scale.

5:18Skalabilitas.

5:20Kode kita terus bertambah.

5:22Apalagi kalau kita manage...

5:24Open source...

5:26Manage project...

5:28Open source atau project enterprise.

5:30Atau project...

5:32Skala kecil tapi dipakai...

5:34Jutaan aplikasi.

5:36Jutaan aplikasi.

5:38Bayangkan kalau kita...

5:40Kesalahan sedikit...

5:42Mengubah kodanya...

5:44Jutaan aplikasi bisa rusak.

5:46Makanya butuh quality assurance.

5:48Dan karena kita...

5:50Developnya secara kontinu, tentu kita...

5:52Masa kita ngelakukannya...

5:54Capek juga ya...

5:56Ngetes satu-satu.

5:58Mau deploy atau memperbarui...

6:00Aplikasi kita, kita harus cek satu-satu.

6:02Bayangkan kalau...

6:04Kalau aplikasi itu besar...

6:06Kita harus cek satu-satu semua.

6:08Jadi...

6:10Butuh namanya...

6:12Testing.

6:14Bagi naik quality assurance.

6:16Juga ada yang disebut dengan TDD.

6:18Test Driven Development.

6:20Dimana kalau kita...

6:22Mau nondevelop sesuatu...

6:24Buat dulu testnya.

6:26Buat dulu scenario-nya.

6:28Jadi dari tiket...

6:30Scenario-nya apa?

6:32Apa yang diharapkan?

6:34Pastinya baru buat kodenya.

6:36Kalau saya dulu, sukanya...

6:38BDD, Bug Driven Development.

6:42Asal ada bug, perbaiki.

6:44Asal ada bug, perbaiki.

6:46Ada bug, perbaiki.

6:48Ya.

6:50Ngomongin tentang bugs, juga kadang-kadang...

6:52Ya, kita kan nggak bisa...

6:54Selalu dalam kondisi ideal.

6:56Misalkan katakanlah, "Wah, dikejar deadline..."

6:58"Kita harus bikin aplikasi tapi tanpa tes."

7:00Awalnya gitu kan.

7:02Tiba-tiba begitu di tes...

7:04"Eh, ternyata ada bugs."

7:06Untuk memastikan bugs ini tidak muncul lagi...

7:08Kita bisa bikin tes dari situ.

7:10"Oh, pastiin ini tidak akan muncul."

7:12Jadi ketika nanti kita perbaiki...

7:14Terus ada bugs kedua...

7:16Kadang-kadang kan sering jadian ya...

7:18Bugs pertama muncul, kita perbaiki.

7:20Bugs yang pertama...

7:22Balik lagi.

7:24Jadi salah satu fungsinya tes adalah...

7:26Untuk memastikan bahwa...

7:28Bugs pertama itu akan tetap di...

7:30Tetap dihandle.

7:32Tidak muncul lagi.

7:34Kalau pun ada error, dia akan ketahuan.

7:36Dan artinya...

7:38Implementasi untuk menyelesaikan bugs kedua...

7:40Ada yang keliru.

7:42Karena bugs pertamanya jadi muncul lagi.

7:44Berarti itu kombinasi ya...

7:46BDD dan TDD.

7:48Back-driven dan test-driven.

7:50Ada satu hal yang saya dapatkan dari Mas Deta.

7:52Waktu di DevFest Depok kemarin...

7:54Dia bercerita tentang testing.

7:58Bagaimana testing itu...

8:00Bisa memperbaiki konsep desain sistemnya...

8:02Aplikasi kita.

8:04Jadi uniknya di situ.

8:06Gimana-gimana?

8:08Itu Mas Riza dah balik.

8:12Saya ulang sedikit biar Mas Riza bisa nanti.

8:14Jadi waktu itu Mas...

8:16Oke, bentar.

8:18Mistake-nya habis kali.

8:20Baterai habis.

8:22Belum dicolok.

8:24Cek, cek, cek.

8:26Sudah.

8:28Jadi ada satu hal yang saya pelajari dari Mas Deta.

8:36Waktu di DevFest Depok kemarin itu...

8:40Bagaimana testing itu bisa...

8:42Memperbaiki konsep desain sistemnya kita.

8:48Dengan melakukan tes.

8:50Jadi contohnya...

8:52Kalau misalnya sebuah tampilan...

8:54Hanya tampilan Dasbo.

8:56Dengan tesnya kita.

8:58Kalau tesnya kebanyakan...

9:00Artinya desain sistem kita itu...

9:02Ada yang salah.

9:04Ada yang kurang benar.

9:06Karena tesnya jadi kebanyakan.

9:08Jadi bagian...

9:10Responsibility dari UI elemen kita...

9:12Terlalu banyak.

9:14Akhirnya harus dipecah-pecah.

9:16Mana yang controller.

9:18Mana yang...

9:20Apa yang disebutnya?

9:22Satu controller, satu lagi apa?

9:24-Model. -Model misalnya.

9:26Controller dan model.

9:28Jadi mana yang hanya ngurus data, mana yang ngurus...

9:30Bagian input-outputnya.

9:32-Pesentasi. -Pesentasinya.

9:34Jadi kalau dipisah...

9:36Sehingga...

9:38Testnya itu bisa lebih...

9:40Lebih spesifik terhadap...

9:42Terhadap elemen tertentu.

9:44Dan...

9:46Hasilnya desain sistemnya kita jadi lebih baik.

9:48Sehingga kalau nge-debug...

9:50Itu bisa langsung tepat...

9:52Tepat...

9:54Tepat sasaran.

9:56Dan juga testing scenario-nya...

9:58Itu jadi lebih cepat karena...

10:00Scope-nya lebih kecil.

10:02Seperti itu.

10:04Jadi kalau markup, ya fokus di markup.

10:06Terus kalau misalnya ada logic-nya kayak...

10:08Reusable function kayak buat...

10:10Memproses string, number gitu...

10:12Kalkulasi itu dipisah ya.

10:14Di unit testing sendiri.

10:16Makanya ada unit testing, terus kemudian naik...

10:18Integration testing.

10:20Naik lagi end-to-end testing.

10:22Ada...

10:24Kalau saya sukanya... -Accept end testing.

10:26Assertance testing.

10:28Visual regression testing.

10:30Ada lagi performance testing.

10:32Isinya testing semua.

10:36Kodanya dikit.

10:38Ngomongin soal tadi ya...

10:40Tididi ya, test development ini kan...

10:42Sesuatu yang...

10:44Kadang kalau baru mulai agak...

10:46Sulit ya, karena testing aja...

10:48Baru, terus tiba-tiba kita harus...

10:50Nulis testing duluan nggak kebayang gitu kan.

10:52Tapi di luar itu...

10:54Mau testing duluan...

10:56Atau testing belakangan...

10:58Intinya adalah yang penting harus ada testing.

11:00Dan benar sekali tadi...

11:02Yang disampaikan Ivan bahwa...

11:04Ketika kita menulis testing, itu sebenarnya...

11:06Kita sedang mendesain.

11:08Mendesain aplikasi kita atau mendesain...

11:10API untuk aplikasi kita.

11:12Di sini ada artikel yang menarik nih.

11:14Tentang... Dia sih bahasannya tentang TDD ya.

11:16Tapi ini berlaku juga untuk testing.

11:18Jadi testing itu bisa...

11:20Memaksa kita untuk berpikir.

11:22Secara jernih.

11:24Apa yang ingin kita capai.

11:26Bahkan...

11:28Nggak jarang kalau saya bikin...

11:30Aplikasi terus...

11:32Ada testingnya duluan gitu ya.

11:34Atau TDD gitu ya.

11:36Itu jadi kayak tuduh, kayak tuduh tulis.

11:38Pertama, saya pengen halaman ini...

11:40Ada...

11:42Titlenya ada headernya.

11:44Kemudian ada descriptionnya.

11:46Kemudian ada formnya, formnya isinya...

11:48Ada username, ada password, ada login form dan lain-lain.

11:50Itu kayak...

11:52Tuduh aja gitu, tuduh tulis.

11:54Jadi itu...

11:56Menjadi kerangka berpikir aja sebenarnya ya.

11:58Testing itu bukan hanya sekedar untuk...

12:00Ngecek apakah aplikasi kita jalan...

12:02Oke atau enggak.

12:04Tapi lebih ke bagaimana cara kita berpikir.

12:06Dan ke depannya itu...

12:08Bisa jadi dokumentasi ya.

12:10Sama-sama, itu sebelum kita bikin...

12:12Itu tuduh.

12:14Setelah kita bikin, 6 bulan kemudian kita...

12:16Udah ngerjain hal yang lain, kita pasti lupa.

12:18Kemungkinan besar kita lupa.

12:20Atau teman kerja kita belum tahu.

12:22Itu kan bisa kayak...

12:24Nerjemahin kodingan yang tadinya...

12:26Nggak tahu maksudnya apa.

12:28Tapi ini ada bisnis goalnya kan.

12:30Maksudnya minimal ada...

12:32Picking header atau ini harus menyumbahkan.

12:34Blablabla. Jadi tuduh dan nantinya...

12:36Sebagai dokumentasi ya.

12:38Oh iya. Nggak jarang kadang-kadang...

12:40Kalau misalkan kita lihat...

12:42Atau apa, saya lihat di...

12:44Sebuah repo gitu kan.

12:46Ini gimana cara pakai library-nya ya.

12:48Lihat di readme mungkin kurang lengkap gitu kan.

12:50Tapi ada folder test nih.

12:52Kita lihat aja di situ.

12:54Bagaimana cara penggunaan itu juga salah satu...

12:56Point yang bagus sekali ya.

12:58Jadi test itu selain sebagai...

13:00Kerangkap berpikir.

13:02Kemudian sebagai...

13:04Pengujian untuk aplikasi kita.

13:06Dan juga sebagai dokumentasi.

13:08Di sini...

13:10Benefit kedua menurut...

13:12Si JR Sinclair ini.

13:14Adalah...

13:16Kalau kita nge-debug, itu lebih mudah.

13:18Karena kita bisa tahu bahwa...

13:20Kalau kita nge-debug sesuatu...

13:22Eh, testingnya error nih. Oh berarti ini masih salah.

13:24Dan seterusnya.

13:26Dan yang ketiga ini...

13:28Objektif, subjektif ya.

13:30Apakah lebih...

13:32Menyenangkan? Bisa jadi.

13:34Kita bikin testing duluan, kita lihat merah gitu kan.

13:36Begitu jadi hijau kan seneng gitu kan.

13:38Jadi ada achievement gitu kan.

13:40Kebahagiaan tersendiri gitu.

13:42Jadi ya...

13:44Lumayan... Jadi kayak apa ya?

13:46Kayak gamification jadinya juga ya.

13:48Betul.

13:50Kamu di TDD ini, saya ada...

13:52Sering menemukan...

13:54Pendapat yang anti-pattern untuk TDD.

13:56Itu...

13:58Pertama, nulis sebuah...

14:00Bahasanya...

14:02Flow dari...

14:04Dari...

14:06Pengerjaannya lebih lama.

14:08Karena harus nulis test, harus nulis code.

14:10Kedua...

14:12Ya elah...

14:14Kodenya yang dirubah sedikit, nunggu testnya lama banget.

14:16Gitu kan.

14:18Oh, test running-nya lama ya?

14:20Karena sudah terlalu besar.

14:22Test runner-nya, misalnya...

14:24Let's say...

14:26Mungkin kalian develop...

14:28Chromium browser, maybe ya.

14:30Coba aja menjalani test Chromium browser.

14:32Kalau bisa di komputer kalian, gitu kan.

14:34Jadi...

14:36Yang dirubah cuma satu line.

14:38Kita tahu satu line itu gak bakalan...

14:40Bikin rusak, gitu kan.

14:42Tapi...

14:44Menjalani testnya itu harus 6 jam.

14:46Misalnya...

14:48Tiba-ibas.

14:50Nah, itu kan ibaratnya...

14:52Sebuah...

14:54Pendapat yang anti-pattern. Ada yang kayak...

14:56Ya udahlah, develop aja cepat.

14:58Kalau ada bug, nanti diperbaiki, gitu kan.

15:00Ada juga yang anti-pattern seperti itu.

15:02Gimana nih, menurut...

15:04Mas dan mbak-mbak.

15:06Cuma realistis sih ya.

15:10Emang... Apa?

15:12Terutama kalau yang freelance...

15:14Lombok dong, kalau ngabisin...

15:16Waktu banyak buat ngetest.

15:18Karena kalau misalnya... Apa?

15:20Nulis test, kalau jumlah jamnya...

15:22Dicharge ke klien...

15:24Mungkin ada kompetitor...

15:26Yang nggak pake testing.

15:28Cuma kalau klien...

15:30Bukan coder, bukan programmer, kan...

15:32Nggak bisa expect untuk apresiate...

15:34Hal-hal yang tadi semua kita bilang kan.

15:36Karena sulit jualan...

15:38Kalau kita bilang...

15:40Jualan dengan harga sekian...

15:42Karena kita ada testnya, loh.

15:44Jadi lebih lama, atau jadi lebih mahal, gitu ya.

15:46Padahal toko sebelah...

15:48Tanpa testing.

15:50Kualitasnya dianggap sama, bisa lebih cepat.

15:52Cuma itu... Mungkin...

15:54Nah, jujur...

15:56Sejak aku jadi... Apa?

15:58Developer full-time, nggak...

16:00Belum pernah freelance yang charge by the hour sih.

16:02Jadi, belum pernah ngerasain...

16:04Dilema yang kayak gitu. Cuma kalau...

16:06Yang dipraktekin sekarang, mah...

16:08Ya... Apa ya? Nah, go kompromi sih.

16:10Jadi kan...

16:12Ada filsafatnya juga kan, tuh. Apa?

16:14Testing, terutama yang sering dipost oleh...

16:16Can see dots, kan.

16:18Gak usah banyak-banyak.

16:20Tapi integration testnya lebih banyak.

16:22Jadi ini kan sebetulnya kayak...

16:24Pick your battle. Jadi...

16:26Gak harus semua hal yang kecil-kecil banget...

16:28Kita tulis unit testnya...

16:30Satu persatu. Kalau memang...

16:32Terutama kalau ada...

16:34Itu waktu.

16:36Atau satu flow. Misalnya...

16:38Bisa login. Ya kan?

16:40Itu satu flow, kan. Bisa masukin email.

16:42Password. Pencet button login.

16:44Apa yang terjadi. Ya, kayak...

16:46Itu... Gimanapun ya...

16:48Ya, nulis itu kan tetap makan waktu dan...

16:50Tenaga ya. Jadi itu gimana kita...

16:52Kompromi aja sih.

16:54Sulit di judge one size fits all.

16:56Oke.

16:58Sebelum saya menjawab...

17:00Ini ada pertanyaan bagus.

17:02Testing website itu key A ya?

17:04Divisinya sebutannya key A.

17:06Sebenarnya gini...

17:08Ada sedikit pergeseran ya.

17:10Kalau dulu kan divisinya berbeda ya.

17:12Yang benar-benar yang testing ya...

17:14Memang divisi QA gitu kan.

17:16Software quality assurance.

17:18Atau semacamnya.

17:20Tapi semakin kesini...

17:22Untuk automatic testing, terutama yang...

17:24Kayak unit test, integration test.

17:26Atau end-to-end testing.

17:28Itu sudah...

17:30Secara tidak langsung masuk ke rolnya...

17:32Developer sekarang. Masing-masing developer.

17:34Developer itu sekarang udah...

17:36Nambah tugasnya. Selain harus bikin...

17:38Implementasi code, juga harus...

17:40Bisa testing. Testingnya...

17:42Tidak sekomprehensif...

17:44Testing team QA ya. Kalau QA kan...

17:46Tulisnya beda lagi ya. Ada Katalon Studio...

17:48Katalon biasanya.

17:50Yang drag and drop. Terus dia bisa ngecek...

17:52Apakah skenario-nya lebih lengkap...

17:54Daripada yang kita tulis.

17:56Jadi agak sedikit berbeda.

17:58Dan itu juga sebenarnya...

18:00Mau wakili end-to-end kan ya? Apa?

18:02Firefox playwright.

18:04Di Firefox kan ada yang drag and drop juga...

18:06Jaman dulu itu dia membuat automation.

18:08Selenium?

18:10Bukan.

18:12Bukan.

18:14Ya mungkin...

18:16Mungkin untuk apa ya...

18:18Untuk perusahaan-perusahaan yang sudah besar...

18:20Pasti ada team QA-nya sendiri.

18:22Ya jadi satu team.

18:24Tapi...

18:26Kalau developer sekarang sih kayaknya...

18:28Harus ya. Harus bisa testing ya.

18:30Itu.

18:32Minimal...

18:34Minimal misalnya ada orang QA yang...

18:36Menjalankan end-to-end dengan...

18:38Canggih banget ada suite... Apa?

18:40Test suite-nya sendiri. Nah kita...

18:42Di sisi lain kita bikin unit testing...

18:44Sedikit aja memastikan misalnya...

18:46Komponennya terload dengan benar.

18:48Udah gitu. Apa?

18:50Paling minimal mulai dari situ. Ya nanti kalau ada...

18:52Waktu dan tenaga lebih bisa dikembangin.

18:54Funksinya jalan.

18:56Atau komponennya terload.

18:58Dirender dengan normal.

19:00Ya.

19:02Jadi si... Apa? Si division QA ini...

19:04Akan...

19:06Mencoba aplikasi kita dari sisi...

19:08Dari sudut pandang user.

19:10Ya.

19:12Kalau kita ya dari sudut pandang kita.

19:14Developer. Untuk... Ya itu tadi apa?

19:16Kerangka berfikir aja.

19:18Jadi di ibaratkan sebagai...

19:20Kerangka berfikir.

19:22Ada... Ada pernyataan...

19:24Ada satu dari Mas Deta...

19:26Waktu di presentasinya itu.

19:28Testing itu adalah user pertama kita.

19:30Nah.

19:32Jadi user pertama kita itu adalah...

19:34Testing. -Test runner-nya?

19:36Iya. -Kode testing-nya?

19:38Iya, iya, iya.

19:40Ya, kalau menjawab yang tadi ya.

19:42Jadi...

19:44Memang kerjaan kita nambah ya.

19:46Kita harus bikin testing.

19:48Harus bikin implementasinya.

19:50Kalau nanti ada perubahan.

19:52Kita harus ubah lagi testingnya.

19:54Jadi kan kode testing kita kan

19:56di otomasi dengan kode kan.

19:58Kode-nya ini kan juga harus dimaintain kan.

20:00Ditambahkan atau dikurangin.

20:02Yang biasanya sih bertambah ya.

20:04Bertambah terus seiring dengan...

20:06Apa, skenario-skenario yang bertambah gitu.

20:08Jadi memang...

20:10Pekerjaan yang...

20:12Menambah pekerjaan lah intinya.

20:14Cuman...

20:16Saya...

20:18Gak tahu ya temen-temen ya.

20:20Kalau saya sudah mengalami dan saya percaya bahwa

20:22testing akan menyelamatkan kita.

20:24Daripada misalkan gini.

20:26Projeknya 3 bulan.

20:28Terus gara-gara bug fixing jadi 6 bulan.

20:30Akan lebih baik, kita udah planning dari awal 6 bulan.

20:32Berserta tes gitu.

20:34Jadi tidak stres daripada fixing bugs.

20:36Fixing bugs itu...

20:38Lebih makan waktu.

20:40Melelahkan sekali secara mental.

20:42Saya mau berbagi pengalaman.

20:44Nyata.

20:46Jadi sebuah projek.

20:48Kita jalankan, kita perbaiki.

20:50Di situ saya enterprise sudah banyak.

20:52Banyak banget bagian-bagiannya.

20:54Kita perbaiki.

20:56Ini bagian visual aja ya.

20:58Gak usah sampai unit-unit testing.

21:00Atau feature-feature.

21:02Tapi hanya visualnya aja, CSS bahasanya.

21:04Kita perbaiki CSS.

21:06Kita perbaiki karena ada masalah

21:08viewport.

21:10Di viewport tertentu masalah atau di browser tertentu masalah.

21:12Kita perbaiki.

21:14Udah di tes live.

21:16Tetapi suatu saat, balik lagi, kenapa?

21:18Karena di bagian lain ternyata

21:20pakai komponen yang sama tetapi malah

21:22jadi overlap.

21:24Dan itu tidak ketahuan.

21:26Tidak ketahuan waktu di tes.

21:28Oleh manusia.

21:30Karena manusianya

21:32nggak ngecek ke bagian lain.

21:34Karena kita tahu

21:36ini page yang masalah,

21:38ini page yang kita perbaiki.

21:40Tetapi page yang lain tidak di tes.

21:42Kliennya jadi marah.

21:44Kenapa setiap kali ada

21:46kenapa urusan visual

21:48ini nggak beres-beres sih?

21:50Akhirnya jadi makan hati.

21:52Jadi kayak

21:54vicious cycle.

21:56Karena kita nggak punya

21:58kita nggak punya

22:00kerangka testing waktu itu.

22:02Ya itu yang

22:04lebih berbahaya kan. Maksudnya

22:06capek, capek

22:08di mental gitu kan.

22:10Yang membuat moral tim

22:12turun yang akibatnya bisa

22:14panjang tuh. Bisa resign,

22:16bisa apa, macem-macem.

22:18Karena kerjaannya jadi itu-itu aja.

22:20Iya, kerjaannya jadi membosankan

22:22dan melelahkan.

22:24Jadi akan lebih baik kalau

22:26ya udah, mendingan

22:28kerjaannya banyak nggak apa-apa, tapi

22:30lumayan menyenangkan gitu kan. Maksudnya

22:32nggak bolak-balik

22:34mengerjakan hal yang sama berulang-ulang.

22:36Itu sih kalau

22:38dari sekarang.

22:40- Menarik.

22:42- Terus kita bahas apa lagi nih?

22:44Tadi sempat dibahas sedikit

22:46tentang ini ya. - Genis-genis tes kali ya?

22:48- Genis-genis tes ya. - Genis-genis tes kali.

22:50Belum. - Bentar-bentar, sebelum.

22:52Ini dia. - Nah.

22:54- Kopilah dunia.

22:56- Bentuknya, bentuknya kayak piala.

22:58- Oh, bentuknya.

23:00- Nah, itu.

23:02Ya, ini opini juga sebetulnya sih.

23:04Cuma ini rekomendasi yang

23:06bagus sih.

23:08Jadi paling bawah tuh dasarnya

23:10itu bahkan nggak

23:12bukan exactly automatic

23:14testing ya, cuma static analysis.

23:16Itu kita pakai TypeScript,

23:18jadi sebelum dijalankan pun kita udah

23:20mencegah bug-bug yang

23:22udah bisa dideteksi, kayak misalnya

23:24salah jenis harusnya number

23:26jadi string, salah ketik,

23:28field-nya ilang, nama field-nya berubah.

23:30Itu kan hal-hal yang, ya udah kita

23:32nggak usah buang waktu ngejalanin apa-apa

23:34kalau itu bisa ditangkepkan.

23:36Nah, terus unit testing itu tadi yang perbagian-bagian

23:38entah itu fungsi

23:40kayak reusable function,

23:42permetodnya ditest sendiri,

23:44yang tadi dibahas Ivan itu

23:46perkomponen atau markup dibahas sendiri.

23:48Nah, integration itu

23:50satu section lah, gabungan dari

23:52beberapa, misalnya dalam satu

23:54komponen kan ada markup-nya,

23:56ada styling-nya,

23:58ada function-nya,

24:00ada logic-nya yang pure function, nah terakhir

24:02end-to-end tuh, yang dari awal sampai akhir

24:04serangkaian dari perspektif

24:06user, misalnya user mau sign up,

24:08user mau create post, dan

24:10lain-lain. Nah, ini

24:12bentuknya itu yang

24:14direkomendasikan kalau

24:16menurut perspektif

24:18can see dots ini sebagai

24:20full stack web dev itu

24:22terbanyak di integration katanya.

24:24Setuju nggak? Ini kan

24:26tetap opini ya.

24:28Ya, jangan lupakan juga

24:30semakin ke atas

24:32dari static unit

24:34integration end-to-end, itu

24:36semakin berat jalaninnya.

24:38Semakin mendekati user,

24:40tapi kalau dijalankan semakin berat.

24:42Karena ada automated-nya kan, kalau end-to-end kan,

24:44dia seolah-olah membuka browser sendiri,

24:46terus dia click, dia...

24:48Paling mahal lah ya, mahal.

24:50Bukan selalu dalam arti

24:52finansial, tapi mahal tenaga lah, mahal

24:54resource. Ya, jadi resource-nya

24:56lebih banyak, bekerjanya lebih sibuk

24:58lah laptop kita ya.

25:00Kalau static praktik,

25:02unit testing ringan, static

25:04analysis tuh hampir gratis lah ya,

25:06kita sekarang kalau pakai VS code

25:08kan udah include semua.

25:10Bisa langsung disave,

25:12langsung otomatis nge-format,

25:14ngasih tau wording sendiri.

25:16Kalau kita salah, ESLint juga udah

25:18ngasih opsi buat benerin,

25:20ngasih rekomendasi.

25:22Tapi di lain sisi,

25:24kalau end-to-end itu paling mahal, unit test

25:26atau static itu paling murah,

25:28kalau kita nulis unit test,

25:30itu effort-nya paling besar,

25:32karena kita ngetes-nya banyak.

25:34Lebih banyak

25:36daripada yang end-to-end. Kalau end-to-end misalkan

25:38kita ngetes form logic,

25:40form logic ya, click

25:42input yang pertama,

25:44masukin username, click input

25:46yang kedua masukin password, click login,

25:48hasilnya, selamat datang

25:50di dashboard, gitu kan.

25:52Kalau unit test, ya kita harus ngetes

25:54masukin username ini.

25:56Ada inputnya, ada button-nya,

25:58ada function buat nge-check jumlahnya, karakternya

26:00udah betul atau nggak.

26:02Betul, sangat banyak gitu. Jadi, effort-nya

26:04akan sangat besar, tapi di sisi

26:06yang lain kalau dijalankan

26:08ya lebih ringan, itu aja sih. Jadi,

26:10kita harus mencari keseimbangan.

26:12Kalau dari Ken C.Dot kan, dia bilangnya integration testing

26:14yang di tengah-tengah lah ya,

26:16nggak terlalu berat, tapi juga

26:18tidak terlalu banyak effort dari sisi

26:20kitanya sebagai developer.

26:22- Yang paling banyak

26:24saya lakukan memang diintegration sih

26:26sebenarnya. Karena

26:28karena saya taunya itu.

26:30- Dulu aslinya

26:32itu terus

26:34dibikin ulang sama

26:36dulu tweet aslinya dia, itu

26:38artikel ini berasal dari tweet

26:40tadinya dia nge-tweet kayak gitu ya, tentang

26:42ide-nya yang masih mentah.

26:44Terus karena banyak yang respon, dikembangin sebagai

26:46artikel. Terus ada ilustratornya

26:48Ekhet, kalau nggak salah yang bikin

26:50secara lebih

26:52proper, bandingkan bedanya

26:54developer dan ilustrator.

26:56- Ini masih pakai flow ya,

26:58belum typescript ya.

27:00- Tahun berapa itu?

27:022018?

27:04- 2018. - Ya, dulu

27:06masih rebutan.

27:08- Kalau idealisme ya,

27:10mulai dari kodenya sendiri,

27:12sudah

27:14type,

27:16strict type,

27:18ya udah strict.

27:20Terus kemudian

27:22karena strict type-nya, return-nya

27:24pun sudah jelas segala macam, field-nya

27:26sudah jelas, terus naik ke

27:28berarti untuk mendesain unit test-nya

27:30dan scenario-nya dari setiap

27:32functions juga sudah jelas.

27:34Terus naik lagi,

27:36menggabungkan setiap kali

27:38pemanggilan function-function itu

27:40dijadikan sebuah integration.

27:42Disinilah banyak scenario-senario

27:44kan.

27:46scenario, misalnya

27:48it should see blah-blah-blah

27:50it will

27:52get data

27:54like this, shape-nya

27:56shape-nya seperti apa, blah-blah-blah itu sudah

27:58ada di integration.

28:00Terus kemudian jalanin end-to-end

28:02test-nya juga ada scenario kan.

28:04Kalau misalnya login fail, login

28:06success, login

28:08tiga kali harusnya

28:10lihat

28:12contohnya

28:14lihat mesej apakah kamu

28:16lupa password, tunjukin masa

28:18something. Forgot password.

28:20Jadi, kalau

28:22kembali lagi, kalau misalnya kita

28:24sudah bisa desain dari

28:26dari bawah sampai ke atas

28:28untuk sebuah

28:30functionality, tentu kode

28:32kita pun, itu sudah kita

28:34pecah-pecah.

28:36Ya, sudah kita pecah-pecah

28:38sesuai dengan

28:40responsibilty dari setiap bagian.

28:42Itu akhirnya sudah

28:46sebuah desain sistem kan. Sudah sebuah

28:48desain sistem dari yang untuk

28:50kita, asetectur dari

28:52kodenya kita itu.

28:54Itu

29:00untuk

29:02itu akan meningkatkan yang disebut dengan

29:04maintainability.

29:06Kode kita jadi gampang di maintain.

29:08Kode kita jadi

29:10kalau dengan static analysis

29:12kan, kita wajib tuh bikin

29:14bikin

29:16JSdoc atau

29:18dokumen-dokumennya itu kan, sudah harus

29:20bisa diwajib kan.

29:22Jadi, documentability-nya juga

29:24dokumentasinya juga jadi jelas.

29:26Dari testing scenario-nya juga

29:28jadi jelas.

29:30Ingat, kalau dari

29:32biasanya kalau membangun sebuah

29:34fitur tertentu,

29:36gausah produk ya, fitur tertentu aja.

29:38Dari

29:40dari sisi product owner,

29:42itu pun kita harus diberikan scenario yang jelas

29:44kan. Di setiap

29:46tiketnya, bahasanya.

29:48Setiap tiketnya ada aset-tsekaretnya dan

29:50ada scenario. Senarionya

29:52inilah yang kita terjemahkan

29:54menjadi bagian dari

29:56testing dan testing.

29:58Jadi, semua sudah

30:00klop.

30:02Jadi, waktu testing kita jalan, itu sudah

30:04sudah sebisa mungkin mendekati

30:06aset-tsekretariat

30:08dari sebuah fitur.

30:10Memang, kelihatannya jadi

30:14ribet, jadi rumit.

30:16Tetapi, sekali

30:18dijalankan, sekali

30:20diselesaikan,

30:22kita udah

30:24masih, pas udah punya

30:26apa namanya ya?

30:28- Keyakinan. - Keyakinan, kalau itu

30:30kalau di deploy, itu

30:32- Sudah pasti jalan.

30:34- Besar kemungkinan aman,

30:36gitu ya. Besar kemungkinan aman. Gak perlu

30:38ya, ini gimana, nanti di production

30:40bakal kacau gak ini.

30:42- Itu tadi kayaknya ada yang komen deh, jalan kok

30:44di laptop saya. Tadi ada komennya

30:46"Cari, di-highlight aja."

30:48- Rafki, Rafki. Halo, Rafki.

30:50- Iya.

30:52- Ini mah, apa,

30:54ini hashtag untuk Docker ini.

30:56Nggak ya? - Iya.

30:58- Iya, hashtag universal

31:00development. - Iya.

31:02Apalagi kalau kita kerjanya bareng sama

31:04tim ya, lebih dari satu

31:06orang gitu. Ketika

31:08kita misalkan udah mengerjakan sesuatu,

31:10bersetak tesnya,

31:12terus tiba-tiba ada mungkin ada teman kita yang

31:14lain gitu kan, dia ubah-ubah

31:16ternyata

31:18apa yang kita kerjakan, atau

31:20bug fixing yang kita lakukan, tiba-tiba

31:22di-override sama dia secara tidak

31:24sengaja gitu kan.

31:26Kalau tesnya gak ada, itu kan gak ketahuan

31:28kan. Tapi kalau tesnya ada,

31:30begitu dia push, pas mau dia pull

31:32request, "Oh, ini masih error nih

31:34tesnya." Jadi gak bisa, dia harus

31:36perbaiki dulu. - Kalau jaman dulu kan gak ada pull

31:38request, Mas Riza, adanya

31:40FTP, VFTP upload.

31:42- Tidit langsung di FTP-nya

31:46juga bisa ya. - Berarti itu

31:48harus di-zip kan, versi satu, versi

31:50satu, fix satu,

31:52final, final-final

31:54banget gitu kan. - Saya

31:56mau sharing sedikit apa yang saya lakukan

31:58sebagai

32:00waktu itu develop sebuah

32:02plugin di WordPress, dan plugin ini

32:04digunakan, akan

32:06mau di-launching, soon gitu ya.

32:08Dan waktu lagi develop itu,

32:10karena

32:12justifikasinya, karena timeline-nya

32:14sangat optimistik, gak sempat

32:16untuk bikin tes.

32:18Gak sempat, bener-bener gak sempat

32:20karena banyak yang masih banyak

32:22ditudulisnya gitu,

32:24untuk sampai di titik beta, supaya

32:26bisa di-deploy. Alhasil,

32:28saya-nya yang burn out.

32:30Kenapa? Karena

32:32kriteria dari

32:34plugin tersebut, harus bisa

32:36waktu itu ya, beberapa tahun

32:38lalu, harus bisa jalan di PHP

32:405.6. Harus bisa jalan

32:42di PHP 7.1,

32:447.0, 7.1, 7.2.

32:46Harus bisa jalan

32:48di versi WordPress

32:505 sekian, 5 titik sekian,

32:525 titik sekian, 5 titik sekian, 5 titik sekian,

32:54jadi ada minimum version yang harus

32:56dijaga. Alhasil,

32:58coba di permutasikan aja. Berarti saya harus

33:00running test-nya manual,

33:02saya harus install plugin-nya,

33:04checking, checking, checking, di PHP

33:065.6, WordPress-nya

33:08mungkin ada 4 versi,

33:10di PHP 7.0, WordPress-nya 4 versi,

33:12itu jalannya pakai docker memang,

33:14tetapi manual,

33:16manual, benar-benar manual, saya

33:18mengin docker-nya,

33:20install plugin-nya, coba test

33:22klik klik klik, bisa lanjut.

33:24Itu setiap kali mau

33:26release, berarti setiap akhir sprint,

33:28mau dirilis zip-nya

33:30untuk dikasih ke

33:32tim user-nya

33:34bagian sana, untuk

33:36ngetes lagi.

33:38Karena belum punya end-to-end,

33:40dan belum punya fungsional testing,

33:42saya harus lakukan itu semuanya sendiri.

33:44Satu kali melakukan

33:46sebelum kompresi itu

33:48jadi sebuah zip,

33:50saya harus lakukan

33:52test itu 3-4 jam.

33:54Kalau ada satu kali gagal

33:56karena dia fatal error, berarti harus

33:58saya benerin lagi, saya ulang lagi.

34:00Itu semua dari awal lagi.

34:02Jadi sebenarnya,

34:04apa yang saya hemat

34:06waktunya tanpa melakukan testing,

34:08itu sia-sia.

34:10Tapi baik saya awal itu

34:12sudah pikirkan bagaimana end-to-end testingnya.

34:14Yes.

34:16Oke, sebelum kita

34:18ke bagian berikutnya,

34:20ini ada beberapa pertanyaan.

34:22Power Ranger lagi,

34:24saya pernah dapat jawab proyek

34:26kayak testing website aplikasi,

34:28seperti wadah belajar gitu,

34:30kayak misalnya dashboard, dicek

34:32isi-isinya ya,

34:34fitur-fiturnya, apakah itu

34:36yang dinamakan QA?

34:38Maaf banyak yang nanya. Gak apa-apa, kita senang

34:40kalau banyak yang nanya ya.

34:42Itu QA bukan?

34:44Itu QA.

34:46Tapi manual.

34:48Memastikan sebuah

34:50fitur itu jalan apa tidak,

34:52itu namanya QA.

34:54Cuma kan tenaga manusia ya,

34:56yang dipakai sebagai QA,

34:58yaitu punya

35:00beberapa batasan.

35:02Tadi manusia bisa

35:04luput, bisa

35:06gak meriksa bagian tertentu.

35:08Bisa terlalu kompleks juga.

35:10Ya, terus manusia itu buk,

35:14gak didesain untuk hal-hal

35:16repetitif yang

35:18skala besar kan ya.

35:20Manusia dibanding robot,

35:22kelebihannya kita bisa mengkonsep,

35:24kita bisa merancang, cuma kalau untuk

35:26hal-hal yang komputasi yang

35:28skala besar dan repetitif,

35:30ya, capek lah jembul kita.

35:32Jadi apa,

35:34ada titik di mana

35:36QA manual

35:38terbatas, ya udah.

35:40Jadi QA kan cukup luas.

35:42Jadi developer

35:44yang di bidang QA ya biasanya

35:46kerjaannya adalah bikin test suit

35:48dan apa, merancang lah,

35:50mendesain test-testnya.

35:52Ada lagi pertanyaan dari Aman Saputra,

35:54urutan pembuatan testing di tahap apa?

35:56Apa setelah MVP atau

35:58setiap buat function atau fitur baru?

36:00Sebelum MVP. MVPnya

36:02harus ada test juga.

36:04Karena MVP itu adalah

36:06minimum viable product,

36:08bukan produk

36:10setengah jadi atau yang banyak box, ya.

36:12Jadi

36:14MVP itu ya harus berserta

36:16test juga. Kalau mau mengadopsi

36:18gaya test driven development

36:20atau behavior driven

36:22development, berarti testnya duluan, baru

36:24ngerjain code-nya atau

36:26selesaiin fungsinya atau komponennya.

36:28Ya, kembali lagi ditekankan

36:30terserah mau testing

36:32duluan atau testing belakangan, yang penting ada testnya.

36:34Itu aja. Mau MVP,

36:36mau prototype, mau apa,

36:38itu harus ada disertakan dengan

36:40testnya, gitu.

36:42Terus selain

36:46yang tadi kita, yang udah di

36:48artikel tadi kan, baru

36:50yang paling penting ya,

36:52paling basic dari unit testing,

36:54integration testing, nah cuma

36:56terus di web kan ada hal-hal

36:58lain, jadi bisa aja temen-temen

37:00bakal lihat kayak accessibility

37:02testing, itu biasanya pakai

37:04X ya, AXE,

37:06atau DQ ya.

37:08Ya, terus ada juga

37:10seperti visual

37:12testing, visual regression

37:14testing, itu biasanya pakai layanan

37:16chromatic, mereka yang bikin storybook.

37:18Itu banyak.

37:20Storybook dulu. Storybook dulu, ya.

37:22Terus dia diakuisisi

37:24atau gimana sih ceritanya?

37:26Di salah storybook, terus kemudian storybook bikin

37:28chromatic sebagai service-nya.

37:30Oh, gitu. Oh, dia cari duitnya

37:32dari chromatic ya. Storybooknya

37:34sendiri adalah apa? Open source

37:36and free. Ya, itu semua kan

37:38prinsipnya sama, sama kayak tadi.

37:40Jangan sampai ada yang tiba-tiba

37:42berubah, terus pastikan

37:44sesuai kriteria.

37:46Kayak misalnya kalau di accessibility

37:48ya, pastikan user

37:50yang apa? Tuna Netra misalnya

37:52menggunakan screen reader, ya harus bisa

37:54mengisi form-nya juga. Nah, itu

37:56apa? Kita punya assertion

37:58atau ekspektasi, atau harapan, atau

38:00tujuan seperti itu, ya

38:02itu secara otomatis memastikan kode

38:04kita, ya, mencapai

38:06tujuan itu. Terus kalau yang

38:08visual, itu mereka

38:10keren sih. Keren cuma apa?

38:12Berbayar. Jadi ada

38:14gratisannya, cuma terbatas. Jadi

38:16mereka beneran bikin screenshot.

38:18Kalau ada yang tiba-tiba geser,

38:20sekian persen, jadi mereka kayak

38:22mirip mendeteksi CLS gitu deh.

38:24Tapi bukan CLS waktu

38:26di-load ya. Cuma dari

38:28commit 1 ke commit selanjutnya,

38:30kalau ada perubahan dan

38:32kita nggak nge-mark, misalnya kita

38:34nggak meng-update snapshot-nya

38:36dan tampilannya berubah, itu

38:38kita bakal dapet notice.

38:40Kita bisa approve

38:42kalau itu memang intended.

38:44Oke.

38:46Apalagi, apalagi ya jenis

38:48testing-nya, lainnya.

38:50Bikin tentang storybook, ada yang

38:52pernah lihat storybook mungkin?

38:54Atau tombolan?

38:56Coba ya, yang mana nih?

38:58Saya bisa tunjukin ini apa storybook

39:00yang ada di WordPress nih. Oh, boleh-boleh-boleh.

39:02Oh, ada ya? Baru tahu

39:04di WordPress.

39:06Jadi untuk ininya ya, untuk

39:08apa namanya? Untuk

39:10Gutenberg-nya, block editor-nya.

39:12Reakt ya, kalau nggak salah ya?

39:14Iya, dia pakai react. Jadi ini

39:16kan, tahu ya, Gutenberg

39:18punya namanya

39:20apa?

39:22Editor, terus kemudian ini

39:24block editor besarnya, ya.

39:26Elemen-elemen kan ada banyak banget tuh.

39:28Bisa ini, bisa tambah image,

39:30bisa segala macam kan.

39:32Terus, lihat nih, komponennya

39:34segitim banyak nih, komponen semua.

39:36Bayangkan kalau misalnya satu-satu harus

39:38dicek dan CSS. Harus nyalain

39:40PHP ya. Bayangin kalau ngetes-nya

39:42nggak pakai storybook. Iya.

39:44Yoi, lihat ini, ada

39:46inserter komponen, ada

39:48line height control,

39:50ya kan, ada

39:52text transform control.

39:54Ada, terus komponen-komponennya

39:56banyak juga nih.

39:58Animate,

40:00virtualize segala macam kan, ada komponen-komponen.

40:02Dan...

40:04Bisa task state-nya juga ya?

40:06Iya. Terus

40:08bisa color palette misalnya.

40:10Color palette-nya kan juga

40:12komponen sendiri nih.

40:14Color picker.

40:16Itu.

40:18Dan ini,

40:20kalau kita nggak bikin

40:22komponennya di storybook

40:24itu bakal susah banget

40:26di maintain. Jadi yang

40:28dilakukan adalah

40:30komponennya pertama

40:32di develop dulu di storybook.

40:34Jadi, sorry, komponennya

40:38ada di, mungkin di folder

40:40komponen, semua sample, tapi

40:42dijalankannya di storybook. Jadi kita nge-develop-nya

40:44di storybook.

40:46Dan CSS dan admin, segala macam.

40:48Ya, jadi semuanya

40:50itu kita, jadi bukan

40:52kita nge-develop-nya bukan di block editor

40:54utamanya. Kita

40:56nge-develop semua komponen kecil-kecilnya

40:58itu di storybook.

41:00Jadi, namun CSS

41:02dan komponen utamanya tetap berada

41:04di

41:06folder-nya sendiri lah, bahasanya ya.

41:08Kita cuma mau manggil

41:10komponen dan stylingnya itu

41:12di storybook. Jadi, komponen dan

41:14stylingnya itu sudah ter-encapsulasi

41:16hanya untuk di sebuah

41:18komponennya. Jadi sangat,

41:20jadi nggak ada pengaruh

41:22pengaruh antar komponen yang bisa

41:24merusak styling bahasanya gitu ya.

41:26Jadi, semuanya

41:28kita, mereka develop

41:30di dalam sini semua sendiri

41:32sampai,

41:34banyak banget lah, sampai icon lah.

41:36Nah, jika

41:38jika terjadi

41:40dan ini mereka punya regression testing-nya

41:42ya, jadi sampai bahkan

41:44apa namanya, mereka

41:46pasang

41:48ini bahasanya

41:50apa, accessibility, accessibility

41:54test-nya juga ada nih. Jadi,

41:56sudah pas accessibility

41:58testing-nya juga sudah ada.

42:00Jadi, kalau, kan

42:02ini project open source ya.

42:04Semua orang sebenarnya

42:06bisa aja

42:08apa namanya?

42:10Bisa aja

42:12nge-

42:14eh, salah, button book.

42:16Bisa aja nge-develop

42:20full-request

42:22ke sini.

42:24Jadi, kalau misalnya mereka nggak punya

42:26storybook dan testing ini

42:28ya, susah kan?

42:30Dan sedangkan block editor-nya

42:32dipakai berapa juta website

42:34ada kali,

42:36puluhan, ratusan juta website

42:38ya kan?

42:40Nah, jadi accessibility juga harus pass.

42:42Dan ini jalan secara

42:44otomatis.

42:46Mulai dari accessibility

42:50terus kemudian, apa ini

42:52bahasanya, viewport

42:54responsive, responsive-nya juga

42:56juga ditest.

42:58Dan ini otomatis semua kan?

43:00Kalau nggak pas, ya nggak pas

43:02nanti.

43:04Seperti itu.

43:06Nah, storybook juga punya

43:08apa, punya

43:10beberapa tutorial testing buat

43:12mungkin ada teman-teman yang belum pernah

43:14testing sama sekali, terus

43:16bingung mulai dari mana.

43:18Bisa banget tuh tutorial-nya bagus sih.

43:20Walaupun

43:22nanti misalnya

43:24nggak pakai storybook, misalnya

43:26akhirnya karena nggak sempat atau nggak

43:28diperlukan untuk project

43:30teman-teman sendiri nggak pakai storybook, itu

43:32pelajarannya banyak yang

43:34tetap bisa

43:36dimanfaatin.

43:38Karena itu menutup semua area testing.

43:40Berlaku untuk,

43:42bukan hanya untuk storybook ya,

43:44tapi umum ya.

43:46Di situ sih ya, dia pasti integrate

43:48storybook juga, cuma

43:50pelajarannya, caranya flow-nya bisa dipakai

43:52buat project lainnya.

43:54Project yang lain.

43:56Wah, menarik ya.

43:58Oke.

44:00Nah, ini ada pertanyaan bagus nih.

44:02Dari

44:04Isal, kalau TDD itu

44:06test-nya duluan, yang dimaksud adalah

44:08scanner test-nya atau unit test-nya.

44:10Bebas, bisa

44:12macam-macam, tergantung. Kalo

44:14di perusahaannya butuhnya apa,

44:16requirement-nya unit test, ya

44:18TDD-nya unit test. Tapi kalau misalkan

44:20pengennya integration testing, ya

44:22TDD-nya ya integration testing.

44:24Ya, tergantung kebutuhan aja.

44:26Bener gak sih?

44:28Dan biasanya sih, kalo unit test,

44:30ya bikin kayak expect.

44:32Jadi kita bikin failing test dulu.

44:34Biasanya kalo liat dari tutorial orang yang

44:36emang advocate TDD.

44:38Iya, kita nulis,

44:40beneran nulis expect-nya apa,

44:42kita nulis kriterianya, tapi

44:44kan kita baru komponen kosong nih misalnya,

44:46atau baru komponen placeholder, atau fungsi

44:48placeholder yang masih belum return

44:50apa-apa. Jadi emang expectasinya

44:525 kali running, harus merah,

44:54terus kita tulis kodonya sambil

44:56save sampai hijau.

44:58Habis itu refaktor kalo butuh, ya.

45:02Ada 3 tahapan itu kan.

45:04Kemudian ada pertanyaan dari Yudi.

45:08Bagaimana cara menguji sistem

45:10yang memiliki fungsi kompleks

45:12dan interaksi dengan sistem lain yang tidak dapat

45:14diprediksi secara pasti?

45:16Salah satunya bisa pake

45:18MSW nih. Ini

45:20use case yang bagus buat namanya

45:22mock service worker ya. Kan ga salah lupa

45:24kepanjangannya apa.

45:26Jadi misalnya kita perlu manggil API

45:28atau bahkan misalnya e-commerce

45:30transaksi kartu kredit itu yang

45:32itu kan interaksi sama pihak

45:34keluar dan ga mungkin selalu

45:36setiap kita testing berkali-kali

45:38TDD tadi kita selalu nge-hit

45:40API production atau

45:42service external.

45:44Jadi kita bisa

45:46membuat biar

45:48request kita request ke

45:50URL atau endpoint tertentu

45:52itu ya pake data

45:54mock atau data bohongan.

45:56Cuma ya pastikan

45:58bahwa data bohongannya sesuai dengan data

46:00beneran. Iya. Jadi biasanya kalo saya

46:02pake mock server

46:04pake mock server

46:06ada NPM-nya

46:08pake mock server. Terus saya mock. Jadi kalo

46:10dari

46:12biasanya tanya ya kalo kayak

46:14sekelas visa atau payment

46:16gateway itu mereka udah punya

46:18scenario-nya dan dokumentasi

46:20lengkap tuh response-response error-nya

46:22juga sudah jelas banget ya.

46:24Dan biasanya kan ada kodenya kalo kita pengen dapet

46:26error misalnya decline itu

46:28nomernya 1,2,3,4,5,4

46:30blablabla. Jadi itu membantu

46:32banget buat mocking.

46:34Jadi kita sudah mocking semua tuh dari

46:36success sampe error-errornya semua.

46:38Bahkan yang lebih banyak itu error sebenarnya.

46:40Karena success sudah beberapa.

46:42Success kan ya udah. Success mah udah.

46:44Terus kan macem-macem. Errornya

46:46seratusan gitu ya jenisnya.

46:48Nah kita, aplikasi kita

46:50itu jangan sampe

46:52nge-hit mereka terus-menerus gitu.

46:54Tapi nge-hitnya ke mock service worker ya kita.

46:56Jadi kita set up semua response-nya

46:58yang kira-kira, bukan kira-kira lagi

47:00sesuai dokumentasi

47:02semua response dan error code-nya

47:04kita mock.

47:06Jadi kita nge-hit mock server kita dan

47:08memastikan aplikasi kita

47:10kalo response-nya

47:12A, yang ditampilkan apa?

47:15Response-nya B, yang ditentu apa?

47:17Dan harus ada. Kita manangin itu.

47:19Apa sih kursus kelas namanya?

47:21Payment.

47:23Untuk mock juga

47:25perlu kita

47:27apa ya, kita gunakan.

47:29Terutama kalo misalkan API-nya

47:31dibatasi dengan

47:33trade limit gitu.

47:35Jangan sampe misalkan kita hit ke API

47:37tertentu atau bahkan API yang berbayar

47:39kita setiap kali jalanin test

47:41di hit terus gitu.

47:43Kita selesakan paket ini di tiba-tiba

47:45tagihannya ribuan.

47:47Membengkalkan. Atau

47:49trade limit terus tiba-tiba dia jadi error

47:51malah aplikasinya seolah-olah seperti error

47:53kan. Jadi hal-hal

47:55seperti itu yang pemanggilan ke terparti

47:57API atau ke pokoknya

47:59yang berhubungan dengan

48:01diluar aplikasinya, konteks

48:03aplikasinya itu di

48:05apa ya, mock itu

48:07apa ya, dibikin tier 1-nya.

48:09Seolah-olah kita panggil ke

48:11udah palsu sih, apa ya.

48:13Tier 1, simulasi lah ya.

48:15Seolah-olah kita panggil ke API

48:17GitHub misalkan, tapi

48:19written-nya udah kita tulis aja di kode

48:21kita, jadi seolah-olah aja, pura-pura aja.

48:23Pura-pura.

48:25Pernah ada yang ikut itu nggak sih

48:27coba-coba kayak competitive programming?

48:29Belum.

48:31Kayak main-main aja, main-main

48:33di Hacker, Hacker what? Hacker rank.

48:35Apa? Lead code.

48:37Kalau Hacker rank, code words itu

48:39pernah sih beberapa kali.

48:41Kita dikasih

48:43dikasih

48:45challenge-nya apa,

48:47tapi kan mereka sudah punya test

48:49kesenarionya kan mereka sudah punya kan.

48:51Itu kan sebenarnya

48:53ti-di-di, mereka udah siapin kesenarionya,

48:55siapin challenge, kita nulis kodenya

48:57untuk supaya, kita nulis sampai seperti itu.

48:59Sampai bisa

49:01pas semua

49:03senarionya.

49:07Oke, ngomongin tentang

49:09ini, end-to-end,

49:11ini ada yang minta rekomendasi

49:13tools dari Rico.

49:15Tools JS untuk end-to-end

49:17testing. Tadi udah kita sempat bahas sedikit ya

49:19tentang Cypress.

49:21Ada playwright juga.

49:23Ada playwright dari Microsoft, itu juga

49:25lagi hot ya, lagi panas,

49:27lagi seru.

49:29Ini

49:31cara pakenya tuh

49:33mudah banget.

49:35Ini seru sih, lucu.

49:37Dan kalau kita lihat,

49:39ini tuh malah

49:41mirip sama jQuery.

49:43Kalau dilihat sekilas ya, kayak kita

49:45menarget elemen tertentu, ya

49:47klik aja ini, terus dia bisa

49:49ising juga, dia bisa nunggu setelah klik,

49:51nunggu, terus expect.

49:53Jadi selekturnya itu mirip jQuery banget ya.

49:55Selekturnya bisa

49:57export juga kan?

49:59Bisa, bisa.

50:01Dan ini tutorial-nya bagus, kalau

50:03pernah pake sama sekali,

50:05itu ada tutorial gratis yang

50:07enak buat diikutin.

50:09Playwright sebenarnya lebih

50:11menarik ya.

50:13Lebih simpel lagi.

50:15Ok, kita coba ya.

50:17Apa namanya?

50:19Playwright.

50:21Ini.

50:23Test gitu ya.

50:25Ini, playwright.tab.

50:29Ya.

50:31Mana contohnya?

50:33Docs.

50:35Jalannya di Puppeteer kan nih?

50:37Iya, di atas Puppeteer.

50:39Puppeteer itu apa? Cuma itu semua engine bisa

50:41baik Cypress,

50:43maupun playwright, itu udah support

50:45macem-macem browser engine.

50:47Jadi aman.

50:49Nah, ini contohnya ya.

50:51Bukan cuma Puppeteer kan,

50:53Headless Chromium ya? Ini test ya.

50:55Jadi test, should what?

50:57Should see, should create,

50:59should what?

51:01Jadi ini adalah istilahnya apa?

51:03Scenario ya.

51:05Jadi kita mau tes apakah

51:07ini kita mau bikin

51:09bug report, ceritanya. Mau submit bug report.

51:11Kita bikin new issue dulu

51:13dengan request.post ke repo

51:15dengan user dana repo.

51:17Ke API GitHub gitu ya,

51:19ceritanya ya. Di sini udah ada usernya.

51:21Udah ada repo-nya.

51:23Kemudian kita kirimin datanya, title dan body.

51:25Dan ketika

51:27kita jalankan,

51:29ketika dia selesai posting,

51:31maka kita berharap atau expect

51:33bahwa isunya

51:35mereturn status oke

51:37sama dengan true.

51:39Gitu.

51:41Ini playwright.

51:43Kok kayak nulis unit test ya?

51:45Sedar sana ya.

51:47Sedar sana ya.

51:49Terus kita,

51:51ini kan udah return dari

51:53new issue yang di-postkan.

51:55Terus kita cek juga

51:57bahwa issue ini beneran ada.

51:59Sudah di-submit. Sudah ada di list of issue.

52:01Kita request get

52:03ke repo/issues.

52:05Kemudian kita cek

52:07hasilnya oke atau enggak.

52:09Kemudian kita cek apakah bug report

52:11yang satu, yang sama ini.

52:13Judulnya betul.

52:15Judulnya matching, body-nya juga matching.

52:17Keren ya.

52:21Playwright.

52:23Bagus-bagus.

52:25Semakin memudahkan ya.

52:27Kalau jaman dulu

52:29susahnya setengah mati untuk testingnya.

52:31Dulu kayak gimana sih? Coba cerita dikit.

52:33Selenium dulu.

52:35Taksik kayak gimana?

52:37Dulu itu

52:39salah satu yang

52:41pionernya, pionernya

52:45testing di front-end ya,

52:47bukan back-end ya, testing di front-end

52:49itu adalah angular.

52:51Dia pakai jasmine.

52:53Yang diadaptasi

52:55oleh Jess.

52:57Jess itu ditulis diatas jasmine.

52:59Jaman dulu masih pakai Pantom Jess

53:01kan ya? Iya.

53:03Pantom Jess.

53:05Saya kenal tuh orangnya yang bikin.

53:07Pantom ya, Pantom.

53:11Terus abis itu baru masuk

53:19ke selenium kan untuk yang end-to-end

53:21untuk integrationnya

53:23masih di jasmine.

53:25Dan jasmine itu yang

53:27serunya adalah, mungkin sampai

53:29sekarang juga, mungkin masih beberapa, masih ada

53:31yang pakai, dia bisa jalan di

53:33browser, nggak perlu pakai note.

53:35Karena dulu belum

53:37si angular pun dia nggak pakai

53:39note kan, dia pakai CDN-CDN aja bisa

53:41gitu kan. Jadi nggak perlu ada

53:43install note di lokal,

53:45tinggal tambahin CDN, jasmine nanti tambahin

53:47juga udah bisa bikin test suite

53:49di sana. Terus jalaninnya pakai lokal

53:51skian-skian/test misalkan, abis itu

53:53nanti dia akan ngetest

53:55aplikasi kita. Itu mulai

53:57awalnya dari sana.

53:59Itu sebelumnya tuh

54:01testing di

54:03front-end tuh, ya paling apa

54:05jQuery.test itu.

54:07Apa namanya? Lupa.

54:09Itu lah ada. Tapi itu lebih ke unit test

54:11ya.

54:13Untuk testing library-library-nya.

54:15Lebih dulu lagi

54:17itu langsung jalaninnya di browser.

54:19Jadi yang saya lupa

54:21pakai Selenium. - Kalau nggak jalan, berarti salah.

54:23- Bukan, Selenium gitu. Jadi bisa kayak

54:25web browser, kita

54:27record misalnya.

54:29Kita record dulu, kita

54:31record, klik-klik-klik, klik-klik-klik,

54:33jadi kayak end-to-end gitu. Kita klik

54:35dari awal sampai habis, kita masukin

54:37name and passwordnya, jadi

54:39di-play. - Oh, di-record ya?

54:41Kayak ini ya? Kayak

54:43patir record gitu ya?

54:45- Kalau saya lupa namanya,

54:47kalau yang terbaru, saya liat namanya

54:49Ghost Inspector yang mirip.

54:51Ghost Inspector di

54:53Firefox. Tapi mirip.

54:55Jaman dulu saya lupa namanya apa.

54:57Jadi

54:59kita nge-record

55:01kliknya kita, misalnya

55:03mau login, kita masukin password,

55:05segala macam. - Nanti dibikin script sama dia.

55:07- Nanti tinggal di-play. Kalau ada yang gagal,

55:09kalau ada yang gagal,

55:11dia akan bilang gagal.

55:13Dan itu, senarionya udah banyak.

55:15Tapi nggak pakai

55:17kayak web recorder itu dulu

55:19bukan untuk ini sih,

55:21bukan untuk ngetest, tapi

55:23untuk mencurangin sebuah sistem lah

55:25misalnya. Kayak

55:27nge-click ads misalnya.

55:29- Dulu belum ketahuan ya?

55:33- Belum. Kan pakai VPN.

55:35Dia pindah-pindah.

55:37- Diajak IP-nya.

55:39Malah ngajarin kriminal.

55:41- Untung nggak ada Mas Danang nonton, kan?

55:47- Eh, siapa bilang?

55:49Sekarang dia muncul.

55:51Ya, jadi sebenarnya

55:55sekarang tuh udah enak banget

55:57testing-nya. - Apalagi kalau kita

55:59pakai, gimana-gimana?

56:01Laluan aja. - Iya.

56:03Kemarin pengalaman udah lama

56:05nggak cobain spell kit, cobain

56:07lagi kan yang versi baru.

56:09Cobain di project baru, itu udah

56:11ada NPM test

56:13titik 2 unit untuk unit test.

56:15Yang Cypress-nya juga udah disetupin.

56:17Play rate-nya juga ada.

56:19Jadi udah tinggal jalanin aja.

56:21- Nah itu, kita pakai meta,

56:23kalau kita pakai meta framework, kayaknya

56:25sebagian besar meta framework modern

56:27udah include. Kayak swell kit kan

56:29kalau kita pakai official starter tuh

56:31yang pakai apa? NPM

56:33create swell itu dedikasi

56:35opsi, cuma emang opinionated.

56:37Karena dia pakai fit,

56:39unit testing-nya

56:41pakai fit test.

56:43Terus kalau apa, end-to-end-nya

56:45pakai play rate.

56:47Iya, kalau kita mau pakai yang lainnya, bebas.

56:49Cuma kalau dengan

56:51bawaan official starter kan kita

56:53beneran nggak usah repot-repot

56:55konfigurasi apapun ya, langsung jalan.

56:57Di Next.js juga sama.

56:59Ada contoh-contohnya malah itu

57:01bisa pilih mau pakai Cypress,

57:03mau pakai play rate.

57:05- Iya, terutama

57:07waktu instalasi play rate ya,

57:09saya baru pertama kali pakai kan, begitu

57:11dijalankan dia error, karena

57:13play rate-nya belum keinstall.

57:15Tapi install play rate-nya pun sederhana sekali.

57:17Gak kayak dulu kalau misalkan,

57:19"Woh, kita harus pakai, harus install

57:21Chrome driver-nya dulu, masukin ke folder ini."

57:23Gitu kan. Sekarang udah diinstallin

57:25kayak NPM-nya. - Untung nggak ngalamin.

57:27- Enak banget.

57:31- Nggak tahu kalau framework lain ada nggak ya

57:33kayak Nux segala macem, ada yang otomatis

57:35nggak testing-nya?

57:37- Testing-nya.

57:39Kita coba lihat. Ini contohnya

57:43mana nih? Manual setup.

57:45Nah, ini udah ada dia biasanya, Cypress.

57:47Cypress juga ada

57:49UI-nya ya, jadi kalau Cypress open,

57:51dia ada GUI.

57:53- Iya, dia otomatis buka di

57:55localhost.5432 atau

57:57semacamnya lah, punya protocol

57:59sendiri. - Nah, ini Cypress

58:01seperti ini nih. Ini integration testing ya

58:03contohnya ya.

58:05Jadi kita visit ke localhost, ini udah

58:07mirip seperti yang kita lakukan

58:09tapi secara otomatis.

58:11- Ini end-to-end. - Terus like elemennya

58:13kayak jQuery kan?

58:15- Ini end-to-end, sorry. Ini end-to-end, bukan

58:17integration.

58:19Ini end-to-end. Jadi... - Ini simpelnya ya.

58:21Ini end-to-end. - Iya.

58:23- So navigate into the about page gitu.

58:25- Ya, terus ke apa?

58:27- Dari about page ini,

58:29di-check apakah ada link

58:31yang isinya adalah about.

58:33Abis itu bisa di-click.

58:35Ya, bisa di-click.

58:37Terus abis itu, setelah di-click, apa yang kita

58:39harapkan? - Setelah di-click, artinya harus berubah.

58:41Harus berubah jadi /about.

58:43- Berisi about.

58:45- Dan ada h1 dengan

58:47isinya adalah about page ini. - Isinya harus about page.

58:49- Betul.

58:51- Biasanya lebih enak kayak senior-nya bikin

58:53test krenalialnya, junior-nya

58:55bikin kodenya semua.

58:57- Eh, tapi dulu ada tuh

58:59tools yang

59:01kita bikin skenario-nya bahasa

59:03Inggris, terus dia bisa convert jadi

59:05seperti ini. Jadi test skenario.

59:07Namanya apa ya?

59:09- Ada tuh... - Cucumber.

59:11- Cucumber. - Cucumber ya.

59:13- Cucumber itu apa ya? - Cucumber GS.

59:15- Cucumber GS.

59:17Ada nih Cucumber.io.

59:19- Di

59:21Ruby, kalau nggak

59:23salah. - Cuma dia

59:25bahasanya apa? Language.

59:27- Language-nya bahasa Inggris. - Bahasa Inggris ya.

59:29Bahasa Inggris. - Bisa bahasa Inggris ya?

59:31- Bahasa Indonesia. - Bahasa Indonesia.

59:33- Wah keren. - Nggak tahu.

59:35Bisa bahasa Inggris tahu saya. - Bahasa Inggris lah.

59:37- Iya bahasa Inggris tuh. Namanya

59:39Gherkin Syntax. - Gherkin, iya iya.

59:41Jadi dia ini khusus untuk kayak BDD.

59:45Jadi yang bikin

59:47Syntax Gherkin-nya ini bukan orang

59:49developer, tetapi bagian test.

59:51- Produk manager ya?

59:53- Produk owner lah. - Ini nanti bisa di-confort.

59:55- Saya ingat di depan mereka bikin sekali.

59:59- Coba bayangkan kita

1:00:01bikin ini

1:00:03pakai chat GB.

1:00:05- Pakai chat GB.

1:00:07- Enak banget.

1:00:09Ada yang bikinin test buat kita ya.

1:00:11Cucumber.io.

1:00:13Ya ini bener kan.

1:00:15Jadi skenario-skenario-nya

1:00:17saya pengen

1:00:19apa. - Wah kita kena

1:00:21kita kena spam nih.

1:00:23- Oh di spam. Pertama

1:00:25kaya prestasi nih rekor.

1:00:27Pertama kali kena spam buat.

1:00:29- Tapi spamnya. - Ayo.

1:00:31Jangan di-click ya teman-teman.

1:00:33Insinya bukan Beautiful Girls

1:00:35kok. Nanti malah di...

1:00:37- Wah berarti ini kita rame

1:00:41ya. Sampai ada spam segala ya.

1:00:43- Oh iya. - Kena spam

1:00:45buat. - Oke. Dari skenario ini

1:00:47di...

1:00:49seolah-olah ya. Ini, ini gak, gak

1:00:51ini ya. Jadi seolah-olah dia akan

1:00:53apa, dijadikan,

1:00:55dikompilasi menjadi ini.

1:00:57Atau ini yang eat ini.

1:00:59Terus kemudian when ini adalah

1:01:01ketika kondisi

1:01:03tertentu. Ya misalkan ini.

1:01:05Ketika ada tombol

1:01:07atau ada link, maka di-click.

1:01:09Kemudian then

1:01:11dan itu adalah harapannya.

1:01:13Maka dia akan menjadi ini.

1:01:15Ini adalah URL tentang...

1:01:17- Wih ada dua.

1:01:19Block lah. Block, block, block.

1:01:21Block juga. - Bisa. Saya gak tahu.

1:01:23- Bisa lah.

1:01:25- Oh bisa langsung dari

1:01:27ini ya. - Dari Streamyard.

1:01:29Ternyata bisa.

1:01:31- Ini baru, baru pernah.

1:01:33Harap ngaku. - Iya.

1:01:35Oke.

1:01:37- Beda, beda access.

1:01:39- Ini ada yang, ada yang Javascriptnya gak sih?

1:01:43- Ternyata beneran, ada Javascriptnya

1:01:45dan ini ada, ternyata beneran

1:01:47ada localization. Jadi

1:01:49emang bisa menulis pakai

1:01:51bahasa Indonesia dan bahasa lainnya.

1:01:53- Nice, localization.

1:01:55- BDD tuh, BDD.

1:01:57Eh ada Mas Dan. - Bener kan ada Mas Dan kan?

1:01:59- Ayo lho.

1:02:01- Jangan gagal lho.

1:02:03- Ivan tadi Mas Ivan.

1:02:05- Langsung diem.

1:02:11- Langsung diem.

1:02:13- Gomit.

1:02:15- Mana contoh yang JS ya? Pengen tahu.

1:02:17Gampar yang JS.

1:02:1910 minit tutorial.

1:02:21Kelamaan.

1:02:23- Ada tadi JS di halaman

1:02:25depannya landing page-nya. - Oh halaman depannya.

1:02:27- Oh di installation.

1:02:29- Oh installation.

1:02:31Oke.

1:02:33- Di paling atas. - Wih.

1:02:35Baru gabung. Oh gak apa-apa gak denger dia.

1:02:37Aman, aman.

1:02:39Langsung penasaran Mas Dan

1:02:41yang tadi paling ngomong apa.

1:02:43- Langsung diem.

1:02:45Langsung dicek.

1:02:47- Tuh ada Java,

1:02:49JavaScript, Ruby,

1:02:51dan 99.

1:02:53- Oh iya. Ini JS nih.

1:02:55Cucumber. Terus gimana cara ininya?

1:02:57Oh ini baru install ya?

1:02:59Guides berarti ya. Bener ya.

1:03:01Guides-nya yang

1:03:03JavaScript gak ada ya?

1:03:05Ini apa?

1:03:09- Oh.

1:03:11Oh iya.

1:03:13Wah harus kita ini lagi ya.

1:03:15- Ini bisa

1:03:17dimasukin si ICD juga ya?

1:03:19Oh iya itu poin

1:03:21bagus tuh. Apapun itu,

1:03:23gak harus pakai Cucumber.

1:03:25Sebisa mungkin testing kita ya

1:03:27digabungkan dengan

1:03:29workflow kita. Kalau yang paling

1:03:31simpel nih, pakai Git Hux

1:03:33dulu. Git Hux tuh misalnya yang terkenal

1:03:35Husky ya. Jadi apa?

1:03:37Entah kita

1:03:39ngubah codingan kita yang sebelumnya

1:03:41kan pertama bikin biasanya masih rapih

1:03:43banget tuh. Rapih ada testingnya.

1:03:45Nah besok-besoknya udah buru-buru ya udah

1:03:47sembarang

1:03:49diubah tanpa

1:03:51kita ngurusin testingnya atau mungkin

1:03:53teman kerja kita yang ngubah. Nah

1:03:55dengan Git Hux kita bisa ngatur

1:03:57tiap commit atau

1:03:59tiap mau push harus

1:04:01running semua dari

1:04:03static analysis juga bisa

1:04:05format, pastiin semua konsisten

1:04:07juga bisa ngejalanin

1:04:09testing, biasanya unit atau

1:04:11integration test. Jadi kalau itu fail

1:04:13ya kita harus

1:04:15handle itu dulu. Buat mencegah

1:04:17yang tadi tuh bug pertama dibenerin

1:04:19muncul bug kedua, bug kedua

1:04:21dibenerin, bug pertama balik

1:04:23nah itu bisa dicegah dengan pertama

1:04:25Git Hux. Terus kedua bisa juga

1:04:27si ICD kayak misalnya kalau

1:04:29pakai GitHub Actions atau

1:04:31Travis atau dan lain-lain.

1:04:33Cypress kalau nggak salah punya

1:04:35layanan, punya layanan

1:04:37berbayar juga ya cloud kayaknya.

1:04:39- Oh untuk itu ya

1:04:41untuk CIN-nya ya?

1:04:43- Jadi untuk dihook ke proses

1:04:45workflow CICD kita.

1:04:47Jadi intinya jangan sampai kita nge-deploy

1:04:49yang belum lulus. Pertama

1:04:51jangan sampai kita meng-commit kode

1:04:53yang belum di-testing.

1:04:55Kedua jangan sampai

1:04:57nge-deploy kode yang belum di-testing

1:04:59yang bisa, yang bisa rusak

1:05:01bisa lembak.

1:05:03- Ini juga buat apa?

1:05:05Gimana gimana?

1:05:07- Cuma mau bilang hati-hati

1:05:09kalau GitHub Action itu

1:05:11yang freenya cuma ada limitnya.

1:05:13- Iya.

1:05:15- Karena kalau kebanyakan

1:05:17ngetes itu

1:05:19naik loh GitHub Action

1:05:21hours-nya. Hati-hati.

1:05:23Jadi perlu diperhatikan juga soal billing.

1:05:25- Iya.

1:05:27Ini juga berlaku

1:05:29buat kasusnya Ivan tadi ya

1:05:31untuk ngetes

1:05:33PHP versi skian, PHP versi skian

1:05:35itu bisa DCI juga kan?

1:05:37- Iya. Sekarang sudah

1:05:39plugin itu udah di-handle sama tim lain

1:05:41dan itu sudah dibikin. Udah pakai

1:05:43parallel testing malah

1:05:45supaya udah

1:05:47dibikin permutasi tuh PHP

1:05:49yang sekarang supportnya

1:05:5174 dan 8 doang

1:05:53dan WordPress versionnya

1:05:554 terakhir. Jadi

1:05:57sudah dibikin permutasinya langsung.

1:05:59Begitu PR-nya naik

1:06:01dan dilabelin apa

1:06:03dilabelin misalnya review

1:06:05baru dia jalan.

1:06:07Dan sekali jalan, langsung sekali

1:06:0910 instance itu sekali jalan

1:06:11otomatis ngetes.

1:06:13Jadi kalau nggak pas

1:06:15tesnya, nggak direview kodenya.

1:06:17- Nggak direview.

1:06:19Ini saya pespa tadi ya?

1:06:21- Iya. - Jadi itu bagus

1:06:23buat produktivitas juga kali ya.

1:06:25Jadi, kalau pun ada orang yang

1:06:27developer yang not QA

1:06:29atau ngereview manual

1:06:31atau senior engineer yang ngereview manual

1:06:33kan yang nggak buang-buang waktu juga bolak-balik ngereview

1:06:35kode yang masih ada

1:06:37obvious error-nya.

1:06:39- Yes, betul.

1:06:41Ini tadi saya

1:06:43press cloud-nya.

1:06:45- Ada free plan-nya ya?

1:06:47Ada

1:06:49gratisan, cuma terbatas 500

1:06:51tes sebulan.

1:06:53Ada storybook sama chromatic.

1:06:55Chromatic itu juga bisa visual

1:06:57regression setting-nya.

1:06:59Dan snapshot test-nya juga bisa dilakukan.

1:07:01Enaknya pakai chromatic, dia bisa

1:07:03collaboration.

1:07:05Jadi, kalau misalnya ada...

1:07:07Jadi kalau misalnya kita punya

1:07:11komponen,

1:07:13misalnya CSS-nya berubah, terus kita kayak

1:07:15dia kayak kegeser

1:07:171 pixel jadinya.

1:07:19Karena padding-nya masalah.

1:07:21Jadi,

1:07:23harus ada yang nge-approve.

1:07:25- Betul nggak? Gak apa-apa nih.

1:07:27Gak apa-apa nih kegeser 1 pixel.

1:07:29Harus ada yang bertanggung jawab.

1:07:31- Atau memang sengaja.

1:07:33Mungkin perubahan font, perubahan

1:07:35perubahan size.

1:07:37Memang perubahan yang disengaja.

1:07:39Harus ada yang approve.

1:07:41- Kalau perubahan, apa, geser 1 pixel

1:07:43di snapshot

1:07:45nggak bisa

1:07:47ketangkap ya?

1:07:49Di mana?

1:07:51Perubahan di mana?

1:07:53- Yang perubahan 1 pixel itu.

1:07:55- Kalau di snapshot, kelihatan.

1:07:57- Maksudnya, apa, pakai

1:07:59jes snapshot?

1:08:01- Jes nggak bisa kelihatan kalau perubahan.

1:08:03- Ya, ada yang ngebaca domlo doang.

1:08:05- Kalau jes nggak ada...

1:08:07Jes itu ngebaca markup.

1:08:09- Oke, oke, oke.

1:08:11Oke, tadi...

1:08:13- Tapi jes bisa

1:08:15nge-snapshot juga kalau mau ditambah.

1:08:17- Oh, bisa.

1:08:19- Jes bisa nge-snapshot.

1:08:21Bukan nge-snapshot dom ya,

1:08:23dia nge-snapshot beneran.

1:08:25- Bisa, bisa, bisa.

1:08:27- Bisa di-save ke gambarnya.

1:08:29- Jalanin Papetir atau gimana?

1:08:31- Jalanin Papetir.

1:08:33- Ya.

1:08:35Oke, tadi sempat kita bahas

1:08:37tentang meta framework.

1:08:39Next bisa menggunakan baik

1:08:41sidepress ataupun playwrite

1:08:43ataupun feed kalau untuk

1:08:45unit testing ya.

1:08:47Kemudian bisa

1:08:49pakai jes juga tentunya.

1:08:51Terus ada lagi Astro.

1:08:53Astro juga sama.

1:08:55- Cuma dia belum

1:08:57ada, belum bawaan.

1:08:59Jadi nggak bisa langsung, cuma ada

1:09:01guide-nya ya minimal.

1:09:03- Sudah ada guide-nya, betul.

1:09:05Kalau SvelteKit,

1:09:07terakhir saya cek, belum ada

1:09:09di dokumentasinya.

1:09:11- Cuma malah ada di official starter-nya ya.

1:09:13- Iya, walaupun di

1:09:15project yang kita create, itu ada.

1:09:17Tapi mungkin belum, ini kan SvelteKit kan

1:09:19belum, masih projectnya

1:09:21bisa dibilang, masih beta ya.

1:09:23Belum beta satu. - Beta terus, dari kapan tahu?

1:09:25- Iya. Jadi mungkin

1:09:27belum lengkap lah, gitu. Cuman

1:09:29pas coba jalanin

1:09:31projectnya, itu udah ada NPM test dan lain-lain,

1:09:33udah lengkap semua. Cuma

1:09:35belum ada guide-nya aja. - Belum, dokumentasinya

1:09:37belum lengkap. Tapi udah bisa

1:09:39berjalan.

1:09:41- Nanya agak OOT, boleh lah.

1:09:43Satu, dua pertanyaan OOT, boleh ya?

1:09:45Kita jawab nanti ya.

1:09:47- Apa, yang menang Piala Dunia?

1:09:49- Yang menang Piala Dunia.

1:09:51- Masa nanya OOT,

1:09:53nggak boleh?

1:09:55- OOT.

1:09:57OOT.

1:09:59Bisa buat topic itu, OOT.

1:10:01- Bisa buat topic. Oh iya, tapi ada yang

1:10:03suggest topic juga nih.

1:10:05Ada yang suggest topic nih, mana tadi?

1:10:07- Micro-service.

1:10:09- Oh, micro-service.

1:10:11Kalau di front-end namanya

1:10:13micro-front-end.

1:10:15- Micro-front-end.

1:10:17- Eh itu tuh banyak yang tanya ya.

1:10:19Aku pas di Devast Bali kemarin juga

1:10:21ada yang tanya itu. Cuma karena waktu

1:10:23Mepet ya nggak bahas detail juga.

1:10:25- Oke. - Jadi kayaknya

1:10:27emang interest di micro-front-end

1:10:29makin naik ya.

1:10:31- Kenapa tuh?

1:10:33- Micro-front-end tuh apaan sih?

1:10:35- Front-end tapi kecil-kecil.

1:10:37Packagenya.

1:10:39Itu perspektifnya macem-macem sih.

1:10:41- Komponen dong.

1:10:43Komponen.

1:10:45- Ada yang kasus ekstrim, satu repo,

1:10:47satu komponen.

1:10:49Itu kasus yang paling ekstrim.

1:10:51Nah, terus

1:10:53alternatifnya lainnya, ada gini nih,

1:10:55biasanya e-commerce besar,

1:10:57itu, jadi satu tim misalnya

1:10:59section buat checkout,

1:11:01product checkout, card and checkout,

1:11:03itu satu repo sendiri,

1:11:05satu repo front-end sendiri,

1:11:07terus kayak product display,

1:11:09buat browsing product ya,

1:11:11buat browsing product, satu repo sendiri,

1:11:13terus buat kayak dashboard,

1:11:15misalnya user bisa login,

1:11:17bisa lihat history,

1:11:19itu satu repo sendiri,

1:11:21satu project sendiri.

1:11:23Itu kalau yang banyak artikel,

1:11:25terus sih Zalando, jadi mereka itu

1:11:27kelihatannya e-commerce besar

1:11:29di Eropa.

1:11:31Terus yang konon pakai micro-front-end

1:11:33juga itu Spotify, Ikea,

1:11:35cuma kalau itu sih nggak

1:11:37terlalu di-open ke public,

1:11:39apa perspektifnya,

1:11:41apa arsitekturnya kayak gimana.

1:11:43- Repo lah yang muka kayaknya.

1:11:45- Saya dulu pakai ini malah, satu repo,

1:11:47tapi multiple package.

1:11:49Jadi di-handle semua

1:11:51pakai Lerna.

1:11:53- Oh Lerna.

1:11:55Itu mono repo kan? Bukan?

1:11:57- Iya mono repo, tapi

1:12:01kita pakainya Atomic Design.

1:12:03Jadi setiap

1:12:05atom, setiap komponen,

1:12:07jadi ada dari atom,

1:12:09organism, atom,

1:12:11molekul, organism, segala macam itu

1:12:13jadi

1:12:15jadi satu

1:12:17package sendiri, DNPM package.

1:12:19Jadi saat mau di-import,

1:12:21tinggal import

1:12:23molekul-molekulnya aja.

1:12:25- Oh iya, kalau yang Zalando itu lupa sih

1:12:27repo-nya terpisah atau nggak,

1:12:29mungkin mono repo ya, cuma maksudnya

1:12:31tadi satu project, satu package.

1:12:33Nah ini yang

1:12:35OOT tanya apa, nggak tanya-tanya.

1:12:37- Iya, silahkan

1:12:39ditanyakan. Nah ini salah satu contoh

1:12:41micro front-end dari Paypal. Paypal

1:12:43juga micro front-end ya,

1:12:45jadi ada timnya karena

1:12:47udah banyak,

1:12:49jadi misalkan dia, ada contohnya nggak sini ya?

1:12:51- Nah itu front-endnya cuma satu?

1:12:53- Ini masing-masing

1:12:55yang warna biru, kuning,

1:12:57merah, sama abu-abu ini

1:12:59itu adalah aplikasi masing-masing.

1:13:01- Satu tim, satu project.

1:13:03- Iya, bahkan menu pun satu project

1:13:05sendiri bisa aja

1:13:07framework-nya beda-beda.

1:13:09Misalkan ini pakai view, ini pakai

1:13:11spelt misalkan ya.

1:13:13Atau apa, itu tergantung sama

1:13:15timnya.

1:13:17- Terus gabunginnya, yang ngegabungin

1:13:19semuanya satu project sendiri? - Ada, ada satu lagi.

1:13:21Dan yang menariknya adalah

1:13:23yang menulis

1:13:25artikel ini adalah mas Bimo, orang Indonesia

1:13:27yang bekerja di Paypal.

1:13:29- Nice.

1:13:31Kapan bisa diculik kesini?

1:13:33- Jauh ini. - Nggak, nggak, nggak.

1:13:35Terlalu jauh itu.

1:13:37Kemarin waktu di Makassar ada

1:13:39GDE baru kita namanya

1:13:41Dana, dia juga bahas tentang micro front-end

1:13:43dimana deploy ke Firebase

1:13:45hosting. - Wah seru itu.

1:13:47- Dia di Bukalapak dan Bukalapak juga

1:13:49menggunakan micro front-end.

1:13:51- Oh, biasanya berarti banyak di e-commerce ya

1:13:53keliatannya. - Iya.

1:13:55- Karena skop mereka besar.

1:13:57Iya, seru nih.

1:13:59- Bisa, bisa, bisa.

1:14:01Terima kasih ya.

1:14:03Masukkan untuk topiknya ya.

1:14:05Terima kasih. Kita masih nunggu

1:14:07pertanyaan OOT ini

1:14:09dari Mas Drian.

1:14:11Ayo ditunggu. Kita udah satu jam 14 menit.

1:14:13Kita tunggu 1-2 menit.

1:14:15Kalau nggak ada, ya berarti kita

1:14:17sudah dulu saja ya kali ya.

1:14:19Ini ada testimoni ini ya.

1:14:21Tistemoni, luar biasa ya.

1:14:23- Mantap.

1:14:25Swelt itu emang nagih sih.

1:14:27- Alhamdulillah, udah bisa bikin

1:14:29beberapa project, baik itu pakai spell

1:14:31atau spel kita. Iya.

1:14:33Seru, seru, seru.

1:14:35- Sekali pakai Swelt, pas balik ke

1:14:39React lagi sedih set-state

1:14:41sama use effectnya.

1:14:43- Loh, Eka kan sehari-hari

1:14:45React nggak? Atau apa?

1:14:47- Ada React, ada Swelt.

1:14:49- Ada Swelt juga? Oh, oke.

1:14:51Jadi, merasakan ya?

1:14:55- Kita bahas lah itu.

1:14:57Why the world doesn't need,

1:14:59why the world may not need React.

1:15:01- Virtual Dumbo.

1:15:03Tiamuk masa.

1:15:05- Tiamuk masa.

1:15:07Masanya lagi banyak.

1:15:09- Isu Sarah, Swelt, Anggular, React.

1:15:13- Kan ego-ego itu.

1:15:17- Siapa yang dari React itu?

1:15:19Yang bikin Redux?

1:15:21- Yang bikin Redux.

1:15:23Dan Abramov.

1:15:25- Kan dia bilang you may not need Redux.

1:15:27- Iya, padahal dia yang bikin ya.

1:15:29Dia bikin sampai

1:15:31di-hire. Dia soalnya bikin

1:15:33sampai di-hire Facebook, abis itu udah dia nggak perlu

1:15:35Redux lagi, udah.

1:15:37Videoannya itu dia.

1:15:39Buat di-hire aja.

1:15:41Pertanyaan tidak kunjung datang,

1:15:45kalau begitu, mungkin...

1:15:47- Oh, kalau mau tanya, bisa ke Slido, ya?

1:15:49- Oh, iya betul.

1:15:51- Bit.ly/ngobrolinweb.

1:15:55Silahkan, mau oot gimana juga nanyain, boleh?

1:15:57Kecuali nanyain nomor handphone, ya?

1:15:59Jangan, ya?

1:16:01- Boleh nanya, tapi nggak dijawab.

1:16:03- Nggak dijawab?

1:16:05- Oh, iya, iya.

1:16:07Baiklah.

1:16:09Kalau begitu,

1:16:11untuk malam ini, kita

1:16:13kemudahan dulu.

1:16:15Terima kasih buat teman-teman semuanya yang sudah hadir,

1:16:17yang sudah

1:16:19menemani.

1:16:21Diskusinya cukup seru. Malam hari ini cukup rame.

1:16:23Sampai ada spam segala, ya.

1:16:25Jadi, pencapaian baru.

1:16:27Terima kasih, kita ketemu lagi.

1:16:31Insya Allah ketemu lagi minggu depan.

1:16:33Saya Riza,

1:16:37Pamit, Eka, dan Ivan

1:16:39juga Pamit. Selamat malam, selamat istirahat.

1:16:41Selamat malam! Bye!

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

Serba Serbi Pengujian: Vitest, Jest, dkk - Ngobrolin WEB
EP 150

18 Nov 2025

Serba Serbi Pengujian: Vitest, Jest, dkk - Ngobrolin WEB

🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini membahas serba-serbi pengujian atau testing, spesifiknya akan memb...

Ngobrolin CORS - Ngobrolin WEB
EP 64

9 Jan 2024

Ngobrolin CORS - Ngobrolin WEB

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...

Bedah Situs - Ngobrolin WEB
EP 124

8 Apr 2025

Bedah Situs - Ngobrolin WEB

Kali ini, kita akan membedah situs baru, terutama seputar performa web. Mulai dari Core Web Vitals (LCP, CLS, INP) hingg...

Komentar